@syncfusion/ej2-lists 31.2.12 → 32.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/README.md +1 -1
  2. package/aceconfig.js +17 -0
  3. package/dist/ej2-lists.min.js +2 -2
  4. package/dist/ej2-lists.umd.min.js +2 -2
  5. package/dist/ej2-lists.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-lists.es2015.js +23 -2
  7. package/dist/es6/ej2-lists.es2015.js.map +1 -1
  8. package/dist/es6/ej2-lists.es5.js +34 -2
  9. package/dist/es6/ej2-lists.es5.js.map +1 -1
  10. package/dist/global/ej2-lists.min.js +2 -2
  11. package/dist/global/ej2-lists.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/package.json +5 -5
  14. package/src/common/list-base.js +9 -2
  15. package/src/list-view/virtualization.d.ts +1 -0
  16. package/src/list-view/virtualization.js +25 -0
  17. package/styles/bds-lite.scss +6 -7
  18. package/styles/bds.css +2 -2
  19. package/styles/bds.scss +7 -8
  20. package/styles/bootstrap-dark-lite.scss +6 -7
  21. package/styles/bootstrap-dark.scss +7 -8
  22. package/styles/bootstrap-lite.scss +6 -7
  23. package/styles/bootstrap.scss +7 -8
  24. package/styles/bootstrap4-lite.scss +6 -7
  25. package/styles/bootstrap4.scss +7 -8
  26. package/styles/bootstrap5-dark-lite.css +0 -1
  27. package/styles/bootstrap5-dark-lite.scss +6 -7
  28. package/styles/bootstrap5-dark.css +0 -1
  29. package/styles/bootstrap5-dark.scss +7 -8
  30. package/styles/bootstrap5-lite.scss +7 -7
  31. package/styles/bootstrap5.3-lite.css +83 -3
  32. package/styles/bootstrap5.3-lite.scss +7 -7
  33. package/styles/bootstrap5.3.css +83 -3
  34. package/styles/bootstrap5.3.scss +8 -8
  35. package/styles/bootstrap5.scss +8 -8
  36. package/styles/fabric-dark-lite.scss +7 -7
  37. package/styles/fabric-dark.scss +8 -8
  38. package/styles/fabric-lite.scss +7 -7
  39. package/styles/fabric.scss +8 -8
  40. package/styles/fluent-dark-lite.css +0 -1
  41. package/styles/fluent-dark-lite.scss +7 -7
  42. package/styles/fluent-dark.css +0 -1
  43. package/styles/fluent-dark.scss +8 -8
  44. package/styles/fluent-lite.scss +7 -7
  45. package/styles/fluent.scss +8 -8
  46. package/styles/fluent2-lite.css +84 -4
  47. package/styles/fluent2-lite.scss +7 -7
  48. package/styles/fluent2.css +86 -6
  49. package/styles/fluent2.scss +8 -8
  50. package/styles/highcontrast-light-lite.scss +7 -7
  51. package/styles/highcontrast-light.scss +8 -8
  52. package/styles/highcontrast-lite.scss +7 -7
  53. package/styles/highcontrast.scss +8 -8
  54. package/styles/list-view/_all.scss +2 -2
  55. package/styles/list-view/_bds-definition.scss +24 -0
  56. package/styles/list-view/_bigger.scss +17 -15
  57. package/styles/list-view/_bootstrap-dark-definition.scss +19 -0
  58. package/styles/list-view/_bootstrap-definition.scss +19 -0
  59. package/styles/list-view/_bootstrap4-definition.scss +20 -0
  60. package/styles/list-view/_bootstrap5-dark-definition.scss +154 -1
  61. package/styles/list-view/_bootstrap5-definition.scss +22 -0
  62. package/styles/list-view/_bootstrap5.3-definition.scss +22 -2
  63. package/styles/list-view/_fabric-dark-definition.scss +20 -0
  64. package/styles/list-view/_fabric-definition.scss +19 -0
  65. package/styles/list-view/_fluent-dark-definition.scss +159 -1
  66. package/styles/list-view/_fluent-definition.scss +21 -0
  67. package/styles/list-view/_fluent2-definition.scss +26 -3
  68. package/styles/list-view/_fusionnew-definition.scss +20 -0
  69. package/styles/list-view/_highcontrast-definition.scss +19 -0
  70. package/styles/list-view/_highcontrast-light-definition.scss +20 -0
  71. package/styles/list-view/_layout.scss +24 -22
  72. package/styles/list-view/_material-dark-definition.scss +20 -0
  73. package/styles/list-view/_material-definition.scss +19 -0
  74. package/styles/list-view/_material3-dark-definition.scss +146 -1
  75. package/styles/list-view/_material3-definition.scss +26 -7
  76. package/styles/list-view/_tailwind-dark-definition.scss +147 -1
  77. package/styles/list-view/_tailwind-definition.scss +23 -0
  78. package/styles/list-view/_tailwind3-definition.scss +33 -1
  79. package/styles/list-view/_theme-variables.scss +1 -0
  80. package/styles/list-view/_theme.scss +17 -15
  81. package/styles/list-view/bds.css +2 -2
  82. package/styles/list-view/bds.scss +6 -6
  83. package/styles/list-view/bootstrap-dark.scss +6 -6
  84. package/styles/list-view/bootstrap.scss +6 -6
  85. package/styles/list-view/bootstrap4.scss +6 -6
  86. package/styles/list-view/bootstrap5-dark.scss +6 -6
  87. package/styles/list-view/bootstrap5.3.css +83 -3
  88. package/styles/list-view/bootstrap5.3.scss +6 -6
  89. package/styles/list-view/bootstrap5.scss +6 -6
  90. package/styles/list-view/fabric-dark.scss +6 -6
  91. package/styles/list-view/fabric.scss +6 -6
  92. package/styles/list-view/fluent-dark.scss +6 -6
  93. package/styles/list-view/fluent.scss +6 -6
  94. package/styles/list-view/fluent2.css +86 -6
  95. package/styles/list-view/fluent2.scss +6 -6
  96. package/styles/list-view/highcontrast-light.scss +6 -6
  97. package/styles/list-view/highcontrast.scss +6 -6
  98. package/styles/list-view/icons/_bds.scss +2 -0
  99. package/styles/list-view/icons/_bootstrap-dark.scss +2 -0
  100. package/styles/list-view/icons/_bootstrap.scss +2 -0
  101. package/styles/list-view/icons/_bootstrap4.scss +2 -0
  102. package/styles/list-view/icons/_bootstrap5-dark.scss +1 -1
  103. package/styles/list-view/icons/_bootstrap5.3.scss +2 -0
  104. package/styles/list-view/icons/_bootstrap5.scss +2 -0
  105. package/styles/list-view/icons/_fabric-dark.scss +2 -0
  106. package/styles/list-view/icons/_fabric.scss +2 -0
  107. package/styles/list-view/icons/_fluent-dark.scss +1 -1
  108. package/styles/list-view/icons/_fluent.scss +2 -0
  109. package/styles/list-view/icons/_fluent2.scss +2 -0
  110. package/styles/list-view/icons/_fusionnew.scss +2 -0
  111. package/styles/list-view/icons/_highcontrast-light.scss +2 -0
  112. package/styles/list-view/icons/_highcontrast.scss +2 -0
  113. package/styles/list-view/icons/_material-dark.scss +2 -0
  114. package/styles/list-view/icons/_material.scss +2 -0
  115. package/styles/list-view/icons/_material3-dark.scss +1 -1
  116. package/styles/list-view/icons/_material3.scss +2 -0
  117. package/styles/list-view/icons/_tailwind-dark.scss +2 -0
  118. package/styles/list-view/icons/_tailwind.scss +2 -0
  119. package/styles/list-view/icons/_tailwind3.scss +2 -0
  120. package/styles/list-view/material-dark.scss +6 -6
  121. package/styles/list-view/material.scss +6 -6
  122. package/styles/list-view/material3-dark.css +168 -4
  123. package/styles/list-view/material3-dark.scss +6 -7
  124. package/styles/list-view/material3.css +84 -4
  125. package/styles/list-view/material3.scss +6 -7
  126. package/styles/list-view/tailwind-dark.css +2 -2
  127. package/styles/list-view/tailwind-dark.scss +6 -6
  128. package/styles/list-view/tailwind.css +2 -2
  129. package/styles/list-view/tailwind.scss +6 -6
  130. package/styles/list-view/tailwind3.css +75 -5
  131. package/styles/list-view/tailwind3.scss +6 -6
  132. package/styles/material-dark-lite.scss +7 -7
  133. package/styles/material-dark.scss +8 -8
  134. package/styles/material-lite.scss +6 -7
  135. package/styles/material.scss +7 -8
  136. package/styles/material3-dark-lite.css +167 -4
  137. package/styles/material3-dark-lite.scss +7 -7
  138. package/styles/material3-dark.css +168 -5
  139. package/styles/material3-dark.scss +8 -10
  140. package/styles/material3-lite.css +83 -3
  141. package/styles/material3-lite.scss +7 -7
  142. package/styles/material3.css +84 -4
  143. package/styles/material3.scss +8 -10
  144. package/styles/sortable/_all.scss +1 -1
  145. package/styles/sortable/_bootstrap5-dark-definition.scss +2 -1
  146. package/styles/sortable/_fluent-dark-definition.scss +2 -1
  147. package/styles/sortable/_layout.scss +3 -1
  148. package/styles/sortable/_material3-dark-definition.scss +2 -1
  149. package/styles/sortable/_tailwind-dark-definition.scss +2 -1
  150. package/styles/sortable/_theme-variables.scss +1 -0
  151. package/styles/sortable/bds.scss +3 -3
  152. package/styles/sortable/bootstrap-dark.scss +3 -3
  153. package/styles/sortable/bootstrap.scss +3 -3
  154. package/styles/sortable/bootstrap4.scss +3 -3
  155. package/styles/sortable/bootstrap5-dark.css +0 -1
  156. package/styles/sortable/bootstrap5-dark.scss +3 -3
  157. package/styles/sortable/bootstrap5.3.css +80 -0
  158. package/styles/sortable/bootstrap5.3.scss +3 -3
  159. package/styles/sortable/bootstrap5.scss +3 -3
  160. package/styles/sortable/fabric-dark.scss +3 -3
  161. package/styles/sortable/fabric.scss +3 -3
  162. package/styles/sortable/fluent-dark.css +0 -1
  163. package/styles/sortable/fluent-dark.scss +3 -3
  164. package/styles/sortable/fluent.scss +3 -3
  165. package/styles/sortable/fluent2.css +80 -0
  166. package/styles/sortable/fluent2.scss +3 -3
  167. package/styles/sortable/highcontrast-light.scss +3 -3
  168. package/styles/sortable/highcontrast.scss +3 -3
  169. package/styles/sortable/material-dark.scss +3 -3
  170. package/styles/sortable/material.scss +3 -3
  171. package/styles/sortable/material3-dark.css +80 -1
  172. package/styles/sortable/material3-dark.scss +3 -4
  173. package/styles/sortable/material3.css +80 -0
  174. package/styles/sortable/material3.scss +3 -4
  175. package/styles/sortable/tailwind-dark.css +0 -1
  176. package/styles/sortable/tailwind-dark.scss +3 -3
  177. package/styles/sortable/tailwind.scss +3 -3
  178. package/styles/sortable/tailwind3.css +70 -0
  179. package/styles/sortable/tailwind3.scss +3 -3
  180. package/styles/tailwind-dark-lite.css +0 -1
  181. package/styles/tailwind-dark-lite.scss +7 -7
  182. package/styles/tailwind-dark.css +2 -3
  183. package/styles/tailwind-dark.scss +8 -8
  184. package/styles/tailwind-lite.scss +7 -7
  185. package/styles/tailwind.css +2 -2
  186. package/styles/tailwind.scss +8 -8
  187. package/styles/tailwind3-lite.css +74 -4
  188. package/styles/tailwind3-lite.scss +7 -7
  189. package/styles/tailwind3.css +75 -5
  190. package/styles/tailwind3.scss +8 -8
