@syncfusion/ej2-multicolumn-combobox 28.2.6 → 28.2.9

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.
Files changed (76) hide show
  1. package/dist/ej2-multicolumn-combobox.umd.min.js +2 -2
  2. package/dist/ej2-multicolumn-combobox.umd.min.js.map +1 -1
  3. package/dist/es6/ej2-multicolumn-combobox.es2015.js +59 -14
  4. package/dist/es6/ej2-multicolumn-combobox.es2015.js.map +1 -1
  5. package/dist/es6/ej2-multicolumn-combobox.es5.js +60 -14
  6. package/dist/es6/ej2-multicolumn-combobox.es5.js.map +1 -1
  7. package/dist/global/ej2-multicolumn-combobox.min.js +2 -2
  8. package/dist/global/ej2-multicolumn-combobox.min.js.map +1 -1
  9. package/dist/global/index.d.ts +1 -1
  10. package/package.json +7 -7
  11. package/src/multicolumn-combobox/multi-column-combo-box.d.ts +2 -0
  12. package/src/multicolumn-combobox/multi-column-combo-box.js +59 -13
  13. package/styles/bds-lite.css +8 -0
  14. package/styles/bds.css +8 -0
  15. package/styles/bootstrap-dark-lite.css +8 -0
  16. package/styles/bootstrap-dark.css +8 -0
  17. package/styles/bootstrap-lite.css +8 -0
  18. package/styles/bootstrap.css +8 -0
  19. package/styles/bootstrap4-lite.css +8 -0
  20. package/styles/bootstrap4.css +8 -0
  21. package/styles/bootstrap5-dark-lite.css +8 -0
  22. package/styles/bootstrap5-dark.css +8 -0
  23. package/styles/bootstrap5-lite.css +8 -0
  24. package/styles/bootstrap5.3-lite.css +8 -0
  25. package/styles/bootstrap5.3.css +8 -0
  26. package/styles/bootstrap5.css +8 -0
  27. package/styles/fabric-dark-lite.css +8 -0
  28. package/styles/fabric-dark.css +8 -0
  29. package/styles/fabric-lite.css +8 -0
  30. package/styles/fabric.css +8 -0
  31. package/styles/fluent-dark-lite.css +8 -0
  32. package/styles/fluent-dark.css +8 -0
  33. package/styles/fluent-lite.css +8 -0
  34. package/styles/fluent.css +8 -0
  35. package/styles/fluent2-lite.css +8 -0
  36. package/styles/fluent2.css +8 -0
  37. package/styles/highcontrast-light-lite.css +8 -0
  38. package/styles/highcontrast-light.css +8 -0
  39. package/styles/highcontrast-lite.css +8 -0
  40. package/styles/highcontrast.css +8 -0
  41. package/styles/material-dark-lite.css +8 -0
  42. package/styles/material-dark.css +8 -0
  43. package/styles/material-lite.css +8 -0
  44. package/styles/material.css +8 -0
  45. package/styles/material3-dark-lite.css +8 -0
  46. package/styles/material3-dark.css +8 -0
  47. package/styles/material3-lite.css +8 -0
  48. package/styles/material3.css +8 -0
  49. package/styles/multicolumn-combobox/_layout.scss +7 -0
  50. package/styles/multicolumn-combobox/bds.css +8 -0
  51. package/styles/multicolumn-combobox/bootstrap-dark.css +8 -0
  52. package/styles/multicolumn-combobox/bootstrap.css +8 -0
  53. package/styles/multicolumn-combobox/bootstrap4.css +8 -0
  54. package/styles/multicolumn-combobox/bootstrap5-dark.css +8 -0
  55. package/styles/multicolumn-combobox/bootstrap5.3.css +8 -0
  56. package/styles/multicolumn-combobox/bootstrap5.css +8 -0
  57. package/styles/multicolumn-combobox/fabric-dark.css +8 -0
  58. package/styles/multicolumn-combobox/fabric.css +8 -0
  59. package/styles/multicolumn-combobox/fluent-dark.css +8 -0
  60. package/styles/multicolumn-combobox/fluent.css +8 -0
  61. package/styles/multicolumn-combobox/fluent2.css +8 -0
  62. package/styles/multicolumn-combobox/highcontrast-light.css +8 -0
  63. package/styles/multicolumn-combobox/highcontrast.css +8 -0
  64. package/styles/multicolumn-combobox/material-dark.css +8 -0
  65. package/styles/multicolumn-combobox/material.css +8 -0
  66. package/styles/multicolumn-combobox/material3-dark.css +8 -0
  67. package/styles/multicolumn-combobox/material3.css +8 -0
  68. package/styles/multicolumn-combobox/tailwind-dark.css +8 -0
  69. package/styles/multicolumn-combobox/tailwind.css +8 -0
  70. package/styles/multicolumn-combobox/tailwind3.css +8 -0
  71. package/styles/tailwind-dark-lite.css +8 -0
  72. package/styles/tailwind-dark.css +8 -0
  73. package/styles/tailwind-lite.css +8 -0
  74. package/styles/tailwind.css +8 -0
  75. package/styles/tailwind3-lite.css +8 -0
  76. package/styles/tailwind3.css +8 -0
