@syncfusion/ej2-lists 20.4.42 → 20.4.48

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/sortable/sortable.js","../src/list-view/list-view.js","../src/list-view/virtualization.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } 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, \n // eslint-disable-next-line\n 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 {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} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n 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 {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 {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n 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 {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - 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, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !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, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('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') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(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, \n // eslint-disable-next-line\n 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} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\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 */\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- Specifies final result sort order.\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 */\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 function getDataSource(dataSource, query) {\n // eslint-disable-next-line\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 */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 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 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 {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - 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 // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line\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 function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\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 // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\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 // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(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 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 function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(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 // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n 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 // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('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 // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\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 // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\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 {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 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 {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 function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\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} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\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}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor } from '@syncfusion/ej2-base';\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 /* es-lint enable */\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\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 // eslint-disable-next-line\n _this.onDrag = function (e) {\n if (!e.target)\n return;\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.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target :\n true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\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 remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (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 _this.refreshDisabled(oldIdx, newIdx, newInst);\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.refreshDisabled(oldIdx, newIdx, newInst);\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 remove(_this.getSortableInstance(_this.curTarget).placeHolderElement);\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : 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 && !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: 5\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.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\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 idx = e.clientY <= 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 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 * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch } 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// 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 content: 'e-content',\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 // eslint-disable-next-line\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 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 (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 if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\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 // eslint-disable-next-line\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\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 // eslint-disable-next-line\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,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\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,\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 (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: 'group', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\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 = [];\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 if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && this.isValidLI(args.item)) {\n var checkboxElement = void 0;\n var fieldData = void 0;\n // eslint-disable-next-line prefer-const\n 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 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (fieldData[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', 'checkbox');\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 }\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 }\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.clickHandler = function (e) {\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 this.trigger('select', eventArgs);\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 };\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\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 e.preventDefault();\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\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 this.trigger('select', eventArgs);\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) {\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 };\n ListView.prototype.unWireEvents = function () {\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 this.touchModule.destroy();\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 if (!checkIcon.classList.contains(classNames.checked)) {\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.trigger('select', eventArgs);\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 // eslint-disable-next-line\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, cancel: false, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\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 });\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 // eslint-disable-next-line\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 = \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && 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 // eslint-disable-next-line\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 // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, listViewComponent);\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, listViewComponent);\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 // eslint-disable-next-line\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[i];\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.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // eslint-disable-next-line\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\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 (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 if (this.isReact) {\n if (typeof this.template == \"string\") {\n this.listBaseOption.template = null;\n }\n if (typeof this.groupTemplate == \"string\") {\n this.listBaseOption.groupTemplate = null;\n }\n }\n else {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n }\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.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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, { role: 'list', 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 };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n // eslint-disable-next-line\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.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 _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 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 // eslint-disable-next-line\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 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[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\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 // eslint-disable-next-line\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\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[i])) {\n this.selectItem(item[i]);\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[i]);\n }\n }\n return parentId;\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\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 // eslint-disable-next-line\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 */\n ListView.prototype.addItem = function (data, fields) {\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);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\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.push(data[i]);\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[i], 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.addItemInNestedList = function (targetItemData, itemQueue) {\n // eslint-disable-next-line\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 var isRefreshTemplateNeeded = 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 isRefreshTemplateNeeded = true;\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[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\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 // eslint-disable-next-line\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;\n // eslint-disable-next-line prefer-const\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n // eslint-disable-next-line prefer-const\n 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 // eslint-disable-next-line\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, \n // eslint-disable-next-line\n 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[i]);\n }\n }\n };\n // eslint-disable-next-line\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource.hasOwnProperty(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)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // eslint-disable-next-line\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], 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' });\n }\n return modules;\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']);\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(false)\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 ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, removeClass, addClass, compile, formatUnit } 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 * 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 firstDs = curViewDS.slice(0, 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(\n // eslint-disable-next-line\n this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.content });\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.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n var otherDs = curViewDS.slice(1, this.domItemCount);\n var listItems = ListBase.createListItemFromJson(\n // eslint-disable-next-line\n 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 = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n this.listDiff = 0;\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 EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n };\n Virtualization.prototype.updateUlContainer = function (e) {\n var listDiff;\n var virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\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 // eslint-disable-next-line max-len\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.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 // eslint-disable-next-line\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n // eslint-disable-next-line\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 (e) {\n var _a;\n var startingHeight;\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n element.dataset.uid = (curViewDs[index][this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n // eslint-disable-next-line\n (curViewDs[index][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 target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' +\n this.listViewInstance.curViewDS[index][this.listViewInstance.fields.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 textContent.insertBefore(this.checkListWrapper.cloneNode(true), element.querySelector('.' + classNames.listItemText));\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 // eslint-disable-next-line\n fields[_this.listViewInstance.fields.id]\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n dataCollection.push(curViewDS_2[indexArray[i]]);\n }\n // eslint-disable-next-line\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 = void 0;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = 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 // eslint-disable-next-line\n var eventArgs = void 0;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\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 = {\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 eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n // eslint-disable-next-line\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) {\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.push(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 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\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 // eslint-disable-next-line\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 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, \n // eslint-disable-next-line\n [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 && this.listViewInstance.curViewDS[index + 1] && 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 var virtualTemplate = this.listViewInstance.template;\n var template = this.listViewInstance.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 if (this.listViewInstance.isReact) {\n commonTemplate = null;\n }\n if (this.listViewInstance.showCheckBox) {\n // eslint-disable-next-line\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div = document.createElement('div');\n div.innerHTML = this.listViewInstance.template || commonTemplate;\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n this.listViewInstance.template = div.innerHTML;\n }\n }\n template.innerHTML = this.listViewInstance.template;\n this.listViewInstance.template = virtualTemplate;\n }\n else {\n template.innerHTML = this.listViewInstance.template || commonTemplate;\n }\n // eslint-disable-next-line\n var templateElements = template.getElementsByTagName('*');\n var groupTemplate = this.listViewInstance.createElement('div');\n if (this.listViewInstance.fields.groupBy) {\n groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;\n }\n // eslint-disable-next-line\n var groupTemplateElements = groupTemplate.getElementsByTagName('*');\n if (args.curData.isHeader) {\n this.headerData = args.curData;\n }\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (!this.listViewInstance.isReact || (typeof this.listViewInstance.template == \"string\" && !args.item.classList.contains(\"e-list-group-item\")) ||\n (typeof this.listViewInstance.groupTemplate == \"string\" && args.item.classList.contains(\"e-list-group-item\"))) {\n args.item.innerHTML = '';\n }\n args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };\n for (var i = 0; i < templateElements.length; i++) {\n this.compileTemplate(templateElements[i], args.item, false);\n }\n for (var i = 0; i < groupTemplateElements.length; i++) {\n this.compileTemplate(groupTemplateElements[i], args.item, true);\n }\n args.item.context.template = args.curData.isHeader ? template.firstElementChild :\n groupTemplate.firstElementChild;\n args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';\n var element = args.curData.isHeader ? groupTemplate : template;\n if (element.firstElementChild) {\n args.item.insertBefore(element.firstElementChild, null);\n }\n };\n Virtualization.prototype.compileTemplate = function (element, item, isHeader) {\n this.textProperty(element, item, isHeader);\n this.classProperty(element, item, isHeader);\n this.attributeProperty(element, item, isHeader);\n };\n Virtualization.prototype.onChange = function (newData, listElement) {\n listElement.context.data = newData;\n // eslint-disable-next-line max-len\n var groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;\n // eslint-disable-next-line max-len\n var flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;\n // eslint-disable-next-line\n if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {\n // eslint-disable-next-line\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'flatList';\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader && listElement.context.type === 'flatList') {\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'groupList';\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader) {\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else {\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.updateContextData = function (listElement, node, isHeader) {\n if (isHeader) {\n listElement.context.nodes.groupTemplateNodes.push(node);\n }\n else {\n listElement.context.nodes.flatTemplateNodes.push(node);\n }\n };\n Virtualization.prototype.classProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.className);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n if (resultantOutput && resultantOutput.length) {\n var _loop_1 = function (i) {\n var classNameMatch = resultantOutput[i];\n // eslint-disable-next-line\n var classFunction;\n if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);\n }\n // eslint-disable-next-line\n var subNode = {};\n if (isHeader) {\n subNode.bindedvalue = classFunction(this_1.headerData);\n }\n else {\n subNode.bindedvalue = classFunction(this_1.templateData);\n }\n subNode.onChange = function (value) {\n if (subNode.bindedvalue) {\n removeClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n var newCss = classFunction(value);\n if (newCss) {\n addClass([element], (newCss).split(' ').filter(function (css) { return css; }));\n }\n subNode.bindedvalue = newCss;\n };\n var className = classNameMatch[0].split(' ');\n for (var i_1 = 0; i_1 < className.length; i_1++) {\n element.classList.remove(className[i_1]);\n }\n if (subNode.bindedvalue) {\n addClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n this_1.updateContextData(listElement, subNode, isHeader);\n };\n var this_1 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_1(i);\n }\n }\n };\n Virtualization.prototype.attributeProperty = function (element, listElement, isHeader) {\n var attributeNames = [];\n for (var i = 0; i < element.attributes.length; i++) {\n attributeNames.push(element.attributes[i].nodeName);\n }\n if (attributeNames.indexOf('class') !== -1) {\n attributeNames.splice(attributeNames.indexOf('class'), 1);\n }\n var _loop_2 = function (i) {\n var attributeName = attributeNames[i];\n var attrNameMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(attributeName) || [];\n var attrValueMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))\n || [];\n // eslint-disable-next-line\n var attributeNameFunction;\n // eslint-disable-next-line\n var attributeValueFunction;\n if (attrNameMatch.length || attrValueMatch.length) {\n if (attrNameMatch[1]) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);\n }\n if (attrValueMatch[1]) {\n if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n var subNode_1 = {};\n if (isHeader) {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.headerData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.headerData)];\n }\n else {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.templateData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.templateData)];\n }\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ?\n attributeName : subNode_1.bindedvalue[0];\n subNode_1.onChange = function (value) {\n var bindedvalue = subNode_1.bindedvalue[1] === undefined ?\n element.getAttribute(subNode_1.attrName) : attributeValueFunction(value);\n element.removeAttribute(subNode_1.attrName);\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ? subNode_1.attrName : attributeNameFunction(value);\n element.setAttribute(subNode_1.attrName, bindedvalue);\n subNode_1.bindedvalue = [subNode_1.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),\n subNode_1.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];\n };\n var attributeValue = subNode_1.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :\n subNode_1.bindedvalue[1];\n element.removeAttribute(attributeName);\n element.setAttribute(subNode_1.attrName, attributeValue);\n this_2.updateContextData(listElement, subNode_1, isHeader);\n }\n };\n var this_2 = this;\n for (var i = 0; i < attributeNames.length; i++) {\n _loop_2(i);\n }\n };\n Virtualization.prototype.textProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.innerText);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n var isChildHasTextContent = Array.prototype.some.call(element.children, function (element) {\n if (new RegExp('\\\\${([^}]*)}', 'g').exec(element.innerText)) {\n return true;\n }\n else {\n return false;\n }\n });\n if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {\n var _loop_3 = function (i) {\n var textPropertyMatch = resultantOutput[i];\n // eslint-disable-next-line\n var subNode = {};\n // eslint-disable-next-line\n var textFunction;\n if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);\n }\n if (isHeader) {\n subNode.bindedvalue = textFunction(this_3.headerData);\n }\n else {\n subNode.bindedvalue = textFunction(this_3.templateData);\n }\n subNode.onChange = function (value) {\n element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));\n subNode.bindedvalue = textFunction(value);\n };\n element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);\n this_3.updateContextData(listElement, subNode, isHeader);\n };\n var this_3 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_3(i);\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 // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\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 Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n // eslint-disable-next-line\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 };\n return Virtualization;\n}());\nexport { Virtualization };\n"],"names":["getFieldValues","dataItem","fields","fieldData","isNullOrUndefined","isHeader","_i","_a","Object","keys","length","dataField","value","undefined","getValue","compileTemplate","template","document","querySelector","compile","innerHTML","trim","e","moveTo","from","to","targetIndexes","insertBefore","targetElements","forEach","index","push","children","slice","call","target","appendChild","insertElement_1","exports","li","ul","group","icon","text","check","checked","selected","expanded","textContent","hasChild","level","url","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","ListBase","createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","extend","defaultListBaseOptions","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","getModuleName","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","anchorElement","child","typeofData","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","type","showIcon","iconCss","itemClass","prepend","firstElementChild","classList","add","setAttribute","toString","groupItemRole","removeAttribute","tooltip","htmlAttributes","enabled","isVisible","style","display","imageUrl","attr","src","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","ds","element","subDS","hasChildren","processSubChild","subLi","createListFromJson","expandCollapse","expandElement","expandIconPosition","append","expandIconClass","addClass","listClass","indexOf","elementArray","Array","prototype","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","typeof","elementAttributes","class","split","attributes","nodeName","nodeValue","Math","floor","random","substring","innerElements","grpLI","elementID","itemRole","role","innerText","href","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","enableHtmlSanitizer","groupTemplate","compiledString","compiledElement","groupTemplateID","isStringTemplate","templateID","innerDiv","wrapperRole","itemText","liElement","ulElement","listRole","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","contains","groupDataSource","curFields","cusQuery","j","itemObj","items","grpItem","key","newtext","_id","k","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","this","constructor","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","content","backIcon","backButton","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","LISTVIEW_GROUPTEMPLATE_PROPERTY","FieldSettings","_super","apply","Property","ChildProperty","ListView","_this","previousSelectedItems","hiddenItems","enabledItems","disabledItems","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerEle","showHeader","setProperties","SanitizeHtmlHelper","sanitize","innerHeaderEle","textEle","outerHTML","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","position","overflow_1","overflow","anim","duration","animation","effect","aniObj","animate","name","timingFunction","easing","end","model","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","isValidLI","createCheckBox","frameElement_1","checkInternally","checkBoxPosition","virtualCheckBox","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","clickHandler","targetElement","closestElement","back","closest","parentNode","removeFocus","setCheckboxLI","eventArgs","selectEventData","removeHover","removeSelect","setSelectLI","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","getBoundingClientRect","top","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","window","scroll","pageYOffset","scrollTop","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","selectedLI","wireEvents","EventHandler","touchModule","Touch","swipe","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","textAreaFocus","renderSubList","selectedItem","isInteracted","event","cancel","observedArgs","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","curDS","getElementUID","parent","resultJSON","some","getQuery","columns","column","select","tableName","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","getAttribute","exceptionEvent","UpdateCurrentUL","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","pID","pop","toUL","fromUL","selectItem","uid","selectMultipleItems","getParentId","parentId","getSelectedItems","finalValue","isCompleted","getElementsByClassName","liTextCollection","liDataCollection","dataParent","tempData","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","targetUL","addItemIntoDom","addItemInNestedList","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","isArray","parentLi","li_1","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","getPersistData","addOnPersist","Complex","Event","NotifyPropertyChanges","Component","Virtualization","instance","elementDifference","listViewInstance","templateRef","wireScrollEvent","firstDs","expectedDomItemCount","ValidateItemCount","domItemCount","uiLastIndex","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","listDiff","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","updateUlContainer","addEventListener","liElementHeight","updateLiElementHeight","round","documentElement","dataSourceLength","itemCount","parseFloat","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","get","nextSibling","getscrollerHeight","startingHeight","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","resutJSON","isSelected","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","scrollTo","increment","ind","createAndInjectNewItem","itemData","virtualTemplate","commonTemplate","div","templateElements","getElementsByTagName","groupTemplateElements","templateData","nodes","flatTemplateNodes","groupTemplateNodes","textProperty","classProperty","attributeProperty","onChange","newData","listElement","updateContextData","node","regexMatch","regex","RegExp","resultantOutput","exec","_loop_1","classFunction","classNameMatch","Function","replace","subNode","bindedvalue","this_1","newCss","attributeNames","_loop_2","attributeNameFunction","attributeValueFunction","attributeName","attrNameMatch","attrValueMatch","subNode_1","this_2","attrName","attributeValue","isChildHasTextContent","_loop_3","textFunction","textPropertyMatch","this_3","onNgChange","virtualThis","resultElement","templateCompiler","lastChild","Sortable","getHelper","getSortableElement","sender","isValidTarget","helper","offsetWidth","offsetHeight","body","onDrag","newInst","getSortableInstance","curTarget","placeHolder","placeHolderElement","scope","oldIdx","getIndex","getPlaceHolder","newIdx","isPlaceHolderPresent","childElementCount","refreshDisabled","idx","updateItemClass","droppedElement","previousIndex","currentIndex","removePlaceHolder","inst_1","onDragStart","cancelDrag","onDragStop","isBlazor","bindEvents","dragElement","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","beforeDropArgs","getComponent","Draggable","intDestroy","Sortable_1","getUniqueID","dataBind","initializeDraggable","dragStart","drag","dragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","grabbedElement","compareElementParent","inst","increased","disabledIdx","start","placeHolderPresent","offset","clientY","bottom","left","pageXOffset","destination","Base"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/sortable/sortable.js","../src/list-view/list-view.js","../src/list-view/virtualization.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } 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, \n // eslint-disable-next-line\n 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 {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} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n 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 {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 {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n 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 {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - 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, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !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, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('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') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(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, \n // eslint-disable-next-line\n 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} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\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 */\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- Specifies final result sort order.\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 */\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 function getDataSource(dataSource, query) {\n // eslint-disable-next-line\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 */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 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 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 {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - 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 // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line\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 function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\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 // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\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 // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(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 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 function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(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 // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n 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 // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('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 // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\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 // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\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 {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 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 {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 function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\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} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\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}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor } from '@syncfusion/ej2-base';\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 /* es-lint enable */\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\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 // eslint-disable-next-line\n _this.onDrag = function (e) {\n if (!e.target)\n return;\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.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target :\n true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\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 remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (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 _this.refreshDisabled(oldIdx, newIdx, newInst);\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.refreshDisabled(oldIdx, newIdx, newInst);\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 remove(_this.getSortableInstance(_this.curTarget).placeHolderElement);\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : 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 && !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: 5\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.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\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 idx = e.clientY <= 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 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 * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch } 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// 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 content: 'e-content',\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 // eslint-disable-next-line\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 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 (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 if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\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 // eslint-disable-next-line\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\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 // eslint-disable-next-line\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,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\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,\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 (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: 'group', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\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 && this.isValidLI(args.item)) {\n var checkboxElement = void 0;\n var fieldData_1;\n // eslint-disable-next-line prefer-const\n 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', 'checkbox');\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.clickHandler = function (e) {\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 this.trigger('select', eventArgs);\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\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 e.preventDefault();\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\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 this.trigger('select', eventArgs);\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) {\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 };\n ListView.prototype.unWireEvents = function () {\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 this.touchModule.destroy();\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 if (!checkIcon.classList.contains(classNames.checked)) {\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.trigger('select', eventArgs);\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 // eslint-disable-next-line\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, cancel: false, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\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 });\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 // eslint-disable-next-line\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 = \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && 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 // eslint-disable-next-line\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 // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, listViewComponent);\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, listViewComponent);\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 // eslint-disable-next-line\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[i];\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.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // eslint-disable-next-line\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\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 (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 if (this.isReact) {\n if (typeof this.template == \"string\") {\n this.listBaseOption.template = null;\n }\n if (typeof this.groupTemplate == \"string\") {\n this.listBaseOption.groupTemplate = null;\n }\n }\n else {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n }\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.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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, { role: 'list', 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 };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n // eslint-disable-next-line\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.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 _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 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 // eslint-disable-next-line\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 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[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\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 // eslint-disable-next-line\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\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[i])) {\n this.selectItem(item[i]);\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[i]);\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[i]);\n if (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 // eslint-disable-next-line\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 // eslint-disable-next-line\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[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\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 // eslint-disable-next-line\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 */\n ListView.prototype.addItem = function (data, fields) {\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);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\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.push(data[i]);\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[i], 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.addItemInNestedList = function (targetItemData, itemQueue) {\n // eslint-disable-next-line\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 var isRefreshTemplateNeeded = 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 isRefreshTemplateNeeded = true;\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[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n isRefreshTemplateNeeded = true;\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 // eslint-disable-next-line\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;\n // eslint-disable-next-line prefer-const\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n // eslint-disable-next-line prefer-const\n 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 // eslint-disable-next-line\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, \n // eslint-disable-next-line\n 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[i]);\n }\n }\n };\n // eslint-disable-next-line\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource.hasOwnProperty(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)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // eslint-disable-next-line\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], 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' });\n }\n return modules;\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(false)\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 ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","import { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, removeClass, addClass, compile, formatUnit } 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 * 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 firstDs = curViewDS.slice(0, 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(\n // eslint-disable-next-line\n this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.content });\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.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n var otherDs = curViewDS.slice(1, this.domItemCount);\n var listItems = ListBase.createListItemFromJson(\n // eslint-disable-next-line\n 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 = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n this.listDiff = 0;\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 EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n };\n Virtualization.prototype.updateUlContainer = function (e) {\n var listDiff;\n var virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\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 // eslint-disable-next-line max-len\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.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 // eslint-disable-next-line\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n // eslint-disable-next-line\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 (e) {\n var _a;\n var startingHeight;\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n element.dataset.uid = (curViewDs[index][this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n // eslint-disable-next-line\n (curViewDs[index][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 target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' +\n this.listViewInstance.curViewDS[index][this.listViewInstance.fields.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 textContent.insertBefore(this.checkListWrapper.cloneNode(true), element.querySelector('.' + classNames.listItemText));\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 // eslint-disable-next-line\n fields[_this.listViewInstance.fields.id]\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n dataCollection.push(curViewDS_2[indexArray[i]]);\n }\n // eslint-disable-next-line\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 = void 0;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = 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 // eslint-disable-next-line\n var eventArgs = void 0;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\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 = {\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 eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n // eslint-disable-next-line\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) {\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.push(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 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\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 // eslint-disable-next-line\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 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, \n // eslint-disable-next-line\n [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 && this.listViewInstance.curViewDS[index + 1] && 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 var virtualTemplate = this.listViewInstance.template;\n var template = this.listViewInstance.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 if (this.listViewInstance.isReact) {\n commonTemplate = null;\n }\n if (this.listViewInstance.showCheckBox) {\n // eslint-disable-next-line\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div = document.createElement('div');\n div.innerHTML = this.listViewInstance.template || commonTemplate;\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n this.listViewInstance.template = div.innerHTML;\n }\n }\n template.innerHTML = this.listViewInstance.template;\n this.listViewInstance.template = virtualTemplate;\n }\n else {\n template.innerHTML = this.listViewInstance.template || commonTemplate;\n }\n // eslint-disable-next-line\n var templateElements = template.getElementsByTagName('*');\n var groupTemplate = this.listViewInstance.createElement('div');\n if (this.listViewInstance.fields.groupBy) {\n groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;\n }\n // eslint-disable-next-line\n var groupTemplateElements = groupTemplate.getElementsByTagName('*');\n if (args.curData.isHeader) {\n this.headerData = args.curData;\n }\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (!this.listViewInstance.isReact || (typeof this.listViewInstance.template == \"string\" && !args.item.classList.contains(\"e-list-group-item\")) ||\n (typeof this.listViewInstance.groupTemplate == \"string\" && args.item.classList.contains(\"e-list-group-item\"))) {\n args.item.innerHTML = '';\n }\n args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };\n for (var i = 0; i < templateElements.length; i++) {\n this.compileTemplate(templateElements[i], args.item, false);\n }\n for (var i = 0; i < groupTemplateElements.length; i++) {\n this.compileTemplate(groupTemplateElements[i], args.item, true);\n }\n args.item.context.template = args.curData.isHeader ? template.firstElementChild :\n groupTemplate.firstElementChild;\n args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';\n var element = args.curData.isHeader ? groupTemplate : template;\n if (element.firstElementChild) {\n args.item.insertBefore(element.firstElementChild, null);\n }\n };\n Virtualization.prototype.compileTemplate = function (element, item, isHeader) {\n this.textProperty(element, item, isHeader);\n this.classProperty(element, item, isHeader);\n this.attributeProperty(element, item, isHeader);\n };\n Virtualization.prototype.onChange = function (newData, listElement) {\n listElement.context.data = newData;\n // eslint-disable-next-line max-len\n var groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;\n // eslint-disable-next-line max-len\n var flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;\n // eslint-disable-next-line\n if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {\n // eslint-disable-next-line\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'flatList';\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader && listElement.context.type === 'flatList') {\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'groupList';\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader) {\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else {\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.updateContextData = function (listElement, node, isHeader) {\n if (isHeader) {\n listElement.context.nodes.groupTemplateNodes.push(node);\n }\n else {\n listElement.context.nodes.flatTemplateNodes.push(node);\n }\n };\n Virtualization.prototype.classProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.className);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n if (resultantOutput && resultantOutput.length) {\n var _loop_1 = function (i) {\n var classNameMatch = resultantOutput[i];\n // eslint-disable-next-line\n var classFunction;\n if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);\n }\n // eslint-disable-next-line\n var subNode = {};\n if (isHeader) {\n subNode.bindedvalue = classFunction(this_1.headerData);\n }\n else {\n subNode.bindedvalue = classFunction(this_1.templateData);\n }\n subNode.onChange = function (value) {\n if (subNode.bindedvalue) {\n removeClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n var newCss = classFunction(value);\n if (newCss) {\n addClass([element], (newCss).split(' ').filter(function (css) { return css; }));\n }\n subNode.bindedvalue = newCss;\n };\n var className = classNameMatch[0].split(' ');\n for (var i_1 = 0; i_1 < className.length; i_1++) {\n element.classList.remove(className[i_1]);\n }\n if (subNode.bindedvalue) {\n addClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n this_1.updateContextData(listElement, subNode, isHeader);\n };\n var this_1 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_1(i);\n }\n }\n };\n Virtualization.prototype.attributeProperty = function (element, listElement, isHeader) {\n var attributeNames = [];\n for (var i = 0; i < element.attributes.length; i++) {\n attributeNames.push(element.attributes[i].nodeName);\n }\n if (attributeNames.indexOf('class') !== -1) {\n attributeNames.splice(attributeNames.indexOf('class'), 1);\n }\n var _loop_2 = function (i) {\n var attributeName = attributeNames[i];\n var attrNameMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(attributeName) || [];\n var attrValueMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))\n || [];\n // eslint-disable-next-line\n var attributeNameFunction;\n // eslint-disable-next-line\n var attributeValueFunction;\n if (attrNameMatch.length || attrValueMatch.length) {\n if (attrNameMatch[1]) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);\n }\n if (attrValueMatch[1]) {\n if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n var subNode_1 = {};\n if (isHeader) {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.headerData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.headerData)];\n }\n else {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.templateData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.templateData)];\n }\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ?\n attributeName : subNode_1.bindedvalue[0];\n subNode_1.onChange = function (value) {\n var bindedvalue = subNode_1.bindedvalue[1] === undefined ?\n element.getAttribute(subNode_1.attrName) : attributeValueFunction(value);\n element.removeAttribute(subNode_1.attrName);\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ? subNode_1.attrName : attributeNameFunction(value);\n element.setAttribute(subNode_1.attrName, bindedvalue);\n subNode_1.bindedvalue = [subNode_1.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),\n subNode_1.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];\n };\n var attributeValue = subNode_1.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :\n subNode_1.bindedvalue[1];\n element.removeAttribute(attributeName);\n element.setAttribute(subNode_1.attrName, attributeValue);\n this_2.updateContextData(listElement, subNode_1, isHeader);\n }\n };\n var this_2 = this;\n for (var i = 0; i < attributeNames.length; i++) {\n _loop_2(i);\n }\n };\n Virtualization.prototype.textProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.innerText);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n var isChildHasTextContent = Array.prototype.some.call(element.children, function (element) {\n if (new RegExp('\\\\${([^}]*)}', 'g').exec(element.innerText)) {\n return true;\n }\n else {\n return false;\n }\n });\n if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {\n var _loop_3 = function (i) {\n var textPropertyMatch = resultantOutput[i];\n // eslint-disable-next-line\n var subNode = {};\n // eslint-disable-next-line\n var textFunction;\n if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);\n }\n if (isHeader) {\n subNode.bindedvalue = textFunction(this_3.headerData);\n }\n else {\n subNode.bindedvalue = textFunction(this_3.templateData);\n }\n subNode.onChange = function (value) {\n element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));\n subNode.bindedvalue = textFunction(value);\n };\n element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);\n this_3.updateContextData(listElement, subNode, isHeader);\n };\n var this_3 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_3(i);\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 // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\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 Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n // eslint-disable-next-line\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 };\n return Virtualization;\n}());\nexport { Virtualization };\n"],"names":["getFieldValues","dataItem","fields","fieldData","isNullOrUndefined","isHeader","_i","_a","Object","keys","length","dataField","value","undefined","getValue","compileTemplate","template","document","querySelector","compile","innerHTML","trim","e","moveTo","from","to","targetIndexes","insertBefore","targetElements","forEach","index","push","children","slice","call","target","appendChild","insertElement_1","exports","li","ul","group","icon","text","check","checked","selected","expanded","textContent","hasChild","level","url","collapsible","disabled","image","iconWrapper","anchorWrap","navigable","ListBase","createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","extend","defaultListBaseOptions","cssClass","getModuleClass","moduleName","id","generateId","i","itemCreating","curData","generateSingleLevelLI","generateLI","itemCreated","item","createListItemFromJson","getModuleName","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","anchorElement","child","typeofData","hasOwnProperty","curItem","innerEle","showCheckBox","itemNavigable","urlAttributes","className","attrs","type","showIcon","iconCss","itemClass","prepend","firstElementChild","classList","add","setAttribute","toString","groupItemRole","removeAttribute","tooltip","htmlAttributes","enabled","isVisible","style","display","imageUrl","attr","src","merge","imageAttributes","imageElemnt","insertAdjacentElement","iconElement","ds","element","subDS","hasChildren","processSubChild","subLi","createListFromJson","expandCollapse","expandElement","expandIconPosition","append","expandIconClass","addClass","listClass","indexOf","elementArray","Array","prototype","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","getAllAttributes","data","match","typeof","elementAttributes","class","split","attributes","nodeName","nodeValue","Math","floor","random","substring","innerElements","grpLI","elementID","itemRole","role","innerText","href","anchorTag","createTextNode","isFullNavigation","anchorWrapper","uID","enableHtmlSanitizer","groupTemplate","compiledString","compiledElement","groupTemplateID","isStringTemplate","templateID","innerDiv","wrapperRole","itemText","liElement","ulElement","listRole","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","contains","groupDataSource","curFields","cusQuery","j","itemObj","items","grpItem","key","newtext","_id","k","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","__extends","extendStatics","d","b","setPrototypeOf","__proto__","p","__","this","constructor","create","__decorate","decorators","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","content","backIcon","backButton","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","LISTVIEW_GROUPTEMPLATE_PROPERTY","FieldSettings","_super","apply","Property","ChildProperty","ListView","_this","previousSelectedItems","hiddenItems","enabledItems","disabledItems","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerEle","showHeader","setProperties","SanitizeHtmlHelper","sanitize","innerHeaderEle","textEle","outerHTML","hedBackButton","headerTemplateEle","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","position","overflow_1","overflow","anim","duration","animation","effect","aniObj","animate","name","timingFunction","easing","end","model","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","enablePersistence","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","isValidLI","fieldData_1","createCheckBox","frameElement_1","findIndex","checkInternally","checkBoxPosition","virtualCheckBox","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","clickHandler","targetElement","closestElement","back","closest","parentNode","removeFocus","setCheckboxLI","eventArgs","selectEventData","removeHover","removeSelect","setSelectLI","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","getBoundingClientRect","top","elementHeight","firstItemBounds","heightDiff","groupItemBounds","siblingTop","siblingHeight","window","scroll","pageYOffset","scrollTop","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","topHeight","headerBounds","enterKeyHandler","spaceKeyHandler","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","selectedLI","wireEvents","EventHandler","touchModule","Touch","swipe","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","textAreaFocus","renderSubList","selectedItem","isInteracted","event","cancel","observedArgs","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","curDS","getElementUID","parent","resultJSON","some","getQuery","columns","column","select","tableName","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","getAttribute","exceptionEvent","UpdateCurrentUL","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","pID","pop","toUL","fromUL","selectItem","uid","selectMultipleItems","getParentId","parentId","getElementsByClassName","tempData","getSelectedItems","finalValue","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","targetUL","addItemIntoDom","addItemInNestedList","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","addListItem","curItemDS","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","isArray","parentLi","li_1","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","getPersistData","addOnPersist","Complex","Event","NotifyPropertyChanges","Component","Virtualization","instance","elementDifference","listViewInstance","templateRef","wireScrollEvent","firstDs","expectedDomItemCount","ValidateItemCount","domItemCount","uiLastIndex","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","listDiff","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","updateUlContainer","addEventListener","liElementHeight","updateLiElementHeight","round","documentElement","dataSourceLength","itemCount","parseFloat","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","get","nextSibling","getscrollerHeight","startingHeight","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","resutJSON","isSelected","removeUiItem","addUiItem","changeUiIndices","liItem","previousSibling","scrollTo","increment","ind","createAndInjectNewItem","itemData","virtualTemplate","commonTemplate","div","templateElements","getElementsByTagName","groupTemplateElements","templateData","nodes","flatTemplateNodes","groupTemplateNodes","textProperty","classProperty","attributeProperty","onChange","newData","listElement","updateContextData","node","regexMatch","regex","RegExp","resultantOutput","exec","_loop_1","classFunction","classNameMatch","Function","replace","subNode","bindedvalue","this_1","newCss","attributeNames","_loop_2","attributeNameFunction","attributeValueFunction","attributeName","attrNameMatch","attrValueMatch","subNode_1","this_2","attrName","attributeValue","isChildHasTextContent","_loop_3","textFunction","textPropertyMatch","this_3","onNgChange","virtualThis","resultElement","templateCompiler","lastChild","Sortable","getHelper","getSortableElement","sender","isValidTarget","helper","offsetWidth","offsetHeight","body","onDrag","newInst","getSortableInstance","curTarget","placeHolder","placeHolderElement","scope","oldIdx","getIndex","getPlaceHolder","newIdx","isPlaceHolderPresent","childElementCount","refreshDisabled","idx","updateItemClass","droppedElement","previousIndex","currentIndex","removePlaceHolder","inst_1","onDragStart","cancelDrag","onDragStop","isBlazor","bindEvents","dragElement","prevIdx","curIdx","handled","dropInst","curIdx_1","curIdx_2","scopeName","beforeDropArgs","getComponent","Draggable","intDestroy","Sortable_1","getUniqueID","dataBind","initializeDraggable","dragStart","drag","dragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","grabbedElement","compareElementParent","inst","increased","disabledIdx","start","placeHolderPresent","offset","clientY","bottom","left","pageXOffset","destination","Base"],"mappings":"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"}