@@ -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 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 if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\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 if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\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 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 (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n if (grpLI) {\n li.innerText = 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));\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 * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\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 if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\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(text));\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 if (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\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 var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\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 append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\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));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\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})(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 if (_this.curTarget === _this.target && e.target === _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 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.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 if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n innerHeaderEle.innerText = this.headerTitle;\n }\n else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\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 if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\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 };\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.enable && 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.enable && 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.enable && 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.enable) {\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.enable) {\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', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\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([])\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('')\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","import { 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 };\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 }\n else {\n this.updateUiContent(element, index);\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 };\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 };\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 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","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","tooltipTextElement","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","href","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","innerDiv","wrapperRole","itemText","liElement","listRole","generateIcon","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","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","Complex","Event","NotifyPropertyChanges","Component","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","get","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","onChange","onNgChange","newData","listElement","virtualThis","resultElement","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","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 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 if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\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 if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\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 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 (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n if (grpLI) {\n li.innerText = 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));\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 * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\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 if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\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(text));\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 if (options && options.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\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));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\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})(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 if (_this.curTarget === _this.target && e.target === _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 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.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 if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n innerHeaderEle.innerText = this.headerTitle;\n }\n else {\n innerHeaderEle.innerHTML = this.headerTitle;\n }\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 if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\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 };\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.enable && 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.enable && 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.enable && 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.enable) {\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.enable) {\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', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\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([])\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('')\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","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","tooltipTextElement","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","href","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","isInternalTemplate","innerDiv","wrapperRole","itemText","liElement","listRole","generateIcon","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","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","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","get","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","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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"}