@syncfusion/ej2-dropdowns 20.4.53 → 20.4.54-54740
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 +2085 -2075
- package/{README.md → ReadMe.md} +119 -119
- 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 +65 -53
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +183 -171
- 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 +78 -78
- package/src/auto-complete/auto-complete-model.d.ts +187 -187
- 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 +221 -221
- package/src/combo-box/combo-box.d.ts +27 -27
- package/src/combo-box/combo-box.js +29 -29
- package/src/drop-down-base/drop-down-base-model.d.ts +196 -196
- package/src/drop-down-base/drop-down-base.d.ts +15 -15
- package/src/drop-down-base/drop-down-base.js +20 -20
- package/src/drop-down-list/drop-down-list-model.d.ts +194 -194
- package/src/drop-down-list/drop-down-list.d.ts +4 -5
- package/src/drop-down-list/drop-down-list.js +36 -24
- package/src/drop-down-tree/drop-down-tree-model.d.ts +445 -445
- package/src/drop-down-tree/drop-down-tree.js +20 -20
- package/src/global.d.ts +1 -0
- package/src/list-box/list-box-model.d.ts +194 -194
- 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 +259 -259
- package/src/mention/mention.js +19 -19
- package/src/multi-select/multi-select-model.d.ts +505 -505
- package/src/multi-select/multi-select.js +19 -19
- package/styles/auto-complete/_all.scss +1 -1
- package/styles/auto-complete/_bds-definition.scss +2 -0
- 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/_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/_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-dark-definition.scss +1 -0
- package/styles/auto-complete/_material3-definition.scss +2 -2
- package/styles/auto-complete/_tailwind-definition.scss +2 -2
- package/styles/auto-complete/bootstrap-dark.scss +1 -1
- package/styles/auto-complete/bootstrap.scss +1 -1
- package/styles/auto-complete/bootstrap4.css +13 -2
- package/styles/auto-complete/bootstrap4.scss +1 -1
- package/styles/auto-complete/bootstrap5-dark.scss +1 -1
- package/styles/auto-complete/bootstrap5.scss +1 -1
- package/styles/auto-complete/fabric-dark.scss +1 -1
- package/styles/auto-complete/fabric.scss +1 -1
- package/styles/auto-complete/fluent-dark.scss +1 -1
- package/styles/auto-complete/fluent.scss +1 -1
- package/styles/auto-complete/highcontrast-light.scss +1 -1
- package/styles/auto-complete/highcontrast.scss +1 -1
- package/styles/auto-complete/material-dark.css +0 -1
- package/styles/auto-complete/material-dark.scss +1 -1
- package/styles/auto-complete/material.css +0 -1
- package/styles/auto-complete/material.scss +1 -1
- package/styles/auto-complete/material3-dark.css +197 -0
- package/styles/auto-complete/material3-dark.scss +5 -0
- package/styles/auto-complete/material3.css +253 -0
- package/styles/auto-complete/material3.scss +5 -0
- package/styles/auto-complete/tailwind-dark.css +0 -1
- package/styles/auto-complete/tailwind-dark.scss +1 -1
- package/styles/auto-complete/tailwind.css +0 -1
- package/styles/auto-complete/tailwind.scss +1 -1
- package/styles/bootstrap-dark.css +309 -138
- package/styles/bootstrap.css +306 -129
- package/styles/bootstrap4.css +340 -141
- package/styles/bootstrap5-dark.css +310 -133
- package/styles/bootstrap5.css +310 -133
- package/styles/combo-box/_all.scss +1 -1
- package/styles/combo-box/_bds-definition.scss +2 -0
- 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/_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/_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-dark-definition.scss +1 -0
- package/styles/combo-box/_material3-definition.scss +2 -2
- package/styles/combo-box/_tailwind-definition.scss +2 -2
- package/styles/combo-box/bootstrap-dark.scss +1 -1
- package/styles/combo-box/bootstrap.scss +1 -1
- package/styles/combo-box/bootstrap4.css +13 -2
- package/styles/combo-box/bootstrap4.scss +1 -1
- package/styles/combo-box/bootstrap5-dark.scss +1 -1
- package/styles/combo-box/bootstrap5.scss +1 -1
- package/styles/combo-box/fabric-dark.scss +1 -1
- package/styles/combo-box/fabric.scss +1 -1
- package/styles/combo-box/fluent-dark.scss +1 -1
- package/styles/combo-box/fluent.scss +1 -1
- package/styles/combo-box/highcontrast-light.scss +1 -1
- package/styles/combo-box/highcontrast.scss +1 -1
- package/styles/combo-box/material-dark.css +0 -1
- package/styles/combo-box/material-dark.scss +1 -1
- package/styles/combo-box/material.css +0 -1
- package/styles/combo-box/material.scss +1 -1
- package/styles/combo-box/material3-dark.css +197 -0
- package/styles/combo-box/material3-dark.scss +5 -0
- package/styles/combo-box/material3.css +253 -0
- package/styles/combo-box/material3.scss +5 -0
- package/styles/combo-box/tailwind-dark.css +0 -1
- package/styles/combo-box/tailwind-dark.scss +1 -1
- package/styles/combo-box/tailwind.css +0 -1
- package/styles/combo-box/tailwind.scss +1 -1
- package/styles/drop-down-base/_all.scss +2 -2
- package/styles/drop-down-base/_bds-definition.scss +134 -0
- 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 -98
- package/styles/drop-down-base/_bootstrap5-definition.scss +117 -117
- 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/_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 +187 -193
- 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-dark-definition.scss +1 -0
- package/styles/drop-down-base/_material3-definition.scss +87 -117
- package/styles/drop-down-base/_tailwind-definition.scss +129 -129
- package/styles/drop-down-base/_theme.scss +391 -328
- package/styles/drop-down-base/bootstrap-dark.css +6 -10
- package/styles/drop-down-base/bootstrap-dark.scss +1 -1
- package/styles/drop-down-base/bootstrap.css +6 -10
- package/styles/drop-down-base/bootstrap.scss +1 -1
- package/styles/drop-down-base/bootstrap4.css +6 -18
- package/styles/drop-down-base/bootstrap4.scss +1 -1
- package/styles/drop-down-base/bootstrap5-dark.css +6 -10
- package/styles/drop-down-base/bootstrap5-dark.scss +1 -1
- package/styles/drop-down-base/bootstrap5.css +6 -10
- package/styles/drop-down-base/bootstrap5.scss +1 -1
- package/styles/drop-down-base/fabric-dark.css +6 -10
- package/styles/drop-down-base/fabric-dark.scss +1 -1
- package/styles/drop-down-base/fabric.css +6 -10
- package/styles/drop-down-base/fabric.scss +1 -1
- package/styles/drop-down-base/fluent-dark.css +6 -10
- package/styles/drop-down-base/fluent-dark.scss +1 -1
- package/styles/drop-down-base/fluent.css +6 -10
- package/styles/drop-down-base/fluent.scss +1 -1
- package/styles/drop-down-base/highcontrast-light.css +6 -10
- package/styles/drop-down-base/highcontrast-light.scss +1 -1
- package/styles/drop-down-base/highcontrast.css +6 -10
- package/styles/drop-down-base/highcontrast.scss +1 -1
- package/styles/drop-down-base/material-dark.css +6 -11
- package/styles/drop-down-base/material-dark.scss +1 -1
- package/styles/drop-down-base/material.css +6 -11
- package/styles/drop-down-base/material.scss +1 -1
- package/styles/drop-down-base/material3-dark.css +430 -0
- package/styles/drop-down-base/material3-dark.scss +4 -0
- package/styles/drop-down-base/material3.css +486 -0
- package/styles/drop-down-base/material3.scss +4 -0
- package/styles/drop-down-base/tailwind-dark.css +6 -11
- package/styles/drop-down-base/tailwind-dark.scss +1 -1
- package/styles/drop-down-base/tailwind.css +6 -11
- package/styles/drop-down-base/tailwind.scss +1 -1
- package/styles/drop-down-list/_all.scss +3 -3
- package/styles/drop-down-list/_bds-definition.scss +134 -0
- 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 -191
- package/styles/drop-down-list/_bootstrap5-definition.scss +201 -201
- 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/_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 +315 -299
- 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-dark-definition.scss +1 -0
- package/styles/drop-down-list/_material3-definition.scss +180 -201
- 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 -3
- package/styles/drop-down-list/bootstrap-dark.scss +1 -1
- package/styles/drop-down-list/bootstrap.css +5 -3
- package/styles/drop-down-list/bootstrap.scss +1 -1
- package/styles/drop-down-list/bootstrap4.css +19 -14
- package/styles/drop-down-list/bootstrap4.scss +1 -1
- package/styles/drop-down-list/bootstrap5-dark.css +5 -3
- package/styles/drop-down-list/bootstrap5-dark.scss +1 -1
- package/styles/drop-down-list/bootstrap5.css +5 -3
- package/styles/drop-down-list/bootstrap5.scss +1 -1
- package/styles/drop-down-list/fabric-dark.css +5 -3
- package/styles/drop-down-list/fabric-dark.scss +1 -1
- package/styles/drop-down-list/fabric.css +5 -3
- package/styles/drop-down-list/fabric.scss +1 -1
- package/styles/drop-down-list/fluent-dark.css +5 -3
- package/styles/drop-down-list/fluent-dark.scss +1 -1
- package/styles/drop-down-list/fluent.css +5 -3
- package/styles/drop-down-list/fluent.scss +1 -1
- package/styles/drop-down-list/highcontrast-light.css +5 -3
- package/styles/drop-down-list/highcontrast-light.scss +1 -1
- package/styles/drop-down-list/highcontrast.css +5 -3
- package/styles/drop-down-list/highcontrast.scss +1 -1
- 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.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/_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-dark.scss +1 -0
- 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 +6 -4
- package/styles/drop-down-list/material-dark.scss +1 -1
- package/styles/drop-down-list/material.css +5 -4
- package/styles/drop-down-list/material.scss +1 -1
- package/styles/drop-down-list/material3-dark.css +507 -0
- package/styles/drop-down-list/material3-dark.scss +9 -0
- package/styles/drop-down-list/material3.css +563 -0
- package/styles/drop-down-list/material3.scss +9 -0
- package/styles/drop-down-list/tailwind-dark.css +6 -5
- package/styles/drop-down-list/tailwind-dark.scss +1 -1
- package/styles/drop-down-list/tailwind.css +6 -5
- package/styles/drop-down-list/tailwind.scss +1 -1
- package/styles/drop-down-tree/_all.scss +2 -2
- package/styles/drop-down-tree/_bds-definition.scss +61 -0
- package/styles/drop-down-tree/_bootstrap-dark-definition.scss +71 -71
- package/styles/drop-down-tree/_bootstrap-definition.scss +70 -70
- package/styles/drop-down-tree/_bootstrap4-definition.scss +71 -71
- package/styles/drop-down-tree/_bootstrap5-definition.scss +59 -59
- package/styles/drop-down-tree/_fabric-dark-definition.scss +71 -71
- package/styles/drop-down-tree/_fabric-definition.scss +71 -71
- package/styles/drop-down-tree/_fluent-definition.scss +65 -65
- package/styles/drop-down-tree/_fusionnew-definition.scss +59 -59
- package/styles/drop-down-tree/_highcontrast-definition.scss +71 -71
- package/styles/drop-down-tree/_highcontrast-light-definition.scss +71 -71
- package/styles/drop-down-tree/_layout.scss +1423 -1386
- package/styles/drop-down-tree/_material-dark-definition.scss +72 -72
- package/styles/drop-down-tree/_material-definition.scss +72 -72
- package/styles/drop-down-tree/_material3-dark-definition.scss +1 -0
- package/styles/drop-down-tree/_material3-definition.scss +76 -60
- package/styles/drop-down-tree/_tailwind-definition.scss +61 -61
- package/styles/drop-down-tree/_theme.scss +132 -120
- package/styles/drop-down-tree/bootstrap-dark.css +4 -0
- package/styles/drop-down-tree/bootstrap-dark.scss +1 -1
- package/styles/drop-down-tree/bootstrap.css +4 -0
- package/styles/drop-down-tree/bootstrap.scss +1 -1
- package/styles/drop-down-tree/bootstrap4.css +4 -8
- package/styles/drop-down-tree/bootstrap4.scss +1 -1
- package/styles/drop-down-tree/bootstrap5-dark.css +4 -0
- package/styles/drop-down-tree/bootstrap5-dark.scss +1 -1
- package/styles/drop-down-tree/bootstrap5.css +4 -0
- package/styles/drop-down-tree/bootstrap5.scss +1 -1
- package/styles/drop-down-tree/fabric-dark.css +4 -0
- package/styles/drop-down-tree/fabric-dark.scss +1 -1
- package/styles/drop-down-tree/fabric.css +4 -0
- package/styles/drop-down-tree/fabric.scss +1 -1
- package/styles/drop-down-tree/fluent-dark.css +6 -0
- package/styles/drop-down-tree/fluent-dark.scss +1 -1
- package/styles/drop-down-tree/fluent.css +6 -0
- package/styles/drop-down-tree/fluent.scss +1 -1
- package/styles/drop-down-tree/highcontrast-light.css +4 -0
- package/styles/drop-down-tree/highcontrast-light.scss +1 -1
- package/styles/drop-down-tree/highcontrast.css +4 -0
- package/styles/drop-down-tree/highcontrast.scss +1 -1
- 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.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/_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-dark.scss +1 -0
- 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 +5 -1
- package/styles/drop-down-tree/material-dark.scss +1 -1
- package/styles/drop-down-tree/material.css +4 -1
- package/styles/drop-down-tree/material.scss +1 -1
- package/styles/drop-down-tree/material3-dark.css +469 -0
- package/styles/drop-down-tree/material3-dark.scss +10 -0
- package/styles/drop-down-tree/material3.css +525 -0
- package/styles/drop-down-tree/material3.scss +10 -0
- package/styles/drop-down-tree/tailwind-dark.css +4 -1
- package/styles/drop-down-tree/tailwind-dark.scss +1 -1
- package/styles/drop-down-tree/tailwind.css +4 -1
- package/styles/drop-down-tree/tailwind.scss +1 -1
- package/styles/fabric-dark.css +310 -139
- package/styles/fabric.css +307 -130
- package/styles/fluent-dark.css +315 -135
- package/styles/fluent.css +315 -135
- package/styles/highcontrast-light.css +311 -138
- package/styles/highcontrast.css +324 -135
- package/styles/list-box/_all.scss +2 -2
- package/styles/list-box/_bds-definition.scss +136 -0
- package/styles/list-box/_bootstrap-dark-definition.scss +126 -125
- package/styles/list-box/_bootstrap-definition.scss +119 -118
- package/styles/list-box/_bootstrap4-definition.scss +124 -123
- package/styles/list-box/_bootstrap5-definition.scss +120 -121
- package/styles/list-box/_fabric-dark-definition.scss +126 -125
- package/styles/list-box/_fabric-definition.scss +119 -118
- package/styles/list-box/_fluent-definition.scss +120 -121
- package/styles/list-box/_fusionnew-definition.scss +111 -114
- package/styles/list-box/_highcontrast-definition.scss +119 -118
- package/styles/list-box/_highcontrast-light-definition.scss +126 -125
- package/styles/list-box/_layout.scss +542 -534
- package/styles/list-box/_material-dark-definition.scss +126 -125
- package/styles/list-box/_material-definition.scss +119 -118
- package/styles/list-box/_material3-dark-definition.scss +1 -0
- package/styles/list-box/_material3-definition.scss +119 -120
- package/styles/list-box/_tailwind-definition.scss +119 -120
- package/styles/list-box/_theme.scss +382 -316
- package/styles/list-box/bootstrap-dark.css +276 -113
- package/styles/list-box/bootstrap-dark.scss +1 -1
- package/styles/list-box/bootstrap.css +278 -114
- package/styles/list-box/bootstrap.scss +1 -1
- package/styles/list-box/bootstrap4.css +279 -123
- package/styles/list-box/bootstrap4.scss +1 -1
- package/styles/list-box/bootstrap5-dark.css +277 -114
- package/styles/list-box/bootstrap5-dark.scss +1 -1
- package/styles/list-box/bootstrap5.css +277 -114
- package/styles/list-box/bootstrap5.scss +1 -1
- package/styles/list-box/fabric-dark.css +276 -113
- package/styles/list-box/fabric-dark.scss +1 -1
- package/styles/list-box/fabric.css +278 -114
- package/styles/list-box/fabric.scss +1 -1
- package/styles/list-box/fluent-dark.css +279 -115
- package/styles/list-box/fluent-dark.scss +1 -1
- package/styles/list-box/fluent.css +279 -115
- package/styles/list-box/fluent.scss +1 -1
- package/styles/list-box/highcontrast-light.css +276 -113
- package/styles/list-box/highcontrast-light.scss +1 -1
- package/styles/list-box/highcontrast.css +278 -114
- package/styles/list-box/highcontrast.scss +1 -1
- 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.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/_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-dark.scss +1 -0
- 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 +277 -115
- package/styles/list-box/material-dark.scss +1 -1
- package/styles/list-box/material.css +279 -116
- package/styles/list-box/material.scss +1 -1
- package/styles/list-box/material3-dark.css +1010 -0
- package/styles/list-box/material3-dark.scss +6 -0
- package/styles/list-box/material3.css +1066 -0
- package/styles/list-box/material3.scss +6 -0
- package/styles/list-box/tailwind-dark.css +279 -116
- package/styles/list-box/tailwind-dark.scss +1 -1
- package/styles/list-box/tailwind.css +279 -116
- package/styles/list-box/tailwind.scss +1 -1
- package/styles/material-dark.css +311 -144
- package/styles/material.css +311 -135
- package/styles/material3-dark.css +4723 -0
- package/styles/material3-dark.scss +10 -0
- package/styles/material3.css +4779 -0
- package/styles/material3.scss +10 -0
- package/styles/mention/_all.scss +1 -1
- package/styles/mention/_bds-definition.scss +1 -0
- 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/_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/_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-dark-definition.scss +1 -0
- package/styles/mention/_material3-definition.scss +1 -1
- package/styles/mention/_tailwind-definition.scss +1 -1
- package/styles/mention/bootstrap-dark.scss +1 -1
- package/styles/mention/bootstrap.scss +1 -1
- package/styles/mention/bootstrap4.css +0 -8
- package/styles/mention/bootstrap4.scss +1 -1
- package/styles/mention/bootstrap5-dark.scss +1 -1
- package/styles/mention/bootstrap5.scss +1 -1
- package/styles/mention/fabric-dark.scss +1 -1
- package/styles/mention/fabric.scss +1 -1
- package/styles/mention/fluent-dark.scss +1 -1
- package/styles/mention/fluent.scss +1 -1
- package/styles/mention/highcontrast-light.scss +1 -1
- package/styles/mention/highcontrast.scss +1 -1
- package/styles/mention/material-dark.css +0 -1
- package/styles/mention/material-dark.scss +1 -1
- package/styles/mention/material.css +0 -1
- package/styles/mention/material.scss +1 -1
- package/styles/mention/material3-dark.css +86 -0
- package/styles/mention/material3-dark.scss +7 -0
- package/styles/mention/material3.css +142 -0
- package/styles/mention/material3.scss +7 -0
- package/styles/mention/tailwind-dark.css +0 -1
- package/styles/mention/tailwind-dark.scss +1 -1
- package/styles/mention/tailwind.css +0 -1
- package/styles/mention/tailwind.scss +1 -1
- package/styles/multi-select/_all.scss +2 -2
- package/styles/multi-select/_bds-definition.scss +235 -0
- package/styles/multi-select/_bootstrap-dark-definition.scss +203 -196
- package/styles/multi-select/_bootstrap-definition.scss +192 -190
- package/styles/multi-select/_bootstrap4-definition.scss +278 -257
- package/styles/multi-select/_bootstrap5-definition.scss +230 -227
- package/styles/multi-select/_fabric-dark-definition.scss +192 -185
- package/styles/multi-select/_fabric-definition.scss +183 -181
- package/styles/multi-select/_fluent-definition.scss +241 -238
- package/styles/multi-select/_fusionnew-definition.scss +227 -227
- package/styles/multi-select/_highcontrast-definition.scss +303 -294
- package/styles/multi-select/_highcontrast-light-definition.scss +297 -293
- package/styles/multi-select/_layout.scss +2199 -2016
- package/styles/multi-select/_material-dark-definition.scss +230 -228
- package/styles/multi-select/_material-definition.scss +223 -221
- package/styles/multi-select/_material3-dark-definition.scss +1 -0
- package/styles/multi-select/_material3-definition.scss +246 -226
- package/styles/multi-select/_tailwind-definition.scss +235 -232
- package/styles/multi-select/_theme.scss +586 -492
- package/styles/multi-select/bootstrap-dark.css +18 -2
- package/styles/multi-select/bootstrap-dark.scss +1 -1
- package/styles/multi-select/bootstrap.css +13 -2
- package/styles/multi-select/bootstrap.scss +1 -1
- package/styles/multi-select/bootstrap4.css +32 -10
- package/styles/multi-select/bootstrap4.scss +1 -1
- package/styles/multi-select/bootstrap5-dark.css +18 -6
- package/styles/multi-select/bootstrap5-dark.scss +1 -1
- package/styles/multi-select/bootstrap5.css +18 -6
- package/styles/multi-select/bootstrap5.scss +1 -1
- package/styles/multi-select/fabric-dark.css +19 -3
- package/styles/multi-select/fabric-dark.scss +1 -1
- package/styles/multi-select/fabric.css +14 -3
- package/styles/multi-select/fabric.scss +1 -1
- package/styles/multi-select/fluent-dark.css +19 -7
- package/styles/multi-select/fluent-dark.scss +1 -1
- package/styles/multi-select/fluent.css +19 -7
- package/styles/multi-select/fluent.scss +1 -1
- package/styles/multi-select/highcontrast-light.css +20 -2
- package/styles/multi-select/highcontrast-light.scss +1 -1
- package/styles/multi-select/highcontrast.css +31 -8
- package/styles/multi-select/highcontrast.scss +1 -1
- 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.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/_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-dark.scss +1 -0
- package/styles/multi-select/icons/_material3.scss +692 -26
- package/styles/multi-select/icons/_tailwind.scss +26 -26
- package/styles/multi-select/material-dark.css +17 -7
- package/styles/multi-select/material-dark.scss +1 -1
- package/styles/multi-select/material.css +17 -7
- package/styles/multi-select/material.scss +1 -1
- package/styles/multi-select/material3-dark.css +2550 -0
- package/styles/multi-select/material3-dark.scss +10 -0
- package/styles/multi-select/material3.css +2606 -0
- package/styles/multi-select/material3.scss +10 -0
- package/styles/multi-select/tailwind-dark.css +17 -5
- package/styles/multi-select/tailwind-dark.scss +1 -1
- package/styles/multi-select/tailwind.css +17 -5
- package/styles/multi-select/tailwind.scss +1 -1
- package/styles/tailwind-dark.css +312 -141
- package/styles/tailwind.css +312 -141
- package/.eslintrc.json +0 -259
- 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/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":["var queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n if (type === 'object' && checkField_1.textContent.toString().indexOf(data[value]) !== -1 && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n 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 }\n return itemData;\n}\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","/* eslint-disable jsdoc/require-param, valid-jsdoc */\n/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n 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 __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n 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 (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 (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 noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\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') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = this.typeOfData(this.listData);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n 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 /* 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 /**\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 (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (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 * 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 element.dispatchEvent(evt);\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 && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\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 /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (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// 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 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};\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 return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\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 };\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 (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\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) && 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 {\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.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n 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.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 var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n 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 isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\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 = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\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.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n 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 = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\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 var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n 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 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-label': this.inputElement.value });\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 (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 (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 for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '<option selected>' + this.text + '</option>';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n 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 {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n 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 var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n 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 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 this.resetList(dataSource, fields, query);\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 // 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 // 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.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\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 this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) { return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ? _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value; });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\n };\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\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_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\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.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\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.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 var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { 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 var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.remove(document, 'mousedown', _this.onDocumentClick);\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n 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) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\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 boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\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 DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : 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 - (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 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 DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\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 this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && (this.beforePopupOpen || this.isEventCancel))) {\n return;\n }\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n 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 _this.isEventCancel = eventArgs.cancel;\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 };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\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 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', '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 Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 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 this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact) {\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 (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 for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\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 (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 for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n 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': break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate != null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = { ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true };\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 Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n 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 /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list != this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\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]) || this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { NotifyPropertyChanges, Property, Event } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, attributes, formatUnit, ChildProperty, remove, L10n, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, prepend, Complex, closest, setValue, getValue, compile, append } from '@syncfusion/ej2-base';\nimport { select, selectAll, isNullOrUndefined as isNOU, matches, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @class */ (function (_super) {\n __extends(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nexport { Fields };\nvar TreeSettings = /** @class */ (function (_super) {\n __extends(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\nexport { TreeSettings };\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * <input type=\"text\" id=\"tree\"></input>\n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @class */ (function (_super) {\n __extends(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n // eslint-disable-next-line\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_popup', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n this.ensureAutoCheck();\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'textbox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n document.body.appendChild(this.popupDiv);\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.ensureAutoCheck = function () {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNOU(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNOU(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNOU(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n if (!this.isFilteredData) {\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value,\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (value === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(value, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = _this.nestedFilter(value, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n }\n });\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNOU(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n // eslint-disable-next-line\n var children = node[this.fields.child];\n if (isNOU(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n // eslint-disable-next-line\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNOU(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedData = [];\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNOU(parentId)) {\n // eslint-disable-next-line\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNOU(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNOU(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.fields.text];\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNOU(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-hover', 'e-node-focus']);\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n var disable = this.enabled ? 'false' : 'true';\n return {\n 'aria-disabled': disable,\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n // eslint-disable-next-line\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNOU(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNOU(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = data;\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n var attr = this.inputEle.getAttribute(attributes[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes[i], attr);\n this.inputEle.removeAttribute(attributes[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNOU(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n // eslint-disable-next-line\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNOU(this.htmlAttributes[htmlAttr])) {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n else {\n this.inputWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNOU(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNOU(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n // eslint-disable-next-line\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNOU(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNOU(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getItems = function (givenText) {\n // eslint-disable-next-line\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n // eslint-disable-next-line\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNOU(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n // eslint-disable-next-line\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo('#' + this.tree.id);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled) {\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals);\n /* eslint-enable */\n _this.renderReactTemplates();\n }\n }\n if (!isCancelled) {\n attributes(_this.inputWrapper, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-hover', 'e-node-focus']);\n }\n if (_this.checkSelectAll && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNOU(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && (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 (!this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNOU(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNOU(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNOU(this.fields.dataSource))\n this.fields.dataSource = [];\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNOU(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNOU(getValue(field.parentValue, this.fields.dataSource[i])) || !isNOU(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n // eslint-disable-next-line\n var checkData = args.data;\n // eslint-disable-next-line\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '<option selected value =\"' + this.value[0] + '\">' + this.text + '</option>';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n // eslint-disable-next-line\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li .e-checkbox-wrapper[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0)) {\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 && this.isCheckAllCalled) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function (args) {\n if (this.hasTemplate && this.portals) {\n this.portals = [].concat(this.treeObj.portals);\n /* eslint-enable */\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (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: newValues }, true);\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNOU(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNOU(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getSelectedData = function (value) {\n // eslint-disable-next-line\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNOU(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNOU(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNOU(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNOU(this.treeItems[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNOU(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNOU(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n // eslint-disable-next-line\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNOU(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '<option selected value =\"' + this.value[i] + '\">' +\n this.selectedText[this.selectedText.length - 1] + '</option>';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = text;\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP,\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n // eslint-disable-next-line\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (this.value == [] && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = true;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.ensureAutoCheck();\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n }\n else {\n // eslint-disable-next-line\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n this.ensureAutoCheck();\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNOU(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNOU(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== \"Custom\") {\n return;\n }\n this.chipCollection.innerHTML = \"\";\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ value: [] }, true);\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 this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n _super.prototype.destroy.call(this);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n // eslint-disable-next-line\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputWrapper, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate([\n Property(\"${value.length} item(s) selected\")\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\nexport { DropDownTree };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-list/drop-down-list-model.d.ts'/>\nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n return (this.isFiltering() ? this.inputWrapper : inputObject);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\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 }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../combo-box/combo-box-model.d.ts'/>\nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * <input id=\"list\" type=\"text\"/>\n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\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 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 if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\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 }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n 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 this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = -1;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, SanitizeHtmlHelper, 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 } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * <select id=\"list\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var multiselectObj = new Multiselect();\n * multiselectObj.appendTo(\"#list\");\n * </script>\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n document.body.appendChild(_this.popupObj.element);\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 _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n 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 this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\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 (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.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 (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 for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (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 for (var temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\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 (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 for (var temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var listValue = this.findListElement(((!isNullOrUndefined(this.mainList)) ? this.mainList : this.ulElement), 'li', 'data-value', this.value[index]);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML += '<option selected value =\"' + this.value[index] + '\">' + index + '</option>';\n }\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? <HTMLElement>this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) >= overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) < overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '<option selected value =\"' + value + '\">' + index + '</option>';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-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 this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","import { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { EventHandler, select, removeClass, addClass, detach, compile, L10n } from '@syncfusion/ej2-base';\nimport { Browser, attributes, isNullOrUndefined, append, closest, prepend } from '@syncfusion/ej2-base';\nimport { dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n var selectAll = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), args.li, args.e, selectAll);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n var selectAll = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK), null, e, selectAll);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (selectAll) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK]);\n frameSpan.classList.add(INDETERMINATE);\n ariaState = 'false';\n if (selectAll) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n 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 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 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n append(this.parent.ulElement.querySelectorAll('li.e-active'), ulEle);\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\nexport { CheckBoxSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path='../drop-down-base/drop-down-base-model.d.ts'/>\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { EventHandler, closest, removeClass, addClass, Complex, Property, ChildProperty, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, getComponent, Event, extend, detach, attributes } from '@syncfusion/ej2-base';\nimport { getUniqueID, Browser, formatUnit, isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { prepend, append } from '@syncfusion/ej2-base';\nimport { cssClass, Sortable, moveTo } from '@syncfusion/ej2-lists';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * <select id=\"listbox\">\n * <option value='1'>Badminton</option>\n * <option value='2'>Basketball</option>\n * <option value='3'>Cricket</option>\n * <option value='4'>Football</option>\n * <option value='5'>Tennis</option>\n * </select>\n * ```\n * ```typescript\n * <script>\n * var listObj = new ListBox();\n * listObj.appendTo(\"#listbox\");\n * </script>\n * ```\n */\nvar ListBox = /** @class */ (function (_super) {\n __extends(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n }\n this.initWrapper();\n this.setSelection();\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n var filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n var txtLength = this.filterInput.value.length;\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\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 if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.pageY + scrollMoved) < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop + 10;\n }\n else if ((event.pageY - scrollMoved) - boundRect.y < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop - 10;\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n var listObj = this.getComponent(args.target);\n if (listObj && listObj.listData.length === 0) {\n var noRecElem = listObj.ulElement.childNodes[0];\n if (noRecElem) {\n listObj.ulElement.removeChild(noRecElem);\n }\n }\n };\n ListBox.prototype.beforeDragEnd = function (args) {\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 this.trigger('beforeDrop', args);\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 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 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 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 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 this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n this.checkMaxSelection();\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) {\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 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 this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n fListBox.updateMainList();\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (isRefresh) {\n var noRecElem = fListBox.ulElement.childNodes[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, \n // eslint-disable-next-line prefer-spread\n Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (var i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n var fliCollections = [].slice.call(fListBox.liCollections);\n var tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.liCollections = [];\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = [];\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && !this.allowFiltering) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n 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.querySelectorAll('.e-list-item')[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split(\"\\\\\").join(\"\\\\\\\\\");\n }\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\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 }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\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 value=\"' + this.value[i] + '\"></option>';\n }\n ele.innerHTML += innerHTML;\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.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nexport { ListBox };\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { KeyboardEvents, compile, Property, EventHandler, Animation, formatUnit, append, attributes } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, detach, Event, Complex, addClass, removeClass, closest, isUndefined, getValue, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner, getZindexPartial } from '@syncfusion/ej2-popups';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @class */ (function (_super) {\n __extends(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n this.inputElement = !isNullOrUndefined(this.target) ? ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : 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.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.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.setValue(e);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar, 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n if ((e.keyCode === 37 || e.keyCode === 39) && !isNullOrUndefined(currentRange) &&\n currentRange.indexOf(this.mentionChar) === -1 && this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange)) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40) {\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n }\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 (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.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 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 _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\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 popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n _this.isCollided = false;\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') {\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 var collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (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;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n range.collapse(false);\n rect = range.getBoundingClientRect();\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rect.top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n coordinates = {\n top: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft\n };\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e)) {\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, 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 (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 range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n range.deleteContents();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n return '<span contenteditable=\"false\" class=\"e-mention-chip\">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\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 for (var i = 0; i < displayCompTemp.length; i++) {\n this.displayTempElement.appendChild(displayCompTemp[i]);\n }\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 _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.MultiSelect.Inject(index.CheckBoxSelection);\nindex.ListBox.Inject(index.CheckBoxSelection);\nexport * from './index';\n"],"names":["incrementalSearch","keyCode","items","selectedIndex","ignoreCase","elementId","queryString","String","fromCharCode","setTimeout","index","toLowerCase","prevElementId","prevString","i","matches","length","classList","contains","activeClass","listItems","strLength","item","innerText","substr","push","Search","inputVal","searchType","dataSource","fields","type","undefined","itemData","queryStr","toLocaleLowerCase","escapeCharRegExp","itemsData","state_1","filterValue","text","checkField_1","fieldValue_1","split","filter","data","Array","prototype","slice","call","forEach","value","textContent","toString","indexOf","getAttribute","replace","RegExp","test","resetIncrementalSearchValues","highlightSearch","element","query","ignoreRegex","replaceQuery","findTextNode","pattern","childNodes","nodeType","trim","nodeValue","innerHTML","revertHighlightSearch","content","contentElement","querySelectorAll","parent_1","parentNode","document","createTextNode","replaceChild","createFloatLabel","overAllWrapper","searchWrapper","inputElement","floatLabelType","placeholder","floatLinelement","createElement","className","FLOATLINE","floatLabelElement","FLOATTEXT","id","getUniqueID","isNullOrUndefined","attributes","aria-labelledby","encodePlaceholder","removeAttribute","appendChild","add","updateFloatLabelState","LABELBOTTOM","removeClass","addClass","LABELTOP","label","removeFloating","componentWrapper","placeholderText","placeholderElement","querySelector","floatLine","setPlaceHolder","detach","remove","floatLabelFocus","floatLabelBlur","result","spanElement","children","__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","p","hasOwnProperty","__","this","constructor","create","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","FieldSettings","_super","apply","Property","ChildProperty","dropDownBaseClasses","root","rtl","selected","hover","noData","fixedHead","focus","li","group","disabled","grouping","DropDownBase","options","_this","preventChange","isAngular","isPreventChange","isDynamicDataChange","addedNewItem","getPropObject","prop","newProp","oldProp","newProperty","oldProperty","propName","getValueByText","ignoreAccent","listData","checkValueCase","isTextByValue","typeOfData","typeof","_i","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","getValue","compareValue_1","dataItem","DataUtil","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","selectAll","exception","l10nUpdate","actionFailure","ele","getModuleName","ulElement","list","noRecordsTemplate","actionFailureTemplate","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","noDataCompTemp","compile","select","isStringTemplate","renderReactTemplates","l10nLocale","componentLocale","L10n","getLocaleName","locale","getConstant","l10n","liElem","setAttribute","getTextByValue","parseFloat","setEnableRtl","enableRtlElements","enableRtl","initialize","e","bindEvent","tagName","jsonElement","ListBase","createJsonFromElement","setProperties","resetList","setListData","renderItemsBySelect","getPersistData","addOnPersist","updateDataAttribute","invalidAttr","attr","a","name","extend","htmlAttributes","option","getJSONfromOption","optionGroup","isHeader","child","updateFields","groupBy","iconCss","field","options_1","json","preRender","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","event","isActive","eventArgs","cancel","trigger","showSpinner","DataManager","emptyDataRequest","executeQuery","getQuery","then","renderItems","onActionComplete","groupTemplate","renderGroupTemplate","bindChildItems","catch","onActionFailure","hideSpinner","dataManager","localDataArgs","executeLocal","itemTemplate","childElementCount","updateDataList","childNode","remainingItems","sortedData","append","liCollections","updateListValues","raiseDataBound","findListElement","findNode","attribute","liElement","listArr","dataBoundEventArgs","spliceData","Query","skip","listElements","templateListItem","createListItemFromArray","listOption","createListItemFromJson","isReact","clearTemplate","fixedHeaderElement","properties","allowCustomValue","postRender","listElement","focusItem","selectedItem","listEle","groupTemplateID","headerItems","groupValue","tempHeaders","isGroupChecking","notify","module","createListItems","sortOrder","getSortedDataSource","groupDataSource","take","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","style","display","prepend","setFixedHeader","zIndex","scrollStop","liHeight","parseInt","getComputedStyle","getValidLi","getPropertyValue","topIndex","Math","round","scrollTop","currentLi","top","templateID","renderContentTemplate","parentElement","borderWidth","defaultView","isNaN","liWidth","offsetWidth","width","setStyleAttribute","firstLi","textField","getDataSource","addSorting","getIndexByValue","getItems","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","render","updateDataSource","props","setUpdateInitial","updateData","j","keys","onPropertyChanged","_a","setZIndex","isEmptyData","attrs","tabindex","rippleModel","duration","selector","rippleFun","rippleEffect","EventHandler","wrapperElement","insertBefore","addItem","itemIndex","newList","itemsCount","selectedItemValue","itemText","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","splice","validationAttribute","hidden","itemCount","getDataByValue","_b","_c","destroy","body","Complex","Event","NotifyPropertyChanges","Component","dropDownListClasses","disable","base","input","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","footer","header","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","container","buttons","DropDownList","isListSearched","valueTempElement","opacity","initializeData","activeIndex","isPopupOpen","isDocumentClick","isInteracted","isFilterFocus","beforePopupOpen","initial","initRemoteRender","isNotSearchList","isTyped","isSelected","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","previousValue","keyConfigure","tab","enter","escape","end","home","down","up","pageUp","pageDown","open","close","hide","space","popupObj","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","preventDefault","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","previousItemData","resetSelection","getItemData","onChangeEvent","allowFiltering","cloneNode","selectedLI","setSelection","updateIconState","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","enabled","setEnable","defaultAttr","validateAttr","Input","setPlaceholder","readonly","dataBind","getAriaAttributes","aria-disabled","role","aria-expanded","aria-live","setEnabled","targetElement","tabIndex","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","setValue","showClearButton","onBlurHandler","relatedTarget","currentTarget","isFilterLayout","activeElement","focusOutAction","focusOut","onFocusOut","clearButton","onFocus","args","resetValueHandler","formElement","closest","val","wireEvent","dropDownClick","focusIn","onSearch","bindCommonEvent","Browser","isDevice","keyboardModule","KeyboardEvents","keyAction","mobileKeyActionHandler","bind","keyConfigs","eventName","keyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","closePopup","setHover","hoveredItem","hasAttribute","setScrollPosition","spinnerElement","filterInputObj","createSpinner","preventAction","action","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","focusEle","isSelectFocusItem","startIndex","nextItem","findLi","getBoundingClientRect","height","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","isIE","info","activeStateChange","which","button","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","clearElement","removeProperty","previousSelectedLI","aria-label","aria-describedby","getElementsByClassName","aria-activedescendant","dropdownCompiler","dropdownTemplate","valueCompTemp","selectedItems","dataValue","dataText","isUndefined","eve","detachChangeEvent","defineProperties","enumerable","preItems","selectedElement","onFilterUp","ctrlKey","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterQuery","clone","filterType","dataType","where","start","abs","selectionStart","selectionEnd","visibility","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","popupElement","createInput","filterBarPlaceholder","cssClass","autocomplete","autocapitalize","spellcheck","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","aria-hidden","some","x","Predicate","setInputValue","updateActionCompleteDataValues","addNewItem","fieldValue","checkField","newElement","value_1","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","searchBox","listHeight","formatUnit","popupHeight","headerTemplate","setHeaderTemplate","footerTemplate","setFooterTemplate","searchBoxHeight","maxHeight","offsetValue","left","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","checkCollision","collision","X","Y","position","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","getScrollableParent","scrollHandler","selectedElementID","aria-owns","inputParent","animModel","popup","animation","destroyPopup","show","Animation","isCollide","marginTop","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","Popup","setWidth","targetType","relateTo","offsetY","offsetX","actionList","targetExitViewport","window","innerHeight","border","popupOffset","lastItem","offsetHeight","offsetTop","count","paddingBottom","popupWidth","scrollBottom","isInitial","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","setEleWidth","match","delay","isEventCancel","scrollableParentElements_1","fixedHeader","removeChild","updatedCssClassValues","class","setReadOnly","calculateWidth","selectElement","onselect","stopImmediatePropagation","onchange","renderComplete","footerCompTemp","headerCompTemp","contentEle","setOldText","setOldValue","refreshPosition","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","this_1","setReadonly","setCssClass","checkValidLi","setSelectionData","listLength_1","listLength_2","addFloating","setClearButton","ddlProps","newClass","oldClass","invokeRenderPopup","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","keyEntity","isFirstRender","isInitialized","currentText","currentValue","oldValue","removeValue","selectedText","treeItems","isNodeSelected","isDynamicChange","clearIconWidth","customTemplateId","altUp","altDown","shiftTab","moveDown","moveLeft","moveRight","moveUp","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","ctrlA","isTree","popupDiv","ensureAutoCheck","inputEle","isNOU","inputObj","showDropDownIcon","getDirective","createHiddenElement","createClearIcon","setElementWidth","setAttributes","tree","wireTreeEvents","renderTree","isRemoteData","allowMultiSelection","showCheckBox","mode","createChip","wrapText","overFlowWrapper","OVERFLOW_VIEW","setTreeValue","setTreeText","updateHiddenValue","setSelectedValue","updateView","wireEvents","firstUl","treeObj","hasTemplate","customTemplate","treeSettings","autoCheck","hideCheckAll","flag","checkAllEle","renderFilter","filterContainer","filterObj","TextBox","filterChangeHandler","appendTo","clearTimeout","filterHandler","treeData","getTreeData","filterFields","cloneFields","treeDataType","selfReferencefilter","nestedFilter","getTreeFields","filteredFields","matchedDataSource","filteredChild","nestedChildFilter","node","isMatchedNode","matchedChildren","filteredItems","assign","matchedData","parentId","parentValue","checkValue","mouseIn","overAllClear","windowResize","treeAction","wireCheckAllWrapperEvents","checkAllParent","checkAllAction","unWireEvents","isClearButtonClick","showOverAllClear","isValue","chipWrapper","changeOnBlur","triggerChangeEvent","updateOverFlowView","ensurePlaceHolder","ddtCompareValues","isChipDelete","newValue","observedArgs","isValueChange","keyEventArgs","showSelectAll","clickHandler","focusedElement","resetValue","aria-haspopup","overAllContainer","temp","tempData","tempIndex","wrapperleng","remaining","downIconWidth","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","remainElement","remainSize","delimiterChar","getOverflowVal","enableHtmlSanitizer","textArr","pop","join","chips","lastChild","updateRemainTemplate","updateDelimMode","firstChild","getSelectedData","loadOnDemand","multiple","chipCollection","getValidMode","createSelectAllWrapper","selectAllSpan","touchClass","checkBoxElement","createCheckBox","setLocale","firstElementChild","lastElementChild","checkWrapper","checkElement","changeState","wrapper","state","ariaState","frameSpan","isReverseUpdate","uncheckAll","checkAll","setMultiSelect","unSelect","selectAllText","unSelectAllText","setValidValue","valArr","selectedNodes","updateMode","checkedNodes","updateSelectedValues","givenText","getNestedItems","newData","objlen","dataId","getChildType","childData","mapper","TreeView","nodeSelected","onNodeSelected","nodeChecked","onNodeChecked","nodeChecking","beforeCheck","nodeExpanded","onNodeExpanded","nodeClicked","onNodeClicked","dataBound","OnDataBound","expandOn","nodeSelecting","onBeforeSelect","nodeTemplate","isCancelled","POPUP_CLASS","portals","concat","updatePopupHeight","checkSelectAll","wrap","getHeight","inputWidth","ddElement","documentElement","clientHeight","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","allowCustom","valueMuteChange","aria-autocomplete","aria-readonly","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","property","isKeyNavigate","previousValue_1","updateCustomValueCallback","changeData","comboProps","isEscape","searchItem","AutoComplete","_this_1","isFiltered","searchList","mapping","suggestionCount","queryElements","queries","fn","filterAction","minLength","postBackAction","fieldsSettings","itemCreated","highlight","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","FOCUS","HIDE_LIST","CHIP","MultiSelect","previousFilterText","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","requiredModules","modules","enableGroupCheckBox","prevOnChange","isProtectedOnChange","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","member","updateHTMLAttribute","popupWrapper","enable","refreshPlaceHolder","containerAttr","updateReadonly","updateCssClass","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","updateAriaActiveDescendant","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","status","removelastSelection","chipCollectionWrapper","tempValues","removeChipSelection","updateDelimeter","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","getForQuery","valuecheck","predicate","or","proxy","presentItemValue","addNonPresentItems","updateActionList","mainData","mainListCollection","remoteCustomValue","checkForCustomValue","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","updateValueState","previousElementSibling","nextElementSibling","hideGroupItem","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","isWordCharacter","expandTextbox","search","remoteFilterAction","dataUpdater","backCommand","dataChecks","customData","random","JSON","parse","stringify","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","createSpanElement","elementWidth","clientWidth","paddingRight","dropIcon","marginRight","setPlaceholderSize","validateValues","sort","newVal","oldVal","initStatus","updateTempValue","getPagingCount","collection","focusInHandler","showDelimWrapper","viewWrapper","delimiterWrapper","hideDelimWrapper","size","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","onKeyDown","altKey","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","limit","selectAllItem","selectedElem","addChipSelection","moveByTop","updateCheck","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","element_1","val_1","removeIndex","hideElement","targetEle_1","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","isServerRendered","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","multiCompiler","multiselectTemplate","title","setClass","classes","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","unwireScrollEvents","checkboxFilterInput","wireScrollEvents","onListMouseDown","textVal","delim","listValue","updateWrapperText","addValidInputClass","removeListSelection","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","data_1","selectItems","mainlist","addListHover","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","checked","unChecked","groupHeader","filterClear","CLOSEICON_CLASS","wrapperType","wrapperData","SanitizeHtmlHelper","sanitize","raminElement","remainCompildTemp","checkClearIconWidth","totalWidth","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","index_1","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","map","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","styles","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","opt","checkAutoFocus","CheckBoxSelection","parent","activeLi","activeEle","removeEventListener","addEventListener","isDestroyed","on","listSelection","setSelectAll","setDeviceSearchBox","getFocus","setReorder","getActiveList","checboxCreate","setPopupFullScreen","off","checkboxEle","checkboxWrapper","validateCheckNode","checkWrap","isCheck","isPrevent","templateName","activeLiCount","remLi","ulEle","SelectionSettings","ToolbarSettings","ListBox","isDataSourceUpdate","ListBox_1","inputString","initLoad","isCustomFiltering","initialSelectedOptions","initWrapper","hiddenSelect","aria-multiselectable","selectionSettings","updateSelectionSettings","showCheckbox","l10nSelect","checkBoxSelectionModule","initDraggable","allowDragAndDrop","Sortable","scope","itemClass","dragStart","triggerDragStart","drag","triggerDrag","beforeDrop","beforeDragEnd","drop","dragEnd","placeHolder","helper","sender","refEle","getZindexPartial","jsonData","initToolbar","pos","toolbarSettings","prevScope","toolElem","createButtons","updateToolBarState","tBListBox","getComponent","getElementById","btn","moveTo","moveFrom","moveAllTo","moveAllFrom","Button","required","setHeight","spinner","refreshClearIcon","KeyUp","listBoxClasses","searchEle","noRecElem","filterWireEvents","initToolbarAndStyles","setCheckboxPosition","setFiltering","filterElem","txtLength","badge","getDragArgs","dragSelected","isIos","overflow","dragEventArgs","allowDragAll","scrollParent","boundRect","y","pageY","listObj","dragValue","droppedElement","getDataByValues","liColl","droppedData","selectedOptions","dropValue","getArgs","sourceArgs","previousData","destArgs","dragArgs","source","previousIndex","currentIndex","sourceArgs1","currentData","destination","ul_1","toSortIdx_1","toIdx_1","getCurIdx","rIdx","jsonIdx","sIdx","idx","jsonIdx_1","sIdx_1","li_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","updateSelectedOptions","addItems","removeItems","removeItem","dupData","itemIdx","removeIdxes","removeLiIdxes","k","updateLiCollection","getElemByValue","getSelectedItems","moveUpDown","targetId","tlistbox","getScopedListBox","moveData","moveAllData","getDataList","getSortedList","sortData","liEle","getElementsByTagName","dataValue1","this_2","dataValue2","triggerChange","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","tempItems","reverse","jsonToIdx","fListBox","tListBox","dataIdx","tListData","tSortData","fliCollections","dataLiIdx","tliCollections","isRefresh","rLiCollection_1","n1","n2","toColl","tJsonData","selectNextList","inst","liIdx","childCnt","validIdx","getValidIndex","Number","fromIdx","toIdx","cbox","getGrabbedItems","grabbItems","isDragEnd","stopPropagation","code","upDownKeyHandler","ul","fliIdx","fli","cli","selectedidx","sidx","eidx","eventArgsData_1","cul","updateSelectTag","clearSelection","dvalue_1","isText","liselect","getSelectTag","checkDisabledState","listObj_1","wrap_1","listWrap","checkboxPosition","liCollLen","l10nShow","l10nSel","Mention","suffixText","allowSpaces","mentionChar","showMentionChar","isListResetted","isCollided","lineBreak","isContentEditable","elementValue","onKeyUp","hideWaitingSpinner","spinnerTemplate","spinnerTemplateElement","showWaitingSpinner","setSpinnerTemplate","rangetextContent","range","getCurrentRange","startContainer","currentRange","getTextRange","lastWordRange","getLastLetter","Regex","charRegex","isMatchedText","charAt","substring","lastIndexOf","charCodeAt","isMatched","ownerDocument","getSelection","getRangeAt","setDataIndex","workingNodeContent","selectStartOffset","startOffset","component","startPos","words","nodeName","popupEle_1","coordinates_1","initializePopup","getTriggerCharPosition","getCoordinates","cssText","coordinates","mostRecentTriggerCharPos","actionOnScroll","div","span","globalRange","computed","rect","selectedNodePosition","createRange","setStart","setEnd","collapse","doc","windowLeft","pageXOffset","scrollLeft","clientLeft","windowTop","pageYOffset","clientTop","fontSize","offsetLeft","selectLi","displayTemplate","updateMentionValue","setDisplayTemplate","textSuffix","endPos","mentionVal","endOffset","deleteContents","frag","createDocumentFragment","lastNode","insertNode","cloneRange","setStartAfter","removeAllRanges","addRange","myField","currentTriggerSnippet","showChar","displayTempElement","displayCompTemp","renderTemplates","callBack","spinnerCompTemp","detachMentionChanges","positionX","positionY","index.MultiSelect","Inject","index.CheckBoxSelection","index.ListBox"],"mappings":"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mF,UAQ3D6U,EAAala,UAAUkY,eAAiB,SAAU9X,GAC9C,MAAOiG,GAAOrG,UAAUkY,eAAehY,KAAKmF,KAAMjF,IAQtD8Z,EAAala,UAAUyyB,MAAQ,WAC3BptB,KAAKjF,MAAQ,MAEjBoF,GACIe,WAAS,OACV2T,EAAala,UAAW,eAAY,IACvCwF,GACIe,WAAS,SACV2T,EAAala,UAAW,YAAS,IACpCwF,GACIe,YAAS,IACV2T,EAAala,UAAW,cAAW,IACtCwF,GACIe,YAAS,IACV2T,EAAala,UAAW,wBAAqB,IAChDwF,GACIe,WAAS,UACV2T,EAAala,UAAW,kBAAe,IAC1CwF,GACIe,WAAS,SACV2T,EAAala,UAAW,iBAAc,IACzCwF,GACIe,WAAS,OACV2T,EAAala,UAAW,kBAAe,IAC1CwF,GACIe,WAAS,OACV2T,EAAala,UAAW,2BAAwB,IACnDwF,GACIe,gBACD2T,EAAala,UAAW,qBAAkB,IAC7CwF,GACIe,WAAS,OACV2T,EAAala,UAAW,YAAS,IACpCwF,GACIe,WAAS,OACV2T,EAAala,UAAW,oBAAiB,IAC5CwF,GACIe,WAAS,OACV2T,EAAala,UAAW,qBAAkB,IAC7CwF,GACIe,WAAS,OACV2T,EAAala,UAAW,qBAAkB,IAC7CwF,GACIe,YAAS,IACV2T,EAAala,UAAW,qBAAkB,IAC7CwF,GACIe,YAAS,IACV2T,EAAala,UAAW,eAAY,IACvCwF,GACIe,WAAS,OACV2T,EAAala,UAAW,WAAQ,IACnCwF,GACIe,WAAS,OACV2T,EAAala,UAAW,YAAS,IACpCwF,GACIe,WAAS,OACV2T,EAAala,UAAW,YAAS,IACpCwF,GACIe,WAAS,UACV2T,EAAala,UAAW,qBAAkB,IAC7CwF,GACIe,YAAS,IACV2T,EAAala,UAAW,sBAAmB,IAC9CwF,GACIgT,WACD0B,EAAala,UAAW,gBAAa,IACxCwF,GACIgT,WACD0B,EAAala,UAAW,aAAU,IACrCwF,GACIgT,WACD0B,EAAala,UAAW,iBAAc,IACzCwF,GACIgT,WACD0B,EAAala,UAAW,WAAQ,IACnCwF,GACIgT,WACD0B,EAAala,U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"}
|