@syncfusion/ej2-lists 33.1.44 → 33.1.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/list-view/list-view.js","../src/list-view/virtualization.js","../src/sortable/sortable.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n disableHtmlEncode: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (Object.prototype.hasOwnProperty.call(curItem, 'isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.<string, string>} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.<string, string>} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n var array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return Math.floor((1 + array[0] / (0xFFFFFFFF + 1)) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n text = getSanitizedText(text, curOpt);\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li[getDomSetter(curOpt)] = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable, curOpt));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag (<a>) element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation, options) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n var curOpt = extend({}, defaultListBaseOptions, options);\n var safeText = getSanitizedText(text, curOpt);\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n anchorTag[getDomSetter(curOpt)] = safeText;\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(safeText));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)\n ? true : false;\n }\n text = getSanitizedText(text, curOpt);\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledString = compileTemplate(options.template);\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // For spreadsheet comment templates, call the template function directly instead of relying on compiled string.\n if (componentInstance && componentInstance.isInternalTemplate) {\n append(options.template(item), li);\n }\n else {\n var compiledString = compileTemplate(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable, curOpt));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n element[getDomSetter(curOpt)] = text;\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n function getDomSetter(options) {\n return options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n }\n ListBase.getDomSetter = getDomSetter;\n function getSanitizedText(text, options) {\n return options.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n }\n ListBase.getSanitizedText = getSanitizedText;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer',\n listTemplate: 'e-listview-template'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n case 'enabled':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n this.previousScrollTop = this.element.scrollTop;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enabled && this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n if (curOpt.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: ListBase.getSanitizedText(this.headerTitle, curOpt) }, true);\n }\n innerHeaderEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(this.headerTitle, curOpt);\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n textEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(text, curOpt);\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n disableHtmlEncode: this.disableHtmlEncode\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var fieldData_1;\n var checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (this.template && this.element) {\n addClass([this.element], classNames.listTemplate);\n }\n else if (this.template === null && this.element && this.element.classList && this.element.classList.contains('e-listview-template')) {\n removeClass([this.element], classNames.listTemplate);\n }\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e === fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.handleCheckboxState = function (li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, isSetCheckboxLI, textAreaFocus) {\n this.trigger('select', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n if (isSetCheckboxLI ? isCheckedBefore : !isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', isSetCheckboxLI ? (isCheckedBefore ? 'true' : 'false') : (isCheckedBefore ? 'false' : 'true'));\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (isFocusedBefore) {\n li.classList.remove(classNames.focused);\n if (textAreaFocus) {\n textAreaFocus.classList.remove('e-focused');\n }\n }\n }\n });\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.isComponentEnabled && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n ListView.prototype.leaveHandler = function () {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.isComponentEnabled && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n if (!isNullOrUndefined(li)) {\n var cbElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkboxIcon = li.querySelector('.' + classNames.checkboxIcon);\n var isCheckedBefore = checkboxIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkboxIcon, cbElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.isComponentEnabled && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n if (!isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, true, textAreaFocus);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.isComponentEnabled) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n else {\n li.classList.remove(classNames.selected);\n _this.selectedLI = li;\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.isComponentEnabled) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (Object.prototype.hasOwnProperty.call(fieldData, _this.fields.child) &&\n fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[\"\" + column]) &&\n this.fields[\"\" + column] !==\n ListBase.defaultMappedFields[\"\" + column]\n && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, _this);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, _this);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter(function (css) { return css; }) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() ===\n fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !(isNullOrUndefined(index)) && index >= 0 &&\n index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]]\n && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = { originalEvent: e, scrollDirection: 'Bottom', distanceY: this.element.scrollHeight - this.element.scrollTop };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'enabled', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n Object.defineProperty(ListView.prototype, \"isComponentEnabled\", {\n get: function () {\n return this.enabled && this.enable;\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"disableHtmlEncode\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var isRendered = this.listViewInstance.isRendered;\n var firstIndex = isRendered && !isNullOrUndefined(this.uiFirstIndex) && this.uiLastIndex <= Object.keys(curViewDS).length\n ? this.uiFirstIndex : 0;\n var firstDs = curViewDS.slice(firstIndex, firstIndex + 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.updateDOMItemCount();\n var lastIndex = isRendered && !isNullOrUndefined(this.uiLastIndex) && this.listDiff !== 0\n ? this.uiLastIndex : this.domItemCount - 1;\n this.uiFirstIndex = firstIndex;\n this.uiLastIndex = lastIndex;\n var otherDs = curViewDS.slice(firstIndex + 1, lastIndex + 1);\n var listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = isRendered ? this.topElementHeight + 'px' : '0px';\n this.bottomElement.style.height = isRendered ? (this.totalHeight - this.topElementHeight) + 'px' : this.totalHeight + 'px';\n this.topElementHeight = isRendered ? this.topElementHeight : 0;\n this.bottomElementHeight = isRendered ? (this.totalHeight - this.topElementHeight) : this.totalHeight;\n this.listDiff = isRendered && Object.keys(curViewDS).length !== this.domItemCount ? this.listDiff : 0;\n if (isRendered) {\n this.listViewInstance.element.scrollTop = this.listViewInstance.previousScrollTop;\n }\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.updateDOMItemCount = function () {\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n var startingHeight;\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) ?\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var curViewDS = this.listViewInstance.curViewDS[index];\n var iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n fields[_this.listViewInstance.fields.id]\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][\"\" + text]);\n dataCollection.push(curViewDS_2[indexArray[parseInt(i.toString(), 10)]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var _this = this;\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked_1;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked_1 = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked_1 = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs_1;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs_1 = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs_1 = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n if (!isChecked_1) {\n eventArgs_1.isChecked = isChecked_1;\n _this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n eventArgs_1.isChecked = !isChecked_1;\n _this.uiIndices.activeIndices.splice(_this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n }\n });\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.activeIndex = undefined;\n }\n });\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource, index) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index_1 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index_1);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index_1 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index_1;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index_1);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index_2 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index_2);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index_2 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index_2 - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div_1 = document.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n var templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n var nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach(function (ele) {\n div_1.appendChild(ele);\n });\n if (div_1.children && div_1.children[0]) {\n div_1.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].classList.add('e-checkbox-left');\n }\n else {\n div_1.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);\n }\n else {\n div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div_1.children).forEach(function (ele) {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n this.setItemContext(args.item, args.curData, !!args.curData.isHeader);\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n else {\n this.updateUiContent(element, index);\n var curViewDS = this.listViewInstance.curViewDS[index];\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n Virtualization.prototype.onChange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach(function (ele) {\n listElement.appendChild(ele);\n });\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n };\n Virtualization.prototype.setItemContext = function (item, curData, isHeader) {\n var el = item;\n var existing = (el.context || {});\n el.context = __assign({}, existing, { data: curData, nodes: existing.nodes || { flatTemplateNodes: [], groupTemplateNodes: [] }, type: isHeader ? 'groupList' : 'flatList' });\n if (item.firstElementChild) {\n el.context.template = item.firstElementChild;\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property, detach, Browser } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1)) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n _this.removePlaceHolder(newInst);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n _this.removePlaceHolder(_this.getSortableInstance(_this.curTarget));\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n if (isNullOrUndefined(_this.target) && closest(_this.element, '.e-listbox-container') && Browser.isDevice) {\n detach(e.dragElement);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n return;\n }\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_1) >= 1 ? prevIdx - 1 : prevIdx;\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n if (observedArgs.currentIndex > observedArgs.previousIndex) {\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) >= 1 ? prevIdx - 1 : prevIdx;\n }\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n _this.removePlaceHolder(dropInst);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n if (_this.curTarget === _this.target && e.target === _this.curTarget) {\n curIdx = prevIdx;\n }\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((dropInst.element === e.target || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1) || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nr-template') > -1)\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = scrollX ? parseFloat(value.left) - scrollX + \"px\" : value.left;\n value.top = scrollY ? parseFloat(value.top) - scrollY + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n"],"names":["createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","li","curData","subChild","curOpt","extend","defaultListBaseOptions","id","cssClass","getModuleClass","moduleName","generateId","i","length","isNullOrUndefined","itemCreating","text","generateSingleLevelLI","undefined","generateLI","itemCreated","item","push","createListItemFromJson","level","anchorElement","fields","getModuleName","ListBase","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","child","typeofData","Object","prototype","hasOwnProperty","call","tooltipText","element","subDS","hasChildren","fieldData","getFieldValues","curItem","innerEle","showCheckBox","itemNavigable","url","urlAttributes","className","check","attrs","type","showIcon","iconCss","icon","itemClass","isHeader","querySelector","anchorWrap","tooltip","innerHTML","getSanitizedText","innerText","setAttribute","prepend","firstElementChild","classList","add","toString","groupItemRole","itemRole","removeAttribute","htmlAttributes","trim","enabled","disabled","isVisible","style","display","imageUrl","template","attr","src","alt","name","merge","imageAttributes","imageElemnt","image","insertAdjacentElement","iconElement","hasChild","processSubChild","subLi","createListFromJson","appendChild","expandCollapse","iconWrapper","expandIconPosition","append","expandIconClass","textContent","addClass","navigable","listClass","indexOf","elementArray","Array","slice","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","data","match","typeof","elementAttributes","class","split","attributes","getAllAttributes","index","nodeName","nodeValue","array","Uint32Array","window","crypto","getRandomValues","Math","floor","substring","innerElements","grpLI","value","elementID","group","role","getDomSetter","href","anchorTag","document","createTextNode","ul","checked","selected","expanded","collapsible","isFullNavigation","safeText","anchorWrapper","compiledElement","compiledString","innerDiv","uID","groupTemplate","compileTemplate","groupTemplateID","isStringTemplate","templateID","isInternalTemplate","wrapperRole","itemText","liElement","ulElement","listRole","disableHtmlEncode","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","dataItem","_i","_a","keys","dataField","getValue","compile","e","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","liCollections","liIndex","siblingLI","contains","groupDataSource","curFields","ds","j","itemObj","items","grpItem","key","_id","k","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","extendStatics","d","b","setPrototypeOf","__proto__","p","_super","__extends","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","container","backIcon","backButton","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","listTemplate","LISTVIEW_TEMPLATE_PROPERTY","LISTVIEW_GROUPTEMPLATE_PROPERTY","FieldSettings","ChildProperty","Property","apply","Component","ListView","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","previousScrollTop","scrollTop","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerTemplateEle","textEle","hedBackButton","headerEle","showHeader","innerHeaderEle","setProperties","outerHTML","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","overflow_1","duration","anim","_this","position","overflow","animation","effect","aniObj","animate","animationMode","timingFunction","easing","end","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","enablePersistence","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","frameElement_1","fieldData_1","createCheckBox","findIndex","checkInternally","checkBoxPosition","insertBefore","virtualCheckBox","children","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","handleCheckboxState","isCheckedBefore","isFocusedBefore","eventArgs","isSetCheckboxLI","textAreaFocus","observedArgs","cancel","clickHandler","isArray","targetElement","back","closest","parentNode","removeFocus","isComponentEnabled","isValidLI","setCheckboxLI","selectEventData","removeHover","removeSelect","setSelectLI","closestElement","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","firstItemBounds","groupItemBounds","heightDiff","topHeight","headerBounds","getBoundingClientRect","top","elementHeight","siblingTop","siblingHeight","scroll","pageYOffset","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","enterKeyHandler","spaceKeyHandler","cbElement","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","selectedLI","wireEvents","EventHandler","touchModule","Touch","swipe","onListScroll","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","renderSubList","selectedItem","isInteracted","event","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","getElementUID","curDS","parent","resultJSON","some","getQuery","columns","column","select","from","tableName","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","parseInt","getAttribute","updateDOMItemCount","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","toUL","pID","pop","fromUL","selectItem","unselectItem","uid","selectMultipleItems","getParentId","parentId","getElementsByClassName","tempData","getSelectedItems","finalValue","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","addItemAtIndex","targetUL","addItemIntoDom","addItemInNestedList","newDataSource","itemData","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","curItemDS","addListItem","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","li_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","scrollDirection","distanceY","scrollHeight","currentScrollTop","getPersistData","addOnPersist","get","enumerable","configurable","Complex","Event","NotifyPropertyChanges","previousSelectedItems","hiddenItems","enabledItems","disabledItems","__assign","assign","t","s","n","Virtualization","listViewInstance","templateRef","isVueFunctionTemplate","isVue","wireScrollEvent","isRendered","firstIndex","uiLastIndex","firstDs","lastIndex","expectedDomItemCount","ValidateItemCount","listDiff","domItemCount","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","addEventListener","dataSourceLength","parseFloat","itemCount","round","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","nextSibling","getscrollerHeight","startingHeight","documentElement","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","isSelected","isChecked_1","eventArgs_1","resutJSON","removeUiItem","addUiItem","liItem","changeUiIndices","previousSibling","scrollTo","increment","ind","index_2","index_1","createAndInjectNewItem","templateData","div_1","commonTemplate","nodes","forEach","lastChild","setItemContext","onChange","onNgChange","newData","listElement","virtualThis","resultElement","el","existing","flatTemplateNodes","groupTemplateNodes","instance","elementDifference","Sortable_1","Sortable","Base","getUniqueID","dataBind","initializeDraggable","Draggable","helper","getHelper","dragStart","onDragStart","drag","onDrag","dragStop","onDragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","wrapper","keyDownHandler","unwireEvents","getComponent","intDestroy","dragWrapper","dragPlaceholder","getPlaceHolder","placeHolder","placeHolderElement","grabbedElement","isValidTarget","compareElementParent","removePlaceHolder","updateItemClass","getSortableInstance","inst","scope","getIndex","idx","placeHolderPresent","clientY","offset","bottom","cltY","changedTouches","getSortableElement","left","scrollX","scrollY","isPlaceHolderPresent","moveTo","destination","targetIndexes","sender","offsetWidth","offsetHeight","body","inst_1","newInst","curTarget","oldIdx","newIdx","childElementCount","droppedElement","previousIndex","currentIndex","cancelDrag","Browser","isDevice","dragElement","isBlazor","bindEvents","curIdx","handled","prevIdx","beforeDropArgs","dropInst","curIdx_1","curIdx_2","scopeName","to","insertElement_1","targetElements"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-lists.umd.min.js","sources":["../src/common/list-base.js","../src/list-view/list-view.js","../src/list-view/virtualization.js","../src/sortable/sortable.js"],"sourcesContent":["/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n disableHtmlEncode: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (Object.prototype.hasOwnProperty.call(curItem, 'isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n tooltipText = getSanitizedText(tooltipText, curOpt);\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.<string, string>} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.<string, string>} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n var array = new Uint32Array(1);\n window.crypto.getRandomValues(array);\n return Math.floor((1 + array[0] / (0xFFFFFFFF + 1)) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n text = getSanitizedText(text, curOpt);\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li[getDomSetter(curOpt)] = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable, curOpt));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag (<a>) element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation, options) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n var curOpt = extend({}, defaultListBaseOptions, options);\n var safeText = getSanitizedText(text, curOpt);\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n anchorTag[getDomSetter(curOpt)] = safeText;\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(safeText));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)\n ? true : false;\n }\n text = getSanitizedText(text, curOpt);\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledString = compileTemplate(options.template);\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n // For spreadsheet comment templates, call the template function directly instead of relying on compiled string.\n if (componentInstance && componentInstance.isInternalTemplate) {\n append(options.template(item), li);\n }\n else {\n var compiledString = compileTemplate(options.template);\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable, curOpt));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n element[getDomSetter(curOpt)] = text;\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n function getDomSetter(options) {\n return options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n }\n ListBase.getDomSetter = getDomSetter;\n function getSanitizedText(text, options) {\n return options.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(text) : text;\n }\n ListBase.getSanitizedText = getSanitizedText;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, formatUnit, isNullOrUndefined, append, detach, extend } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, prepend, closest, remove } from '@syncfusion/ej2-base';\nimport { Component, EventHandler, Property, Complex, Event } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty } from '@syncfusion/ej2-base';\nimport { compile, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Animation, rippleEffect, Touch, animationMode } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase, getFieldValues } from '../common/list-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nexport var classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n container: 'e-list-container',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer',\n listTemplate: 'e-listview-template'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Represents the EJ2 ListView control.\n * ```html\n * <div id=\"listview\">\n * <ul>\n * <li>Favorite</li>\n * <li>Documents</li>\n * <li>Downloads</li>\n * </ul>\n * </div>\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n case 'enabled':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n this.previousScrollTop = this.element.scrollTop;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes) && Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enabled && this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText });\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n if (curOpt.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: ListBase.getSanitizedText(this.headerTitle, curOpt) }, true);\n }\n innerHeaderEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(this.headerTitle, curOpt);\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n var curOpt = this.listBaseOption || {\n enableHtmlSanitizer: this.enableHtmlSanitizer, disableHtmlEncode: this.disableHtmlEncode\n };\n textEle[ListBase.getDomSetter(curOpt)] = ListBase.getSanitizedText(text, curOpt);\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[\"\" + slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: (duration === 0 && animationMode === 'Enable') ? 400 : duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'list', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n disableHtmlEncode: this.disableHtmlEncode\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && args.item.classList.contains(classNames.listItem)) {\n var fieldData_1;\n var checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (this.template && this.element) {\n addClass([this.element], classNames.listTemplate);\n }\n else if (this.template === null && this.element && this.element.classList && this.element.classList.contains('e-listview-template')) {\n removeClass([this.element], classNames.listTemplate);\n }\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e === fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index !== -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', args.text);\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.handleCheckboxState = function (li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, isSetCheckboxLI, textAreaFocus) {\n this.trigger('select', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n if (isSetCheckboxLI ? isCheckedBefore : !isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', isSetCheckboxLI ? (isCheckedBefore ? 'true' : 'false') : (isCheckedBefore ? 'false' : 'true'));\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (isFocusedBefore) {\n li.classList.remove(classNames.focused);\n if (textAreaFocus) {\n textAreaFocus.classList.remove('e-focused');\n }\n }\n }\n });\n };\n ListView.prototype.clickHandler = function (e) {\n if (Array.isArray(this.dataSource) && this.dataSource.length === 0) {\n return;\n }\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.isComponentEnabled && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName === 'INPUT') || (target.nodeName === 'TEXTAREA')) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n ListView.prototype.leaveHandler = function () {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n if (this.isComponentEnabled && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n e.preventDefault();\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n if (!isNullOrUndefined(li)) {\n var cbElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkboxIcon = li.querySelector('.' + classNames.checkboxIcon);\n var isCheckedBefore = checkboxIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n this.handleCheckboxState(li, checkboxIcon, cbElement, isCheckedBefore, isFocusedBefore, eventArgs, false);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox && !isNullOrUndefined(this.selectedLI)) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.add(this.element, 'scroll', this.onListScroll, this);\n }\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'keydown', this.keyActionHandler);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'focusout', this.focusout);\n if (!isNullOrUndefined(this.scroll)) {\n EventHandler.remove(this.element, 'scroll', this.onListScroll);\n }\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n this.touchModule = null;\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.isComponentEnabled && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n var isCheckedBefore = checkIcon.classList.contains(classNames.checked);\n var isFocusedBefore = li.classList.contains(classNames.focused);\n if (!isCheckedBefore) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.handleCheckboxState(li, checkIcon, checkboxElement, isCheckedBefore, isFocusedBefore, eventArgs, true, textAreaFocus);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, {\n isInteracted: true,\n event: e,\n cancel: false,\n index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li)\n });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.isComponentEnabled) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n else {\n li.classList.remove(classNames.selected);\n _this.selectedLI = li;\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.isComponentEnabled) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n }\n else if (Object.prototype.hasOwnProperty.call(fieldData, _this.fields.child) &&\n fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[\"\" + column]) &&\n this.fields[\"\" + column] !==\n ListBase.defaultMappedFields[\"\" + column]\n && columns.indexOf(this.fields[\"\" + column]) === -1) {\n columns.push(this.fields[\"\" + column]);\n }\n }\n query.select(columns);\n if (Object.prototype.hasOwnProperty.call(this.fields.properties, 'tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, _this);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, _this);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[parseInt(i.toString(), 10)];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.container });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n this.previousScrollTop = this.element.scrollTop;\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass ? this.cssClass.split(' ').filter(function (css) { return css; }) : []);\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n if (this.enableVirtualization) {\n this.virtualizationModule.updateDOMItemCount();\n }\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n /**\n * This method allows for deselecting a list item within the ListView. The item to be deselected can be specified by passing the element or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass an element Object or Fields as an Object with ID and Text fields.\n */\n ListView.prototype.unselectItem = function (item) {\n if (isNullOrUndefined(item)) {\n this.removeSelect();\n }\n else {\n var li = this.getLiFromObjOrElement(item);\n if (!isNullOrUndefined(li)) {\n this.removeSelect(li);\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[parseInt(i.toString(), 10)].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n if (curLi[parseInt(i.toString(), 10)].innerText.trim() ===\n fieldData[this.fields.text]) {\n li = curLi[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[parseInt(i.toString(), 10)])) {\n this.selectItem(item[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[parseInt(i.toString(), 10)]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(tempData) && tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[parseInt(i.toString(), 10)].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[parseInt(i.toString(), 10)]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n * @param {number} index - Indicates the index where the data to be added.\n */\n ListView.prototype.addItem = function (data, fields, index) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource, index);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource, index) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource, index);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource = this.addItemAtIndex(index, dataSource, data[parseInt(i.toString(), 10)]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[parseInt(i.toString(), 10)], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemAtIndex = function (index, newDataSource, itemData) {\n var isIndexValid = !(isNullOrUndefined(index)) && index >= 0 &&\n index < newDataSource.length && isNullOrUndefined(this.listBaseOption.fields.groupBy);\n if (isIndexValid) {\n newDataSource.splice(index, 0, itemData);\n }\n else {\n newDataSource.push(itemData);\n }\n return newDataSource;\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n // if li element is already rendered, that element needs to be refreshed so that\n // it becomes child viewable due to new child items are added now\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[parseInt(i.toString(), 10)]);\n this.addItemIntoDom(itemQueue[parseInt(i.toString(), 10)], targetUL, targetDS);\n }\n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[parseInt(i.toString(), 10)]);\n }\n }\n };\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n if (Object.prototype.hasOwnProperty.call(dataSource, id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]]\n && typeof dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]] === 'object') {\n var result = this.findParent(dataSource[Object.keys(dataSource)[parseInt(i.toString(), 10)]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization', name: 'Virtualization' });\n }\n return modules;\n };\n ListView.prototype.onListScroll = function (e) {\n var args = { originalEvent: e, scrollDirection: 'Bottom', distanceY: this.element.scrollHeight - this.element.scrollTop };\n var currentScrollTop = this.element.scrollTop;\n if (currentScrollTop > this.previousScrollTop) {\n args.scrollDirection = 'Bottom';\n args.distanceY = this.element.scrollHeight - this.element.clientHeight - this.element.scrollTop;\n this.trigger('scroll', args);\n }\n else if (this.previousScrollTop > currentScrollTop) {\n args.scrollDirection = 'Top';\n args.distanceY = this.element.scrollTop;\n this.trigger('scroll', args);\n }\n this.previousScrollTop = currentScrollTop;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'enabled', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n Object.defineProperty(ListView.prototype, \"isComponentEnabled\", {\n get: function () {\n return this.enabled && this.enable;\n },\n enumerable: true,\n configurable: true\n });\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"disableHtmlEncode\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"scroll\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\nexport { ListView };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { classNames } from './list-view';\nimport { EventHandler, append, isNullOrUndefined, detach, compile, formatUnit, select } from '@syncfusion/ej2-base';\nimport { ListBase } from '../common/list-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var isRendered = this.listViewInstance.isRendered;\n var firstIndex = isRendered && !isNullOrUndefined(this.uiFirstIndex) && this.uiLastIndex <= Object.keys(curViewDS).length\n ? this.uiFirstIndex : 0;\n var firstDs = curViewDS.slice(firstIndex, firstIndex + 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.container });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.updateDOMItemCount();\n var lastIndex = isRendered && !isNullOrUndefined(this.uiLastIndex) && this.listDiff !== 0\n ? this.uiLastIndex : this.domItemCount - 1;\n this.uiFirstIndex = firstIndex;\n this.uiLastIndex = lastIndex;\n var otherDs = curViewDS.slice(firstIndex + 1, lastIndex + 1);\n var listItems = ListBase.createListItemFromJson(this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = isRendered ? this.topElementHeight + 'px' : '0px';\n this.bottomElement.style.height = isRendered ? (this.totalHeight - this.topElementHeight) + 'px' : this.totalHeight + 'px';\n this.topElementHeight = isRendered ? this.topElementHeight : 0;\n this.bottomElementHeight = isRendered ? (this.totalHeight - this.topElementHeight) : this.totalHeight;\n this.listDiff = isRendered && Object.keys(curViewDS).length !== this.domItemCount ? this.listDiff : 0;\n if (isRendered) {\n this.listViewInstance.element.scrollTop = this.listViewInstance.previousScrollTop;\n }\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n }\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.updateDOMItemCount = function () {\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n if (!isNullOrUndefined(data[parseInt(i.toString(), 10)][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n var startingHeight;\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = select('.e-list-item', this.listViewInstance.element).getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n element.dataset.uid = (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) ?\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n (curViewDs[parseInt(index.toString(), 10)][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var curViewDS = this.listViewInstance.curViewDS[index];\n var iconCss = curViewDS[this.listViewInstance.fields.iconCss].toString();\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' + iconCss\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n textContent.classList.add('e-checkbox-left');\n }\n else {\n textContent.classList.add('e-checkbox-right');\n }\n textContent.append(this.checkListWrapper.cloneNode(true));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n fields[_this.listViewInstance.fields.id]\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][\"\" + text]);\n dataCollection.push(curViewDS_2[indexArray[parseInt(i.toString(), 10)]]);\n }\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n var _this = this;\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked_1;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked_1 = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked_1 = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n var eventArgs_1;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs_1 = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs_1 = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n if (!isChecked_1) {\n eventArgs_1.isChecked = isChecked_1;\n _this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n eventArgs_1.isChecked = !isChecked_1;\n _this.uiIndices.activeIndices.splice(_this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n }\n });\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs_1, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.activeIndex = undefined;\n }\n });\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource, index) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource = this.listViewInstance.addItemAtIndex(index, dataSource, currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index_1 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index_1);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index_1 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index_1;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index_1);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n var index_2 = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index_2);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index_2 - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index_2 - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy\n && this.listViewInstance.curViewDS[index + 1]\n && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n if (!args.item.classList.contains('e-list-group-item')) {\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div_1 = document.createElement('div');\n var commonTemplate = '<div class=\"e-text-content\" role=\"presentation\"> ' +\n '<span class=\"e-list-text\"> ${' + this.listViewInstance.fields.text + '} </span></div>';\n var templateFunction = compile(this.listViewInstance.template || commonTemplate, this.listViewInstance);\n var nodes = templateFunction(this.templateData, this.listViewInstance);\n if (this.listViewInstance.template && this.listViewInstance.isReact) {\n this.listViewInstance.renderReactTemplates();\n }\n [].slice.call(nodes).forEach(function (ele) {\n div_1.appendChild(ele);\n });\n if (div_1.children && div_1.children[0]) {\n div_1.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].classList.add('e-checkbox-left');\n }\n else {\n div_1.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div_1.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div_1.childNodes[0].children[0]);\n }\n else {\n div_1.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n while (args.item.lastChild) {\n args.item.removeChild(args.item.lastChild);\n }\n [].slice.call(div_1.children).forEach(function (ele) {\n args.item.appendChild(ele);\n });\n }\n }\n }\n }\n this.setItemContext(args.item, args.curData, !!args.curData.isHeader);\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n var onChange = this.isNgTemplate() ? this.onNgChange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n else {\n this.updateUiContent(element, index);\n var curViewDS = this.listViewInstance.curViewDS[index];\n this.setItemContext(element, curViewDS, !!curViewDS.isHeader);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n * @returns {void}\n */\n Virtualization.prototype.onChange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n if (virtualThis.listViewInstance.isReact) {\n virtualThis.listViewInstance.renderReactTemplates();\n }\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n [].slice.call(liItem[0].children).forEach(function (ele) {\n listElement.appendChild(ele);\n });\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n virtualThis.setItemContext(listElement, newData, !!newData.isHeader);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n this.topElement = null;\n this.bottomElement = null;\n };\n Virtualization.prototype.setItemContext = function (item, curData, isHeader) {\n var el = item;\n var existing = (el.context || {});\n el.context = __assign({}, existing, { data: curData, nodes: existing.nodes || { flatTemplateNodes: [], groupTemplateNodes: [] }, type: isHeader ? 'groupList' : 'flatList' });\n if (item.firstElementChild) {\n el.context.template = item.firstElementChild;\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base, Event, getUniqueID, NotifyPropertyChanges, Property, detach, Browser } from '@syncfusion/ej2-base';\nimport { closest, Draggable, remove, compareElementParent } from '@syncfusion/ej2-base';\nimport { addClass, isNullOrUndefined, getComponent, isBlazor, EventHandler } from '@syncfusion/ej2-base';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n * <div id=\"sortable\">\n * <div>Item 1</div>\n * <div>Item 2</div>\n * <div>Item 3</div>\n * <div>Item 4</div>\n * <div>Item 5</div>\n * </div>\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @class */ (function (_super) {\n __extends(Sortable, _super);\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.getHelper = function (e) {\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n _this.onDrag = function (e) {\n if (!e.target) {\n return;\n }\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1)) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target : true)) {\n if (e.target.classList.contains('e-list-group-item')) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n _this.removePlaceHolder(newInst);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target && typeof e.target.className === 'string' && e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n _this.removePlaceHolder(_this.getSortableInstance(_this.curTarget));\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n if (isNullOrUndefined(_this.target) && closest(_this.element, '.e-listbox-container') && Browser.isDevice) {\n detach(e.dragElement);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n return;\n }\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_1) >= 1 ? prevIdx - 1 : prevIdx;\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n if (observedArgs.currentIndex > observedArgs.previousIndex) {\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) >= 1 ? prevIdx - 1 : prevIdx;\n }\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n _this.removePlaceHolder(dropInst);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element.querySelector('.e-list-nrt')) {\n curIdx = curIdx - 1;\n }\n var sortableTargetElement = _this.getSortableElement(e.target, dropInst);\n if (_this.curTarget === _this.target && sortableTargetElement === _this.curTarget) {\n curIdx = prevIdx;\n }\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if ((dropInst.element === e.target || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nrt') > -1) || (typeof e.target.className === 'string' && e.target.className.indexOf('e-list-nr-template') > -1)\n || e.target.closest('.e-list-nr-template')) && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 1\n });\n this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\n }\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = scrollX ? parseFloat(value.left) - scrollX + \"px\" : value.left;\n value.top = scrollY ? parseFloat(value.top) - scrollY + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n this.unwireEvents();\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\nexport { Sortable };\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param {HTMLElement} from - The source element from which to move elements.\n * @param {HTMLElement} [to=from] - The destination element to which to move elements. Defaults to the source element.\n * @param {number[]} [targetIndexes] - The indexes of elements to move. If not provided, all children of the source element will be moved.\n * @param {number} [insertBefore] - The index before which to insert the moved elements in the destination element. If not provided, elements will be appended to the end of the destination element.\n * @returns {void}\n * @private\n */\nexport function moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n"],"names":["createListFromArray","createElement","dataSource","isSingleLevel","options","componentInstance","generateUL","createListItemFromArray","li","curData","subChild","curOpt","extend","defaultListBaseOptions","id","cssClass","getModuleClass","moduleName","generateId","i","length","isNullOrUndefined","itemCreating","text","generateSingleLevelLI","undefined","generateLI","itemCreated","item","push","createListItemFromJson","level","anchorElement","fields","getModuleName","ListBase","defaultMappedFields","ariaAttributes","defaultAriaAttributes","checkboxElement","child","typeofData","Object","prototype","hasOwnProperty","call","tooltipText","element","subDS","hasChildren","fieldData","getFieldValues","curItem","innerEle","showCheckBox","itemNavigable","url","urlAttributes","className","check","attrs","type","showIcon","iconCss","icon","itemClass","isHeader","querySelector","anchorWrap","tooltip","innerHTML","getSanitizedText","innerText","setAttribute","prepend","firstElementChild","classList","add","toString","groupItemRole","itemRole","removeAttribute","htmlAttributes","trim","enabled","disabled","isVisible","style","display","imageUrl","template","attr","src","alt","name","merge","imageAttributes","imageElemnt","image","insertAdjacentElement","iconElement","hasChild","processSubChild","subLi","createListFromJson","appendChild","expandCollapse","iconWrapper","expandIconPosition","append","expandIconClass","textContent","addClass","navigable","listClass","indexOf","elementArray","Array","slice","addSorting","sortOrder","sortBy","query","Query","queries","fn","splice","getDataSource","DataManager","executeLocal","data","match","typeof","elementAttributes","class","split","attributes","getAllAttributes","index","nodeName","nodeValue","array","Uint32Array","window","crypto","getRandomValues","Math","floor","substring","innerElements","grpLI","value","elementID","group","role","getDomSetter","href","anchorTag","document","createTextNode","ul","checked","selected","expanded","collapsible","isFullNavigation","safeText","anchorWrapper","compiledElement","compiledString","innerDiv","uID","groupTemplate","compileTemplate","groupTemplateID","isStringTemplate","templateID","isInternalTemplate","wrapperRole","itemText","liElement","ulElement","listRole","disableHtmlEncode","enableHtmlSanitizer","SanitizeHtmlHelper","sanitize","dataItem","_i","_a","keys","dataField","getValue","compile","e","isChecked","groupBy","headerTemplate","createList","getSiblingLI","isPrevious","liCollections","liIndex","siblingLI","contains","groupDataSource","curFields","ds","j","itemObj","items","grpItem","key","_id","k","createJsonFromElement","curEle","cloneNode","jsonAr","childs","querySelectorAll","remove","anchor","json","childNodes","i_1","Number","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","header","headerData","generateIcon","extendStatics","d","b","setPrototypeOf","__proto__","p","_super","__extends","__","this","constructor","create","__decorate","decorators","target","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","effectsConfig","None","SlideLeft","SlideDown","Zoom","Fade","effectsRTLConfig","classNames","root","hover","focused","parentItem","listItem","listIcon","listItemText","groupListItem","view","headerText","headerTemplateText","disable","container","backIcon","backButton","checkboxWrapper","checkbox","checklist","checkboxIcon","checkboxRight","checkboxLeft","listviewCheckbox","itemCheckList","virtualElementContainer","listTemplate","LISTVIEW_TEMPLATE_PROPERTY","LISTVIEW_GROUPTEMPLATE_PROPERTY","FieldSettings","ChildProperty","Property","apply","Component","ListView","onPropertyChanged","newProp","oldProp","setHTMLAttribute","setCSSClass","setEnable","setSize","setEnableRTL","listBaseOption","properties","enableVirtualization","virtualizationModule","reRenderUiVirtualization","reRender","curDSLevel","headerTitle","contentContainer","detach","refresh","setCheckbox","previousScrollTop","scrollTop","curViewDS","getSubDS","resetCurrentList","oldCSSClass","filter","css","removeClass","height","formatUnit","width","isWindow","clientHeight","enableElement","enable","enableRtl","isEnabled","showBack","prop","headerTemplateEle","textEle","hedBackButton","headerEle","showHeader","innerHeaderEle","setProperties","outerHTML","LISTVIEW_HEADERTEMPLATE_ID","isReact","renderReactTemplates","parentElement","switchView","fromView","toView","reverse","fPos_1","overflow_1","duration","anim","_this","position","overflow","animation","effect","aniObj","animate","animationMode","timingFunction","easing","end","trigger","curUL","preRender","renderCheckbox","bind","initialization","animateOptions","currentLiElements","isNestedList","selectedData","selectedId","enablePersistence","LISTVIEW_TEMPLATE_ID","LISTVIEW_GROUPTEMPLATE_ID","Animation","removeElement","args","frameElement_1","fieldData_1","createCheckBox","findIndex","checkInternally","checkBoxPosition","insertBefore","virtualCheckBox","children","lastElementChild","checkItem","toggleCheckBase","HTMLLIElement","getLiFromObjOrElement","setSelectedItemData","updateSelectedId","uncheckItem","checkAllItems","toggleAllCheckBase","uncheckAllItems","checkIcon","checkedItem","getItemData","selectedItems","refreshItemHeight","handleCheckboxState","isCheckedBefore","isFocusedBefore","eventArgs","isSetCheckboxLI","textAreaFocus","observedArgs","cancel","clickHandler","isArray","targetElement","back","closest","parentNode","removeFocus","isComponentEnabled","isValidLI","setCheckboxLI","selectEventData","removeHover","removeSelect","setSelectLI","closestElement","removeChild","hoverHandler","curLi","setHoverLI","leaveHandler","homeKeyHandler","preventDefault","focusedElement","onArrowKeyDown","prev","arrowKeyHandler","elementTop","firstItemBounds","groupItemBounds","heightDiff","topHeight","headerBounds","getBoundingClientRect","top","elementHeight","siblingTop","siblingHeight","scroll","pageYOffset","innerHeight","uiFirstIndex","onUIScrolled","listItemHeight","enterKeyHandler","spaceKeyHandler","cbElement","keyActionHandler","keyCode","swipeActionHandler","swipeDirection","velocity","originalEvent","focusout","selectedLI","wireEvents","EventHandler","touchModule","Touch","swipe","onListScroll","unWireEvents","destroy","focusedLI_1","hoverLI","selectedLI_1","ele","renderSubList","selectedItem","isInteracted","event","lastLi","levelKeys","localData","levelKeys_1","field","curDSJSON","findItemFromDS","getElementUID","curDS","parent","resultJSON","some","getQuery","columns","column","select","from","tableName","setViewDataSource","fieldValue","isInAnimation","renderRemoteLists","listViewComponent","isDestroyed","result","renderList","triggerActionFailure","setLocalData","ready","then","isOffline","offline","catch","executeQuery","clearTemplate","renderIntoDom","setAttributes","liElements","parseInt","getAttribute","updateDOMItemCount","lists","isNgTemplate","createUIItem","uiVirtualization","obj","Element","render","tabindex","rippleFn","rippleEffect","selector","renderComplete","classAr","concat","toUL","pID","pop","fromUL","selectItem","unselectItem","uid","selectMultipleItems","getParentId","parentId","getElementsByClassName","tempData","getSelectedItems","finalValue","isCompleted","liTextCollection","liDataCollection","dataParent","findItem","enableItem","setItemState","disableItem","isEnable","showItem","showHideItem","hideItem","isHide","addItem","addItemInternally","addItemAtIndex","targetUL","addItemIntoDom","addItemInNestedList","newDataSource","itemData","targetItemData","itemQueue","targetItemId","targetChildDS","isAlreadyRenderedUL","targetLi","targetDS","targetRefreshedElement","currentItem","curItemDS","addListItem","targetEle","nextElementSibling","removeItem","listDataSource","removeItemFromList","data_1","li_1","groupLi","validateNestedView","previousElementSibling","foundData","findParent","dsIndex","parentLi","liID","toLowerCase","removeMultipleItems","callback","requiredModules","modules","member","scrollDirection","distanceY","scrollHeight","currentScrollTop","getPersistData","addOnPersist","get","enumerable","configurable","Complex","Event","NotifyPropertyChanges","previousSelectedItems","hiddenItems","enabledItems","disabledItems","__assign","assign","t","s","n","Virtualization","listViewInstance","templateRef","isVueFunctionTemplate","isVue","wireScrollEvent","isRendered","firstIndex","uiLastIndex","firstDs","lastIndex","expectedDomItemCount","ValidateItemCount","listDiff","domItemCount","otherDs","listItems","topElement","bottomElement","totalHeight","topElementHeight","bottomElementHeight","uiIndicesInitialization","removeEventListener","onVirtualScroll","updateUl","onVirtualUiScroll","addEventListener","dataSourceLength","parseFloat","itemCount","round","uiIndices","activeIndices","disabledItemIndices","hiddenItemIndices","context","viewContainerRef","nextSibling","getscrollerHeight","startingHeight","documentElement","scrollPosition","onLongScroll","onNormalScroll","isScrollingDown","elements","updateUI","updateUiContent","curViewDs","dataset","checkListWrapper","changeElementAttributes","checklistElement","activeIndex","findDSAndIndexFromId","dataCollection","textCollection","curViewDS_1","indices","map","curViewDS_2","indexArray","dataSource_1","isSelected","isChecked_1","eventArgs_1","resutJSON","removeUiItem","addUiItem","liItem","changeUiIndices","previousSibling","scrollTo","increment","ind","index_2","index_1","createAndInjectNewItem","templateData","div_1","commonTemplate","nodes","forEach","lastChild","setItemContext","onChange","onNgChange","newData","listElement","virtualThis","resultElement","el","existing","flatTemplateNodes","groupTemplateNodes","instance","elementDifference","Sortable_1","Sortable","Base","getUniqueID","dataBind","initializeDraggable","Draggable","helper","getHelper","dragStart","onDragStart","drag","onDrag","dragStop","onDragStop","dragTarget","enableTapHold","tapHoldThreshold","queryPositionInfo","distance","wrapper","keyDownHandler","unwireEvents","getComponent","intDestroy","dragWrapper","dragPlaceholder","getPlaceHolder","placeHolder","placeHolderElement","grabbedElement","isValidTarget","compareElementParent","removePlaceHolder","updateItemClass","getSortableInstance","inst","scope","getIndex","idx","placeHolderPresent","clientY","offset","bottom","cltY","changedTouches","getSortableElement","left","scrollX","scrollY","isPlaceHolderPresent","moveTo","destination","targetIndexes","sender","offsetWidth","offsetHeight","body","inst_1","newInst","curTarget","oldIdx","newIdx","childElementCount","droppedElement","previousIndex","currentIndex","cancelDrag","Browser","isDevice","dragElement","isBlazor","bindEvents","curIdx","handled","prevIdx","dropInst","sortableTargetElement","curIdx_1","curIdx_2","scopeName","beforeDropArgs","to","insertElement_1","targetElements"],"mappings":"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"}