@syncfusion/ej2-lists 33.1.47 → 34.1.29
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/dist/ej2-lists.min.js +2 -2
- package/dist/ej2-lists.umd.min.js +2 -2
- package/dist/ej2-lists.umd.min.js.map +1 -1
- package/dist/es6/ej2-lists.es2015.js +8 -4
- package/dist/es6/ej2-lists.es2015.js.map +1 -1
- package/dist/es6/ej2-lists.es5.js +8 -4
- package/dist/es6/ej2-lists.es5.js.map +1 -1
- package/dist/global/ej2-lists.min.js +2 -2
- package/dist/global/ej2-lists.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +5 -5
- package/src/list-view/virtualization.js +3 -0
- package/src/sortable/sortable.js +5 -4
- package/styles/bds-lite.css +3 -30
- package/styles/bds-lite.scss +2 -3
- package/styles/bds.css +9 -47
- package/styles/bds.scss +3 -4
- package/styles/bootstrap-dark-lite.css +4 -3
- package/styles/bootstrap-dark-lite.scss +2 -3
- package/styles/bootstrap-dark.css +4 -3
- package/styles/bootstrap-dark.scss +3 -4
- package/styles/bootstrap-lite.css +4 -3
- package/styles/bootstrap-lite.scss +2 -3
- package/styles/bootstrap.css +4 -3
- package/styles/bootstrap.scss +3 -4
- package/styles/bootstrap4-lite.css +4 -3
- package/styles/bootstrap4-lite.scss +2 -3
- package/styles/bootstrap4.css +10 -6
- package/styles/bootstrap4.scss +3 -4
- package/styles/bootstrap5-dark-lite.css +4 -2
- package/styles/bootstrap5-dark-lite.scss +2 -3
- package/styles/bootstrap5-dark.css +4 -2
- package/styles/bootstrap5-dark.scss +3 -4
- package/styles/bootstrap5-lite.css +4 -3
- package/styles/bootstrap5-lite.scss +2 -4
- package/styles/bootstrap5.3-lite.css +4 -171
- package/styles/bootstrap5.3-lite.scss +2 -4
- package/styles/bootstrap5.3.css +4 -255
- package/styles/bootstrap5.3.scss +3 -5
- package/styles/bootstrap5.css +4 -3
- package/styles/bootstrap5.scss +3 -5
- package/styles/fabric-dark-lite.css +4 -3
- package/styles/fabric-dark-lite.scss +2 -4
- package/styles/fabric-dark.css +4 -3
- package/styles/fabric-dark.scss +3 -5
- package/styles/fabric-lite.css +4 -3
- package/styles/fabric-lite.scss +2 -4
- package/styles/fabric.css +4 -3
- package/styles/fabric.scss +3 -5
- package/styles/fluent-dark-lite.css +3 -1
- package/styles/fluent-dark-lite.scss +2 -4
- package/styles/fluent-dark.css +9 -4
- package/styles/fluent-dark.scss +3 -5
- package/styles/fluent-lite.css +190 -2
- package/styles/fluent-lite.scss +2 -4
- package/styles/fluent.css +196 -5
- package/styles/fluent.scss +3 -5
- package/styles/fluent2-lite.css +3 -174
- package/styles/fluent2-lite.scss +2 -4
- package/styles/fluent2.css +3 -260
- package/styles/fluent2.scss +3 -5
- package/styles/highcontrast-light-lite.css +4 -3
- package/styles/highcontrast-light-lite.scss +2 -4
- package/styles/highcontrast-light.css +4 -3
- package/styles/highcontrast-light.scss +3 -5
- package/styles/highcontrast-lite.css +4 -3
- package/styles/highcontrast-lite.scss +2 -4
- package/styles/highcontrast.css +4 -3
- package/styles/highcontrast.scss +3 -5
- package/styles/list-view/_all.scss +2 -2
- package/styles/list-view/_bds-definition.scss +1 -2
- package/styles/list-view/_bigger.scss +1 -1
- package/styles/list-view/_bootstrap-dark-definition.scss +1 -2
- package/styles/list-view/_bootstrap-definition.scss +2 -2
- package/styles/list-view/_bootstrap4-definition.scss +1 -2
- package/styles/list-view/_bootstrap5-dark-definition.scss +1 -2
- package/styles/list-view/_bootstrap5-definition.scss +1 -2
- package/styles/list-view/_bootstrap5.3-definition.scss +1 -2
- package/styles/list-view/_fabric-dark-definition.scss +1 -2
- package/styles/list-view/_fabric-definition.scss +2 -2
- package/styles/list-view/_fluent-dark-definition.scss +1 -2
- package/styles/list-view/_fluent-definition.scss +1 -2
- package/styles/list-view/_fluent2-definition.scss +1 -2
- package/styles/list-view/_fusionnew-definition.scss +1 -2
- package/styles/list-view/_highcontrast-definition.scss +2 -2
- package/styles/list-view/_highcontrast-light-definition.scss +1 -2
- package/styles/list-view/_layout.scss +1 -1
- package/styles/list-view/_material-dark-definition.scss +1 -2
- package/styles/list-view/_material-definition.scss +2 -2
- package/styles/list-view/_material3-dark-definition.scss +2 -2
- package/styles/list-view/_material3-definition.scss +2 -2
- package/styles/list-view/_tailwind-dark-definition.scss +1 -2
- package/styles/list-view/_tailwind-definition.scss +1 -2
- package/styles/list-view/_tailwind3-definition.scss +1 -2
- package/styles/list-view/_theme.scss +1 -1
- package/styles/list-view/_variables.scss +2 -0
- package/styles/list-view/bds.css +9 -46
- package/styles/list-view/bds.scss +2 -4
- package/styles/list-view/bootstrap-dark.css +4 -2
- package/styles/list-view/bootstrap-dark.scss +2 -4
- package/styles/list-view/bootstrap.css +4 -2
- package/styles/list-view/bootstrap.scss +2 -4
- package/styles/list-view/bootstrap4.css +10 -5
- package/styles/list-view/bootstrap4.scss +2 -4
- package/styles/list-view/bootstrap5-dark.css +4 -2
- package/styles/list-view/bootstrap5-dark.scss +2 -4
- package/styles/list-view/bootstrap5.3.css +4 -254
- package/styles/list-view/bootstrap5.3.scss +2 -4
- package/styles/list-view/bootstrap5.css +4 -2
- package/styles/list-view/bootstrap5.scss +2 -4
- package/styles/list-view/fabric-dark.css +4 -2
- package/styles/list-view/fabric-dark.scss +2 -4
- package/styles/list-view/fabric.css +4 -2
- package/styles/list-view/fabric.scss +2 -4
- package/styles/list-view/fluent-dark.css +9 -4
- package/styles/list-view/fluent-dark.scss +2 -4
- package/styles/list-view/fluent.css +196 -4
- package/styles/list-view/fluent.scss +2 -4
- package/styles/list-view/fluent2.css +3 -259
- package/styles/list-view/fluent2.scss +2 -4
- package/styles/list-view/highcontrast-light.css +4 -2
- package/styles/list-view/highcontrast-light.scss +2 -4
- package/styles/list-view/highcontrast.css +4 -2
- package/styles/list-view/highcontrast.scss +2 -4
- package/styles/list-view/icons/_bds.scss +1 -1
- package/styles/list-view/icons/_bootstrap-dark.scss +1 -2
- package/styles/list-view/icons/_bootstrap.scss +1 -1
- package/styles/list-view/icons/_bootstrap4.scss +1 -1
- package/styles/list-view/icons/_bootstrap5.3.scss +1 -1
- package/styles/list-view/icons/_bootstrap5.scss +1 -1
- package/styles/list-view/icons/_fabric-dark.scss +2 -2
- package/styles/list-view/icons/_fabric.scss +1 -1
- package/styles/list-view/icons/_fluent.scss +1 -1
- package/styles/list-view/icons/_fluent2.scss +1 -1
- package/styles/list-view/icons/_fusionnew.scss +1 -1
- package/styles/list-view/icons/_highcontrast-light.scss +1 -2
- package/styles/list-view/icons/_highcontrast.scss +1 -1
- package/styles/list-view/icons/_material-dark.scss +2 -2
- package/styles/list-view/icons/_material.scss +1 -1
- package/styles/list-view/icons/_material3.scss +1 -1
- package/styles/list-view/icons/_tailwind-dark.scss +1 -1
- package/styles/list-view/icons/_tailwind.scss +1 -1
- package/styles/list-view/icons/_tailwind3.scss +1 -1
- package/styles/list-view/material-dark.css +4 -2
- package/styles/list-view/material-dark.scss +2 -4
- package/styles/list-view/material.css +4 -2
- package/styles/list-view/material.scss +2 -4
- package/styles/list-view/material3-dark.css +3 -331
- package/styles/list-view/material3-dark.scss +2 -4
- package/styles/list-view/material3.css +3 -253
- package/styles/list-view/material3.scss +2 -4
- package/styles/list-view/tailwind-dark.css +9 -4
- package/styles/list-view/tailwind-dark.scss +2 -4
- package/styles/list-view/tailwind.css +9 -4
- package/styles/list-view/tailwind.scss +2 -4
- package/styles/list-view/tailwind3.css +8 -225
- package/styles/list-view/tailwind3.scss +2 -4
- package/styles/material-dark-lite.css +4 -3
- package/styles/material-dark-lite.scss +2 -4
- package/styles/material-dark.css +4 -3
- package/styles/material-dark.scss +3 -5
- package/styles/material-lite.css +4 -3
- package/styles/material-lite.scss +2 -3
- package/styles/material.css +4 -3
- package/styles/material.scss +3 -4
- package/styles/material3-dark-lite.css +3 -331
- package/styles/material3-dark-lite.scss +2 -4
- package/styles/material3-dark.css +3 -413
- package/styles/material3-dark.scss +3 -5
- package/styles/material3-lite.css +3 -170
- package/styles/material3-lite.scss +2 -4
- package/styles/material3.css +3 -254
- package/styles/material3.scss +3 -5
- package/styles/sortable/_all.scss +1 -1
- package/styles/sortable/_bootstrap5-dark-definition.scss +1 -2
- package/styles/sortable/_fluent-dark-definition.scss +1 -2
- package/styles/sortable/_layout.scss +1 -1
- package/styles/sortable/_material3-dark-definition.scss +1 -2
- package/styles/sortable/_tailwind-dark-definition.scss +1 -2
- package/styles/sortable/_variables.scss +2 -0
- package/styles/sortable/bds.css +1 -2
- package/styles/sortable/bds.scss +1 -2
- package/styles/sortable/bootstrap-dark.css +0 -1
- package/styles/sortable/bootstrap-dark.scss +1 -2
- package/styles/sortable/bootstrap.css +0 -1
- package/styles/sortable/bootstrap.scss +1 -2
- package/styles/sortable/bootstrap4.css +0 -1
- package/styles/sortable/bootstrap4.scss +1 -2
- package/styles/sortable/bootstrap5-dark.scss +1 -2
- package/styles/sortable/bootstrap5.3.css +1 -2
- package/styles/sortable/bootstrap5.3.scss +1 -2
- package/styles/sortable/bootstrap5.css +0 -1
- package/styles/sortable/bootstrap5.scss +1 -2
- package/styles/sortable/fabric-dark.css +0 -1
- package/styles/sortable/fabric-dark.scss +1 -2
- package/styles/sortable/fabric.css +0 -1
- package/styles/sortable/fabric.scss +1 -2
- package/styles/sortable/fluent-dark.scss +1 -2
- package/styles/sortable/fluent.css +0 -1
- package/styles/sortable/fluent.scss +1 -2
- package/styles/sortable/fluent2.css +1 -2
- package/styles/sortable/fluent2.scss +1 -2
- package/styles/sortable/highcontrast-light.css +0 -1
- package/styles/sortable/highcontrast-light.scss +1 -2
- package/styles/sortable/highcontrast.css +0 -1
- package/styles/sortable/highcontrast.scss +1 -2
- package/styles/sortable/material-dark.css +0 -1
- package/styles/sortable/material-dark.scss +1 -2
- package/styles/sortable/material.css +0 -1
- package/styles/sortable/material.scss +1 -2
- package/styles/sortable/material3-dark.css +0 -82
- package/styles/sortable/material3-dark.scss +1 -2
- package/styles/sortable/material3.css +1 -2
- package/styles/sortable/material3.scss +1 -2
- package/styles/sortable/tailwind-dark.scss +1 -2
- package/styles/sortable/tailwind.css +0 -1
- package/styles/sortable/tailwind.scss +1 -2
- package/styles/sortable/tailwind3.css +1 -2
- package/styles/sortable/tailwind3.scss +1 -2
- package/styles/tailwind-dark-lite.css +3 -1
- package/styles/tailwind-dark-lite.scss +2 -4
- package/styles/tailwind-dark.css +9 -4
- package/styles/tailwind-dark.scss +3 -5
- package/styles/tailwind-lite.css +3 -2
- package/styles/tailwind-lite.scss +2 -4
- package/styles/tailwind.css +9 -5
- package/styles/tailwind.scss +3 -5
- package/styles/tailwind3-lite.css +4 -151
- package/styles/tailwind3-lite.scss +2 -4
- package/styles/tailwind3.css +8 -226
- package/styles/tailwind3.scss +3 -5
- package/styles/list-view/_all.bds.scss +0 -2
- package/styles/list-view/_all.bootstrap-dark.scss +0 -2
- package/styles/list-view/_all.bootstrap.scss +0 -2
- package/styles/list-view/_all.bootstrap4.scss +0 -2
- package/styles/list-view/_all.bootstrap5-dark.scss +0 -2
- package/styles/list-view/_all.bootstrap5.3.scss +0 -2
- package/styles/list-view/_all.bootstrap5.scss +0 -2
- package/styles/list-view/_all.fabric-dark.scss +0 -2
- package/styles/list-view/_all.fabric.scss +0 -2
- package/styles/list-view/_all.fluent-dark.scss +0 -2
- package/styles/list-view/_all.fluent.scss +0 -1
- package/styles/list-view/_all.fluent2.scss +0 -2
- package/styles/list-view/_all.highcontrast-light.scss +0 -2
- package/styles/list-view/_all.highcontrast.scss +0 -2
- package/styles/list-view/_all.material-dark.scss +0 -2
- package/styles/list-view/_all.material.scss +0 -2
- package/styles/list-view/_all.material3-dark.scss +0 -2
- package/styles/list-view/_all.material3.scss +0 -2
- package/styles/list-view/_all.tailwind-dark.scss +0 -2
- package/styles/list-view/_all.tailwind.scss +0 -2
- package/styles/list-view/_all.tailwind3.scss +0 -2
- package/styles/list-view/_bigger.bds.scss +0 -3
- package/styles/list-view/_bigger.bootstrap-dark.scss +0 -3
- package/styles/list-view/_bigger.bootstrap.scss +0 -3
- package/styles/list-view/_bigger.bootstrap4.scss +0 -3
- package/styles/list-view/_bigger.bootstrap5-dark.scss +0 -3
- package/styles/list-view/_bigger.bootstrap5.3.scss +0 -3
- package/styles/list-view/_bigger.bootstrap5.scss +0 -3
- package/styles/list-view/_bigger.fabric-dark.scss +0 -3
- package/styles/list-view/_bigger.fabric.scss +0 -3
- package/styles/list-view/_bigger.fluent-dark.scss +0 -3
- package/styles/list-view/_bigger.fluent.scss +0 -3
- package/styles/list-view/_bigger.fluent2.scss +0 -3
- package/styles/list-view/_bigger.highcontrast-light.scss +0 -3
- package/styles/list-view/_bigger.highcontrast.scss +0 -3
- package/styles/list-view/_bigger.material-dark.scss +0 -3
- package/styles/list-view/_bigger.material.scss +0 -3
- package/styles/list-view/_bigger.material3-dark.scss +0 -3
- package/styles/list-view/_bigger.material3.scss +0 -3
- package/styles/list-view/_bigger.tailwind-dark.scss +0 -3
- package/styles/list-view/_bigger.tailwind.scss +0 -3
- package/styles/list-view/_bigger.tailwind3.scss +0 -3
- package/styles/list-view/_layout.bds.scss +0 -3
- package/styles/list-view/_layout.bootstrap-dark.scss +0 -3
- package/styles/list-view/_layout.bootstrap.scss +0 -3
- package/styles/list-view/_layout.bootstrap4.scss +0 -3
- package/styles/list-view/_layout.bootstrap5-dark.scss +0 -3
- package/styles/list-view/_layout.bootstrap5.3.scss +0 -3
- package/styles/list-view/_layout.bootstrap5.scss +0 -3
- package/styles/list-view/_layout.fabric-dark.scss +0 -3
- package/styles/list-view/_layout.fabric.scss +0 -3
- package/styles/list-view/_layout.fluent-dark.scss +0 -3
- package/styles/list-view/_layout.fluent.scss +0 -3
- package/styles/list-view/_layout.fluent2.scss +0 -3
- package/styles/list-view/_layout.highcontrast-light.scss +0 -3
- package/styles/list-view/_layout.highcontrast.scss +0 -3
- package/styles/list-view/_layout.material-dark.scss +0 -3
- package/styles/list-view/_layout.material.scss +0 -3
- package/styles/list-view/_layout.material3-dark.scss +0 -3
- package/styles/list-view/_layout.material3.scss +0 -3
- package/styles/list-view/_layout.tailwind-dark.scss +0 -3
- package/styles/list-view/_layout.tailwind.scss +0 -3
- package/styles/list-view/_layout.tailwind3.scss +0 -3
- package/styles/list-view/_theme-variables.bds.scss +0 -1
- package/styles/list-view/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/list-view/_theme-variables.bootstrap.scss +0 -1
- package/styles/list-view/_theme-variables.bootstrap4.scss +0 -1
- package/styles/list-view/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/list-view/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/list-view/_theme-variables.bootstrap5.scss +0 -1
- package/styles/list-view/_theme-variables.fabric-dark.scss +0 -1
- package/styles/list-view/_theme-variables.fabric.scss +0 -1
- package/styles/list-view/_theme-variables.fluent-dark.scss +0 -1
- package/styles/list-view/_theme-variables.fluent.scss +0 -1
- package/styles/list-view/_theme-variables.fluent2.scss +0 -1
- package/styles/list-view/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/list-view/_theme-variables.highcontrast.scss +0 -1
- package/styles/list-view/_theme-variables.material-dark.scss +0 -1
- package/styles/list-view/_theme-variables.material.scss +0 -1
- package/styles/list-view/_theme-variables.material3-dark.scss +0 -1
- package/styles/list-view/_theme-variables.material3.scss +0 -1
- package/styles/list-view/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/list-view/_theme-variables.tailwind.scss +0 -1
- package/styles/list-view/_theme-variables.tailwind3.scss +0 -1
- package/styles/list-view/_theme.bds.scss +0 -4
- package/styles/list-view/_theme.bootstrap-dark.scss +0 -4
- package/styles/list-view/_theme.bootstrap.scss +0 -4
- package/styles/list-view/_theme.bootstrap4.scss +0 -4
- package/styles/list-view/_theme.bootstrap5-dark.scss +0 -4
- package/styles/list-view/_theme.bootstrap5.3.scss +0 -4
- package/styles/list-view/_theme.bootstrap5.scss +0 -4
- package/styles/list-view/_theme.fabric-dark.scss +0 -4
- package/styles/list-view/_theme.fabric.scss +0 -4
- package/styles/list-view/_theme.fluent-dark.scss +0 -4
- package/styles/list-view/_theme.fluent.scss +0 -4
- package/styles/list-view/_theme.fluent2.scss +0 -4
- package/styles/list-view/_theme.highcontrast-light.scss +0 -4
- package/styles/list-view/_theme.highcontrast.scss +0 -4
- package/styles/list-view/_theme.material-dark.scss +0 -4
- package/styles/list-view/_theme.material.scss +0 -4
- package/styles/list-view/_theme.material3-dark.scss +0 -4
- package/styles/list-view/_theme.material3.scss +0 -4
- package/styles/list-view/_theme.tailwind-dark.scss +0 -4
- package/styles/list-view/_theme.tailwind.scss +0 -4
- package/styles/list-view/_theme.tailwind3.scss +0 -4
- package/styles/sortable/_all.bds.scss +0 -1
- package/styles/sortable/_all.bootstrap-dark.scss +0 -1
- package/styles/sortable/_all.bootstrap.scss +0 -1
- package/styles/sortable/_all.bootstrap4.scss +0 -1
- package/styles/sortable/_all.bootstrap5-dark.scss +0 -1
- package/styles/sortable/_all.bootstrap5.3.scss +0 -1
- package/styles/sortable/_all.bootstrap5.scss +0 -1
- package/styles/sortable/_all.fabric-dark.scss +0 -1
- package/styles/sortable/_all.fabric.scss +0 -1
- package/styles/sortable/_all.fluent-dark.scss +0 -1
- package/styles/sortable/_all.fluent.scss +0 -1
- package/styles/sortable/_all.fluent2.scss +0 -1
- package/styles/sortable/_all.highcontrast-light.scss +0 -1
- package/styles/sortable/_all.highcontrast.scss +0 -1
- package/styles/sortable/_all.material-dark.scss +0 -1
- package/styles/sortable/_all.material.scss +0 -1
- package/styles/sortable/_all.material3-dark.scss +0 -1
- package/styles/sortable/_all.material3.scss +0 -1
- package/styles/sortable/_all.tailwind-dark.scss +0 -1
- package/styles/sortable/_all.tailwind.scss +0 -1
- package/styles/sortable/_all.tailwind3.scss +0 -1
- package/styles/sortable/_layout.bds.scss +0 -3
- package/styles/sortable/_layout.bootstrap-dark.scss +0 -3
- package/styles/sortable/_layout.bootstrap.scss +0 -3
- package/styles/sortable/_layout.bootstrap4.scss +0 -3
- package/styles/sortable/_layout.bootstrap5-dark.scss +0 -3
- package/styles/sortable/_layout.bootstrap5.3.scss +0 -3
- package/styles/sortable/_layout.bootstrap5.scss +0 -3
- package/styles/sortable/_layout.fabric-dark.scss +0 -3
- package/styles/sortable/_layout.fabric.scss +0 -3
- package/styles/sortable/_layout.fluent-dark.scss +0 -3
- package/styles/sortable/_layout.fluent.scss +0 -3
- package/styles/sortable/_layout.fluent2.scss +0 -3
- package/styles/sortable/_layout.highcontrast-light.scss +0 -3
- package/styles/sortable/_layout.highcontrast.scss +0 -3
- package/styles/sortable/_layout.material-dark.scss +0 -3
- package/styles/sortable/_layout.material.scss +0 -3
- package/styles/sortable/_layout.material3-dark.scss +0 -3
- package/styles/sortable/_layout.material3.scss +0 -3
- package/styles/sortable/_layout.tailwind-dark.scss +0 -3
- package/styles/sortable/_layout.tailwind.scss +0 -3
- package/styles/sortable/_layout.tailwind3.scss +0 -3
- package/styles/sortable/_theme-variables.bds.scss +0 -1
- package/styles/sortable/_theme-variables.bootstrap-dark.scss +0 -1
- package/styles/sortable/_theme-variables.bootstrap.scss +0 -1
- package/styles/sortable/_theme-variables.bootstrap4.scss +0 -1
- package/styles/sortable/_theme-variables.bootstrap5-dark.scss +0 -1
- package/styles/sortable/_theme-variables.bootstrap5.3.scss +0 -1
- package/styles/sortable/_theme-variables.bootstrap5.scss +0 -1
- package/styles/sortable/_theme-variables.fabric-dark.scss +0 -1
- package/styles/sortable/_theme-variables.fabric.scss +0 -1
- package/styles/sortable/_theme-variables.fluent-dark.scss +0 -1
- package/styles/sortable/_theme-variables.fluent.scss +0 -1
- package/styles/sortable/_theme-variables.fluent2.scss +0 -1
- package/styles/sortable/_theme-variables.highcontrast-light.scss +0 -1
- package/styles/sortable/_theme-variables.highcontrast.scss +0 -1
- package/styles/sortable/_theme-variables.material-dark.scss +0 -1
- package/styles/sortable/_theme-variables.material.scss +0 -1
- package/styles/sortable/_theme-variables.material3-dark.scss +0 -1
- package/styles/sortable/_theme-variables.material3.scss +0 -1
- package/styles/sortable/_theme-variables.tailwind-dark.scss +0 -1
- package/styles/sortable/_theme-variables.tailwind.scss +0 -1
- package/styles/sortable/_theme-variables.tailwind3.scss +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-lists.min.js","sources":["../../src/common/list-base.js","../../src/sortable/sortable.js","../../src/list-view/list-view.js","../../src/list-view/virtualization.js","../../src/global.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n disableHtmlEncode: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (Object.prototype.hasOwnProperty.call(curItem, 'isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.<string, string>} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.<string, string>} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n var array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return Math.floor((1 + array[0] / (0xFFFFFFFF + 1)) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n text = getSanitizedText(text, curOpt);\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li[getDomSetter(curOpt)] = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable, curOpt));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag (<a>) element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation, options) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n var curOpt = extend({}, defaultListBaseOptions, options);\n var safeText = getSanitizedText(text, curOpt);\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n anchorTag[getDomSetter(curOpt)] = safeText;\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(safeText));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)\n ? true : false;\n }\n text = getSanitizedText(text, curOpt);\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledString = compileTemplate(options.template);\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // For spreadsheet comment templates, call the template function directly instead of relying on compiled string.\n if (componentInstance && componentInstance.isInternalTemplate) {\n append(options.template(item), li);\n }\n else {\n var compiledString = compileTemplate(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable, curOpt));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n element[getDomSetter(curOpt)] = text;\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n function getDomSetter(options) {\n return options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n }\n ListBase.getDomSetter = getDomSetter;\n function getSanitizedText(text, options) {\n return options.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n }\n ListBase.getSanitizedText = getSanitizedText;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\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 undefined;\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 { Base, Event, getUniqueID, NotifyPropertyChanges, Property, detach, Browser } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1)) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n _this.removePlaceHolder(newInst);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n _this.removePlaceHolder(_this.getSortableInstance(_this.curTarget));\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n if (isNullOrUndefined(_this.target) && closest(_this.element, '.e-listbox-container') && Browser.isDevice) {\n detach(e.dragElement);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n return;\n }\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_1) >= 1 ? prevIdx - 1 : prevIdx;\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n if (observedArgs.currentIndex > observedArgs.previousIndex) {\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) >= 1 ? prevIdx - 1 : prevIdx;\n }\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n _this.removePlaceHolder(dropInst);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n var sortableTargetElement = _this.getSortableElement(e.target, dropInst);\n if (_this.curTarget === _this.target && sortableTargetElement === _this.curTarget) {\n curIdx = prevIdx;\n }\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((dropInst.element === e.target || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1) || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nr-template') > -1)\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = scrollX ? parseFloat(value.left) - scrollX + \"px\" : value.left;\n value.top = scrollY ? parseFloat(value.top) - scrollY + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.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 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\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 { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer',\n listTemplate: 'e-listview-template'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\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('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.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 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n case 'enabled':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n this.previousScrollTop = this.element.scrollTop;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enabled && this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n if (curOpt.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: ListBase.getSanitizedText(this.headerTitle, curOpt) }, true);\n }\n innerHeaderEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(this.headerTitle, curOpt);\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n textEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(text, curOpt);\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n disableHtmlEncode: this.disableHtmlEncode\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var fieldData_1;\n var checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (this.template && this.element) {\n addClass([this.element], classNames.listTemplate);\n }\n else if (this.template === null && this.element && this.element.classList && this.element.classList.contains('e-listview-template')) {\n removeClass([this.element], classNames.listTemplate);\n }\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e === fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.handleCheckboxState = function (li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, isSetCheckboxLI, textAreaFocus) {\n this.trigger('select', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n if (isSetCheckboxLI ? isCheckedBefore : !isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', isSetCheckboxLI ? (isCheckedBefore ? 'true' : 'false') : (isCheckedBefore ? 'false' : 'true'));\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (isFocusedBefore) {\n li.classList.remove(classNames.focused);\n if (textAreaFocus) {\n textAreaFocus.classList.remove('e-focused');\n }\n }\n }\n });\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.isComponentEnabled && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n ListView.prototype.leaveHandler = function () {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.isComponentEnabled && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n if (!isNullOrUndefined(li)) {\n var cbElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkboxIcon = li.querySelector('.' + classNames.checkboxIcon);\n var isCheckedBefore = checkboxIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkboxIcon, cbElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.isComponentEnabled && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n if (!isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, true, textAreaFocus);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.isComponentEnabled) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n else {\n li.classList.remove(classNames.selected);\n _this.selectedLI = li;\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.isComponentEnabled) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (Object.prototype.hasOwnProperty.call(fieldData, _this.fields.child) &&\n fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[\"\" + column]) &&\n this.fields[\"\" + column] !==\n ListBase.defaultMappedFields[\"\" + column]\n && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, _this);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, _this);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter(function (css) { return css; }) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() ===\n fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !(isNullOrUndefined(index)) && index >= 0 &&\n index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]]\n && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = { originalEvent: e, scrollDirection: 'Bottom', distanceY: this.element.scrollHeight - this.element.scrollTop };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'enabled', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n Object.defineProperty(ListView.prototype, \"isComponentEnabled\", {\n get: function () {\n return this.enabled && this.enable;\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"disableHtmlEncode\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var isRendered = this.listViewInstance.isRendered;\n var firstIndex = isRendered && !isNullOrUndefined(this.uiFirstIndex) && this.uiLastIndex <= Object.keys(curViewDS).length\n ? this.uiFirstIndex : 0;\n var firstDs = curViewDS.slice(firstIndex, firstIndex + 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.updateDOMItemCount();\n var lastIndex = isRendered && !isNullOrUndefined(this.uiLastIndex) && this.listDiff !== 0\n ? this.uiLastIndex : this.domItemCount - 1;\n this.uiFirstIndex = firstIndex;\n this.uiLastIndex = lastIndex;\n var otherDs = curViewDS.slice(firstIndex + 1, lastIndex + 1);\n var listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = isRendered ? this.topElementHeight + 'px' : '0px';\n this.bottomElement.style.height = isRendered ? (this.totalHeight - this.topElementHeight) + 'px' : this.totalHeight + 'px';\n this.topElementHeight = isRendered ? this.topElementHeight : 0;\n this.bottomElementHeight = isRendered ? (this.totalHeight - this.topElementHeight) : this.totalHeight;\n this.listDiff = isRendered && Object.keys(curViewDS).length !== this.domItemCount ? this.listDiff : 0;\n if (isRendered) {\n this.listViewInstance.element.scrollTop = this.listViewInstance.previousScrollTop;\n }\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.updateDOMItemCount = function () {\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n var startingHeight;\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) ?\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var curViewDS = this.listViewInstance.curViewDS[index];\n var iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n fields[_this.listViewInstance.fields.id]\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][\"\" + text]);\n dataCollection.push(curViewDS_2[indexArray[parseInt(i.toString(), 10)]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var _this = this;\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked_1;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked_1 = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked_1 = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs_1;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs_1 = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs_1 = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n if (!isChecked_1) {\n eventArgs_1.isChecked = isChecked_1;\n _this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n eventArgs_1.isChecked = !isChecked_1;\n _this.uiIndices.activeIndices.splice(_this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n }\n });\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.activeIndex = undefined;\n }\n });\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource, index) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index_1 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index_1);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index_1 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index_1;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index_1);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index_2 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index_2);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index_2 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index_2 - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div_1 = document.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n var templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n var nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach(function (ele) {\n div_1.appendChild(ele);\n });\n if (div_1.children && div_1.children[0]) {\n div_1.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].classList.add('e-checkbox-left');\n }\n else {\n div_1.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);\n }\n else {\n div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div_1.children).forEach(function (ele) {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n this.setItemContext(args.item, args.curData, !!args.curData.isHeader);\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n else {\n this.updateUiContent(element, index);\n var curViewDS = this.listViewInstance.curViewDS[index];\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n Virtualization.prototype.onChange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach(function (ele) {\n listElement.appendChild(ele);\n });\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n };\n Virtualization.prototype.setItemContext = function (item, curData, isHeader) {\n var el = item;\n var existing = (el.context || {});\n el.context = __assign({}, existing, { data: curData, nodes: existing.nodes || { flatTemplateNodes: [], groupTemplateNodes: [] }, type: isHeader ? 'groupList' : 'flatList' });\n if (item.firstElementChild) {\n el.context.template = item.firstElementChild;\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import * as index from './index';\nindex.ListView.Inject(index.Virtualization);\nexport * from './index';\n"],"names":["getFieldValues","dataItem","fields","fieldData","isNullOrUndefined","isHeader","_i","_a","Object","keys","length","dataField","value","undefined","getValue","compileTemplate","template","document","querySelector","compile","innerHTML","trim","e","moveTo","from","to","targetIndexes","insertBefore","targetElements","forEach","index","push","children","slice","call","target","appendChild","insertElement_1","li","ul","group","icon","text","check","checked","selected","expanded","textContent","hasChild","level","url","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","ListBase","createList","createElement","dataSource","options","isSingleLevel","componentInstance","curOpt","extend","defaultListBaseOptions","ariaAttributes","defaultAriaAttributes","type","typeofData","typeof","createListFromArray","createListFromJson","generateUL","createListItemFromArray","subChild","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","getModuleName","defaultMappedFields","checkboxElement","anchorElement","child","prototype","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","showIcon","iconCss","itemClass","tooltip","tooltipText","tooltipTextElement","getSanitizedText","innerText","setAttribute","prepend","firstElementChild","classList","add","toString","groupItemRole","itemRole","removeAttribute","htmlAttributes","enabled","isVisible","style","display","imageUrl","attr","src","alt","name","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","processSubChild","addClass","listClass","getSiblingLI","elementArray","element","isPrevious","siblingLI","liIndex","liCollections","Array","indexOf","contains","groupDataSource","sortOrder","curFields","cusQuery","Query","groupBy","ds","getDataSource","addSorting","j","itemObj","items","grpItem","key","newtext","_id","k","sortBy","query","queries","fn","splice","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","elementAttributes","class","split","attributes","nodeName","nodeValue","renderContentTemplate","ulElement","role","compiledString","liCollection","currentID","groupTemplateID","templateID","compiledElement","isStringTemplate","append","renderGroupTemplate","groupTemplate","headerItems","category","headerItems_1","header","headerData","array","Uint32Array","window","crypto","getRandomValues","Math","floor","substring","subDS","hasChildren","subLi","expandCollapse","expandIconPosition","expandIconClass","innerElements","grpLI","elementID","getDomSetter","href","anchorTag","createTextNode","isFullNavigation","safeText","anchorWrapper","uID","isInternalTemplate","innerDiv","wrapperRole","itemText","liElement","listRole","generateIcon","disableHtmlEncode","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","isChecked","headerTemplate","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","this","constructor","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","container","backIcon","backButton","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","listTemplate","FieldSettings","_super","apply","Property","ChildProperty","ListView","_this","previousSelectedItems","hiddenItems","enabledItems","disabledItems","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","previousScrollTop","scrollTop","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerEle","showHeader","innerHeaderEle","setProperties","textEle","outerHTML","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","position","overflow_1","overflow","anim","duration","animation","effect","aniObj","animate","animationMode","timingFunction","easing","end","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","enablePersistence","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","fieldData_1","createCheckBox","frameElement_1","findIndex","checkInternally","checkBoxPosition","virtualCheckBox","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","handleCheckboxState","isCheckedBefore","isFocusedBefore","eventArgs","isSetCheckboxLI","textAreaFocus","observedArgs","cancel","clickHandler","isArray","targetElement","closestElement","back","closest","parentNode","removeFocus","isComponentEnabled","isValidLI","setCheckboxLI","selectEventData","removeHover","removeSelect","setSelectLI","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","getBoundingClientRect","top","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","scroll","pageYOffset","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","cbElement","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","selectedLI","wireEvents","EventHandler","touchModule","Touch","swipe","onListScroll","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","renderSubList","selectedItem","isInteracted","event","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","curDS","getElementUID","parent","resultJSON","some","getQuery","columns","column","select","tableName","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","parseInt","getAttribute","updateDOMItemCount","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","pID","pop","toUL","fromUL","selectItem","unselectItem","uid","selectMultipleItems","getParentId","parentId","getElementsByClassName","tempData","getSelectedItems","finalValue","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","addItemAtIndex","targetUL","addItemIntoDom","addItemInNestedList","newDataSource","itemData","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","li_1","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","scrollDirection","distanceY","scrollHeight","currentScrollTop","getPersistData","addOnPersist","get","enumerable","configurable","Complex","Event","NotifyPropertyChanges","Component","__assign","assign","t","s","n","Virtualization","instance","elementDifference","listViewInstance","templateRef","isVueFunctionTemplate","isVue","wireScrollEvent","isRendered","firstIndex","uiLastIndex","firstDs","expectedDomItemCount","ValidateItemCount","lastIndex","listDiff","domItemCount","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","addEventListener","dataSourceLength","itemCount","parseFloat","round","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","nextSibling","getscrollerHeight","startingHeight","documentElement","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","resutJSON","isChecked_1","isSelected","eventArgs_1","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","scrollTo","increment","ind","index_1","createAndInjectNewItem","index_2","templateData","div_1","commonTemplate","nodes","lastChild","setItemContext","onChange","onNgChange","newData","listElement","virtualThis","resultElement","el","existing","flatTemplateNodes","groupTemplateNodes","Sortable","getHelper","getSortableElement","sender","isValidTarget","helper","offsetWidth","offsetHeight","body","onDrag","newInst","getSortableInstance","curTarget","placeHolder","placeHolderElement","scope","removePlaceHolder","oldIdx","getIndex","getPlaceHolder","newIdx","isPlaceHolderPresent","childElementCount","idx","updateItemClass","droppedElement","previousIndex","currentIndex","inst_1","onDragStart","Browser","isDevice","dragElement","getComponent","intDestroy","cancelDrag","onDragStop","isBlazor","bindEvents","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","sortableTargetElement","beforeDropArgs","Sortable_1","getUniqueID","dataBind","initializeDraggable","Draggable","dragStart","drag","dragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","wrapper","keyDownHandler","unwireEvents","dragWrapper","dragPlaceholder","grabbedElement","compareElementParent","inst","placeHolderPresent","offset","clientY","bottom","cltY","changedTouches","left","scrollX","scrollY","destination","Base","Inject","index.Virtualization"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-lists.min.js","sources":["../../src/common/list-base.js","../../src/sortable/sortable.js","../../src/list-view/list-view.js","../../src/list-view/virtualization.js","../../src/global.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n disableHtmlEncode: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (Object.prototype.hasOwnProperty.call(curItem, 'isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.<string, string>} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.<string, string>} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n var array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return Math.floor((1 + array[0] / (0xFFFFFFFF + 1)) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n text = getSanitizedText(text, curOpt);\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li[getDomSetter(curOpt)] = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable, curOpt));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag (<a>) element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation, options) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n var curOpt = extend({}, defaultListBaseOptions, options);\n var safeText = getSanitizedText(text, curOpt);\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n anchorTag[getDomSetter(curOpt)] = safeText;\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(safeText));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)\n ? true : false;\n }\n text = getSanitizedText(text, curOpt);\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledString = compileTemplate(options.template);\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // For spreadsheet comment templates, call the template function directly instead of relying on compiled string.\n if (componentInstance && componentInstance.isInternalTemplate) {\n append(options.template(item), li);\n }\n else {\n var compiledString = compileTemplate(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable, curOpt));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n element[getDomSetter(curOpt)] = text;\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n function getDomSetter(options) {\n return options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n }\n ListBase.getDomSetter = getDomSetter;\n function getSanitizedText(text, options) {\n return options.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n }\n ListBase.getSanitizedText = getSanitizedText;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\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 undefined;\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 { Base, Event, getUniqueID, NotifyPropertyChanges, Property, detach, Browser } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1)) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n _this.removePlaceHolder(newInst);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n _this.removePlaceHolder(_this.getSortableInstance(_this.curTarget));\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n if (isNullOrUndefined(_this.target) && closest(_this.element, '.e-listbox-container') && Browser.isDevice) {\n detach(e.dragElement);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n return;\n }\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_1) >= 1 ? prevIdx - 1 : prevIdx;\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n if (observedArgs.currentIndex > observedArgs.previousIndex) {\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) >= 1 ? prevIdx - 1 : prevIdx;\n }\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n _this.removePlaceHolder(dropInst);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n var sortableTargetElement = _this.getSortableElement(e.target, dropInst) || e.target.querySelector('.e-grabbed');\n var isDroppedOnContainer = dropInst.element === e.target && !sortableTargetElement;\n if (_this.curTarget === _this.target && sortableTargetElement === _this.curTarget) {\n curIdx = prevIdx;\n }\n if (isDroppedOnContainer || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((isDroppedOnContainer || (typeof sortableTargetElement.className === 'string' && sortableTargetElement.className.indexOf('e-list-nrt') > -1) || (typeof sortableTargetElement.className === 'string' && sortableTargetElement.className.indexOf('e-list-nr-template') > -1)\n || sortableTargetElement.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = scrollX ? parseFloat(value.left) - scrollX + \"px\" : value.left;\n value.top = scrollY ? parseFloat(value.top) - scrollY + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.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 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\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 { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer',\n listTemplate: 'e-listview-template'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\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('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.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 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n case 'enabled':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n this.previousScrollTop = this.element.scrollTop;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enabled && this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n if (curOpt.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: ListBase.getSanitizedText(this.headerTitle, curOpt) }, true);\n }\n innerHeaderEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(this.headerTitle, curOpt);\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n textEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(text, curOpt);\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n disableHtmlEncode: this.disableHtmlEncode\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var fieldData_1;\n var checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (this.template && this.element) {\n addClass([this.element], classNames.listTemplate);\n }\n else if (this.template === null && this.element && this.element.classList && this.element.classList.contains('e-listview-template')) {\n removeClass([this.element], classNames.listTemplate);\n }\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e === fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.handleCheckboxState = function (li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, isSetCheckboxLI, textAreaFocus) {\n this.trigger('select', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n if (isSetCheckboxLI ? isCheckedBefore : !isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', isSetCheckboxLI ? (isCheckedBefore ? 'true' : 'false') : (isCheckedBefore ? 'false' : 'true'));\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (isFocusedBefore) {\n li.classList.remove(classNames.focused);\n if (textAreaFocus) {\n textAreaFocus.classList.remove('e-focused');\n }\n }\n }\n });\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.isComponentEnabled && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n ListView.prototype.leaveHandler = function () {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.isComponentEnabled && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n if (!isNullOrUndefined(li)) {\n var cbElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkboxIcon = li.querySelector('.' + classNames.checkboxIcon);\n var isCheckedBefore = checkboxIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkboxIcon, cbElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.isComponentEnabled && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n if (!isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, true, textAreaFocus);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.isComponentEnabled) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n else {\n li.classList.remove(classNames.selected);\n _this.selectedLI = li;\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.isComponentEnabled) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (Object.prototype.hasOwnProperty.call(fieldData, _this.fields.child) &&\n fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[\"\" + column]) &&\n this.fields[\"\" + column] !==\n ListBase.defaultMappedFields[\"\" + column]\n && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, _this);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, _this);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter(function (css) { return css; }) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() ===\n fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !(isNullOrUndefined(index)) && index >= 0 &&\n index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]]\n && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = { originalEvent: e, scrollDirection: 'Bottom', distanceY: this.element.scrollHeight - this.element.scrollTop };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'enabled', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n Object.defineProperty(ListView.prototype, \"isComponentEnabled\", {\n get: function () {\n return this.enabled && this.enable;\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"disableHtmlEncode\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var isRendered = this.listViewInstance.isRendered;\n var firstIndex = isRendered && !isNullOrUndefined(this.uiFirstIndex) && this.uiLastIndex <= Object.keys(curViewDS).length\n ? this.uiFirstIndex : 0;\n var firstDs = curViewDS.slice(firstIndex, firstIndex + 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.updateDOMItemCount();\n var lastIndex = isRendered && !isNullOrUndefined(this.uiLastIndex) && this.listDiff !== 0\n ? this.uiLastIndex : this.domItemCount - 1;\n this.uiFirstIndex = firstIndex;\n this.uiLastIndex = lastIndex;\n var otherDs = curViewDS.slice(firstIndex + 1, lastIndex + 1);\n var listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = isRendered ? this.topElementHeight + 'px' : '0px';\n this.bottomElement.style.height = isRendered ? (this.totalHeight - this.topElementHeight) + 'px' : this.totalHeight + 'px';\n this.topElementHeight = isRendered ? this.topElementHeight : 0;\n this.bottomElementHeight = isRendered ? (this.totalHeight - this.topElementHeight) : this.totalHeight;\n this.listDiff = isRendered && Object.keys(curViewDS).length !== this.domItemCount ? this.listDiff : 0;\n if (isRendered) {\n this.listViewInstance.element.scrollTop = this.listViewInstance.previousScrollTop;\n }\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.updateDOMItemCount = function () {\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n var startingHeight;\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) ?\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var curViewDS = this.listViewInstance.curViewDS[index];\n var iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n fields[_this.listViewInstance.fields.id]\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][\"\" + text]);\n dataCollection.push(curViewDS_2[indexArray[parseInt(i.toString(), 10)]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var _this = this;\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked_1;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked_1 = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked_1 = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs_1;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs_1 = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs_1 = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n if (!isChecked_1) {\n eventArgs_1.isChecked = isChecked_1;\n _this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n eventArgs_1.isChecked = !isChecked_1;\n _this.uiIndices.activeIndices.splice(_this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n }\n });\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.activeIndex = undefined;\n }\n });\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource, index) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index_1 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index_1);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index_1 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index_1;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index_1);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index_2 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index_2);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index_2 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index_2 - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div_1 = document.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n var templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n var nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach(function (ele) {\n div_1.appendChild(ele);\n });\n if (div_1.children && div_1.children[0]) {\n div_1.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].classList.add('e-checkbox-left');\n }\n else {\n div_1.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);\n }\n else {\n div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div_1.children).forEach(function (ele) {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n this.setItemContext(args.item, args.curData, !!args.curData.isHeader);\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n if (isNullOrUndefined(curViewDS)) {\n return;\n }\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n else {\n this.updateUiContent(element, index);\n var curViewDS = this.listViewInstance.curViewDS[index];\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n Virtualization.prototype.onChange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach(function (ele) {\n listElement.appendChild(ele);\n });\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n };\n Virtualization.prototype.setItemContext = function (item, curData, isHeader) {\n var el = item;\n var existing = (el.context || {});\n el.context = __assign({}, existing, { data: curData, nodes: existing.nodes || { flatTemplateNodes: [], groupTemplateNodes: [] }, type: isHeader ? 'groupList' : 'flatList' });\n if (item.firstElementChild) {\n el.context.template = item.firstElementChild;\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","import * as index from './index';\nindex.ListView.Inject(index.Virtualization);\nexport * from './index';\n"],"names":["getFieldValues","dataItem","fields","fieldData","isNullOrUndefined","isHeader","_i","_a","Object","keys","length","dataField","value","undefined","getValue","compileTemplate","template","document","querySelector","compile","innerHTML","trim","e","moveTo","from","to","targetIndexes","insertBefore","targetElements","forEach","index","push","children","slice","call","target","appendChild","insertElement_1","li","ul","group","icon","text","check","checked","selected","expanded","textContent","hasChild","level","url","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","ListBase","createList","createElement","dataSource","options","isSingleLevel","componentInstance","curOpt","extend","defaultListBaseOptions","ariaAttributes","defaultAriaAttributes","type","typeofData","typeof","createListFromArray","createListFromJson","generateUL","createListItemFromArray","subChild","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","getModuleName","defaultMappedFields","checkboxElement","anchorElement","child","prototype","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","showIcon","iconCss","itemClass","tooltip","tooltipText","tooltipTextElement","getSanitizedText","innerText","setAttribute","prepend","firstElementChild","classList","add","toString","groupItemRole","itemRole","removeAttribute","htmlAttributes","enabled","isVisible","style","display","imageUrl","attr","src","alt","name","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","processSubChild","addClass","listClass","getSiblingLI","elementArray","element","isPrevious","siblingLI","liIndex","liCollections","Array","indexOf","contains","groupDataSource","sortOrder","curFields","cusQuery","Query","groupBy","ds","getDataSource","addSorting","j","itemObj","items","grpItem","key","newtext","_id","k","sortBy","query","queries","fn","splice","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","elementAttributes","class","split","attributes","nodeName","nodeValue","renderContentTemplate","ulElement","role","compiledString","liCollection","currentID","groupTemplateID","templateID","compiledElement","isStringTemplate","append","renderGroupTemplate","groupTemplate","headerItems","category","headerItems_1","header","headerData","array","Uint32Array","window","crypto","getRandomValues","Math","floor","substring","subDS","hasChildren","subLi","expandCollapse","expandIconPosition","expandIconClass","innerElements","grpLI","elementID","getDomSetter","href","anchorTag","createTextNode","isFullNavigation","safeText","anchorWrapper","uID","isInternalTemplate","innerDiv","wrapperRole","itemText","liElement","listRole","generateIcon","disableHtmlEncode","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","isChecked","headerTemplate","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","this","constructor","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","container","backIcon","backButton","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","listTemplate","FieldSettings","_super","apply","Property","ChildProperty","ListView","_this","previousSelectedItems","hiddenItems","enabledItems","disabledItems","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","previousScrollTop","scrollTop","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerEle","showHeader","innerHeaderEle","setProperties","textEle","outerHTML","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","position","overflow_1","overflow","anim","duration","animation","effect","aniObj","animate","animationMode","timingFunction","easing","end","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","enablePersistence","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","fieldData_1","createCheckBox","frameElement_1","findIndex","checkInternally","checkBoxPosition","virtualCheckBox","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","handleCheckboxState","isCheckedBefore","isFocusedBefore","eventArgs","isSetCheckboxLI","textAreaFocus","observedArgs","cancel","clickHandler","isArray","targetElement","closestElement","back","closest","parentNode","removeFocus","isComponentEnabled","isValidLI","setCheckboxLI","selectEventData","removeHover","removeSelect","setSelectLI","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","getBoundingClientRect","top","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","scroll","pageYOffset","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","cbElement","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","selectedLI","wireEvents","EventHandler","touchModule","Touch","swipe","onListScroll","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","renderSubList","selectedItem","isInteracted","event","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","curDS","getElementUID","parent","resultJSON","some","getQuery","columns","column","select","tableName","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","parseInt","getAttribute","updateDOMItemCount","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","pID","pop","toUL","fromUL","selectItem","unselectItem","uid","selectMultipleItems","getParentId","parentId","getElementsByClassName","tempData","getSelectedItems","finalValue","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","addItemAtIndex","targetUL","addItemIntoDom","addItemInNestedList","newDataSource","itemData","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","li_1","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","scrollDirection","distanceY","scrollHeight","currentScrollTop","getPersistData","addOnPersist","get","enumerable","configurable","Complex","Event","NotifyPropertyChanges","Component","__assign","assign","t","s","n","Virtualization","instance","elementDifference","listViewInstance","templateRef","isVueFunctionTemplate","isVue","wireScrollEvent","isRendered","firstIndex","uiLastIndex","firstDs","expectedDomItemCount","ValidateItemCount","lastIndex","listDiff","domItemCount","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","addEventListener","dataSourceLength","itemCount","parseFloat","round","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","nextSibling","getscrollerHeight","startingHeight","documentElement","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","resutJSON","isChecked_1","isSelected","eventArgs_1","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","scrollTo","increment","ind","index_1","createAndInjectNewItem","index_2","templateData","div_1","commonTemplate","nodes","lastChild","setItemContext","onChange","onNgChange","newData","listElement","virtualThis","resultElement","el","existing","flatTemplateNodes","groupTemplateNodes","Sortable","getHelper","getSortableElement","sender","isValidTarget","helper","offsetWidth","offsetHeight","body","onDrag","newInst","getSortableInstance","curTarget","placeHolder","placeHolderElement","scope","removePlaceHolder","oldIdx","getIndex","getPlaceHolder","newIdx","isPlaceHolderPresent","childElementCount","idx","updateItemClass","droppedElement","previousIndex","currentIndex","inst_1","onDragStart","Browser","isDevice","dragElement","getComponent","intDestroy","cancelDrag","onDragStop","isBlazor","bindEvents","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","sortableTargetElement","isDroppedOnContainer","beforeDropArgs","Sortable_1","getUniqueID","dataBind","initializeDraggable","Draggable","dragStart","drag","dragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","wrapper","keyDownHandler","unwireEvents","dragWrapper","dragPlaceholder","grabbedElement","compareElementParent","inst","placeHolderPresent","offset","clientY","bottom","cltY","changedTouches","left","scrollX","scrollY","destination","Base","Inject","index.Virtualization"],"mappings":"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"}
|