@syncfusion/ej2-dropdowns 20.4.52 → 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 -2063
- 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 +66 -53
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +184 -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/common/incremental-search.js +1 -1
- 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 -4
- package/src/drop-down-list/drop-down-list.js +34 -21
- package/src/drop-down-tree/drop-down-tree-model.d.ts +445 -445
- package/src/drop-down-tree/drop-down-tree.js +21 -22
- 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 +20 -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] || 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.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)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\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.checkedNodes = [];\n this.treeObj.dataBind();\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.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","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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OrG,UAAUkY,eAAehY,KAAKmF,KAAMjF,IAQtD8Z,EAAala,UAAUwyB,MAAQ,WAC3BntB,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,UAAW,YAAS,IACpCwF,GACIgT,WACD0B,EAAala,UAAW,WAAQ,IACnCw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"}
|