@syncfusion/ej2-multicolumn-combobox 29.2.4 → 30.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.json +2 -0
- package/dist/ej2-multicolumn-combobox.umd.min.js +2 -2
- package/dist/ej2-multicolumn-combobox.umd.min.js.map +1 -1
- package/dist/es6/ej2-multicolumn-combobox.es2015.js +91 -80
- package/dist/es6/ej2-multicolumn-combobox.es2015.js.map +1 -1
- package/dist/es6/ej2-multicolumn-combobox.es5.js +99 -98
- package/dist/es6/ej2-multicolumn-combobox.es5.js.map +1 -1
- package/dist/global/ej2-multicolumn-combobox.min.js +2 -2
- package/dist/global/ej2-multicolumn-combobox.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +14 -49
- package/src/multicolumn-combobox/multi-column-combo-box-model.d.ts +1 -1
- package/src/multicolumn-combobox/multi-column-combo-box.d.ts +9 -3
- package/src/multicolumn-combobox/multi-column-combo-box.js +99 -98
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ej2-multicolumn-combobox.min.js","sources":["../../src/multicolumn-combobox/multi-column-combo-box.js"],"sourcesContent":["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};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Component, EventHandler, Property, NotifyPropertyChanges, closest, attributes, append, compile, detach, KeyboardEvents, getValue } from '@syncfusion/ej2-base';\nimport { ChildProperty, prepend, Collection, getUniqueID, Complex, isNullOrUndefined as isNOU, select, L10n, Browser } from '@syncfusion/ej2-base';\nimport { formatUnit, addClass, removeClass, Event, Animation } from '@syncfusion/ej2-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Grid, Resize, VirtualScroll, Group as GridGroup, Edit, Sort } from '@syncfusion/ej2-grids';\nvar DROPDOWNICON = 'e-input-group-icon e-multicolumn-list-icon e-icons';\nvar CONTENT = 'e-popup-content';\nvar ICONANIMATION = 'e-icon-anim';\nvar NODATA = 'e-nodata';\nvar DISABLED = 'e-disabled';\nvar INPUTFOCUS = 'e-input-focus';\nvar MULTICOLUMNLIST = 'e-multicolumn-list';\nvar HIDDENELEMENT = 'e-multicolumn-list-hidden';\nvar MULTICOLUMNGRID = 'e-multicolumn-grid';\nvar MultiColumnGrid = /** @class */ (function () {\n function MultiColumnGrid() {\n }\n /**\n * Injecting required modules for component.\n *\n * @returns {void}\n * @private\n */\n MultiColumnGrid.prototype.InjectModules = function () {\n Grid.Inject(VirtualScroll, GridGroup, Edit, Sort, Resize);\n };\n return MultiColumnGrid;\n}());\nexport { MultiColumnGrid };\n/**\n * Defines the filter type.\n */\nexport var FilterType;\n(function (FilterType) {\n /**\n * Checks whether a value begins with the specified value.\n */\n FilterType[\"StartsWith\"] = \"StartsWith\";\n /**\n * Checks whether a value ends with specified value.\n */\n FilterType[\"EndsWith\"] = \"EndsWith\";\n /**\n * Checks whether a value contains with specified value.\n */\n FilterType[\"Contains\"] = \"Contains\";\n})(FilterType || (FilterType = {}));\n/**\n * Specifies the sortOrder to sort the data source.\n */\nexport var SortOrder;\n(function (SortOrder) {\n /**\n * The datasource is not sorting. Default value is None.\n */\n SortOrder[\"None\"] = \"None\";\n /**\n * The datasource is sorting with ascending order.\n */\n SortOrder[\"Ascending\"] = \"Ascending\";\n /**\n * The data source is sorting with descending order.\n */\n SortOrder[\"Descending\"] = \"Descending\";\n})(SortOrder || (SortOrder = {}));\n/**\n * Specifies the type of sorting to be applied for the columns.\n */\nexport var SortType;\n(function (SortType) {\n /**\n * Allow sorting only one column\n */\n SortType[\"OneColumn\"] = \"OneColumn\";\n /**\n * Allow sorting multiple columns\n */\n SortType[\"MultipleColumns\"] = \"MultipleColumns\";\n})(SortType || (SortType = {}));\n/**\n * Specifies the type of wrap mode to be applied for the grid cells.\n */\nexport var WrapMode;\n(function (WrapMode) {\n /**\n * Specifies that both header and content text wrapping are enabled.\n */\n WrapMode[\"Both\"] = \"Both\";\n /**\n * Specifies that only content text wrapping is enabled.\n */\n WrapMode[\"Content\"] = \"Content\";\n /**\n * Specifies that only header text wrapping is enabled.\n */\n WrapMode[\"Header\"] = \"Header\";\n})(WrapMode || (WrapMode = {}));\n/**\n * The fields property maps the columns of the data table and binds the data to the component.\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()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies the number of columns and its respective fields to be displayed in the dropdown popup.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"displayAsCheckBox\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Specifies the configuration of the columns in the popup content.\n */\nvar GridSettings = /** @class */ (function (_super) {\n __extends(GridSettings, _super);\n function GridSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(null)\n ], GridSettings.prototype, \"rowHeight\", void 0);\n __decorate([\n Property('Default')\n ], GridSettings.prototype, \"gridLines\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Property(WrapMode.Both)\n ], GridSettings.prototype, \"textWrapMode\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowResizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStop\", void 0);\n return GridSettings;\n}(ChildProperty));\nexport { GridSettings };\n/**\n * The `MultiColumnComboBox` allows the user to search and select values from a list. It provides a list of options that can be selected using a filter input.\n * The selected value will be displayed in the input element.\n *\n * ```html\n * <input type='text' id='multi-column'></input>\n * ```\n * ```typescript\n * let multiColObj: MultiColumnComboBox = new MultiColumnComboBox();\n * multiColObj.appendTo('#multi-column');\n * ```\n */\nvar MultiColumnComboBox = /** @class */ (function (_super) {\n __extends(MultiColumnComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {MultiColumnComboBoxModel} options - Specifies the MultiColumnComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiColumnComboBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.gridInject = new MultiColumnGrid();\n _this.isShowSpinner = true;\n _this.gridInject.InjectModules();\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n MultiColumnComboBox.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveUp: 'uparrow'\n };\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n this.persistData();\n };\n MultiColumnComboBox.prototype.getDirective = function () {\n return 'EJS-MULTICOLUMNCOMBOBOX';\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n MultiColumnComboBox.prototype.getModuleName = function () {\n return 'multicolumncombobox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n MultiColumnComboBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n MultiColumnComboBox.prototype.persistData = function () {\n if (this.enablePersistence) {\n this.element.id += '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n MultiColumnComboBox.prototype.render = function () {\n this.renderInput();\n this.renderGrid();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.appendChild(this.gridEle);\n this.setHTMLAttributes();\n this.renderPopup();\n this.wireEvents();\n };\n MultiColumnComboBox.prototype.setHiddenValue = function () {\n if (isNOU(this.value)) {\n this.hiddenElement.innerHTML = '';\n return;\n }\n var existingOption = this.hiddenElement.querySelector('option');\n if (!isNOU(existingOption)) {\n existingOption.textContent = this.text;\n existingOption.setAttribute('value', this.value.toString());\n }\n else if (!isNOU(this.hiddenElement)) {\n var newOption = document.createElement('option');\n newOption.text = this.text;\n newOption.setAttribute('value', this.value.toString());\n newOption.setAttribute('selected', '');\n this.hiddenElement.appendChild(newOption);\n }\n };\n MultiColumnComboBox.prototype.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n this.gridObj = new Grid({\n dataSource: this.dataSource,\n columns: gridColumns,\n allowSorting: this.allowSorting,\n enableStickyHeader: true,\n gridLines: this.gridSettings.gridLines,\n rowHeight: this.gridSettings.rowHeight,\n enableAltRow: this.gridSettings.enableAltRow,\n enableVirtualization: this.enableVirtualization,\n enableRtl: this.enableRtl,\n editSettings: { allowAdding: false },\n query: this.query,\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowResizing: this.gridSettings.allowResizing,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n beforeDataBound: function () {\n if (_this.dataSource instanceof DataManager && _this.isShowSpinner) {\n _this.showHideSpinner(true);\n _this.isShowSpinner = false;\n }\n },\n dataBound: function () { _this.onDataBound(); },\n actionFailure: function (args) { _this.onActionFailure(args); },\n actionBegin: function (args) { _this.trigger('actionBegin', args); },\n actionComplete: this.handleActionComplete.bind(this),\n keyPressed: this.handleKeyPressed.bind(this),\n resizing: function (args) {\n if (_this.gridSettings.resizing) {\n _this.gridSettings.resizing.call(_this, args);\n }\n },\n resizeStart: function (args) {\n if (_this.gridSettings.resizeStart) {\n _this.gridSettings.resizeStart.call(_this, args);\n }\n },\n resizeStop: function (args) {\n if (_this.gridSettings.resizeStop) {\n _this.gridSettings.resizeStop.call(_this, args);\n }\n }\n });\n this.gridEle = this.createElement('div', { id: this.element.id + \"_\" + getUniqueID('grid'), className: MULTICOLUMNGRID });\n this.updateGroupByField();\n if (gridColumns.length > 0) {\n // Set first column as primary key to avoid PRIMARY KEY MISSING warning.\n this.gridObj.columns[0].isPrimaryKey = true;\n }\n if (sortOrder !== 'none') {\n this.gridObj.sortSettings = { columns: [{ field: this.fields.text, direction: sortOrder === 'ascending' ?\n SortOrder.Ascending : SortOrder.Descending }] };\n }\n this.gridObj.appendTo(this.gridEle);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\n }\n };\n MultiColumnComboBox.prototype.handleActionComplete = function (args) {\n var _this = this;\n this.trigger('actionComplete', args);\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\n }\n if (Array.isArray(args.rows) && this.isDataFiltered) {\n var rows = args.rows;\n var rowHeight_1 = 0;\n rows.forEach(function (row) {\n var rowElement = _this.gridObj.getRowElementByUID(row.uid);\n if (rowElement) {\n rowHeight_1 += rowElement.getBoundingClientRect().height;\n }\n });\n this.popupRowHeight = rowHeight_1 || parseFloat(this.popupHeight);\n this.updateGridHeight(true, true);\n }\n this.popupObj.refreshPosition();\n this.gridObj.element.querySelector('.e-content').scrollTop = 0;\n };\n MultiColumnComboBox.prototype.handleKeyPressed = function (args) {\n if (args.key === 'Enter') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n if (this.isPopupOpen) {\n this.selectedGridRow(this.gridObj.getRows()[this.gridObj.selectedRowIndex], args, true);\n this.hidePopup(args);\n this.focusIn(args);\n }\n }\n if (this.fields.groupBy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n this.gridKeyActionHandler(args, true);\n }\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var flattenData = function (data) {\n var result = [];\n if (data && typeof data === 'object') {\n if (Array.isArray(data)) {\n data.forEach(function (item) { return result.push.apply(result, flattenData(item)); });\n }\n else {\n Object.keys(data).forEach(function (key) { return result.push.apply(result, flattenData(data[\"\" + key])); });\n }\n }\n else if (data != null) {\n result.push(String(data));\n }\n return result;\n };\n var flattenedValues = flattenData(data);\n return (flattenedValues.indexOf(selectedValue) !== -1 && flattenedValues.indexOf(selectedText) !== -1);\n };\n MultiColumnComboBox.prototype.updateRowSelection = function (args) {\n var _this = this;\n if (args) {\n var dataRows = args.rows;\n dataRows.forEach(function (row) {\n _this.selectDataRow(row.data, row.index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ?\n this.value.toString() : '', this.text ? this.text.toString() : '');\n if (isPresent) {\n this.gridObj.selectRow(index);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.index = index;\n this.isProtectedOnChange = prevOnChange;\n return;\n }\n };\n MultiColumnComboBox.prototype.findIndex = function (arr, obj) {\n return arr.findIndex(function (item) {\n // eslint-disable-next-line\n return Object.keys(obj).every(function (key) { return item[key] === obj[key]; });\n });\n };\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (_a) {\n var field = _a.field, header = _a.header, width = _a.width, textAlign = _a.textAlign, format = _a.format, displayAsCheckBox = _a.displayAsCheckBox, template = _a.template, headerTemplate = _a.headerTemplate, customAttributes = _a.customAttributes;\n return ({\n field: field,\n headerText: header,\n width: width,\n textAlign: textAlign.toString() === '' && _this.enableRtl ? 'Right' : textAlign,\n format: format,\n displayAsCheckBox: displayAsCheckBox,\n template: template,\n headerTemplate: headerTemplate,\n customAttributes: customAttributes,\n type: displayAsCheckBox && !format ? 'boolean' : undefined\n });\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n var groupByField = this.fields.groupBy;\n var isGroupByValid = groupByField !== '' && !isNOU(groupByField);\n if (isGroupByValid) {\n if (this.sortType.toString().toLowerCase() !== 'multiplecolumns') {\n this.gridEle.classList.add('e-multicolumn-group');\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.allowGrouping = true;\n this.gridObj.groupSettings = {\n showDropArea: false,\n columns: [groupByField]\n };\n if (this.groupTemplate && isGroupByValid) {\n this.gridObj.groupSettings.captionTemplate = this.groupTemplate;\n }\n if (this.isVue) {\n this.gridObj.isVue = this.isVue;\n }\n this.isProtectedOnChange = prevOnChange;\n }\n };\n MultiColumnComboBox.prototype.onDataBound = function () {\n var _this = this;\n var dataCount = this.dataSource.length;\n var popupChild = this.popupDiv.querySelector('.' + MULTICOLUMNGRID);\n var hasNoDataClass = this.popupDiv.classList.contains(NODATA);\n if (dataCount <= 0 && popupChild) {\n this.l10nUpdate();\n this.popupDiv.removeChild(this.gridEle);\n addClass([this.popupDiv], [NODATA]);\n }\n else if (hasNoDataClass && dataCount >= 1) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n }\n if (this.isInitialRender) {\n var gridContentRow = this.popupDiv.querySelector('.e-gridcontent tr');\n var rowHeight = !hasNoDataClass ? gridContentRow ?\n gridContentRow.getBoundingClientRect().height : 0 :\n this.popupDiv.getBoundingClientRect().height;\n this.popupRowHeight = rowHeight;\n this.popupObj.hide();\n this.popupEle.style.visibility = 'unset';\n this.isInitialRender = false;\n }\n var rowElements = this.gridObj.element.querySelectorAll('.e-row');\n if (this.isDataFiltered && rowElements.length > 0 && this.inputEle.value !== '') {\n var firstRowEle = rowElements[0];\n firstRowEle.classList.add('e-row-focus');\n }\n if (this.dataSource instanceof DataManager) {\n setTimeout(function () {\n _this.showHideSpinner(false);\n });\n }\n };\n MultiColumnComboBox.prototype.showHideSpinner = function (isShow) {\n if (isShow) {\n showSpinner(this.dropdownElement);\n }\n else {\n hideSpinner(this.dropdownElement);\n }\n };\n MultiColumnComboBox.prototype.onActionFailure = function (args) {\n this.trigger('actionFailure', args);\n this.l10nUpdate(true);\n addClass([this.popupDiv], [NODATA]);\n };\n MultiColumnComboBox.prototype.renderInput = function () {\n var allowedAttributes = ['aria-expanded', 'aria-readOnly', 'aria-disabled', 'autocomplete',\n 'autocapitalize', 'spellcheck', 'tabindex'];\n var setAttributes = function (element, attributes) {\n for (var key in attributes) {\n // eslint-disable-next-line no-prototype-builtins\n if (attributes.hasOwnProperty(key) && allowedAttributes.indexOf(key) !== -1 && isNOU(element.getAttribute(key))) {\n element.setAttribute(key, attributes[key]);\n }\n }\n };\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'combobox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n setAttributes(this.inputEle, {\n 'aria-expanded': 'false',\n 'aria-readOnly': this.readonly.toString(),\n 'aria-disabled': this.disabled.toString(),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: 'false',\n tabindex: '0'\n });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n buttons: [DROPDOWNICON],\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: !this.disabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n cssClass: this.cssClass\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n this.inputWrapper.classList.add(MULTICOLUMNLIST);\n this.inputWrapper.setAttribute('spellcheck', 'false');\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': HIDDENELEMENT\n }\n });\n prepend([this.hiddenElement], this.inputWrapper);\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n this.dropdownElement = this.inputWrapper.querySelector('.e-input-group-icon.e-multicolumn-list-icon.e-icons');\n createSpinner({\n target: this.dropdownElement\n });\n };\n MultiColumnComboBox.prototype.setElementWidth = function (inputWidth) {\n if (isNOU(inputWidth)) {\n return;\n }\n var ddElement = this.inputWrapper;\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = inputWidth.match(/px|%|em/) ? inputWidth : formatUnit(inputWidth);\n }\n };\n MultiColumnComboBox.prototype.setHTMLAttributes = function () {\n var _this = this;\n var htmlAttributes = this.htmlAttributes;\n var inputEle = this.inputEle;\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class':\n this.inputWrapper.classList.add(htmlAttributes[htmlAttr]);\n break;\n case 'disabled':\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n break;\n case 'readonly':\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n break;\n case 'style': {\n var styles = htmlAttributes[htmlAttr];\n this.inputWrapper.style.cssText = '';\n if (styles) {\n styles.split(';').forEach(function (styleProperty) {\n var _a = styleProperty.split(':').map(function (part) { return part.trim(); }), property = _a[0], value = _a[1];\n if (property && value) {\n _this.inputWrapper.style.setProperty(property, value);\n }\n });\n }\n break;\n }\n default: {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(htmlAttributes[htmlAttr], inputEle);\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n /* To set enable property */\n MultiColumnComboBox.prototype.setEnable = function () {\n Input.setEnabled(!this.disabled, this.inputEle);\n if (!this.disabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.setAriaDisabled('false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.setAriaDisabled('true');\n }\n };\n MultiColumnComboBox.prototype.setAriaDisabled = function (value) {\n this.inputEle.setAttribute('aria-disabled', value);\n this.inputWrapper.setAttribute('aria-disabled', value);\n };\n MultiColumnComboBox.prototype.updateFieldValue = function (fieldValue, dataObj) {\n var fieldVal = getValue(fieldValue, dataObj).toString();\n return fieldVal;\n };\n MultiColumnComboBox.prototype.initValue = function (isRerender, isValue, isInitial) {\n var _this = this;\n var prevItemData = this.gridObj.getSelectedRecords()[0];\n var prevItemEle = this.gridObj.getSelectedRows()[0];\n var item;\n var currentValue;\n var currentText;\n var currentIndex;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = this.value ? this.value.toString() : this.value;\n this.isProtectedOnChange = prevOnChange;\n var updateValues = function (dataList) {\n var result = _this.updateCurrentValues(item, dataList);\n currentValue = result.currentValue;\n currentText = result.currentText;\n currentIndex = result.currentIndex;\n };\n if ((!isRerender && (!isNOU(this.value) || !isNOU(this.text))) || (isRerender && isValue !== undefined)) {\n var value_1 = isRerender ? (isValue ? this.value : this.text) : (!isNOU(this.value) ? this.value : this.text);\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var filteredData = dataLists.filter(function (item) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, item);\n return fieldVal === value_1;\n });\n if (filteredData.length > 0) {\n item = filteredData[0];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n }\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n item = this.dataSource.filter(function (data) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, data);\n return fieldVal === value_1;\n })[0];\n updateValues(this.dataSource);\n }\n }\n else if (!isNOU(this.index)) {\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n item = dataLists[_this.index];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n if (!this.fields.groupBy) {\n item = this.dataSource[this.index];\n updateValues(this.dataSource);\n }\n else {\n setTimeout(function () {\n var rows = _this.gridObj.getRows();\n if (rows && rows.length > 0) {\n var rowData = _this.gridObj.getRowInfo(rows[_this.index]).rowData;\n var value = _this.fields.value;\n for (var i = 0; i < rows.length; i++) {\n if (rowData && rowData[parseInt(value.toString(), 10)] ===\n _this.dataSource[parseInt(i.toString(), 10)][parseInt(value.toString(), 10)]) {\n item = rowData;\n updateValues(_this.dataSource);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n break;\n }\n }\n }\n });\n }\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n }\n };\n MultiColumnComboBox.prototype.updateChangeEvent = function (item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial) {\n var fieldValue = item ? this.updateFieldValue(this.fields.value, item) : null;\n var ChangeEventArgs = {\n value: item ? fieldValue : null,\n itemData: { text: currentText, value: currentValue },\n item: this.getDataByValue(this.value),\n previousItemData: prevItemData,\n previousItemElement: prevItemEle,\n itemElement: this.inputWrapper,\n event: null,\n isInteracted: !isRerender\n };\n this.updateValues(currentValue, currentText, currentIndex, ChangeEventArgs, isInitial);\n };\n MultiColumnComboBox.prototype.updateCurrentValues = function (item, dataList) {\n if (!isNOU(item)) {\n var fieldText = this.updateFieldValue(this.fields.text, item);\n var fieldValue = this.updateFieldValue(this.fields.value, item);\n Input.setValue(fieldText, this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: fieldValue,\n currentText: fieldText,\n currentIndex: dataList.indexOf(item)\n };\n }\n return {\n currentValue: null,\n currentText: null,\n currentIndex: null\n };\n };\n MultiColumnComboBox.prototype.renderPopup = function () {\n this.popupEle = this.createElement('div', {\n id: this.element.id + '_options', className: MULTICOLUMNLIST + ' e-popup ' + (this.cssClass !== null ? this.cssClass : '')\n });\n attributes(this.popupEle, { 'aria-label': this.element.id, 'role': 'dialog' });\n document.body.appendChild(this.popupEle);\n this.createPopup(this.popupEle);\n prepend([this.popupDiv], this.popupEle);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n }\n var popupHeight = this.getSize(false);\n this.popupEle.style.maxHeight = popupHeight;\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n this.popupDiv.style.maxHeight = popupHeight;\n this.updateGridHeight();\n this.popupEle.style.visibility = 'hidden';\n this.isInitialRender = true;\n };\n MultiColumnComboBox.prototype.updateGridHeight = function (isFilter, autoHeight) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n this.popupRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (this.popupRowHeight < this.prevGridHeight ? (this.popupRowHeight + scrollBarHeight) + 'px' : this.prevGridHeight + 'px') : this.prevGridHeight + 'px';\n }\n else {\n this.prevGridHeight = this.popupDiv.getBoundingClientRect().height - this.popupDiv.querySelector('.e-gridheader').getBoundingClientRect().height;\n height = this.prevGridHeight + 'px';\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.height = height;\n this.isProtectedOnChange = prevOnChange;\n };\n MultiColumnComboBox.prototype.createPopup = function (element) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.getSize(true),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n },\n open: function () {\n _this.inputEle.focus();\n _this.updateClearIconState();\n }\n });\n };\n MultiColumnComboBox.prototype.setFooterTemplate = function () {\n if (this.footer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], 'e-popup-footer');\n }\n var compiledString = this.getTemplateFunction(this.footerTemplate);\n var dataCount = this.dataSource.length;\n var tempArr = compiledString({ count: dataCount }, this, 'footerTemplate', this.element.id + 'footerTemplate', this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n MultiColumnComboBox.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.element.id + '_actionFailure' : this.element.id + '_noRecords';\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.getTemplateFunction(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request Failed' };\n this.l10n = new L10n('multicolumncombobox', l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], 'e-no-records');\n prepend([this.noRecord], this.popupDiv);\n this.popupObj.refreshPosition();\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n MultiColumnComboBox.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n /*To calculate the width and height of the popup */\n MultiColumnComboBox.prototype.getSize = function (ispopupWidth) {\n var currentDimension = ispopupWidth ? this.popupWidth : this.popupHeight;\n var size = formatUnit(currentDimension);\n if (size.includes('%')) {\n var dimensionValue = ispopupWidth ? this.inputWrapper.offsetWidth : document.documentElement.clientHeight;\n size = (dimensionValue * parseFloat(size) / 100).toString() + 'px';\n }\n else if (typeof currentDimension === 'string') {\n size = currentDimension.match(/px|em/) ? currentDimension : size;\n }\n return size;\n };\n MultiColumnComboBox.prototype.selectedGridRow = function (row, e, isKeyNav) {\n var _this = this;\n var eventArgs = {\n isInteracted: e ? true : false,\n item: this.gridObj.getSelectedRecords()[0],\n itemElement: row,\n itemData: this.gridObj.getSelectedRecords()[0],\n event: e,\n cancel: false\n };\n var selectedRecords = this.gridObj.getSelectedRecords()[0];\n var dataText = selectedRecords ? this.updateFieldValue(this.fields.text, selectedRecords) : '';\n var dataValue = selectedRecords ? this.updateFieldValue(this.fields.value, selectedRecords) : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: selectedRecords ? dataText : '', value: selectedRecords ? dataValue : '' },\n event: e,\n cancel: false,\n value: selectedRecords ? dataValue : '',\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && eventArgs.itemData) {\n var event_1 = e;\n var isUpdateVal = event_1.key === 'Enter' || event_1.key === 'Tab' || event_1.shiftKey && event_1.key === 'Tab' || event_1.altKey && event_1.key === 'ArrowUp';\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.updateValues(selectedRecords ? dataValue : '', selectedRecords ? dataText : '', _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecords ? dataText : '', _this.inputEle, _this.floatLabelType, _this.showClearButton);\n _this.setHiddenValue();\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.hidePopup(e);\n }\n }\n });\n };\n MultiColumnComboBox.prototype.updateValues = function (value, text, index, eventArgs, isInitial) {\n this.previousItemElement = eventArgs.itemElement;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = text || this.text;\n this.value = value || this.value;\n this.index = this.selectedRowIndex = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\n this.setHiddenValue();\n if (!isInitial) {\n this.triggerChangeEvent(eventArgs);\n }\n };\n MultiColumnComboBox.prototype.triggerChangeEvent = function (eventArgs) {\n this.trigger('change', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n });\n };\n MultiColumnComboBox.prototype.inputHandler = function (e) {\n var _this = this;\n this.showPopup(null, true);\n this.updateClearIconState();\n if (this.allowFiltering) {\n var inputValue_1 = e.target.value.toLowerCase();\n var customFiltering_1 = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: inputValue_1,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n customFiltering_1 = true;\n _this.filterAction(dataSource, inputValue_1, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !customFiltering_1) {\n _this.filterAction(_this.dataSource, inputValue_1, _this.query, _this.fields);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, data, exactData, query, result, totaldata;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(this.dataSource instanceof DataManager)) return [3 /*break*/, 2];\n query = new Query();\n return [4 /*yield*/, this.dataSource.executeQuery(query)];\n case 1:\n result = _c.sent();\n totaldata = result.result;\n (_a = this.filterDatas(totaldata, inputValue), data = _a.data, exactData = _a.exactData);\n return [3 /*break*/, 3];\n case 2:\n if (Array.isArray(this.dataSource)) {\n (_b = this.filterDatas(this.dataSource, inputValue), data = _b.data, exactData = _b.exactData);\n }\n _c.label = 3;\n case 3:\n this.selectFilteredRows(data, exactData);\n return [2 /*return*/];\n }\n });\n });\n };\n MultiColumnComboBox.prototype.filterDatas = function (dataSource, inputValue) {\n var _this = this;\n var data = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return inputValue && fieldText.toLowerCase().startsWith(inputValue.toLowerCase());\n });\n var exactData = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return fieldText === inputValue;\n });\n return { data: data, exactData: exactData };\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data, exactData) {\n if (data.length <= 0) {\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n return;\n }\n this.matchedContent = data[0];\n this.exactMatchedContent = exactData[0];\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filterAction = function (dataSource, inputValue, query, fields) {\n var _this = this;\n var isQuery = query || new Query();\n var filterType = this.filterType.toString().toLowerCase();\n if (isNOU(query) && isNOU(fields)) {\n this.updateGridDataSource(dataSource);\n }\n else if (query) {\n if (dataSource instanceof DataManager) {\n this.filteringHandler(dataSource, inputValue, query, fields);\n }\n else {\n new DataManager(dataSource).executeQuery(query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n _this.updateGridDataSource(dataLists);\n });\n }\n }\n else {\n if (dataSource instanceof DataManager) {\n this.filteringHandler(dataSource, inputValue, isQuery, fields);\n }\n else if (Array.isArray(dataSource)) {\n var filteredData = dataSource.filter(function (item) {\n return _this.filterData(item, filterType, inputValue, fields);\n });\n this.updateGridDataSource(filteredData);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filteringHandler = function (dataSource, inputValue, query, fields) {\n var _this = this;\n var filterType = this.filterType.toString().toLowerCase();\n var filteredData;\n dataSource.executeQuery(query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n filteredData = dataLists.filter(function (item) { return _this.filterData(item, filterType, inputValue, fields); });\n _this.updateGridDataSource(filteredData);\n });\n };\n MultiColumnComboBox.prototype.filterData = function (item, filterType, inputValue, fields) {\n var dataValue = this.updateFieldValue(fields ? fields.text : this.fields.text, item);\n var itemValue = dataValue.toLowerCase();\n switch (filterType) {\n case 'startswith':\n return itemValue.startsWith(inputValue);\n case 'endswith':\n return itemValue.endsWith(inputValue);\n case 'contains':\n return itemValue.includes(inputValue);\n default:\n return false;\n }\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function (dataSource) {\n if (dataSource.length > 0) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n this.gridObj.dataSource = dataSource;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n };\n MultiColumnComboBox.prototype.wireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.gridEle, 'click', this.onMouseClick, this);\n EventHandler.add(this.inputEle, 'input', this.inputHandler, this);\n EventHandler.add(this.inputEle, 'focus', this.focusIn, this);\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown', this.clearText, this);\n }\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.keyboardModule = new KeyboardEvents(this.gridEle, {\n keyAction: this.gridKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n MultiColumnComboBox.prototype.unWireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.dropDownClick);\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.inputEle, 'input', this.inputHandler);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.gridEle, 'click', this.onMouseClick);\n if (this.showClearButton) {\n EventHandler.remove(this.inputObj.clearButton, 'mousedown', this.clearText);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n MultiColumnComboBox.prototype.preventBlur = function (e) {\n e.preventDefault();\n };\n MultiColumnComboBox.prototype.dropDownClick = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.showPopup(e);\n }\n };\n MultiColumnComboBox.prototype.onMouseClick = function (e) {\n var target = e.target;\n var row = closest(target, '.e-row');\n var selectedRowIndex = this.gridObj.selectedRowIndex;\n if (row) {\n if (selectedRowIndex >= 0) {\n this.selectedGridRow(row, e);\n }\n else {\n this.gridObj.selectedRowIndex = this.gridObj.getRows().indexOf(row);\n this.gridObj.selectRow(this.gridObj.selectedRowIndex);\n this.hidePopup(e);\n }\n }\n };\n MultiColumnComboBox.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!target.closest('.e-multicolumn-list')) {\n this.focusOut();\n }\n return;\n }\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-multicolumn-list.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n if (!isNOU(this.text)) {\n this.updateInputValue(this.text);\n }\n var isClearVal = this.inputEle.value === '' ? true : false;\n this.updateValuesOnInput(e, null, isClearVal);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues, isKeyDown) {\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val && e.code !== 'Enter') {\n this.inputEle.value = this.value = this.index = this.text = null;\n }\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues && val) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var fieldText = this.updateFieldValue(this.fields.text, this.matchedContent);\n var fieldValue = this.updateFieldValue(this.fields.value, this.matchedContent);\n this.inputEle.value = fieldText;\n this.value = fieldValue;\n var selectIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.index = selectIndex;\n this.text = fieldText;\n this.gridObj.selectRow(selectIndex);\n this.selectedGridRow(this.gridObj.getRowByIndex(selectIndex), e);\n this.previousItemElement = this.gridObj.getSelectedRows()[0];\n this.isProtectedOnChange = prevOnChange;\n }\n else {\n if (this.isDataFiltered) {\n this.inputEle.value = '';\n var ChangeEventArgs = {\n value: null,\n itemData: { text: null, value: null },\n item: null,\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement,\n itemElement: null,\n event: e,\n isInteracted: true,\n cancel: false\n };\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = this.value = this.index = null;\n this.gridObj.refreshColumns();\n this.isProtectedOnChange = prevOnChange;\n this.triggerChangeEvent(ChangeEventArgs);\n this.isDataFiltered = false;\n this.matchedContent = this.matchedRowEle = null;\n }\n }\n };\n MultiColumnComboBox.prototype.clearText = function (e) {\n this.isDataFiltered = true;\n this.updateValuesOnInput(e, null, true);\n };\n MultiColumnComboBox.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.getSize(true) });\n this.popupObj.refreshPosition();\n }\n };\n /* To set cssclass for the dropdowntree */\n MultiColumnComboBox.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n MultiColumnComboBox.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n case 'shiftTab':\n case 'tab':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.focusOut();\n }\n break;\n case 'altDown':\n if (!this.isPopupOpen) {\n this.showPopup(e);\n this.updateSelectedItem(e, false);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n this.updateSelectedItem(e, true, true);\n break;\n case 'enter':\n this.updateValuesOnInput(null, e, false, true);\n this.focusIn(e);\n break;\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.gridKeyActionHandler = function (e, isGroup) {\n var keyActionMap = {\n 'ArrowDown': 'moveDown',\n 'ArrowUp': 'moveUp',\n 'End': 'end',\n 'Home': 'home',\n 'Tab': 'tab',\n 'Escape': 'escape',\n 'Shift+Tab': 'shiftTab',\n 'Alt+ArrowUp': 'altUp'\n };\n if (isGroup) {\n var key = \"\" + (e.altKey ? 'Alt+' : '') + (e.shiftKey ? 'Shift+' : '') + e.key;\n e.action = keyActionMap[key] || e.action;\n }\n switch (e.action) {\n case 'escape':\n case 'tab':\n case 'shiftTab':\n case 'altUp':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (e.action !== 'escape') {\n this.updateSelectedItem(e);\n }\n this.hidePopup(e);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.updateSelectedItem = function (e, isUpdateIndex, isInputTarget) {\n var _this = this;\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n if (this.isPopupOpen) {\n var index_1 = this.fields.groupBy ? (this.gridObj.selectedRowIndex || 0) : this.gridObj.selectedRowIndex;\n var dataLength = this.dataSource instanceof DataManager ? this.remoteDataLength :\n this.dataSource.length;\n if ((index_1 === -1 && (e.action === 'moveDown' || e.action === 'moveUp')) || (e.action === 'home')) {\n index_1 = 0;\n }\n else if ((index_1 >= (dataLength - 1) && e.action === 'moveDown') || (e.action === 'end')) {\n index_1 = dataLength - 1;\n }\n else if (e.action === 'moveDown' && (index_1 >= 0 && index_1 <= (dataLength - 1)) && (this.fields.groupBy || isInputTarget)) {\n index_1 += 1;\n }\n else if (e.action === 'moveUp' && index_1 > 0 && (this.fields.groupBy) || isInputTarget) {\n index_1 -= 1;\n }\n if (!this.enableVirtualization) {\n this.selectRow(e, isUpdateIndex, index_1);\n }\n else {\n setTimeout(function () { _this.selectRow(e, isUpdateIndex, index_1); });\n }\n }\n };\n MultiColumnComboBox.prototype.selectRow = function (e, isUpdateIndex, index) {\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n this.gridObj.selectRow(index);\n this.gridObj.selectedRowIndex = index;\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (isUpdateIndex) {\n this.selectedGridRow(this.gridObj.getRows()[parseInt(index.toString(), 10)], e, true);\n }\n };\n MultiColumnComboBox.prototype.updateClearIconState = function () {\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = this.inputEle.value === '' ? 'none' : 'flex';\n }\n };\n MultiColumnComboBox.prototype.updateDynamicDataSource = function (newDataSource, oldDataSource) {\n if (this.gridObj) {\n var dataLength_1;\n this.isShowSpinner = true;\n this.gridObj.dataSource = newDataSource;\n var isRemoteData = oldDataSource instanceof DataManager;\n if (isRemoteData) {\n oldDataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataLength_1 = e.result.length;\n });\n }\n else {\n dataLength_1 = oldDataSource.length;\n }\n if (dataLength_1 === 0) {\n this.popupDiv.appendChild(this.gridEle);\n }\n }\n };\n /**\n * Sets the focus to the component for interaction.component for interaction.\n *\n * @param {FocusEvent | MouseEvent | KeyboardEvent | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusIn = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n addClass([this.inputWrapper], [INPUTFOCUS]);\n this.inputEle.focus();\n this.updateClearIconState();\n this.trigger('focus', e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @param {MouseEvent | KeyboardEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusOut = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n if (this.inputWrapper) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = 'none';\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n }\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isInputOpen - Specifies whether the input is open or not.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.showPopup = function (e, isInputOpen) {\n var _this = this;\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isPopupOpen) {\n _this.isPopupOpen = true;\n _this.popupObj.refreshPosition();\n addClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (!isInputOpen) {\n if ((_this.value || _this.text || _this.index)) {\n _this.gridObj.selectRow(_this.selectedRowIndex);\n }\n }\n var contentEle = _this.gridObj.getContent();\n if (contentEle) {\n var activeRow = contentEle.querySelector('.e-rowcell.e-active');\n var firstRow = contentEle.querySelector('.e-row');\n if (activeRow) {\n _this.inputEle.setAttribute('aria-activedescendant', activeRow.parentElement.getAttribute('data-uid'));\n }\n else if (firstRow) {\n _this.inputEle.setAttribute('aria-activedescendant', firstRow.getAttribute('data-uid'));\n }\n }\n if (!isNOU(_this.dataSource) && _this.dataSource instanceof DataManager) {\n _this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.remoteDataLength = e.result.length;\n });\n }\n _this.popupObj.show(new Animation(eventArgs.animation), _this.popupEle.firstElementChild);\n }\n });\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.hidePopup = function (e) {\n var _this = this;\n var animModel = { name: 'FadeOut', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e || null, cancel: false, animation: animModel };\n var target = e ? e.target : null;\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isPopupOpen = false;\n removeClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'false' });\n _this.popupObj.hide(new Animation(eventArgs.animation));\n if (target && (target.classList.contains('e-multicolumn-list-icon') || target.classList.contains('e-rowcell'))) {\n if (!_this.value) {\n _this.gridObj.refreshColumns();\n }\n setTimeout(function () { _this.focusIn(e); });\n }\n else {\n _this.focusOut();\n }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.dataSource;\n _this.updateGridHeight(true, false);\n }\n }, 100);\n };\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } index - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.addItems = function (items, index) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.editSettings.allowAdding = true;\n this.gridObj.dataBind();\n this.isProtectedOnChange = prevOnChange;\n this.gridObj.addRecord(items, index);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n MultiColumnComboBox.prototype.getItems = function () {\n return this.gridObj.getDataRows();\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string } value - Specifies the value of the list item.\n * @returns {Object}\n */\n MultiColumnComboBox.prototype.getDataByValue = function (value) {\n var _this = this;\n if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n return this.dataSource.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n return dataLists.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n });\n }\n return null;\n };\n MultiColumnComboBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.gridObj) {\n this.gridObj.destroy();\n detach(this.gridObj.element);\n }\n if (this.inputEle) {\n var attrArray = ['placeholder', 'aria-expanded', 'spellcheck', 'aria-label', 'role', 'type',\n 'aria-owns', 'aria-controls', 'aria-readonly', 'autocomplete', 'autocapitalize', 'spellcheck', 'aria-activedescendant'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputEle.removeAttribute(attrArray[i]);\n }\n this.inputEle.classList.remove('e-input');\n Input.setValue('', this.inputEle, this.floatLabelType, this.showClearButton);\n }\n if (this.popupEle) {\n this.popupEle.removeAttribute('aria-label');\n this.popupEle.removeAttribute('role');\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n if (this.inputObj) {\n detach(this.inputObj.container);\n this.inputObj = null;\n }\n Input.destroy({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.inputEle = null;\n this.previousItemElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.popupObj = null;\n this.gridObj = null;\n this.gridEle = null;\n this.popupEle = null;\n this.footer = null;\n this.noRecord = null;\n this.hiddenElement = null;\n this.dropdownElement = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {MultiColumnComboBoxModel} newProp - Specifies new properties\n * @param {MultiColumnComboBoxModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n MultiColumnComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var gridColumns = void 0;\n switch (prop) {\n case 'width':\n case 'popupWidth':\n if (prop === 'width') {\n this.setElementWidth(newProp.width);\n }\n if (this.popupObj) {\n this.popupObj.element.style.width = this.getSize(true);\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var height = this.getSize(false);\n this.popupObj.element.style.maxHeight = height;\n this.popupDiv.style.maxHeight = height;\n this.gridObj.height = height;\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputEle);\n break;\n case 'disabled':\n Input.setEnabled(!this.disabled, this.inputEle);\n this.setEnable();\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, this.floatLabelType, this.placeholder);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputEle, this.inputObj);\n break;\n case 'value':\n this.initValue(true, true);\n break;\n case 'text':\n this.initValue(true, false);\n break;\n case 'index':\n this.initValue(true);\n break;\n case 'sortOrder':\n if (this.gridObj) {\n this.gridObj.sortSettings.columns = [{\n field: this.fields.text, direction: newProp.sortOrder === SortOrder.Ascending ?\n SortOrder.Ascending : SortOrder.Descending\n }];\n }\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'noRecordsTemplate':\n this.l10nUpdate();\n break;\n case 'actionFailureTemplate':\n this.l10nUpdate(true);\n break;\n case 'footerTemplate':\n this.setFooterTemplate();\n break;\n case 'itemTemplate':\n if (this.gridObj) {\n this.gridObj.rowTemplate = newProp.itemTemplate;\n }\n break;\n case 'groupTemplate':\n this.groupTemplate = newProp.groupTemplate;\n this.updateGroupByField();\n break;\n case 'enableRtl':\n if (this.gridObj && this.popupObj) {\n this.gridObj.enableRtl = newProp.enableRtl;\n Input.setEnableRtl(newProp.enableRtl, [this.inputWrapper]);\n this.popupObj.enableRtl = newProp.enableRtl;\n }\n break;\n case 'dataSource':\n this.updateDynamicDataSource(newProp.dataSource, oldProp.dataSource);\n break;\n case 'query':\n if (this.gridObj) {\n this.gridObj.query = newProp.query;\n }\n break;\n case 'gridSettings':\n if (this.gridObj) {\n this.gridObj.gridLines = newProp.gridSettings.gridLines;\n this.gridObj.rowHeight = newProp.gridSettings.rowHeight;\n this.gridObj.enableAltRow = newProp.gridSettings.enableAltRow;\n this.gridObj.allowResizing = newProp.gridSettings.allowResizing;\n if (!(isNOU(newProp.gridSettings.allowTextWrap))) {\n this.gridObj.allowTextWrap = newProp.gridSettings.allowTextWrap;\n }\n if (!(isNOU(newProp.gridSettings.textWrapMode))) {\n this.gridObj.textWrapSettings.wrapMode = newProp.gridSettings.textWrapMode;\n }\n }\n break;\n case 'fields':\n this.fields = newProp.fields;\n this.updateGroupByField();\n break;\n case 'filterType':\n this.filterType = newProp.filterType;\n break;\n case 'enableVirtualization':\n if (this.gridObj) {\n this.enableVirtualization = this.gridObj.enableVirtualization = newProp.enableVirtualization;\n }\n break;\n case 'sortType':\n if (this.gridObj) {\n this.sortType = newProp.sortType;\n this.gridObj.allowMultiSorting = this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting;\n }\n break;\n case 'allowFiltering':\n this.allowFiltering = newProp.allowFiltering;\n break;\n case 'allowSorting':\n if (this.gridObj) {\n this.allowSorting = this.gridObj.allowSorting = newProp.allowSorting;\n }\n break;\n case 'columns':\n if (this.gridObj) {\n gridColumns = this.getGridColumns();\n this.gridObj.columns = gridColumns;\n }\n break;\n }\n }\n };\n __decorate([\n Property([])\n ], MultiColumnComboBox.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"index\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiColumnComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('')\n ], MultiColumnComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({ text: null, value: null, groupBy: null }, FieldSettings)\n ], MultiColumnComboBox.prototype, \"fields\", void 0);\n __decorate([\n Collection([], Column)\n ], MultiColumnComboBox.prototype, \"columns\", void 0);\n __decorate([\n Complex({}, GridSettings)\n ], MultiColumnComboBox.prototype, \"gridSettings\", void 0);\n __decorate([\n Property(FilterType.StartsWith)\n ], MultiColumnComboBox.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], MultiColumnComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(SortOrder.None)\n ], MultiColumnComboBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(SortType.OneColumn)\n ], MultiColumnComboBox.prototype, \"sortType\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], MultiColumnComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request Failed')\n ], MultiColumnComboBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiColumnComboBox.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property({})\n ], MultiColumnComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"change\", void 0);\n MultiColumnComboBox = __decorate([\n NotifyPropertyChanges\n ], MultiColumnComboBox);\n return MultiColumnComboBox;\n}(Component));\nexport { MultiColumnComboBox };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","verb","n","v","op","f","TypeError","_","y","t","call","label","ops","pop","trys","push","g","sent","throw","return","Symbol","iterator","NODATA","MultiColumnGrid","InjectModules","Grid","Inject","VirtualScroll","GridGroup","Edit","Sort","Resize","FilterType","SortOrder","SortType","WrapMode","FieldSettings","_super","Property","ChildProperty","Column","GridSettings","Both","Event","MultiColumnComboBox","options","element","_this","gridInject","isShowSpinner","preRender","id","getUniqueID","getModuleName","keyConfigs","escape","altUp","altDown","tab","shiftTab","end","enter","home","moveDown","moveUp","matchedRowEle","matchedContent","exactMatchedContent","persistData","getDirective","getPersistData","addOnPersist","enablePersistence","data","window","localStorage","getItem","isNOU","setProperties","JSON","parse","render","renderInput","renderGrid","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","setHiddenValue","hiddenElement","innerHTML","existingOption","querySelector","newOption","document","text","setAttribute","toString","textContent","gridColumns","getGridColumns","sortOrder","toLowerCase","gridObj","dataSource","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","query","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowResizing","allowMultiSorting","sortType","rowTemplate","itemTemplate","beforeDataBound","DataManager","showHideSpinner","dataBound","onDataBound","actionFailure","args","onActionFailure","actionBegin","trigger","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","fields","direction","Ascending","Descending","appendTo","index","initValue","requestType","updateRowSelection","isArray","rows","isDataFiltered","rowHeight_1","forEach","row","rowElement","getRowElementByUID","uid","getBoundingClientRect","popupRowHeight","parseFloat","updateGridHeight","popupObj","refreshPosition","scrollTop","cancel","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","item","keys","String","flattenedValues","indexOf","selectDataRow","selectRow","prevOnChange","isProtectedOnChange","findIndex","arr","obj","every","map","_a","header","width","textAlign","format","displayAsCheckBox","template","headerTemplate","customAttributes","headerText","type","undefined","groupByField","isGroupByValid","classList","add","allowGrouping","groupSettings","showDropArea","groupTemplate","captionTemplate","isVue","dataCount","popupChild","hasNoDataClass","contains","l10nUpdate","removeChild","addClass","removeClass","noRecordEle","isInitialRender","gridContentRow","hide","popupEle","style","visibility","rowElements","querySelectorAll","inputEle","setTimeout","isShow","showSpinner","dropdownElement","hideSpinner","allowedAttributes","tagName","getAttribute","attributes","aria-expanded","aria-readOnly","readonly","aria-disabled","disabled","autocomplete","autocapitalize","spellcheck","tabindex","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","aria-hidden","class","prepend","name","removeAttribute","hasAttribute","setElementWidth","createSpinner","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","styles","cssText","split","styleProperty","part","trim","property","setProperty","defaultAttr","setPlaceholder","setEnabled","setAriaDisabled","updateFieldValue","fieldValue","dataObj","getValue","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","updateCurrentValues","value_1","executeQuery","Query","dataLists","filteredData","filter","updateChangeEvent","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","fieldText","setValue","MULTICOLUMNLIST","aria-label","createPopup","footerTemplate","setFooterTemplate","getSize","maxHeight","Math","round","footer","isFilter","autoHeight","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","tempArr","getTemplateFunction","count","isStringTemplate","slice","append","noRecord","noRecordsTemplate","actionFailureTemplate","templateId","templatestring","l10nLocale","l10n","L10n","locale","getConstant","content","tempEle","select","outerHTML","compile","ispopupWidth","currentDimension","popupWidth","size","includes","offsetWidth","documentElement","isKeyNav","eventArgs","selectedRecords","dataText","dataValue","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","allowFiltering","inputValue_1","customFiltering_1","eventArgs_1","preventDefaultAction","updateData","filterAction","updateInputValue","inputValue","_b","exactData","totaldata","_c","filterDatas","selectFilteredRows","startsWith","selectedIndex","currentViewData","getRowByIndex","isQuery","filterType","updateGridDataSource","filteringHandler","filterData","itemValue","endsWith","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","unWireEvents","remove","destroy","preventDefault","focusedEle","closest","focusOut","isClearVal","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","isKeyDown","val","code","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","action","updateSelectedItem","isGroup","keyActionMap","ArrowDown","ArrowUp","End","Home","Tab","Escape","Shift+Tab","Alt+ArrowUp","isUpdateIndex","isInputTarget","index_1","dataLength","remoteDataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","duration","popup","animation","aria-owns","aria-controls","contentEle","activeRow","firstRow","show","Animation","firstElementChild","addItems","items","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","NotifyPropertyChanges","Component"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ej2-multicolumn-combobox.min.js","sources":["../../src/multicolumn-combobox/multi-column-combo-box.js"],"sourcesContent":["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};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { Component, EventHandler, Property, NotifyPropertyChanges, closest, attributes, append, compile, detach, KeyboardEvents, getValue } from '@syncfusion/ej2-base';\nimport { ChildProperty, prepend, Collection, getUniqueID, Complex, isNullOrUndefined as isNOU, select, L10n, Browser } from '@syncfusion/ej2-base';\nimport { formatUnit, addClass, removeClass, Event, Animation } from '@syncfusion/ej2-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Grid, Resize, VirtualScroll, Group as GridGroup, Edit, Sort } from '@syncfusion/ej2-grids';\nvar DROPDOWNICON = 'e-input-group-icon e-multicolumn-list-icon e-icons';\nvar CONTENT = 'e-popup-content';\nvar ICONANIMATION = 'e-icon-anim';\nvar NODATA = 'e-nodata';\nvar DISABLED = 'e-disabled';\nvar INPUTFOCUS = 'e-input-focus';\nvar MULTICOLUMNLIST = 'e-multicolumn-list';\nvar HIDDENELEMENT = 'e-multicolumn-list-hidden';\nvar MULTICOLUMNGRID = 'e-multicolumn-grid';\nvar MultiColumnGrid = /** @class */ (function () {\n function MultiColumnGrid() {\n }\n /**\n * Injecting required modules for component.\n *\n * @returns {void}\n * @private\n */\n MultiColumnGrid.prototype.InjectModules = function () {\n Grid.Inject(VirtualScroll, GridGroup, Edit, Sort, Resize);\n };\n return MultiColumnGrid;\n}());\nexport { MultiColumnGrid };\n/**\n * Defines the filter type.\n */\nexport var FilterType;\n(function (FilterType) {\n /**\n * Checks whether a value begins with the specified value.\n */\n FilterType[\"StartsWith\"] = \"StartsWith\";\n /**\n * Checks whether a value ends with specified value.\n */\n FilterType[\"EndsWith\"] = \"EndsWith\";\n /**\n * Checks whether a value contains with specified value.\n */\n FilterType[\"Contains\"] = \"Contains\";\n})(FilterType || (FilterType = {}));\n/**\n * Specifies the sortOrder to sort the data source.\n */\nexport var SortOrder;\n(function (SortOrder) {\n /**\n * The datasource is not sorting. Default value is None.\n */\n SortOrder[\"None\"] = \"None\";\n /**\n * The datasource is sorting with ascending order.\n */\n SortOrder[\"Ascending\"] = \"Ascending\";\n /**\n * The data source is sorting with descending order.\n */\n SortOrder[\"Descending\"] = \"Descending\";\n})(SortOrder || (SortOrder = {}));\n/**\n * Specifies the type of sorting to be applied for the columns.\n */\nexport var SortType;\n(function (SortType) {\n /**\n * Allow sorting only one column\n */\n SortType[\"OneColumn\"] = \"OneColumn\";\n /**\n * Allow sorting multiple columns\n */\n SortType[\"MultipleColumns\"] = \"MultipleColumns\";\n})(SortType || (SortType = {}));\n/**\n * Specifies the type of wrap mode to be applied for the grid cells.\n */\nexport var WrapMode;\n(function (WrapMode) {\n /**\n * Specifies that both header and content text wrapping are enabled.\n */\n WrapMode[\"Both\"] = \"Both\";\n /**\n * Specifies that only content text wrapping is enabled.\n */\n WrapMode[\"Content\"] = \"Content\";\n /**\n * Specifies that only header text wrapping is enabled.\n */\n WrapMode[\"Header\"] = \"Header\";\n})(WrapMode || (WrapMode = {}));\n/**\n * The fields property maps the columns of the data table and binds the data to the component.\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()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies the number of columns and its respective fields to be displayed in the dropdown popup.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"displayAsCheckBox\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Specifies the configuration of the columns in the popup content.\n */\nvar GridSettings = /** @class */ (function (_super) {\n __extends(GridSettings, _super);\n function GridSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(null)\n ], GridSettings.prototype, \"rowHeight\", void 0);\n __decorate([\n Property('Default')\n ], GridSettings.prototype, \"gridLines\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Property(WrapMode.Both)\n ], GridSettings.prototype, \"textWrapMode\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowResizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStop\", void 0);\n return GridSettings;\n}(ChildProperty));\nexport { GridSettings };\n/**\n * The `MultiColumnComboBox` allows the user to search and select values from a list. It provides a list of options that can be selected using a filter input.\n * The selected value will be displayed in the input element.\n *\n * ```html\n * <input type='text' id='multi-column'></input>\n * ```\n * ```typescript\n * let multiColObj: MultiColumnComboBox = new MultiColumnComboBox();\n * multiColObj.appendTo('#multi-column');\n * ```\n */\nvar MultiColumnComboBox = /** @class */ (function (_super) {\n __extends(MultiColumnComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {MultiColumnComboBoxModel} options - Specifies the MultiColumnComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiColumnComboBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.gridInject = new MultiColumnGrid();\n _this.isShowSpinner = true;\n _this.gridInject.InjectModules();\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n MultiColumnComboBox.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveUp: 'uparrow'\n };\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n this.persistData();\n };\n MultiColumnComboBox.prototype.getDirective = function () {\n return 'EJS-MULTICOLUMNCOMBOBOX';\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n MultiColumnComboBox.prototype.getModuleName = function () {\n return 'multicolumncombobox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n MultiColumnComboBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n MultiColumnComboBox.prototype.persistData = function () {\n if (this.enablePersistence) {\n this.element.id += '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNOU(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n MultiColumnComboBox.prototype.render = function () {\n this.renderInput();\n if (this.gridData == null) {\n this.setGridData(this.dataSource);\n }\n this.renderGrid();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.appendChild(this.gridEle);\n this.setHTMLAttributes();\n this.renderPopup();\n this.wireEvents();\n };\n MultiColumnComboBox.prototype.setGridData = function (dataSource, query) {\n var _this = this;\n this.trigger('actionBegin', { cancel: false, query: query }, function (args) {\n if (!args.cancel) {\n if (dataSource instanceof DataManager) {\n if (_this.isShowSpinner) {\n _this.showHideSpinner(true);\n }\n dataSource.executeQuery(_this.getQuery(query)).then(function (e) {\n _this.gridData = e.result;\n _this.trigger('actionComplete', e, function (e) {\n _this.showHideSpinner(false);\n if (!_this.isMainDataUpdated) {\n _this.mainData = _this.gridData;\n _this.isMainDataUpdated = true;\n }\n if (_this.popupDiv) {\n _this.updateGridDataSource();\n }\n });\n }).catch(function (e) {\n _this.trigger('actionFailure', e, null);\n });\n }\n else {\n var dataManager = new DataManager(dataSource);\n var listItems = (_this.getQuery(query)).executeLocal(dataManager);\n _this.gridData = listItems;\n _this.trigger('actionComplete', { result: listItems }, function (e) {\n if (!_this.isMainDataUpdated) {\n _this.mainData = _this.gridData;\n _this.isMainDataUpdated = true;\n }\n if (_this.popupDiv) {\n _this.updateGridDataSource();\n }\n });\n }\n }\n });\n };\n MultiColumnComboBox.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n if ((this.allowFiltering && this.typedString && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, true, false);\n }\n }\n else {\n filterQuery = (this.customFilterQuery != null) ?\n this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n MultiColumnComboBox.prototype.setHiddenValue = function () {\n if (isNOU(this.value)) {\n this.hiddenElement.innerHTML = '';\n return;\n }\n var existingOption = this.hiddenElement.querySelector('option');\n if (!isNOU(existingOption)) {\n existingOption.textContent = this.text;\n existingOption.setAttribute('value', this.value.toString());\n }\n else if (!isNOU(this.hiddenElement)) {\n var newOption = document.createElement('option');\n newOption.text = this.text;\n newOption.setAttribute('value', this.value.toString());\n newOption.setAttribute('selected', '');\n this.hiddenElement.appendChild(newOption);\n }\n };\n MultiColumnComboBox.prototype.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n this.gridObj = new Grid({\n dataSource: this.gridData,\n columns: gridColumns,\n allowSorting: this.allowSorting,\n enableStickyHeader: true,\n gridLines: this.gridSettings.gridLines,\n rowHeight: this.gridSettings.rowHeight,\n enableAltRow: this.gridSettings.enableAltRow,\n enableVirtualization: this.enableVirtualization,\n enableRtl: this.enableRtl,\n editSettings: { allowAdding: false },\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowResizing: this.gridSettings.allowResizing,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n beforeDataBound: function () {\n if (_this.dataSource instanceof DataManager && _this.isShowSpinner) {\n _this.showHideSpinner(true);\n _this.isShowSpinner = false;\n }\n },\n dataBound: function () { _this.onDataBound(); },\n actionFailure: function (args) { _this.onActionFailure(args); },\n actionComplete: this.handleActionComplete.bind(this),\n keyPressed: this.handleKeyPressed.bind(this),\n resizing: function (args) {\n if (_this.gridSettings.resizing) {\n _this.gridSettings.resizing.call(_this, args);\n }\n },\n resizeStart: function (args) {\n if (_this.gridSettings.resizeStart) {\n _this.gridSettings.resizeStart.call(_this, args);\n }\n },\n resizeStop: function (args) {\n if (_this.gridSettings.resizeStop) {\n _this.gridSettings.resizeStop.call(_this, args);\n }\n }\n });\n this.gridEle = this.createElement('div', { id: this.element.id + \"_\" + getUniqueID('grid'), className: MULTICOLUMNGRID });\n this.updateGroupByField();\n if (gridColumns.length > 0) {\n // Set first column as primary key to avoid PRIMARY KEY MISSING warning.\n this.gridObj.columns[0].isPrimaryKey = true;\n }\n if (sortOrder !== 'none') {\n this.gridObj.sortSettings = { columns: [{ field: this.fields.text, direction: sortOrder === 'ascending' ?\n SortOrder.Ascending : SortOrder.Descending }] };\n }\n this.gridObj.appendTo(this.gridEle);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\n }\n };\n MultiColumnComboBox.prototype.handleActionComplete = function (args) {\n var _this = this;\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\n }\n if (Array.isArray(args.rows) && this.isDataFiltered) {\n var rows = args.rows;\n var rowHeight_1 = 0;\n rows.forEach(function (row) {\n var rowElement = _this.gridObj.getRowElementByUID(row.uid);\n if (rowElement) {\n rowHeight_1 += rowElement.getBoundingClientRect().height;\n }\n });\n this.popupRowHeight = rowHeight_1 || parseFloat(this.popupHeight);\n this.updateGridHeight(true, true);\n }\n this.popupObj.refreshPosition();\n this.gridObj.element.querySelector('.e-content').scrollTop = 0;\n };\n MultiColumnComboBox.prototype.handleKeyPressed = function (args) {\n if (args.key === 'Enter') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n if (this.isPopupOpen) {\n this.selectedGridRow(this.gridObj.getRows()[this.gridObj.selectedRowIndex], args, true);\n this.hidePopup(args);\n this.focusIn(args);\n }\n }\n if (this.fields.groupBy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n this.gridKeyActionHandler(args, true);\n }\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var flattenData = function (data) {\n var result = [];\n if (data && typeof data === 'object') {\n if (Array.isArray(data)) {\n data.forEach(function (item) { return result.push.apply(result, flattenData(item)); });\n }\n else {\n Object.keys(data).forEach(function (key) { return result.push.apply(result, flattenData(data[\"\" + key])); });\n }\n }\n else if (data != null) {\n result.push(String(data));\n }\n return result;\n };\n var flattenedValues = flattenData(data);\n return (flattenedValues.indexOf(selectedValue) !== -1 && flattenedValues.indexOf(selectedText) !== -1);\n };\n MultiColumnComboBox.prototype.updateRowSelection = function (args) {\n var _this = this;\n if (args) {\n var dataRows = args.rows;\n dataRows.forEach(function (row) {\n _this.selectDataRow(row.data, row.index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ?\n this.value.toString() : '', this.text ? this.text.toString() : '');\n if (isPresent) {\n this.gridObj.selectRow(index);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.index = index;\n this.isProtectedOnChange = prevOnChange;\n return;\n }\n };\n MultiColumnComboBox.prototype.findIndex = function (arr, obj) {\n return arr.findIndex(function (item) {\n // eslint-disable-next-line\n return Object.keys(obj).every(function (key) { return item[key] === obj[key]; });\n });\n };\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (_a) {\n var field = _a.field, header = _a.header, width = _a.width, textAlign = _a.textAlign, format = _a.format, displayAsCheckBox = _a.displayAsCheckBox, template = _a.template, headerTemplate = _a.headerTemplate, customAttributes = _a.customAttributes;\n return ({\n field: field,\n headerText: header,\n width: width,\n textAlign: textAlign.toString() === '' && _this.enableRtl ? 'Right' : textAlign,\n format: format,\n displayAsCheckBox: displayAsCheckBox,\n template: template,\n headerTemplate: headerTemplate,\n customAttributes: customAttributes,\n type: displayAsCheckBox && !format ? 'boolean' : undefined\n });\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n var groupByField = this.fields.groupBy;\n var isGroupByValid = groupByField !== '' && !isNOU(groupByField);\n if (isGroupByValid) {\n if (this.sortType.toString().toLowerCase() !== 'multiplecolumns') {\n this.gridEle.classList.add('e-multicolumn-group');\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.allowGrouping = true;\n this.gridObj.groupSettings = {\n showDropArea: false,\n columns: [groupByField]\n };\n if (this.groupTemplate && isGroupByValid) {\n this.gridObj.groupSettings.captionTemplate = this.groupTemplate;\n }\n if (this.isVue) {\n this.gridObj.isVue = this.isVue;\n }\n this.isProtectedOnChange = prevOnChange;\n }\n };\n MultiColumnComboBox.prototype.onDataBound = function () {\n var _this = this;\n if (this.isLocaleChanged) {\n this.isLocaleChanged = false;\n this.unWireEvents();\n this.wireEvents();\n }\n var dataCount = this.dataSource.length;\n var popupChild = this.popupDiv.querySelector('.' + MULTICOLUMNGRID);\n var hasNoDataClass = this.popupDiv.classList.contains(NODATA);\n if (dataCount <= 0 && popupChild) {\n this.l10nUpdate();\n this.popupDiv.removeChild(this.gridEle);\n addClass([this.popupDiv], [NODATA]);\n }\n else if (hasNoDataClass && dataCount >= 1) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n }\n if (this.isInitialRender) {\n var gridContentRow = this.popupDiv.querySelector('.e-gridcontent tr');\n var rowHeight = !hasNoDataClass ? gridContentRow ?\n gridContentRow.getBoundingClientRect().height : 0 :\n this.popupDiv.getBoundingClientRect().height;\n this.popupRowHeight = rowHeight;\n this.popupObj.hide();\n this.popupEle.style.visibility = 'unset';\n this.isInitialRender = false;\n }\n var rowElements = this.gridObj.element.querySelectorAll('.e-row');\n if (this.isDataFiltered && rowElements.length > 0 && this.inputEle.value !== '') {\n var firstRowEle = rowElements[0];\n firstRowEle.classList.add('e-row-focus');\n }\n if (this.dataSource instanceof DataManager) {\n setTimeout(function () {\n _this.showHideSpinner(false);\n });\n }\n };\n MultiColumnComboBox.prototype.showHideSpinner = function (isShow) {\n if (isShow) {\n showSpinner(this.dropdownElement);\n }\n else {\n hideSpinner(this.dropdownElement);\n }\n };\n MultiColumnComboBox.prototype.onActionFailure = function (args) {\n this.trigger('actionFailure', args);\n this.l10nUpdate(true);\n addClass([this.popupDiv], [NODATA]);\n };\n MultiColumnComboBox.prototype.renderInput = function () {\n var allowedAttributes = ['aria-expanded', 'aria-readOnly', 'aria-disabled', 'autocomplete',\n 'autocapitalize', 'spellcheck', 'tabindex'];\n var setAttributes = function (element, attributes) {\n for (var key in attributes) {\n // eslint-disable-next-line no-prototype-builtins\n if (attributes.hasOwnProperty(key) && allowedAttributes.indexOf(key) !== -1 && isNOU(element.getAttribute(key))) {\n element.setAttribute(key, attributes[key]);\n }\n }\n };\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNOU(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'combobox');\n }\n if (isNOU(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n setAttributes(this.inputEle, {\n 'aria-expanded': 'false',\n 'aria-readOnly': this.readonly.toString(),\n 'aria-disabled': this.disabled.toString(),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: 'false',\n tabindex: '0'\n });\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n buttons: [DROPDOWNICON],\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: !this.disabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n cssClass: this.cssClass\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n this.inputWrapper.classList.add(MULTICOLUMNLIST);\n this.inputWrapper.setAttribute('spellcheck', 'false');\n this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': HIDDENELEMENT\n }\n });\n prepend([this.hiddenElement], this.inputWrapper);\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n this.dropdownElement = this.inputWrapper.querySelector('.e-input-group-icon.e-multicolumn-list-icon.e-icons');\n createSpinner({\n target: this.dropdownElement\n });\n };\n MultiColumnComboBox.prototype.setElementWidth = function (inputWidth) {\n if (isNOU(inputWidth)) {\n return;\n }\n var ddElement = this.inputWrapper;\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = inputWidth.match(/px|%|em/) ? inputWidth : formatUnit(inputWidth);\n }\n };\n MultiColumnComboBox.prototype.setHTMLAttributes = function () {\n var _this = this;\n var htmlAttributes = this.htmlAttributes;\n var inputEle = this.inputEle;\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class':\n this.inputWrapper.classList.add(htmlAttributes[htmlAttr]);\n break;\n case 'disabled':\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n break;\n case 'readonly':\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n break;\n case 'style': {\n var styles = htmlAttributes[htmlAttr];\n this.inputWrapper.style.cssText = '';\n if (styles) {\n styles.split(';').forEach(function (styleProperty) {\n var _a = styleProperty.split(':').map(function (part) { return part.trim(); }), property = _a[0], value = _a[1];\n if (property && value) {\n _this.inputWrapper.style.setProperty(property, value);\n }\n });\n }\n break;\n }\n default: {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(htmlAttributes[htmlAttr], inputEle);\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n /* To set enable property */\n MultiColumnComboBox.prototype.setEnable = function () {\n Input.setEnabled(!this.disabled, this.inputEle);\n if (!this.disabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.setAriaDisabled('false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.setAriaDisabled('true');\n }\n };\n MultiColumnComboBox.prototype.setAriaDisabled = function (value) {\n this.inputEle.setAttribute('aria-disabled', value);\n this.inputWrapper.setAttribute('aria-disabled', value);\n };\n MultiColumnComboBox.prototype.updateFieldValue = function (fieldValue, dataObj) {\n var fieldVal = getValue(fieldValue, dataObj).toString();\n return fieldVal;\n };\n MultiColumnComboBox.prototype.initValue = function (isRerender, isValue, isInitial) {\n var _this = this;\n var prevItemData = this.gridObj.getSelectedRecords()[0];\n var prevItemEle = this.gridObj.getSelectedRows()[0];\n var item;\n var currentValue;\n var currentText;\n var currentIndex;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = this.value ? this.value.toString() : this.value;\n this.isProtectedOnChange = prevOnChange;\n var updateValues = function (dataList) {\n var result = _this.updateCurrentValues(item, dataList);\n currentValue = result.currentValue;\n currentText = result.currentText;\n currentIndex = result.currentIndex;\n };\n if ((!isRerender && (!isNOU(this.value) || !isNOU(this.text))) || (isRerender && isValue !== undefined)) {\n var value_1 = isRerender ? (isValue ? this.value : this.text) : (!isNOU(this.value) ? this.value : this.text);\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var filteredData = dataLists.filter(function (item) {\n var fieldVal = item ? (_this.updateFieldValue(isRerender ? (isValue ? _this.fields.value :\n _this.fields.text) : !isNOU(_this.value) ? _this.fields.value : _this.fields.text, item)) : null;\n return fieldVal === value_1;\n });\n if (filteredData.length > 0) {\n item = filteredData[0];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n }\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n item = this.dataSource.filter(function (data) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, data);\n return fieldVal === value_1;\n })[0];\n updateValues(this.dataSource);\n }\n }\n else if (!isNOU(this.index)) {\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n item = dataLists[_this.index];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n if (!this.fields.groupBy) {\n item = this.dataSource[this.index];\n updateValues(this.dataSource);\n }\n else {\n setTimeout(function () {\n var rows = _this.gridObj.getRows();\n if (rows && rows.length > 0) {\n var rowData = _this.gridObj.getRowInfo(rows[_this.index]).rowData;\n var value = _this.fields.value;\n for (var i = 0; i < rows.length; i++) {\n if (rowData && rowData[parseInt(value.toString(), 10)] ===\n _this.dataSource[parseInt(i.toString(), 10)][parseInt(value.toString(), 10)]) {\n item = rowData;\n updateValues(_this.dataSource);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n break;\n }\n }\n }\n });\n }\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n }\n };\n MultiColumnComboBox.prototype.updateChangeEvent = function (item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial) {\n var fieldValue = item ? this.updateFieldValue(this.fields.value, item) : null;\n var ChangeEventArgs = {\n value: item ? fieldValue : null,\n itemData: { text: currentText, value: currentValue },\n item: this.getDataByValue(this.value),\n previousItemData: prevItemData,\n previousItemElement: prevItemEle,\n itemElement: this.inputWrapper,\n event: null,\n isInteracted: !isRerender\n };\n this.updateValues(currentValue, currentText, currentIndex, ChangeEventArgs, isInitial);\n };\n MultiColumnComboBox.prototype.updateCurrentValues = function (item, dataList) {\n if (!isNOU(item)) {\n var fieldText = this.updateFieldValue(this.fields.text, item);\n var fieldValue = this.updateFieldValue(this.fields.value, item);\n Input.setValue(fieldText, this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: fieldValue,\n currentText: fieldText,\n currentIndex: dataList.indexOf(item)\n };\n }\n return {\n currentValue: null,\n currentText: null,\n currentIndex: null\n };\n };\n MultiColumnComboBox.prototype.renderPopup = function () {\n this.popupEle = this.createElement('div', {\n id: this.element.id + '_options', className: MULTICOLUMNLIST + ' e-popup ' + (this.cssClass !== null ? this.cssClass : '')\n });\n attributes(this.popupEle, { 'aria-label': this.element.id, 'role': 'dialog' });\n document.body.appendChild(this.popupEle);\n this.createPopup(this.popupEle);\n prepend([this.popupDiv], this.popupEle);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n }\n var popupHeight = this.getSize(false);\n this.popupEle.style.maxHeight = popupHeight;\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n this.popupDiv.style.maxHeight = popupHeight;\n this.updateGridHeight();\n this.popupEle.style.visibility = 'hidden';\n this.isInitialRender = true;\n };\n MultiColumnComboBox.prototype.updateGridHeight = function (isFilter, autoHeight) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n this.popupRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (this.popupRowHeight < this.prevGridHeight ? (this.popupRowHeight + scrollBarHeight) + 'px' : this.prevGridHeight + 'px') : this.prevGridHeight + 'px';\n }\n else {\n this.prevGridHeight = this.popupDiv.getBoundingClientRect().height - this.popupDiv.querySelector('.e-gridheader').getBoundingClientRect().height;\n height = this.prevGridHeight + 'px';\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.height = height;\n this.isProtectedOnChange = prevOnChange;\n };\n MultiColumnComboBox.prototype.createPopup = function (element) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.getSize(true),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n },\n open: function () {\n _this.inputEle.focus();\n _this.updateClearIconState();\n }\n });\n };\n MultiColumnComboBox.prototype.setFooterTemplate = function () {\n if (this.footer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], 'e-popup-footer');\n }\n var compiledString = this.getTemplateFunction(this.footerTemplate);\n var dataCount = this.dataSource.length;\n var tempArr = compiledString({ count: dataCount }, this, 'footerTemplate', this.element.id + 'footerTemplate', this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n MultiColumnComboBox.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.element.id + '_actionFailure' : this.element.id + '_noRecords';\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.getTemplateFunction(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request Failed' };\n this.l10n = new L10n('multicolumncombobox', l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], 'e-no-records');\n prepend([this.noRecord], this.popupDiv);\n this.popupObj.refreshPosition();\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n MultiColumnComboBox.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n /*To calculate the width and height of the popup */\n MultiColumnComboBox.prototype.getSize = function (ispopupWidth) {\n var currentDimension = ispopupWidth ? this.popupWidth : this.popupHeight;\n var size = formatUnit(currentDimension);\n if (size.includes('%')) {\n var dimensionValue = ispopupWidth ? this.inputWrapper.offsetWidth : document.documentElement.clientHeight;\n size = (dimensionValue * parseFloat(size) / 100).toString() + 'px';\n }\n else if (typeof currentDimension === 'string') {\n size = currentDimension.match(/px|em/) ? currentDimension : size;\n }\n return size;\n };\n MultiColumnComboBox.prototype.selectedGridRow = function (row, e, isKeyNav) {\n var _this = this;\n var eventArgs = {\n isInteracted: e ? true : false,\n item: this.gridObj.getSelectedRecords()[0],\n itemElement: row,\n itemData: this.gridObj.getSelectedRecords()[0],\n event: e,\n cancel: false\n };\n var selectedRecords = this.gridObj.getSelectedRecords()[0];\n var dataText = selectedRecords ? this.updateFieldValue(this.fields.text, selectedRecords) : '';\n var dataValue = selectedRecords ? this.updateFieldValue(this.fields.value, selectedRecords) : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: selectedRecords ? dataText : '', value: selectedRecords ? dataValue : '' },\n event: e,\n cancel: false,\n value: selectedRecords ? dataValue : '',\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && eventArgs.itemData) {\n var event_1 = e;\n var isUpdateVal = event_1.key === 'Enter' || event_1.key === 'Tab' || event_1.shiftKey && event_1.key === 'Tab' || event_1.altKey && event_1.key === 'ArrowUp';\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.updateValues(selectedRecords ? dataValue : '', selectedRecords ? dataText : '', _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecords ? dataText : '', _this.inputEle, _this.floatLabelType, _this.showClearButton);\n _this.setHiddenValue();\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.hidePopup(e);\n }\n }\n });\n };\n MultiColumnComboBox.prototype.updateValues = function (value, text, index, eventArgs, isInitial) {\n this.previousItemElement = eventArgs.itemElement;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = text || this.text;\n this.value = value || this.value;\n this.index = this.selectedRowIndex = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\n this.setHiddenValue();\n if (!isInitial) {\n this.triggerChangeEvent(eventArgs);\n }\n };\n MultiColumnComboBox.prototype.triggerChangeEvent = function (eventArgs) {\n this.trigger('change', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n });\n };\n MultiColumnComboBox.prototype.inputHandler = function (e) {\n var _this = this;\n this.showPopup(null, true);\n this.updateClearIconState();\n if (this.allowFiltering) {\n this.typedString = e.target.value.toLowerCase();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.typedString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\n _this.setGridData(dataSource, query);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !_this.isCustomFilter) {\n _this.setGridData(_this.dataSource, _this.query ? _this.query.clone() : null);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, data, exactData;\n return __generator(this, function (_c) {\n if (this.dataSource instanceof DataManager) {\n (_a = this.filterDatas(this.mainData, inputValue), data = _a.data, exactData = _a.exactData);\n }\n else if (Array.isArray(this.dataSource)) {\n (_b = this.filterDatas(this.dataSource, inputValue), data = _b.data, exactData = _b.exactData);\n }\n this.selectFilteredRows(data, exactData);\n return [2 /*return*/];\n });\n });\n };\n MultiColumnComboBox.prototype.filterDatas = function (dataSource, inputValue) {\n var _this = this;\n var data = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return inputValue && fieldText.toLowerCase().startsWith(inputValue.toLowerCase());\n });\n var exactData = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return fieldText === inputValue;\n });\n return { data: data, exactData: exactData };\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data, exactData) {\n if (data.length <= 0) {\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n return;\n }\n this.matchedContent = data[0];\n this.exactMatchedContent = exactData[0];\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function () {\n if (this.gridData && this.gridData.length > 0) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n this.gridObj.dataSource = this.gridData;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n };\n MultiColumnComboBox.prototype.wireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.gridEle, 'click', this.onMouseClick, this);\n EventHandler.add(this.inputEle, 'input', this.inputHandler, this);\n EventHandler.add(this.inputEle, 'focus', this.focusIn, this);\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown', this.clearText, this);\n }\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.keyboardModule = new KeyboardEvents(this.gridEle, {\n keyAction: this.gridKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n MultiColumnComboBox.prototype.unWireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.dropDownClick);\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.inputEle, 'input', this.inputHandler);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.gridEle, 'click', this.onMouseClick);\n if (this.showClearButton) {\n EventHandler.remove(this.inputObj.clearButton, 'mousedown', this.clearText);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n MultiColumnComboBox.prototype.preventBlur = function (e) {\n e.preventDefault();\n };\n MultiColumnComboBox.prototype.dropDownClick = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.showPopup(e);\n }\n };\n MultiColumnComboBox.prototype.onMouseClick = function (e) {\n var target = e.target;\n var row = closest(target, '.e-row');\n var selectedRowIndex = this.gridObj.selectedRowIndex;\n if (row) {\n if (selectedRowIndex >= 0) {\n this.selectedGridRow(row, e);\n }\n else {\n this.gridObj.selectedRowIndex = this.gridObj.getRows().indexOf(row);\n this.gridObj.selectRow(this.gridObj.selectedRowIndex);\n this.hidePopup(e);\n }\n }\n };\n MultiColumnComboBox.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!target.closest('.e-multicolumn-list')) {\n this.focusOut();\n }\n return;\n }\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-multicolumn-list.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n if (!isNOU(this.text)) {\n this.updateInputValue(this.text);\n }\n var isClearVal = this.inputEle.value === '' ? true : false;\n this.updateValuesOnInput(e, null, isClearVal);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues, isKeyDown) {\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val && e.code !== 'Enter') {\n this.inputEle.value = this.value = this.index = this.text = null;\n }\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues && val) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var fieldText = this.updateFieldValue(this.fields.text, this.matchedContent);\n var fieldValue = this.updateFieldValue(this.fields.value, this.matchedContent);\n this.inputEle.value = fieldText;\n this.value = fieldValue;\n var selectIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.index = selectIndex;\n this.text = fieldText;\n this.gridObj.selectRow(selectIndex);\n this.selectedGridRow(this.gridObj.getRowByIndex(selectIndex), e);\n this.previousItemElement = this.gridObj.getSelectedRows()[0];\n this.isProtectedOnChange = prevOnChange;\n }\n else {\n if (this.isDataFiltered) {\n this.inputEle.value = '';\n var ChangeEventArgs = {\n value: null,\n itemData: { text: null, value: null },\n item: null,\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement,\n itemElement: null,\n event: e,\n isInteracted: true,\n cancel: false\n };\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = this.value = this.index = null;\n this.gridObj.refreshColumns();\n this.isProtectedOnChange = prevOnChange;\n this.triggerChangeEvent(ChangeEventArgs);\n this.isDataFiltered = false;\n this.matchedContent = this.matchedRowEle = null;\n }\n }\n };\n MultiColumnComboBox.prototype.clearText = function (e) {\n this.isDataFiltered = true;\n this.updateValuesOnInput(e, null, true);\n };\n MultiColumnComboBox.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.getSize(true) });\n this.popupObj.refreshPosition();\n }\n };\n /* To set cssclass for the dropdowntree */\n MultiColumnComboBox.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n MultiColumnComboBox.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n case 'shiftTab':\n case 'tab':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.focusOut();\n }\n break;\n case 'altDown':\n if (!this.isPopupOpen) {\n this.showPopup(e);\n this.updateSelectedItem(e, false);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n this.updateSelectedItem(e, true, true);\n break;\n case 'enter':\n this.updateValuesOnInput(null, e, false, true);\n this.focusIn(e);\n break;\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.gridKeyActionHandler = function (e, isGroup) {\n var keyActionMap = {\n 'ArrowDown': 'moveDown',\n 'ArrowUp': 'moveUp',\n 'End': 'end',\n 'Home': 'home',\n 'Tab': 'tab',\n 'Escape': 'escape',\n 'Shift+Tab': 'shiftTab',\n 'Alt+ArrowUp': 'altUp'\n };\n if (isGroup) {\n var key = \"\" + (e.altKey ? 'Alt+' : '') + (e.shiftKey ? 'Shift+' : '') + e.key;\n e.action = keyActionMap[key] || e.action;\n }\n switch (e.action) {\n case 'escape':\n case 'tab':\n case 'shiftTab':\n case 'altUp':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (e.action !== 'escape') {\n this.updateSelectedItem(e);\n }\n this.hidePopup(e);\n }\n break;\n case 'moveDown':\n case 'moveUp':\n case 'home':\n case 'end':\n this.updateSelectedItem(e);\n break;\n }\n };\n MultiColumnComboBox.prototype.updateSelectedItem = function (e, isUpdateIndex, isInputTarget) {\n var _this = this;\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n if (this.isPopupOpen) {\n var index_1 = this.fields.groupBy ? (this.gridObj.selectedRowIndex || 0) : this.gridObj.selectedRowIndex;\n var dataLength = this.dataSource instanceof DataManager ? this.remoteDataLength :\n this.dataSource.length;\n if ((index_1 === -1 && (e.action === 'moveDown' || e.action === 'moveUp')) || (e.action === 'home')) {\n index_1 = 0;\n }\n else if ((index_1 >= (dataLength - 1) && e.action === 'moveDown') || (e.action === 'end')) {\n index_1 = dataLength - 1;\n }\n else if (e.action === 'moveDown' && (index_1 >= 0 && index_1 <= (dataLength - 1)) && (this.fields.groupBy || isInputTarget)) {\n index_1 += 1;\n }\n else if (e.action === 'moveUp' && index_1 > 0 && (this.fields.groupBy) || isInputTarget) {\n index_1 -= 1;\n }\n if (!this.enableVirtualization) {\n this.selectRow(e, isUpdateIndex, index_1);\n }\n else {\n setTimeout(function () { _this.selectRow(e, isUpdateIndex, index_1); });\n }\n }\n };\n MultiColumnComboBox.prototype.selectRow = function (e, isUpdateIndex, index) {\n if (isUpdateIndex === void 0) { isUpdateIndex = true; }\n this.gridObj.selectRow(index);\n this.gridObj.selectedRowIndex = index;\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (isUpdateIndex) {\n this.selectedGridRow(this.gridObj.getRows()[parseInt(index.toString(), 10)], e, true);\n }\n };\n MultiColumnComboBox.prototype.updateClearIconState = function () {\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = this.inputEle.value === '' ? 'none' : 'flex';\n }\n };\n MultiColumnComboBox.prototype.updateDynamicDataSource = function (newDataSource, oldDataSource) {\n if (this.gridObj) {\n var dataLength_1;\n this.isShowSpinner = true;\n this.setGridData(newDataSource);\n var isRemoteData = oldDataSource instanceof DataManager;\n if (isRemoteData) {\n oldDataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataLength_1 = e.result.length;\n });\n }\n else {\n dataLength_1 = oldDataSource.length;\n }\n if (dataLength_1 === 0) {\n this.popupDiv.appendChild(this.gridEle);\n }\n }\n };\n /**\n * Sets the focus to the component for interaction.component for interaction.\n *\n * @param {FocusEvent | MouseEvent | KeyboardEvent | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusIn = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n addClass([this.inputWrapper], [INPUTFOCUS]);\n this.inputEle.focus();\n this.updateClearIconState();\n this.trigger('focus', e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @param {MouseEvent | KeyboardEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.focusOut = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n if (this.inputWrapper) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n var clearIconEle = this.inputWrapper.querySelector('.e-clear-icon');\n if (clearIconEle) {\n clearIconEle.style.display = 'none';\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputEle, this.inputWrapper);\n }\n }\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @param {boolean} isInputOpen - Specifies whether the input is open or not.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.showPopup = function (e, isInputOpen) {\n var _this = this;\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isPopupOpen) {\n _this.isPopupOpen = true;\n _this.popupObj.refreshPosition();\n addClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (!isInputOpen) {\n if ((_this.value || _this.text || _this.index)) {\n _this.gridObj.selectRow(_this.selectedRowIndex);\n }\n }\n var contentEle = _this.gridObj.getContent();\n if (contentEle) {\n var activeRow = contentEle.querySelector('.e-rowcell.e-active');\n var firstRow = contentEle.querySelector('.e-row');\n if (activeRow) {\n _this.inputEle.setAttribute('aria-activedescendant', activeRow.parentElement.getAttribute('data-uid'));\n }\n else if (firstRow) {\n _this.inputEle.setAttribute('aria-activedescendant', firstRow.getAttribute('data-uid'));\n }\n }\n if (!isNOU(_this.dataSource) && _this.dataSource instanceof DataManager) {\n _this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.remoteDataLength = e.result.length;\n });\n }\n _this.popupObj.show(new Animation(eventArgs.animation), _this.popupEle.firstElementChild);\n }\n });\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.hidePopup = function (e) {\n var _this = this;\n var animModel = { name: 'FadeOut', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e || null, cancel: false, animation: animModel };\n var target = e ? e.target : null;\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isPopupOpen = false;\n removeClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'false' });\n _this.popupObj.hide(new Animation(eventArgs.animation));\n if (target && (target.classList.contains('e-multicolumn-list-icon') || target.classList.contains('e-rowcell'))) {\n if (!_this.value) {\n _this.gridObj.refreshColumns();\n }\n setTimeout(function () { _this.focusIn(e); });\n }\n else {\n _this.focusOut();\n }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n _this.customFilterQuery = null;\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.allowFiltering ? _this.mainData : _this.gridData;\n var noRecordEle = _this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n _this.popupDiv.removeChild(noRecordEle);\n removeClass([_this.popupDiv], [NODATA]);\n }\n _this.updateGridHeight(true, false);\n }\n }, 100);\n };\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } index - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.addItems = function (items, index) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.editSettings.allowAdding = true;\n this.gridObj.dataBind();\n this.isProtectedOnChange = prevOnChange;\n this.gridObj.addRecord(items, index);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n MultiColumnComboBox.prototype.getItems = function () {\n return this.gridObj.getDataRows();\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string } value - Specifies the value of the list item.\n * @returns {Object}\n */\n MultiColumnComboBox.prototype.getDataByValue = function (value) {\n var _this = this;\n if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n return this.dataSource.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n return dataLists.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n });\n }\n return null;\n };\n MultiColumnComboBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.gridObj) {\n this.gridObj.destroy();\n detach(this.gridObj.element);\n }\n if (this.inputEle) {\n var attrArray = ['placeholder', 'aria-expanded', 'spellcheck', 'aria-label', 'role', 'type',\n 'aria-owns', 'aria-controls', 'aria-readonly', 'autocomplete', 'autocapitalize', 'spellcheck', 'aria-activedescendant'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputEle.removeAttribute(attrArray[i]);\n }\n this.inputEle.classList.remove('e-input');\n Input.setValue('', this.inputEle, this.floatLabelType, this.showClearButton);\n }\n if (this.popupEle) {\n this.popupEle.removeAttribute('aria-label');\n this.popupEle.removeAttribute('role');\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n if (this.inputObj) {\n detach(this.inputObj.container);\n this.inputObj = null;\n }\n Input.destroy({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.inputEle = null;\n this.previousItemElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.popupObj = null;\n this.gridObj = null;\n this.gridEle = null;\n this.popupEle = null;\n this.footer = null;\n this.noRecord = null;\n this.hiddenElement = null;\n this.dropdownElement = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {MultiColumnComboBoxModel} newProp - Specifies new properties\n * @param {MultiColumnComboBoxModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n MultiColumnComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var gridColumns = void 0;\n switch (prop) {\n case 'width':\n case 'popupWidth':\n if (prop === 'width') {\n this.setElementWidth(newProp.width);\n }\n if (this.popupObj) {\n this.popupObj.element.style.width = this.getSize(true);\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var height = this.getSize(false);\n this.popupObj.element.style.maxHeight = height;\n this.popupDiv.style.maxHeight = height;\n this.gridObj.height = height;\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputEle);\n break;\n case 'disabled':\n Input.setEnabled(!this.disabled, this.inputEle);\n this.setEnable();\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, this.floatLabelType, this.placeholder);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputEle, this.inputObj);\n break;\n case 'value':\n this.initValue(true, true);\n break;\n case 'text':\n this.initValue(true, false);\n break;\n case 'index':\n this.initValue(true);\n break;\n case 'sortOrder':\n if (this.gridObj) {\n this.gridObj.sortSettings.columns = [{\n field: this.fields.text, direction: newProp.sortOrder === SortOrder.Ascending ?\n SortOrder.Ascending : SortOrder.Descending\n }];\n }\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'noRecordsTemplate':\n this.l10nUpdate();\n break;\n case 'actionFailureTemplate':\n this.l10nUpdate(true);\n break;\n case 'footerTemplate':\n this.setFooterTemplate();\n break;\n case 'itemTemplate':\n if (this.gridObj) {\n this.gridObj.rowTemplate = newProp.itemTemplate;\n }\n break;\n case 'groupTemplate':\n this.groupTemplate = newProp.groupTemplate;\n this.updateGroupByField();\n break;\n case 'enableRtl':\n if (this.gridObj && this.popupObj) {\n this.gridObj.enableRtl = newProp.enableRtl;\n Input.setEnableRtl(newProp.enableRtl, [this.inputWrapper]);\n this.popupObj.enableRtl = newProp.enableRtl;\n }\n break;\n case 'dataSource':\n this.updateDynamicDataSource(newProp.dataSource, oldProp.dataSource);\n break;\n case 'query':\n this.isMainDataUpdated = false;\n this.setGridData(this.dataSource);\n break;\n case 'gridSettings':\n if (this.gridObj) {\n this.gridObj.gridLines = newProp.gridSettings.gridLines;\n this.gridObj.rowHeight = newProp.gridSettings.rowHeight;\n this.gridObj.enableAltRow = newProp.gridSettings.enableAltRow;\n this.gridObj.allowResizing = newProp.gridSettings.allowResizing;\n if (!(isNOU(newProp.gridSettings.allowTextWrap))) {\n this.gridObj.allowTextWrap = newProp.gridSettings.allowTextWrap;\n }\n if (!(isNOU(newProp.gridSettings.textWrapMode))) {\n this.gridObj.textWrapSettings.wrapMode = newProp.gridSettings.textWrapMode;\n }\n }\n break;\n case 'fields':\n this.fields = newProp.fields;\n this.updateGroupByField();\n break;\n case 'filterType':\n this.filterType = newProp.filterType;\n break;\n case 'enableVirtualization':\n if (this.gridObj) {\n this.enableVirtualization = this.gridObj.enableVirtualization = newProp.enableVirtualization;\n }\n break;\n case 'sortType':\n if (this.gridObj) {\n this.sortType = newProp.sortType;\n this.gridObj.allowMultiSorting = this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting;\n }\n break;\n case 'allowFiltering':\n this.allowFiltering = newProp.allowFiltering;\n break;\n case 'allowSorting':\n if (this.gridObj) {\n this.allowSorting = this.gridObj.allowSorting = newProp.allowSorting;\n }\n break;\n case 'columns':\n if (this.gridObj) {\n gridColumns = this.getGridColumns();\n this.gridObj.columns = gridColumns;\n }\n break;\n case 'locale':\n this.isLocaleChanged = true;\n break;\n }\n }\n };\n __decorate([\n Property([])\n ], MultiColumnComboBox.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"index\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiColumnComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiColumnComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiColumnComboBox.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property('')\n ], MultiColumnComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({ text: null, value: null, groupBy: null }, FieldSettings)\n ], MultiColumnComboBox.prototype, \"fields\", void 0);\n __decorate([\n Collection([], Column)\n ], MultiColumnComboBox.prototype, \"columns\", void 0);\n __decorate([\n Complex({}, GridSettings)\n ], MultiColumnComboBox.prototype, \"gridSettings\", void 0);\n __decorate([\n Property(FilterType.StartsWith)\n ], MultiColumnComboBox.prototype, \"filterType\", void 0);\n __decorate([\n Property('Never')\n ], MultiColumnComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(SortOrder.None)\n ], MultiColumnComboBox.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(SortType.OneColumn)\n ], MultiColumnComboBox.prototype, \"sortType\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MultiColumnComboBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], MultiColumnComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiColumnComboBox.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('Request Failed')\n ], MultiColumnComboBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiColumnComboBox.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property({})\n ], MultiColumnComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MultiColumnComboBox.prototype, \"change\", void 0);\n MultiColumnComboBox = __decorate([\n NotifyPropertyChanges\n ], MultiColumnComboBox);\n return MultiColumnComboBox;\n}(Component));\nexport { MultiColumnComboBox };\n"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","verb","n","v","op","f","TypeError","_","y","t","call","label","ops","pop","trys","push","g","sent","throw","return","Symbol","iterator","NODATA","MultiColumnGrid","InjectModules","Grid","Inject","VirtualScroll","GridGroup","Edit","Sort","Resize","FilterType","SortOrder","SortType","WrapMode","FieldSettings","_super","Property","ChildProperty","Column","GridSettings","Both","Event","MultiColumnComboBox","options","element","_this","gridInject","isShowSpinner","preRender","id","getUniqueID","getModuleName","keyConfigs","escape","altUp","altDown","tab","shiftTab","end","enter","home","moveDown","moveUp","matchedRowEle","matchedContent","exactMatchedContent","persistData","getDirective","getPersistData","addOnPersist","enablePersistence","data","window","localStorage","getItem","isNOU","setProperties","JSON","parse","render","renderInput","gridData","setGridData","dataSource","renderGrid","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","query","trigger","cancel","args","DataManager","showHideSpinner","executeQuery","getQuery","isMainDataUpdated","mainData","updateGridDataSource","catch","dataManager","listItems","executeLocal","filterQuery","isCustomFilter","allowFiltering","clone","Query","filterType","typedString","fields","text","where","customFilterQuery","setHiddenValue","hiddenElement","innerHTML","existingOption","querySelector","newOption","document","setAttribute","toString","textContent","gridColumns","getGridColumns","sortOrder","toLowerCase","gridObj","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowResizing","allowMultiSorting","sortType","rowTemplate","itemTemplate","beforeDataBound","dataBound","onDataBound","actionFailure","onActionFailure","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","direction","Ascending","Descending","appendTo","index","initValue","requestType","updateRowSelection","isArray","rows","isDataFiltered","rowHeight_1","forEach","row","rowElement","getRowElementByUID","uid","getBoundingClientRect","popupRowHeight","parseFloat","updateGridHeight","popupObj","refreshPosition","scrollTop","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","item","keys","String","flattenedValues","indexOf","selectDataRow","selectRow","prevOnChange","isProtectedOnChange","findIndex","arr","obj","every","map","_a","header","width","textAlign","format","displayAsCheckBox","template","headerTemplate","customAttributes","headerText","type","undefined","groupByField","isGroupByValid","classList","add","allowGrouping","groupSettings","showDropArea","groupTemplate","captionTemplate","isVue","isLocaleChanged","unWireEvents","dataCount","popupChild","hasNoDataClass","contains","l10nUpdate","removeChild","addClass","removeClass","noRecordEle","isInitialRender","gridContentRow","hide","popupEle","style","visibility","rowElements","querySelectorAll","inputEle","setTimeout","isShow","showSpinner","dropdownElement","hideSpinner","allowedAttributes","tagName","getAttribute","attributes","aria-expanded","aria-readOnly","readonly","aria-disabled","disabled","autocomplete","autocapitalize","spellcheck","tabindex","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","aria-hidden","class","prepend","name","removeAttribute","hasAttribute","setElementWidth","createSpinner","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","styles","cssText","split","styleProperty","part","trim","property","setProperty","defaultAttr","setPlaceholder","setEnabled","setAriaDisabled","updateFieldValue","fieldValue","dataObj","getValue","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","updateCurrentValues","value_1","dataLists","filteredData","filter","updateChangeEvent","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","fieldText","setValue","MULTICOLUMNLIST","aria-label","createPopup","footerTemplate","setFooterTemplate","getSize","maxHeight","Math","round","footer","isFilter","autoHeight","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","tempArr","getTemplateFunction","count","isStringTemplate","slice","append","noRecord","noRecordsTemplate","actionFailureTemplate","templateId","templatestring","l10nLocale","l10n","L10n","locale","getConstant","content","tempEle","select","outerHTML","compile","ispopupWidth","currentDimension","popupWidth","size","includes","offsetWidth","documentElement","isKeyNav","eventArgs","selectedRecords","dataText","dataValue","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","eventArgs_1","preventDefaultAction","updateData","updateInputValue","inputValue","_b","exactData","_c","filterDatas","selectFilteredRows","startsWith","selectedIndex","currentViewData","getRowByIndex","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","remove","destroy","preventDefault","focusedEle","closest","focusOut","isClearVal","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","isKeyDown","val","code","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","action","updateSelectedItem","isGroup","keyActionMap","ArrowDown","ArrowUp","End","Home","Tab","Escape","Shift+Tab","Alt+ArrowUp","isUpdateIndex","isInputTarget","index_1","dataLength","remoteDataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","duration","popup","animation","aria-owns","aria-controls","contentEle","activeRow","firstRow","show","Animation","firstElementChild","addItems","items","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","NotifyPropertyChanges","Component"],"mappings":"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"}
|