@syncfusion/ej2-multicolumn-combobox 28.1.37 → 28.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-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 } 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 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.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.renderGrid();\n this.renderInput();\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.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 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: 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 };\n MultiColumnComboBox.prototype.handleActionComplete = function (args) {\n this.trigger('actionComplete', args);\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\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 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 };\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 if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\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 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 this.inputWrapper.setAttribute('style', htmlAttributes[htmlAttr]);\n break;\n default: {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n 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 this.footer = this.footer ? this.footer : this.popupEle.querySelector('.e-popup-footer');\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, dataSourceCount) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n var totalRowHeight = dataSourceCount * this.popupRowHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n totalRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (totalRowHeight < this.prevGridHeight ? (totalRowHeight + 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 selectedRecord = 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 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 = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\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 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 var dataLength = dataLists.length;\n filteredData = dataLists.filter(function (item) { return _this.filterData(item, filterType, inputValue, fields); });\n _this.updateGridDataSource(filteredData, dataLength);\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, dataLength) {\n var autoHeight = true;\n if (dataSource.length > 0) {\n var length_1 = this.dataSource instanceof DataManager ? dataLength\n : this.dataSource.length;\n autoHeight = length_1 !== dataSource.length;\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 this.updateGridHeight(true, autoHeight, dataSource.length);\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-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 var _this = this;\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val) {\n this.inputEle.value = this.value = this.index = this.text = null;\n }\n this.hidePopup(e);\n if (this.matchedRowEle && !isClearValues && val) {\n setTimeout(function () {\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 }, 100);\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.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 var dataRows = _this.gridObj.getRowsObject();\n var groupIndex_1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataRows.forEach(function (data, index) {\n if (_this.fields.groupBy && isNOU(data.data.items)) {\n if (isNOU(groupIndex_1)) {\n groupIndex_1 = 0;\n }\n else {\n groupIndex_1 += 1;\n }\n }\n _this.selectDataRow(data.data, !_this.fields.groupBy ? index : groupIndex_1);\n });\n }\n _this.focusIn(e);\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);\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 _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","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","renderGrid","renderInput","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","gridColumns","getGridColumns","sortOrder","toString","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","dataBound","onDataBound","actionFailure","args","onActionFailure","actionBegin","trigger","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","fields","text","direction","Ascending","Descending","appendTo","requestType","updateRowSelection","popupObj","refreshPosition","querySelector","scrollTop","cancel","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","isArray","forEach","item","keys","String","flattenedValues","indexOf","rows","row","selectDataRow","index","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","getBoundingClientRect","popupRowHeight","hide","popupEle","style","visibility","rowElements","querySelectorAll","isDataFiltered","inputEle","allowedAttributes","tagName","getAttribute","setAttribute","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","setElementWidth","initValue","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","setPlaceholder","setEnabled","setAriaDisabled","updateFieldValue","fieldValue","dataObj","getValue","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","updateCurrentValues","value_1","DataManager","executeQuery","Query","dataLists","filteredData","filter","updateChangeEvent","setTimeout","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","fieldText","setValue","MULTICOLUMNLIST","aria-label","document","createPopup","prepend","footerTemplate","setFooterTemplate","getSize","maxHeight","footer","Math","round","updateGridHeight","isFilter","autoHeight","dataSourceCount","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","totalRowHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","innerHTML","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","parseFloat","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","dataLength","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","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","split","action","updateSelectedItem","isGroup","keyActionMap","ArrowDown","ArrowUp","End","Home","Tab","Escape","Shift+Tab","Alt+ArrowUp","isUpdateIndex","isInputTarget","index_1","remoteDataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","name","duration","popup","animation","aria-owns","aria-controls","groupIndex_1","getRowsObject","items","contentEle","activeRow","firstRow","show","Animation","removeAttribute","addItems","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 } 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 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.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.renderGrid();\n this.renderInput();\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.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 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: 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 };\n MultiColumnComboBox.prototype.handleActionComplete = function (args) {\n this.trigger('actionComplete', args);\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\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 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 };\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 if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n if (!isNOU(this.value) || !isNOU(this.text) || !isNOU(this.index)) {\n this.initValue(null, null, true);\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 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 this.inputWrapper.setAttribute('style', htmlAttributes[htmlAttr]);\n break;\n default: {\n var defaultAttr = ['title', 'id', 'placeholder', 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n 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 this.footer = this.footer ? this.footer : this.popupEle.querySelector('.e-popup-footer');\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, dataSourceCount) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n var totalRowHeight = dataSourceCount * this.popupRowHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n totalRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (totalRowHeight < this.prevGridHeight ? (totalRowHeight + 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 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 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 var dataLength = dataLists.length;\n filteredData = dataLists.filter(function (item) { return _this.filterData(item, filterType, inputValue, fields); });\n _this.updateGridDataSource(filteredData, dataLength);\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, dataLength) {\n var autoHeight = true;\n if (dataSource.length > 0) {\n var length_1 = this.dataSource instanceof DataManager ? dataLength\n : this.dataSource.length;\n autoHeight = length_1 !== dataSource.length;\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 this.updateGridHeight(true, autoHeight, dataSource.length);\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-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) {\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.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 _this.focusIn(e);\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);\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 _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","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","renderGrid","renderInput","popupDiv","createElement","className","appendChild","gridEle","setHTMLAttributes","renderPopup","wireEvents","gridColumns","getGridColumns","sortOrder","toString","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","dataBound","onDataBound","actionFailure","args","onActionFailure","actionBegin","trigger","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","fields","text","direction","Ascending","Descending","appendTo","requestType","updateRowSelection","popupObj","refreshPosition","querySelector","scrollTop","cancel","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","isArray","forEach","item","keys","String","flattenedValues","indexOf","rows","row","selectDataRow","index","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","getBoundingClientRect","popupRowHeight","hide","popupEle","style","visibility","rowElements","querySelectorAll","isDataFiltered","inputEle","allowedAttributes","tagName","getAttribute","setAttribute","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","setElementWidth","initValue","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","setPlaceholder","setEnabled","setAriaDisabled","updateFieldValue","fieldValue","dataObj","getValue","isRerender","isValue","isInitial","currentValue","currentText","currentIndex","prevItemData","getSelectedRecords","prevItemEle","getSelectedRows","updateValues","dataList","updateCurrentValues","value_1","DataManager","executeQuery","Query","dataLists","filteredData","filter","updateChangeEvent","setTimeout","rowData","getRowInfo","parseInt","ChangeEventArgs","itemData","getDataByValue","previousItemData","previousItemElement","itemElement","event","isInteracted","fieldText","setValue","MULTICOLUMNLIST","aria-label","document","createPopup","prepend","footerTemplate","setFooterTemplate","getSize","maxHeight","footer","Math","round","updateGridHeight","isFilter","autoHeight","dataSourceCount","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","totalRowHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","innerHTML","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","parseFloat","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","dataLength","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","selectIndex","refreshColumns","setCssClass","newClass","oldClass","elements","split","action","updateSelectedItem","isGroup","keyActionMap","ArrowDown","ArrowUp","End","Home","Tab","Escape","Shift+Tab","Alt+ArrowUp","isUpdateIndex","isInputTarget","index_1","remoteDataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","name","duration","popup","animation","aria-owns","aria-controls","contentEle","activeRow","firstRow","show","Animation","removeAttribute","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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"}