@syncfusion/ej2-lists 28.1.37 → 28.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/list-view/list-view.js","../src/list-view/virtualization.js","../src/sortable/sortable.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 (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 return Math.floor((1 + Math.random()) * 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 (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 // eslint-disable-next-line no-self-assign\n text = 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 = SanitizeHtmlHelper.sanitize(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 { 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};\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 (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","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 } 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 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 prevIdx = _this === dropInst && (prevIdx - curIdx_2) >= 1 ? prevIdx - 1 : prevIdx;\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 = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"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"],"names":["createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","li","curData","subChild","curOpt","extend","defaultListBaseOptions","id","cssClass","getModuleClass","moduleName","generateId","i","length","isNullOrUndefined","itemCreating","text","generateSingleLevelLI","undefined","generateLI","itemCreated","item","push","createListItemFromJson","level","anchorElement","fields","getModuleName","ListBase","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","child","typeofData","Object","prototype","hasOwnProperty","call","element","subDS","hasChildren","fieldData","getFieldValues","curItem","innerEle","showCheckBox","itemNavigable","url","urlAttributes","className","check","attrs","type","showIcon","iconCss","icon","itemClass","isHeader","querySelector","anchorWrap","prepend","firstElementChild","classList","add","setAttribute","toString","groupItemRole","itemRole","removeAttribute","tooltip","tooltipText","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","innerHTML","innerText","tooltipTextElement","htmlAttributes","trim","enabled","disabled","isVisible","style","display","imageUrl","template","attr","src","alt","name","merge","imageAttributes","imageElemnt","image","insertAdjacentElement","iconElement","hasChild","processSubChild","subLi","createListFromJson","appendChild","expandCollapse","iconWrapper","expandIconPosition","append","expandIconClass","textContent","addClass","navigable","listClass","indexOf","elementArray","Array","slice","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","data","match","typeof","elementAttributes","class","split","attributes","getAllAttributes","index","nodeName","nodeValue","Math","floor","random","substring","innerElements","grpLI","value","elementID","group","role","href","anchorTag","document","createTextNode","ul","checked","selected","expanded","collapsible","isFullNavigation","anchorWrapper","compiledString","compiledElement","innerDiv","uID","groupTemplate","compileTemplate","groupTemplateID","isStringTemplate","templateID","wrapperRole","itemText","liElement","ulElement","listRole","dataItem","_i","_a","keys","dataField","getValue","compile","e","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","liCollections","liIndex","siblingLI","contains","groupDataSource","curFields","ds","j","itemObj","items","grpItem","key","_id","k","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","extendStatics","d","b","setPrototypeOf","__proto__","p","_super","__extends","__","this","constructor","create","__decorate","decorators","target","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","LISTVIEW_TEMPLATE_PROPERTY","LISTVIEW_GROUPTEMPLATE_PROPERTY","FieldSettings","ChildProperty","Property","apply","Component","ListView","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","headerTemplateEle","textEle","hedBackButton","headerEle","showHeader","innerHeaderEle","setProperties","outerHTML","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","overflow_1","duration","anim","_this","position","overflow","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","frameElement_1","fieldData_1","createCheckBox","findIndex","checkInternally","checkBoxPosition","insertBefore","virtualCheckBox","children","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","back","closest","parentNode","removeFocus","isValidLI","setCheckboxLI","selectEventData","removeHover","removeSelect","setSelectLI","closestElement","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","firstItemBounds","groupItemBounds","heightDiff","topHeight","headerBounds","getBoundingClientRect","top","elementHeight","siblingTop","siblingHeight","window","scroll","pageYOffset","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","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","getElementUID","curDS","parent","resultJSON","some","getQuery","columns","column","select","from","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","toUL","pID","pop","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","curItemDS","addListItem","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","li_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","scrollDirection","distanceY","scrollHeight","currentScrollTop","getPersistData","addOnPersist","Complex","Event","NotifyPropertyChanges","previousSelectedItems","hiddenItems","enabledItems","disabledItems","Virtualization","listViewInstance","templateRef","isVueFunctionTemplate","isVue","wireScrollEvent","isRendered","firstIndex","uiLastIndex","firstDs","lastIndex","expectedDomItemCount","ValidateItemCount","listDiff","domItemCount","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","addEventListener","dataSourceLength","parseFloat","itemCount","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","isSelected","isChecked_1","eventArgs_1","resutJSON","removeUiItem","addUiItem","liItem","changeUiIndices","previousSibling","scrollTo","increment","ind","index_2","index_1","createAndInjectNewItem","templateData","div_1","commonTemplate","nodes","forEach","lastChild","onChange","onNgChange","newData","listElement","virtualThis","resultElement","instance","elementDifference","Sortable_1","Sortable","Base","getUniqueID","dataBind","initializeDraggable","Draggable","helper","getHelper","dragStart","onDragStart","drag","onDrag","dragStop","onDragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","wrapper","keyDownHandler","unwireEvents","getComponent","intDestroy","dragWrapper","dragPlaceholder","getPlaceHolder","placeHolder","placeHolderElement","grabbedElement","isValidTarget","compareElementParent","removePlaceHolder","updateItemClass","getSortableInstance","inst","scope","getIndex","idx","placeHolderPresent","clientY","offset","bottom","cltY","changedTouches","getSortableElement","left","pageXOffset","isPlaceHolderPresent","moveTo","destination","targetIndexes","sender","offsetWidth","offsetHeight","body","inst_1","newInst","curTarget","oldIdx","newIdx","childElementCount","droppedElement","previousIndex","currentIndex","cancelDrag","isBlazor","bindEvents","dragElement","curIdx","handled","prevIdx","beforeDropArgs","dropInst","curIdx_1","curIdx_2","scopeName","to","insertElement_1","targetElements"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/list-view/list-view.js","../src/list-view/virtualization.js","../src/sortable/sortable.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 return Math.floor((1 + Math.random()) * 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 { 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};\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 (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","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 } 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 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 prevIdx = _this === dropInst && (prevIdx - curIdx_2) >= 1 ? prevIdx - 1 : prevIdx;\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 = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"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"],"names":["createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","li","curData","subChild","curOpt","extend","defaultListBaseOptions","id","cssClass","getModuleClass","moduleName","generateId","i","length","isNullOrUndefined","itemCreating","text","generateSingleLevelLI","undefined","generateLI","itemCreated","item","push","createListItemFromJson","level","anchorElement","fields","getModuleName","ListBase","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","child","typeofData","Object","prototype","hasOwnProperty","call","tooltipText","element","subDS","hasChildren","fieldData","getFieldValues","curItem","innerEle","showCheckBox","itemNavigable","url","urlAttributes","className","check","attrs","type","showIcon","iconCss","icon","itemClass","isHeader","querySelector","anchorWrap","tooltip","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","innerHTML","innerText","tooltipTextElement","setAttribute","prepend","firstElementChild","classList","add","toString","groupItemRole","itemRole","removeAttribute","htmlAttributes","trim","enabled","disabled","isVisible","style","display","imageUrl","template","attr","src","alt","name","merge","imageAttributes","imageElemnt","image","insertAdjacentElement","iconElement","hasChild","processSubChild","subLi","createListFromJson","appendChild","expandCollapse","iconWrapper","expandIconPosition","append","expandIconClass","textContent","addClass","navigable","listClass","indexOf","elementArray","Array","slice","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","data","match","typeof","elementAttributes","class","split","attributes","getAllAttributes","index","nodeName","nodeValue","Math","floor","random","substring","innerElements","grpLI","value","elementID","group","role","href","anchorTag","document","createTextNode","ul","checked","selected","expanded","collapsible","isFullNavigation","anchorWrapper","compiledString","compiledElement","innerDiv","uID","groupTemplate","compileTemplate","groupTemplateID","isStringTemplate","templateID","wrapperRole","itemText","liElement","ulElement","listRole","dataItem","_i","_a","keys","dataField","getValue","compile","e","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","liCollections","liIndex","siblingLI","contains","groupDataSource","curFields","ds","j","itemObj","items","grpItem","key","_id","k","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","extendStatics","d","b","setPrototypeOf","__proto__","p","_super","__extends","__","this","constructor","create","__decorate","decorators","target","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","LISTVIEW_TEMPLATE_PROPERTY","LISTVIEW_GROUPTEMPLATE_PROPERTY","FieldSettings","ChildProperty","Property","apply","Component","ListView","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","headerTemplateEle","textEle","hedBackButton","headerEle","showHeader","innerHeaderEle","setProperties","outerHTML","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","overflow_1","duration","anim","_this","position","overflow","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","frameElement_1","fieldData_1","createCheckBox","findIndex","checkInternally","checkBoxPosition","insertBefore","virtualCheckBox","children","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","back","closest","parentNode","removeFocus","isValidLI","setCheckboxLI","selectEventData","removeHover","removeSelect","setSelectLI","closestElement","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","firstItemBounds","groupItemBounds","heightDiff","topHeight","headerBounds","getBoundingClientRect","top","elementHeight","siblingTop","siblingHeight","window","scroll","pageYOffset","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","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","getElementUID","curDS","parent","resultJSON","some","getQuery","columns","column","select","from","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","toUL","pID","pop","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","curItemDS","addListItem","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","li_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","scrollDirection","distanceY","scrollHeight","currentScrollTop","getPersistData","addOnPersist","Complex","Event","NotifyPropertyChanges","previousSelectedItems","hiddenItems","enabledItems","disabledItems","Virtualization","listViewInstance","templateRef","isVueFunctionTemplate","isVue","wireScrollEvent","isRendered","firstIndex","uiLastIndex","firstDs","lastIndex","expectedDomItemCount","ValidateItemCount","listDiff","domItemCount","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","addEventListener","dataSourceLength","parseFloat","itemCount","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","isSelected","isChecked_1","eventArgs_1","resutJSON","removeUiItem","addUiItem","liItem","changeUiIndices","previousSibling","scrollTo","increment","ind","index_2","index_1","createAndInjectNewItem","templateData","div_1","commonTemplate","nodes","forEach","lastChild","onChange","onNgChange","newData","listElement","virtualThis","resultElement","instance","elementDifference","Sortable_1","Sortable","Base","getUniqueID","dataBind","initializeDraggable","Draggable","helper","getHelper","dragStart","onDragStart","drag","onDrag","dragStop","onDragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","wrapper","keyDownHandler","unwireEvents","getComponent","intDestroy","dragWrapper","dragPlaceholder","getPlaceHolder","placeHolder","placeHolderElement","grabbedElement","isValidTarget","compareElementParent","removePlaceHolder","updateItemClass","getSortableInstance","inst","scope","getIndex","idx","placeHolderPresent","clientY","offset","bottom","cltY","changedTouches","getSortableElement","left","pageXOffset","isPlaceHolderPresent","moveTo","destination","targetIndexes","sender","offsetWidth","offsetHeight","body","inst_1","newInst","curTarget","oldIdx","newIdx","childElementCount","droppedElement","previousIndex","currentIndex","cancelDrag","isBlazor","bindEvents","dragElement","curIdx","handled","prevIdx","beforeDropArgs","dropInst","curIdx_1","curIdx_2","scopeName","to","insertElement_1","targetElements"],"mappings":"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"}