@@ -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 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-multicolumn-list.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n if (!isNOU(this.text)) {\n this.updateInputValue(this.text);\n }\n var isClearVal = this.inputEle.value === '' ? true : false;\n this.updateValuesOnInput(e, null, isClearVal);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues, isKeyDown) {\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val) {\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.firstElementChild);\n }\n });\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.hidePopup = function (e) {\n var _this = this;\n var animModel = { name: 'FadeOut', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e || null, cancel: false, animation: animModel };\n var target = e ? e.target : null;\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isPopupOpen = false;\n removeClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'false' });\n _this.popupObj.hide(new Animation(eventArgs.animation));\n if (target && (target.classList.contains('e-multicolumn-list-icon') || target.classList.contains('e-rowcell'))) {\n if (!_this.value) {\n _this.gridObj.refreshColumns();\n }\n setTimeout(function () { _this.focusIn(e); });\n }\n else {\n _this.focusOut();\n }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.dataSource;\n _this.updateGridHeight(true, false);\n }\n }, 100);\n };\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } index - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.addItems = function (items, index) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.editSettings.allowAdding = true;\n this.gridObj.dataBind();\n this.isProtectedOnChange = prevOnChange;\n this.gridObj.addRecord(items, index);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n MultiColumnComboBox.prototype.getItems = function () {\n return this.gridObj.getDataRows();\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string } value - Specifies the value of the list item.\n * @returns {Object}\n */\n MultiColumnComboBox.prototype.getDataByValue = function (value) {\n var _this = this;\n if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n return this.dataSource.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n return dataLists.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n });\n }\n return null;\n };\n MultiColumnComboBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.gridObj) {\n this.gridObj.destroy();\n detach(this.gridObj.element);\n }\n if (this.inputEle) {\n var attrArray = ['placeholder', 'aria-expanded', 'spellcheck', 'aria-label', 'role', 'type',\n 'aria-owns', 'aria-controls', 'aria-readonly', 'autocomplete', 'autocapitalize', 'spellcheck', 'aria-activedescendant'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputEle.removeAttribute(attrArray[i]);\n }\n this.inputEle.classList.remove('e-input');\n Input.setValue('', this.inputEle, this.floatLabelType, this.showClearButton);\n }\n if (this.popupEle) {\n this.popupEle.removeAttribute('aria-label');\n this.popupEle.removeAttribute('role');\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n if (this.inputObj) {\n detach(this.inputObj.container);\n this.inputObj = null;\n }\n Input.destroy({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.inputEle = null;\n this.previousItemElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.popupObj = null;\n this.gridObj = null;\n this.gridEle = null;\n this.popupEle = null;\n this.footer = null;\n this.noRecord = null;\n _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","firstElementChild","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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"}
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 HIDDENELEMENT = 'e-multicolumn-list-hidden';\nvar MULTICOLUMNGRID = 'e-multicolumn-grid';\nvar MultiColumnGrid = /** @class */ (function () {\n function MultiColumnGrid() {\n }\n /**\n * Injecting required modules for component.\n *\n * @returns {void}\n * @private\n */\n MultiColumnGrid.prototype.InjectModules = function () {\n Grid.Inject(VirtualScroll, GridGroup, Edit, Sort, Resize);\n };\n return MultiColumnGrid;\n}());\nexport { MultiColumnGrid };\n/**\n * Defines the filter type.\n */\nexport var FilterType;\n(function (FilterType) {\n /**\n * Checks whether a value begins with the specified value.\n */\n FilterType[\"StartsWith\"] = \"StartsWith\";\n /**\n * Checks whether a value ends with specified value.\n */\n FilterType[\"EndsWith\"] = \"EndsWith\";\n /**\n * Checks whether a value contains with specified value.\n */\n FilterType[\"Contains\"] = \"Contains\";\n})(FilterType || (FilterType = {}));\n/**\n * Specifies the sortOrder to sort the data source.\n */\nexport var SortOrder;\n(function (SortOrder) {\n /**\n * The datasource is not sorting. Default value is None.\n */\n SortOrder[\"None\"] = \"None\";\n /**\n * The datasource is sorting with ascending order.\n */\n SortOrder[\"Ascending\"] = \"Ascending\";\n /**\n * The data source is sorting with descending order.\n */\n SortOrder[\"Descending\"] = \"Descending\";\n})(SortOrder || (SortOrder = {}));\n/**\n * Specifies the type of sorting to be applied for the columns.\n */\nexport var SortType;\n(function (SortType) {\n /**\n * Allow sorting only one column\n */\n SortType[\"OneColumn\"] = \"OneColumn\";\n /**\n * Allow sorting multiple columns\n */\n SortType[\"MultipleColumns\"] = \"MultipleColumns\";\n})(SortType || (SortType = {}));\n/**\n * Specifies the type of wrap mode to be applied for the grid cells.\n */\nexport var WrapMode;\n(function (WrapMode) {\n /**\n * Specifies that both header and content text wrapping are enabled.\n */\n WrapMode[\"Both\"] = \"Both\";\n /**\n * Specifies that only content text wrapping is enabled.\n */\n WrapMode[\"Content\"] = \"Content\";\n /**\n * Specifies that only header text wrapping is enabled.\n */\n WrapMode[\"Header\"] = \"Header\";\n})(WrapMode || (WrapMode = {}));\n/**\n * The fields property maps the columns of the data table and binds the data to the component.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies the number of columns and its respective fields to be displayed in the dropdown popup.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"header\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"displayAsCheckBox\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Specifies the configuration of the columns in the popup content.\n */\nvar GridSettings = /** @class */ (function (_super) {\n __extends(GridSettings, _super);\n function GridSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(null)\n ], GridSettings.prototype, \"rowHeight\", void 0);\n __decorate([\n Property('Default')\n ], GridSettings.prototype, \"gridLines\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Property(WrapMode.Both)\n ], GridSettings.prototype, \"textWrapMode\", void 0);\n __decorate([\n Property(false)\n ], GridSettings.prototype, \"allowResizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], GridSettings.prototype, \"resizeStop\", void 0);\n return GridSettings;\n}(ChildProperty));\nexport { GridSettings };\n/**\n * The `MultiColumnComboBox` allows the user to search and select values from a list. It provides a list of options that can be selected using a filter input.\n * The selected value will be displayed in the input element.\n *\n * ```html\n * <input type='text' id='multi-column'></input>\n * ```\n * ```typescript\n * let multiColObj: MultiColumnComboBox = new MultiColumnComboBox();\n * multiColObj.appendTo('#multi-column');\n * ```\n */\nvar MultiColumnComboBox = /** @class */ (function (_super) {\n __extends(MultiColumnComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {MultiColumnComboBoxModel} options - Specifies the MultiColumnComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiColumnComboBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.gridInject = new MultiColumnGrid();\n _this.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.setHiddenValue = function () {\n if (isNOU(this.value)) {\n this.hiddenElement.innerHTML = '';\n return;\n }\n var existingOption = this.hiddenElement.querySelector('option');\n if (!isNOU(existingOption)) {\n existingOption.textContent = this.text;\n existingOption.setAttribute('value', this.value.toString());\n }\n else if (!isNOU(this.hiddenElement)) {\n var newOption = document.createElement('option');\n newOption.text = this.text;\n newOption.setAttribute('value', this.value.toString());\n newOption.setAttribute('selected', '');\n this.hiddenElement.appendChild(newOption);\n }\n };\n MultiColumnComboBox.prototype.renderGrid = function () {\n var _this = this;\n var gridColumns = this.getGridColumns();\n var sortOrder = this.sortOrder.toString().toLowerCase();\n this.gridObj = new Grid({\n dataSource: this.dataSource,\n columns: gridColumns,\n allowSorting: this.allowSorting,\n enableStickyHeader: true,\n gridLines: this.gridSettings.gridLines,\n rowHeight: this.gridSettings.rowHeight,\n enableAltRow: this.gridSettings.enableAltRow,\n enableVirtualization: this.enableVirtualization,\n enableRtl: this.enableRtl,\n editSettings: { allowAdding: false },\n query: this.query,\n allowTextWrap: this.gridSettings.allowTextWrap,\n textWrapSettings: { wrapMode: this.gridSettings.textWrapMode },\n height: this.popupHeight,\n allowResizing: this.gridSettings.allowResizing,\n allowMultiSorting: this.sortType.toString().toLowerCase() === 'multiplecolumns' && this.allowSorting,\n rowTemplate: this.itemTemplate,\n 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 var _this = this;\n this.trigger('actionComplete', args);\n if (args.requestType === 'sorting') {\n this.updateRowSelection(args);\n }\n if (Array.isArray(args.rows) && this.isDataFiltered) {\n var rows = args.rows;\n var rowHeight_1 = 0;\n rows.forEach(function (row) {\n var rowElement = _this.gridObj.getRowElementByUID(row.uid);\n if (rowElement) {\n rowHeight_1 += rowElement.getBoundingClientRect().height;\n }\n });\n this.popupRowHeight = rowHeight_1 || parseFloat(this.popupHeight);\n this.updateGridHeight(true, true);\n }\n this.popupObj.refreshPosition();\n this.gridObj.element.querySelector('.e-content').scrollTop = 0;\n };\n MultiColumnComboBox.prototype.handleKeyPressed = function (args) {\n if (args.key === 'Enter') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n if (this.isPopupOpen) {\n this.selectedGridRow(this.gridObj.getRows()[this.gridObj.selectedRowIndex], args, true);\n this.hidePopup(args);\n this.focusIn(args);\n }\n }\n if (this.fields.groupBy) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.cancel = true;\n this.gridKeyActionHandler(args, true);\n }\n };\n /* eslint-disable @typescript-eslint/no-explicit-any */\n MultiColumnComboBox.prototype.isRowMatching = function (data, selectedValue, selectedText) {\n var flattenData = function (data) {\n var result = [];\n if (data && typeof data === 'object') {\n if (Array.isArray(data)) {\n data.forEach(function (item) { return result.push.apply(result, flattenData(item)); });\n }\n else {\n Object.keys(data).forEach(function (key) { return result.push.apply(result, flattenData(data[\"\" + key])); });\n }\n }\n else if (data != null) {\n result.push(String(data));\n }\n return result;\n };\n var flattenedValues = flattenData(data);\n return (flattenedValues.indexOf(selectedValue) !== -1 && flattenedValues.indexOf(selectedText) !== -1);\n };\n MultiColumnComboBox.prototype.updateRowSelection = function (args) {\n var _this = this;\n if (args) {\n var dataRows = args.rows;\n dataRows.forEach(function (row) {\n _this.selectDataRow(row.data, row.index);\n });\n }\n };\n MultiColumnComboBox.prototype.selectDataRow = function (data, index) {\n var isPresent = this.isRowMatching(data, this.value ?\n this.value.toString() : '', this.text ? this.text.toString() : '');\n if (isPresent) {\n this.gridObj.selectRow(index);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.index = index;\n this.isProtectedOnChange = prevOnChange;\n return;\n }\n };\n MultiColumnComboBox.prototype.findIndex = function (arr, obj) {\n return arr.findIndex(function (item) {\n // eslint-disable-next-line\n return Object.keys(obj).every(function (key) { return item[key] === obj[key]; });\n });\n };\n MultiColumnComboBox.prototype.getGridColumns = function () {\n var _this = this;\n return this.columns.map(function (_a) {\n var field = _a.field, header = _a.header, width = _a.width, textAlign = _a.textAlign, format = _a.format, displayAsCheckBox = _a.displayAsCheckBox, template = _a.template, headerTemplate = _a.headerTemplate, customAttributes = _a.customAttributes;\n return ({\n field: field,\n headerText: header,\n width: width,\n textAlign: textAlign.toString() === '' && _this.enableRtl ? 'Right' : textAlign,\n format: format,\n displayAsCheckBox: displayAsCheckBox,\n template: template,\n headerTemplate: headerTemplate,\n customAttributes: customAttributes,\n type: displayAsCheckBox && !format ? 'boolean' : undefined\n });\n });\n };\n MultiColumnComboBox.prototype.updateGroupByField = function () {\n var groupByField = this.fields.groupBy;\n var isGroupByValid = groupByField !== '' && !isNOU(groupByField);\n if (isGroupByValid) {\n if (this.sortType.toString().toLowerCase() !== 'multiplecolumns') {\n this.gridEle.classList.add('e-multicolumn-group');\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.allowGrouping = true;\n this.gridObj.groupSettings = {\n showDropArea: false,\n columns: [groupByField]\n };\n if (this.groupTemplate && isGroupByValid) {\n this.gridObj.groupSettings.captionTemplate = this.groupTemplate;\n }\n if (this.isVue) {\n this.gridObj.isVue = this.isVue;\n }\n this.isProtectedOnChange = prevOnChange;\n }\n };\n MultiColumnComboBox.prototype.onDataBound = function () {\n var 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 this.hiddenElement = this.createElement('select', {\n attrs: {\n 'aria-hidden': 'true',\n 'tabindex': '-1',\n 'class': HIDDENELEMENT\n }\n });\n prepend([this.hiddenElement], this.inputWrapper);\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n if (!this.hiddenElement.hasAttribute('aria-label')) {\n this.hiddenElement.setAttribute('aria-label', this.getModuleName());\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.setElementWidth(this.width);\n 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 var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(htmlAttributes[htmlAttr], inputEle);\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n }\n else {\n inputEle.setAttribute(htmlAttr, htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n /* To set enable property */\n MultiColumnComboBox.prototype.setEnable = function () {\n Input.setEnabled(!this.disabled, this.inputEle);\n if (!this.disabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.setAriaDisabled('false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.setAriaDisabled('true');\n }\n };\n MultiColumnComboBox.prototype.setAriaDisabled = function (value) {\n this.inputEle.setAttribute('aria-disabled', value);\n this.inputWrapper.setAttribute('aria-disabled', value);\n };\n MultiColumnComboBox.prototype.updateFieldValue = function (fieldValue, dataObj) {\n var fieldVal = getValue(fieldValue, dataObj).toString();\n return fieldVal;\n };\n MultiColumnComboBox.prototype.initValue = function (isRerender, isValue, isInitial) {\n var _this = this;\n var prevItemData = this.gridObj.getSelectedRecords()[0];\n var prevItemEle = this.gridObj.getSelectedRows()[0];\n var item;\n var currentValue;\n var currentText;\n var currentIndex;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = this.value ? this.value.toString() : this.value;\n this.isProtectedOnChange = prevOnChange;\n var updateValues = function (dataList) {\n var result = _this.updateCurrentValues(item, dataList);\n currentValue = result.currentValue;\n currentText = result.currentText;\n currentIndex = result.currentIndex;\n };\n if ((!isRerender && (!isNOU(this.value) || !isNOU(this.text))) || (isRerender && isValue !== undefined)) {\n var value_1 = isRerender ? (isValue ? this.value : this.text) : (!isNOU(this.value) ? this.value : this.text);\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var filteredData = dataLists.filter(function (item) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, item);\n return fieldVal === value_1;\n });\n if (filteredData.length > 0) {\n item = filteredData[0];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n }\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n item = this.dataSource.filter(function (data) {\n var fieldVal = _this.updateFieldValue(isRerender ? (isValue ? _this.fields.value : _this.fields.text) :\n !isNOU(_this.value) ? _this.fields.value : _this.fields.text, data);\n return fieldVal === value_1;\n })[0];\n updateValues(this.dataSource);\n }\n }\n else if (!isNOU(this.index)) {\n if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n item = dataLists[_this.index];\n updateValues(dataLists);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n });\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n if (!this.fields.groupBy) {\n item = this.dataSource[this.index];\n updateValues(this.dataSource);\n }\n else {\n setTimeout(function () {\n var rows = _this.gridObj.getRows();\n if (rows && rows.length > 0) {\n var rowData = _this.gridObj.getRowInfo(rows[_this.index]).rowData;\n var value = _this.fields.value;\n for (var i = 0; i < rows.length; i++) {\n if (rowData && rowData[parseInt(value.toString(), 10)] ===\n _this.dataSource[parseInt(i.toString(), 10)][parseInt(value.toString(), 10)]) {\n item = rowData;\n updateValues(_this.dataSource);\n _this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n _this.gridObj.selectRow(_this.index);\n break;\n }\n }\n }\n });\n }\n }\n }\n if (!(this.dataSource instanceof DataManager)) {\n this.updateChangeEvent(item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial);\n }\n };\n MultiColumnComboBox.prototype.updateChangeEvent = function (item, prevItemData, prevItemEle, currentValue, currentText, currentIndex, isRerender, isInitial) {\n var fieldValue = item ? this.updateFieldValue(this.fields.value, item) : null;\n var ChangeEventArgs = {\n value: item ? fieldValue : null,\n itemData: { text: currentText, value: currentValue },\n item: this.getDataByValue(this.value),\n previousItemData: prevItemData,\n previousItemElement: prevItemEle,\n itemElement: this.inputWrapper,\n event: null,\n isInteracted: !isRerender\n };\n this.updateValues(currentValue, currentText, currentIndex, ChangeEventArgs, isInitial);\n };\n MultiColumnComboBox.prototype.updateCurrentValues = function (item, dataList) {\n if (!isNOU(item)) {\n var fieldText = this.updateFieldValue(this.fields.text, item);\n var fieldValue = this.updateFieldValue(this.fields.value, item);\n Input.setValue(fieldText, this.inputEle, this.floatLabelType, this.showClearButton);\n return {\n currentValue: fieldValue,\n currentText: fieldText,\n currentIndex: dataList.indexOf(item)\n };\n }\n return {\n currentValue: null,\n currentText: null,\n currentIndex: null\n };\n };\n MultiColumnComboBox.prototype.renderPopup = function () {\n this.popupEle = this.createElement('div', {\n id: this.element.id + '_options', className: MULTICOLUMNLIST + ' e-popup ' + (this.cssClass !== null ? this.cssClass : '')\n });\n attributes(this.popupEle, { 'aria-label': this.element.id, 'role': 'dialog' });\n document.body.appendChild(this.popupEle);\n this.createPopup(this.popupEle);\n prepend([this.popupDiv], this.popupEle);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n }\n var popupHeight = this.getSize(false);\n this.popupEle.style.maxHeight = popupHeight;\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n this.popupDiv.style.maxHeight = popupHeight;\n this.updateGridHeight();\n this.popupEle.style.visibility = 'hidden';\n this.isInitialRender = true;\n };\n MultiColumnComboBox.prototype.updateGridHeight = function (isFilter, autoHeight) {\n var height;\n if (isFilter) {\n var gridContentEle = this.gridObj.getContent().querySelector('.e-content');\n var scrollBarHeight = gridContentEle.offsetHeight - gridContentEle.clientHeight;\n if (this.fields.groupBy !== '' && !isNOU(this.fields.groupBy)) {\n this.popupRowHeight += this.popupRowHeight;\n }\n height = autoHeight ? (this.popupRowHeight < this.prevGridHeight ? (this.popupRowHeight + scrollBarHeight) + 'px' : this.prevGridHeight + 'px') : this.prevGridHeight + 'px';\n }\n else {\n this.prevGridHeight = this.popupDiv.getBoundingClientRect().height - this.popupDiv.querySelector('.e-gridheader').getBoundingClientRect().height;\n height = this.prevGridHeight + 'px';\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.height = height;\n this.isProtectedOnChange = prevOnChange;\n };\n MultiColumnComboBox.prototype.createPopup = function (element) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.getSize(true),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n },\n open: function () {\n _this.inputEle.focus();\n _this.updateClearIconState();\n }\n });\n };\n MultiColumnComboBox.prototype.setFooterTemplate = function () {\n if (this.footer) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], 'e-popup-footer');\n }\n var compiledString = this.getTemplateFunction(this.footerTemplate);\n var dataCount = this.dataSource.length;\n var tempArr = compiledString({ count: dataCount }, this, 'footerTemplate', this.element.id + 'footerTemplate', this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n MultiColumnComboBox.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.element.id + '_actionFailure' : this.element.id + '_noRecords';\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n var compiledString = this.getTemplateFunction(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n }\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request Failed' };\n this.l10n = new L10n('multicolumncombobox', l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n }\n addClass([this.noRecord], 'e-no-records');\n prepend([this.noRecord], this.popupDiv);\n this.popupObj.refreshPosition();\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n MultiColumnComboBox.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n /*To calculate the width and height of the popup */\n MultiColumnComboBox.prototype.getSize = function (ispopupWidth) {\n var currentDimension = ispopupWidth ? this.popupWidth : this.popupHeight;\n var size = formatUnit(currentDimension);\n if (size.includes('%')) {\n var dimensionValue = ispopupWidth ? this.inputWrapper.offsetWidth : document.documentElement.clientHeight;\n size = (dimensionValue * parseFloat(size) / 100).toString() + 'px';\n }\n else if (typeof currentDimension === 'string') {\n size = currentDimension.match(/px|em/) ? currentDimension : size;\n }\n return size;\n };\n MultiColumnComboBox.prototype.selectedGridRow = function (row, e, isKeyNav) {\n var _this = this;\n var eventArgs = {\n isInteracted: e ? true : false,\n item: this.gridObj.getSelectedRecords()[0],\n itemElement: row,\n itemData: this.gridObj.getSelectedRecords()[0],\n event: e,\n cancel: false\n };\n var selectedRecords = this.gridObj.getSelectedRecords()[0];\n var dataText = selectedRecords ? this.updateFieldValue(this.fields.text, selectedRecords) : '';\n var dataValue = selectedRecords ? this.updateFieldValue(this.fields.value, selectedRecords) : '';\n var ChangeEventArgs = {\n isInteracted: e ? true : false,\n item: selectedRecords,\n itemElement: row,\n itemData: { text: selectedRecords ? dataText : '', value: selectedRecords ? dataValue : '' },\n event: e,\n cancel: false,\n value: selectedRecords ? dataValue : '',\n previousItemData: { text: this.text, value: this.value },\n previousItemElement: this.previousItemElement\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && eventArgs.itemData) {\n var event_1 = e;\n var isUpdateVal = event_1.key === 'Enter' || event_1.key === 'Tab' || event_1.shiftKey && event_1.key === 'Tab' || event_1.altKey && event_1.key === 'ArrowUp';\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.updateValues(selectedRecords ? dataValue : '', selectedRecords ? dataText : '', _this.gridObj.selectedRowIndex, ChangeEventArgs);\n }\n Input.setValue(selectedRecords ? dataText : '', _this.inputEle, _this.floatLabelType, _this.showClearButton);\n _this.setHiddenValue();\n if (!isKeyNav || (isKeyNav && isUpdateVal)) {\n _this.hidePopup(e);\n }\n }\n });\n };\n MultiColumnComboBox.prototype.updateValues = function (value, text, index, eventArgs, isInitial) {\n this.previousItemElement = eventArgs.itemElement;\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.text = text || this.text;\n this.value = value || this.value;\n this.index = this.selectedRowIndex = !isNOU(index) ? index : this.index;\n this.isProtectedOnChange = prevOnChange;\n this.setHiddenValue();\n if (!isInitial) {\n this.triggerChangeEvent(eventArgs);\n }\n };\n MultiColumnComboBox.prototype.triggerChangeEvent = function (eventArgs) {\n this.trigger('change', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n return;\n }\n });\n };\n MultiColumnComboBox.prototype.inputHandler = function (e) {\n var _this = this;\n this.showPopup(null, true);\n this.updateClearIconState();\n if (this.allowFiltering) {\n var inputValue_1 = e.target.value.toLowerCase();\n var customFiltering_1 = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: inputValue_1,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n customFiltering_1 = true;\n _this.filterAction(dataSource, inputValue_1, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !eventArgs.preventDefaultAction && !customFiltering_1) {\n _this.filterAction(_this.dataSource, inputValue_1, _this.query, _this.fields);\n }\n });\n }\n this.updateInputValue(e.target.value);\n };\n MultiColumnComboBox.prototype.updateInputValue = function (inputValue) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, _b, data, exactData, query, result, totaldata;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!(this.dataSource instanceof DataManager)) return [3 /*break*/, 2];\n query = new Query();\n return [4 /*yield*/, this.dataSource.executeQuery(query)];\n case 1:\n result = _c.sent();\n totaldata = result.result;\n (_a = this.filterDatas(totaldata, inputValue), data = _a.data, exactData = _a.exactData);\n return [3 /*break*/, 3];\n case 2:\n if (Array.isArray(this.dataSource)) {\n (_b = this.filterDatas(this.dataSource, inputValue), data = _b.data, exactData = _b.exactData);\n }\n _c.label = 3;\n case 3:\n this.selectFilteredRows(data, exactData);\n return [2 /*return*/];\n }\n });\n });\n };\n MultiColumnComboBox.prototype.filterDatas = function (dataSource, inputValue) {\n var _this = this;\n var data = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return inputValue && fieldText.toLowerCase().startsWith(inputValue.toLowerCase());\n });\n var exactData = dataSource.filter(function (item) {\n var fieldText = _this.updateFieldValue(_this.fields.text, item);\n return fieldText === inputValue;\n });\n return { data: data, exactData: exactData };\n };\n MultiColumnComboBox.prototype.selectFilteredRows = function (data, exactData) {\n if (data.length <= 0) {\n this.matchedRowEle = this.matchedContent = this.exactMatchedContent = null;\n return;\n }\n this.matchedContent = data[0];\n this.exactMatchedContent = exactData[0];\n var selectedIndex = this.findIndex(this.gridObj.currentViewData, this.matchedContent);\n this.matchedRowEle = this.gridObj.getRowByIndex(selectedIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filterAction = function (dataSource, inputValue, query, fields) {\n var _this = this;\n var isQuery = query || new Query();\n var filterType = this.filterType.toString().toLowerCase();\n if (isNOU(query) && isNOU(fields)) {\n this.updateGridDataSource(dataSource);\n }\n else if (query) {\n if (dataSource instanceof DataManager) {\n this.filteringHandler(dataSource, inputValue, query, fields);\n }\n else {\n new DataManager(dataSource).executeQuery(query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n _this.updateGridDataSource(dataLists);\n });\n }\n }\n else {\n if (dataSource instanceof DataManager) {\n this.filteringHandler(dataSource, inputValue, isQuery, fields);\n }\n else if (Array.isArray(dataSource)) {\n var filteredData = dataSource.filter(function (item) {\n return _this.filterData(item, filterType, inputValue, fields);\n });\n this.updateGridDataSource(filteredData);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MultiColumnComboBox.prototype.filteringHandler = function (dataSource, inputValue, query, fields) {\n var _this = this;\n var filterType = this.filterType.toString().toLowerCase();\n var filteredData;\n dataSource.executeQuery(query).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n var dataLength = dataLists.length;\n filteredData = dataLists.filter(function (item) { return _this.filterData(item, filterType, inputValue, fields); });\n _this.updateGridDataSource(filteredData);\n });\n };\n MultiColumnComboBox.prototype.filterData = function (item, filterType, inputValue, fields) {\n var dataValue = this.updateFieldValue(fields ? fields.text : this.fields.text, item);\n var itemValue = dataValue.toLowerCase();\n switch (filterType) {\n case 'startswith':\n return itemValue.startsWith(inputValue);\n case 'endswith':\n return itemValue.endsWith(inputValue);\n case 'contains':\n return itemValue.includes(inputValue);\n default:\n return false;\n }\n };\n MultiColumnComboBox.prototype.updateGridDataSource = function (dataSource) {\n if (dataSource.length > 0) {\n removeClass([this.popupDiv], [NODATA]);\n var noRecordEle = this.popupDiv.querySelector('.e-no-records');\n if (noRecordEle) {\n this.popupDiv.removeChild(noRecordEle);\n }\n this.gridObj.dataSource = dataSource;\n this.isDataFiltered = true;\n }\n else {\n this.l10nUpdate();\n addClass([this.popupDiv], [NODATA]);\n }\n };\n MultiColumnComboBox.prototype.wireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputObj.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.gridEle, 'click', this.onMouseClick, this);\n EventHandler.add(this.inputEle, 'input', this.inputHandler, this);\n EventHandler.add(this.inputEle, 'focus', this.focusIn, this);\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown', this.clearText, this);\n }\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.keyboardModule = new KeyboardEvents(this.gridEle, {\n keyAction: this.gridKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n MultiColumnComboBox.prototype.unWireEvents = function () {\n if (!isNOU(this.inputObj.buttons[0])) {\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputObj.buttons[0], 'mousedown', this.dropDownClick);\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.inputEle, 'input', this.inputHandler);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.gridEle, 'click', this.onMouseClick);\n if (this.showClearButton) {\n EventHandler.remove(this.inputObj.clearButton, 'mousedown', this.clearText);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n MultiColumnComboBox.prototype.preventBlur = function (e) {\n e.preventDefault();\n };\n MultiColumnComboBox.prototype.dropDownClick = function (e) {\n if (this.disabled || this.readonly) {\n return;\n }\n var focusedEle = this.gridEle.querySelector('.e-row-focus');\n if (focusedEle) {\n focusedEle.classList.remove('e-row-focus');\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n else {\n this.showPopup(e);\n }\n };\n MultiColumnComboBox.prototype.onMouseClick = function (e) {\n var target = e.target;\n var row = closest(target, '.e-row');\n var selectedRowIndex = this.gridObj.selectedRowIndex;\n if (row) {\n if (selectedRowIndex >= 0) {\n this.selectedGridRow(row, e);\n }\n else {\n this.gridObj.selectedRowIndex = this.gridObj.getRows().indexOf(row);\n this.gridObj.selectRow(this.gridObj.selectedRowIndex);\n this.hidePopup(e);\n }\n }\n };\n MultiColumnComboBox.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (this.disabled || this.readonly || !this.isPopupOpen) {\n if (!target.closest('.e-multicolumn-list')) {\n this.focusOut();\n }\n return;\n }\n if ((target.classList.contains('e-multicolumn-list-icon') || closest(target, '.e-multicolumn-list.e-popup'))) {\n e.preventDefault();\n }\n else {\n if (!target.classList.contains('e-multicolumncombobox') && !target.classList.contains('e-clear-icon')) {\n if (!isNOU(this.text)) {\n this.updateInputValue(this.text);\n }\n var isClearVal = this.inputEle.value === '' ? true : false;\n this.updateValuesOnInput(e, null, isClearVal);\n }\n }\n };\n MultiColumnComboBox.prototype.updateValuesOnInput = function (mouseEvent, keyEvent, isClearValues, isKeyDown) {\n if (isKeyDown === void 0) { isKeyDown = false; }\n var e = mouseEvent ? mouseEvent : keyEvent;\n var val = isKeyDown ? this.matchedContent : this.exactMatchedContent;\n if (!val) {\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.firstElementChild);\n }\n });\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @param {MouseEvent | KeyboardEventArgs | TouchEvent} e - Specifies the event.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.hidePopup = function (e) {\n var _this = this;\n var animModel = { name: 'FadeOut', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e || null, cancel: false, animation: animModel };\n var target = e ? e.target : null;\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isPopupOpen = false;\n removeClass([_this.inputWrapper], [ICONANIMATION]);\n attributes(_this.inputEle, { 'aria-expanded': 'false' });\n _this.popupObj.hide(new Animation(eventArgs.animation));\n if (target && (target.classList.contains('e-multicolumn-list-icon') || target.classList.contains('e-rowcell'))) {\n if (!_this.value) {\n _this.gridObj.refreshColumns();\n }\n setTimeout(function () { _this.focusIn(e); });\n }\n else {\n _this.focusOut();\n }\n _this.inputEle.removeAttribute('aria-owns');\n _this.inputEle.removeAttribute('aria-activedescendant');\n }\n });\n setTimeout(function () {\n if (_this.gridObj) {\n _this.gridObj.dataSource = _this.dataSource;\n _this.updateGridHeight(true, false);\n }\n }, 100);\n };\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } index - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiColumnComboBox.prototype.addItems = function (items, index) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.gridObj.editSettings.allowAdding = true;\n this.gridObj.dataBind();\n this.isProtectedOnChange = prevOnChange;\n this.gridObj.addRecord(items, index);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n MultiColumnComboBox.prototype.getItems = function () {\n return this.gridObj.getDataRows();\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string } value - Specifies the value of the list item.\n * @returns {Object}\n */\n MultiColumnComboBox.prototype.getDataByValue = function (value) {\n var _this = this;\n if (!isNOU(this.dataSource) && this.dataSource instanceof Array) {\n return this.dataSource.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n }\n else if (!isNOU(this.dataSource) && this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query()).then(function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var dataLists = e.result;\n return dataLists.filter(function (item) {\n var fieldValue = _this.updateFieldValue(_this.fields.value, item);\n return fieldValue === value;\n })[0];\n });\n }\n return null;\n };\n MultiColumnComboBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.gridObj) {\n this.gridObj.destroy();\n detach(this.gridObj.element);\n }\n if (this.inputEle) {\n var attrArray = ['placeholder', 'aria-expanded', 'spellcheck', 'aria-label', 'role', 'type',\n 'aria-owns', 'aria-controls', 'aria-readonly', 'autocomplete', 'autocapitalize', 'spellcheck', 'aria-activedescendant'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputEle.removeAttribute(attrArray[i]);\n }\n this.inputEle.classList.remove('e-input');\n Input.setValue('', this.inputEle, this.floatLabelType, this.showClearButton);\n }\n if (this.popupEle) {\n this.popupEle.removeAttribute('aria-label');\n this.popupEle.removeAttribute('role');\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n if (this.inputObj) {\n detach(this.inputObj.container);\n this.inputObj = null;\n }\n Input.destroy({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.inputEle = null;\n this.previousItemElement = null;\n this.inputWrapper.innerHTML = '';\n this.inputWrapper = null;\n this.popupDiv = null;\n this.popupObj = null;\n this.gridObj = null;\n this.gridEle = null;\n this.popupEle = null;\n this.footer = null;\n this.noRecord = null;\n this.hiddenElement = null;\n _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","setHiddenValue","hiddenElement","innerHTML","existingOption","querySelector","newOption","document","text","setAttribute","toString","textContent","gridColumns","getGridColumns","sortOrder","toLowerCase","gridObj","dataSource","columns","allowSorting","enableStickyHeader","gridLines","gridSettings","rowHeight","enableAltRow","enableVirtualization","enableRtl","editSettings","allowAdding","query","allowTextWrap","textWrapSettings","wrapMode","textWrapMode","height","popupHeight","allowResizing","allowMultiSorting","sortType","rowTemplate","itemTemplate","dataBound","onDataBound","actionFailure","args","onActionFailure","actionBegin","trigger","actionComplete","handleActionComplete","bind","keyPressed","handleKeyPressed","resizing","resizeStart","resizeStop","updateGroupByField","isPrimaryKey","sortSettings","field","fields","direction","Ascending","Descending","appendTo","requestType","updateRowSelection","isArray","rows","isDataFiltered","rowHeight_1","forEach","row","rowElement","getRowElementByUID","uid","getBoundingClientRect","popupRowHeight","parseFloat","updateGridHeight","popupObj","refreshPosition","scrollTop","cancel","isPopupOpen","selectedGridRow","getRows","selectedRowIndex","hidePopup","focusIn","groupBy","gridKeyActionHandler","isRowMatching","selectedValue","selectedText","flattenData","item","keys","String","flattenedValues","indexOf","selectDataRow","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","hide","popupEle","style","visibility","rowElements","querySelectorAll","inputEle","allowedAttributes","tagName","getAttribute","attributes","aria-expanded","aria-readOnly","readonly","aria-disabled","disabled","autocomplete","autocapitalize","spellcheck","tabindex","attrs","role","parentElement","insertBefore","inputObj","Input","createInput","buttons","floatLabelType","properties","enabled","placeholder","showClearButton","cssClass","inputWrapper","container","aria-hidden","class","prepend","name","removeAttribute","hasAttribute","setElementWidth","initValue","inputWidth","ddElement","formatUnit","match","htmlAttributes","_i","htmlAttr","setEnable","dataBind","defaultAttr","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","createPopup","footerTemplate","setFooterTemplate","getSize","maxHeight","Math","round","footer","isFilter","autoHeight","gridContentEle","getContent","scrollBarHeight","offsetHeight","clientHeight","prevGridHeight","Popup","targetType","collision","X","Y","relateTo","position","targetExitViewport","Browser","isDevice","open","focus","updateClearIconState","isReact","clearTemplate","tempArr","getTemplateFunction","count","isStringTemplate","slice","append","noRecord","noRecordsTemplate","actionFailureTemplate","templateId","templatestring","l10nLocale","l10n","L10n","locale","getConstant","content","tempEle","select","outerHTML","compile","ispopupWidth","currentDimension","popupWidth","size","includes","offsetWidth","documentElement","isKeyNav","eventArgs","selectedRecords","dataText","dataValue","event_1","isUpdateVal","shiftKey","altKey","triggerChangeEvent","inputHandler","showPopup","allowFiltering","inputValue_1","customFiltering_1","eventArgs_1","preventDefaultAction","updateData","filterAction","updateInputValue","inputValue","_b","exactData","totaldata","_c","filterDatas","selectFilteredRows","startsWith","selectedIndex","currentViewData","getRowByIndex","isQuery","filterType","updateGridDataSource","filteringHandler","filterData","itemValue","endsWith","EventHandler","preventBlur","dropDownClick","onDocumentClick","onMouseClick","clearButton","clearText","windowResize","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","eventName","unWireEvents","remove","destroy","preventDefault","focusedEle","closest","focusOut","isClearVal","updateValuesOnInput","mouseEvent","keyEvent","isClearValues","isKeyDown","val","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","dataLength","remoteDataLength","clearIconEle","display","updateDynamicDataSource","newDataSource","oldDataSource","dataLength_1","calculateWidth","isInputOpen","animModel","duration","popup","animation","aria-owns","aria-controls","contentEle","activeRow","firstRow","show","Animation","firstElementChild","addItems","items","addRecord","getItems","getDataRows","detach","attrArray","onPropertyChanged","newProp","oldProp","prop","setReadonly","removeFloating","addFloating","setClearButton","setEnableRtl","Complex","Collection","StartsWith","None","OneColumn","NotifyPropertyChanges","Component"],"mappings":"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"}