@syncfusion/ej2-querybuilder 33.1.49 → 33.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-querybuilder.umd.min.js","sources":["../src/query-builder/query-builder.js","../src/query-builder/query-library.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 __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Query Builder Source\n */\n/* eslint-disable max-len */\nimport { Component, NotifyPropertyChanges, getComponent, Browser, compile, append, Draggable, remove } from '@syncfusion/ej2-base';\nimport { Property, ChildProperty, Complex, L10n, closest, extend, isNullOrUndefined, Collection, cldrData } from '@syncfusion/ej2-base';\nimport { getInstance, addClass, removeClass, rippleEffect, detach, classList } from '@syncfusion/ej2-base';\nimport { Internationalization, getUniqueID, select } from '@syncfusion/ej2-base';\nimport { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';\nimport { DropDownList, CheckBoxSelection, DropDownTree } from '@syncfusion/ej2-dropdowns';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Event, EventHandler, getValue, Animation } from '@syncfusion/ej2-base';\nimport { Query, Predicate, DataManager, Deferred } from '@syncfusion/ej2-data';\nimport { TextBox, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { compile as templateCompiler, getNumericObject } from '@syncfusion/ej2-base';\n/**\n * Defines the Columns of Query Builder\n */\nvar Columns = /** @class */ (function (_super) {\n __extends(Columns, _super);\n function Columns() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Columns.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"values\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"operators\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"ruleTemplate\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"template\", void 0);\n __decorate([\n Property({ isRequired: true, min: 0, max: Number.MAX_VALUE })\n ], Columns.prototype, \"validation\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"category\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"columns\", void 0);\n return Columns;\n}(ChildProperty));\nexport { Columns };\n/**\n * Defines the rule of Query Builder\n */\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Rule.prototype, \"condition\", void 0);\n __decorate([\n Collection([], Rule)\n ], Rule.prototype, \"rules\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"operator\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], Rule.prototype, \"not\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"isLocked\", void 0);\n return Rule;\n}(ChildProperty));\nexport { Rule };\n/**\n * Defines the property for value.\n */\nvar Value = /** @class */ (function (_super) {\n __extends(Value, _super);\n function Value() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Value.prototype, \"numericTextBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"multiSelectModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"datePickerModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"textBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"radioButtonModel\", void 0);\n return Value;\n}(ChildProperty));\nexport { Value };\n/**\n * Defines the ruleDelete, groupInsert, and groupDelete options of Query Builder.\n */\nvar ShowButtons = /** @class */ (function (_super) {\n __extends(ShowButtons, _super);\n function ShowButtons() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneGroup\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockGroup\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"ruleDelete\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupInsert\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupDelete\", void 0);\n return ShowButtons;\n}(ChildProperty));\nexport { ShowButtons };\nvar QueryBuilder = /** @class */ (function (_super) {\n __extends(QueryBuilder, _super);\n function QueryBuilder(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isReadonly = true;\n _this.fields = { text: 'label', value: 'field' };\n _this.updatedRule = { not: false, condition: 'and', isLocked: false };\n _this.isLocale = false;\n _this.isRefreshed = false;\n _this.isNotified = false;\n _this.isAddSuccess = false;\n _this.isNotValueChange = false;\n _this.isFieldChange = false;\n _this.isFieldClose = false;\n _this.isDestroy = false;\n _this.isGetNestedData = false;\n _this.isCustomOprCols = [];\n _this.groupCounter = 0;\n _this.lockItems = [];\n _this.groupIndex = -1;\n _this.ruleIndex = -1;\n _this.isLastGroup = false;\n _this.cloneGrpBtnClick = false;\n _this.isMiddleGroup = false;\n _this.cloneRuleBtnClick = false;\n _this.isValueEmpty = false;\n _this.isPropChange = false;\n _this.isRuleClicked = false;\n _this.groupCloned = false;\n _this.isRequestSent = false;\n MultiSelect.Inject(CheckBoxSelection);\n return _this;\n }\n QueryBuilder.prototype.getPersistData = function () {\n return this.addOnPersist(['rule']);\n };\n /**\n * Clears the rules without root rule.\n *\n * @returns {void}.\n */\n QueryBuilder.prototype.reset = function () {\n this.isImportRules = false;\n var bodyElem = this.element.querySelector('.e-group-body');\n var inputElements = this.element.querySelectorAll('input.e-control');\n var batchSize = 20;\n var currentIndex = 0;\n var processBatch = function () {\n var endIndex = Math.min(currentIndex + batchSize, inputElements.length);\n for (var i = currentIndex; i < endIndex; i++) {\n var element = inputElements[i];\n try {\n if (element.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element.parentElement, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n }\n catch (e) {\n console.warn('Error destroying tooltip:', e);\n }\n }\n currentIndex = endIndex;\n if (currentIndex < inputElements.length) {\n requestAnimationFrame(processBatch);\n }\n };\n if (inputElements.length > 0) {\n processBatch();\n }\n if (bodyElem) {\n bodyElem.textContent = '';\n }\n else {\n var fragment = document.createDocumentFragment();\n var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });\n grpContainer.appendChild(grpHeader);\n grpContainer.appendChild(grpBody);\n fragment.appendChild(grpContainer);\n this.element.appendChild(fragment);\n bodyElem = this.element.querySelector('.e-group-body');\n }\n if (this.headerTemplate && this.isRoot) {\n this.element.textContent = '';\n this.isRoot = false;\n }\n if (this.enableNotCondition) {\n var toggleElements = this.element.querySelectorAll('.e-qb-toggle');\n for (var i = 0; i < toggleElements.length; i++) {\n removeClass([toggleElements[i]], 'e-active-toggle');\n }\n }\n if (bodyElem) {\n bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));\n }\n this.levelColl[this.element.id + '_group0'] = [0];\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n if (bodyElem && bodyElem.parentElement) {\n this.disableRuleCondition(bodyElem.parentElement);\n }\n };\n QueryBuilder.prototype.getWrapper = function () {\n return this.element;\n };\n QueryBuilder.prototype.getModuleName = function () {\n return 'query-builder';\n };\n QueryBuilder.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'query-library',\n args: [this]\n });\n return modules;\n };\n QueryBuilder.prototype.GetRootColumnName = function (field) {\n if (!isNullOrUndefined(field)) {\n return this.separator ? field.split(this.separator)[0] : field;\n }\n return '';\n };\n QueryBuilder.prototype.initialize = function () {\n var _this = this;\n if (this.dataColl.length) {\n var columnKeys_1 = Object.keys(this.dataColl[0]);\n var cols = [];\n var categories_1 = [];\n var type_1;\n var groupBy_1 = false;\n var isDate_1 = false;\n var value_1;\n var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };\n if (this.columns.length) {\n this.columnSort();\n var columns = this.columns;\n columns.forEach(function (column) {\n _this.updateCustomOperator(column, 'initial');\n if (!column.type) {\n if (columnKeys_1.indexOf(column.field) > -1) {\n value_1 = _this.dataColl[0][column.field];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object') {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n column.type = type_1;\n isDate_1 = false;\n }\n type_1 = 'string';\n }\n if (!column.validation) {\n column.validation = validateObj_1;\n }\n if (column.category) {\n groupBy_1 = true;\n }\n else {\n column.category = _this.l10n.getConstant('OtherFields');\n }\n if (categories_1.indexOf(column.category) < 0) {\n categories_1.push(column.category);\n }\n if (!column.operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {\n column.operators = _this.customOperators[column.type + 'Operator'];\n }\n });\n if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {\n this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n this.updateSubFieldsFromColumns(this.columns);\n }\n else {\n for (var i = 0, len = columnKeys_1.length; i < len; i++) {\n value_1 = this.dataColl[0][columnKeys_1[i]];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object' && !Object.keys(value_1).length) {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n cols[i] = {\n 'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,\n 'validation': validateObj_1\n };\n isDate_1 = false;\n cols[i].operators = this.customOperators[cols[i].type + 'Operator'];\n if (type_1 === 'object') {\n this.updateSubFields(value_1, cols[i]);\n }\n }\n this.columns = cols;\n }\n }\n else if (this.columns && this.columns.length) {\n if (this.sortDirection !== 'Default') {\n this.columnSort();\n }\n this.processColumnsInBatches();\n if (this.columns.length > 50) {\n setTimeout(function () {\n _this.updateSubFieldsFromColumns(_this.columns);\n }, 0);\n }\n else {\n this.updateSubFieldsFromColumns(this.columns);\n }\n }\n this.trigger('dataBound', { type: 'dataBound' });\n };\n QueryBuilder.prototype.processColumnsInBatches = function () {\n var _this = this;\n var columns = this.columns;\n var batchSize = 10;\n var processedCount = 0;\n var processBatch = function () {\n var endIdx = Math.min(processedCount + batchSize, columns.length);\n for (var i = processedCount; i < endIdx; i++) {\n if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {\n _this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n else {\n columns[i].category = _this.l10n.getConstant('OtherFields');\n }\n _this.updateCustomOperator(columns[i], 'initial');\n if (!columns[i].operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {\n columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];\n }\n }\n processedCount = endIdx;\n if (processedCount < columns.length) {\n requestAnimationFrame(processBatch);\n }\n };\n processBatch();\n };\n QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {\n if (col.length > 50) {\n this.updateSubFieldsLarge(col, field);\n return;\n }\n for (var i = 0; i < col.length; i++) {\n if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {\n col[i].field = field ? field + this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = this.customOperators[col[i].type + 'Operator'];\n }\n if (col[i].columns) {\n col[i].type = 'object';\n this.updateSubFieldsFromColumns(col[i].columns, col[i].field);\n }\n }\n };\n QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {\n var _this = this;\n var i = 0;\n var colLength = col.length;\n var processNextBatch = function () {\n var endIdx = Math.min(i + 10, colLength);\n for (; i < endIdx; i++) {\n if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {\n col[i].field = field ? field + _this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n _this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = _this.customOperators[col[i].type + 'Operator'];\n }\n }\n if (i < colLength) {\n requestAnimationFrame(processNextBatch);\n }\n else {\n setTimeout(function () {\n for (var j = 0; j < colLength; j++) {\n if (col[j].columns) {\n col[j].type = 'object';\n _this.updateSubFieldsFromColumns(col[j].columns, col[j].field);\n }\n }\n }, 0);\n }\n };\n processNextBatch();\n };\n QueryBuilder.prototype.updateSubFields = function (value, col, data) {\n var sampCol;\n col.columns = [];\n var columnKeys = Object.keys(value);\n var field;\n var label;\n var type;\n var result;\n data = data ? data : this.dataColl[0];\n for (var i = 0, len = columnKeys.length; i < len; i++) {\n var compField = col.field.split('.');\n if (data) {\n result = data[compField[compField.length - 1]][columnKeys[i]];\n }\n else {\n result = this.dataColl[0][col.field][columnKeys[i]];\n }\n var resData = data[col.field.split(this.separator)[col.field.split(this.separator).length - 1]];\n type = typeof result;\n field = col.field + this.separator + columnKeys[i];\n label = columnKeys[i];\n type = (type === 'object' && !isNaN(Date.parse(result))) ? 'date' : type;\n sampCol = { field: field, label: label, type: type };\n if (type !== 'object') {\n sampCol.operators = this.customOperators[type + 'Operator'];\n }\n col.columns.push(sampCol);\n if (type === 'object') {\n this.updateSubFields(result, sampCol, resData);\n }\n }\n };\n QueryBuilder.prototype.updateCustomOperator = function (column, from) {\n if (column.operators) {\n if (!this.isLocale && from === 'initial' && !isNullOrUndefined(this.isCustomOprCols)) {\n this.isCustomOprCols.push(column.field);\n }\n var _loop_1 = function (j) {\n var sqlIdx = Object.keys(column.operators[j]).indexOf('sqlOperator');\n if (sqlIdx > -1) {\n var operator_1 = column.operators[j];\n var operColl = Object.keys(operator_1);\n var values = operColl.map(function (key) { return operator_1[\"\" + key]; }).join(',').split(',');\n var valueIdx = operColl.indexOf('value');\n this_1.operators[values[valueIdx]] = values[sqlIdx];\n }\n };\n var this_1 = this;\n for (var j = 0; j < column.operators.length; j++) {\n _loop_1(j);\n }\n }\n };\n QueryBuilder.prototype.focusEventHandler = function (event) {\n this.target = event.target;\n };\n QueryBuilder.prototype.clickEventHandler = function (event) {\n var _this = this;\n var target = event.target;\n var args;\n this.isImportRules = false;\n var groupID;\n if (target.tagName === 'SPAN') {\n target = target.parentElement;\n }\n if (typeof target.className === 'string' && target.className.indexOf('e-collapse-rule') > -1) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n }\n var summaryElem = document.getElementById(this.element.id + '_summary_content');\n var txtareaElem = summaryElem.querySelector('.e-summary-text');\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n var groupElem = this.element.querySelector('.e-group-container');\n groupElem.style.display = 'none';\n txtareaElem.textContent = this.getSqlFromRules(this.rule);\n summaryElem.style.display = 'block';\n txtareaElem.style.height = txtareaElem.scrollHeight + 'px';\n }\n if (target.tagName === 'BUTTON' && typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') < 0) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n switch (true) {\n case target.className.indexOf('e-removerule') > -1:\n this.actionButton = target;\n this.deleteRule(target);\n break;\n case target.className.indexOf('e-clone-rule-btn') > -1:\n this.actionButton = target;\n this.cloneRuleBtnClick = true;\n this.isRuleClicked = true;\n this.ruleClone(target);\n break;\n case target.className.indexOf('e-lock-rule-btn') > -1:\n this.actionButton = target;\n this.ruleLock(target);\n break;\n case target.className.indexOf('e-lock-grp-btn') > -1:\n this.actionButton = target;\n this.groupLock(target);\n break;\n case target.className.indexOf('e-clone-grp-btn') > -1:\n this.actionButton = target;\n this.cloneGrpBtnClick = this.groupCloned = true;\n this.isRuleClicked = true;\n this.groupClone(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-deletegroup') > -1:\n this.actionButton = target;\n this.deleteGroup(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-edit-rule') > -1:\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n document.getElementById(this.element.id + '_summary_content').style.display = 'none';\n if (this.element.querySelectorAll('.e-group-container').length < 1) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not);\n var mRules = extend({}, this.rule, {}, true);\n this.setGroupRules(mRules);\n this.renderSummaryCollapse();\n }\n else {\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem.querySelectorAll('.e-collapse-rule').length < 1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n }\n break;\n }\n }\n else if ((target.tagName === 'LABEL' && target.parentElement.className.indexOf('e-btn-group') > -1) ||\n (typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') > -1)) {\n var element = closest(target, '.e-group-container');\n if (!this.headerTemplate) {\n var forIdValue = target.getAttribute('for');\n var targetValue = void 0;\n if (forIdValue) {\n targetValue = document.getElementById(forIdValue).getAttribute('value');\n }\n else if (this.enableSeparateConnector) {\n if (target.classList.contains('e-btngroup-or-lbl')) {\n targetValue = 'or';\n }\n else if (target.classList.contains('e-btngroup-and-lbl')) {\n targetValue = 'and';\n }\n else {\n targetValue = target.textContent;\n }\n }\n groupID = element.id.replace(this.element.id + '_', '');\n var group = this.getGroup(groupID);\n var ariaChecked = void 0;\n if (this.enableNotCondition) {\n if (target.className.indexOf('e-qb-toggle') > -1) {\n var toggleElem = element.getElementsByClassName('e-qb-toggle')[0];\n if (toggleElem.className.indexOf('e-active-toggle') > -1) {\n removeClass([toggleElem], 'e-active-toggle');\n ariaChecked = false;\n }\n else {\n addClass([toggleElem], 'e-active-toggle');\n ariaChecked = true;\n }\n targetValue = group.condition;\n }\n else {\n ariaChecked = group.not;\n }\n }\n args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };\n if (this.enableNotCondition) {\n args = {\n groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),\n 'not': ariaChecked\n };\n }\n }\n if (!this.isImportRules) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.beforeSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.beforeSuccessCallBack(args, target);\n }\n this.target = target;\n }\n };\n QueryBuilder.prototype.beforeSuccessCallBack = function (args, target) {\n if (args && !args.cancel) {\n var element = closest(target, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n var rule = this.getParentGroup(element);\n if (this.enableSeparateConnector) {\n if (isNullOrUndefined(closest(target, '.e-rule-container')) &&\n element.classList.contains('e-group-container')) {\n element = target.parentElement.previousElementSibling !== null ?\n target.parentElement.previousElementSibling : element;\n }\n else {\n element = closest(target, '.e-rule-container');\n }\n var id = element.id.replace(this.element.id + '_', '');\n if (element.classList.contains('e-rule-container')) {\n rule = this.getRule(element);\n rule.condition = args.value;\n }\n else if (element.classList.contains('e-group-container')) {\n rule = this.getGroup(element);\n rule.condition = args.value;\n }\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: id, type: 'condition', value: rule.condition });\n }\n }\n else {\n rule.condition = args.value;\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });\n }\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'condition');\n if (this.enableSeparateConnector) {\n var andElem = target.parentElement.querySelector('.e-btngroup-and');\n var orElem = target.parentElement.querySelector('.e-btngroup-or');\n if (andElem && orElem) {\n if (args.value === 'and') {\n andElem.checked = true;\n orElem.checked = false;\n }\n else if (args.value === 'or') {\n orElem.checked = true;\n andElem.checked = false;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.selectBtn = function (target, event) {\n if (event.name === 'beforeOpen') {\n if (this.showButtons.groupInsert || isNullOrUndefined(this.showButtons.groupInsert)) {\n if (this.element.querySelectorAll('.e-group-container').length >= this.maxGroupCount + 1) {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n else {\n removeClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n if (this.enableRtl) {\n addClass([event.element.querySelector('li').parentElement], 'e-rtl');\n }\n }\n else {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n }\n else if (event.element.children[0].className.indexOf('e-addrule') > -1) {\n this.isRuleClicked = true;\n this.addRuleElement(closest(target, '.e-group-container'), {});\n }\n else if (event.element.children[0].className.indexOf('e-addgroup') > -1) {\n this.isRuleClicked = true;\n this.addGroupElement(true, closest(target, '.e-group-container'), '', true);\n }\n };\n QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {\n var ruleElem;\n var elem;\n var ruleListElem = target && target.querySelector('.e-rule-list');\n var args;\n if (type === 'change') {\n ruleElem = select('#' + parentId, target);\n }\n else {\n ruleElem = this.createElement('div', { attrs: { class: 'e-rule-container' } });\n ruleElem.setAttribute('id', target.id + '_rule' + this.ruleIdCounter);\n if (this.showButtons.cloneRule && this.cloneRuleBtnClick) {\n if (this.ruleIndex < 0) {\n ruleListElem.appendChild(ruleElem);\n }\n else {\n if (this.enableSeparateConnector) {\n var index = -1;\n var tempRuleIndex = this.ruleIndex + 1;\n for (var i = 0; i < tempRuleIndex; i++) {\n if (i === ruleListElem.children.length) {\n break;\n }\n if (ruleListElem.children[i].classList.contains('e-rule-container')) {\n tempRuleIndex++;\n index++;\n }\n }\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + index + 1]); // added clone rule to next position\n }\n else {\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position\n }\n }\n this.cloneRuleBtnClick = false;\n }\n else {\n ruleListElem.appendChild(ruleElem);\n }\n this.ruleIdCounter++;\n }\n if (column && column.ruleTemplate && rule) {\n args = { requestType: 'template-initialize', ruleID: ruleElem.id, action: action, fields: this.fields, rule: rule };\n this.trigger('actionBegin', args);\n this.ruleTemplateFn = this.templateParser(column.ruleTemplate);\n var templateID = this.element.id + column.field;\n var template = void 0;\n args.fields = this.fields;\n args.columns = this.columns;\n if (rule.field === '') {\n rule.field = column.field;\n }\n args.operators = this.getOperators(rule.field);\n args.operatorFields = { text: 'key', value: 'value' };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.ruleTemplateFn(args, this, ruleElem.id, templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.ruleTemplateFn(args, this, ruleElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.ruleTemplateFn(args, this, 'Template', templateID);\n elem = template;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(elem, ruleElem);\n if (ruleElem.children.length) {\n ruleElem.children[ruleElem.children.length - 1].className += ' e-rule-field';\n }\n }\n else {\n template = this.ruleTemplateFn(args, this, 'Template', templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n }\n }\n else {\n elem = this.ruleElem.querySelector('.e-rule-field').cloneNode(true);\n ruleElem.appendChild(elem);\n }\n if (this.showButtons.lockGroup) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.lockRule) {\n removeClass(ruleElem.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneGroup) {\n removeClass(ruleElem.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneRule) {\n removeClass(ruleElem.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.ruleDelete) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.allowDragAndDrop) {\n removeClass(ruleElem.querySelectorAll('.e-drag-qb-rule'), 'e-hidden');\n }\n if (column && column.ruleTemplate && rule) {\n this.renderReactTemplates();\n }\n return ruleElem;\n };\n QueryBuilder.prototype.addRuleElement = function (target, rule, column, action, parentId, isRuleTemplate) {\n var _this = this;\n if (!target) {\n return;\n }\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertRule' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addRuleSuccessCallBack(observedChangeArgs, target, rule, column, action, parentId, isRuleTemplate);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addRuleSuccessCallBack(args, target, rule, column, action, parentId, isRuleTemplate);\n }\n };\n QueryBuilder.prototype.addRuleSuccessCallBack = function (args, trgt, rule, col, act, pId, isRlTmp) {\n var _this = this;\n var isVertical = this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical';\n var height = isVertical ? '250px' : '200px';\n var ruleID;\n var column = (rule && rule.field) ? this.getColumn(rule.field) : col ? col : this.columns[0];\n var operators;\n var dropDownList;\n var ruleElem;\n var newRule = { 'label': '', 'field': '', 'type': '', 'operator': '' };\n if (!args.cancel) {\n if (column && column.ruleTemplate && rule.field) {\n this.selectedColumn = column;\n operators = this.selectedColumn.operators;\n newRule = {\n 'label': column.label,\n 'field': column.field,\n 'type': column.type,\n 'operator': operators[0].value\n };\n var passedRule_1 = Object.keys(rule).length ? rule : newRule;\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule_1);\n var actionArgs = {\n requestType: 'template-initialize',\n ruleID: ruleElem.id,\n action: 'insert-rule',\n fields: this.fields,\n rule: passedRule_1\n };\n this.trigger('actionBegin', actionArgs);\n setTimeout(function () {\n var createArgs = {\n requestType: 'template-create',\n ruleID: ruleElem.id,\n action: 'insert-rule',\n fields: _this.fields,\n rule: passedRule_1\n };\n _this.trigger('actionBegin', createArgs);\n }, 0);\n }\n else {\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');\n ruleElem.querySelector('.e-filter-input').setAttribute('id', ruleElem.id + '_filterkey');\n var element = ruleElem.querySelector('.e-rule-delete');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n element.textContent = this.l10n.getConstant('Remove');\n addClass([element], 'e-flat');\n addClass([element], 'e-primary');\n }\n else {\n addClass([element], 'e-round');\n addClass([element], 'e-icon-btn');\n element.setAttribute('title', this.l10n.getConstant('DeleteRule'));\n var spanElement = this.createElement('span', {\n attrs: { class: 'e-btn-icon e-icons e-delete-icon' }\n });\n element.appendChild(spanElement);\n }\n if (!this.showButtons.ruleDelete) {\n element.classList.add('e-button-hide');\n }\n }\n ruleElem.className = 'e-rule-container ' + (isVertical ? 'e-vertical-mode' : 'e-horizontal-mode');\n var previousRuleElem = ruleElem.previousElementSibling;\n this.processAdjacentElements(ruleElem, previousRuleElem, rule);\n if (!this.isImportRules) {\n this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);\n }\n if (this.rule.condition === '' && (this.isRuleClicked || this.rule.rules.length > 1)) {\n this.rule.condition = 'and';\n }\n this.isRuleClicked = false;\n var ruleCount = this.rule.rules.length;\n if (!column || (column && !column.ruleTemplate) || !rule.field) {\n if (ruleCount > 20) {\n setTimeout(function () {\n _this.applyFieldComponent(ruleElem, rule, height);\n }, 0);\n }\n else {\n this.applyFieldComponent(ruleElem, rule, height);\n }\n }\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (rule && rule.isLocked) {\n var lockRuleTarget = ruleElem.querySelector('.e-lock-rule-btn');\n this.ruleLock(lockRuleTarget);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', {\n groupID: trgt.id.replace(this.element.id + '_', ''),\n ruleID: ruleID,\n type: 'insertRule'\n });\n }\n }\n if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {\n rule = this.getRule(ruleID);\n }\n if (this.enableSeparateConnector) {\n this.processConnectorElements(ruleElem);\n }\n };\n QueryBuilder.prototype.processAdjacentElements = function (ruleElem, previousRuleElem, rule) {\n if (this.enableSeparateConnector) {\n if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {\n var ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');\n previousRuleElem = ruleContainer[ruleContainer.length - 1];\n }\n if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(previousRuleElem);\n if (this.headerTemplate) {\n this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);\n }\n }\n else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n this.handleOrphanedRuleElement(ruleElem, rule);\n }\n }\n else {\n if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {\n ruleElem.classList.add('e-joined-rule');\n previousRuleElem.classList.add('e-prev-joined-rule');\n }\n }\n if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&\n ruleElem.className.indexOf('e-separate-rule') < 0) {\n ruleElem.className += ' e-separate-rule';\n }\n };\n QueryBuilder.prototype.handleOrphanedRuleElement = function (ruleElem, rule) {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling) {\n var prevElem = group.previousElementSibling;\n var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');\n if (prevElem.classList.contains('e-group-container')) {\n prevElem = prevRuleContainer[prevRuleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem);\n this.headerTemplateFn(prevElem, false, prevRule.condition, prevRule, prevElem.id, true);\n }\n }\n else {\n this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);\n }\n };\n QueryBuilder.prototype.processConnectorElements = function (ruleElem) {\n var prevElem = ruleElem.previousElementSibling;\n var ruleContainer;\n while (prevElem && !prevElem.classList.contains('e-rule-container')) {\n if (prevElem.classList.contains('e-group-container')) {\n ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n break;\n }\n prevElem = prevElem.previousElementSibling;\n }\n if (this.headerTemplate && prevElem) {\n var prevRule = this.getRule(prevElem);\n var args = {\n requestType: 'rule-template-create',\n ruleID: prevElem.id,\n condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined\n };\n this.trigger('actionBegin', args);\n }\n else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n this.handleOrphanedConnectorElement(ruleElem);\n }\n this.setMultiConnector(ruleElem);\n };\n QueryBuilder.prototype.handleOrphanedConnectorElement = function (ruleElem) {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {\n var prevElem = group.previousElementSibling.previousElementSibling;\n if (prevElem.classList.contains('e-group-container')) {\n var ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem);\n var args = {\n requestType: 'rule-template-create',\n ruleID: prevElem.id,\n condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined\n };\n this.trigger('actionBegin', args);\n }\n }\n };\n QueryBuilder.prototype.applyFieldComponent = function (ruleElem, rule, height) {\n if (this.fieldMode === 'Default') {\n this.applyDropdownListComponent(ruleElem, rule, height);\n }\n else {\n this.applyDropdownTreeComponent(ruleElem, rule, height);\n }\n };\n QueryBuilder.prototype.applyDropdownListComponent = function (ruleElem, rule, height) {\n var ddlField;\n var ddlValue;\n if (this.separator && rule.field) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else if (this.autoSelectField) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;\n }\n ddlField = {\n dataSource: this.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.columns.length > 5) ? height : 'auto'),\n close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),\n change: this.changeField.bind(this),\n value: rule ? ddlValue : null,\n open: this.popupOpen.bind(this, true),\n cssClass: 'qb-dropdownlist'\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleElem.id + '_filterkey');\n var ddlVal;\n if (this.separator && rule.field) {\n ddlVal = this.GetRootColumnName(rule.field);\n }\n else {\n ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) : dropDownList.value;\n }\n this.selectedColumn = dropDownList.getDataByValue(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropDownList.element,\n itemData: this.selectedColumn\n });\n }\n };\n QueryBuilder.prototype.applyDropdownTreeComponent = function (ruleElem, rule, height) {\n var ddlField;\n var ddlValue = this.isImportRules ? rule.field : rule.field;\n this.dummyDropdownTreeDs = extend([], this.columns, [], true);\n this.updateDropdowntreeDS(this.dummyDropdownTreeDs);\n ddlField = {\n fields: {\n dataSource: this.dummyDropdownTreeDs,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded',\n selectable: 'selectable'\n },\n placeholder: this.l10n.getConstant('SelectField'),\n showClearButton: false,\n popupHeight: ((this.columns.length > 5) ? height : 'auto'),\n changeOnBlur: false,\n change: this.changeField.bind(this),\n value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,\n open: this.popupOpen.bind(this, false),\n treeSettings: { expandOn: 'Click' },\n cssClass: 'e-qb-ddt',\n filtering: this.dropdownTreeFiltering.bind(this),\n close: this.dropdownTreeClose.bind(this)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropdowntree = new DropDownTree(ddlField);\n dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');\n if (!isNullOrUndefined(dropdowntree.value)) {\n var value = this.getLabelFromColumn(dropdowntree.value[0]);\n dropdowntree.element.value = value;\n }\n var ddlVal = !isNullOrUndefined(rule.field) ?\n this.GetRootColumnName(rule.field) : dropdowntree.value;\n this.selectedColumn = this.getColumn(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropdowntree.element,\n itemData: this.selectedColumn\n });\n }\n };\n QueryBuilder.prototype.dropdownTreeFiltering = function (args) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var ruleElemID = '';\n var srcElement = args.event.srcElement;\n var isClearIcon = srcElement.classList.contains('e-clear-icon');\n var inputElem = isClearIcon ? srcElement.parentElement.querySelector('.e-textbox') : srcElement;\n ruleElemID = inputElem.id.split('_filterkey')[0];\n var ruleElem = document.getElementById(ruleElemID);\n this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');\n var hierarchicalData = extend([], this.columns, [], true);\n args.cancel = true;\n if (args.text === '') {\n this.changeDataSource(hierarchicalData);\n }\n else {\n var matchedDataSource = hierarchicalData\n .map(function (data) { return _this.nestedChildFilter(args.text, data); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n this.changeDataSource(matchedDataSource);\n setTimeout(function () {\n if (!isNullOrUndefined(proxy.ddTree) && !isNullOrUndefined(proxy.ddTree.treeObj)) {\n proxy.ddTree.treeObj.expandAll();\n }\n }, 100);\n }\n };\n QueryBuilder.prototype.changeDataSource = function (data) {\n this.updateDropdowntreeDS(data);\n this.ddTree.treeObj.fields = {\n dataSource: data,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded'\n };\n this.ddTree.treeObj.refresh();\n };\n QueryBuilder.prototype.nestedChildFilter = function (value, node) {\n var _this = this;\n var children = node[this.ddTree.fields.child];\n if (!children) {\n return this.isMatchedNode(value, node) ? node : null;\n }\n var matchedChildren = children\n .map(function (child) { return _this.nestedChildFilter(value, child); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n if (matchedChildren.length) {\n node[this.ddTree.fields.child] = matchedChildren;\n return node;\n }\n else {\n node[this.ddTree.fields.child] = children;\n return this.isMatchedNode(value, node) ? node : null;\n }\n };\n QueryBuilder.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.ddTree.fields.text].toLowerCase();\n value = value ? value.toLowerCase() : '';\n return checkValue.indexOf(value) !== -1;\n };\n QueryBuilder.prototype.dropdownTreeClose = function () {\n if (this.ddTree) {\n this.changeDataSource(extend([], this.columns, [], true));\n }\n this.ddTree = null;\n };\n QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n columns[parseInt(i.toString(), 10)].selectable = false;\n this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n }\n };\n QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {\n var ruleElem;\n var index = 0;\n var groupElem;\n var rules;\n if (isRuleTemplate) {\n ruleElem = select('#' + pId, target);\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || enableSeparateCondition) {\n index++;\n }\n }\n rules.rules[index] = rule;\n }\n else {\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var custom = rule.custom;\n if (Object.keys(rule).length) {\n if (this.ruleIndex < 0) {\n rules.rules.push({\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[rules.rules.length - 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n else {\n rules.rules.splice(this.ruleIndex + 1, 0, {\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[this.ruleIndex + 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n }\n else {\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newRule.custom = custom;\n }\n if (this.autoSelectField) {\n rule.field = newRule.field = this.rule.rules[0].field;\n }\n rules.rules.push(newRule);\n }\n }\n this.disableRuleCondition(target, rules, isNewRuleAdded);\n };\n QueryBuilder.prototype.changeRuleTemplate = function (column, element) {\n if (column && column.ruleTemplate) {\n return;\n }\n else {\n var parentGroup = closest(element, '.e-group-container');\n var parentId = closest(element, '.e-rule-container').id;\n if (this.previousColumn && this.previousColumn.ruleTemplate) {\n detach(element.closest('[id=\"' + parentId + '\"]').querySelector('.e-rule-field'));\n this.clearQBTemplate([parentId]);\n }\n if (column) {\n var operVal = this.selectedColumn.operators;\n var rule = { field: column.field, label: column.label, operator: operVal[0].value, value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n else {\n var rule = { field: '', label: '', operator: '', value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n }\n };\n QueryBuilder.prototype.renderToolTip = function (element) {\n var tooltip = new Tooltip({\n content: this.l10n.getConstant('ValidationMessage'),\n position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {\n tooltip.destroy();\n }, beforeOpen: function (args) {\n var tooltipCloseElement = args.element.querySelector('.e-tooltip-close');\n if (tooltipCloseElement) {\n tooltipCloseElement.style.display = 'none';\n }\n }\n });\n tooltip.appendTo(element);\n tooltip.open(element);\n };\n /**\n * Validate the conditions and it display errors for invalid fields.\n *\n * @returns {boolean} - Validation\n */\n QueryBuilder.prototype.validateFields = function () {\n var isValid = true;\n var dropDownTreeObj;\n if (this.allowValidation) {\n var excludeOprs = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n var i = void 0;\n var len = void 0;\n var fieldElem = void 0;\n var indexElem = void 0;\n var valArray = [];\n var groupElem = void 0;\n var index = void 0;\n var dropDownObj = void 0;\n var tempElem = void 0;\n var rule = void 0;\n var ruleElemCln = this.element.querySelectorAll('.e-rule-container');\n for (i = 0, len = ruleElemCln.length; i < len; i++) {\n var validateRule = void 0;\n groupElem = closest(ruleElemCln[i], '.e-group-container');\n rule = this.getParentGroup(groupElem);\n index = 0;\n indexElem = tempElem = ruleElemCln[i];\n if (this.fieldMode === 'DropdownTree') {\n dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdowntree'), 'dropdowntree');\n if (dropDownTreeObj && dropDownTreeObj.value && dropDownTreeObj.value.length) {\n this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);\n validateRule = this.selectedColumn.validation;\n }\n }\n else {\n dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdownlist'), 'dropdownlist');\n if (dropDownObj && dropDownObj.value) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n validateRule = !isNullOrUndefined(dropDownObj.value) && this.selectedColumn.validation;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-field input.e-control');\n if (validateRule && validateRule.isRequired) {\n while (indexElem && indexElem.previousElementSibling !== null) {\n indexElem = indexElem.previousElementSibling;\n var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || separateCondition) {\n index++;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-operator .e-control');\n if (!rule.rules[index].operator) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0 && fieldElem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n if (rule.rules[index].value instanceof Array) {\n valArray = rule.rules[index].value;\n }\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0 && ((isNullOrUndefined(rule.rules[index].value) &&\n rule.rules[index].type !== 'date') || rule.rules[index].value === '' || rule.rules[index].value === null ||\n (rule.rules[index].value instanceof Array && valArray.length < 1))) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n var element = valElem[j];\n var elem = void 0;\n if (element.parentElement.className.indexOf('e-searcher') > -1) {\n elem = closest(element, '.e-multi-select-wrapper');\n if (elem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(elem);\n }\n }\n else if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(valElem[j].parentElement);\n }\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (rule.rules[index].type === 'date' && (rule.rules[index].value === null || rule.rules[index].value.indexOf(null) > -1)) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0 && (isNullOrUndefined(rule.rules[index].value) || rule.rules[index].value[j] == null)) {\n this.renderToolTip(valElem[j].parentElement);\n }\n }\n }\n }\n else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.value)) ||\n (dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||\n dropDownTreeObj.value.length < 1))) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n }\n }\n return isValid;\n };\n QueryBuilder.prototype.refreshLevelColl = function () {\n this.levelColl = {};\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem) {\n this.levelColl[groupElem.id] = [0];\n var obj = { groupElement: groupElem, level: [0] };\n this.refreshLevel(obj);\n }\n };\n QueryBuilder.prototype.refreshLevel = function (obj) {\n var ruleList = obj.groupElement.querySelector('.e-rule-list').children;\n var childElem;\n var groupElem = obj.groupElement;\n var i;\n var iLen = ruleList.length;\n var groupCount = 0;\n for (i = 0; i < iLen; i++) {\n childElem = ruleList[i];\n if (childElem.className.indexOf('e-group-container') > -1) {\n obj.level.push(groupCount);\n this.levelColl[childElem.id] = obj.level.slice();\n groupCount++;\n obj.groupElement = childElem;\n obj = this.refreshLevel(obj);\n }\n }\n var ruleListElem = closest(groupElem, '.e-rule-list');\n obj.groupElement = ruleListElem ? closest(ruleListElem, '.e-group-container') : groupElem;\n obj.level = this.levelColl[obj.groupElement.id].slice();\n return obj;\n };\n QueryBuilder.prototype.groupTemplate = function (isConnector) {\n var glueElem;\n var inputElem;\n var dragClsName;\n var labelElem;\n var grpActElem;\n var groupBtn;\n var groupElem = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var groupHdrElem = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBodyElem = this.createElement('div', { attrs: { class: 'e-group-body' } });\n var rulesElem = this.createElement('div', { attrs: { class: 'e-rule-list' } });\n groupElem.appendChild(groupHdrElem);\n grpBodyElem.appendChild(rulesElem);\n groupElem.appendChild(grpBodyElem);\n if (!this.headerTemplate) {\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n groupHdrElem.appendChild(spanDragElement);\n var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';\n glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });\n if (this.enableSeparateConnector) {\n glueElem.classList.add('e-multi-connector');\n }\n if (this.enableNotCondition) {\n if (this.enableSeparateConnector) {\n inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });\n }\n else {\n inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n }\n glueElem.appendChild(inputElem);\n }\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },\n innerHTML: this.l10n.getConstant('AND')\n });\n glueElem.appendChild(labelElem);\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },\n innerHTML: this.l10n.getConstant('OR')\n });\n glueElem.appendChild(labelElem);\n groupHdrElem.appendChild(glueElem);\n grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });\n if (this.enableSeparateConnector) {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });\n grpActElem.appendChild(groupBtn);\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n else {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n groupHdrElem.appendChild(grpActElem);\n }\n return groupElem;\n };\n QueryBuilder.prototype.ruleTemplate = function () {\n var tempElem;\n var clsName;\n var cloneClsName;\n var lockClsName;\n var dragClsName;\n var ruleElem = this.createElement('div');\n var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n fieldElem.appendChild(spanDragElement);\n var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });\n tempElem.appendChild(filterElem);\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-operator' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value-delete' } });\n if (this.showButtons.cloneRule) {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn';\n }\n else {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn e-button-hide';\n }\n if (this.showButtons.lockRule) {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneRuleBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneRule'), type: 'button', class: cloneClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneRuleBtnElem.appendChild(spanElement);\n var cloneLockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockRule'), type: 'button', class: lockClsName } });\n spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n cloneLockBtnElem.appendChild(spanElement);\n if (this.showButtons.ruleDelete || isNullOrUndefined(this.showButtons.ruleDelete)) {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small';\n }\n else {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';\n }\n var delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n tempElem.appendChild(cloneRuleBtnElem);\n tempElem.appendChild(cloneLockBtnElem);\n tempElem.appendChild(delBtnElem);\n fieldElem.appendChild(tempElem);\n ruleElem.appendChild(fieldElem);\n return ruleElem;\n };\n QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addGroupSuccess(args, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n }\n };\n QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {\n var target = eventTarget;\n var dltGroupBtn = void 0;\n var groupID = '';\n if (target.className.indexOf('e-group-container') < 0) {\n groupID = target.querySelector('.e-group-container') && target.querySelector('.e-group-container').id;\n }\n else {\n groupID = target.id;\n }\n if (this.enableSeparateConnector) {\n this.groupElem = this.groupTemplate();\n }\n var groupElem = this.groupElem.cloneNode(true);\n groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);\n if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {\n if (groupElem && groupElem.children[0]) {\n groupElem.children[0].classList.add('e-parent-header');\n }\n addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');\n }\n if (this.headerTemplate) {\n if (isRoot) {\n isGroup = false;\n groupElem.setAttribute('id', this.element.id + '_group0');\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n this.groupIdCounter = 0;\n }\n else {\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n }\n }\n this.groupIdCounter++;\n if (!this.headerTemplate) {\n var andInpElem = groupElem.querySelector('.e-btngroup-and');\n var orInpElem = groupElem.querySelector('.e-btngroup-or');\n var andLblElem = groupElem.querySelector('.e-btngroup-and-lbl');\n var orLblElem = groupElem.querySelector('.e-btngroup-or-lbl');\n andInpElem.setAttribute('id', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('id', this.element.id + '_or' + this.btnGroupId);\n andInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n andLblElem.setAttribute('for', this.element.id + '_and' + this.btnGroupId);\n orLblElem.setAttribute('for', this.element.id + '_or' + this.btnGroupId);\n this.btnGroupId++;\n }\n if (isGroup) {\n var clsName = void 0;\n if (this.showButtons.groupDelete || isNullOrUndefined(this.showButtons.groupDelete)) {\n clsName = 'e-deletegroup';\n }\n else {\n clsName = 'e-deletegroup e-button-hide';\n }\n dltGroupBtn = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n var button = new Button({ iconCss: 'e-icons e-delete-icon', cssClass: 'e-small e-round' });\n button.appendTo(dltGroupBtn);\n dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));\n rippleEffect(dltGroupBtn, { selector: '.deletegroup' });\n var ruleList = target.querySelector('.e-rule-list');\n var childElems = ruleList.children;\n var grpLen = 0;\n for (var j = 0, jLen = childElems.length; j < jLen; j++) {\n if (childElems[j].className.indexOf('e-group-container') > -1) {\n grpLen += 1;\n }\n }\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick) {\n if (this.groupIndex === (childElems.length - 1)) {\n ruleList.appendChild(groupElem);\n this.isLastGroup = true;\n }\n else {\n if (this.enableSeparateConnector) {\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n for (var i = 0; i < tempGroupIndex; i++) {\n if (childElems[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n if (index > 0) {\n index--;\n }\n var idx = this.groupIndex + index + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n else {\n var idx = this.groupIndex + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n this.isMiddleGroup = true;\n }\n }\n else {\n ruleList.appendChild(groupElem);\n }\n var level = this.levelColl[target.id].slice(0);\n level.push(grpLen);\n this.levelColl[groupElem.id] = level;\n if (this.groupIndex > -1) {\n this.refreshLevelColl();\n }\n if (!this.isImportRules) {\n this.isAddSuccess = true;\n this.addGroups([], target.id.replace(this.element.id + '_', ''));\n this.isAddSuccess = false;\n if (isBtnClick && this.addRuleToNewGroups) {\n this.addRuleElement(groupElem, {});\n }\n }\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.cloneGroup) {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(cloneBtnElem);\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var lockSpanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(lockSpanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);\n }\n }\n else {\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n }\n target.appendChild(groupElem);\n this.levelColl[groupElem.id] = [0];\n }\n if (this.enableNotCondition) {\n if (!this.headerTemplate) {\n var notElem = groupElem.querySelector('.e-qb-toggle');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var tglBtn = void 0;\n if (this.enableSeparateConnector) {\n tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });\n }\n else {\n tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });\n }\n tglBtn.appendTo(notElem);\n groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');\n if (this.updatedRule && this.updatedRule.not) {\n addClass([notElem], 'e-active-toggle');\n }\n }\n }\n if (this.enableSeparateConnector && !this.headerTemplate) {\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n var btnGroup = groupElem.querySelector('.e-btn-group');\n for (var i = 0; i < btnGroup.childNodes.length; i++) {\n if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {\n if (!this.enableNotCondition) {\n btnGroup.childNodes[i].style.display = 'none';\n }\n else {\n btnGroup.childNodes[i].classList.add('e-multiconnector');\n }\n }\n else {\n btnGroup.childNodes[i].style.display = 'none';\n }\n }\n var prevSibling = groupElem.previousElementSibling;\n if (prevSibling) {\n if (isNullOrUndefined(this.headerTemplate)) {\n groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);\n var notElem = groupElem.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n }\n if (!this.isImportRules) {\n var groupElement = groupElem.previousElementSibling;\n var newAndElem = groupElement.querySelector('.e-btngroup-and');\n var newOrElem = groupElement.querySelector('.e-btngroup-or');\n if (!andElem.checked && !orElem.checked) {\n var nextSibling = groupElem.nextElementSibling;\n if (nextSibling && nextSibling.classList.contains('e-btn-group')) {\n andElem = nextSibling.querySelector('.e-btngroup-and');\n orElem = nextSibling.querySelector('.e-btngroup-or');\n newAndElem.checked = andElem.checked;\n newOrElem.checked = orElem.checked;\n }\n }\n else if (this.enableSeparateConnector) {\n if (andElem.checked) {\n newAndElem.checked = true;\n }\n if (orElem.checked) {\n newOrElem.checked = true;\n }\n }\n }\n }\n }\n this.updatedRule = null;\n if (this.headerTemplate) {\n var args_1 = {\n requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,\n notCondition: this.enableNotCondition ? not : undefined\n };\n this.trigger('actionBegin', args_1);\n }\n else {\n if (this.enableSeparateConnector) {\n var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');\n var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });\n btnObj.appendTo(conditionBtn_1);\n btnObj.element.onclick = function () {\n _this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});\n };\n var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');\n btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });\n btnObj.appendTo(groupBtn_1);\n btnObj.element.onclick = function () {\n _this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);\n };\n }\n else {\n var groupBtn = groupElem.querySelector('.e-add-btn');\n var btnObj = new DropDownButton({\n items: this.items,\n cssClass: 'e-round e-small e-caret-hide e-addrulegroup',\n iconCss: 'e-icons e-add-icon',\n beforeOpen: this.selectBtn.bind(this, groupBtn),\n select: this.selectBtn.bind(this, groupBtn)\n });\n btnObj.appendTo(groupBtn);\n groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));\n }\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n var grpId = target.id.replace(this.element.id + '_', '');\n var chgrpId = groupElem.id.replace(this.element.id + '_', '');\n this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });\n }\n }\n };\n QueryBuilder.prototype.setMultiConnector = function (trgt) {\n if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {\n var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');\n if (btnGroupElem) {\n trgt.parentElement.insertBefore(btnGroupElem, trgt);\n var notElem = trgt.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n this.addHeaderDiv(trgt);\n }\n }\n };\n QueryBuilder.prototype.addHeaderDiv = function (elem) {\n var prevRule;\n var prevElem = elem.previousElementSibling.previousElementSibling;\n if (prevElem) {\n if (prevElem.id.indexOf('rule') > -1) {\n prevRule = this.getRule(prevElem);\n }\n else {\n prevRule = this.getGroup(prevElem);\n }\n if (!isNullOrUndefined(prevRule) && isNullOrUndefined(prevRule.condition)) {\n prevRule.condition = 'and';\n }\n var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');\n var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');\n orElem.disabled = false;\n andElem.disabled = false;\n if (!isNullOrUndefined(prevRule) && prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n };\n QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {\n var template;\n var templateID = this.element.id + '_header';\n var args;\n var groupHdr = groupElem.querySelector('.e-group-header');\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr = groupElem;\n }\n if (this.headerTemplate) {\n args = {\n requestType: 'header-template-initialize', ruleID: groupElem.id,\n notCondition: this.enableNotCondition ? not : undefined,\n condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID\n };\n this.trigger('actionBegin', args);\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n args.requestType = 'rule-template-create';\n }\n this.headerFn = this.templateParser(this.headerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.headerFn(args, this, groupElem.id, templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.headerFn(args, this, groupElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.headerFn(args, this, groupElem.id, templateID);\n if (this.enableSeparateConnector && (isInitialRule || groupElem.id.indexOf('rule') !== -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < template.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (template[i].nodeName === 'DIV') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template[i];\n break;\n }\n }\n }\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(template, groupHdr);\n }\n }\n else {\n template = this.headerFn(args, this, 'Template', templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n }\n this.renderReactTemplates();\n }\n return groupElem;\n };\n QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {\n var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;\n var group = elem.closest('.e-group-container');\n if (!groupElem.nextElementSibling && group) {\n group = group.nextElementSibling ? group.nextElementSibling : group;\n }\n if (group) {\n group.parentElement.insertBefore(template, group);\n }\n };\n /**\n * Notify the changes to component.\n *\n * @param {string | number | boolean | Date | string[] | number[] | Date[]} value - 'value' to be passed to update the rule value.\n * @param {Element} element - 'element' to be passed to update the rule.\n * @param {string} type - 'type' to be passed to update the rule .\n * @returns {void}.\n */\n QueryBuilder.prototype.notifyChange = function (value, element, type) {\n var grpElement = closest(element, '.e-group-container');\n var rules = this.getParentGroup(grpElement);\n var ruleElement = closest(element, '.e-rule-container');\n var index = 0;\n if (type === 'not') {\n rules.not = value;\n return;\n }\n if (type === 'condition') {\n if (this.enableSeparateConnector) {\n ruleElement = element.parentElement.previousElementSibling;\n if (ruleElement && ruleElement.classList.contains('e-group-container')) {\n ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];\n }\n if (ruleElement && ruleElement.classList.contains('e-rule-container')) {\n rules = this.getRule(ruleElement);\n }\n rules.condition = value;\n }\n else {\n rules.condition = value;\n }\n return;\n }\n while (ruleElement && ruleElement.previousElementSibling !== null) {\n ruleElement = ruleElement.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||\n ruleElement.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules.rules[index];\n var column = this.getColumn(rule.field);\n var format = this.getFormat(column.format);\n if (column.type === 'date') {\n if (value instanceof Date) {\n value = this.intl.formatDate(value, format);\n }\n else if (value instanceof Array) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] && value[i] instanceof Date) {\n value[i] = this.intl.formatDate(value[i], format);\n }\n }\n }\n }\n if (column.ruleTemplate) {\n this.templateChange(element, value, type);\n }\n else {\n this.isNotified = true;\n this.updateRules(element, value);\n this.isNotified = false;\n }\n };\n QueryBuilder.prototype.templateChange = function (element, value, type) {\n var grpElem = closest(element, '.e-group-container');\n var eventsArgs;\n var rules = grpElem && this.getParentGroup(grpElem);\n var ruleElem = closest(element, '.e-rule-container');\n var index = 0;\n if (this.allowValidation) {\n this.validateValue(rules, ruleElem);\n }\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules && rules.rules[index];\n if (type === 'field') {\n this.selectedColumn = this.getColumn(value);\n }\n else if (rule) {\n this.selectedColumn = this.getColumn(rule.field);\n }\n var operVal;\n this.previousColumn = rule && this.getColumn(rule.field);\n var beforeRules = this.getValidRules(this.rule);\n if (this.selectedColumn) {\n if (this.selectedColumn.operators) {\n operVal = this.selectedColumn.operators;\n }\n else {\n operVal = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n }\n var arrOper = ['in', 'notin', 'between', 'notbetween'];\n var prevOper;\n switch (type) {\n case 'field':\n if (isNullOrUndefined(value)) {\n if (!isNullOrUndefined(rule)) {\n rule.field = '';\n rule.label = '';\n rule.type = '';\n rule.value = '';\n rule.operator = '';\n }\n else {\n return;\n }\n }\n else {\n rule.field = value;\n rule.label = this.selectedColumn.label;\n rule.type = this.selectedColumn.type;\n rule.value = '';\n rule.operator = operVal[0].value;\n }\n break;\n case 'operator':\n prevOper = rule.operator;\n rule.operator = value;\n if (arrOper.indexOf(rule.operator) > -1) {\n rule.value = [];\n }\n else if (arrOper.indexOf(prevOper) > -1) {\n rule.value = '';\n }\n break;\n case 'value':\n rule.value = value;\n }\n this.changeRuleTemplate(this.selectedColumn, element);\n this.filterRules(beforeRules, this.getValidRules(this.rule), type);\n if (this.selectedColumn && this.selectedColumn.ruleTemplate) {\n if (type === 'field' || type === 'operator') {\n var grpEle = closest(element, '.e-rule-container');\n this.destroyControls(grpEle, true);\n detach(grpEle.querySelector('.e-rule-field'));\n var ruleElement = this.appendRuleElem(closest(grpEle, '.e-group-container'), this.selectedColumn, 'change', grpEle.id, type, rule);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElement.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElement.className = 'e-rule-container e-horizontal-mode';\n }\n if (!this.enableSeparateConnector) {\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {\n if (ruleElement.className.indexOf('e-joined-rule') < 0) {\n ruleElement.className += ' e-joined-rule';\n }\n if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {\n ruleElement.previousElementSibling.className += ' e-prev-joined-rule';\n }\n }\n }\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&\n ruleElement.className.indexOf('e-separate-rule') < 0) {\n ruleElement.className += ' e-separate-rule';\n }\n var args = {\n requestType: 'template-create', action: type, ruleID: grpEle.id,\n fields: this.fields, rule: rule\n };\n eventsArgs = {\n groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),\n value: rule.field, type: 'field'\n };\n this.trigger('actionBegin', args);\n this.trigger('change', eventsArgs);\n }\n }\n };\n QueryBuilder.prototype.changeValue = function (i, args) {\n var _this = this;\n var element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.isNumInput && typeof args.value === 'number') || (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox'))\n && (this.selectedColumn.validation && (this.selectedColumn.validation.max !== Number.MAX_VALUE || this.selectedColumn.validation.min > 0))) {\n this.isNumInput = false;\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.element && args.element.classList.contains('e-multiselect')) {\n var multiSelectArgs = args;\n element = multiSelectArgs.element;\n }\n else if (args.event) {\n element = args.event.target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.currentTarget;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.element;\n }\n if (!element) {\n return;\n }\n if (element.className.indexOf('e-day') > -1 || element.className.indexOf('e-today') > -1 || element.className.indexOf('e-cell') > -1) {\n var calenderArgs = args;\n element = calenderArgs.element;\n }\n var groupElem = closest(element, '.e-group-container');\n var ruleElem = closest(element, '.e-rule-container');\n var groupID = groupElem && groupElem.id.replace(this.element.id + '_', '');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var dateElement = args;\n var dropDownObj;\n if (dateElement.element && dateElement.element.className.indexOf('e-datepicker') > -1) {\n element = dateElement.element;\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n if (dropDownObj) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n if (dropDownObj) {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n }\n var value;\n var rbValue;\n if (element.className.indexOf('e-radio') > -1) {\n rbValue = parseInt(element.id.split('valuekey')[1], 10);\n if (this.fieldMode === 'Default') {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n if (this.selectedColumn.columns) {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-rule-sub-filter .e-dropdownlist'), 'dropdownlist');\n this.selectedColumn = this.getColumn(dropDownObj.value);\n }\n }\n else {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n if (this.selectedColumn.values) {\n value = this.selectedColumn.values[rbValue];\n }\n else {\n var valColl = [true, false];\n value = valColl[rbValue];\n }\n }\n else if (element.className.indexOf('e-multiselect') > -1) {\n value = getComponent(element, 'multiselect').value;\n }\n else {\n value = args.value;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = Number(args.currentTarget.value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var elem = args.currentTarget;\n var numericTextBoxObj = getInstance(elem, NumericTextBox);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n if (isNaN(value) && elem.value.indexOf(decimalSeparator) !== -1) {\n value = this.intl.getNumberParser({ format: 'n' })(elem.value);\n }\n if (!isNaN(value)) {\n numericTextBoxObj.value = value;\n }\n this.isNumInput = true;\n }\n }\n if (args.name === 'input' && this.immediateModeDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setInterval(function () { _this.filterValue(groupID, ruleID, value, i, element); }, this.immediateModeDelay);\n }\n else {\n this.filterValue(groupID, ruleID, value, i, element);\n }\n };\n QueryBuilder.prototype.filterValue = function (grID, rlID, value, i, ele) {\n var _this = this;\n var eventsArgs = { groupID: grID, ruleID: rlID, value: value, cancel: false, type: 'value' };\n window.clearInterval(this.timer);\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.changeValueSuccessCallBack(observedChangeArgs, ele, i, grID, rlID);\n });\n }\n else {\n this.changeValueSuccessCallBack(eventsArgs, ele, i, grID, rlID);\n }\n };\n QueryBuilder.prototype.changeValueSuccessCallBack = function (args, element, i, groupID, ruleID) {\n if (!args.cancel) {\n this.updateRules(element, args.value, i);\n this.setSecondDateMinFromFirst(element, i);\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: ruleID, value: args.value, cancel: false, type: 'value' });\n }\n }\n };\n QueryBuilder.prototype.setSecondDateMinFromFirst = function (element, valueIndex) {\n if (valueIndex !== 0) {\n return;\n }\n var ruleElem = closest(element, '.e-rule-container');\n if (!ruleElem) {\n return;\n }\n var operatorDropdownElement = ruleElem.querySelector('.e-rule-operator .e-dropdownlist');\n if (!operatorDropdownElement) {\n return;\n }\n var operatorDropdown = getComponent(operatorDropdownElement, 'dropdownlist');\n var operatorValue = operatorDropdown && operatorDropdown.value ? operatorDropdown.value.toString().toLowerCase() : '';\n if (operatorValue.indexOf('between') < 0) {\n return;\n }\n var firstDateElement = document.getElementById(ruleElem.id + '_valuekey0');\n var secondDateElement = document.getElementById(ruleElem.id + '_valuekey1');\n if (!firstDateElement || !secondDateElement) {\n return;\n }\n var firstDatePicker = getComponent(firstDateElement, 'datepicker');\n var secondDatePicker = getComponent(secondDateElement, 'datepicker');\n if (!firstDatePicker || !secondDatePicker || !(firstDatePicker.value instanceof Date)) {\n return;\n }\n var nextDay = new Date(firstDatePicker.value.getTime());\n nextDay.setDate(nextDay.getDate() + 1);\n secondDatePicker.min = nextDay;\n if (secondDatePicker.value instanceof Date && secondDatePicker.value.getTime() < nextDay.getTime()) {\n secondDatePicker.value = nextDay;\n }\n };\n QueryBuilder.prototype.fieldClose = function (id) {\n if (this.isFieldChange || this.isDestroy) {\n return;\n }\n this.isFieldClose = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddl = getComponent(id, 'dropdownlist');\n var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');\n var itemData = ddl.getItemData();\n ddl.value = itemData.value;\n var customArgs = {\n element: ddl.element, value: itemData.value, isInteracted: true,\n previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null\n };\n if (ddl.previousValue !== ddl.value) {\n this.changeField(customArgs);\n }\n this.isFieldChange = false;\n };\n QueryBuilder.prototype.changeField = function (args) {\n if (args.isInteracted) {\n if (isNullOrUndefined(args.value)) {\n return;\n }\n this.isFieldChange = true;\n this.prevItemData = args.itemData;\n var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);\n if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {\n var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');\n var ddt = getComponent(ddtElem, 'dropdowntree');\n if (column) {\n if (column.type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.oldValue;\n ddt.dataBind();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNullOrUndefined(args.oldValue)) {\n ddtElem.value = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getLabelFromColumn(args.oldValue[0]);\n ddtElem.value = result;\n }\n return;\n }\n else {\n if (!isNullOrUndefined(args.value[0])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.value[0];\n ddt.dataBind();\n var result = this.getLabelFromColumn(args.value[0]);\n ddtElem.value = result;\n }\n }\n }\n else {\n return;\n }\n }\n this.destroySubFields(fieldElem);\n this.subFieldElem = null;\n this.isNotValueChange = true;\n if (column && column.ruleTemplate) {\n this.templateChange(args.element, column.field, 'field');\n }\n else if (column && column.columns && column.columns[0].ruleTemplate) {\n this.templateChange(args.element, column.columns[0].field, 'field');\n }\n else {\n var groupElem = closest(args.element, '.e-group-container');\n var rules = this.getParentGroup(groupElem);\n var ruleElem = closest(args.element, '.e-rule-container');\n var index = 0;\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n rules.rules[index].value = '';\n this.changeRule(rules.rules[index], args);\n }\n }\n };\n QueryBuilder.prototype.changeRule = function (rule, ddlArgs) {\n if (!ddlArgs.itemData) {\n if (this.fieldMode === 'DropdownTree') {\n var ddt = getComponent(ddlArgs.element, 'dropdowntree');\n if (ddt.value == null) {\n return;\n }\n }\n else {\n return;\n }\n }\n var tempRule = {};\n var filterElem = closest(ddlArgs.element, '.e-rule-filter');\n filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n if (this.fieldMode === 'DropdownTree' && filterElem !== null) {\n ddlObj = getComponent(ddlArgs.element, 'dropdowntree');\n }\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n this.changeFilter(filterElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n };\n QueryBuilder.prototype.changeFilter = function (flt, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n if (flt) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddlValue = void 0;\n if (this.fieldMode === 'DropdownTree') {\n ddlValue = (dl.value[0]);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(dl.value) : dl.value;\n }\n this.selectedColumn = this.getColumn(ddlValue);\n var ruleElem = closest(flt, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var eventsArgs = {\n groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?\n dl.value[0] : dl.value, cancel: false, type: 'field'\n };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);\n });\n }\n else {\n this.fieldChangeSuccess(eventsArgs, tmpRl, flt, rl, dArg);\n }\n }\n else {\n var operatorElem = closest(dArg.element, '.e-rule-operator');\n this.changeOperator(flt, operatorElem, dl, grID, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.changeOperator = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n flt, opr, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n var ruleElem;\n var ruleID;\n var eventsArgs;\n if (opr) {\n ruleElem = closest(opr, '.e-rule-container');\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n eventsArgs = { groupID: grID, ruleID: ruleID, selectedIndex: dl.index, cancel: false, type: 'operator' };\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.operatorChangeSuccess(observedChangeArgs, flt, tmpRl, rl, dArg);\n });\n }\n else {\n this.operatorChangeSuccess(eventsArgs, flt, tmpRl, rl, dArg);\n }\n }\n else {\n this.changeRuleValues(flt, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.fieldChangeSuccess = function (args, tempRule, filterElem, rule, ddlArgs) {\n var ruleElem = closest(filterElem, '.e-rule-container');\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n var tooltipElem = ruleElem.querySelectorAll('.e-tooltip.e-input-group');\n for (var i = 0; i < tooltipElem.length; i++) {\n getComponent(tooltipElem[i], 'tooltip').destroy();\n }\n if (!args.cancel) {\n if (isNullOrUndefined(this.selectedColumn)) {\n return;\n }\n tempRule.type = this.selectedColumn.type;\n if (ruleElem.querySelector('.e-template')) {\n rule.value = '';\n }\n if (this.selectedColumn.type === 'object' && this.fieldMode === 'Default') {\n tempRule.type = this.selectedColumn.columns[0].type;\n while (this.selectedColumn.columns) {\n this.createSubFields(filterElem, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.destroySubFields(filterElem);\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.destroySubFields = function (filterElem) {\n while (filterElem && filterElem.nextElementSibling.classList.contains('e-rule-sub-filter')) {\n this.destroyControls(filterElem);\n filterElem.nextElementSibling.remove();\n }\n };\n QueryBuilder.prototype.createSubFields = function (filterElem, rule, tempRule, ddlArgs) {\n var subFieldValue = false;\n var fieldElem = closest(filterElem, '.e-rule-field');\n var tempElem = this.createElement('div', { attrs: { class: 'e-rule-sub-filter', id: 'subfilter' + this.subFilterCounter } });\n fieldElem.insertBefore(tempElem, fieldElem.querySelector('.e-rule-operator'));\n var ruleId = closest(tempElem, '.e-rule-container').id;\n var subFieldElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_subfilterkey' + this.subFilterCounter } });\n tempElem.appendChild(subFieldElem);\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var ddlField;\n ddlField = {\n dataSource: this.selectedColumn.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.selectedColumn.columns.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: 0,\n open: this.popupOpen.bind(this, false)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleId + '_subfilterkey' + this.subFilterCounter);\n if (this.isImportRules || (this.previousColumn && this.previousColumn.ruleTemplate &&\n this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {\n var subField = this.selectedColumn.columns;\n for (var i = 0; i < subField.length; i++) {\n if (rule.field === subField[i].field || rule.field.indexOf(subField[i].field + this.separator) > -1) {\n dropDownList.value = subField[i].field;\n this.selectedColumn = subField[i];\n subFieldValue = true;\n break;\n }\n }\n }\n this.subFilterCounter++;\n this.subFieldElem = subFieldElem;\n // eslint-disable-next-line\n ddlArgs.itemData = ddlArgs.itemData;\n if (!subFieldValue && this.selectedColumn.columns) {\n if (!subFieldValue && this.isImportRules) {\n dropDownList.value = null;\n }\n this.selectedColumn = this.selectedColumn.columns[0];\n }\n this.previousColumn = this.selectedColumn;\n if (!this.selectedColumn.columns) {\n this.changeRuleValues(tempElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.operatorChangeSuccess = function (eventsArgs, filterElem, tempRule, rule, ddlArgs) {\n if (!eventsArgs.cancel) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var valElem = operatorElem.nextElementSibling;\n var dropDownObj = getComponent(ddlArgs.element, 'dropdownlist');\n var prevOper = rule.operator ? rule.operator.toString().toLowerCase() : '';\n tempRule.operator = dropDownObj.value.toString();\n var currOper = tempRule.operator.toLowerCase();\n if (tempRule.operator.toLowerCase().indexOf('between') > -1 || (tempRule.operator.toLowerCase().indexOf('in') > -1\n && tempRule.operator.toLowerCase().indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n if (tempRule.operator.toLowerCase().indexOf('in') < 0 || prevOper.indexOf('in') < 0) {\n rule.value = [];\n }\n }\n else if (typeof rule.value === 'object' && rule.value !== null) {\n rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';\n }\n if (ddlArgs.previousItemData) {\n var prevValue = ddlArgs.previousItemData.value.toString().toLowerCase();\n if ((prevValue.indexOf('between') > -1 || (prevValue.indexOf('in') > -1 || (prevValue.indexOf('null') > -1)\n || (prevValue.indexOf('empty') > -1)) && prevValue.indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n }\n }\n if ((prevOper.indexOf('in') > -1 && prevOper.indexOf('in') < 5) && (currOper.indexOf('in') > -1\n && currOper.indexOf('in') < 5)) {\n filterElem = null;\n }\n if (tempRule.operator.indexOf('null') > -1 || (tempRule.operator.indexOf('empty') > -1)) {\n var parentElem = operatorElem.parentElement.querySelector('.e-rule-value');\n var tooltipElem = parentElem.querySelector('.e-tooltip.e-input-group');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n else if (prevOper.indexOf('in') > -1) {\n tooltipElem = parentElem.querySelector('.e-tooltip');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n }\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n if (valElem && this.getColumn(rule.field).template) {\n filterElem = operatorElem.previousElementSibling;\n }\n if (valElem.children.length === 0) {\n filterElem = operatorElem.previousElementSibling;\n }\n this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.changeRuleValues = function (filterElem, rule, tempRule, ddlArgs) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var isSub;\n var ddlObj;\n var operatorList;\n var oprElem;\n if (filterElem) {\n operatorElem = filterElem.nextElementSibling;\n if (filterElem.classList.contains('e-rule-sub-filter')) {\n tempRule.type = this.selectedColumn.type;\n isSub = operatorElem.classList.contains('e-rule-sub-filter');\n operatorElem = isSub ? operatorElem.nextElementSibling : operatorElem;\n }\n addClass([operatorElem], 'e-operator');\n if (operatorElem.childElementCount) {\n ddlObj = getComponent(operatorElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n tempRule.operator = ddlObj.value;\n var fieldObj = void 0;\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdowntree'), 'dropdowntree');\n }\n else {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n }\n tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :\n this.getColumn(fieldObj.value).type;\n var itemData = ddlArgs.itemData;\n if (ddlObj.value !== '') {\n this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);\n }\n }\n else {\n var ruleId = closest(operatorElem, '.e-rule-container').id;\n oprElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_operatorkey' } });\n operatorElem.appendChild(oprElem);\n if (this.selectedColumn.operators) {\n operatorList = this.selectedColumn.operators;\n }\n else if (ddlArgs.itemData) {\n operatorList = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var operator_2;\n if (rule.operator) {\n operatorList.forEach(function (obj) {\n if ('value' in obj && typeof obj.value === 'string' && obj.value.toLowerCase() === rule.operator.toLowerCase()) {\n operator_2 = obj.value;\n }\n });\n }\n var value = operator_2 ? operator_2 : operatorList[0].value;\n var ddlIdx = 0;\n if (!this.autoSelectOperator) {\n value = '';\n ddlIdx = -1;\n }\n if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {\n value = rule ? (rule.operator ? rule.operator : value) : value;\n }\n var ddlOperator = void 0;\n ddlOperator = {\n dataSource: operatorList,\n fields: { text: 'key', value: 'value' },\n placeholder: this.l10n.getConstant('SelectOperator'),\n popupHeight: ((operatorList.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: ddlIdx,\n value: value,\n open: this.popupOpen.bind(this, false)\n };\n if (this.operatorModel) {\n ddlOperator = __assign({}, ddlOperator, this.operatorModel);\n }\n var dropDownList = new DropDownList(ddlOperator);\n dropDownList.appendTo('#' + ruleId + '_operatorkey');\n tempRule.operator = (rule && rule.operator !== '' && !isNullOrUndefined(rule.operator)) ? rule.operator : operatorList[0].value;\n if (this.isImportRules) {\n tempRule.type = this.selectedColumn.type;\n tempRule.operator = rule.operator;\n }\n if (!isNullOrUndefined(value) && value !== '') {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n else if (this.autoSelectField && this.autoSelectOperator) {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n }\n }\n if (!this.isImportRules) {\n this.updateRules(ddlArgs.element, ddlArgs.item);\n }\n };\n QueryBuilder.prototype.popupOpen = function (isField, args) {\n if (this.enableRtl) {\n addClass([args.popup.element], 'e-rtl');\n }\n if (isField) {\n this.isFieldClose = false;\n }\n };\n QueryBuilder.prototype.destroyControls = function (target, isRuleTemplate) {\n var element = isRuleTemplate ? target : target.nextElementSibling;\n var inputElement = element.querySelectorAll('input.e-control');\n var divElement = element.querySelectorAll('div.e-control:not(.e-handle)');\n var columns = this.columns;\n for (var i = 0, len = inputElement.length; i < len; i++) {\n if (inputElement[i].classList.contains('e-textbox')) {\n getComponent(inputElement[i], 'textbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-dropdownlist')) {\n if (this.allowValidation && inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i].parentElement, 'tooltip').destroy();\n }\n getComponent(inputElement[i], 'dropdownlist').destroy();\n }\n else if (inputElement[i].classList.contains('e-radio')) {\n getComponent(inputElement[i], 'radio').destroy();\n }\n else if (inputElement[i].classList.contains('e-numerictextbox')) {\n getComponent(inputElement[i], 'numerictextbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-datepicker')) {\n getComponent(inputElement[i], 'datepicker').destroy();\n }\n else if (inputElement[i].classList.contains('e-multiselect')) {\n getComponent(inputElement[i], 'multiselect').destroy();\n }\n else if (inputElement[i].className.indexOf('e-template') > -1) {\n var clsName = inputElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], inputElement[i].id);\n break;\n }\n }\n }\n if (document.getElementById(inputElement[i].id)) {\n detach(inputElement[i]);\n }\n }\n for (var i = 0, len = divElement.length; i < len; i++) {\n if (divElement[i].className.indexOf('e-template') > -1) {\n var clsName = divElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], divElement[i].id);\n break;\n }\n }\n }\n detach(divElement[i]);\n }\n var templateElement = element.querySelectorAll('.e-template:not(.e-control)');\n for (var i = 0, len = templateElement.length; i < len; i++) {\n detach(templateElement[i]);\n }\n };\n QueryBuilder.prototype.templateDestroy = function (column, elemId) {\n var template;\n if (typeof column.template !== 'string' || column.template.destroy === undefined) {\n template = column.template;\n }\n else {\n return;\n }\n var temp = template.destroy;\n if (template.destroy) {\n var templateElements = void 0;\n if (document.getElementById(elemId)) {\n templateElements = closest(document.getElementById(elemId), '.e-rule-field').querySelectorAll('.e-template');\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp({ field: column.field, elementId: elemId, elements: templateElements });\n }\n else {\n template.destroy({ field: column.field, elementId: elemId, elements: templateElements });\n }\n }\n };\n /**\n * Return values bound to the column.\n *\n * @param {string} field - 'field' to be passed to get the field values.\n * @returns {object[]} - Values bound to the column\n */\n QueryBuilder.prototype.getValues = function (field) {\n var original = {};\n var result = [];\n var value;\n var fieldColl = [];\n if (this.separator.length > 0) {\n fieldColl = field.split(this.separator);\n }\n var dataSource = this.dataColl;\n if (this.dataColl[1]) {\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n var data = {};\n if (fieldColl.length > 1) {\n var dataObj = dataSource[i];\n var fieldStr = void 0;\n for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {\n fieldStr = fieldColl[j];\n if (fieldColl.length === (j + 1)) {\n value = dataObj[\"\" + fieldStr];\n if (Number(dataObj[\"\" + fieldStr]) === dataObj[\"\" + fieldStr] && dataObj[\"\" + fieldStr] % 1 !== 0) {\n value = dataObj[\"\" + fieldStr].toString();\n }\n }\n else {\n dataObj = dataObj[\"\" + fieldStr];\n }\n }\n }\n else {\n value = dataSource[i][\"\" + field];\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n }\n if (!(value in original)) {\n original[\"\" + value] = 1;\n if (fieldColl.length > 1) {\n this.createNestedObject(data, fieldColl, value);\n }\n else {\n data[\"\" + field] = value;\n }\n result.push(data);\n }\n }\n }\n return result;\n };\n QueryBuilder.prototype.createNestedObject = function (obj, fieldColl, value) {\n var key;\n var lastIndex = fieldColl.length - 1;\n for (var k = 0; k < lastIndex; ++k) {\n key = fieldColl[k];\n if (!(key in obj)) {\n obj[\"\" + key] = {};\n }\n obj = obj[\"\" + key];\n }\n obj[fieldColl[lastIndex]] = value;\n };\n QueryBuilder.prototype.getDistinctValues = function (dataSource, field) {\n var original = {};\n var result = [];\n var nest = [];\n var value = '';\n var isNested = field.indexOf(this.separator);\n var _loop_2 = function (i, iLen) {\n value = '';\n if (isNested === 0) {\n value = dataSource[i][\"\" + field];\n }\n else {\n nest = field.split(this_2.separator);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n nest.forEach(function (element) {\n if (value) {\n value = value[\"\" + element];\n }\n else {\n value = dataSource[i][\"\" + element];\n }\n });\n }\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n var data = {};\n if (!(value in original) && value) {\n original[\"\" + value] = 1;\n if (isNested === 0) {\n data[\"\" + field] = value;\n }\n else {\n data[nest[nest.length - 1]] = value;\n }\n result.push(data);\n }\n };\n var this_2 = this;\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n _loop_2(i, iLen);\n }\n return result;\n };\n QueryBuilder.prototype.renderMultiSelect = function (rule, parentId, i, selectedValue, values) {\n var isFetched = false;\n var ds;\n var isValues = false;\n this.isGetNestedData = false;\n if (this.dataColl[0]) {\n if (Object.keys(this.dataColl[0]).indexOf(rule.field) > -1) {\n isFetched = true;\n ds = this.getDistinctValues(this.dataColl, rule.field);\n }\n }\n isFetched = rule.columns ? false : isFetched;\n if (!this.dataColl.length && values.length) {\n isValues = true;\n }\n var multiSelectValue;\n var multiSelectUserQuery = (this.valueModel && this.valueModel.multiSelectModel && this.valueModel.multiSelectModel.query)\n ? this.valueModel.multiSelectModel.query\n : null;\n var multiSelectQuery = (multiSelectUserQuery && typeof multiSelectUserQuery.clone === 'function')\n ? multiSelectUserQuery.clone()\n : new Query();\n var selectedField = rule.field;\n if (selectedField) {\n multiSelectQuery.select([selectedField]);\n }\n var resolvedQuery = new Query([rule.field]);\n if (!isValues && !isFetched && (this.dataManager instanceof DataManager || this.dataSource instanceof DataManager)) {\n resolvedQuery = multiSelectQuery;\n }\n multiSelectValue = {\n dataSource: isValues ? values : (isFetched ? ds : this.dataManager),\n query: resolvedQuery,\n fields: { text: this.selectedRule.field, value: this.selectedRule.field },\n placeholder: this.l10n.getConstant('SelectValue'),\n value: selectedValue,\n mode: 'CheckBox',\n width: '100%',\n change: this.changeValue.bind(this, i),\n close: this.closePopup.bind(this, i),\n actionBegin: this.multiSelectOpen.bind(this, parentId + '_valuekey' + i),\n open: this.popupOpen.bind(this, false)\n };\n if (this.valueModel && this.valueModel.multiSelectModel) {\n multiSelectValue = __assign({}, multiSelectValue, this.valueModel.multiSelectModel);\n }\n var multiSelectObj = new MultiSelect(multiSelectValue);\n multiSelectObj.appendTo('#' + parentId + '_valuekey' + i);\n this.updateRules(multiSelectObj.element, selectedValue, 0);\n };\n QueryBuilder.prototype.multiSelectOpen = function (parentId, args) {\n if (this.dataSource instanceof DataManager) {\n var element = document.getElementById(parentId);\n var dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), this.fieldMode === 'DropdownTree' ? 'dropdowntree' : 'dropdownlist');\n if (this.fieldMode === 'DropdownTree') {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n else {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n var value = this.selectedColumn.field;\n var isFetched = false;\n if (this.dataColl[0]) {\n if (Object.keys(this.dataColl[0]).indexOf(value) > -1) {\n isFetched = true;\n }\n var isNest = value.indexOf(this.separator);\n if (isNest !== 0 && this.isGetNestedData) {\n isFetched = true;\n }\n }\n if (!isFetched) {\n args.cancel = true;\n this.bindMultiSelectData(element, value);\n }\n var multiselectObj = getComponent(element, 'multiselect');\n if (!multiselectObj) {\n return;\n }\n var incomingQuery = (args.query) ? args.query : null;\n var existingQuery = multiselectObj.query ? multiselectObj.query : null;\n if (!this.areQueriesSame(existingQuery, incomingQuery)) {\n multiselectObj.query = null;\n args.query = null;\n }\n }\n };\n QueryBuilder.prototype.areQueriesSame = function (query1, query2) {\n if ((query1 === null || query1 === undefined) && (query2 === null || query2 === undefined)) {\n return true;\n }\n if ((query1 === null || query1 === undefined) || (query2 === null || query2 === undefined)) {\n return false;\n }\n return JSON.stringify(query1) === JSON.stringify(query2);\n };\n QueryBuilder.prototype.bindMultiSelectData = function (element, value) {\n this.getMultiSelectData(element, value);\n };\n QueryBuilder.prototype.getMultiSelectData = function (element, value) {\n var _this = this;\n var dummyData;\n var deferred = new Deferred();\n var multiselectObj = getComponent(element, 'multiselect');\n var userQuery = multiselectObj.query ? multiselectObj.query : null;\n var dataQuery = (userQuery && typeof userQuery.clone === 'function')\n ? userQuery.clone()\n : new Query();\n dataQuery.select([value]);\n if (!this.isRequestSent) {\n var data = this.dataManager.executeQuery(dataQuery);\n this.isRequestSent = true;\n multiselectObj.hideSpinner();\n this.createSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n showSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n data.then(function (e) {\n _this.isRequestSent = false;\n if (e.actual && e.actual.result) {\n dummyData = e.actual.result;\n }\n else {\n dummyData = e.result;\n }\n _this.dataColl = extend(_this.dataColl, dummyData, [], true);\n var newData = _this.getDistinctValues(_this.dataColl, value);\n var current = multiselectObj.dataSource;\n if ((current.length !== newData.length &&\n (JSON.stringify(current) !== JSON.stringify(newData)))) {\n multiselectObj.dataSource = newData;\n }\n _this.isGetNestedData = true;\n hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n }).catch(function (e) {\n _this.isRequestSent = false;\n deferred.reject(e);\n });\n }\n };\n QueryBuilder.prototype.createSpinner = function (element) {\n var spinnerElem = this.createElement('span', { attrs: { class: 'e-qb-spinner' } });\n element.appendChild(spinnerElem);\n createSpinner({ target: spinnerElem, width: Browser.isDevice ? '16px' : '14px' });\n };\n QueryBuilder.prototype.closePopup = function (i, args) {\n var element = document.getElementById(args.popup.element.id.replace('_popup', ''));\n if (element) {\n var ms = getComponent(element, 'multiselect');\n if (ms) {\n var value = ms.value;\n this.updateRules(element, value, i);\n }\n }\n };\n QueryBuilder.prototype.processTemplate = function (target, itemData, rule, tempRule) {\n var container = closest(target, '.e-rule-container');\n var tempElements = container.querySelectorAll('.e-template');\n var filterElem = container.querySelector('.e-rule-filter .e-filter-input');\n var ddlObj = this.fieldMode === 'DropdownTree' ? getComponent(filterElem, 'dropdowntree')\n : getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);\n if (target && target.nextElementSibling) {\n target.nextElementSibling.style.position = 'relative';\n target.nextElementSibling.classList.add('e-querybuilder-spinner');\n }\n var onComplete = function () {\n if (target && target.nextElementSibling && target.nextElementSibling.classList.contains('e-querybuilder-spinner')) {\n target.nextElementSibling.classList.remove('e-querybuilder-spinner');\n }\n };\n if (typeof itemData.template === 'string' || itemData.template.write === undefined) {\n var args = {\n rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,\n requestType: 'value-template-create'\n };\n this.trigger('actionBegin', args);\n onComplete();\n }\n else {\n var template = itemData.template;\n var templateArgs = {\n elements: tempElements.length > 1 ? tempElements : tempElements[0],\n values: rule.value,\n operator: tempRule.operator,\n field: column.field,\n dataSource: column.values,\n onComplete: onComplete\n };\n var writeResult = void 0;\n if (typeof template.write === 'string') {\n writeResult = getValue(template.write, window)(templateArgs);\n }\n else if (typeof itemData.template !== 'function') {\n writeResult = itemData.template.write(templateArgs);\n }\n if (writeResult && typeof writeResult.then === 'function') {\n writeResult.then(function () { return onComplete(); });\n }\n else {\n setTimeout(function () { return onComplete(); }, 100);\n }\n }\n };\n QueryBuilder.prototype.getItemData = function (parentId) {\n var fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');\n var parentFieldObj = this.element.querySelector(\"#\" + parentId);\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');\n }\n else if (parentFieldObj) {\n var subFieldObjList = parentFieldObj.querySelectorAll('.e-rule-sub-filter');\n if (subFieldObjList.length > 0) {\n var lastSubFieldObj = subFieldObjList[subFieldObjList.length - 1].querySelector('.e-dropdownlist');\n fieldObj = getComponent(lastSubFieldObj, 'dropdownlist');\n }\n }\n return this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);\n };\n QueryBuilder.prototype.setDefaultValue = function (parentId, isArryValue, isNumber) {\n var itemData = this.getItemData(parentId);\n if (isNullOrUndefined(itemData.value)) {\n return isNumber ? isArryValue ? [0, 0] : 0 : isArryValue ? [] : '';\n }\n if (isArryValue) {\n if (!(itemData.value instanceof Array)) {\n return [itemData.value];\n }\n }\n else {\n if (itemData.value instanceof Array) {\n return itemData.value[0];\n }\n }\n return itemData.value;\n };\n QueryBuilder.prototype.renderStringValue = function (parentId, rule, operator, idx, ruleValElem) {\n var selectedVal;\n var columnData = this.getItemData(parentId);\n var selectedValue;\n var isTemplate = (typeof columnData.template === 'string');\n if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {\n selectedValue = rule.value;\n }\n else {\n selectedValue = this.setDefaultValue(parentId, false, false);\n }\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.width = null;\n ruleValElem.style.minWidth = '200px';\n }\n }\n else {\n if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n selectedValue = selectedVal.join(',');\n }\n if (operator === 'between' || operator === 'notbetween') {\n if (selectedValue.length > 1) {\n selectedValue = selectedValue[idx];\n }\n }\n var txtBox = void 0;\n txtBox = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtBox = __assign({}, txtBox, this.valueModel.textBoxModel);\n }\n var inputobj = new TextBox(txtBox);\n inputobj.appendTo('#' + parentId + '_valuekey' + idx);\n inputobj.value = selectedValue;\n inputobj.dataBind();\n }\n };\n QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {\n var columnData = this.getItemData(parentId);\n var isTemplate = (typeof columnData.template === 'string');\n var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||\n typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.minWidth = '200px';\n ruleValElem.style.width = null;\n }\n }\n else if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n var selVal = selectedVal.join(',');\n var txtInp = void 0;\n txtInp = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtInp = __assign({}, txtInp, this.valueModel.textBoxModel);\n }\n var input = new TextBox(txtInp);\n input.appendTo('#' + parentId + '_valuekey' + idx);\n input.value = selVal;\n input.dataBind();\n }\n else {\n itemData = columnData;\n var min = (itemData.validation && itemData.validation.min) ? itemData.validation.min : 0;\n var max = (itemData.validation && itemData.validation.max) ? itemData.validation.max : Number.MAX_VALUE;\n var format = itemData.format ? itemData.format : 'n';\n if (length > 1 && rule) {\n selectedVal = rule.value[idx] ? rule.value[idx] : this.setDefaultValue(parentId, true, true);\n }\n var numericTxt = void 0;\n numericTxt = {\n value: (selectedVal instanceof Array) ? selectedVal[idx] : selectedVal,\n format: format, min: min, max: max, width: '100%',\n step: itemData.step ? itemData.step : 1,\n change: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.numericTextBoxModel) {\n numericTxt = __assign({}, numericTxt, this.valueModel.numericTextBoxModel);\n }\n var numeric = new NumericTextBox(numericTxt);\n numeric.appendTo('#' + parentId + '_valuekey' + idx);\n numeric.element.setAttribute('aria-label', itemData.label + ' ' + 'Value');\n numeric.element.oninput = this.changeValue.bind(this, idx);\n }\n };\n QueryBuilder.prototype.processValueString = function (value, type) {\n var numArr = [];\n var strArr = value.split(',');\n if (type === 'string') {\n return strArr;\n }\n else {\n for (var k = 0, kLen = strArr.length; k < kLen; k++) {\n numArr.push(Number(strArr[k]));\n }\n return numArr;\n }\n };\n QueryBuilder.prototype.parseDate = function (value, format) {\n var formatOpt;\n var selectedValue;\n if (format) {\n var dParser = this.intl.getDateParser({ skeleton: 'full', type: 'dateTime' });\n formatOpt = this.getFormat(format);\n selectedValue = dParser(value);\n if (isNullOrUndefined(selectedValue)) {\n selectedValue = this.intl.parseDate(value, formatOpt);\n }\n }\n else {\n selectedValue = new Date(value);\n }\n return selectedValue;\n };\n QueryBuilder.prototype.renderControls = function (target, itemData, rule, tempRule, isRendered) {\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-value');\n removeClass([target.parentElement.querySelector('.e-rule-value')], 'e-hide');\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-show');\n if (itemData.template && (itemData.template.create || isRendered)) {\n this.processTemplate(target, itemData, rule, tempRule);\n }\n else {\n var length_1;\n if (tempRule.type === 'boolean') {\n length_1 = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n length_1 = tempRule.operator && tempRule.operator.toString().toLowerCase().indexOf('between') > -1 ? 2 : 1;\n }\n var parentId = closest(target, '.e-rule-container').id;\n var ruleValElem = void 0;\n var operator = tempRule.operator.toString();\n if (target.className.indexOf('e-rule-operator') > -1 || target.className.indexOf('e-rule-filter') > -1) {\n ruleValElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n if (operator !== 'in' && operator !== 'notin') {\n addClass([ruleValElem], 'e-custom-value');\n }\n else {\n removeClass([ruleValElem], 'e-custom-value');\n }\n }\n for (var i = 0; i < length_1; i++) {\n switch (tempRule.type) {\n case 'string':\n {\n this.renderStringValue(parentId, rule, operator, i, ruleValElem);\n }\n break;\n case 'number':\n {\n this.renderNumberValue(parentId, rule, operator, i, ruleValElem, itemData, length_1);\n }\n break;\n case 'boolean':\n this.processBoolValues(itemData, rule, parentId, i);\n break;\n case 'date':\n {\n var selectedValue = new Date();\n var selVal = void 0;\n var column = void 0;\n var format = itemData.format;\n var datepick = void 0;\n var datePicker = void 0;\n var place = this.l10n.getConstant('SelectValue');\n var isTemplate = (typeof itemData.template === 'string');\n if (rule.value && !isNullOrUndefined(format)) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, format) || new Date();\n }\n if (!isNullOrUndefined(itemData) && itemData.value && !isTemplate) {\n var parsedDate = this.parseDate(itemData.value.toString(), itemData.format);\n if (parsedDate && !isNaN(parsedDate.getTime())) {\n selectedValue = parsedDate;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!itemData.field && !itemData.key && itemData.value) {\n if (itemData.value instanceof Date) {\n selectedValue = itemData.value;\n }\n else {\n selectedValue = this.parseDate(itemData.value, itemData.format);\n }\n }\n if (!itemData.format && rule && rule.field !== '') {\n column = this.getColumn(rule.field);\n format = column.format;\n }\n if ((this.isImportRules || this.isPublic || isTemplate) && rule) {\n column = this.getColumn(rule.field);\n format = column.format;\n if (rule.value) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, column.format);\n }\n else {\n selectedValue = rule.value;\n }\n }\n if (format) {\n var formatObj = this.getFormat(format);\n if (formatObj.skeleton) {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, format: formatObj, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n else {\n datePicker = {\n value: selectedValue, locale: this.getLocale(), placeholder: place,\n format: formatObj.format, change: this.changeValue.bind(this, i)\n };\n if (!isNullOrUndefined(column) && !isNullOrUndefined(column.values) && column.values.length > 0) {\n var parsedDate = this.parseDate(column.values[i], format);\n if (!isNullOrUndefined(parsedDate) && parsedDate instanceof Date) {\n datePicker.value = parsedDate;\n if (i === 1) {\n var parsedMinDate = this.parseDate(column.values[0], format);\n if (parsedMinDate instanceof Date && !isNaN(parsedMinDate.getTime())) {\n parsedMinDate.setDate(parsedMinDate.getDate() + 1);\n datePicker.min = parsedMinDate;\n }\n }\n }\n }\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n }\n else {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n datepick.appendTo('#' + parentId + '_valuekey' + i);\n if (!rule.value) {\n var elem = document.getElementById(parentId + '_valuekey' + i);\n this.updateRules(elem, selectedValue, null, this.isNotValueChange);\n this.isNotValueChange = false;\n }\n }\n break;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.processBoolValues = function (itemData, rule, parentId, i) {\n var isCheck = false;\n var value;\n var orgValue;\n if (isNullOrUndefined(rule.type) && itemData) {\n rule.type = itemData.type;\n }\n var label;\n if (itemData.values) {\n var values = itemData.values;\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n isCheck = true;\n }\n orgValue = value = label = values[i];\n }\n else {\n var values = [true, false];\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toString().toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toString().toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n if (typeof rule.value === 'boolean') {\n isCheck = rule.value ? true : false;\n }\n else {\n isCheck = true;\n }\n }\n if (typeof rule.value === 'boolean' && i === 1) {\n isCheck = !rule.value ? true : false;\n }\n value = values[i].toString();\n orgValue = values[i];\n label = this.l10n.getConstant(['True', 'False'][i]);\n }\n var radioBtn;\n radioBtn = {\n label: label, name: parentId + 'default', checked: isCheck, value: value,\n change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.radioButtonModel) {\n radioBtn = __assign({}, radioBtn, this.valueModel.radioButtonModel);\n }\n var radiobutton = new RadioButton(radioBtn);\n radiobutton.appendTo('#' + parentId + '_valuekey' + i);\n if (isCheck) {\n this.updateRules(radiobutton.element, orgValue, 0, true);\n }\n };\n QueryBuilder.prototype.getOperatorIndex = function (ddlObj, rule) {\n var i;\n var dataSource = ddlObj.dataSource;\n var len = dataSource.length;\n for (i = 0; i < len; i++) {\n if (rule.operator === ddlObj.dataSource[i].value) {\n return i;\n }\n }\n return 0;\n };\n QueryBuilder.prototype.getPreviousItemData = function (prevItemData, column) {\n if (this.isFieldClose && prevItemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prevItemData = this.getColumn(prevItemData.value ? prevItemData.value : prevItemData.field);\n }\n if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {\n prevItemData.template = column.template;\n }\n return prevItemData;\n };\n QueryBuilder.prototype.renderValues = function (target, itemData, prevItemData, isRender, rule, tempRule, element) {\n var subFldElem = target.previousElementSibling;\n var filtElem = subFldElem.getElementsByTagName('input')[0];\n var filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')\n : getComponent(filtElem, 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(filtObj.value);\n this.selectedRule = column;\n var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');\n if (isRender) {\n itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;\n if (itemData.operators) {\n ddlObj.value = null;\n ddlObj.dataBind();\n ddlObj.dataSource = itemData.operators;\n ddlObj.index = this.getOperatorIndex(ddlObj, rule);\n ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;\n if (!this.autoSelectOperator) {\n ddlObj.index = -1;\n tempRule.operator = ddlObj.value = '';\n }\n else {\n ddlObj.dataBind();\n }\n }\n }\n var operator = tempRule.operator.toString();\n var isTempRendered = false;\n if (!(operator.indexOf('null') > -1 || operator.indexOf('isempty') > -1 || operator.indexOf('isnotempty') > -1)) {\n var parentId = closest(target, '.e-rule-container').id;\n prevItemData = this.getPreviousItemData(prevItemData, column);\n if (prevItemData && prevItemData.template === undefined) {\n if (prevItemData.columns) {\n prevItemData = this.getColumn(rule.field);\n }\n }\n else if (this.fieldMode === 'DropdownTree' && prevItemData === undefined) {\n prevItemData = this.getColumn(rule.field);\n }\n if (prevItemData && prevItemData.template) {\n this.templateDestroy(prevItemData, parentId + '_valuekey0');\n var elem = select('#' + parentId + '_valuekey0', target.nextElementSibling);\n if (elem && !elem.classList.contains('e-control')) {\n detach(select('#' + parentId + '_valuekey0', target.nextElementSibling));\n }\n if (typeof prevItemData.template === 'string' || prevItemData.template.create === undefined) {\n if (target.nextElementSibling.classList.contains('e-template-value')) {\n this.clearQBTemplate([parentId]);\n }\n target.nextElementSibling.innerHTML = '';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(prevItemData.key) && this.fieldMode === 'DropdownTree') {\n delete prevItemData.template;\n }\n }\n if (isRender) {\n this.validateValue(rule, closest(target, '.e-rule-container'));\n this.destroyControls(target);\n }\n if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {\n if (column) {\n itemData.template = column.template;\n }\n if (itemData.template) {\n addClass([target.nextElementSibling], 'e-template-value');\n itemData.template = column.template;\n isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||\n operator, target, rule);\n }\n if (isTempRendered) {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n parentElem.style.width = '100%';\n }\n else {\n parentElem.style.width = '200px';\n }\n }\n else {\n removeClass([target.nextElementSibling], 'e-template-value');\n var inputLen = 1;\n if (tempRule.type === 'boolean') {\n inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;\n }\n for (var i = 0; i < inputLen; i++) {\n var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });\n target.nextElementSibling.appendChild(valElem);\n }\n }\n this.renderControls(target, itemData, rule, tempRule, isTempRendered);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(itemData.key) && itemData.template && this.fieldMode === 'DropdownTree') {\n delete itemData.template;\n }\n }\n }\n else {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (parentElem) {\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n }\n };\n QueryBuilder.prototype.setColumnTemplate = function (itemData, ruleID, field, operator, target, rule) {\n var _this = this;\n var args;\n var isRendered = true;\n if (!itemData.template) {\n return true;\n }\n else {\n if (typeof itemData.template === 'string' || itemData.template.create === undefined) {\n args = {\n requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,\n renderTemplate: true\n };\n this.trigger('actionBegin', args, function (observedActionArgs) {\n isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);\n });\n return isRendered;\n }\n else {\n var valElem = void 0;\n var template = itemData.template;\n if (typeof template.create === 'string') {\n valElem = getValue(template.create, window)({ field: field, operator: operator });\n }\n else {\n valElem = template.create({ field: field, operator: operator });\n }\n if (valElem instanceof Element) {\n valElem.id = ruleID + '_valuekey0';\n addClass([valElem], 'e-template');\n target.nextElementSibling.appendChild(valElem);\n if (field.indexOf(' ') < 0) {\n addClass([valElem], 'e-' + field);\n }\n }\n else if (valElem instanceof Array) {\n addClass(valElem, 'e-template');\n for (var i = 0, iLen = valElem.length; i < iLen; i++) {\n valElem[i].id = ruleID + '_valuekey' + i;\n target.nextElementSibling.appendChild(valElem[i]);\n }\n }\n addClass([target.nextElementSibling], 'e-template-value');\n return true;\n }\n }\n };\n QueryBuilder.prototype.actionBeginSuccessCallBack = function (args, itemData, ruleID, field, target) {\n if (args.renderTemplate) {\n var valElem = void 0;\n this.columnTemplateFn = this.templateParser(typeof itemData.template === 'function' ? itemData.template : itemData.template);\n var templateID = this.element.id + field;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n valElem = this.columnTemplateFn(args, this, ruleID, templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isAngular) {\n var valElemColl = this.columnTemplateFn(args, this, ruleID, templateID);\n valElem = (valElemColl[0].nodeType === 3) ? valElemColl[1] : valElemColl[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isVue3) {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(valElem, target.nextElementSibling);\n }\n else {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n }\n addClass([target.nextElementSibling], 'e-template-value');\n this.renderReactTemplates();\n return true;\n }\n else {\n return false;\n }\n };\n QueryBuilder.prototype.updateValues = function (element, rule) {\n var idx = 1;\n if (element.className.indexOf('e-template') > -1) {\n idx = 3;\n }\n var controlName = element.className.split(' e-')[idx];\n var i = parseInt(element.id.slice(-1), 2);\n var column;\n var format;\n var selectedDate;\n var value;\n var radioBtnObj;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textboxValue;\n switch (controlName) {\n case 'checkbox':\n value = getComponent(element, controlName).value;\n rule.value = (value !== '') ? value : undefined;\n break;\n case 'textbox':\n textboxValue = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = textboxValue;\n }\n else if (['in', 'notin'].some(function (op) { return rule.operator.indexOf(op) !== -1; })\n && rule.operator.indexOf('contains') === -1) {\n rule.value = textboxValue ?\n (rule.type === 'string' ? textboxValue.split(',').map(function (val) { return val.trim(); }) :\n textboxValue.split(',').map(Number)) : [];\n }\n else {\n rule.value = textboxValue;\n }\n break;\n case 'dropdownlist':\n rule.value = getComponent(element, controlName).value;\n break;\n case 'radio':\n radioBtnObj = getComponent(element, controlName);\n if (radioBtnObj.checked) {\n if (typeof rule.value === 'boolean') {\n rule.value = radioBtnObj.value === 'true';\n }\n else {\n if (this.getColumn(rule.field).values) {\n rule.value = radioBtnObj.value;\n }\n else {\n rule.value = radioBtnObj.value === 'true';\n }\n }\n }\n radioBtnObj.refresh();\n break;\n case 'numerictextbox':\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = getComponent(element, controlName).value;\n }\n else {\n rule.value = getComponent(element, controlName).value;\n }\n break;\n case 'datepicker':\n column = this.getColumn(rule.field);\n format = this.getFormat(column.format);\n selectedDate = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = this.intl.formatDate(selectedDate, format);\n }\n else if (isNullOrUndefined(format.format) && selectedDate) {\n rule.value = this.intl.formatDate(selectedDate);\n }\n else if (selectedDate) {\n rule.value = this.intl.formatDate(selectedDate, format);\n }\n else {\n rule.value = selectedDate;\n }\n break;\n case 'multiselect':\n rule.value = getComponent(element, controlName).value;\n break;\n }\n };\n QueryBuilder.prototype.updateRules = function (target, selectedValue, i, isNotTrigger) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var index = 0;\n var dropDownObj;\n var eventsArgs;\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';\n ruleElem = closest(target, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (closest(target, '.e-rule-filter') || closest(target, '.e-rule-sub-filter')) {\n if (this.subFieldElem) {\n target = this.subFieldElem;\n }\n dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :\n getComponent(target, 'dropdownlist');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(dropDownObj.value);\n if (!this.isImportRules && rule.rules[index].field &&\n rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {\n if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)\n || (operator.indexOf('empty') > -1)) {\n rule.rules[index].value = '';\n }\n }\n this.selectedColumn = this.getColumn(this.selectedColumn.field);\n rule.rules[index].field = this.selectedColumn.field;\n rule.rules[index].type = this.selectedColumn.type;\n rule.rules[index].label = this.selectedColumn.label;\n var ruleElement = closest(target, '.e-rule-filter');\n ruleElement = ruleElement ? ruleElement : closest(target, '.e-rule-sub-filter');\n var element = ruleElement.nextElementSibling.querySelector('input.e-control');\n element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');\n operator = getComponent(element, 'dropdownlist').value.toString();\n rule.rules[index].operator = operator;\n var valueContainer = ruleElement.nextElementSibling.nextElementSibling;\n var elementCln = valueContainer.querySelectorAll('input.e-control');\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('div.e-control');\n }\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('.e-template');\n }\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: rule.rules[index].field, type: 'field' };\n for (var i_1 = 0; i_1 < elementCln.length; i_1++) {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n this.updateValues(elementCln[i_1], rule.rules[index]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', eventsArgs);\n }\n if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'field');\n }\n else if (closest(target, '.e-rule-operator')) {\n dropDownObj = getComponent(target, 'dropdownlist');\n rule.rules[index].operator = dropDownObj.value.toString();\n var inputElem = ruleElem.querySelectorAll('.e-rule-value input.e-control');\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: dropDownObj.value, type: 'operator' };\n if (this.allowValidation && rule.rules[index].operator && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n if (inputElem.length > 1 && !(inputElem[0].className.indexOf('e-template') > -1)) {\n rule.rules[index].value = [];\n }\n for (var i_2 = 0; i_2 < inputElem.length; i_2++) {\n if (rule.rules[index].operator.indexOf('null') > -1 || rule.rules[index].operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n else if (inputElem[i_2].classList.contains('e-template')) {\n continue;\n }\n this.updateValues(inputElem[i_2], rule.rules[index]);\n }\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'operator');\n }\n else if (closest(target, '.e-rule-value')) {\n this.ruleValueUpdate(target, selectedValue, rule, index, groupElem, ruleElem, i);\n if (!isNotTrigger) {\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'value');\n }\n }\n };\n QueryBuilder.prototype.filterRules = function (beforeRule, afterRule, type) {\n var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });\n var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });\n if (beforeRuleStr !== afetrRuleStr) {\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });\n }\n }\n };\n QueryBuilder.prototype.ruleValueUpdate = function (target, selectedValue, rule, index, groupElem, ruleElem, i) {\n var eventsArgs;\n var oper;\n var arrOperator = ['in', 'between', 'notin', 'notbetween'];\n if (rule.rules[index].operator) {\n oper = rule.rules[index].operator.toString().toLowerCase();\n }\n if (selectedValue !== null) {\n if (target.className.indexOf('e-multiselect') > -1 && rule.rules[index].type === 'number' &&\n !this.isNotified) {\n var selVal = [];\n var dupSelectedValue = selectedValue;\n for (var k = 0, kLen = dupSelectedValue.length; k < kLen; k++) {\n if (typeof dupSelectedValue[k] === 'string') {\n selVal.push(parseFloat(dupSelectedValue[k]));\n }\n }\n if (selVal.length) {\n selectedValue = selVal;\n }\n }\n if (this.isNotified) {\n rule.rules[index].value = selectedValue;\n eventsArgs = { groupID: groupElem.id, ruleID: ruleElem.id, value: rule.rules[index].value, type: 'value' };\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n }\n else if (target.className.indexOf('e-spin') > -1 || target.className.indexOf('e-numeric') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-radio') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-multiselect') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-textbox') > -1) {\n if (oper === 'in' || oper === 'notin') {\n if (rule.rules[index].type === 'string') {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n else {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n }\n else if (oper === 'between' || oper === 'notbetween') {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-datepicker') > -1) {\n var format = this.getFormat(this.getColumn(this.selectedColumn.field).format);\n if (format.type) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = this.intl.formatDate(selectedValue, format);\n }\n else {\n rule.rules[index].value = this.intl.formatDate(selectedValue, format);\n }\n }\n }\n this.validateValue(rule, ruleElem, index);\n }\n else {\n if (target.className.indexOf('e-datepicker') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n };\n QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {\n if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {\n return;\n }\n if (!isNullOrUndefined(index)) {\n rule = rule.rules[index];\n }\n var isObject = typeof (rule.value) === 'object';\n if (this.allowValidation && (isNullOrUndefined(index) || (isObject ? rule.value.length > 0 : rule.value))) {\n var valElem = ruleElem.querySelectorAll('.e-rule-value .e-control');\n if (valElem.length > 0) {\n if (valElem[0].className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0], 'tooltip').destroy();\n }\n else if (valElem[0].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0].parentElement, 'tooltip').destroy();\n }\n if (valElem[1] && valElem[1].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[1].parentElement, 'tooltip').destroy();\n }\n if (valElem[2] && valElem[2].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[2].parentElement, 'tooltip').destroy();\n }\n }\n }\n };\n QueryBuilder.prototype.getFormat = function (format) {\n var formatOptions;\n if (format) {\n if (typeof (format) === 'string') {\n formatOptions = { type: 'dateTime' };\n if (format === 'short' || format === 'yMd') {\n formatOptions.type = 'date';\n formatOptions.skeleton = format;\n }\n else {\n formatOptions.format = format;\n }\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: format.skeleton };\n }\n }\n else {\n formatOptions = { type: 'date', skeleton: 'yMd' };\n }\n return formatOptions;\n };\n QueryBuilder.prototype.findGroupByIdx = function (groupIdx, rule, isRoot) {\n var ruleColl = rule.rules;\n var dupRuleColl = [];\n if (!isRoot) {\n for (var j = 0, jLen = ruleColl.length; j < jLen; j++) {\n rule = ruleColl[j];\n if (rule.rules) {\n dupRuleColl.push(rule);\n }\n }\n return dupRuleColl[groupIdx];\n }\n return rule;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n QueryBuilder.prototype.destroy = function () {\n this.isDestroy = true;\n var queryElement = this.element;\n if (!queryElement) {\n return;\n }\n var element;\n var i;\n var len;\n var tooltip;\n _super.prototype.destroy.call(this);\n element = this.element.querySelectorAll('.e-addrulegroup');\n len = element.length;\n for (i = 0; i < len; i++) {\n getComponent(element[i], 'dropdown-btn').destroy();\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-filter .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-filter .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n }\n else {\n getComponent(element[i], 'dropdowntree').destroy();\n }\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-operator .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-operator .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n detach(element[i]);\n }\n }\n tooltip = this.element.querySelectorAll('.e-rule-value .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n this.isImportRules = false;\n this.unWireEvents();\n this.levelColl[this.element.id + '_group0'] = [0];\n this.element.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.portals && this.portals.length) {\n this.clearQBTemplate();\n }\n var qbDdlElems = this.element.querySelectorAll('.qb-dropdownlist');\n if (qbDdlElems && qbDdlElems.length > 0) {\n for (i = 0; i < qbDdlElems.length; i++) {\n var ddlElem = qbDdlElems[i];\n if (this.element.contains(ddlElem)) {\n var targetInput = ddlElem.tagName === 'INPUT' ? ddlElem : ddlElem.querySelector('input');\n if (targetInput) {\n var ddlInst = getComponent(targetInput, 'dropdownlist');\n if (ddlInst) {\n if (ddlInst.close) {\n ddlInst.close = null;\n }\n if (ddlInst.open) {\n ddlInst.open = null;\n }\n if (ddlInst.change) {\n ddlInst.change = null;\n }\n ddlInst.destroy();\n }\n }\n }\n }\n }\n // Cleanup orphaned popup elements\n var popupElement = this.element.querySelectorAll('.e-popup.e-dropdownlist');\n if (popupElement && popupElement.length > 0) {\n for (i = 0; i < popupElement.length; i++) {\n popupElement[i].remove();\n }\n }\n classList(this.element, [], ['e-rtl', 'e-responsive', 'e-device']);\n this.isDestroy = false;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds single or multiple rules.\n *\n * @param {RuleModel[]} rule - 'rule collection' to be passed to add the rules.\n * @param {string} groupID - 'group id' to be passed to add the rule in groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addRules = function (rule, groupID) {\n groupID = this.element.id + '_' + groupID;\n this.isPublic = true;\n for (var i = 0, len = rule.length; i < len; i++) {\n this.addRuleElement(document.getElementById(groupID), rule[i]);\n }\n this.isPublic = false;\n };\n /**\n * Adds single or multiple groups, which contains the collection of rules.\n *\n * @param {RuleModel[]} groups - 'group collection' to be passed to add the groups.\n * @param {string} groupID - 'group id' to be passed to add the groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addGroups = function (groups, groupID) {\n if (this.isAddSuccess || this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount) {\n groupID = this.element.id + '_' + groupID;\n var groupElem = document.getElementById(groupID);\n var temp = this.groupIndex;\n var rule = this.getParentGroup(groupElem);\n var grouplen = groups.length;\n if (grouplen) {\n this.isPublic = true;\n for (var i = 0, len = groups.length; i < len; i++) {\n this.updatedRule = {\n isLocked: groups[i].isLocked, condition: groups[i].condition,\n not: groups[i].not\n };\n this.importRules(groups[i], groupElem, false, groups[i].not);\n }\n this.isPublic = false;\n }\n else {\n var condition = 'and';\n var not = false;\n var isLocked = false;\n if (this.updatedRule) {\n condition = this.updatedRule.condition;\n not = this.updatedRule.not;\n isLocked = this.updatedRule.isLocked;\n }\n if (this.groupCloned && this.target instanceof HTMLElement &&\n this.getGroup(this.target).rules.length > 1) {\n var parent_1 = this.element.querySelector('#' + groupID);\n var allContainers = parent_1.querySelectorAll(':scope > .e-group-body > .e-rule-list > [class*=\"-container\"]');\n var topLevelGroups = parent_1.querySelectorAll(':scope > .e-group-body > .e-rule-list > .e-group-container');\n if (topLevelGroups.length > 0 && groupID !== 'querybuilder_group0' && !(this.isAngular && groupID === this.initialID + '_group0')) {\n var lastGroupIndex = -1;\n var lastGroup = topLevelGroups[topLevelGroups.length - 1];\n for (var i = 0; i < allContainers.length; i++) {\n if (allContainers[i] === lastGroup) {\n lastGroupIndex = i;\n break;\n }\n }\n this.groupIndex = lastGroupIndex - 1;\n }\n }\n if (this.groupIndex < 0) {\n if (this.enableNotCondition) {\n rule.rules.push({ 'condition': condition, 'not': not, rules: [] });\n }\n else {\n rule.rules.push({ 'condition': condition, rules: [] });\n }\n }\n else {\n if (this.enableNotCondition) {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });\n }\n else {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });\n }\n }\n if (this.groupCloned) {\n this.groupIndex = temp;\n }\n }\n if (!this.headerTemplate) {\n this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);\n }\n }\n };\n QueryBuilder.prototype.initWrapper = function () {\n this.isInitialLoad = true;\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableSeparateConnector) {\n addClass([this.element], 'e-multi-connector');\n }\n if (this.enableRtl) {\n addClass([this.element], 'e-rtl');\n }\n if (this.width) {\n this.element.style.width = this.width;\n }\n if (this.height) {\n this.element.style.height = this.height;\n }\n if (this.rule.rules.length) {\n this.isImportRules = true;\n }\n else {\n this.addGroupElement(false, this.element);\n }\n if (Browser.isDevice || (window.innerWidth < 768 && !this.isPropChange) || this.displayMode === 'Vertical') {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.element.style.width = '100%';\n this.element.classList.add('e-device');\n }\n removeClass(this.element.querySelectorAll('.e-rule-container'), 'e-horizontal-mode');\n addClass(this.element.querySelectorAll('.e-rule-container'), 'e-vertical-mode');\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n if (this.summaryView) {\n if (this.isImportRules) {\n this.renderSummary();\n }\n else {\n this.renderSummaryCollapse();\n }\n }\n else {\n if (this.columns && this.columns.length && this.isImportRules) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);\n var mRules = extend({}, this.rule, {}, true);\n this.isRefreshed = true;\n this.setGroupRules(mRules);\n this.isRefreshed = false;\n }\n else if (this.columns && this.columns.length) {\n this.addRuleElement(this.element.querySelector('.e-group-container'), {});\n }\n this.notGroupRtl();\n if (this.readonly) {\n this.enableReadonly();\n }\n var buttons = this.element.querySelectorAll('label.e-btn');\n var button = void 0;\n for (var i = 0; i < buttons.length; i++) {\n button = buttons.item(i);\n rippleEffect(button, { selector: '.e-btn' });\n }\n }\n };\n QueryBuilder.prototype.renderSummary = function () {\n var contentElem = this.createElement('div', {\n attrs: {\n class: 'e-summary-content',\n id: this.element.id + '_summary_content'\n }\n });\n var textElem = this.createElement('textarea', { attrs: { class: 'e-summary-text', readonly: 'true' }, styles: 'max-height:500px' });\n var editElem = this.createElement('button', { attrs: { type: 'button', class: 'e-edit-rule e-css e-btn e-small e-flat e-primary' } });\n var divElem = this.createElement('div', { attrs: { class: 'e-summary-btndiv' } });\n contentElem.appendChild(textElem);\n textElem.textContent = this.getSqlFromRules(this.rule);\n editElem.textContent = this.l10n.getConstant('Edit');\n divElem.appendChild(editElem);\n contentElem.appendChild(divElem);\n this.element.appendChild(contentElem);\n };\n QueryBuilder.prototype.renderSummaryCollapse = function () {\n var collapseElem = this.createElement('div', {\n attrs: {\n class: 'e-collapse-rule e-icons',\n title: this.l10n.getConstant('SummaryViewTitle')\n }\n });\n this.element.querySelector('.e-group-header').appendChild(collapseElem);\n };\n QueryBuilder.prototype.columnSort = function () {\n if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));\n }\n else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));\n }\n };\n QueryBuilder.prototype.onChangeNotGroup = function () {\n this.element.innerHTML = '';\n this.groupIdCounter = 0;\n if (!this.headerTemplate) {\n if (this.enableNotCondition) {\n var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n if (this.groupElem.querySelector('.e-btn-group')) {\n this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));\n }\n }\n else {\n this.groupElem.querySelector('.e-qb-toggle').remove();\n }\n }\n this.setProperties({ rule: this.checkNotGroup(this.rule) }, true);\n this.initWrapper();\n };\n QueryBuilder.prototype.notGroupRtl = function () {\n if (this.enableRtl) {\n addClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n else {\n removeClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n };\n QueryBuilder.prototype.checkNotGroup = function (rule) {\n var orgRule;\n if (rule.rules) {\n for (var i = 0; i < rule.rules.length; i++) {\n orgRule = rule.rules[i];\n orgRule = this.checkNotGroup(orgRule);\n rule.rules[i] = orgRule;\n }\n }\n if (!isNullOrUndefined(rule.not)) {\n if (this.enableNotCondition) {\n rule.not = false;\n }\n delete rule.not;\n }\n else if (this.enableNotCondition && !isNullOrUndefined(rule.condition)) {\n rule.not = false;\n }\n return rule;\n };\n QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {\n var properties = Object.keys(newProp);\n this.isPropChange = true;\n var groupElem = this.element.querySelector('.e-group-container');\n var summaryElem = this.element.querySelector('.e-summary-content');\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'summaryView':\n if (newProp.summaryView) {\n groupElem.style.display = 'none';\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n summaryElem = this.element.querySelector('.e-summary-content');\n }\n else {\n this.element.querySelector('.e-summary-text').textContent = this.getSqlFromRules(this.rule);\n }\n summaryElem.style.display = 'block';\n }\n else {\n if (groupElem.querySelectorAll('.e-collapse-rule').length > -1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n summaryElem.style.display = 'none';\n }\n break;\n case 'displayMode':\n this.refresh();\n break;\n case 'showButtons':\n if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {\n if (newProp.showButtons.lockGroup) {\n removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.lockRule)) {\n if (newProp.showButtons.lockRule) {\n removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {\n if (newProp.showButtons.cloneGroup) {\n removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {\n if (newProp.showButtons.cloneRule) {\n removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {\n if (newProp.showButtons.ruleDelete) {\n removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {\n if (newProp.showButtons.groupDelete) {\n removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n else {\n removeClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n break;\n case 'enablePersistence':\n this.enablePersistence = newProp.enablePersistence;\n break;\n case 'dataSource':\n this.dataSource = newProp.dataSource;\n this.refresh();\n break;\n case 'columns':\n this.columns = newProp.columns;\n this.columnSort();\n this.updateSubFieldsFromColumns(this.columns);\n break;\n case 'sortDirection':\n this.sortDirection = newProp.sortDirection;\n this.columnSort();\n break;\n case 'maxGroupCount':\n this.maxGroupCount = newProp.maxGroupCount;\n break;\n case 'height':\n this.height = newProp.height;\n this.element.style.height = this.height;\n break;\n case 'rule':\n if (this.rule.rules.length === 0 && !isNullOrUndefined(this.rule)) {\n this.reset();\n }\n this.setProperties({ rule: newProp.rule }, true);\n newProp.rule = this.getRuleCollection(this.rule, false);\n this.setRules(this.rule);\n break;\n case 'width':\n this.width = newProp.width;\n this.element.style.width = this.width;\n break;\n case 'locale':\n this.locale = newProp.locale;\n this.intl = new Internationalization(this.locale);\n this.isLocale = true;\n this.refresh();\n this.isLocale = false;\n break;\n case 'enableNotCondition':\n this.onChangeNotGroup();\n break;\n case 'readonly':\n this.isReadonly = newProp.readonly;\n this.enableReadonly();\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.refresh();\n break;\n case 'enableSeparateConnector':\n this.enableSeparateConnector = newProp.enableSeparateConnector;\n this.refresh();\n break;\n }\n }\n this.isPropChange = false;\n };\n QueryBuilder.prototype.preRender = function () {\n this.element.id = this.element.id || getUniqueID('ej2-querybuilder');\n this.initialID = this.element.id;\n this.defaultLocale = {\n StartsWith: 'Starts With',\n DoesNotStartWith: 'Does Not Start With',\n EndsWith: 'Ends With',\n DoesNotEndWith: 'Does Not End With',\n Contains: 'Contains',\n DoesNotContain: 'Does Not Contain',\n NotLike: 'Not Like',\n Like: 'Like',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n Between: 'Between',\n NotBetween: 'Not Between',\n In: 'In',\n NotIn: 'Not In',\n Remove: 'REMOVE',\n SelectField: 'Select a field',\n SelectOperator: 'Select operator',\n DeleteRule: 'Remove this condition',\n DeleteGroup: 'Delete group',\n AddGroup: 'Add Group',\n AddCondition: 'Add Condition',\n Edit: 'EDIT',\n ValidationMessage: 'This field is required',\n SummaryViewTitle: 'Summary View',\n OtherFields: 'Other Fields',\n AND: 'AND',\n OR: 'OR',\n NOT: 'NOT',\n SelectValue: 'Enter Value',\n IsEmpty: 'Is Empty',\n IsNotEmpty: 'Is Not Empty',\n IsNull: 'Is Null',\n IsNotNull: 'Is Not Null',\n True: 'true',\n False: 'false',\n AddButton: 'Add Group/Condition',\n CloneGroup: 'Clone Group',\n LockGroup: 'Lock Group',\n CloneRule: 'Clone Rule',\n LockRule: 'Lock Rule',\n UnlockRule: 'Unlock Rule',\n UnlockGroup: 'Unlock Group'\n };\n this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);\n this.intl = new Internationalization(this.locale);\n this.groupIdCounter = 0;\n this.subFilterCounter = 0;\n this.ruleIdCounter = 0;\n this.btnGroupId = 0;\n this.isImportRules = false;\n this.parser = [];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', key: this.l10n.getConstant('StartsWith') },\n { value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },\n { value: 'endswith', key: this.l10n.getConstant('EndsWith') },\n { value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },\n { value: 'contains', key: this.l10n.getConstant('Contains') },\n { value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') },\n { value: 'isempty', key: this.l10n.getConstant('IsEmpty') },\n { value: 'isnotempty', key: this.l10n.getConstant('IsNotEmpty') }\n ],\n dateOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') }\n ],\n booleanOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') }\n ]\n };\n this.operators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: 'IN', notin: 'NOT IN',\n lessthanorequal: '<=', startswith: 'LIKE', endswith: 'LIKE', between: 'BETWEEN', notbetween: 'NOT BETWEEN', contains: 'LIKE',\n isnull: 'IS NULL', isnotnull: 'IS NOT NULL', isempty: 'IS EMPTY', isnotempty: 'IS NOT EMPTY', notstartswith: 'NOT LIKE',\n notendswith: 'NOT LIKE', notcontains: 'NOT LIKE'\n };\n this.sqlOperators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: this.l10n.getConstant('In').toUpperCase(),\n notin: this.l10n.getConstant('NotIn').toUpperCase(), lessthanorequal: '<=', startswith: this.l10n.getConstant('Like').toUpperCase(),\n endswith: this.l10n.getConstant('Like').toUpperCase(), between: this.l10n.getConstant('Between').toUpperCase(),\n notbetween: this.l10n.getConstant('NotBetween').toUpperCase(), contains: this.l10n.getConstant('Like').toUpperCase(),\n isnull: this.l10n.getConstant('IsNull').toUpperCase(), isnotnull: this.l10n.getConstant('IsNotNull').toUpperCase(),\n isempty: this.l10n.getConstant('IsEmpty').toUpperCase(), isnotempty: this.l10n.getConstant('IsNotEmpty').toUpperCase(),\n notstartswith: this.l10n.getConstant('NotLike').toUpperCase(), notendswith: this.l10n.getConstant('NotLike').toUpperCase(),\n notcontains: this.l10n.getConstant('NotLike').toUpperCase()\n };\n if (!this.fields) {\n this.fields = { text: 'label', value: 'field' };\n }\n };\n QueryBuilder.prototype.render = function () {\n this.levelColl = {};\n this.items = [\n {\n text: this.l10n.getConstant('AddGroup'),\n iconCss: 'e-icons e-add-icon e-addgroup'\n },\n {\n text: this.l10n.getConstant('AddCondition'),\n iconCss: 'e-icons e-add-icon e-addrule'\n }\n ];\n this.ruleElem = this.ruleTemplate();\n this.groupElem = this.groupTemplate();\n var stringOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n var numberOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n this.customOperators['stringOperator'] = this.customOperators['stringOperator'].concat(stringOper); // tslint:disable-line\n this.customOperators['numberOperator'] = this.customOperators['numberOperator'].concat(numberOper); // tslint:disable-line\n if (this.dataSource instanceof DataManager) {\n this.dataManager = this.dataSource;\n if (this.columns && this.columns.length) {\n this.dataColl = this.columns;\n this.initControl();\n }\n else {\n this.executeDataManager(new Query().take(1));\n }\n }\n else {\n this.dataManager = new DataManager(this.dataSource);\n this.dataColl = this.dataManager.executeLocal(new Query());\n this.initControl();\n }\n this.renderComplete();\n if (this.allowDragAndDrop) {\n this.initializeDrag();\n }\n };\n QueryBuilder.prototype.initializeDrag = function () {\n this.draggable = new Draggable(this.element, {\n dragTarget: '.e-drag-qb-rule',\n distance: 5,\n helper: this.helper.bind(this),\n dragStart: this.dragStartHandler.bind(this),\n drag: this.dragHandler.bind(this),\n dragStop: this.dragStopHandler.bind(this),\n isReplaceDragEle: true,\n isPreventSelect: false,\n abort: '.e-parent-header',\n isDragScroll: true,\n enableAutoScroll: true\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n QueryBuilder.prototype.helper = function (e) {\n var target = this.draggable.currentStateTarget;\n if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {\n return false;\n }\n var visualElement = this.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + this.element.offsetWidth\n });\n var cloneElement;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n cloneElement = closest(target, '.e-group-container').cloneNode(true);\n closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');\n }\n else {\n visualElement.classList.add('e-group-body');\n cloneElement = this.createElement('div', { className: 'e-rule-container' });\n var ruleElement = closest(target, '.e-rule-field').cloneNode(true);\n cloneElement.appendChild(ruleElement);\n closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');\n }\n visualElement.appendChild(cloneElement);\n var childElements = visualElement.querySelectorAll('*');\n childElements.forEach(function (child) {\n child.removeAttribute('id');\n });\n this.element.appendChild(visualElement);\n return visualElement;\n };\n QueryBuilder.prototype.dragStartHandler = function (e) {\n this.draggedRule = e.target;\n this.isDragEventPrevent = false;\n document.body.classList.add('e-prevent-select');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dragElement = e.dragElement;\n var rule = closest(e.target, '.e-rule-container');\n var group = closest(e.target, '.e-group-container');\n var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };\n this.trigger('dragStart', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragHandler = function (e) {\n if (this.isDragEventPrevent) {\n return;\n }\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n if (isNullOrUndefined(e.target)) {\n return;\n }\n if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||\n !closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {\n this.dragElement.classList.add('e-notallowedcur');\n return;\n }\n else {\n this.dragElement.classList.remove('e-notallowedcur');\n }\n var targetElem = closest(e.target, '.e-rule-container');\n var grpElem = closest(e.target, '.e-group-container');\n if (targetElem) {\n var rect = targetElem.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n targetElem.classList.add('e-drag-rule-top-line');\n }\n else if (distanceToBottom < threshold) {\n targetElem.classList.add('e-drag-rule-bottom-line');\n }\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {\n var rect = e.target.children[0].getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n e.target.classList.add('e-drag-rule-top-line');\n }\n }\n else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {\n if (!grpElem) {\n grpElem = e.target;\n }\n if (grpElem.id.indexOf('group0') > -1) {\n var rect = e.target.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToBottom < threshold) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n }\n }\n var dragEventArgs = {\n dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,\n dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false\n };\n this.trigger('drag', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragStopHandler = function (e) {\n var _this = this;\n if (this.isDragEventPrevent) {\n return;\n }\n var targetGroup = closest(e.target, '.e-rule-container');\n if (isNullOrUndefined(targetGroup) && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector) {\n targetGroup = closest(e.target.parentElement.previousElementSibling, '.e-rule-container');\n }\n var isPreventelem;\n if (!isNullOrUndefined(e.helper)) {\n isPreventelem = closest(e.helper, '.e-notallowedcur');\n }\n var prevRule;\n if (!isPreventelem) {\n var targetGrp = closest(e.target, '.e-group-container');\n var dropEventArgs = {\n cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id\n : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null\n };\n this.trigger('drop', dropEventArgs);\n if (dropEventArgs.cancel) {\n isPreventelem = true;\n }\n prevRule = this.getValidRules();\n }\n this.prvtEvtTgrDaD = true;\n var tgrt = this.enableSeparateConnector && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') ? e.target.parentElement.previousElementSibling : e.target;\n if (targetGroup && !isPreventelem) {\n var groupId_1 = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-rule-field') ||\n this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(targetGroup), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElem = closest(targetGroup, '.e-group-container');\n var nestGrpElem = groupElem.querySelectorAll('.e-group-container');\n nestGrpElem.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n var ruleIds = [];\n var dropInd = void 0;\n for (var i = 0; i < ruleElems.length; i++) {\n if (ruleElems[i].classList.contains('e-drag-rule-top-line') ||\n ruleElems[i].classList.contains('e-drag-rule-bottom-line')) {\n dropInd = i;\n }\n ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);\n }\n this.deleteRules(ruleIds);\n if (targetGroup.classList.contains('e-drag-rule-top-line')) {\n groupRule.rules.splice(dropInd, 0, rule);\n }\n else {\n groupRule.rules.splice(dropInd + 1, 0, rule);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_1);\n }\n else {\n _this.addGroups([rule], groupId_1);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_1);\n }\n else {\n _this.addRules([rule], groupId_1);\n }\n }\n });\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children.length === 0 && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children[0].classList.contains('e-group-container') && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId_2 = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(tgrt), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElems = tgrt.querySelectorAll('.e-group-container');\n groupElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n ruleElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteRule(ele);\n }\n });\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n this.addGroups([rule], groupId_2);\n }\n else {\n this.addRules([rule], groupId_2);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_2);\n }\n else {\n _this.addGroups([rule], groupId_2);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_2);\n }\n else {\n _this.addRules([rule], groupId_2);\n }\n }\n });\n }\n else if ((closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) && !isPreventelem) {\n var rule = void 0;\n targetGroup = closest(e.target, '.e-group-container');\n if (!targetGroup && e.target.classList.contains('e-group-container')) {\n targetGroup = e.target;\n }\n var groupId = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (groupId === 'group0') {\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n }\n if (!isPreventelem) {\n this.trigger('ruleChange', { previousRule: prevRule, rule: this.getValidRules(), type: 'drag-and-drop' });\n }\n this.prvtEvtTgrDaD = false;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n if (e.helper && e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n };\n QueryBuilder.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n QueryBuilder.prototype.executeDataManager = function (query) {\n var _this = this;\n var data = this.dataManager.executeQuery(query);\n var deferred = new Deferred();\n data.then(function (e) {\n if (e.actual && e.actual.result) {\n _this.dataColl = e.actual.result;\n }\n else {\n _this.dataColl = e.result;\n }\n _this.initControl();\n }).catch(function (e) {\n deferred.reject(e);\n });\n };\n QueryBuilder.prototype.initControl = function () {\n this.initialize();\n this.initWrapper();\n this.wireEvents();\n };\n QueryBuilder.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickEventHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);\n EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n if (this.allowDragAndDrop) {\n EventHandler.add(document, 'keydown', this.keyBoardHandler, this);\n }\n this.boundResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundResizeHandler);\n };\n QueryBuilder.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickEventHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);\n EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n EventHandler.remove(document, 'keydown', this.keyBoardHandler);\n if (this.boundResizeHandler) {\n window.removeEventListener('resize', this.boundResizeHandler);\n this.boundResizeHandler = null;\n }\n };\n QueryBuilder.prototype.getParentGroup = function (target, isParent) {\n var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[\"\" + target];\n var len = isParent ? groupLevel.length - 1 : groupLevel.length;\n var rule = this.rule;\n for (var i = 0; i < len; i++) {\n rule = this.findGroupByIdx(groupLevel[i], rule, i === 0);\n }\n return rule;\n };\n /**\n * Delete the Group\n *\n * @param {Element | string} target - 'target' to be passed to delete the group.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroup = function (target) {\n var _this = this;\n var groupElem = target;\n var groupId;\n if (typeof target === 'string') {\n groupId = this.element.id + '_' + target;\n target = document.getElementById(groupId);\n groupId = groupId.replace(this.element.id + '_', '');\n }\n else {\n groupId = groupElem.id.replace(this.element.id + '_', '');\n }\n if (groupId === 'group0' || !target) {\n return;\n }\n var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteGroupSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteGroupSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteGroupSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = target;\n var rule = this.getParentGroup(groupElem, true);\n var index = 0;\n var i = void 0;\n var len = void 0;\n var beforeRules = this.getValidRules(this.rule);\n var nextElem = groupElem.nextElementSibling;\n var prevElem = groupElem.previousElementSibling;\n var element = groupElem.querySelectorAll('.e-group-container');\n var valElem = groupElem.querySelectorAll('.e-tooltip');\n len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n for (i = 0, len = element.length; i < len; i++) {\n delete this.levelColl[element[i].id];\n }\n while (groupElem.previousElementSibling !== null) {\n groupElem = groupElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||\n groupElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n if (!this.enableSeparateConnector) {\n if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {\n removeClass([nextElem], 'e-separate-rule');\n addClass([nextElem], 'e-joined-rule');\n if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {\n addClass([prevElem], 'e-prev-joined-rule');\n }\n }\n }\n var elem = groupElem.parentElement.parentElement.parentElement;\n var removeString = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n var remRule = rule.rules[index];\n var ruleElemColl = target.querySelectorAll('.e-rule-container');\n if (remRule && remRule.rules) {\n for (var r = 0; r < remRule.rules.length; r++) {\n var column = this.getColumn(remRule.rules[r].field);\n if (ruleElemColl[r]) {\n var isTemplateRendered = ruleElemColl[r].querySelector('.e-template-value');\n if (column && (column.ruleTemplate || (this.isPlatformTemplate(column) && isTemplateRendered))) {\n removeString.push(ruleElemColl[r].id);\n }\n }\n }\n }\n }\n detach(target);\n if (this.headerTemplate) {\n this.clearQBTemplate([target.id]);\n }\n if (removeString.length) {\n this.clearQBTemplate(removeString);\n }\n rule.rules.splice(index, 1);\n delete this.levelColl[args.groupID];\n this.refreshLevelColl();\n this.disableRuleCondition(elem, rule);\n if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {\n detach(prevElem);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');\n }\n };\n QueryBuilder.prototype.isPlatformTemplate = function (column) {\n var isTemp = false;\n isTemp = column.template && (typeof column.template === 'string' || column.template.create === undefined);\n return isTemp;\n };\n QueryBuilder.prototype.deleteRule = function (target) {\n var _this = this;\n var groupElem = closest(target, '.e-group-container');\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');\n var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteRuleSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteRuleSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteRuleSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var beforeRules = this.getValidRules(this.rule);\n var prevElem = ruleElem.previousElementSibling;\n var index = 0;\n var clnruleElem = ruleElem;\n var nextElem = ruleElem.nextElementSibling;\n var valElem = ruleElem.querySelectorAll('.e-tooltip');\n var i = void 0;\n var len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var column = this.getColumn(rule.rules[index].field);\n if (column && column.template && clnruleElem.querySelector('.e-template')) {\n this.templateDestroy(column, clnruleElem.querySelector('.e-template').id);\n }\n if (!prevElem || prevElem.className.indexOf('e-rule-container') < 0) {\n if (nextElem) {\n removeClass([nextElem], 'e-joined-rule');\n }\n }\n if (!nextElem || nextElem.className.indexOf('e-rule-container') < 0) {\n if (prevElem) {\n removeClass([prevElem], 'e-prev-joined-rule');\n }\n }\n var isTemplateRendered = clnruleElem.querySelector('.e-template-value');\n // eslint-disable\n try {\n if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {\n var previousElem = clnruleElem.previousElementSibling;\n var nextElem_1 = clnruleElem.nextElementSibling;\n if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))\n || (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {\n if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {\n var rule_1 = this.getRule(previousElem.previousElementSibling);\n rule_1.condition = null;\n }\n detach(previousElem);\n }\n else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))\n || (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {\n detach(nextElem_1);\n }\n }\n detach(clnruleElem);\n }\n catch (err) {\n return;\n }\n if (column && column.ruleTemplate) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n if (column && this.isPlatformTemplate(column) && isTemplateRendered) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n rule.rules.splice(index, 1);\n if (!(rule.rules[0] && rule.rules[0].rules)) {\n this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);\n }\n var tooltipElem = this.element.querySelectorAll('.e-tooltip');\n for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {\n getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');\n }\n };\n QueryBuilder.prototype.setGroupRules = function (rule, isRoot) {\n if (this.headerTemplate && isRoot) {\n this.isRoot = true;\n }\n this.clearQBTemplate();\n this.reset();\n this.groupIdCounter = 1;\n this.ruleIdCounter = 0;\n this.isImportRules = true;\n this.setProperties({ rule: rule }, true);\n rule = this.getRuleCollection(this.rule, false);\n this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);\n if (rule.isLocked) {\n var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n this.isImportRules = false;\n };\n QueryBuilder.prototype.keyBoardHandler = function (e) {\n if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {\n e.preventDefault();\n }\n else if (e.code === 'Escape' && this.allowDragAndDrop) {\n this.isDragEventPrevent = true;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n var dragElemnet = this.element.querySelector('.e-cloneproperties');\n if (dragElemnet) {\n remove(dragElemnet);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n }\n };\n QueryBuilder.prototype.windowResizeHandler = function () {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n };\n QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n this.clearTemplate(ruleElemColl);\n }\n };\n QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {\n if (!this.headerTemplate) {\n if (this.readonly) {\n return;\n }\n var count = groupElem.querySelector('.e-rule-list').childElementCount;\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n if (count > 1) {\n andElem.disabled = false;\n orElem.disabled = false;\n if (orElem.nextElementSibling.classList.contains('e-btn-disable') ||\n andElem.nextElementSibling.classList.contains('e-btn-disable')) {\n orElem.nextElementSibling.classList.remove('e-btn-disable');\n andElem.nextElementSibling.classList.remove('e-btn-disable');\n }\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = groupElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded) {\n if (rules && rules.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n if (this.isImportRules) {\n andElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-and');\n orElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-or');\n }\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = void 0;\n var tempElem = groupElem.previousElementSibling;\n while (tempElem) {\n if (tempElem.classList.contains('e-group-container')) {\n tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (tempElem.classList.contains('e-rule-container')) {\n elem = tempElem;\n break;\n }\n tempElem = tempElem.previousElementSibling;\n }\n if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {\n elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or' && orElem) {\n orElem.checked = true;\n }\n else if (andElem) {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded && !isNullOrUndefined(andElem)) {\n andElem.checked = false;\n andElem.disabled = true;\n orElem.checked = false;\n orElem.disabled = true;\n if (rules) {\n orElem.nextElementSibling.classList.add('e-btn-disable');\n andElem.nextElementSibling.classList.add('e-btn-disable');\n }\n }\n }\n }\n };\n /**\n * Get the valid rule or rules collection.\n *\n * @param {RuleModel} currentRule - 'currentRule' to be passed to get the valid rules.\n * @returns {RuleModel} - Valid rule or rules collection\n */\n QueryBuilder.prototype.getValidRules = function (currentRule) {\n this.isValueEmpty = true;\n if (!currentRule) {\n currentRule = this.getRules();\n }\n var ruleCondtion = currentRule.condition;\n var notCondition = currentRule.not;\n var ruleColl = extend([], currentRule.rules, [], true);\n var rule = !isNullOrUndefined(currentRule.isLocked) ?\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition, isLocked: currentRule.isLocked }, true) :\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition }, true);\n this.isValueEmpty = false;\n return rule;\n };\n QueryBuilder.prototype.getRuleCollection = function (rule, isValidRule) {\n if (isNullOrUndefined(rule)) {\n return null;\n }\n var orgRule;\n if (rule.rules && rule.rules.length && (Object.keys(rule.rules[0]).length > 6 || isValidRule)) {\n var jLen = rule.rules.length;\n for (var j = 0; j < jLen; j++) {\n orgRule = rule.rules[j];\n orgRule = this.getRuleCollection(orgRule, isValidRule);\n rule.rules[j] = orgRule;\n if (Object.keys(orgRule).length < 1 && isValidRule) {\n rule.rules.splice(j, 1);\n j--;\n jLen--;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var customObj = rule.custom;\n if ((rule.field && rule.field !== '') && (isNullOrUndefined(customObj) || (customObj && (customObj.type !== 'question' &&\n customObj.type !== 'answer')))) {\n if (rule.operator) {\n if (rule.operator.toString().indexOf('null') > -1 || rule.operator.toString().indexOf('empty') > -1) {\n rule.value = null;\n }\n }\n if ((this.isRefreshed && this.enablePersistence) || (rule.field !== '' && rule.operator !== '' &&\n (this.isValueEmpty ? rule.value !== '' && rule.value !== undefined : rule.value !== undefined)) ||\n (customObj && customObj.isQuestion)) {\n var condition = rule.condition;\n var lockedRule = rule.isLocked;\n rule = { 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value };\n if (!isNullOrUndefined(lockedRule)) {\n rule.isLocked = lockedRule;\n }\n if (condition) {\n rule.condition = condition;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {\n rule = {};\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'between' || rule.operator === 'notbetween') && Array.isArray(rule.value) && (rule.value.length < 2 || rule.value.some(function (val) { return val === '' || val === null; }))) {\n rule = {};\n }\n }\n else {\n rule = {};\n }\n }\n else {\n if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {\n var notValue = rule.not;\n rule = {\n 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,\n 'condition': rule.condition, 'rules': rule.rules\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n if (this.enableNotCondition) {\n rule.not = notValue;\n }\n }\n else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {\n rule = {};\n }\n else {\n var isLocked = rule.isLocked;\n if (this.enableNotCondition) {\n rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };\n }\n else {\n rule = { 'condition': rule.condition, 'rules': rule.rules };\n }\n if (!isNullOrUndefined(isLocked)) {\n rule.isLocked = isLocked;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n if (rule.rules && rule.rules.length === 0) {\n rule = {};\n }\n }\n }\n return rule;\n };\n /**\n * Set the rule or rules collection.\n *\n * @param {RuleModel} rule - 'rule' to be passed to set rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.setRules = function (rule) {\n var mRules = extend({}, rule, {}, true);\n if (this.headerTemplate) {\n this.setGroupRules(mRules, true);\n }\n else {\n this.setGroupRules(mRules);\n }\n };\n /**\n * Gets the rule or rule collection.\n *\n * @returns {object} - Rule or rule collection\n */\n QueryBuilder.prototype.getRules = function () {\n var rule;\n if (this.enableNotCondition) {\n rule = { condition: this.rule.condition, rules: this.rule.rules, not: this.rule.not };\n }\n else {\n rule = { condition: this.rule.condition, rules: this.rule.rules };\n }\n if (!isNullOrUndefined(this.rule.isLocked)) {\n rule.isLocked = this.rule.isLocked;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.rule.custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = this.rule.custom;\n }\n return rule;\n };\n /**\n * Gets the rule.\n *\n * @param {string | HTMLElement} elem - 'elem' to be passed to get rule.\n * @returns {object} - Rule\n */\n QueryBuilder.prototype.getRule = function (elem) {\n var ruleElem;\n var ruleId;\n var index = 0;\n if (elem instanceof HTMLElement) {\n ruleElem = closest(elem, '.e-rule-container');\n }\n else {\n ruleId = this.element.id + '_' + elem;\n ruleElem = document.getElementById(ruleId);\n }\n if (isNullOrUndefined(ruleElem)) {\n return null;\n }\n var groupElem = closest(ruleElem, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n return rule.rules[index];\n };\n /**\n * Gets the group.\n *\n * @param {string | Element} target - 'target' to be passed to get group.\n * @returns {object} -Group\n */\n QueryBuilder.prototype.getGroup = function (target) {\n if (target instanceof Element && target.className.indexOf('e-group-container') < 1) {\n target = closest(target, '.e-group-container');\n }\n var groupId = (target instanceof Element) ? target.id : this.element.id + '_' + target;\n var rule = this.getParentGroup(groupId);\n return rule;\n };\n /**\n * Deletes the group or groups based on the group ID.\n *\n * @param {string[]} groupIdColl - 'groupIdColl' to be passed to delete groups.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroups = function (groupIdColl) {\n var i;\n var len = groupIdColl.length;\n var groupID;\n for (i = 0; i < len; i++) {\n if (groupIdColl[i] === 'group0') {\n continue;\n }\n groupID = this.element.id + '_' + groupIdColl[i];\n this.deleteGroup(document.getElementById(groupID));\n }\n };\n /**\n * Return the Query from current rules collection.\n *\n * @returns {Promise} - Query from current rules collection\n * @blazorType object\n */\n QueryBuilder.prototype.getFilteredRecords = function () {\n var predicate = this.getPredicate(this.getValidRules(this.rule));\n var dataManagerQuery = isNullOrUndefined(predicate) ? new Query() : new Query().where(predicate);\n return this.dataManager.executeQuery(dataManagerQuery);\n };\n /**\n * Deletes the rule or rules based on the rule ID.\n *\n * @param {string[]} ruleIdColl - 'ruleIdColl' to be passed to delete rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.deleteRules = function (ruleIdColl) {\n var i;\n var len = ruleIdColl.length;\n var ruleID;\n for (i = 0; i < len; i++) {\n ruleID = this.element.id + '_' + ruleIdColl[i];\n this.deleteRule(document.getElementById(ruleID));\n }\n };\n /**\n * Gets the query for Data Manager.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get query.\n * @returns {string} - Query for Data Manager\n */\n QueryBuilder.prototype.getDataManagerQuery = function (rule) {\n var predicate = this.getPredicate(rule);\n var query;\n var fields = [];\n for (var i = 0, len = Object.keys(this.columns); i < len.length; i++) {\n fields.push(this.columns[i].field);\n }\n if (rule.rules.length) {\n query = new Query().select(fields).where(predicate);\n }\n else {\n query = new Query().select(fields);\n }\n return query;\n };\n /**\n * Get the predicate from collection of rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get predicate.\n * @returns {Predicate} - Predicate from collection of rules\n */\n QueryBuilder.prototype.getPredicate = function (rule) {\n var ruleColl = rule.rules;\n var pred;\n var pred2;\n var ruleValue;\n var ignoreCase = false;\n var column;\n if (!ruleColl) {\n return pred;\n }\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var operator = ruleColl[i].operator;\n if (operator === 'notstartswith') {\n operator = 'doesnotstartwith';\n }\n else if (operator === 'notendswith') {\n operator = 'doesnotendwith';\n }\n else if (operator === 'notcontains') {\n operator = 'doesnotcontain';\n }\n var keys = Object.keys(ruleColl[i]);\n ignoreCase = false;\n if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {\n pred2 = this.getPredicate(ruleColl[i]);\n if (pred2) {\n if (pred) {\n if (rule.condition === 'and') {\n pred = pred.and(pred2);\n }\n else {\n pred = pred.or(pred2);\n }\n }\n else {\n pred = pred2;\n }\n }\n }\n else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {\n var oper = ruleColl[i].operator.toLowerCase();\n var isDateFilter = false;\n var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];\n if (ruleColl[i].type === 'string') {\n ignoreCase = this.matchCase ? false : true;\n }\n if (ruleColl[i].type === 'date' && dateOperColl.indexOf(oper) > -1) {\n ignoreCase = true;\n }\n column = this.getColumn(ruleColl[i].field);\n if (oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) {\n ruleColl[i].value = null;\n }\n else if (ruleColl[i].type === 'date' && !(ruleColl[i].value instanceof Array)) {\n var format = this.getFormat(column.format);\n if (!isNullOrUndefined(ruleColl[i].value)) {\n ruleValue = this.getDate(ruleColl[i].value, format);\n if (dateOperColl.indexOf(oper) > -1 && !this.isTime(ruleColl[i].value)) {\n isDateFilter = true;\n }\n }\n else {\n ruleValue = null;\n }\n }\n else {\n ruleValue = ruleColl[i].value;\n }\n if (i === 0) {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||\n oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :\n this.arrayPredicate(ruleColl[i]);\n }\n else {\n var value = ruleValue;\n if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n else {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||\n oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :\n this.arrayPredicate(ruleColl[i], pred, rule.condition);\n }\n else {\n if (rule.condition === 'and') {\n var value = ruleValue;\n if (pred && value !== '') {\n pred\n = pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n else {\n var value = ruleValue;\n if (pred && value !== '') {\n pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n }\n }\n }\n if (this.dataSource instanceof DataManager) {\n if (!isNullOrUndefined(pred) && (pred.operator === 'isnull' || pred.operator === 'isnotnull')) {\n pred.operator = pred.operator === 'isnull' ? 'equal' : 'notequal';\n }\n }\n return pred;\n };\n QueryBuilder.prototype.getLocale = function () {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.short';\n var localeString = this.locale;\n var mainVal = 'main.';\n var cultureObj = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n if (!cultureObj) {\n localeString = 'en';\n }\n return localeString;\n };\n QueryBuilder.prototype.getColumn = function (field, col) {\n var columns = this.columns;\n var column;\n columns = col ? col : columns;\n var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];\n var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === field) {\n column = columns[i];\n break;\n }\n }\n if (!column && this.separator !== '') {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === rootField) {\n if (columns[i].columns) {\n var subField = field.substring(rootField.length + this.separator.length);\n if (subField) {\n column = this.getColumn(subField, columns[i].columns);\n }\n else {\n column = columns[i];\n }\n }\n else {\n column = columns[i];\n }\n break;\n }\n }\n }\n if (!column) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n column = this.getColumn(field, columns[i].columns);\n if (column) {\n break;\n }\n }\n }\n }\n return column;\n };\n /* eslint-disable */\n /**\n * Return the operator bound to the column.\n *\n * @returns {[key: string]: Object}[] - Operator bound to the column\n */\n /* eslint-enable */\n QueryBuilder.prototype.getOperators = function (field) {\n var column = this.getColumn(field);\n return column.operators;\n };\n QueryBuilder.prototype.setTime = function (date, isStart) {\n if (isStart) {\n date.setHours(0, 0, 0);\n }\n else {\n date.setHours(23, 59, 59);\n }\n return date;\n };\n QueryBuilder.prototype.datePredicate = function (ruleColl, value, predicate, condition) {\n var pred;\n var startDate = this.setTime(new Date(value.getTime()), true);\n var endDate = this.setTime(value);\n switch (ruleColl.operator) {\n case 'equal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n pred = pred.and(ruleColl.field, 'lessthanorequal', endDate);\n break;\n case 'notequal':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n pred = pred.or(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthan':\n pred = new Predicate(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthanorequal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n break;\n case 'lessthan':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n break;\n case 'lessthanorequal':\n pred = new Predicate(ruleColl.field, 'lessthanorequal', endDate);\n break;\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.arrayPredicate = function (ruleColl, predicate, condition) {\n var value = ruleColl.value;\n var operator = ruleColl.operator.toString();\n var nullValue = ruleColl.value;\n var pred;\n var column = this.getColumn(ruleColl.field);\n var format = this.getFormat(column.format);\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n switch (operator) {\n case 'isnull':\n pred = new Predicate(ruleColl.field, 'isnull', nullValue);\n break;\n case 'isnotnull':\n pred = new Predicate(ruleColl.field, 'isnotnull', nullValue);\n break;\n case 'isempty':\n pred = new Predicate(ruleColl.field, 'equal', '');\n break;\n case 'isnotempty':\n pred = new Predicate(ruleColl.field, 'notequal', '');\n break;\n }\n }\n if (!(operator.indexOf('null') > -1 || operator.indexOf('empty') > -1)) {\n for (var j = 0, jLen = value.length; j < jLen; j++) {\n if (value[j] !== '' || ((operator === 'in' || operator === 'notin') && column.type === 'string')) {\n if (j === 0) {\n var gte = 'greaterthanorequal';\n switch (operator) {\n case 'between':\n if (column.type !== 'date') {\n pred = new Predicate(ruleColl.field, gte, value[j]);\n }\n else {\n pred = new Predicate(ruleColl.field, gte, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n else {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j]);\n }\n break;\n case 'in':\n pred = new Predicate(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = new Predicate(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n else {\n var gt = 'greaterthan';\n switch (ruleColl.operator) {\n case 'between':\n if (column.type === 'date') {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j]);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = pred.or(ruleColl.field, gt, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.or(ruleColl.field, 'greaterthan', value[j]);\n }\n break;\n case 'in':\n pred = pred.or(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = pred.and(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n }\n }\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.getDate = function (value, format) {\n var currDate = this.intl.parseDate(value, format);\n if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0\n && value.indexOf('-') < 0)) {\n currDate = new Date();\n currDate.setHours(parseInt(value.split(':')[0], 10));\n currDate.setMinutes(parseInt(value.split(':')[1], 10));\n if (value.split(':')[2]) {\n currDate.setSeconds(parseInt(value.split(':')[2], 10));\n }\n }\n return currDate;\n };\n QueryBuilder.prototype.isTime = function (value) {\n if (value && value.indexOf(':') > -1) {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.importRules = function (rule, parentElem, isReset, not, isRoot) {\n if (!isReset) {\n parentElem = this.renderGroup(rule, rule.condition, parentElem, not);\n }\n else {\n if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {\n // enable/disable conditions when rule group is added\n var orElem = parentElem.querySelector('.e-btngroup-or');\n var andElem = parentElem.querySelector('.e-btngroup-and');\n if (this.enableSeparateConnector && parentElem.previousElementSibling) {\n orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');\n andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');\n }\n orElem.disabled = false;\n andElem.disabled = false;\n if (this.enableSeparateConnector) {\n var elem = parentElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (rule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n // enable/disable conditions when rule condition is added\n this.disableRuleCondition(parentElem);\n }\n if (this.headerTemplate && isRoot) {\n parentElem = this.renderGroup(rule, rule.condition, this.element, rule.not, isRoot);\n }\n if (this.enableNotCondition && !this.headerTemplate) {\n var tglBtnElem = parentElem.querySelector('.e-qb-toggle');\n if (rule.not) {\n addClass([tglBtnElem], 'e-active-toggle');\n if (this.enableSeparateConnector) {\n getComponent(tglBtnElem.querySelector('.e-checkbox'), 'checkbox').checked = rule.not;\n }\n }\n else {\n removeClass([tglBtnElem], 'e-active-toggle');\n }\n }\n }\n if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {\n rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };\n }\n var ruleColl = rule.rules;\n if (!isNullOrUndefined(ruleColl)) {\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var keys = Object.keys(ruleColl[i]);\n if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {\n if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {\n return null;\n }\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n parentElem = this.importRules(ruleColl[i], parentElem, true);\n }\n else if (!isNullOrUndefined(ruleColl[i].rules)) {\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n var andElem = parentElem.querySelector('.e-btngroup-and');\n var orElem = parentElem.querySelector('.e-btngroup-or');\n andElem.disabled = true;\n orElem.disabled = true;\n }\n else {\n this.renderRule(ruleColl[i], parentElem);\n }\n if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {\n var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n }\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-rule-list');\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-group-container');\n }\n return parentElem;\n };\n QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {\n this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group\n var element = parentElem.querySelectorAll('.e-group-container');\n var cloneElem = parentElem.querySelector('.e-rule-list').children;\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {\n this.isMiddleGroup = false;\n this.cloneGrpBtnClick = false;\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n if (this.enableSeparateConnector) {\n for (var i = 0; i < tempGroupIndex; i++) {\n if (cloneElem[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n }\n return cloneElem[this.groupIndex + index + 1]; // group added in the middle\n }\n else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {\n this.isLastGroup = false;\n this.cloneGrpBtnClick = false;\n return cloneElem[cloneElem.length - 1]; // group added in the end\n }\n else {\n return element[element.length - 1];\n }\n };\n QueryBuilder.prototype.renderRule = function (rule, parentElem) {\n if (parentElem.className.indexOf('e-group-container') > -1) {\n this.addRuleElement(parentElem, rule); //Create rule\n }\n else {\n this.addRuleElement(parentElem.querySelector('.e-group-container'), rule); //Create group\n }\n };\n QueryBuilder.prototype.enableReadonly = function () {\n var target = this.element;\n var elem = target.querySelectorAll('.e-dropdownlist, .e-dropdowntree, .e-numerictextbox, .e-textbox, .e-datepicker, .e-multiselect .e-lib, .e-radio');\n for (var i = 0; i < elem.length; i++) {\n if (elem[i].classList.contains('e-dropdownlist')) {\n var dropDownObj = getInstance(elem[i], DropDownList);\n dropDownObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-dropdowntree')) {\n var dropDownTreeObj = getComponent(elem[i], 'dropdowntree');\n dropDownTreeObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-numerictextbox')) {\n var numericTextBoxObj = getInstance(elem[i], NumericTextBox);\n numericTextBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-textbox')) {\n var textBoxObj = getInstance(elem[i], TextBox);\n textBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-datepicker')) {\n var datePickerObj = getInstance(elem[i], DatePicker);\n datePickerObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-multiselect')) {\n var multiSelectObj = getInstance(elem[i], MultiSelect);\n multiSelectObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-radio')) {\n var radioButtonObj = getInstance(elem[i], RadioButton);\n if (!radioButtonObj.checked) {\n if (this.isReadonly) {\n elem[i].parentElement.style.display = 'none';\n }\n else {\n elem[i].parentElement.style.display = 'inherit';\n }\n }\n }\n }\n var deleteGroupElems = this.element.querySelectorAll('.e-deletegroup');\n var addRuleGroupElems = this.element.querySelectorAll('.e-addrulegroup');\n var removeRuleElems = this.element.querySelectorAll('.e-removerule');\n if (!this.isReadonly && this.ruleElem.classList.contains('e-readonly')) {\n this.ruleElem.classList.remove('e-readonly');\n }\n var elems = [deleteGroupElems, addRuleGroupElems, removeRuleElems];\n for (var i = 0; i < elems.length; i++) {\n elems[i].forEach(function (elem) {\n if (elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n }\n this.enableBtnGroup();\n };\n QueryBuilder.prototype.enableBtnGroup = function () {\n var _this = this;\n var elems = this.element.querySelectorAll('.e-btngroup-and-lbl, .e-btngroup-or-lbl, .e-qb-toggle');\n var not = false;\n elems.forEach(function (elem) {\n if (elem.classList.contains('e-qb-toggle') && !elem.classList.contains('e-active-toggle')\n && !elem.classList.contains('e-readonly')) {\n elem.classList.add('e-readonly');\n not = false;\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-not-readonly')) {\n elem.classList.remove('e-not-readonly');\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else if (elem.classList.contains('e-active-toggle')) {\n elem.classList.add('e-not-readonly');\n not = true;\n }\n else if (elem.previousElementSibling.checked || elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n if (not) {\n if (elem.textContent === 'AND') {\n elem.classList.add('e-readonly-and');\n }\n else {\n elem.classList.add('e-readonly-or');\n }\n }\n else {\n if (elem.textContent === 'AND' && _this.isReadonly) {\n elem.classList.remove('e-not');\n elem.classList.add('e-readonly-and');\n }\n else {\n if (_this.enableNotCondition) {\n elem.classList.add('e-not');\n }\n elem.classList.remove('e-readonly-and');\n }\n if (elem.textContent === 'OR' && _this.isReadonly) {\n elem.classList.add('e-readonly-or-not');\n }\n else {\n elem.classList.remove('e-readonly-or-not');\n }\n }\n }\n else if (elem.classList.contains('e-btn-disable')) {\n // do nothing\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n };\n QueryBuilder.prototype.isDateFunction = function (value) {\n var dateFunc = ['date', 'time', 'day', 'week', 'month', 'year', 'hour', 'minute', 'second', 'now', 'quarter', 'period', 'extract'];\n for (var i = 0, len = dateFunc.length; i < len; i++) {\n if (value.toLowerCase().indexOf(dateFunc[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {\n var _this = this;\n var isRoot = false;\n if (!queryStr && queryStr !== '') {\n queryStr = '';\n isRoot = true;\n }\n else {\n queryStr += '(';\n }\n if (rules.not) {\n var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';\n queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';\n }\n if (rules.rules && rules.rules.length) {\n queryStr += rules.rules.reduce(function (result, rule, j) {\n var ruleStr = '';\n if (rule.rules) {\n ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);\n if (_this.enableSeparateConnector) {\n rules.condition = rule.condition;\n }\n }\n else {\n var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];\n var valueStr = '';\n if (rule.value instanceof Array) {\n if (rule.operator.toString().indexOf('between') > -1) {\n var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';\n if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {\n valueStr = \"\\\"\" + rule.value[0] + \"\\\"\" + ruleCondition + \"\\\"\" + rule.value[1] + \"\\\"\";\n }\n else {\n valueStr = \"\" + rule.value[0] + ruleCondition + rule.value[1];\n }\n }\n else {\n if (typeof rule.value[0] === 'string' && rule.value !== null) {\n var valueArray = rule.value;\n valueStr = '(\"' + valueArray.join('\",\"') + '\")';\n }\n else {\n valueStr = \"(\" + rule.value + \")\";\n }\n }\n }\n else {\n if (rule.operator.toString().indexOf('startswith') > -1) {\n valueStr = rule.value ? \"(\\\"\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('endswith') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('contains') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else {\n if (rule.type === 'number' || typeof rule.value === 'boolean' ||\n (rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {\n valueStr = \"\" + rule.value;\n }\n else if (rule.operator.toString().indexOf('empty') > -1) {\n valueStr = '\"\"';\n }\n else {\n valueStr = \"\\\"\" + rule.value + \"\\\"\";\n }\n }\n }\n var fieldName = rule.field;\n if (enableEscape) {\n fieldName = '`' + fieldName + '`';\n }\n else if (fieldName.indexOf(' ') > -1) {\n fieldName = '\"' + fieldName + '\"';\n }\n if (rule.operator.toString().indexOf('null') > -1) {\n ruleStr = fieldName + ' ' + ruleOpertor;\n }\n else {\n var custOper = ruleOpertor;\n if (rule.operator === 'isempty') {\n custOper = '=';\n }\n else if (rule.operator === 'isnotempty') {\n custOper = '!=';\n }\n ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;\n }\n }\n if (j !== rules.rules.length - 1) {\n var condition = rules.condition;\n if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {\n condition = rule.condition;\n }\n if (condition) {\n condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();\n ruleStr += ' ' + condition + ' ';\n }\n }\n return result + ruleStr;\n }, '');\n }\n if (!isRoot) {\n queryStr += ')';\n }\n if (rules.not) {\n queryStr += ')';\n }\n return queryStr;\n };\n /**\n * Sets the rules from the sql query.\n *\n * @param {string} sqlString - 'sql String' to be passed to set the rule.\n * @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.\n * @returns {void}\n */\n QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {\n sqlString = sqlString.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sqlString, sqlLocale);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n };\n /**\n * Get the rules from SQL query.\n *\n * @param {string} sqlString - 'sql String' to be passed to get the rule.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {object} - Rules from SQL query\n */\n QueryBuilder.prototype.getRulesFromSql = function (sqlString, sqlLocale) {\n this.parser = [];\n this.sqlParser(sqlString, sqlLocale);\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n var rule = this.processParser(this.parser, this.rule, [0], sqlLocale);\n if (this.enableNotCondition) {\n return { condition: rule.condition, not: rule.not, rules: rule.rules };\n }\n else {\n return { condition: rule.condition, rules: rule.rules };\n }\n };\n /**\n * Gets the sql query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @param {boolean} allowEscape - Set `true` if it exclude the escape character.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {string} - Sql query from rules.\n */\n QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {\n if (!rule) {\n rule = this.getValidRules();\n }\n rule = this.getRuleCollection(rule, false);\n var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/\"/g, '\\'');\n return sqlString;\n };\n /**\n * Gets the parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.\n * @returns {ParameterizedSql} – Parameterized SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the parameter sql query.\n *\n * @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the named parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.\n * @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the named parameter SQL query.\n *\n * @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Set the rules from Mongo query.\n *\n * @param {string} mongoQuery - 'sql String' to be passed to get the rule.\n * @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.\n * @returns {void}\n */\n QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n this.rule = { condition: 'and', not: false, rules: [] };\n this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the Mongo query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @returns {object} - Sql query from rules.\n */\n QueryBuilder.prototype.getMongoQuery = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { mongoQuery: null };\n this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });\n return obj['mongoQuery'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return '';\n };\n /**\n * Clones the rule based on the rule ID to the specific group.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be cloned.\n * @param {string} groupID - Specifies the groupID in which the rule to be cloned.\n * @param {number} index - Specifies the index to insert the cloned rule inside the group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {\n var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));\n var isCloneRule = this.showButtons.cloneRule;\n groupID = groupID.replace(this.element.id + '_', '');\n this.ruleIndex = index;\n this.cloneRuleBtnClick = true;\n this.showButtons.cloneRule = true;\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupID);\n this.ruleIndex = -1;\n this.cloneRuleBtnClick = false;\n this.showButtons.cloneRule = isCloneRule;\n isCloneRule = false;\n };\n /**\n * Clones the group based on the group ID to the specific group.\n *\n * @param {string} groupID - Specifies the groupID that needs to be cloned.\n * @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.\n * @param {number} index - Specifies the index to insert the cloned group inside the parent group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {\n parentGroupID = parentGroupID.replace(this.element.id + '_', '');\n var group = this.getGroup(parentGroupID);\n var isCloneGroup = this.showButtons.cloneGroup;\n groupID = groupID.replace(this.element.id + '_', '');\n this.groupIndex = index;\n this.cloneGrpBtnClick = this.groupCloned = true;\n this.showButtons.cloneGroup = true;\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);\n this.groupIndex = -1;\n this.cloneGrpBtnClick = false;\n this.showButtons.cloneGroup = isCloneGroup;\n isCloneGroup = this.groupCloned = false;\n };\n /**\n * Locks the rule based on the rule ID.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockRule = function (ruleID) {\n if (ruleID.indexOf(this.element.id) < 0) {\n ruleID = this.element.id + '_' + ruleID;\n }\n var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];\n this.ruleLock(target);\n };\n /**\n * Locks the group based on the group ID\n *\n * @param {string} groupID - Specifies the groupID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockGroup = function (groupID) {\n if (groupID.indexOf(this.element.id) < 0) {\n groupID = this.element.id + '_' + groupID;\n }\n var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];\n this.groupLock(target);\n };\n QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {\n var st = 0;\n var str;\n do {\n str = sqlString.slice(st);\n st += this.parseSqlStrings(str, sqlLocale);\n } while (str !== '');\n return this.parser;\n };\n QueryBuilder.prototype.parseSqlStrings = function (sqlString, sqlLocale) {\n var operators = ['=', '!=', '<=', '>=', '<', '>'];\n var conditions;\n if (sqlLocale) {\n conditions = [this.l10n.getConstant('AND').toUpperCase(), this.l10n.getConstant('OR').toUpperCase(), this.l10n.getConstant('NOT').toUpperCase()];\n }\n else {\n conditions = ['AND', 'OR', 'NOT'];\n }\n var subOp;\n if (sqlLocale) {\n subOp = [this.l10n.getConstant('In').toUpperCase(), this.l10n.getConstant('NotIn').toUpperCase(),\n this.l10n.getConstant('Like').toUpperCase(), this.l10n.getConstant('NotLike').toUpperCase(),\n this.l10n.getConstant('Between').toUpperCase(), this.l10n.getConstant('NotBetween').toUpperCase(),\n this.l10n.getConstant('IsNull').toUpperCase(), this.l10n.getConstant('IsNotNull').toUpperCase(),\n this.l10n.getConstant('IsEmpty').toUpperCase(), this.l10n.getConstant('IsNotEmpty').toUpperCase()];\n }\n else {\n subOp = ['IN', 'NOT IN', 'LIKE', 'NOT LIKE', 'BETWEEN', 'NOT BETWEEN', 'IS NULL', 'IS NOT NULL', 'IS EMPTY', 'IS NOT EMPTY'];\n }\n var regexStr;\n var regex;\n var matchValue;\n for (var i = 0, iLen = operators.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(operators[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Operators', operators[i].toLowerCase()]);\n return operators[i].length;\n }\n }\n var lastPasrser = this.parser[this.parser.length - 1];\n if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {\n for (var i = 0, iLen = conditions.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(conditions[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Conditions', conditions[i].toLowerCase()]);\n return conditions[i].length;\n }\n }\n }\n for (var i = 0, iLen = subOp.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(subOp[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['SubOperators', subOp[i].toLowerCase()]);\n return subOp[i].length;\n }\n }\n if (/^\\(/.exec(sqlString)) {\n this.parser.push(['Left', '(']);\n return 1;\n }\n if (/^\\)/.exec(sqlString)) {\n this.parser.push(['Right', ')']);\n return 1;\n }\n if (/^(true|false)/.exec(sqlString)) {\n matchValue = /^(true|false)/.exec(sqlString)[0];\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n if (/^null/.exec(sqlString)) {\n matchValue = /^null/.exec(sqlString)[0];\n this.parser.push(['String', null]);\n return matchValue.length;\n }\n if (/^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {\n matchValue = /^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {\n matchValue = /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length + 2;\n }\n if (this.checkNumberLiteral(sqlString, sqlLocale)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExValue = /^[0-9]+(\\.[0-9]+)$/.exec(sqlString);\n if (regExValue) {\n matchValue = regExValue[0];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n }\n var singleString = this.getSingleQuoteString(sqlString);\n if (singleString !== '') {\n matchValue = singleString;\n if (matchValue[matchValue.length - 2] === '(') {\n var isClosed = false;\n for (var j = matchValue.length; j < sqlString.length; j++) {\n matchValue += sqlString[j];\n if (sqlString[j] === ')') {\n isClosed = true;\n }\n if (isClosed && sqlString[j] === '\\'') {\n break;\n }\n }\n }\n else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue)) {\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n var doubleString = this.getDoubleQuoteString(sqlString);\n if (doubleString !== '') {\n matchValue = doubleString;\n this.parser.push(['DoubleString', matchValue]);\n return matchValue.length;\n }\n if (/^\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n if (/^-?\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^-?\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n return 1;\n };\n QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {\n var start = sqlString.indexOf('\"');\n if (start === 0) {\n var end = sqlString.indexOf('\"', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {\n if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||\n sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {\n var start = sqlString.indexOf('\\'');\n if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {\n var end = sqlString.indexOf('\\'', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {\n if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {\n var tempMatchValue = matchValue.substring(0, matchValue.length - 1);\n var tempStr = sqlString.replace(tempMatchValue, '');\n var singleString = this.getSingleQuoteString(tempStr, true);\n if (singleString !== '') {\n var parsedValue = singleString.substring(1, singleString.length);\n matchValue += parsedValue;\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n }\n return matchValue;\n };\n QueryBuilder.prototype.checkLiteral = function () {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.checkNumberLiteral = function (sqlString, sqlLocale) {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n if (/^[0-9]+(?:\\.[0-9]+)$/.exec(sqlString)) {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = sqlLocale ? this.l10n.getConstant('Between').toLowerCase() : 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n }\n return false;\n };\n QueryBuilder.prototype.getOperator = function (value, operator, sqlLocale) {\n var operators = {\n '=': 'equal', '!=': 'notequal', '<': 'lessthan', '>': 'greaterthan', '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal', 'in': 'in', 'not in': 'notin', 'between': 'between', 'not between': 'notbetween',\n 'is empty': 'isempty', 'is null': 'isnull', 'is not null': 'isnotnull', 'is not empty': 'isnotempty'\n };\n if (sqlLocale) {\n var localeOperator = Object.keys(this.sqlOperators);\n for (var i = 0; i < localeOperator.length; i++) {\n if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {\n if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';\n }\n else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';\n }\n else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';\n }\n return localeOperator[i];\n }\n }\n return null;\n }\n if (value) {\n if (value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator === 'not like') ? 'notcontains' : 'contains';\n }\n else if (value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator === 'not like') ? 'notstartswith' : 'startswith';\n }\n else if (value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator === 'not like') ? 'notendswith' : 'endswith';\n }\n }\n else {\n if (operator === 'not like') {\n return 'notequal';\n }\n else if (operator === 'like') {\n return 'equal';\n }\n }\n return operators[\"\" + operator];\n };\n QueryBuilder.prototype.getTypeFromColumn = function (rules) {\n var columnData = this.getColumn(rules.field);\n if (!isNullOrUndefined(columnData)) {\n return columnData.type;\n }\n return null;\n };\n QueryBuilder.prototype.getLabelFromColumn = function (field) {\n var label = '';\n var l = 0;\n if (this.separator !== '') {\n var fieldColl = field.split(this.separator);\n for (var i = 0; i < fieldColl.length; i++) {\n label += this.getLabelFromField(fieldColl, i + 1);\n l++;\n if (l < fieldColl.length) {\n label += this.separator;\n }\n }\n return label;\n }\n else {\n var labelItem = this.getColumn(field).label;\n return labelItem;\n }\n };\n QueryBuilder.prototype.getLabelFromField = function (field, startIdx) {\n var fieldName = '';\n var j = 0;\n for (var k = 0; k < startIdx; k++) {\n fieldName += field[k];\n j++;\n if (j < startIdx) {\n fieldName += this.separator;\n }\n }\n return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';\n };\n QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {\n var j;\n var jLen;\n var rule;\n var subRules;\n var numVal = [];\n var strVal = [];\n var k;\n var kLen;\n var l;\n var lLen;\n var grpCount;\n var operator;\n var isLeftOpened = false;\n var isNotOpened = false;\n for (var i = 0, iLen = parser.length; i < iLen; i++) {\n if (parser[i][0] === 'Literal') {\n var column = this.getColumn(parser[i][1]);\n rule = { label: (column && column.label) ? column.label : parser[i][1], field: parser[i][1] };\n if (parser[i + 1][0] === 'SubOperators') {\n if (parser[i + 1][1].indexOf('null') > -1 || parser[i + 1][1].indexOf('empty') > -1) {\n rule.operator = this.getOperator(' ', parser[i + 1][1], sqlLocale);\n rule.value = null;\n rule.type = this.getTypeFromColumn(rule);\n }\n else {\n if (parser.length === 3 && parser[2][0] === 'String' && (parser[2][1]).indexOf('%') !== -1) {\n var oper = parser[i + 2][1] ? parser[i + 2][1].replace(/'/g, '') : parser[i + 2][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n else {\n var oper = parser[i + 3][1] ? parser[i + 3][1].replace(/'/g, '') : parser[i + 3][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n }\n operator = parser[i + 1][1];\n i++;\n j = i + 1;\n jLen = iLen;\n if (sqlLocale && rule.operator === 'contains' || rule.operator === 'startswith' || rule.operator === 'endswith') {\n operator = 'like';\n }\n else if (sqlLocale && rule.operator === 'notcontains' || rule.operator === 'notstartswith' || rule.operator === 'notendswith') {\n operator = 'not like';\n }\n else if (sqlLocale) {\n operator = rule.operator;\n }\n for (j = i + 1; j < jLen; j++) {\n if (operator.indexOf('between') < 0 && parser[j][0] === 'Left') {\n isLeftOpened = true;\n }\n else if (parser[j][0] === 'Right' && isLeftOpened) {\n i = j;\n isLeftOpened = false;\n break;\n }\n else {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n break;\n }\n if (operator.indexOf('like') > -1 && parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n val = val ? val.replace(/%/g, '') : parser[j][1];\n rule.value = val;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1) {\n if (parser[j][0] === 'Literal' || parser[j][0] === 'Left') {\n break;\n }\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n else {\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n }\n if (operator.indexOf('like') < 0) {\n if (parser[j - 1][0] === 'Number') {\n rule.value = numVal;\n rule.type = 'number';\n }\n else if (parser[j - 1][0] === 'String') {\n rule.value = strVal;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1 && parser[j - 1][0] === 'Conditions') {\n if (strVal.length !== 0) {\n rule.value = strVal;\n rule.type = 'string';\n }\n else {\n rule.value = numVal;\n rule.type = 'number';\n }\n }\n numVal = [];\n strVal = [];\n rule.type = this.getTypeFromColumn(rule);\n }\n if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {\n rule.condition = parser[i + 1][1];\n }\n }\n else if (parser[i + 1][0] === 'Operators') {\n rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);\n if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isempty';\n }\n else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isnotempty';\n }\n if (parser[i + 2][0] === 'Number') {\n rule.type = 'number';\n rule.value = Number(parser[i + 2][1]);\n }\n else {\n rule.type = 'string';\n var val = parser[i + 2][1];\n if (val && val[0] === '\\'') {\n val = val.substring(1, val.length - 1);\n }\n rule.value = val;\n }\n if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {\n rule.condition = parser[i + 3][1];\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n rules.rules.push(rule);\n }\n else if (parser[i][0] === 'Left') {\n if (!(parser[0][0] === 'Left') && (parser[i - 1][1] === 'not' || sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i - 1][1])) {\n isNotOpened = true;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n if (this.enableNotCondition) {\n subRules = { condition: 'and', rules: [], not: false };\n }\n else {\n subRules = { condition: 'and', rules: [] };\n }\n grpCount = 0;\n kLen = rules.rules.length;\n for (k = 0; k < kLen; k++) { //To get the group position\n if (rules.rules[k].rules) {\n grpCount++;\n }\n }\n levelColl.push(grpCount);\n rules.rules.push(subRules);\n subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);\n return rules;\n }\n else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {\n if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {\n rules.not = true;\n }\n else {\n rules.condition = parser[i][1];\n }\n }\n else if (parser[i][0] === 'Right') {\n if (isNotOpened && parser[i + 1][0] === 'Right') {\n isNotOpened = false;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n levelColl.pop(); //To get the parent Group\n rules = this.rule;\n lLen = levelColl.length;\n for (l = 0; l < lLen; l++) {\n rules = this.findGroupByIdx(levelColl[l], rules, l === 0);\n }\n return this.processParser(this.parser, rules, levelColl, sqlLocale);\n }\n }\n return rules;\n };\n /**\n * Clone the Group\n *\n * @param {Element | string} target - 'target' to be passed to clone the group.\n * @returns {void}\n */\n QueryBuilder.prototype.groupClone = function (target) {\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var targetGrpId = target.id.replace(this.element.id + '_', '');\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var group = this.getGroup(targetGrpId);\n this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);\n this.groupIndex = -1;\n this.groupCloned = false;\n };\n QueryBuilder.prototype.ruleClone = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var getRule = this.getRule(target);\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');\n for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {\n if (ruleElem.id === ruleElemColl[i].id) {\n this.ruleIndex = i;\n }\n }\n if (this.enableSeparateConnector) {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupId);\n }\n else {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value\n }], groupId);\n }\n this.ruleIndex = -1;\n };\n QueryBuilder.prototype.ruleLock = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));\n if (ruleElem.classList.contains('e-disable')) {\n rule.isLocked = false;\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });\n ruleElem.classList.remove('e-disable');\n this.disableRuleControls(target, ruleElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockRule'));\n }\n else {\n rule.isLocked = true;\n if (this.lockItems.indexOf(ruleElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);\n }\n ruleElem.classList.add('e-disable');\n this.disableRuleControls(target, ruleElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockRule'));\n }\n };\n QueryBuilder.prototype.groupLock = function (target) {\n var groupElem = closest(target, '.e-group-container');\n var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));\n var isRoot = groupElem.id.indexOf('group0') > -1;\n if (groupElem.classList.contains('e-disable')) {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = false;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = false;\n }\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });\n groupElem.classList.remove('e-disable');\n this.disableHeaderControls(target, groupElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockGroup'));\n this.updateLockItems();\n }\n else {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = true;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = true;\n }\n if (this.lockItems.indexOf(groupElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);\n }\n groupElem.classList.add('e-disable');\n this.disableHeaderControls(target, groupElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));\n }\n };\n QueryBuilder.prototype.updateLockItems = function () {\n for (var i = 0; i < this.lockItems.length; i++) {\n var idColl = this.lockItems[i].split('_');\n if (idColl.length > 2) {\n var ruleElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = ruleElem.querySelector('.e-lock-rule-btn');\n ruleElem = closest(target, '.e-rule-container');\n if (!ruleElem.classList.contains('e-disable')) {\n this.ruleLock(target);\n }\n }\n else {\n var groupElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = groupElem.querySelector('.e-lock-grp-btn');\n groupElem = closest(target, '.e-group-container');\n if (!groupElem.classList.contains('e-disable')) {\n this.groupLock(target);\n }\n }\n }\n };\n QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {\n var andElem = groupElem.querySelectorAll('.e-btngroup-and');\n var orElem = groupElem.querySelectorAll('.e-btngroup-or');\n var notElem = groupElem.querySelectorAll('.e-qb-toggle');\n var addElem = groupElem.querySelectorAll('.e-add-btn');\n var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');\n var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');\n var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');\n var groupContElem = groupElem.querySelectorAll('.e-group-container');\n var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');\n var addGroup = groupElem.querySelectorAll('.e-add-group-btn');\n for (var i = 0; i < andElem.length; i++) {\n if (isDisabled) {\n if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {\n groupContElem[i].classList.add('e-disable');\n }\n andElem[i].disabled = true;\n orElem[i].disabled = true;\n if (addElem[i]) {\n addElem[i].disabled = true;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = true;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = true;\n }\n if (notElem[i]) {\n notElem[i].disabled = true;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = true;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = true;\n }\n andElem[i].parentElement.classList.add('e-disabled');\n if (lockElem[i] && lockElem[i] !== target) {\n lockElem[i].disabled = true;\n lockElem[i].children[0].classList.remove('e-unlock');\n lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (groupContElem[i]) {\n groupContElem[i].classList.remove('e-disable');\n }\n andElem[i].disabled = false;\n orElem[i].disabled = false;\n if (addElem[i]) {\n addElem[i].disabled = false;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = false;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = false;\n }\n if (lockElem[i]) {\n lockElem[i].disabled = false;\n }\n if (notElem[i]) {\n notElem[i].disabled = false;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = false;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = false;\n }\n andElem[i].parentElement.classList.remove('e-disabled');\n if (lockElem[i]) {\n lockElem[i].children[0].classList.remove('e-lock');\n }\n if (lockElem[i]) {\n lockElem[i].children[0].classList.add('e-unlock');\n }\n }\n }\n this.disableRuleControls(target, groupElem, isDisabled);\n };\n QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {\n var disableComponents = function (elements, componentGetter, isDisabled) {\n elements.forEach(function (element) {\n var component = componentGetter(element);\n if ('enabled' in component) {\n component.enabled = !isDisabled;\n }\n else if ('disabled' in component) {\n component.disabled = isDisabled;\n }\n });\n };\n var elements = {\n ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),\n numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),\n text: groupElem.querySelectorAll('.e-control.e-textbox'),\n date: groupElem.querySelectorAll('.e-control.e-datepicker'),\n checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),\n radio: groupElem.querySelectorAll('.e-control.e-radio'),\n multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),\n deleteElem: groupElem.querySelectorAll('.e-rule-delete'),\n lockElem: groupElem.querySelectorAll('.e-lock-rule'),\n cloneElem: groupElem.querySelectorAll('.e-clone-rule'),\n ruleElem: groupElem.querySelectorAll('.e-rule-container'),\n ddTree: groupElem.querySelectorAll('.e-control.e-dropdowntree')\n };\n elements.deleteElem.forEach(function (elem, i) {\n if (isDisabled) {\n if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {\n elements.ruleElem[i].classList.add('e-disable');\n }\n elements.deleteElem[i].disabled = true;\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = true;\n }\n if (elements.lockElem[i] !== target) {\n elements.lockElem[i].disabled = true;\n elements.lockElem[i].children[0].classList.remove('e-unlock');\n elements.lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (elements.ruleElem[i]) {\n elements.ruleElem[i].classList.remove('e-disable');\n }\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = false;\n }\n elements.deleteElem[i].disabled = false;\n elements.lockElem[i].disabled = false;\n elements.lockElem[i].children[0].classList.remove('e-lock');\n elements.lockElem[i].children[0].classList.add('e-unlock');\n }\n });\n disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);\n disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);\n disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);\n disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);\n disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);\n disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);\n disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);\n disableComponents(elements.ddTree, function (elem) { return getComponent(elem, 'dropdowntree'); }, isDisabled);\n };\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"beforeChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"ruleChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drop\", void 0);\n __decorate([\n Complex({}, ShowButtons)\n ], QueryBuilder.prototype, \"showButtons\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"summaryView\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowValidation\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"fieldMode\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"fieldModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"operatorModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"valueModel\", void 0);\n __decorate([\n Property()\n ], QueryBuilder.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"dataSource\", void 0);\n __decorate([\n Property('Horizontal')\n ], QueryBuilder.prototype, \"displayMode\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"sortDirection\", void 0);\n __decorate([\n Property(5)\n ], QueryBuilder.prototype, \"maxGroupCount\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"matchCase\", void 0);\n __decorate([\n Property(0)\n ], QueryBuilder.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableNotCondition\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"addRuleToNewGroups\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"autoSelectField\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"autoSelectOperator\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableSeparateConnector\", void 0);\n __decorate([\n Complex({ condition: 'and', rules: [] }, Rule)\n ], QueryBuilder.prototype, \"rule\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowDragAndDrop\", void 0);\n QueryBuilder = __decorate([\n NotifyPropertyChanges\n ], QueryBuilder);\n return QueryBuilder;\n}(Component));\nexport { QueryBuilder };\nvar LevelColl = /** @class */ (function () {\n function LevelColl() {\n }\n return LevelColl;\n}());\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar QueryLibrary = /** @class */ (function () {\n function QueryLibrary(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n QueryLibrary.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n QueryLibrary.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('query-library', this.queryLibrary, this);\n this.parent.on('destroyed', this.destroy, this);\n };\n QueryLibrary.prototype.removeEventListener = function () {\n this.parent.off('query-library', this.queryLibrary);\n this.parent.off('destroyed', this.destroy);\n };\n QueryLibrary.prototype.queryLibrary = function (args) {\n switch (args.prop) {\n case 'getMongoFromRules':\n args.value['obj']['mongoQuery'] = this.getMongoFromRules(args.value['rule'], args.value['mongoQuery']);\n break;\n case 'mongoParser':\n this.mongoParser(args.value['mongoQuery'], args.value['rule'], args.value['mongoLocale']);\n break;\n case 'getParameterSql':\n args.value['obj']['sql'] = this.getParameterSql(args.value['rule']);\n break;\n case 'getNamedParameterSql':\n args.value['obj']['sql'] = this.getNamedParameterSql(args.value['rule']);\n break;\n case 'convertParamSqlToSql':\n args.value['obj']['sql'] = this.convertParamSqlToSql(args.value['sql']);\n break;\n case 'convertNamedParamSqlToSql':\n args.value['obj']['sql'] = this.convertNamedParamSqlToSql(args.value['sql']);\n break;\n }\n };\n QueryLibrary.prototype.getMongoFromRules = function (rule, mongoQuery) {\n mongoQuery = '{';\n if (rule.condition === 'or') {\n mongoQuery += '\"$or\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += '\"$and\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n mongoQuery += '}';\n return mongoQuery;\n };\n QueryLibrary.prototype.getOperatorFromMongoOperator = function (operator) {\n var operatorValue;\n switch (operator) {\n case '$ne':\n operatorValue = 'notequal';\n break;\n case '$gt':\n operatorValue = 'greaterthan';\n break;\n case '$gte':\n operatorValue = 'greaterthanorequal';\n break;\n case '$lt':\n operatorValue = 'lessthan';\n break;\n case '$lte':\n operatorValue = 'lessthanorequal';\n break;\n case '$nin':\n operatorValue = 'notin';\n break;\n }\n return operatorValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.convertMongoQuery = function (rules, mongoQuery) {\n var _this = this;\n var i = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.forEach(function (item) {\n i++;\n mongoQuery += '{';\n if (item.rules !== undefined) {\n if (item.condition === 'or') {\n mongoQuery += ' \"$or\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += ' \"$and\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n }\n var itVal = item.type === 'string' && item.operator !== 'in' && item.operator !== 'notin' && item.value && item.value.trim() !== '' ? item.value.replace(/'/g, '\\\\') : '';\n if (item.type === 'string' && (item.operator === 'in' || item.operator === 'notin') && item.value && item.value.length === 1) {\n itVal = item.value[0].replace(/'/g, '\\\\');\n }\n var field = item.field ? item.field.substring(0) : '';\n switch (item.operator) {\n case 'contains':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '\"}';\n break;\n case 'notcontains':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '\"}}';\n break;\n case 'startswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"^' + itVal + '\"}';\n break;\n case 'notstartswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"^' + item.value + '\"}}';\n break;\n case 'endswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '$\"}';\n break;\n case 'notendswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '$\"}}';\n break;\n case 'isnull':\n mongoQuery += '\"' + field + '\": null';\n break;\n case 'isnotnull':\n mongoQuery += '\"' + field + '\":{\"$ne\": null}';\n break;\n case 'isempty':\n mongoQuery += '\"' + field + '\": \"\"';\n break;\n case 'isnotempty':\n mongoQuery += '\"' + field + '\":{\"$ne\": \"\"}';\n break;\n case 'equal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":\"' + itVal + '\"';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":\"' + item.value + '\"';\n }\n else if (item.type === 'boolean') {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n else {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n break;\n case 'notequal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + itVal + '\"}';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + item.value + '\"}';\n }\n else {\n mongoQuery += '\"' + field + '\":{\"$ne\":' + item.value + '}';\n }\n break;\n case 'in':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$in\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value + ']}';\n }\n }\n break;\n case 'notin':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value + ']}';\n }\n }\n break;\n case 'greaterthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gt\": \"' + item.value + '\"}';\n }\n break;\n case 'greaterthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gte\": \"' + item.value + '\"}';\n }\n break;\n case 'between':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": {\"$gte\":' + item.value[0] + ', \"$lte\":' + item.value[1] + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": {\"$gte\": \"' + item.value[0] + '\", \"$lte\": \"' + item.value[1] + '\"}';\n }\n break;\n case 'notbetween':\n if (item.type === 'number') {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\":' + item.value[0] + '}}, {\"' + field + '\": {\"$gt\":' + item.value[1] + '}}]';\n }\n else {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\": \"' + item.value[0] + '\"}}, {\"' + field + '\": {\"$gt\": \"' + item.value[1] + '\"}}]';\n }\n break;\n case 'lessthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lt\": \"' + item.value + '\"}';\n }\n break;\n case 'lessthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lte\": \"' + item.value + '\"}';\n }\n break;\n }\n mongoQuery += '}';\n if (rules.length !== i) {\n mongoQuery += ',';\n }\n });\n return mongoQuery;\n };\n QueryLibrary.prototype.mongoParser = function (mongoQuery, rule, mongoLocale) {\n var mongoList;\n if (Object.keys(mongoQuery).indexOf('$and') > -1) {\n mongoList = mongoQuery['$and'];\n rule.condition = 'and';\n }\n else if (Object.keys(mongoQuery).indexOf('$or') > -1) {\n mongoList = mongoQuery['$or'];\n rule.condition = 'or';\n }\n rule.rules = [];\n this.mongoRecursion(mongoList, rule.rules, mongoLocale);\n };\n QueryLibrary.prototype.mongoRecursion = function (mongoList, rules, mongoLocale) {\n var operatorValue;\n var type;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var stringValue;\n var key;\n var betweenValue;\n var fieldType;\n var condition;\n var value;\n var subRules;\n var rule;\n var keyObj;\n var ruleValue;\n for (var i = 0, len = mongoList.length; i < len; i++) {\n var betweenOperatorArray = [];\n var inOperatorArray = [];\n condition = Object.keys(mongoList[i])[0];\n value = mongoList[i][condition];\n if (condition === '$and') {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n else if (condition === '$or') {\n var notBetween = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var innerObject = [];\n var keys = [];\n var firstKey = [];\n var secondKey = [];\n var innerKeys = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var firstValue = [];\n var secondValue = [];\n var innerFirstValue = [];\n var innerSecondValue = [];\n if (Array.isArray(value) && value.length === 2) {\n keys = Object.keys(value);\n innerFirstValue = value[keys[0]];\n innerSecondValue = value[keys[1]];\n if (typeof innerFirstValue === 'object') {\n innerObject = Object.keys(innerFirstValue)[0];\n innerKeys = Object.keys(innerFirstValue[Object.keys(innerFirstValue)[0]]);\n firstKey = innerKeys[0];\n secondKey = Object.keys(innerSecondValue[Object.keys(innerSecondValue)[0]])[0];\n if (firstKey === '$lt' && secondKey === '$gt') {\n operatorValue = 'notbetween';\n // eslint-disable-next-line security/detect-object-injection\n firstValue = innerFirstValue[innerObject][firstKey];\n // eslint-disable-next-line security/detect-object-injection\n secondValue = innerSecondValue[innerObject][secondKey];\n type = typeof firstValue === 'number' ? 'number' : 'date';\n ruleValue = [firstValue, secondValue];\n rule = { field: innerObject, label: innerObject, value: ruleValue, operator: operatorValue, type: type };\n rules.push(rule);\n notBetween = true;\n }\n }\n }\n if (!notBetween) {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n }\n else {\n value = mongoList[i][condition];\n if (value === null) { // isnull operator\n operatorValue = 'isnull';\n }\n if (typeof value === 'boolean') { // boolean type values\n operatorValue = 'equal';\n type = 'boolean';\n ruleValue = value;\n }\n if (typeof (value) === 'number') {\n ruleValue = value;\n type = 'number';\n operatorValue = 'equal';\n }\n else if (typeof (value) === 'object' && value !== null) {\n keyObj = Object.keys(value);\n for (var i_1 = 0; i_1 < keyObj.length; i_1++) {\n key = keyObj[i_1];\n stringValue = (value)[keyObj[i_1]];\n if (key === '$ne' && isNullOrUndefined(stringValue)) { // not null operator\n operatorValue = 'isnotnull';\n ruleValue = null;\n }\n if (key === '$ne' && typeof stringValue === 'boolean') { // not equal operator for boolean\n operatorValue = 'notequal';\n ruleValue = stringValue;\n type = 'boolean';\n }\n if (keyObj.length >= 2 && keyObj[i_1]) {\n if (typeof (stringValue) == 'object') { // between and notbetween operators\n operatorValue = 'notbetween';\n condition = Object.keys(stringValue)[0];\n betweenValue = [Object.keys(stringValue[condition])[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n betweenOperatorArray.push(stringValue[condition][betweenValue]);\n type = 'number';\n }\n else {\n operatorValue = 'between';\n betweenOperatorArray.push(stringValue);\n }\n if (typeof (stringValue) === 'number') {\n type = 'number';\n }\n }\n else if (typeof (stringValue) === 'object' && stringValue !== null) { // \"in\" and \"notin\" operator\n if (key === '$not' && Object.keys(stringValue)[0] === '$regex') {\n if (stringValue['$regex'].indexOf('^') > -1) {\n operatorValue = 'notstartswith';\n ruleValue = stringValue['$regex'].replace('^', '');\n }\n else if (stringValue['$regex'].indexOf('$') > -1) {\n operatorValue = 'notendswith';\n ruleValue = stringValue['$regex'].replace('$', '');\n }\n else {\n operatorValue = 'notcontains';\n ruleValue = stringValue['$regex'];\n }\n }\n else {\n operatorValue = key === '$in' ? 'in' : 'notin';\n inOperatorArray = stringValue;\n type = typeof (stringValue[0]) === 'number' ? 'number' : 'string';\n }\n }\n else if (typeof (stringValue) === 'number') { // number type values\n operatorValue = this.getOperatorFromMongoOperator(key);\n type = 'number';\n ruleValue = stringValue;\n }\n if (typeof (stringValue) === 'string') { // string type values\n if (key === '$regex') {\n operatorValue = 'contains';\n ruleValue = stringValue;\n type = 'string';\n }\n if (key === '$ne') { // not equal\n if (stringValue !== null && stringValue.length > 0 && isNaN(Date.parse(stringValue))) {\n operatorValue = 'notequal';\n ruleValue = stringValue;\n }\n else if (isNullOrUndefined(stringValue)) { // is not null operator\n operatorValue = 'isnotnull';\n ruleValue = stringValue;\n }\n else if (stringValue === '') { // is not empty operator\n operatorValue = 'isnotempty';\n ruleValue = stringValue;\n }\n type = 'string';\n }\n if (stringValue.indexOf('^') > -1) {\n operatorValue = 'startswith';\n ruleValue = stringValue.replace('^', '');\n type = 'string';\n }\n if (stringValue.indexOf('$') > -1 && key !== '$not') {\n operatorValue = 'endswith';\n ruleValue = stringValue.replace('$', '');\n type = 'string';\n }\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (column.field === condition) {\n fieldType = column.type;\n break;\n }\n }\n if (!isNaN(Date.parse(stringValue)) || fieldType === 'date') { // Date type operators\n operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);\n type = 'date';\n ruleValue = stringValue;\n }\n }\n }\n }\n else if (value && typeof (value) === 'string' && !isNaN(Date.parse(value))) {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'date';\n }\n else if (typeof (value) === 'string' && value !== '' && value !== 'true' && value !== 'false') {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'string';\n }\n else if (typeof (value) === 'string' && value === '') {\n operatorValue = 'isempty';\n ruleValue = value;\n type = 'string';\n }\n if (betweenOperatorArray && betweenOperatorArray.length > 1) { // between opertor value\n rule = { field: condition, label: condition, value: betweenOperatorArray, operator: operatorValue, type: type };\n }\n else if (inOperatorArray && inOperatorArray.length > 1) { // in operator value\n rule = { field: condition, label: condition, value: inOperatorArray, operator: operatorValue, type: type };\n }\n else {\n rule = { field: condition, label: condition, value: ruleValue, operator: operatorValue, type: type };\n }\n rules.push(rule);\n operatorValue = '';\n }\n }\n };\n QueryLibrary.prototype.convertParamSqlToSql = function (sql) {\n var paramSql = sql.sql;\n var paramValues = sql.params;\n var parts = paramSql.split('?');\n var normalSql = parts[0];\n for (var i = 0; i < paramValues.length; i++) {\n normalSql += (typeof (paramValues[i]) === 'string' ? \"'\" + paramValues[i] + \"'\" + parts[i + 1] : paramValues[i] + parts[i + 1]);\n }\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.convertNamedParamSqlToSql = function (sql) {\n var namedParamSql = sql.sql;\n var params = sql.params;\n var normalSql = namedParamSql;\n Object.keys(params).forEach(function (paramName) {\n var paramValue = params[paramName];\n paramName = ':' + paramName;\n normalSql = normalSql.replace(paramName, typeof (paramValue) === 'string' ? \"'\" + paramValue + \"'\" : String(paramValue));\n });\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.getParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, false);\n return this.getParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['ruleVal']);\n };\n QueryLibrary.prototype.getNamedParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, true);\n return this.getNamedParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['namedRuleVal']);\n };\n QueryLibrary.prototype.getParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n QueryLibrary.prototype.getNamedParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.updateRuleValue = function (rule, isNamedParameter) {\n var ruleVal = [];\n var namedRuleVal = {};\n var namedParameters = [];\n return this.updateValue(rule.rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n };\n QueryLibrary.prototype.updateValue = function (rules, isNamedParameter, ruleVal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal, namedParameters) {\n if (isNullOrUndefined(rules)) {\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n }\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].rules) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateValue(rules[i].rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n ruleVal = value['ruleVal'];\n namedRuleVal = value['namedRuleVal'];\n }\n else {\n var namedField = void 0;\n if (rules[i].value instanceof Array) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var j = 0; j < (rules[i].value).length; j++) {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (!isNullOrUndefined(rules[i].value[j])) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n else {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value[j] = ':' + namedField;\n }\n else {\n rules[i].value[j] = '?';\n }\n }\n }\n else {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (rules[i].operator.indexOf('null') < 1) {\n if (rules[i].type !== 'string' || (rules[i].type === 'string' && (rules[i].value !== '' || rules[i].value === 0))) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (rules[i].operator.indexOf('empty') < 1) {\n var value = rules[i].value.toString();\n switch (rules[i].operator) {\n case 'startswith':\n case 'notstartswith':\n value = value + '%';\n break;\n case 'endswith':\n case 'notendswith':\n value = '%' + value;\n break;\n case 'contains':\n case 'notcontains':\n value = '%' + value + '%';\n break;\n }\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(value);\n }\n }\n else {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push('');\n }\n if (rules[i].operator === 'isempty') {\n rules[i].operator = 'equal';\n }\n else {\n rules[i].operator = 'notequal';\n }\n }\n }\n else {\n if (!isNullOrUndefined(rules[i].value)) {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = rules[i].value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(rules[i].value);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value = ':' + namedField;\n }\n else {\n rules[i].value = '?';\n }\n }\n }\n }\n }\n }\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n };\n QueryLibrary.prototype.getNamedParameter = function (field, namedParameters) {\n var newField = null;\n if (namedParameters.length > 0) {\n for (var i = namedParameters.length - 1; i >= 0; i--) {\n var currField = namedParameters[i];\n if (currField.indexOf(field) > -1) {\n var idx = parseInt(currField.split('_')[1], 10) + 1;\n newField = field + '_' + idx;\n namedParameters.push(newField);\n break;\n }\n }\n }\n if (!newField) {\n newField = field + '_1';\n namedParameters.push(newField);\n }\n return newField;\n };\n QueryLibrary.prototype.getModuleName = function () {\n return 'query-library';\n };\n return QueryLibrary;\n}());\nexport { QueryLibrary };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Columns","ChildProperty","Property","isRequired","min","max","Number","MAX_VALUE","Rule","Collection","Value","ShowButtons","Component","QueryBuilder","getPersistData","addOnPersist","reset","isImportRules","fragment","grpContainer","grpHeader","grpBody","bodyElem","element","querySelector","inputElements","querySelectorAll","batchSize","currentIndex","processBatch","endIndex","Math","tooltip","className","indexOf","getComponent","destroy","parentElement","e","console","warn","requestAnimationFrame","textContent","document","createDocumentFragment","createElement","attrs","class","appendChild","headerTemplate","isRoot","enableNotCondition","toggleElements","removeClass","levelColl","id","setProperties","rule","condition","not","rules","disableRuleCondition","getWrapper","getModuleName","requiredModules","modules","push","member","args","GetRootColumnName","field","isNullOrUndefined","separator","split","initialize","_this","dataColl","type_1","value_1","columnKeys_1","keys","cols","categories_1","groupBy_1","isDate_1","validateObj_1","columns","columnSort","forEach","column","updateCustomOperator","type","isNaN","Date","parse","getTime","validation","category","l10n","getConstant","operators","isLocale","isCustomOprCols","customOperators","fields","text","value","groupBy","updateSubFieldsFromColumns","len","label","updateSubFields","sortDirection","processColumnsInBatches","setTimeout","trigger","endIdx","processedCount","col","updateSubFieldsLarge","processNextBatch","colLength","j","data","columnKeys","compField","result","resData","sampCol","from","this_1","_loop_1","operator_1","values","sqlIdx","operColl","map","join","valueIdx","focusEventHandler","event","clickEventHandler","forIdValue","group","ariaChecked","targetValue","tagName","animation","Animation","duration","delay","renderSummary","txtareaElem","summaryElem","getElementById","animate","name","groupElem","style","display","getSqlFromRules","height","scrollHeight","mRules","actionButton","deleteRule","cloneRuleBtnClick","isRuleClicked","ruleClone","ruleLock","groupLock","cloneGrpBtnClick","groupCloned","groupClone","closest","deleteGroup","addGroupElement","extend","setGroupRules","renderSummaryCollapse","getAttribute","enableSeparateConnector","classList","contains","groupID","replace","getGroup","toggleElem","getElementsByClassName","addClass","cancel","toLowerCase","beforeSuccessCallBack","observedChangeArgs","beforeRules","andElem","orElem","getValidRules","getParentGroup","previousElementSibling","getRule","ruleID","filterRules","checked","selectBtn","showButtons","groupInsert","maxGroupCount","enableRtl","children","addRuleElement","appendRuleElem","parentId","action","ruleElem","elem","ruleListElem","select","setAttribute","ruleIdCounter","cloneRule","ruleIndex","index","tempRuleIndex","insertBefore","ruleTemplate","requestType","ruleTemplateFn","templateParser","templateID","getOperators","operatorFields","isReact","isAngular","templateColl","nodeType","isVue3","append","cloneNode","lockGroup","lockRule","cloneGroup","ruleDelete","allowDragAndDrop","renderReactTemplates","isRuleTemplate","isInitialLoad","prvtEvtTgrDaD","addRuleSuccessCallBack","trgt","act","pId","isRlTmp","passedRule_1","isVertical","displayMode","getColumn","newRule","operator","selectedColumn","actionArgs","createArgs","spanElement","add","previousRuleElem","processAdjacentElements","updateAddedRule","ruleCount","applyFieldComponent","isLocked","lockRuleTarget","processConnectorElements","prevRule","ruleContainer","headerTemplateFn","handleOrphanedRuleElement","prevRuleContainer","prevElem","notCondition","undefined","handleOrphanedConnectorElement","setMultiConnector","fieldMode","applyDropdownListComponent","applyDropdownTreeComponent","ddlValue","autoSelectField","ddlField","dataSource","placeholder","popupHeight","close","fieldClose","bind","change","changeField","open","popupOpen","cssClass","dropDownList","fieldModel","DropDownList","appendTo","ddlVal","getDataByValue","changeRule","itemData","dropdowntree","dummyDropdownTreeDs","updateDropdowntreeDS","child","expanded","selectable","showClearButton","changeOnBlur","treeSettings","expandOn","filtering","dropdownTreeFiltering","dropdownTreeClose","DropDownTree","getLabelFromColumn","proxy","srcElement","ruleElemID","hierarchicalData","ddTree","changeDataSource","matchedDataSource","nestedChildFilter","filter","filteredChild","treeObj","expandAll","refresh","node","matchedChildren","isMatchedNode","checkValue","parseInt","toString","template","isNewRuleAdded","enableSeparateCondition","custom","splice","changeRuleTemplate","parentGroup","previousColumn","detach","clearQBTemplate","operVal","renderToolTip","Tooltip","content","position","afterClose","beforeOpen","tooltipCloseElement","validateFields","dropDownTreeObj","isValid","allowValidation","excludeOprs","fieldElem","indexElem","valArray","dropDownObj","tempElem","ruleElemCln","validateRule","separateCondition","valElem","jLen","refreshLevelColl","refreshLevel","groupElement","level","obj","childElem","ruleList","iLen","groupCount","slice","groupTemplate","isConnector","inputElem","groupBtn","groupHdrElem","grpBodyElem","rulesElem","dragClsName","spanDragElement","aria-label","title","glueElem","role","labelElem","innerHTML","grpActElem","filterElem","cloneRuleBtnElem","cloneClsName","lockClsName","cloneLockBtnElem","clsName","delBtnElem","isGroup","isBtnClick","addGroupSuccess","eventTarget","conditionBtn_1","groupBtn_1","btnObj","dltGroupBtn","groupIdCounter","andInpElem","orInpElem","andLblElem","orLblElem","btnGroupId","groupDelete","Button","iconCss","rippleEffect","selector","childElems","grpLen","groupIndex","isLastGroup","tempGroupIndex","idx","parentNode","isMiddleGroup","lockBtnElem","isAddSuccess","addGroups","addRuleToNewGroups","cloneBtnElem","lockSpanElement","notElem","CheckBox","updatedRule","nextSibling","btnGroup","childNodes","newAndElem","newOrElem","nextElementSibling","args_1","onclick","DropDownButton","items","grpId","chgrpId","childGroupID","btnGroupElem","addHeaderDiv","disabled","isInitialRule","groupHdr","getRuleCollection","headerFn","enableSeparateConnectorInitialRule","nodeName","notifyChange","grpElement","ruleElement","format","getFormat","intl","formatDate","templateChange","isNotified","updateRules","grpElem","validateValue","prevOper","arrOper","grpEle","destroyControls","eventsArgs","changeValue","numericTextBoxObj","decimalSeparator","isNumInput","currentTarget","dateElement","rbValue","getInstance","NumericTextBox","getValue","getNumericObject","locale","getNumberParser","immediateModeDelay","window","clearInterval","timer","setInterval","filterValue","grID","rlID","ele","changeValueSuccessCallBack","setSecondDateMinFromFirst","valueIndex","operatorDropdownElement","operatorDropdown","firstDateElement","secondDateElement","firstDatePicker","secondDatePicker","nextDay","setDate","getDate","customArgs","isFieldChange","isDestroy","isFieldClose","item","ddl","popupObj","getItemData","isInteracted","previousItemData","prevItemData","previousItem","previousValue","ddtElem","ddt","oldValue","dataBind","destroySubFields","subFieldElem","isNotValueChange","ddlArgs","ddlObj","changeFilter","flt","dl","rl","tmpRl","dArg","operatorElem","selectedField","fieldChangeSuccess","changeOperator","opr","selectedIndex","operatorChangeSuccess","changeRuleValues","tempRule","tooltipElem","createSubFields","remove","subFieldValue","subFilterCounter","ruleId","subField","parentElem","currOper","prevValue","operatorList","operator_2","ddlIdx","ddlOperator","childElementCount","fieldObj","renderValues","oprElem","autoSelectOperator","operatorModel","isField","popup","inputElement","divElement","templateDestroy","templateElement","elemId","temp","templateElements","elementId","elements","getValues","original","fieldColl","fieldStr","dataObj","createNestedObject","lastIndex","k","getDistinctValues","nest","isNested","this_2","_loop_2","renderMultiSelect","selectedValue","ds","isFetched","isValues","multiSelectUserQuery","isGetNestedData","valueModel","multiSelectModel","query","multiSelectQuery","clone","Query","resolvedQuery","multiSelectObj","dataManager","DataManager","multiSelectValue","selectedRule","mode","width","closePopup","actionBegin","multiSelectOpen","MultiSelect","multiselectObj","incomingQuery","bindMultiSelectData","existingQuery","areQueriesSame","query1","query2","JSON","stringify","getMultiSelectData","dummyData","deferred","Deferred","userQuery","dataQuery","isRequestSent","executeQuery","hideSpinner","createSpinner","showSpinner","then","actual","newData","current","catch","reject","spinnerElem","Browser","isDevice","ms","processTemplate","onComplete","container","tempElements","write","templateArgs","writeResult","parentFieldObj","subFieldObjList","lastSubFieldObj","setDefaultValue","isArryValue","isNumber","renderStringValue","ruleValElem","selectedVal","columnData","isTemplate","isPublic","txtBox","input","textBoxModel","inputobj","TextBox","minWidth","renderNumberValue","numericTxt","selVal","txtInp","step","numericTextBoxModel","numeric","oninput","processValueString","numArr","strArr","kLen","parseDate","dParser","getDateParser","skeleton","formatOpt","renderControls","isRendered","length_1","processBoolValues","parsedDate","datePicker","place","formatObj","getLocale","parsedMinDate","datePickerModel","DatePicker","orgValue","isCheck","radiobutton","radioBtn","radioButtonModel","RadioButton","getOperatorIndex","getPreviousItemData","isRender","filtElem","getElementsByTagName","filtObj","isTempRendered","setColumnTemplate","inputLen","renderTemplate","observedActionArgs","actionBeginSuccessCallBack","Element","columnTemplateFn","valElemColl","updateValues","selectedDate","textboxValue","controlName","some","op","val","trim","radioBtnObj","isNotTrigger","valueContainer","elementCln","i_1","i_2","ruleValueUpdate","beforeRule","afterRule","previousRule","oper","arrOperator","dupSelectedValue","parseFloat","isObject","formatOptions","findGroupByIdx","groupIdx","ruleColl","dupRuleColl","unWireEvents","portals","qbDdlElems","ddlElem","targetInput","ddlInst","popupElement","addRules","groups","importRules","HTMLElement","parent_1","allContainers","topLevelGroups","initialID","lastGroupIndex","lastGroup","initWrapper","innerWidth","isPropChange","summaryView","isRefreshed","notGroupRtl","readonly","enableReadonly","button","buttons","contentElem","textElem","styles","editElem","divElem","collapseElem","executeLocal","sortByDesc","sortBy","onChangeNotGroup","checkNotGroup","orgRule","onPropertyChanged","newProp","oldProp","properties","_i","properties_1","enablePersistence","setRules","Internationalization","isReadonly","preRender","getUniqueID","defaultLocale","StartsWith","DoesNotStartWith","EndsWith","DoesNotEndWith","Contains","DoesNotContain","NotLike","Like","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","Between","NotBetween","In","NotIn","Remove","SelectField","SelectOperator","DeleteRule","DeleteGroup","AddGroup","AddCondition","Edit","ValidationMessage","SummaryViewTitle","OtherFields","AND","OR","NOT","SelectValue","IsEmpty","IsNotEmpty","IsNull","IsNotNull","True","False","AddButton","CloneGroup","LockGroup","CloneRule","LockRule","UnlockRule","UnlockGroup","L10n","parser","stringOperator","dateOperator","booleanOperator","numberOperator","equal","notequal","greaterthan","greaterthanorequal","lessthan","in","notin","lessthanorequal","startswith","endswith","between","notbetween","isnull","isnotnull","isempty","isnotempty","notstartswith","notendswith","notcontains","sqlOperators","toUpperCase","render","stringOper","numberOper","concat","initControl","executeDataManager","take","renderComplete","initializeDrag","draggable","Draggable","dragTarget","distance","helper","dragStart","dragStartHandler","drag","dragHandler","dragStop","dragStopHandler","isReplaceDragEle","isPreventSelect","abort","isDragScroll","enableAutoScroll","visualElement","cloneElement","currentStateTarget","offsetWidth","removeAttribute","draggedRule","isDragEventPrevent","body","dragElement","dragEventArgs","dragRuleID","dragGroupID","targetElem","rect","mouseY","distanceToBottom","threshold","getBoundingClientRect","distanceToTop","clientY","changedTouches","top","bottom","isPreventelem","dropEventArgs","groupId_2","groupId","targetGroup","tgrt","targetGrp","dropRuleID","dropGroupID","groupId_1","groupRule","ruleElems","ruleIds","dropInd","deleteRules","borderLineElem","templateCompiler","compile","error","wireEvents","wrapper","EventHandler","keyBoardHandler","boundResizeHandler","windowResizeHandler","addEventListener","removeEventListener","isParent","groupLevel","deleteGroupSuccessCallBack","nextElem","removeString","remRule","ruleElemColl","isTemplateRendered","isPlatformTemplate","deleteRuleSuccessCallBack","clnruleElem","previousElem","nextElem_1","err","i_3","lockGrpTarget","dragElemnet","keyCode","code","preventDefault","clearTemplate","isNewGroup","count","andGroup","orGroup","currentRule","isValueEmpty","ruleCondtion","getRules","isValidRule","notValue","customObj","isQuestion","lockedRule","isArray","deleteGroups","groupIdColl","getFilteredRecords","predicate","getPredicate","dataManagerQuery","where","ruleIdColl","getDataManagerQuery","pred","ruleValue","ignoreCase","isDateFilter","dateOperColl","pred2","and","or","matchCase","isTime","datePredicate","arrayPredicate","Predicate","localeString","cldrData","fieldParts","rootField","substring","setTime","date","isStart","setHours","startDate","endDate","nullValue","gte","currDate","setMinutes","setSeconds","isReset","renderGroup","tglBtnElem","renderRule","cloneElem","radioButtonObj","deleteGroupElems","addRuleGroupElems","removeRuleElems","elems","enableBtnGroup","isDateFunction","dateFunc","getSqlString","enableEscape","queryStr","sqlLocale","notPrefix","reduce","valueStr","custOper","ruleStr","ruleOpertor","ruleCondition","fieldName","isCustom","setRulesFromSql","sqlString","ruleModel","getRulesFromSql","sqlParser","processParser","allowEscape","getParameterizedSql","moduleLoader","loadedModules","notify","prop","onPropertyChange","sql","setParameterizedSql","sqlQuery","getParameterizedNamedSql","setParameterizedNamedSql","setMongoQuery","mongoQuery","mongoLocale","getMongoQuery","isCloneRule","parentGroupID","isCloneGroup","str","st","parseSqlStrings","matchValue","conditions","subOp","regexStr","test","RegExp","exec","lastPasrser","checkLiteral","checkNumberLiteral","regExValue","singleString","getSingleQuoteString","isClosed","checkCondition","combineSingleQuoteString","doubleString","getDoubleQuoteString","start","end","isBetween","parsedValue","tempMatchValue","tempStr","secParser","betweenParser","lastParser","betweenOperator","getOperator","localeOperator","=","!=","<",">","<=",">=","not in","not between","is empty","is null","is not null","is not empty","getTypeFromColumn","l","getLabelFromField","startIdx","lLen","grpCount","numVal","strVal","isLeftOpened","isNotOpened","subRules","pop","targetGrpId","lockItems","lockItem","disableRuleControls","newGroup","disableHeaderControls","updateLockItems","isDisabled","addElem","deleteGrpElem","lockElem","groupContElem","addCondition","addGroup","disableComponents","componentGetter","component","enabled","checkbox","radio","multiSelect","deleteElem","Event","Complex","NotifyPropertyChanges","options","groupCounter","Inject","CheckBoxSelection","QueryLibrary","parent","isDestroyed","on","queryLibrary","off","getMongoFromRules","mongoParser","getParameterSql","getNamedParameterSql","convertParamSqlToSql","convertNamedParamSqlToSql","convertMongoQuery","getOperatorFromMongoOperator","operatorValue","itVal","x","endsWith","mongoList","mongoRecursion","stringValue","betweenValue","fieldType","betweenOperatorArray","inOperatorArray","innerObject","secondKey","secondValue","innerFirstValue","innerSecondValue","notBetween","firstKey","firstValue","keyObj","_a","paramSql","paramValues","params","parts","normalSql","namedParamSql","paramName","paramValue","String","qbrule","qbRule","updateRuleValue","getParameterSQLVal","getNamedParameterSQLVal","isNamedParameter","updateValue","ruleVal","namedRuleVal","namedParameters","namedField","getNamedParameter","newField","currField"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-querybuilder.umd.min.js","sources":["../src/query-builder/query-builder.js","../src/query-builder/query-library.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 __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * Query Builder Source\n */\n/* eslint-disable max-len */\nimport { Component, NotifyPropertyChanges, getComponent, Browser, compile, append, Draggable, remove } from '@syncfusion/ej2-base';\nimport { Property, ChildProperty, Complex, L10n, closest, extend, isNullOrUndefined, Collection, cldrData } from '@syncfusion/ej2-base';\nimport { getInstance, addClass, removeClass, rippleEffect, detach, classList } from '@syncfusion/ej2-base';\nimport { Internationalization, getUniqueID, select } from '@syncfusion/ej2-base';\nimport { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';\nimport { DropDownList, CheckBoxSelection, DropDownTree } from '@syncfusion/ej2-dropdowns';\nimport { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Event, EventHandler, getValue, Animation } from '@syncfusion/ej2-base';\nimport { Query, Predicate, DataManager, Deferred } from '@syncfusion/ej2-data';\nimport { TextBox, NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Tooltip, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { compile as templateCompiler, getNumericObject } from '@syncfusion/ej2-base';\n/**\n * Defines the Columns of Query Builder\n */\nvar Columns = /** @class */ (function (_super) {\n __extends(Columns, _super);\n function Columns() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Columns.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"values\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"operators\", void 0);\n __decorate([\n Property()\n ], Columns.prototype, \"ruleTemplate\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"template\", void 0);\n __decorate([\n Property({ isRequired: true, min: 0, max: Number.MAX_VALUE })\n ], Columns.prototype, \"validation\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"category\", void 0);\n __decorate([\n Property(null)\n ], Columns.prototype, \"columns\", void 0);\n return Columns;\n}(ChildProperty));\nexport { Columns };\n/**\n * Defines the rule of Query Builder\n */\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Rule.prototype, \"condition\", void 0);\n __decorate([\n Collection([], Rule)\n ], Rule.prototype, \"rules\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"field\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"label\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"operator\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], Rule.prototype, \"not\", void 0);\n __decorate([\n Property(null)\n ], Rule.prototype, \"isLocked\", void 0);\n return Rule;\n}(ChildProperty));\nexport { Rule };\n/**\n * Defines the property for value.\n */\nvar Value = /** @class */ (function (_super) {\n __extends(Value, _super);\n function Value() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Value.prototype, \"numericTextBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"multiSelectModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"datePickerModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"textBoxModel\", void 0);\n __decorate([\n Property(null)\n ], Value.prototype, \"radioButtonModel\", void 0);\n return Value;\n}(ChildProperty));\nexport { Value };\n/**\n * Defines the ruleDelete, groupInsert, and groupDelete options of Query Builder.\n */\nvar ShowButtons = /** @class */ (function (_super) {\n __extends(ShowButtons, _super);\n function ShowButtons() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"cloneGroup\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockRule\", void 0);\n __decorate([\n Property(false)\n ], ShowButtons.prototype, \"lockGroup\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"ruleDelete\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupInsert\", void 0);\n __decorate([\n Property(true)\n ], ShowButtons.prototype, \"groupDelete\", void 0);\n return ShowButtons;\n}(ChildProperty));\nexport { ShowButtons };\nvar QueryBuilder = /** @class */ (function (_super) {\n __extends(QueryBuilder, _super);\n function QueryBuilder(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isReadonly = true;\n _this.fields = { text: 'label', value: 'field' };\n _this.updatedRule = { not: false, condition: 'and', isLocked: false };\n _this.isLocale = false;\n _this.isRefreshed = false;\n _this.isNotified = false;\n _this.isAddSuccess = false;\n _this.isNotValueChange = false;\n _this.isFieldChange = false;\n _this.isFieldClose = false;\n _this.isDestroy = false;\n _this.isGetNestedData = false;\n _this.isCustomOprCols = [];\n _this.groupCounter = 0;\n _this.lockItems = [];\n _this.groupIndex = -1;\n _this.ruleIndex = -1;\n _this.isLastGroup = false;\n _this.cloneGrpBtnClick = false;\n _this.isMiddleGroup = false;\n _this.cloneRuleBtnClick = false;\n _this.isValueEmpty = false;\n _this.isPropChange = false;\n _this.isRuleClicked = false;\n _this.groupCloned = false;\n _this.isRequestSent = false;\n _this.isPopupScroll = false;\n MultiSelect.Inject(CheckBoxSelection);\n return _this;\n }\n QueryBuilder.prototype.getPersistData = function () {\n return this.addOnPersist(['rule']);\n };\n /**\n * Clears the rules without root rule.\n *\n * @returns {void}.\n */\n QueryBuilder.prototype.reset = function () {\n this.isImportRules = false;\n var bodyElem = this.element.querySelector('.e-group-body');\n var inputElements = this.element.querySelectorAll('input.e-control');\n var batchSize = 20;\n var currentIndex = 0;\n var processBatch = function () {\n var endIndex = Math.min(currentIndex + batchSize, inputElements.length);\n for (var i = currentIndex; i < endIndex; i++) {\n var element = inputElements[i];\n try {\n if (element.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {\n var tooltip = getComponent(element.parentElement, 'tooltip');\n if (tooltip) {\n tooltip.destroy();\n }\n }\n }\n catch (e) {\n console.warn('Error destroying tooltip:', e);\n }\n }\n currentIndex = endIndex;\n if (currentIndex < inputElements.length) {\n requestAnimationFrame(processBatch);\n }\n };\n if (inputElements.length > 0) {\n processBatch();\n }\n if (bodyElem) {\n bodyElem.textContent = '';\n }\n else {\n var fragment = document.createDocumentFragment();\n var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });\n grpContainer.appendChild(grpHeader);\n grpContainer.appendChild(grpBody);\n fragment.appendChild(grpContainer);\n this.element.appendChild(fragment);\n bodyElem = this.element.querySelector('.e-group-body');\n }\n if (this.headerTemplate && this.isRoot) {\n this.element.textContent = '';\n this.isRoot = false;\n }\n if (this.enableNotCondition) {\n var toggleElements = this.element.querySelectorAll('.e-qb-toggle');\n for (var i = 0; i < toggleElements.length; i++) {\n removeClass([toggleElements[i]], 'e-active-toggle');\n }\n }\n if (bodyElem) {\n bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));\n }\n this.levelColl[this.element.id + '_group0'] = [0];\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n if (bodyElem && bodyElem.parentElement) {\n this.disableRuleCondition(bodyElem.parentElement);\n }\n };\n QueryBuilder.prototype.getWrapper = function () {\n return this.element;\n };\n QueryBuilder.prototype.getModuleName = function () {\n return 'query-builder';\n };\n QueryBuilder.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'query-library',\n args: [this]\n });\n return modules;\n };\n QueryBuilder.prototype.GetRootColumnName = function (field) {\n if (!isNullOrUndefined(field)) {\n return this.separator ? field.split(this.separator)[0] : field;\n }\n return '';\n };\n QueryBuilder.prototype.initialize = function () {\n var _this = this;\n if (this.dataColl.length) {\n var columnKeys_1 = Object.keys(this.dataColl[0]);\n var cols = [];\n var categories_1 = [];\n var type_1;\n var groupBy_1 = false;\n var isDate_1 = false;\n var value_1;\n var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };\n if (this.columns.length) {\n this.columnSort();\n var columns = this.columns;\n columns.forEach(function (column) {\n _this.updateCustomOperator(column, 'initial');\n if (!column.type) {\n if (columnKeys_1.indexOf(column.field) > -1) {\n value_1 = _this.dataColl[0][column.field];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object') {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n column.type = type_1;\n isDate_1 = false;\n }\n type_1 = 'string';\n }\n if (!column.validation) {\n column.validation = validateObj_1;\n }\n if (column.category) {\n groupBy_1 = true;\n }\n else {\n column.category = _this.l10n.getConstant('OtherFields');\n }\n if (categories_1.indexOf(column.category) < 0) {\n categories_1.push(column.category);\n }\n if (!column.operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {\n column.operators = _this.customOperators[column.type + 'Operator'];\n }\n });\n if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {\n this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n this.updateSubFieldsFromColumns(this.columns);\n }\n else {\n for (var i = 0, len = columnKeys_1.length; i < len; i++) {\n value_1 = this.dataColl[0][columnKeys_1[i]];\n type_1 = typeof value_1;\n if (type_1 === 'string') {\n isDate_1 = !isNaN(Date.parse(value_1));\n }\n else if (type_1 === 'object' && !Object.keys(value_1).length) {\n isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());\n type_1 = 'string';\n }\n cols[i] = {\n 'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,\n 'validation': validateObj_1\n };\n isDate_1 = false;\n cols[i].operators = this.customOperators[cols[i].type + 'Operator'];\n if (type_1 === 'object') {\n this.updateSubFields(value_1, cols[i]);\n }\n }\n this.columns = cols;\n }\n }\n else if (this.columns && this.columns.length) {\n if (this.sortDirection !== 'Default') {\n this.columnSort();\n }\n this.processColumnsInBatches();\n if (this.columns.length > 50) {\n setTimeout(function () {\n _this.updateSubFieldsFromColumns(_this.columns);\n }, 0);\n }\n else {\n this.updateSubFieldsFromColumns(this.columns);\n }\n }\n this.trigger('dataBound', { type: 'dataBound' });\n };\n QueryBuilder.prototype.processColumnsInBatches = function () {\n var _this = this;\n var columns = this.columns;\n var batchSize = 10;\n var processedCount = 0;\n var processBatch = function () {\n var endIdx = Math.min(processedCount + batchSize, columns.length);\n for (var i = processedCount; i < endIdx; i++) {\n if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {\n _this.fields = { text: 'label', value: 'field', groupBy: 'category' };\n }\n else {\n columns[i].category = _this.l10n.getConstant('OtherFields');\n }\n _this.updateCustomOperator(columns[i], 'initial');\n if (!columns[i].operators ||\n (_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {\n columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];\n }\n }\n processedCount = endIdx;\n if (processedCount < columns.length) {\n requestAnimationFrame(processBatch);\n }\n };\n processBatch();\n };\n QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {\n if (col.length > 50) {\n this.updateSubFieldsLarge(col, field);\n return;\n }\n for (var i = 0; i < col.length; i++) {\n if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {\n col[i].field = field ? field + this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = this.customOperators[col[i].type + 'Operator'];\n }\n if (col[i].columns) {\n col[i].type = 'object';\n this.updateSubFieldsFromColumns(col[i].columns, col[i].field);\n }\n }\n };\n QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {\n var _this = this;\n var i = 0;\n var colLength = col.length;\n var processNextBatch = function () {\n var endIdx = Math.min(i + 10, colLength);\n for (; i < endIdx; i++) {\n if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {\n col[i].field = field ? field + _this.separator + col[i].field : col[i].field;\n }\n if (col[i].operators) {\n _this.updateCustomOperator(col[i]);\n }\n else if (col[i].type && col[i].type !== 'object') {\n col[i].operators = _this.customOperators[col[i].type + 'Operator'];\n }\n }\n if (i < colLength) {\n requestAnimationFrame(processNextBatch);\n }\n else {\n setTimeout(function () {\n for (var j = 0; j < colLength; j++) {\n if (col[j].columns) {\n col[j].type = 'object';\n _this.updateSubFieldsFromColumns(col[j].columns, col[j].field);\n }\n }\n }, 0);\n }\n };\n processNextBatch();\n };\n QueryBuilder.prototype.updateSubFields = function (value, col, data) {\n var sampCol;\n col.columns = [];\n var columnKeys = Object.keys(value);\n var field;\n var label;\n var type;\n var result;\n data = data ? data : this.dataColl[0];\n for (var i = 0, len = columnKeys.length; i < len; i++) {\n var compField = col.field.split('.');\n if (data) {\n result = data[compField[compField.length - 1]][columnKeys[i]];\n }\n else {\n result = this.dataColl[0][col.field][columnKeys[i]];\n }\n var resData = data[col.field.split(this.separator)[col.field.split(this.separator).length - 1]];\n type = typeof result;\n field = col.field + this.separator + columnKeys[i];\n label = columnKeys[i];\n type = (type === 'object' && !isNaN(Date.parse(result))) ? 'date' : type;\n sampCol = { field: field, label: label, type: type };\n if (type !== 'object') {\n sampCol.operators = this.customOperators[type + 'Operator'];\n }\n col.columns.push(sampCol);\n if (type === 'object') {\n this.updateSubFields(result, sampCol, resData);\n }\n }\n };\n QueryBuilder.prototype.updateCustomOperator = function (column, from) {\n if (column.operators) {\n if (!this.isLocale && from === 'initial' && !isNullOrUndefined(this.isCustomOprCols)) {\n this.isCustomOprCols.push(column.field);\n }\n var _loop_1 = function (j) {\n var sqlIdx = Object.keys(column.operators[j]).indexOf('sqlOperator');\n if (sqlIdx > -1) {\n var operator_1 = column.operators[j];\n var operColl = Object.keys(operator_1);\n var values = operColl.map(function (key) { return operator_1[\"\" + key]; }).join(',').split(',');\n var valueIdx = operColl.indexOf('value');\n this_1.operators[values[valueIdx]] = values[sqlIdx];\n }\n };\n var this_1 = this;\n for (var j = 0; j < column.operators.length; j++) {\n _loop_1(j);\n }\n }\n };\n QueryBuilder.prototype.focusEventHandler = function (event) {\n this.target = event.target;\n };\n QueryBuilder.prototype.clickEventHandler = function (event) {\n var _this = this;\n var target = event.target;\n var args;\n this.isImportRules = false;\n var groupID;\n if (target.tagName === 'SPAN') {\n target = target.parentElement;\n }\n if (typeof target.className === 'string' && target.className.indexOf('e-collapse-rule') > -1) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n }\n var summaryElem = document.getElementById(this.element.id + '_summary_content');\n var txtareaElem = summaryElem.querySelector('.e-summary-text');\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n var groupElem = this.element.querySelector('.e-group-container');\n groupElem.style.display = 'none';\n txtareaElem.textContent = this.getSqlFromRules(this.rule);\n summaryElem.style.display = 'block';\n txtareaElem.style.height = txtareaElem.scrollHeight + 'px';\n }\n if (target.tagName === 'BUTTON' && typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') < 0) {\n var animation = new Animation({ duration: 1000, delay: 0 });\n switch (true) {\n case target.className.indexOf('e-removerule') > -1:\n this.actionButton = target;\n this.deleteRule(target);\n break;\n case target.className.indexOf('e-clone-rule-btn') > -1:\n this.actionButton = target;\n this.cloneRuleBtnClick = true;\n this.isRuleClicked = true;\n this.ruleClone(target);\n break;\n case target.className.indexOf('e-lock-rule-btn') > -1:\n this.actionButton = target;\n this.ruleLock(target);\n break;\n case target.className.indexOf('e-lock-grp-btn') > -1:\n this.actionButton = target;\n this.groupLock(target);\n break;\n case target.className.indexOf('e-clone-grp-btn') > -1:\n this.actionButton = target;\n this.cloneGrpBtnClick = this.groupCloned = true;\n this.isRuleClicked = true;\n this.groupClone(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-deletegroup') > -1:\n this.actionButton = target;\n this.deleteGroup(closest(target, '.e-group-container'));\n break;\n case target.className.indexOf('e-edit-rule') > -1:\n animation.animate('.e-query-builder', { name: 'SlideLeftIn' });\n document.getElementById(this.element.id + '_summary_content').style.display = 'none';\n if (this.element.querySelectorAll('.e-group-container').length < 1) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not);\n var mRules = extend({}, this.rule, {}, true);\n this.setGroupRules(mRules);\n this.renderSummaryCollapse();\n }\n else {\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem.querySelectorAll('.e-collapse-rule').length < 1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n }\n break;\n }\n }\n else if ((target.tagName === 'LABEL' && target.parentElement.className.indexOf('e-btn-group') > -1) ||\n (typeof target.className === 'string' && target.className.indexOf('e-qb-toggle') > -1)) {\n var element = closest(target, '.e-group-container');\n if (!this.headerTemplate) {\n var forIdValue = target.getAttribute('for');\n var targetValue = void 0;\n if (forIdValue) {\n targetValue = document.getElementById(forIdValue).getAttribute('value');\n }\n else if (this.enableSeparateConnector) {\n if (target.classList.contains('e-btngroup-or-lbl')) {\n targetValue = 'or';\n }\n else if (target.classList.contains('e-btngroup-and-lbl')) {\n targetValue = 'and';\n }\n else {\n targetValue = target.textContent;\n }\n }\n groupID = element.id.replace(this.element.id + '_', '');\n var group = this.getGroup(groupID);\n var ariaChecked = void 0;\n if (this.enableNotCondition) {\n if (target.className.indexOf('e-qb-toggle') > -1) {\n var toggleElem = element.getElementsByClassName('e-qb-toggle')[0];\n if (toggleElem.className.indexOf('e-active-toggle') > -1) {\n removeClass([toggleElem], 'e-active-toggle');\n ariaChecked = false;\n }\n else {\n addClass([toggleElem], 'e-active-toggle');\n ariaChecked = true;\n }\n targetValue = group.condition;\n }\n else {\n ariaChecked = group.not;\n }\n }\n args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };\n if (this.enableNotCondition) {\n args = {\n groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),\n 'not': ariaChecked\n };\n }\n }\n if (!this.isImportRules) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.beforeSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.beforeSuccessCallBack(args, target);\n }\n this.target = target;\n }\n };\n QueryBuilder.prototype.beforeSuccessCallBack = function (args, target) {\n if (args && !args.cancel) {\n var element = closest(target, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n var rule = this.getParentGroup(element);\n if (this.enableSeparateConnector) {\n if (isNullOrUndefined(closest(target, '.e-rule-container')) &&\n element.classList.contains('e-group-container')) {\n element = target.parentElement.previousElementSibling !== null ?\n target.parentElement.previousElementSibling : element;\n }\n else {\n element = closest(target, '.e-rule-container');\n }\n var id = element.id.replace(this.element.id + '_', '');\n if (element.classList.contains('e-rule-container')) {\n rule = this.getRule(element);\n rule.condition = args.value;\n }\n else if (element.classList.contains('e-group-container')) {\n rule = this.getGroup(element);\n rule.condition = args.value;\n }\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: id, type: 'condition', value: rule.condition });\n }\n }\n else {\n rule.condition = args.value;\n if (this.enableNotCondition) {\n rule.not = args.not;\n }\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });\n }\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'condition');\n if (this.enableSeparateConnector) {\n var andElem = target.parentElement.querySelector('.e-btngroup-and');\n var orElem = target.parentElement.querySelector('.e-btngroup-or');\n if (andElem && orElem) {\n if (args.value === 'and') {\n andElem.checked = true;\n orElem.checked = false;\n }\n else if (args.value === 'or') {\n orElem.checked = true;\n andElem.checked = false;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.selectBtn = function (target, event) {\n if (event.name === 'beforeOpen') {\n if (this.showButtons.groupInsert || isNullOrUndefined(this.showButtons.groupInsert)) {\n if (this.element.querySelectorAll('.e-group-container').length >= this.maxGroupCount + 1) {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n else {\n removeClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n if (this.enableRtl) {\n addClass([event.element.querySelector('li').parentElement], 'e-rtl');\n }\n }\n else {\n addClass([event.element.querySelector('li span.e-addgroup').parentElement], 'e-button-hide');\n }\n }\n else if (event.element.children[0].className.indexOf('e-addrule') > -1) {\n this.isRuleClicked = true;\n this.addRuleElement(closest(target, '.e-group-container'), {});\n }\n else if (event.element.children[0].className.indexOf('e-addgroup') > -1) {\n this.isRuleClicked = true;\n this.addGroupElement(true, closest(target, '.e-group-container'), '', true);\n }\n };\n QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {\n var ruleElem;\n var elem;\n var ruleListElem = target && target.querySelector('.e-rule-list');\n var args;\n if (type === 'change') {\n ruleElem = select('#' + parentId, target);\n }\n else {\n ruleElem = this.createElement('div', { attrs: { class: 'e-rule-container' } });\n ruleElem.setAttribute('id', target.id + '_rule' + this.ruleIdCounter);\n if (this.showButtons.cloneRule && this.cloneRuleBtnClick) {\n if (this.ruleIndex < 0) {\n ruleListElem.appendChild(ruleElem);\n }\n else {\n if (this.enableSeparateConnector) {\n var index = -1;\n var tempRuleIndex = this.ruleIndex + 1;\n for (var i = 0; i < tempRuleIndex; i++) {\n if (i === ruleListElem.children.length) {\n break;\n }\n if (ruleListElem.children[i].classList.contains('e-rule-container')) {\n tempRuleIndex++;\n index++;\n }\n }\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + index + 1]); // added clone rule to next position\n }\n else {\n ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position\n }\n }\n this.cloneRuleBtnClick = false;\n }\n else {\n ruleListElem.appendChild(ruleElem);\n }\n this.ruleIdCounter++;\n }\n if (column && column.ruleTemplate && rule) {\n args = { requestType: 'template-initialize', ruleID: ruleElem.id, action: action, fields: this.fields, rule: rule };\n this.trigger('actionBegin', args);\n this.ruleTemplateFn = this.templateParser(column.ruleTemplate);\n var templateID = this.element.id + column.field;\n var template = void 0;\n args.fields = this.fields;\n args.columns = this.columns;\n if (rule.field === '') {\n rule.field = column.field;\n }\n args.operators = this.getOperators(rule.field);\n args.operatorFields = { text: 'key', value: 'value' };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.ruleTemplateFn(args, this, ruleElem.id, templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.ruleTemplateFn(args, this, ruleElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.ruleTemplateFn(args, this, 'Template', templateID);\n elem = template;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(elem, ruleElem);\n if (ruleElem.children.length) {\n ruleElem.children[ruleElem.children.length - 1].className += ' e-rule-field';\n }\n }\n else {\n template = this.ruleTemplateFn(args, this, 'Template', templateID)[0];\n elem = template;\n elem.className += ' e-rule-field';\n ruleElem.appendChild(elem);\n }\n }\n else {\n elem = this.ruleElem.querySelector('.e-rule-field').cloneNode(true);\n ruleElem.appendChild(elem);\n }\n if (this.showButtons.lockGroup) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.lockRule) {\n removeClass(ruleElem.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneGroup) {\n removeClass(ruleElem.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n if (this.showButtons.cloneRule) {\n removeClass(ruleElem.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n if (this.showButtons.ruleDelete) {\n removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n if (this.allowDragAndDrop) {\n removeClass(ruleElem.querySelectorAll('.e-drag-qb-rule'), 'e-hidden');\n }\n if (column && column.ruleTemplate && rule) {\n this.renderReactTemplates();\n }\n return ruleElem;\n };\n QueryBuilder.prototype.addRuleElement = function (target, rule, column, action, parentId, isRuleTemplate) {\n var _this = this;\n if (!target) {\n return;\n }\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertRule' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addRuleSuccessCallBack(observedChangeArgs, target, rule, column, action, parentId, isRuleTemplate);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addRuleSuccessCallBack(args, target, rule, column, action, parentId, isRuleTemplate);\n }\n };\n QueryBuilder.prototype.addRuleSuccessCallBack = function (args, trgt, rule, col, act, pId, isRlTmp) {\n var _this = this;\n var isVertical = this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical';\n var height = isVertical ? '250px' : '200px';\n var ruleID;\n var column = (rule && rule.field) ? this.getColumn(rule.field) : col ? col : this.columns[0];\n var operators;\n var dropDownList;\n var ruleElem;\n var newRule = { 'label': '', 'field': '', 'type': '', 'operator': '' };\n if (!args.cancel) {\n if (column && column.ruleTemplate && rule.field) {\n this.selectedColumn = column;\n operators = this.selectedColumn.operators;\n newRule = {\n 'label': column.label,\n 'field': column.field,\n 'type': column.type,\n 'operator': operators[0].value\n };\n var passedRule_1 = Object.keys(rule).length ? rule : newRule;\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule_1);\n var actionArgs = {\n requestType: 'template-initialize',\n ruleID: ruleElem.id,\n action: 'insert-rule',\n fields: this.fields,\n rule: passedRule_1\n };\n this.trigger('actionBegin', actionArgs);\n setTimeout(function () {\n var createArgs = {\n requestType: 'template-create',\n ruleID: ruleElem.id,\n action: 'insert-rule',\n fields: _this.fields,\n rule: passedRule_1\n };\n _this.trigger('actionBegin', createArgs);\n }, 0);\n }\n else {\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');\n ruleElem.querySelector('.e-filter-input').setAttribute('id', ruleElem.id + '_filterkey');\n var element = ruleElem.querySelector('.e-rule-delete');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n element.textContent = this.l10n.getConstant('Remove');\n addClass([element], 'e-flat');\n addClass([element], 'e-primary');\n }\n else {\n addClass([element], 'e-round');\n addClass([element], 'e-icon-btn');\n element.setAttribute('title', this.l10n.getConstant('DeleteRule'));\n var spanElement = this.createElement('span', {\n attrs: { class: 'e-btn-icon e-icons e-delete-icon' }\n });\n element.appendChild(spanElement);\n }\n if (!this.showButtons.ruleDelete) {\n element.classList.add('e-button-hide');\n }\n }\n ruleElem.className = 'e-rule-container ' + (isVertical ? 'e-vertical-mode' : 'e-horizontal-mode');\n var previousRuleElem = ruleElem.previousElementSibling;\n this.processAdjacentElements(ruleElem, previousRuleElem, rule);\n if (!this.isImportRules) {\n this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);\n }\n if (this.rule.condition === '' && (this.isRuleClicked || this.rule.rules.length > 1)) {\n this.rule.condition = 'and';\n }\n this.isRuleClicked = false;\n var ruleCount = this.rule.rules.length;\n if (!column || (column && !column.ruleTemplate) || !rule.field) {\n if (ruleCount > 20) {\n setTimeout(function () {\n _this.applyFieldComponent(ruleElem, rule, height);\n }, 0);\n }\n else {\n this.applyFieldComponent(ruleElem, rule, height);\n }\n }\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (rule && rule.isLocked) {\n var lockRuleTarget = ruleElem.querySelector('.e-lock-rule-btn');\n this.ruleLock(lockRuleTarget);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', {\n groupID: trgt.id.replace(this.element.id + '_', ''),\n ruleID: ruleID,\n type: 'insertRule'\n });\n }\n }\n if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {\n rule = this.getRule(ruleID);\n }\n if (this.enableSeparateConnector) {\n this.processConnectorElements(ruleElem);\n }\n };\n QueryBuilder.prototype.processAdjacentElements = function (ruleElem, previousRuleElem, rule) {\n if (this.enableSeparateConnector) {\n if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {\n var ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');\n previousRuleElem = ruleContainer[ruleContainer.length - 1];\n }\n if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(previousRuleElem);\n if (this.headerTemplate) {\n this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);\n }\n }\n else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n this.handleOrphanedRuleElement(ruleElem, rule);\n }\n }\n else {\n if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {\n ruleElem.classList.add('e-joined-rule');\n previousRuleElem.classList.add('e-prev-joined-rule');\n }\n }\n if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&\n ruleElem.className.indexOf('e-separate-rule') < 0) {\n ruleElem.className += ' e-separate-rule';\n }\n };\n QueryBuilder.prototype.handleOrphanedRuleElement = function (ruleElem, rule) {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling) {\n var prevElem = group.previousElementSibling;\n var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');\n if (prevElem.classList.contains('e-group-container')) {\n prevElem = prevRuleContainer[prevRuleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem);\n this.headerTemplateFn(prevElem, false, prevRule.condition, prevRule, prevElem.id, true);\n }\n }\n else {\n this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);\n }\n };\n QueryBuilder.prototype.processConnectorElements = function (ruleElem) {\n var prevElem = ruleElem.previousElementSibling;\n var ruleContainer;\n while (prevElem && !prevElem.classList.contains('e-rule-container')) {\n if (prevElem.classList.contains('e-group-container')) {\n ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n break;\n }\n prevElem = prevElem.previousElementSibling;\n }\n if (this.headerTemplate && prevElem) {\n var prevRule = this.getRule(prevElem);\n var args = {\n requestType: 'rule-template-create',\n ruleID: prevElem.id,\n condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined\n };\n this.trigger('actionBegin', args);\n }\n else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n this.handleOrphanedConnectorElement(ruleElem);\n }\n this.setMultiConnector(ruleElem);\n };\n QueryBuilder.prototype.handleOrphanedConnectorElement = function (ruleElem) {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {\n var prevElem = group.previousElementSibling.previousElementSibling;\n if (prevElem.classList.contains('e-group-container')) {\n var ruleContainer = prevElem.querySelectorAll('.e-rule-container');\n prevElem = ruleContainer[ruleContainer.length - 1];\n }\n if (prevElem.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem);\n var args = {\n requestType: 'rule-template-create',\n ruleID: prevElem.id,\n condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined\n };\n this.trigger('actionBegin', args);\n }\n }\n };\n QueryBuilder.prototype.applyFieldComponent = function (ruleElem, rule, height) {\n if (this.fieldMode === 'Default') {\n this.applyDropdownListComponent(ruleElem, rule, height);\n }\n else {\n this.applyDropdownTreeComponent(ruleElem, rule, height);\n }\n };\n QueryBuilder.prototype.applyDropdownListComponent = function (ruleElem, rule, height) {\n var ddlField;\n var ddlValue;\n if (this.separator && rule.field) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else if (this.autoSelectField) {\n ddlValue = this.GetRootColumnName(rule.field);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;\n }\n ddlField = {\n dataSource: this.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.columns.length > 5) ? height : 'auto'),\n close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),\n change: this.changeField.bind(this),\n value: rule ? ddlValue : null,\n open: this.popupOpen.bind(this, true),\n cssClass: 'qb-dropdownlist'\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleElem.id + '_filterkey');\n var ddlVal;\n if (this.separator && rule.field) {\n ddlVal = this.GetRootColumnName(rule.field);\n }\n else {\n ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) : dropDownList.value;\n }\n this.selectedColumn = dropDownList.getDataByValue(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropDownList.element,\n itemData: this.selectedColumn\n });\n }\n };\n QueryBuilder.prototype.applyDropdownTreeComponent = function (ruleElem, rule, height) {\n var ddlField;\n var ddlValue = this.isImportRules ? rule.field : rule.field;\n this.dummyDropdownTreeDs = extend([], this.columns, [], true);\n this.updateDropdowntreeDS(this.dummyDropdownTreeDs);\n ddlField = {\n fields: {\n dataSource: this.dummyDropdownTreeDs,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded',\n selectable: 'selectable'\n },\n placeholder: this.l10n.getConstant('SelectField'),\n showClearButton: false,\n popupHeight: ((this.columns.length > 5) ? height : 'auto'),\n changeOnBlur: false,\n change: this.changeField.bind(this),\n value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,\n open: this.popupOpen.bind(this, false),\n treeSettings: { expandOn: 'Click' },\n cssClass: 'e-qb-ddt',\n filtering: this.dropdownTreeFiltering.bind(this),\n close: this.dropdownTreeClose.bind(this)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropdowntree = new DropDownTree(ddlField);\n dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');\n if (!isNullOrUndefined(dropdowntree.value)) {\n var value = this.getLabelFromColumn(dropdowntree.value[0]);\n dropdowntree.element.value = value;\n }\n var ddlVal = !isNullOrUndefined(rule.field) ?\n this.GetRootColumnName(rule.field) : dropdowntree.value;\n this.selectedColumn = this.getColumn(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropdowntree.element,\n itemData: this.selectedColumn\n });\n }\n };\n QueryBuilder.prototype.dropdownTreeFiltering = function (args) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var ruleElemID = '';\n var srcElement = args.event.srcElement;\n var isClearIcon = srcElement.classList.contains('e-clear-icon');\n var inputElem = isClearIcon ? srcElement.parentElement.querySelector('.e-textbox') : srcElement;\n ruleElemID = inputElem.id.split('_filterkey')[0];\n var ruleElem = document.getElementById(ruleElemID);\n this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');\n var hierarchicalData = extend([], this.columns, [], true);\n args.cancel = true;\n if (args.text === '') {\n this.changeDataSource(hierarchicalData);\n }\n else {\n var matchedDataSource = hierarchicalData\n .map(function (data) { return _this.nestedChildFilter(args.text, data); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n this.changeDataSource(matchedDataSource);\n setTimeout(function () {\n if (!isNullOrUndefined(proxy.ddTree) && !isNullOrUndefined(proxy.ddTree.treeObj)) {\n proxy.ddTree.treeObj.expandAll();\n }\n }, 100);\n }\n };\n QueryBuilder.prototype.changeDataSource = function (data) {\n this.updateDropdowntreeDS(data);\n this.ddTree.treeObj.fields = {\n dataSource: data,\n value: 'field',\n text: 'label',\n child: 'columns',\n expanded: 'expanded'\n };\n this.ddTree.treeObj.refresh();\n };\n QueryBuilder.prototype.nestedChildFilter = function (value, node) {\n var _this = this;\n var children = node[this.ddTree.fields.child];\n if (!children) {\n return this.isMatchedNode(value, node) ? node : null;\n }\n var matchedChildren = children\n .map(function (child) { return _this.nestedChildFilter(value, child); })\n .filter(function (filteredChild) { return filteredChild !== null; });\n if (matchedChildren.length) {\n node[this.ddTree.fields.child] = matchedChildren;\n return node;\n }\n else {\n node[this.ddTree.fields.child] = children;\n return this.isMatchedNode(value, node) ? node : null;\n }\n };\n QueryBuilder.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.ddTree.fields.text].toLowerCase();\n value = value ? value.toLowerCase() : '';\n return checkValue.indexOf(value) !== -1;\n };\n QueryBuilder.prototype.dropdownTreeClose = function () {\n if (this.ddTree) {\n this.changeDataSource(extend([], this.columns, [], true));\n }\n this.ddTree = null;\n };\n QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n columns[parseInt(i.toString(), 10)].selectable = false;\n this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {\n delete columns[parseInt(i.toString(), 10)].template;\n }\n }\n };\n QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {\n var ruleElem;\n var index = 0;\n var groupElem;\n var rules;\n if (isRuleTemplate) {\n ruleElem = select('#' + pId, target);\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || enableSeparateCondition) {\n index++;\n }\n }\n rules.rules[index] = rule;\n }\n else {\n groupElem = closest(target, '.e-group-container');\n rules = this.getParentGroup(groupElem);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var custom = rule.custom;\n if (Object.keys(rule).length) {\n if (this.ruleIndex < 0) {\n rules.rules.push({\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[rules.rules.length - 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n else {\n rules.rules.splice(this.ruleIndex + 1, 0, {\n 'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value\n });\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.rules[this.ruleIndex + 1].custom = custom;\n }\n if (this.enableSeparateConnector) {\n rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;\n }\n }\n }\n else {\n if (custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newRule.custom = custom;\n }\n if (this.autoSelectField) {\n rule.field = newRule.field = this.rule.rules[0].field;\n }\n rules.rules.push(newRule);\n }\n }\n this.disableRuleCondition(target, rules, isNewRuleAdded);\n };\n QueryBuilder.prototype.changeRuleTemplate = function (column, element) {\n if (column && column.ruleTemplate) {\n return;\n }\n else {\n var parentGroup = closest(element, '.e-group-container');\n var parentId = closest(element, '.e-rule-container').id;\n if (this.previousColumn && this.previousColumn.ruleTemplate) {\n detach(element.closest('[id=\"' + parentId + '\"]').querySelector('.e-rule-field'));\n this.clearQBTemplate([parentId]);\n }\n if (column) {\n var operVal = this.selectedColumn.operators;\n var rule = { field: column.field, label: column.label, operator: operVal[0].value, value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n else {\n var rule = { field: '', label: '', operator: '', value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n }\n };\n QueryBuilder.prototype.renderToolTip = function (element) {\n var _this = this;\n var tooltip = new Tooltip({\n content: this.l10n.getConstant('ValidationMessage'),\n position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {\n tooltip.destroy();\n }, beforeOpen: function (args) {\n var tooltipCloseElement = args.element.querySelector('.e-tooltip-close');\n if (tooltipCloseElement) {\n tooltipCloseElement.style.display = 'none';\n }\n }, beforeClose: function (args) {\n if (_this.isPopupScroll) {\n args.cancel = true;\n }\n }\n });\n tooltip.appendTo(element);\n tooltip.open(element);\n };\n /**\n * Validate the conditions and it display errors for invalid fields.\n *\n * @returns {boolean} - Validation\n */\n QueryBuilder.prototype.validateFields = function () {\n var isValid = true;\n var dropDownTreeObj;\n if (this.allowValidation) {\n var excludeOprs = ['isnull', 'isnotnull', 'isempty', 'isnotempty'];\n var i = void 0;\n var len = void 0;\n var fieldElem = void 0;\n var indexElem = void 0;\n var valArray = [];\n var groupElem = void 0;\n var index = void 0;\n var dropDownObj = void 0;\n var tempElem = void 0;\n var rule = void 0;\n var ruleElemCln = this.element.querySelectorAll('.e-rule-container');\n for (i = 0, len = ruleElemCln.length; i < len; i++) {\n var validateRule = void 0;\n groupElem = closest(ruleElemCln[i], '.e-group-container');\n rule = this.getParentGroup(groupElem);\n index = 0;\n indexElem = tempElem = ruleElemCln[i];\n if (this.fieldMode === 'DropdownTree') {\n dropDownTreeObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdowntree'), 'dropdowntree');\n if (dropDownTreeObj && dropDownTreeObj.value && dropDownTreeObj.value.length) {\n this.selectedColumn = this.getColumn(dropDownTreeObj.value[0]);\n validateRule = this.selectedColumn.validation;\n }\n }\n else {\n dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-filter input.e-dropdownlist'), 'dropdownlist');\n if (dropDownObj && dropDownObj.value) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n validateRule = !isNullOrUndefined(dropDownObj.value) && this.selectedColumn.validation;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-field input.e-control');\n if (validateRule && validateRule.isRequired) {\n while (indexElem && indexElem.previousElementSibling !== null) {\n indexElem = indexElem.previousElementSibling;\n var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));\n if (!this.enableSeparateConnector || separateCondition) {\n index++;\n }\n }\n fieldElem = tempElem.querySelector('.e-rule-operator .e-control');\n if (!rule.rules[index].operator) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0 && fieldElem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n if (rule.rules[index].value instanceof Array) {\n valArray = rule.rules[index].value;\n }\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0 && ((isNullOrUndefined(rule.rules[index].value) &&\n rule.rules[index].type !== 'date') || rule.rules[index].value === '' || rule.rules[index].value === null ||\n (rule.rules[index].value instanceof Array && valArray.length < 1))) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n var element = valElem[j];\n var elem = void 0;\n if (element.parentElement.className.indexOf('e-searcher') > -1) {\n elem = closest(element, '.e-multi-select-wrapper');\n if (elem.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(elem);\n }\n }\n else if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(valElem[j].parentElement);\n }\n j++;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (rule.rules[index].type === 'date' && (rule.rules[index].value === null || rule.rules[index].value.indexOf(null) > -1)) {\n var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');\n if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {\n isValid = false;\n }\n for (var j = 0, jLen = valElem.length; j < jLen; j++) {\n if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0 && (isNullOrUndefined(rule.rules[index].value) || rule.rules[index].value[j] == null)) {\n this.renderToolTip(valElem[j].parentElement);\n }\n }\n }\n }\n else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.value)) ||\n (dropDownTreeObj && dropDownTreeObj.element && (isNullOrUndefined(dropDownTreeObj.value) ||\n dropDownTreeObj.value.length < 1))) {\n if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {\n this.renderToolTip(fieldElem.parentElement);\n }\n isValid = false;\n }\n }\n }\n return isValid;\n };\n QueryBuilder.prototype.refreshLevelColl = function () {\n this.levelColl = {};\n var groupElem = this.element.querySelector('.e-group-container');\n if (groupElem) {\n this.levelColl[groupElem.id] = [0];\n var obj = { groupElement: groupElem, level: [0] };\n this.refreshLevel(obj);\n }\n };\n QueryBuilder.prototype.refreshLevel = function (obj) {\n var ruleList = obj.groupElement.querySelector('.e-rule-list').children;\n var childElem;\n var groupElem = obj.groupElement;\n var i;\n var iLen = ruleList.length;\n var groupCount = 0;\n for (i = 0; i < iLen; i++) {\n childElem = ruleList[i];\n if (childElem.className.indexOf('e-group-container') > -1) {\n obj.level.push(groupCount);\n this.levelColl[childElem.id] = obj.level.slice();\n groupCount++;\n obj.groupElement = childElem;\n obj = this.refreshLevel(obj);\n }\n }\n var ruleListElem = closest(groupElem, '.e-rule-list');\n obj.groupElement = ruleListElem ? closest(ruleListElem, '.e-group-container') : groupElem;\n obj.level = this.levelColl[obj.groupElement.id].slice();\n return obj;\n };\n QueryBuilder.prototype.groupTemplate = function (isConnector) {\n var glueElem;\n var inputElem;\n var dragClsName;\n var labelElem;\n var grpActElem;\n var groupBtn;\n var groupElem = this.createElement('div', { attrs: { class: 'e-group-container' } });\n var groupHdrElem = this.createElement('div', { attrs: { class: 'e-group-header' } });\n var grpBodyElem = this.createElement('div', { attrs: { class: 'e-group-body' } });\n var rulesElem = this.createElement('div', { attrs: { class: 'e-rule-list' } });\n groupElem.appendChild(groupHdrElem);\n grpBodyElem.appendChild(rulesElem);\n groupElem.appendChild(grpBodyElem);\n if (!this.headerTemplate) {\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n groupHdrElem.appendChild(spanDragElement);\n var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';\n glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });\n if (this.enableSeparateConnector) {\n glueElem.classList.add('e-multi-connector');\n }\n if (this.enableNotCondition) {\n if (this.enableSeparateConnector) {\n inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });\n }\n else {\n inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n }\n glueElem.appendChild(inputElem);\n }\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },\n innerHTML: this.l10n.getConstant('AND')\n });\n glueElem.appendChild(labelElem);\n inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });\n glueElem.appendChild(inputElem);\n labelElem = this.createElement('label', {\n attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },\n innerHTML: this.l10n.getConstant('OR')\n });\n glueElem.appendChild(labelElem);\n groupHdrElem.appendChild(glueElem);\n grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });\n if (this.enableSeparateConnector) {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });\n grpActElem.appendChild(groupBtn);\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n else {\n groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });\n grpActElem.appendChild(groupBtn);\n }\n groupHdrElem.appendChild(grpActElem);\n }\n return groupElem;\n };\n QueryBuilder.prototype.ruleTemplate = function () {\n var tempElem;\n var clsName;\n var cloneClsName;\n var lockClsName;\n var dragClsName;\n var ruleElem = this.createElement('div');\n var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });\n if (this.allowDragAndDrop) {\n dragClsName = 'e-icons e-drag-qb-rule';\n }\n else {\n dragClsName = 'e-icons e-drag-qb-rule e-hidden';\n }\n var spanDragElement = this.createElement('span', {\n attrs: {\n class: dragClsName, 'aria-label': 'drag handle',\n title: 'drag handle'\n }\n });\n fieldElem.appendChild(spanDragElement);\n var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });\n tempElem.appendChild(filterElem);\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-operator' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value' } });\n fieldElem.appendChild(tempElem);\n tempElem = this.createElement('div', { attrs: { class: 'e-rule-value-delete' } });\n if (this.showButtons.cloneRule) {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn';\n }\n else {\n cloneClsName = 'e-clone-rule-btn e-clone-rule e-css e-btn e-small e-round e-icon-btn e-button-hide';\n }\n if (this.showButtons.lockRule) {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-rule-btn e-lock-rule e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneRuleBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneRule'), type: 'button', class: cloneClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneRuleBtnElem.appendChild(spanElement);\n var cloneLockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockRule'), type: 'button', class: lockClsName } });\n spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n cloneLockBtnElem.appendChild(spanElement);\n if (this.showButtons.ruleDelete || isNullOrUndefined(this.showButtons.ruleDelete)) {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small';\n }\n else {\n clsName = 'e-removerule e-rule-delete e-css e-btn e-small e-button-hide';\n }\n var delBtnElem = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n tempElem.appendChild(cloneRuleBtnElem);\n tempElem.appendChild(cloneLockBtnElem);\n tempElem.appendChild(delBtnElem);\n fieldElem.appendChild(tempElem);\n ruleElem.appendChild(fieldElem);\n return ruleElem;\n };\n QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };\n if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n });\n }\n else {\n this.isInitialLoad = false;\n this.addGroupSuccess(args, isGroup, target, condition, isBtnClick, not, isRoot, rule);\n }\n };\n QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {\n var _this = this;\n if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {\n var target = eventTarget;\n var dltGroupBtn = void 0;\n var groupID = '';\n if (target.className.indexOf('e-group-container') < 0) {\n groupID = target.querySelector('.e-group-container') && target.querySelector('.e-group-container').id;\n }\n else {\n groupID = target.id;\n }\n if (this.enableSeparateConnector) {\n this.groupElem = this.groupTemplate();\n }\n var groupElem = this.groupElem.cloneNode(true);\n groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);\n if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {\n if (groupElem && groupElem.children[0]) {\n groupElem.children[0].classList.add('e-parent-header');\n }\n addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');\n }\n if (this.headerTemplate) {\n if (isRoot) {\n isGroup = false;\n groupElem.setAttribute('id', this.element.id + '_group0');\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n this.groupIdCounter = 0;\n }\n else {\n this.headerTemplateFn(groupElem, not, condition, rule, groupID);\n }\n }\n this.groupIdCounter++;\n if (!this.headerTemplate) {\n var andInpElem = groupElem.querySelector('.e-btngroup-and');\n var orInpElem = groupElem.querySelector('.e-btngroup-or');\n var andLblElem = groupElem.querySelector('.e-btngroup-and-lbl');\n var orLblElem = groupElem.querySelector('.e-btngroup-or-lbl');\n andInpElem.setAttribute('id', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('id', this.element.id + '_or' + this.btnGroupId);\n andInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n orInpElem.setAttribute('name', this.element.id + '_and' + this.btnGroupId);\n andLblElem.setAttribute('for', this.element.id + '_and' + this.btnGroupId);\n orLblElem.setAttribute('for', this.element.id + '_or' + this.btnGroupId);\n this.btnGroupId++;\n }\n if (isGroup) {\n var clsName = void 0;\n if (this.showButtons.groupDelete || isNullOrUndefined(this.showButtons.groupDelete)) {\n clsName = 'e-deletegroup';\n }\n else {\n clsName = 'e-deletegroup e-button-hide';\n }\n dltGroupBtn = this.createElement('button', { attrs: { type: 'button', class: clsName } });\n var button = new Button({ iconCss: 'e-icons e-delete-icon', cssClass: 'e-small e-round' });\n button.appendTo(dltGroupBtn);\n dltGroupBtn.setAttribute('title', this.l10n.getConstant('DeleteGroup'));\n rippleEffect(dltGroupBtn, { selector: '.deletegroup' });\n var ruleList = target.querySelector('.e-rule-list');\n var childElems = ruleList.children;\n var grpLen = 0;\n for (var j = 0, jLen = childElems.length; j < jLen; j++) {\n if (childElems[j].className.indexOf('e-group-container') > -1) {\n grpLen += 1;\n }\n }\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick) {\n if (this.groupIndex === (childElems.length - 1)) {\n ruleList.appendChild(groupElem);\n this.isLastGroup = true;\n }\n else {\n if (this.enableSeparateConnector) {\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n for (var i = 0; i < tempGroupIndex; i++) {\n if (childElems[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n if (index > 0) {\n index--;\n }\n var idx = this.groupIndex + index + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n else {\n var idx = this.groupIndex + 1;\n childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);\n }\n this.isMiddleGroup = true;\n }\n }\n else {\n ruleList.appendChild(groupElem);\n }\n var level = this.levelColl[target.id].slice(0);\n level.push(grpLen);\n this.levelColl[groupElem.id] = level;\n if (this.groupIndex > -1) {\n this.refreshLevelColl();\n }\n if (!this.isImportRules) {\n this.isAddSuccess = true;\n this.addGroups([], target.id.replace(this.element.id + '_', ''));\n this.isAddSuccess = false;\n if (isBtnClick && this.addRuleToNewGroups) {\n this.addRuleElement(groupElem, {});\n }\n }\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.cloneGroup) {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-clone-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var cloneBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('CloneGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-copy' } });\n cloneBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(cloneBtnElem);\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var lockSpanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(lockSpanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n groupElem.querySelector('.e-group-action').appendChild(dltGroupBtn);\n }\n }\n else {\n if (!this.headerTemplate) {\n var lockClsName = '';\n if (this.showButtons.lockGroup) {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn';\n }\n else {\n lockClsName = 'e-lock-grp-btn e-css e-btn e-small e-round e-icons e-icon-btn e-button-hide';\n }\n var lockBtnElem = this.createElement('button', { attrs: { title: this.l10n.getConstant('LockGroup'), type: 'button', class: lockClsName } });\n var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-unlock' } });\n lockBtnElem.appendChild(spanElement);\n groupElem.querySelector('.e-group-action').appendChild(lockBtnElem);\n }\n target.appendChild(groupElem);\n this.levelColl[groupElem.id] = [0];\n }\n if (this.enableNotCondition) {\n if (!this.headerTemplate) {\n var notElem = groupElem.querySelector('.e-qb-toggle');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var tglBtn = void 0;\n if (this.enableSeparateConnector) {\n tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });\n }\n else {\n tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });\n }\n tglBtn.appendTo(notElem);\n groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');\n if (this.updatedRule && this.updatedRule.not) {\n addClass([notElem], 'e-active-toggle');\n }\n }\n }\n if (this.enableSeparateConnector && !this.headerTemplate) {\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n var btnGroup = groupElem.querySelector('.e-btn-group');\n for (var i = 0; i < btnGroup.childNodes.length; i++) {\n if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {\n if (!this.enableNotCondition) {\n btnGroup.childNodes[i].style.display = 'none';\n }\n else {\n btnGroup.childNodes[i].classList.add('e-multiconnector');\n }\n }\n else {\n btnGroup.childNodes[i].style.display = 'none';\n }\n }\n var prevSibling = groupElem.previousElementSibling;\n if (prevSibling) {\n if (isNullOrUndefined(this.headerTemplate)) {\n groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);\n var notElem = groupElem.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n }\n if (!this.isImportRules) {\n var groupElement = groupElem.previousElementSibling;\n var newAndElem = groupElement.querySelector('.e-btngroup-and');\n var newOrElem = groupElement.querySelector('.e-btngroup-or');\n if (!andElem.checked && !orElem.checked) {\n var nextSibling = groupElem.nextElementSibling;\n if (nextSibling && nextSibling.classList.contains('e-btn-group')) {\n andElem = nextSibling.querySelector('.e-btngroup-and');\n orElem = nextSibling.querySelector('.e-btngroup-or');\n newAndElem.checked = andElem.checked;\n newOrElem.checked = orElem.checked;\n }\n }\n else if (this.enableSeparateConnector) {\n if (andElem.checked) {\n newAndElem.checked = true;\n }\n if (orElem.checked) {\n newOrElem.checked = true;\n }\n }\n }\n }\n }\n this.updatedRule = null;\n if (this.headerTemplate) {\n var args_1 = {\n requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,\n notCondition: this.enableNotCondition ? not : undefined\n };\n this.trigger('actionBegin', args_1);\n }\n else {\n if (this.enableSeparateConnector) {\n var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');\n var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });\n btnObj.appendTo(conditionBtn_1);\n btnObj.element.onclick = function () {\n _this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});\n };\n var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');\n btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });\n btnObj.appendTo(groupBtn_1);\n btnObj.element.onclick = function () {\n _this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);\n };\n }\n else {\n var groupBtn = groupElem.querySelector('.e-add-btn');\n var btnObj = new DropDownButton({\n items: this.items,\n cssClass: 'e-round e-small e-caret-hide e-addrulegroup',\n iconCss: 'e-icons e-add-icon',\n beforeOpen: this.selectBtn.bind(this, groupBtn),\n select: this.selectBtn.bind(this, groupBtn)\n });\n btnObj.appendTo(groupBtn);\n groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));\n }\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n var grpId = target.id.replace(this.element.id + '_', '');\n var chgrpId = groupElem.id.replace(this.element.id + '_', '');\n this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });\n }\n }\n };\n QueryBuilder.prototype.setMultiConnector = function (trgt) {\n if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {\n var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');\n if (btnGroupElem) {\n trgt.parentElement.insertBefore(btnGroupElem, trgt);\n var notElem = trgt.previousElementSibling.childNodes[0];\n if (notElem.classList.contains('e-qb-toggle')) {\n notElem.style.display = 'none';\n }\n this.addHeaderDiv(trgt);\n }\n }\n };\n QueryBuilder.prototype.addHeaderDiv = function (elem) {\n var prevRule;\n var prevElem = elem.previousElementSibling.previousElementSibling;\n if (prevElem) {\n if (prevElem.id.indexOf('rule') > -1) {\n prevRule = this.getRule(prevElem);\n }\n else {\n prevRule = this.getGroup(prevElem);\n }\n if (!isNullOrUndefined(prevRule) && isNullOrUndefined(prevRule.condition)) {\n prevRule.condition = 'and';\n }\n var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');\n var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');\n orElem.disabled = false;\n andElem.disabled = false;\n if (!isNullOrUndefined(prevRule) && prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n };\n QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {\n var template;\n var templateID = this.element.id + '_header';\n var args;\n var groupHdr = groupElem.querySelector('.e-group-header');\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr = groupElem;\n }\n if (this.headerTemplate) {\n args = {\n requestType: 'header-template-initialize', ruleID: groupElem.id,\n notCondition: this.enableNotCondition ? not : undefined,\n condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID\n };\n this.trigger('actionBegin', args);\n if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n args.requestType = 'rule-template-create';\n }\n this.headerFn = this.templateParser(this.headerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n template = this.headerFn(args, this, groupElem.id, templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isAngular) {\n var templateColl = this.headerFn(args, this, groupElem.id, templateID);\n template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (this.isVue3) {\n template = this.headerFn(args, this, groupElem.id, templateID);\n if (this.enableSeparateConnector && (isInitialRule || groupElem.id.indexOf('rule') !== -1)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var i = 0; i < template.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (template[i].nodeName === 'DIV') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template = template[i];\n break;\n }\n }\n }\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(template, groupHdr);\n }\n }\n else {\n template = this.headerFn(args, this, 'Template', templateID)[0];\n if (this.enableSeparateConnector && isInitialRule) {\n this.enableSeparateConnectorInitialRule(groupElem, template);\n }\n else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {\n groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);\n }\n else {\n groupHdr.appendChild(template);\n }\n }\n this.renderReactTemplates();\n }\n return groupElem;\n };\n QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {\n var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;\n var group = elem.closest('.e-group-container');\n if (!groupElem.nextElementSibling && group) {\n group = group.nextElementSibling ? group.nextElementSibling : group;\n }\n if (group) {\n group.parentElement.insertBefore(template, group);\n }\n };\n /**\n * Notify the changes to component.\n *\n * @param {string | number | boolean | Date | string[] | number[] | Date[]} value - 'value' to be passed to update the rule value.\n * @param {Element} element - 'element' to be passed to update the rule.\n * @param {string} type - 'type' to be passed to update the rule .\n * @returns {void}.\n */\n QueryBuilder.prototype.notifyChange = function (value, element, type) {\n var grpElement = closest(element, '.e-group-container');\n var rules = this.getParentGroup(grpElement);\n var ruleElement = closest(element, '.e-rule-container');\n var index = 0;\n if (type === 'not') {\n rules.not = value;\n return;\n }\n if (type === 'condition') {\n if (this.enableSeparateConnector) {\n ruleElement = element.parentElement.previousElementSibling;\n if (ruleElement && ruleElement.classList.contains('e-group-container')) {\n ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];\n }\n if (ruleElement && ruleElement.classList.contains('e-rule-container')) {\n rules = this.getRule(ruleElement);\n }\n rules.condition = value;\n }\n else {\n rules.condition = value;\n }\n return;\n }\n while (ruleElement && ruleElement.previousElementSibling !== null) {\n ruleElement = ruleElement.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||\n ruleElement.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules.rules[index];\n var column = this.getColumn(rule.field);\n var format = this.getFormat(column.format);\n if (column.type === 'date') {\n if (value instanceof Date) {\n value = this.intl.formatDate(value, format);\n }\n else if (value instanceof Array) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] && value[i] instanceof Date) {\n value[i] = this.intl.formatDate(value[i], format);\n }\n }\n }\n }\n if (column.ruleTemplate) {\n this.templateChange(element, value, type);\n }\n else {\n this.isNotified = true;\n this.updateRules(element, value);\n this.isNotified = false;\n }\n };\n QueryBuilder.prototype.templateChange = function (element, value, type) {\n var grpElem = closest(element, '.e-group-container');\n var eventsArgs;\n var rules = grpElem && this.getParentGroup(grpElem);\n var ruleElem = closest(element, '.e-rule-container');\n var index = 0;\n if (this.allowValidation) {\n this.validateValue(rules, ruleElem);\n }\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var rule = rules && rules.rules[index];\n if (type === 'field') {\n this.selectedColumn = this.getColumn(value);\n }\n else if (rule) {\n this.selectedColumn = this.getColumn(rule.field);\n }\n var operVal;\n this.previousColumn = rule && this.getColumn(rule.field);\n var beforeRules = this.getValidRules(this.rule);\n if (this.selectedColumn) {\n if (this.selectedColumn.operators) {\n operVal = this.selectedColumn.operators;\n }\n else {\n operVal = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n }\n var arrOper = ['in', 'notin', 'between', 'notbetween'];\n var prevOper;\n switch (type) {\n case 'field':\n if (isNullOrUndefined(value)) {\n if (!isNullOrUndefined(rule)) {\n rule.field = '';\n rule.label = '';\n rule.type = '';\n rule.value = '';\n rule.operator = '';\n }\n else {\n return;\n }\n }\n else {\n rule.field = value;\n rule.label = this.selectedColumn.label;\n rule.type = this.selectedColumn.type;\n rule.value = '';\n rule.operator = operVal[0].value;\n }\n break;\n case 'operator':\n prevOper = rule.operator;\n rule.operator = value;\n if (arrOper.indexOf(rule.operator) > -1) {\n rule.value = [];\n }\n else if (arrOper.indexOf(prevOper) > -1) {\n rule.value = '';\n }\n break;\n case 'value':\n rule.value = value;\n }\n this.changeRuleTemplate(this.selectedColumn, element);\n this.filterRules(beforeRules, this.getValidRules(this.rule), type);\n if (this.selectedColumn && this.selectedColumn.ruleTemplate) {\n if (type === 'field' || type === 'operator') {\n var grpEle = closest(element, '.e-rule-container');\n this.destroyControls(grpEle, true);\n detach(grpEle.querySelector('.e-rule-field'));\n var ruleElement = this.appendRuleElem(closest(grpEle, '.e-group-container'), this.selectedColumn, 'change', grpEle.id, type, rule);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElement.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElement.className = 'e-rule-container e-horizontal-mode';\n }\n if (!this.enableSeparateConnector) {\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {\n if (ruleElement.className.indexOf('e-joined-rule') < 0) {\n ruleElement.className += ' e-joined-rule';\n }\n if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {\n ruleElement.previousElementSibling.className += ' e-prev-joined-rule';\n }\n }\n }\n if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&\n ruleElement.className.indexOf('e-separate-rule') < 0) {\n ruleElement.className += ' e-separate-rule';\n }\n var args = {\n requestType: 'template-create', action: type, ruleID: grpEle.id,\n fields: this.fields, rule: rule\n };\n eventsArgs = {\n groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),\n value: rule.field, type: 'field'\n };\n this.trigger('actionBegin', args);\n this.trigger('change', eventsArgs);\n }\n }\n };\n QueryBuilder.prototype.changeValue = function (i, args) {\n var _this = this;\n var element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.isNumInput && typeof args.value === 'number') || (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox'))\n && (this.selectedColumn.validation && (this.selectedColumn.validation.max !== Number.MAX_VALUE || this.selectedColumn.validation.min > 0))) {\n this.isNumInput = false;\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.element && args.element.classList.contains('e-multiselect')) {\n var multiSelectArgs = args;\n element = multiSelectArgs.element;\n }\n else if (args.event) {\n element = args.event.target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.currentTarget;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n element = args.element;\n }\n if (!element) {\n return;\n }\n if (element.className.indexOf('e-day') > -1 || element.className.indexOf('e-today') > -1 || element.className.indexOf('e-cell') > -1) {\n var calenderArgs = args;\n element = calenderArgs.element;\n }\n var groupElem = closest(element, '.e-group-container');\n var ruleElem = closest(element, '.e-rule-container');\n var groupID = groupElem && groupElem.id.replace(this.element.id + '_', '');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var dateElement = args;\n var dropDownObj;\n if (dateElement.element && dateElement.element.className.indexOf('e-datepicker') > -1) {\n element = dateElement.element;\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n if (dropDownObj) {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n if (dropDownObj) {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n }\n var value;\n var rbValue;\n if (element.className.indexOf('e-radio') > -1) {\n rbValue = parseInt(element.id.split('valuekey')[1], 10);\n if (this.fieldMode === 'Default') {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n if (this.selectedColumn.columns) {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-rule-sub-filter .e-dropdownlist'), 'dropdownlist');\n this.selectedColumn = this.getColumn(dropDownObj.value);\n }\n }\n else {\n dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdowntree');\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n if (this.selectedColumn.values) {\n value = this.selectedColumn.values[rbValue];\n }\n else {\n var valColl = [true, false];\n value = valColl[rbValue];\n }\n }\n else if (element.className.indexOf('e-multiselect') > -1) {\n value = getComponent(element, 'multiselect').value;\n }\n else {\n value = args.value;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (args.type === 'input' && args.target && args.target.classList.contains('e-numerictextbox')) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value = Number(args.currentTarget.value);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var elem = args.currentTarget;\n var numericTextBoxObj = getInstance(elem, NumericTextBox);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n if (isNaN(value) && elem.value.indexOf(decimalSeparator) !== -1) {\n value = this.intl.getNumberParser({ format: 'n' })(elem.value);\n }\n if (!isNaN(value)) {\n numericTextBoxObj.value = value;\n }\n this.isNumInput = true;\n }\n }\n if (args.name === 'input' && this.immediateModeDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setInterval(function () { _this.filterValue(groupID, ruleID, value, i, element); }, this.immediateModeDelay);\n }\n else {\n this.filterValue(groupID, ruleID, value, i, element);\n }\n };\n QueryBuilder.prototype.filterValue = function (grID, rlID, value, i, ele) {\n var _this = this;\n var eventsArgs = { groupID: grID, ruleID: rlID, value: value, cancel: false, type: 'value' };\n window.clearInterval(this.timer);\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.changeValueSuccessCallBack(observedChangeArgs, ele, i, grID, rlID);\n });\n }\n else {\n this.changeValueSuccessCallBack(eventsArgs, ele, i, grID, rlID);\n }\n };\n QueryBuilder.prototype.changeValueSuccessCallBack = function (args, element, i, groupID, ruleID) {\n if (!args.cancel) {\n this.updateRules(element, args.value, i);\n this.setSecondDateMinFromFirst(element, i);\n if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: ruleID, value: args.value, cancel: false, type: 'value' });\n }\n }\n };\n QueryBuilder.prototype.setSecondDateMinFromFirst = function (element, valueIndex) {\n if (valueIndex !== 0) {\n return;\n }\n var ruleElem = closest(element, '.e-rule-container');\n if (!ruleElem) {\n return;\n }\n var operatorDropdownElement = ruleElem.querySelector('.e-rule-operator .e-dropdownlist');\n if (!operatorDropdownElement) {\n return;\n }\n var operatorDropdown = getComponent(operatorDropdownElement, 'dropdownlist');\n var operatorValue = operatorDropdown && operatorDropdown.value ? operatorDropdown.value.toString().toLowerCase() : '';\n if (operatorValue.indexOf('between') < 0) {\n return;\n }\n var firstDateElement = document.getElementById(ruleElem.id + '_valuekey0');\n var secondDateElement = document.getElementById(ruleElem.id + '_valuekey1');\n if (!firstDateElement || !secondDateElement) {\n return;\n }\n var firstDatePicker = getComponent(firstDateElement, 'datepicker');\n var secondDatePicker = getComponent(secondDateElement, 'datepicker');\n if (!firstDatePicker || !secondDatePicker || !(firstDatePicker.value instanceof Date)) {\n return;\n }\n var nextDay = new Date(firstDatePicker.value.getTime());\n nextDay.setDate(nextDay.getDate() + 1);\n secondDatePicker.min = nextDay;\n if (secondDatePicker.value instanceof Date && secondDatePicker.value.getTime() < nextDay.getTime()) {\n secondDatePicker.value = nextDay;\n }\n };\n QueryBuilder.prototype.fieldClose = function (id) {\n if (this.isFieldChange || this.isDestroy) {\n return;\n }\n this.isFieldClose = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddl = getComponent(id, 'dropdownlist');\n var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');\n var itemData = ddl.getItemData();\n ddl.value = itemData.value;\n var customArgs = {\n element: ddl.element, value: itemData.value, isInteracted: true,\n previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null\n };\n if (ddl.previousValue !== ddl.value) {\n this.changeField(customArgs);\n }\n this.isFieldChange = false;\n };\n QueryBuilder.prototype.changeField = function (args) {\n if (args.isInteracted) {\n if (isNullOrUndefined(args.value)) {\n return;\n }\n this.isFieldChange = true;\n this.prevItemData = args.itemData;\n var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);\n if (this.fieldMode === 'DropdownTree' && fieldElem !== null) {\n var ddtElem = fieldElem.querySelector('.e-dropdowntree.e-control');\n var ddt = getComponent(ddtElem, 'dropdowntree');\n if (column) {\n if (column.type === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.oldValue;\n ddt.dataBind();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNullOrUndefined(args.oldValue)) {\n ddtElem.value = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getLabelFromColumn(args.oldValue[0]);\n ddtElem.value = result;\n }\n return;\n }\n else {\n if (!isNullOrUndefined(args.value[0])) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ddt.value = args.value[0];\n ddt.dataBind();\n var result = this.getLabelFromColumn(args.value[0]);\n ddtElem.value = result;\n }\n }\n }\n else {\n return;\n }\n }\n this.destroySubFields(fieldElem);\n this.subFieldElem = null;\n this.isNotValueChange = true;\n if (column && column.ruleTemplate) {\n this.templateChange(args.element, column.field, 'field');\n }\n else if (column && column.columns && column.columns[0].ruleTemplate) {\n this.templateChange(args.element, column.columns[0].field, 'field');\n }\n else {\n var groupElem = closest(args.element, '.e-group-container');\n var rules = this.getParentGroup(groupElem);\n var ruleElem = closest(args.element, '.e-rule-container');\n var index = 0;\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n rules.rules[index].value = '';\n this.changeRule(rules.rules[index], args);\n }\n }\n };\n QueryBuilder.prototype.changeRule = function (rule, ddlArgs) {\n if (!ddlArgs.itemData) {\n if (this.fieldMode === 'DropdownTree') {\n var ddt = getComponent(ddlArgs.element, 'dropdowntree');\n if (ddt.value == null) {\n return;\n }\n }\n else {\n return;\n }\n }\n var tempRule = {};\n var filterElem = closest(ddlArgs.element, '.e-rule-filter');\n filterElem = filterElem ? filterElem : closest(ddlArgs.element, '.e-rule-sub-filter');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n if (this.fieldMode === 'DropdownTree' && filterElem !== null) {\n ddlObj = getComponent(ddlArgs.element, 'dropdowntree');\n }\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n this.changeFilter(filterElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n };\n QueryBuilder.prototype.changeFilter = function (flt, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n if (flt) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ddlValue = void 0;\n if (this.fieldMode === 'DropdownTree') {\n ddlValue = (dl.value[0]);\n }\n else {\n ddlValue = this.isImportRules ? this.GetRootColumnName(dl.value) : dl.value;\n }\n this.selectedColumn = this.getColumn(ddlValue);\n var ruleElem = closest(flt, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n var eventsArgs = {\n groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?\n dl.value[0] : dl.value, cancel: false, type: 'field'\n };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);\n });\n }\n else {\n this.fieldChangeSuccess(eventsArgs, tmpRl, flt, rl, dArg);\n }\n }\n else {\n var operatorElem = closest(dArg.element, '.e-rule-operator');\n this.changeOperator(flt, operatorElem, dl, grID, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.changeOperator = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n flt, opr, dl, grID, rl, tmpRl, dArg) {\n var _this = this;\n var ruleElem;\n var ruleID;\n var eventsArgs;\n if (opr) {\n ruleElem = closest(opr, '.e-rule-container');\n ruleID = ruleElem.id.replace(this.element.id + '_', '');\n eventsArgs = { groupID: grID, ruleID: ruleID, selectedIndex: dl.index, cancel: false, type: 'operator' };\n if (!this.isImportRules) {\n this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {\n _this.operatorChangeSuccess(observedChangeArgs, flt, tmpRl, rl, dArg);\n });\n }\n else {\n this.operatorChangeSuccess(eventsArgs, flt, tmpRl, rl, dArg);\n }\n }\n else {\n this.changeRuleValues(flt, rl, tmpRl, dArg);\n }\n };\n QueryBuilder.prototype.fieldChangeSuccess = function (args, tempRule, filterElem, rule, ddlArgs) {\n var ruleElem = closest(filterElem, '.e-rule-container');\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var element = closest(ddlArgs.element, '.e-group-container');\n var groupID = element.id.replace(this.element.id + '_', '');\n var ddlObj = getComponent(ddlArgs.element, 'dropdownlist');\n var tooltipElem = ruleElem.querySelectorAll('.e-tooltip.e-input-group');\n for (var i = 0; i < tooltipElem.length; i++) {\n getComponent(tooltipElem[i], 'tooltip').destroy();\n }\n if (!args.cancel) {\n if (isNullOrUndefined(this.selectedColumn)) {\n return;\n }\n tempRule.type = this.selectedColumn.type;\n if (ruleElem.querySelector('.e-template')) {\n rule.value = '';\n }\n if (this.selectedColumn.type === 'object' && this.fieldMode === 'Default') {\n tempRule.type = this.selectedColumn.columns[0].type;\n while (this.selectedColumn.columns) {\n this.createSubFields(filterElem, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.destroySubFields(filterElem);\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n }\n else {\n this.changeOperator(filterElem, operatorElem, ddlObj, groupID, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.destroySubFields = function (filterElem) {\n while (filterElem && filterElem.nextElementSibling.classList.contains('e-rule-sub-filter')) {\n this.destroyControls(filterElem);\n filterElem.nextElementSibling.remove();\n }\n };\n QueryBuilder.prototype.createSubFields = function (filterElem, rule, tempRule, ddlArgs) {\n var subFieldValue = false;\n var fieldElem = closest(filterElem, '.e-rule-field');\n var tempElem = this.createElement('div', { attrs: { class: 'e-rule-sub-filter', id: 'subfilter' + this.subFilterCounter } });\n fieldElem.insertBefore(tempElem, fieldElem.querySelector('.e-rule-operator'));\n var ruleId = closest(tempElem, '.e-rule-container').id;\n var subFieldElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_subfilterkey' + this.subFilterCounter } });\n tempElem.appendChild(subFieldElem);\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var ddlField;\n ddlField = {\n dataSource: this.selectedColumn.columns,\n fields: this.fields,\n placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.selectedColumn.columns.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: 0,\n open: this.popupOpen.bind(this, false)\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n var dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleId + '_subfilterkey' + this.subFilterCounter);\n if (this.isImportRules || (this.previousColumn && this.previousColumn.ruleTemplate &&\n this.GetRootColumnName(rule.field) === this.GetRootColumnName(this.previousColumn.field))) {\n var subField = this.selectedColumn.columns;\n for (var i = 0; i < subField.length; i++) {\n if (rule.field === subField[i].field || rule.field.indexOf(subField[i].field + this.separator) > -1) {\n dropDownList.value = subField[i].field;\n this.selectedColumn = subField[i];\n subFieldValue = true;\n break;\n }\n }\n }\n this.subFilterCounter++;\n this.subFieldElem = subFieldElem;\n // eslint-disable-next-line\n ddlArgs.itemData = ddlArgs.itemData;\n if (!subFieldValue && this.selectedColumn.columns) {\n if (!subFieldValue && this.isImportRules) {\n dropDownList.value = null;\n }\n this.selectedColumn = this.selectedColumn.columns[0];\n }\n this.previousColumn = this.selectedColumn;\n if (!this.selectedColumn.columns) {\n this.changeRuleValues(tempElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.operatorChangeSuccess = function (eventsArgs, filterElem, tempRule, rule, ddlArgs) {\n if (!eventsArgs.cancel) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var valElem = operatorElem.nextElementSibling;\n var dropDownObj = getComponent(ddlArgs.element, 'dropdownlist');\n var prevOper = rule.operator ? rule.operator.toString().toLowerCase() : '';\n tempRule.operator = dropDownObj.value.toString();\n var currOper = tempRule.operator.toLowerCase();\n if (tempRule.operator.toLowerCase().indexOf('between') > -1 || (tempRule.operator.toLowerCase().indexOf('in') > -1\n && tempRule.operator.toLowerCase().indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n if (tempRule.operator.toLowerCase().indexOf('in') < 0 || prevOper.indexOf('in') < 0) {\n rule.value = [];\n }\n }\n else if (typeof rule.value === 'object' && rule.value !== null) {\n rule.value = rule.value.length > 0 ? rule.value[0] : rule.type === 'number' ? 0 : '';\n }\n if (ddlArgs.previousItemData) {\n var prevValue = ddlArgs.previousItemData.value.toString().toLowerCase();\n if ((prevValue.indexOf('between') > -1 || (prevValue.indexOf('in') > -1 || (prevValue.indexOf('null') > -1)\n || (prevValue.indexOf('empty') > -1)) && prevValue.indexOf('contains') < 0)) {\n filterElem = operatorElem.previousElementSibling;\n tempRule.type = rule.type;\n }\n }\n if ((prevOper.indexOf('in') > -1 && prevOper.indexOf('in') < 5) && (currOper.indexOf('in') > -1\n && currOper.indexOf('in') < 5)) {\n filterElem = null;\n }\n if (tempRule.operator.indexOf('null') > -1 || (tempRule.operator.indexOf('empty') > -1)) {\n var parentElem = operatorElem.parentElement.querySelector('.e-rule-value');\n var tooltipElem = parentElem.querySelector('.e-tooltip.e-input-group');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n else if (prevOper.indexOf('in') > -1) {\n tooltipElem = parentElem.querySelector('.e-tooltip');\n if (tooltipElem) {\n getComponent(tooltipElem, 'tooltip').destroy();\n }\n }\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n if (valElem && this.getColumn(rule.field).template) {\n filterElem = operatorElem.previousElementSibling;\n }\n if (valElem.children.length === 0) {\n filterElem = operatorElem.previousElementSibling;\n }\n this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);\n }\n };\n QueryBuilder.prototype.changeRuleValues = function (filterElem, rule, tempRule, ddlArgs) {\n var operatorElem = closest(ddlArgs.element, '.e-rule-operator');\n var isSub;\n var ddlObj;\n var operatorList;\n var oprElem;\n if (filterElem) {\n operatorElem = filterElem.nextElementSibling;\n if (filterElem.classList.contains('e-rule-sub-filter')) {\n tempRule.type = this.selectedColumn.type;\n isSub = operatorElem.classList.contains('e-rule-sub-filter');\n operatorElem = isSub ? operatorElem.nextElementSibling : operatorElem;\n }\n addClass([operatorElem], 'e-operator');\n if (operatorElem.childElementCount) {\n ddlObj = getComponent(operatorElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n tempRule.operator = ddlObj.value;\n var fieldObj = void 0;\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdowntree'), 'dropdowntree');\n }\n else {\n fieldObj = getComponent(filterElem.querySelector('.e-dropdownlist'), 'dropdownlist');\n }\n tempRule.type = this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]).type :\n this.getColumn(fieldObj.value).type;\n var itemData = ddlArgs.itemData;\n if (ddlObj.value !== '') {\n this.renderValues(operatorElem, itemData, ddlArgs.previousItemData, true, rule, tempRule, ddlArgs.element);\n }\n }\n else {\n var ruleId = closest(operatorElem, '.e-rule-container').id;\n oprElem = this.createElement('input', { attrs: { type: 'text', id: ruleId + '_operatorkey' } });\n operatorElem.appendChild(oprElem);\n if (this.selectedColumn.operators) {\n operatorList = this.selectedColumn.operators;\n }\n else if (ddlArgs.itemData) {\n operatorList = this.customOperators[this.selectedColumn.type + 'Operator'];\n }\n var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';\n var operator_2;\n if (rule.operator) {\n operatorList.forEach(function (obj) {\n if ('value' in obj && typeof obj.value === 'string' && obj.value.toLowerCase() === rule.operator.toLowerCase()) {\n operator_2 = obj.value;\n }\n });\n }\n var value = operator_2 ? operator_2 : operatorList[0].value;\n var ddlIdx = 0;\n if (!this.autoSelectOperator) {\n value = '';\n ddlIdx = -1;\n }\n if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {\n value = rule ? (rule.operator ? rule.operator : value) : value;\n }\n var ddlOperator = void 0;\n ddlOperator = {\n dataSource: operatorList,\n fields: { text: 'key', value: 'value' },\n placeholder: this.l10n.getConstant('SelectOperator'),\n popupHeight: ((operatorList.length > 5) ? height : 'auto'),\n change: this.changeField.bind(this),\n index: ddlIdx,\n value: value,\n open: this.popupOpen.bind(this, false)\n };\n if (this.operatorModel) {\n ddlOperator = __assign({}, ddlOperator, this.operatorModel);\n }\n var dropDownList = new DropDownList(ddlOperator);\n dropDownList.appendTo('#' + ruleId + '_operatorkey');\n tempRule.operator = (rule && rule.operator !== '' && !isNullOrUndefined(rule.operator)) ? rule.operator : operatorList[0].value;\n if (this.isImportRules) {\n tempRule.type = this.selectedColumn.type;\n tempRule.operator = rule.operator;\n }\n if (!isNullOrUndefined(value) && value !== '') {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n else if (this.autoSelectField && this.autoSelectOperator) {\n this.renderValues(operatorElem, this.selectedColumn, ddlArgs.previousItemData, false, rule, tempRule, ddlArgs.element);\n }\n }\n }\n if (!this.isImportRules) {\n this.updateRules(ddlArgs.element, ddlArgs.item);\n }\n };\n QueryBuilder.prototype.popupOpen = function (isField, args) {\n if (this.enableRtl) {\n addClass([args.popup.element], 'e-rtl');\n }\n if (isField) {\n this.isFieldClose = false;\n }\n };\n QueryBuilder.prototype.destroyControls = function (target, isRuleTemplate) {\n var element = isRuleTemplate ? target : target.nextElementSibling;\n var inputElement = element.querySelectorAll('input.e-control');\n var divElement = element.querySelectorAll('div.e-control:not(.e-handle)');\n var columns = this.columns;\n for (var i = 0, len = inputElement.length; i < len; i++) {\n if (inputElement[i].classList.contains('e-textbox')) {\n getComponent(inputElement[i], 'textbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-dropdownlist')) {\n if (this.allowValidation && inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i].parentElement, 'tooltip').destroy();\n }\n getComponent(inputElement[i], 'dropdownlist').destroy();\n }\n else if (inputElement[i].classList.contains('e-radio')) {\n getComponent(inputElement[i], 'radio').destroy();\n }\n else if (inputElement[i].classList.contains('e-numerictextbox')) {\n getComponent(inputElement[i], 'numerictextbox').destroy();\n detach(select('input#' + inputElement[i].id, element));\n }\n else if (inputElement[i].classList.contains('e-datepicker')) {\n getComponent(inputElement[i], 'datepicker').destroy();\n }\n else if (inputElement[i].classList.contains('e-multiselect')) {\n getComponent(inputElement[i], 'multiselect').destroy();\n }\n else if (inputElement[i].className.indexOf('e-template') > -1) {\n var clsName = inputElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], inputElement[i].id);\n break;\n }\n }\n }\n if (document.getElementById(inputElement[i].id)) {\n detach(inputElement[i]);\n }\n }\n for (var i = 0, len = divElement.length; i < len; i++) {\n if (divElement[i].className.indexOf('e-template') > -1) {\n var clsName = divElement[i].className;\n for (var j = 0, jLen = columns.length; j < jLen; j++) {\n if (columns[j].template && clsName.indexOf(columns[j].field) > -1) {\n this.templateDestroy(columns[j], divElement[i].id);\n break;\n }\n }\n }\n detach(divElement[i]);\n }\n var templateElement = element.querySelectorAll('.e-template:not(.e-control)');\n for (var i = 0, len = templateElement.length; i < len; i++) {\n detach(templateElement[i]);\n }\n };\n QueryBuilder.prototype.templateDestroy = function (column, elemId) {\n var template;\n if (typeof column.template !== 'string' || column.template.destroy === undefined) {\n template = column.template;\n }\n else {\n return;\n }\n var temp = template.destroy;\n if (template.destroy) {\n var templateElements = void 0;\n if (document.getElementById(elemId)) {\n templateElements = closest(document.getElementById(elemId), '.e-rule-field').querySelectorAll('.e-template');\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp({ field: column.field, elementId: elemId, elements: templateElements });\n }\n else {\n template.destroy({ field: column.field, elementId: elemId, elements: templateElements });\n }\n }\n };\n /**\n * Return values bound to the column.\n *\n * @param {string} field - 'field' to be passed to get the field values.\n * @returns {object[]} - Values bound to the column\n */\n QueryBuilder.prototype.getValues = function (field) {\n var original = {};\n var result = [];\n var value;\n var fieldColl = [];\n if (this.separator.length > 0) {\n fieldColl = field.split(this.separator);\n }\n var dataSource = this.dataColl;\n if (this.dataColl[1]) {\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n var data = {};\n if (fieldColl.length > 1) {\n var dataObj = dataSource[i];\n var fieldStr = void 0;\n for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {\n fieldStr = fieldColl[j];\n if (fieldColl.length === (j + 1)) {\n value = dataObj[\"\" + fieldStr];\n if (Number(dataObj[\"\" + fieldStr]) === dataObj[\"\" + fieldStr] && dataObj[\"\" + fieldStr] % 1 !== 0) {\n value = dataObj[\"\" + fieldStr].toString();\n }\n }\n else {\n dataObj = dataObj[\"\" + fieldStr];\n }\n }\n }\n else {\n value = dataSource[i][\"\" + field];\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n }\n if (!(value in original)) {\n original[\"\" + value] = 1;\n if (fieldColl.length > 1) {\n this.createNestedObject(data, fieldColl, value);\n }\n else {\n data[\"\" + field] = value;\n }\n result.push(data);\n }\n }\n }\n return result;\n };\n QueryBuilder.prototype.createNestedObject = function (obj, fieldColl, value) {\n var key;\n var lastIndex = fieldColl.length - 1;\n for (var k = 0; k < lastIndex; ++k) {\n key = fieldColl[k];\n if (!(key in obj)) {\n obj[\"\" + key] = {};\n }\n obj = obj[\"\" + key];\n }\n obj[fieldColl[lastIndex]] = value;\n };\n QueryBuilder.prototype.getDistinctValues = function (dataSource, field) {\n var original = {};\n var result = [];\n var nest = [];\n var value = '';\n var isNested = field.indexOf(this.separator);\n var _loop_2 = function (i, iLen) {\n value = '';\n if (isNested === 0) {\n value = dataSource[i][\"\" + field];\n }\n else {\n nest = field.split(this_2.separator);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n nest.forEach(function (element) {\n if (value) {\n value = value[\"\" + element];\n }\n else {\n value = dataSource[i][\"\" + element];\n }\n });\n }\n if (Number(dataSource[i][\"\" + field]) === dataSource[i][\"\" + field] && dataSource[i][\"\" + field] % 1 !== 0) {\n value = dataSource[i][\"\" + field].toString();\n }\n var data = {};\n if (!(value in original) && value) {\n original[\"\" + value] = 1;\n if (isNested === 0) {\n data[\"\" + field] = value;\n }\n else {\n data[nest[nest.length - 1]] = value;\n }\n result.push(data);\n }\n };\n var this_2 = this;\n for (var i = 0, iLen = dataSource.length; i < iLen; i++) {\n _loop_2(i, iLen);\n }\n return result;\n };\n QueryBuilder.prototype.renderMultiSelect = function (rule, parentId, i, selectedValue, values) {\n var isFetched = false;\n var ds;\n var isValues = false;\n this.isGetNestedData = false;\n if (this.dataColl[0]) {\n if (Object.keys(this.dataColl[0]).indexOf(rule.field) > -1) {\n isFetched = true;\n ds = this.getDistinctValues(this.dataColl, rule.field);\n }\n }\n isFetched = rule.columns ? false : isFetched;\n if (!this.dataColl.length && values.length) {\n isValues = true;\n }\n var multiSelectValue;\n var multiSelectUserQuery = (this.valueModel && this.valueModel.multiSelectModel && this.valueModel.multiSelectModel.query)\n ? this.valueModel.multiSelectModel.query\n : null;\n var multiSelectQuery = (multiSelectUserQuery && typeof multiSelectUserQuery.clone === 'function')\n ? multiSelectUserQuery.clone()\n : new Query();\n var selectedField = rule.field;\n if (selectedField) {\n multiSelectQuery.select([selectedField]);\n }\n var resolvedQuery = new Query([rule.field]);\n if (!isValues && !isFetched && (this.dataManager instanceof DataManager || this.dataSource instanceof DataManager)) {\n resolvedQuery = multiSelectQuery;\n }\n multiSelectValue = {\n dataSource: isValues ? values : (isFetched ? ds : this.dataManager),\n query: resolvedQuery,\n fields: { text: this.selectedRule.field, value: this.selectedRule.field },\n placeholder: this.l10n.getConstant('SelectValue'),\n value: selectedValue,\n mode: 'CheckBox',\n width: '100%',\n change: this.changeValue.bind(this, i),\n close: this.closePopup.bind(this, i),\n actionBegin: this.multiSelectOpen.bind(this, parentId + '_valuekey' + i),\n open: this.popupOpen.bind(this, false)\n };\n if (this.valueModel && this.valueModel.multiSelectModel) {\n multiSelectValue = __assign({}, multiSelectValue, this.valueModel.multiSelectModel);\n }\n var multiSelectObj = new MultiSelect(multiSelectValue);\n multiSelectObj.appendTo('#' + parentId + '_valuekey' + i);\n this.updateRules(multiSelectObj.element, selectedValue, 0);\n };\n QueryBuilder.prototype.multiSelectOpen = function (parentId, args) {\n if (this.dataSource instanceof DataManager) {\n var element = document.getElementById(parentId);\n var dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), this.fieldMode === 'DropdownTree' ? 'dropdowntree' : 'dropdownlist');\n if (this.fieldMode === 'DropdownTree') {\n this.selectedColumn = this.getColumn(dropDownObj.value[0]);\n }\n else {\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n }\n var value = this.selectedColumn.field;\n var isFetched = false;\n if (this.dataColl[0]) {\n if (Object.keys(this.dataColl[0]).indexOf(value) > -1) {\n isFetched = true;\n }\n var isNest = value.indexOf(this.separator);\n if (isNest !== 0 && this.isGetNestedData) {\n isFetched = true;\n }\n }\n if (!isFetched) {\n args.cancel = true;\n this.bindMultiSelectData(element, value);\n }\n var multiselectObj = getComponent(element, 'multiselect');\n if (!multiselectObj) {\n return;\n }\n var incomingQuery = (args.query) ? args.query : null;\n var existingQuery = multiselectObj.query ? multiselectObj.query : null;\n if (!this.areQueriesSame(existingQuery, incomingQuery)) {\n multiselectObj.query = null;\n args.query = null;\n }\n }\n };\n QueryBuilder.prototype.areQueriesSame = function (query1, query2) {\n if ((query1 === null || query1 === undefined) && (query2 === null || query2 === undefined)) {\n return true;\n }\n if ((query1 === null || query1 === undefined) || (query2 === null || query2 === undefined)) {\n return false;\n }\n return JSON.stringify(query1) === JSON.stringify(query2);\n };\n QueryBuilder.prototype.bindMultiSelectData = function (element, value) {\n this.getMultiSelectData(element, value);\n };\n QueryBuilder.prototype.getMultiSelectData = function (element, value) {\n var _this = this;\n var dummyData;\n var deferred = new Deferred();\n var multiselectObj = getComponent(element, 'multiselect');\n var userQuery = multiselectObj.query ? multiselectObj.query : null;\n var dataQuery = (userQuery && typeof userQuery.clone === 'function')\n ? userQuery.clone()\n : new Query();\n dataQuery.select([value]);\n if (!this.isRequestSent) {\n var data = this.dataManager.executeQuery(dataQuery);\n this.isRequestSent = true;\n multiselectObj.hideSpinner();\n this.createSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n showSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n data.then(function (e) {\n _this.isRequestSent = false;\n if (e.actual && e.actual.result) {\n dummyData = e.actual.result;\n }\n else {\n dummyData = e.result;\n }\n _this.dataColl = extend(_this.dataColl, dummyData, [], true);\n var newData = _this.getDistinctValues(_this.dataColl, value);\n var current = multiselectObj.dataSource;\n if ((current.length !== newData.length &&\n (JSON.stringify(current) !== JSON.stringify(newData)))) {\n multiselectObj.dataSource = newData;\n }\n _this.isGetNestedData = true;\n hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n }).catch(function (e) {\n _this.isRequestSent = false;\n deferred.reject(e);\n });\n }\n };\n QueryBuilder.prototype.createSpinner = function (element) {\n var spinnerElem = this.createElement('span', { attrs: { class: 'e-qb-spinner' } });\n element.appendChild(spinnerElem);\n createSpinner({ target: spinnerElem, width: Browser.isDevice ? '16px' : '14px' });\n };\n QueryBuilder.prototype.closePopup = function (i, args) {\n var element = document.getElementById(args.popup.element.id.replace('_popup', ''));\n if (element) {\n var ms = getComponent(element, 'multiselect');\n if (ms) {\n var value = ms.value;\n this.updateRules(element, value, i);\n }\n }\n };\n QueryBuilder.prototype.processTemplate = function (target, itemData, rule, tempRule) {\n var container = closest(target, '.e-rule-container');\n var tempElements = container.querySelectorAll('.e-template');\n var filterElem = container.querySelector('.e-rule-filter .e-filter-input');\n var ddlObj = this.fieldMode === 'DropdownTree' ? getComponent(filterElem, 'dropdowntree')\n : getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);\n if (target && target.nextElementSibling) {\n target.nextElementSibling.style.position = 'relative';\n target.nextElementSibling.classList.add('e-querybuilder-spinner');\n }\n var onComplete = function () {\n if (target && target.nextElementSibling && target.nextElementSibling.classList.contains('e-querybuilder-spinner')) {\n target.nextElementSibling.classList.remove('e-querybuilder-spinner');\n }\n };\n if (typeof itemData.template === 'string' || itemData.template.write === undefined) {\n var args = {\n rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,\n requestType: 'value-template-create'\n };\n this.trigger('actionBegin', args);\n onComplete();\n }\n else {\n var template = itemData.template;\n var templateArgs = {\n elements: tempElements.length > 1 ? tempElements : tempElements[0],\n values: rule.value,\n operator: tempRule.operator,\n field: column.field,\n dataSource: column.values,\n onComplete: onComplete\n };\n var writeResult = void 0;\n if (typeof template.write === 'string') {\n writeResult = getValue(template.write, window)(templateArgs);\n }\n else if (typeof itemData.template !== 'function') {\n writeResult = itemData.template.write(templateArgs);\n }\n if (writeResult && typeof writeResult.then === 'function') {\n writeResult.then(function () { return onComplete(); });\n }\n else {\n setTimeout(function () { return onComplete(); }, 100);\n }\n }\n };\n QueryBuilder.prototype.getItemData = function (parentId) {\n var fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');\n var parentFieldObj = this.element.querySelector(\"#\" + parentId);\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');\n }\n else if (parentFieldObj) {\n var subFieldObjList = parentFieldObj.querySelectorAll('.e-rule-sub-filter');\n if (subFieldObjList.length > 0) {\n var lastSubFieldObj = subFieldObjList[subFieldObjList.length - 1].querySelector('.e-dropdownlist');\n fieldObj = getComponent(lastSubFieldObj, 'dropdownlist');\n }\n }\n return this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);\n };\n QueryBuilder.prototype.setDefaultValue = function (parentId, isArryValue, isNumber) {\n var itemData = this.getItemData(parentId);\n if (isNullOrUndefined(itemData.value)) {\n return isNumber ? isArryValue ? [0, 0] : 0 : isArryValue ? [] : '';\n }\n if (isArryValue) {\n if (!(itemData.value instanceof Array)) {\n return [itemData.value];\n }\n }\n else {\n if (itemData.value instanceof Array) {\n return itemData.value[0];\n }\n }\n return itemData.value;\n };\n QueryBuilder.prototype.renderStringValue = function (parentId, rule, operator, idx, ruleValElem) {\n var selectedVal;\n var columnData = this.getItemData(parentId);\n var selectedValue;\n var isTemplate = (typeof columnData.template === 'string');\n if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {\n selectedValue = rule.value;\n }\n else {\n selectedValue = this.setDefaultValue(parentId, false, false);\n }\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.width = null;\n ruleValElem.style.minWidth = '200px';\n }\n }\n else {\n if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n selectedValue = selectedVal.join(',');\n }\n if (operator === 'between' || operator === 'notbetween') {\n if (selectedValue.length > 1) {\n selectedValue = selectedValue[idx];\n }\n }\n var txtBox = void 0;\n txtBox = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtBox = __assign({}, txtBox, this.valueModel.textBoxModel);\n }\n var inputobj = new TextBox(txtBox);\n inputobj.appendTo('#' + parentId + '_valuekey' + idx);\n inputobj.value = selectedValue;\n inputobj.dataBind();\n }\n };\n QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {\n var columnData = this.getItemData(parentId);\n var isTemplate = (typeof columnData.template === 'string');\n var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||\n typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);\n if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n ruleValElem.style.minWidth = '200px';\n ruleValElem.style.width = null;\n }\n }\n else if (operator === 'in' || operator === 'notin') {\n selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :\n this.setDefaultValue(parentId, true, false);\n var selVal = selectedVal.join(',');\n var txtInp = void 0;\n txtInp = {\n placeholder: this.l10n.getConstant('SelectValue'),\n input: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.textBoxModel) {\n txtInp = __assign({}, txtInp, this.valueModel.textBoxModel);\n }\n var input = new TextBox(txtInp);\n input.appendTo('#' + parentId + '_valuekey' + idx);\n input.value = selVal;\n input.dataBind();\n }\n else {\n itemData = columnData;\n var min = (itemData.validation && itemData.validation.min) ? itemData.validation.min : 0;\n var max = (itemData.validation && itemData.validation.max) ? itemData.validation.max : Number.MAX_VALUE;\n var format = itemData.format ? itemData.format : 'n';\n if (length > 1 && rule) {\n selectedVal = rule.value[idx] ? rule.value[idx] : this.setDefaultValue(parentId, true, true);\n }\n var numericTxt = void 0;\n numericTxt = {\n value: (selectedVal instanceof Array) ? selectedVal[idx] : selectedVal,\n format: format, min: min, max: max, width: '100%',\n step: itemData.step ? itemData.step : 1,\n change: this.changeValue.bind(this, idx)\n };\n if (this.valueModel && this.valueModel.numericTextBoxModel) {\n numericTxt = __assign({}, numericTxt, this.valueModel.numericTextBoxModel);\n }\n var numeric = new NumericTextBox(numericTxt);\n numeric.appendTo('#' + parentId + '_valuekey' + idx);\n numeric.element.setAttribute('aria-label', itemData.label + ' ' + 'Value');\n numeric.element.oninput = this.changeValue.bind(this, idx);\n }\n };\n QueryBuilder.prototype.processValueString = function (value, type) {\n var numArr = [];\n var strArr = value.split(',');\n if (type === 'string') {\n return strArr;\n }\n else {\n for (var k = 0, kLen = strArr.length; k < kLen; k++) {\n numArr.push(Number(strArr[k]));\n }\n return numArr;\n }\n };\n QueryBuilder.prototype.parseDate = function (value, format) {\n var formatOpt;\n var selectedValue;\n if (format) {\n var dParser = this.intl.getDateParser({ skeleton: 'full', type: 'dateTime' });\n formatOpt = this.getFormat(format);\n selectedValue = dParser(value);\n if (isNullOrUndefined(selectedValue)) {\n selectedValue = this.intl.parseDate(value, formatOpt);\n }\n }\n else {\n selectedValue = new Date(value);\n }\n return selectedValue;\n };\n QueryBuilder.prototype.renderControls = function (target, itemData, rule, tempRule, isRendered) {\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-value');\n removeClass([target.parentElement.querySelector('.e-rule-value')], 'e-hide');\n addClass([target.parentElement.querySelector('.e-rule-value')], 'e-show');\n if (itemData.template && (itemData.template.create || isRendered)) {\n this.processTemplate(target, itemData, rule, tempRule);\n }\n else {\n var length_1;\n if (tempRule.type === 'boolean') {\n length_1 = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n length_1 = tempRule.operator && tempRule.operator.toString().toLowerCase().indexOf('between') > -1 ? 2 : 1;\n }\n var parentId = closest(target, '.e-rule-container').id;\n var ruleValElem = void 0;\n var operator = tempRule.operator.toString();\n if (target.className.indexOf('e-rule-operator') > -1 || target.className.indexOf('e-rule-filter') > -1) {\n ruleValElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n ruleValElem.style.width = '100%';\n }\n else {\n if (operator !== 'in' && operator !== 'notin') {\n addClass([ruleValElem], 'e-custom-value');\n }\n else {\n removeClass([ruleValElem], 'e-custom-value');\n }\n }\n for (var i = 0; i < length_1; i++) {\n switch (tempRule.type) {\n case 'string':\n {\n this.renderStringValue(parentId, rule, operator, i, ruleValElem);\n }\n break;\n case 'number':\n {\n this.renderNumberValue(parentId, rule, operator, i, ruleValElem, itemData, length_1);\n }\n break;\n case 'boolean':\n this.processBoolValues(itemData, rule, parentId, i);\n break;\n case 'date':\n {\n var selectedValue = new Date();\n var selVal = void 0;\n var column = void 0;\n var format = itemData.format;\n var datepick = void 0;\n var datePicker = void 0;\n var place = this.l10n.getConstant('SelectValue');\n var isTemplate = (typeof itemData.template === 'string');\n if (rule.value && !isNullOrUndefined(format)) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, format) || new Date();\n }\n if (!isNullOrUndefined(itemData) && itemData.value && !isTemplate) {\n var parsedDate = this.parseDate(itemData.value.toString(), itemData.format);\n if (parsedDate && !isNaN(parsedDate.getTime())) {\n selectedValue = parsedDate;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!itemData.field && !itemData.key && itemData.value) {\n if (itemData.value instanceof Date) {\n selectedValue = itemData.value;\n }\n else {\n selectedValue = this.parseDate(itemData.value, itemData.format);\n }\n }\n if (!itemData.format && rule && rule.field !== '') {\n column = this.getColumn(rule.field);\n format = column.format;\n }\n if ((this.isImportRules || this.isPublic || isTemplate) && rule) {\n column = this.getColumn(rule.field);\n format = column.format;\n if (rule.value) {\n selVal = (length_1 > 1) ? rule.value[i] : rule.value;\n selectedValue = this.parseDate(selVal, column.format);\n }\n else {\n selectedValue = rule.value;\n }\n }\n if (format) {\n var formatObj = this.getFormat(format);\n if (formatObj.skeleton) {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, format: formatObj, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n else {\n datePicker = {\n value: selectedValue, locale: this.getLocale(), placeholder: place,\n format: formatObj.format, change: this.changeValue.bind(this, i)\n };\n if (!isNullOrUndefined(column) && !isNullOrUndefined(column.values) && column.values.length > 0) {\n var parsedDate = this.parseDate(column.values[i], format);\n if (!isNullOrUndefined(parsedDate) && parsedDate instanceof Date) {\n datePicker.value = parsedDate;\n if (i === 1) {\n var parsedMinDate = this.parseDate(column.values[0], format);\n if (parsedMinDate instanceof Date && !isNaN(parsedMinDate.getTime())) {\n parsedMinDate.setDate(parsedMinDate.getDate() + 1);\n datePicker.min = parsedMinDate;\n }\n }\n }\n }\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n }\n else {\n datePicker = {\n locale: this.getLocale(), value: selectedValue,\n placeholder: place, change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.datePickerModel) {\n datePicker = __assign({}, datePicker, this.valueModel.datePickerModel);\n }\n datepick = new DatePicker(datePicker);\n }\n datepick.appendTo('#' + parentId + '_valuekey' + i);\n if (!rule.value) {\n var elem = document.getElementById(parentId + '_valuekey' + i);\n this.updateRules(elem, selectedValue, null, this.isNotValueChange);\n this.isNotValueChange = false;\n }\n }\n break;\n }\n }\n }\n }\n };\n QueryBuilder.prototype.processBoolValues = function (itemData, rule, parentId, i) {\n var isCheck = false;\n var value;\n var orgValue;\n if (isNullOrUndefined(rule.type) && itemData) {\n rule.type = itemData.type;\n }\n var label;\n if (itemData.values) {\n var values = itemData.values;\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n isCheck = true;\n }\n orgValue = value = label = values[i];\n }\n else {\n var values = [true, false];\n if (rule.type === 'boolean' && !isNullOrUndefined(rule.value)) {\n isCheck = values[i].toString().toLowerCase() === rule.value.toString().toLowerCase();\n }\n else if (itemData.value) {\n isCheck = values[i].toString().toLowerCase() === itemData.value.toString().toLowerCase();\n }\n else if (i === 0) {\n if (typeof rule.value === 'boolean') {\n isCheck = rule.value ? true : false;\n }\n else {\n isCheck = true;\n }\n }\n if (typeof rule.value === 'boolean' && i === 1) {\n isCheck = !rule.value ? true : false;\n }\n value = values[i].toString();\n orgValue = values[i];\n label = this.l10n.getConstant(['True', 'False'][i]);\n }\n var radioBtn;\n radioBtn = {\n label: label, name: parentId + 'default', checked: isCheck, value: value,\n change: this.changeValue.bind(this, i)\n };\n if (this.valueModel && this.valueModel.radioButtonModel) {\n radioBtn = __assign({}, radioBtn, this.valueModel.radioButtonModel);\n }\n var radiobutton = new RadioButton(radioBtn);\n radiobutton.appendTo('#' + parentId + '_valuekey' + i);\n if (isCheck) {\n this.updateRules(radiobutton.element, orgValue, 0, true);\n }\n };\n QueryBuilder.prototype.getOperatorIndex = function (ddlObj, rule) {\n var i;\n var dataSource = ddlObj.dataSource;\n var len = dataSource.length;\n for (i = 0; i < len; i++) {\n if (rule.operator === ddlObj.dataSource[i].value) {\n return i;\n }\n }\n return 0;\n };\n QueryBuilder.prototype.getPreviousItemData = function (prevItemData, column) {\n if (this.isFieldClose && prevItemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n prevItemData = this.getColumn(prevItemData.value ? prevItemData.value : prevItemData.field);\n }\n if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {\n prevItemData.template = column.template;\n }\n return prevItemData;\n };\n QueryBuilder.prototype.renderValues = function (target, itemData, prevItemData, isRender, rule, tempRule, element) {\n var subFldElem = target.previousElementSibling;\n var filtElem = subFldElem.getElementsByTagName('input')[0];\n var filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')\n : getComponent(filtElem, 'dropdownlist');\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(filtObj.value);\n this.selectedRule = column;\n var ddlObj = getComponent(target.querySelector('input'), 'dropdownlist');\n if (isRender) {\n itemData = element.id.indexOf('operator') > -1 ? itemData : this.selectedRule;\n if (itemData.operators) {\n ddlObj.value = null;\n ddlObj.dataBind();\n ddlObj.dataSource = itemData.operators;\n ddlObj.index = this.getOperatorIndex(ddlObj, rule);\n ddlObj.value = tempRule.operator = ddlObj.dataSource[ddlObj.index].value;\n if (!this.autoSelectOperator) {\n ddlObj.index = -1;\n tempRule.operator = ddlObj.value = '';\n }\n else {\n ddlObj.dataBind();\n }\n }\n }\n var operator = tempRule.operator.toString();\n var isTempRendered = false;\n if (!(operator.indexOf('null') > -1 || operator.indexOf('isempty') > -1 || operator.indexOf('isnotempty') > -1)) {\n var parentId = closest(target, '.e-rule-container').id;\n prevItemData = this.getPreviousItemData(prevItemData, column);\n if (prevItemData && prevItemData.template === undefined) {\n if (prevItemData.columns) {\n prevItemData = this.getColumn(rule.field);\n }\n }\n else if (this.fieldMode === 'DropdownTree' && prevItemData === undefined) {\n prevItemData = this.getColumn(rule.field);\n }\n if (prevItemData && prevItemData.template) {\n this.templateDestroy(prevItemData, parentId + '_valuekey0');\n var elem = select('#' + parentId + '_valuekey0', target.nextElementSibling);\n if (elem && !elem.classList.contains('e-control')) {\n detach(select('#' + parentId + '_valuekey0', target.nextElementSibling));\n }\n if (typeof prevItemData.template === 'string' || prevItemData.template.create === undefined) {\n if (target.nextElementSibling.classList.contains('e-template-value')) {\n this.clearQBTemplate([parentId]);\n }\n target.nextElementSibling.innerHTML = '';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(prevItemData.key) && this.fieldMode === 'DropdownTree') {\n delete prevItemData.template;\n }\n }\n if (isRender) {\n this.validateValue(rule, closest(target, '.e-rule-container'));\n this.destroyControls(target);\n }\n if (this.isImportRules || (ddlObj && ddlObj.value !== '')) {\n if (column) {\n itemData.template = column.template;\n }\n if (itemData.template) {\n addClass([target.nextElementSibling], 'e-template-value');\n itemData.template = column.template;\n isTempRendered = this.setColumnTemplate(itemData, parentId, column.field, itemData.value ||\n operator, target, rule);\n }\n if (isTempRendered) {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {\n parentElem.style.width = '100%';\n }\n else {\n parentElem.style.width = '200px';\n }\n }\n else {\n removeClass([target.nextElementSibling], 'e-template-value');\n var inputLen = 1;\n if (tempRule.type === 'boolean') {\n inputLen = this.selectedColumn.values ? this.selectedColumn.values.length : 2;\n }\n else {\n inputLen = (operator && operator.toLowerCase().indexOf('between') > -1) ? 2 : 1;\n }\n for (var i = 0; i < inputLen; i++) {\n var valElem = this.createElement('input', { attrs: { type: 'text', id: parentId + '_valuekey' + i } });\n target.nextElementSibling.appendChild(valElem);\n }\n }\n this.renderControls(target, itemData, rule, tempRule, isTempRendered);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular && !isNullOrUndefined(itemData.key) && itemData.template && this.fieldMode === 'DropdownTree') {\n delete itemData.template;\n }\n }\n }\n else {\n var parentElem = target.parentElement.querySelector('.e-rule-value');\n if (parentElem) {\n removeClass([parentElem], 'e-show');\n addClass([parentElem], 'e-hide');\n }\n }\n };\n QueryBuilder.prototype.setColumnTemplate = function (itemData, ruleID, field, operator, target, rule) {\n var _this = this;\n var args;\n var isRendered = true;\n if (!itemData.template) {\n return true;\n }\n else {\n if (typeof itemData.template === 'string' || itemData.template.create === undefined) {\n args = {\n requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,\n renderTemplate: true\n };\n this.trigger('actionBegin', args, function (observedActionArgs) {\n isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);\n });\n return isRendered;\n }\n else {\n var valElem = void 0;\n var template = itemData.template;\n if (typeof template.create === 'string') {\n valElem = getValue(template.create, window)({ field: field, operator: operator });\n }\n else {\n valElem = template.create({ field: field, operator: operator });\n }\n if (valElem instanceof Element) {\n valElem.id = ruleID + '_valuekey0';\n addClass([valElem], 'e-template');\n target.nextElementSibling.appendChild(valElem);\n if (field.indexOf(' ') < 0) {\n addClass([valElem], 'e-' + field);\n }\n }\n else if (valElem instanceof Array) {\n addClass(valElem, 'e-template');\n for (var i = 0, iLen = valElem.length; i < iLen; i++) {\n valElem[i].id = ruleID + '_valuekey' + i;\n target.nextElementSibling.appendChild(valElem[i]);\n }\n }\n addClass([target.nextElementSibling], 'e-template-value');\n return true;\n }\n }\n };\n QueryBuilder.prototype.actionBeginSuccessCallBack = function (args, itemData, ruleID, field, target) {\n if (args.renderTemplate) {\n var valElem = void 0;\n this.columnTemplateFn = this.templateParser(typeof itemData.template === 'function' ? itemData.template : itemData.template);\n var templateID = this.element.id + field;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n valElem = this.columnTemplateFn(args, this, ruleID, templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isAngular) {\n var valElemColl = this.columnTemplateFn(args, this, ruleID, templateID);\n valElem = (valElemColl[0].nodeType === 3) ? valElemColl[1] : valElemColl[0];\n target.nextElementSibling.appendChild(valElem);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if (this.isVue3) {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n append(valElem, target.nextElementSibling);\n }\n else {\n valElem = this.columnTemplateFn(args, this, 'Template', templateID)[0];\n target.nextElementSibling.appendChild(valElem);\n }\n addClass([target.nextElementSibling], 'e-template-value');\n this.renderReactTemplates();\n return true;\n }\n else {\n return false;\n }\n };\n QueryBuilder.prototype.updateValues = function (element, rule) {\n var idx = 1;\n if (element.className.indexOf('e-template') > -1) {\n idx = 3;\n }\n var controlName = element.className.split(' e-')[idx];\n var i = parseInt(element.id.slice(-1), 2);\n var column;\n var format;\n var selectedDate;\n var value;\n var radioBtnObj;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var textboxValue;\n switch (controlName) {\n case 'checkbox':\n value = getComponent(element, controlName).value;\n rule.value = (value !== '') ? value : undefined;\n break;\n case 'textbox':\n textboxValue = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = textboxValue;\n }\n else if (['in', 'notin'].some(function (op) { return rule.operator.indexOf(op) !== -1; })\n && rule.operator.indexOf('contains') === -1) {\n rule.value = textboxValue ?\n (rule.type === 'string' ? textboxValue.split(',').map(function (val) { return val.trim(); }) :\n textboxValue.split(',').map(Number)) : [];\n }\n else {\n rule.value = textboxValue;\n }\n break;\n case 'dropdownlist':\n rule.value = getComponent(element, controlName).value;\n break;\n case 'radio':\n radioBtnObj = getComponent(element, controlName);\n if (radioBtnObj.checked) {\n if (typeof rule.value === 'boolean') {\n rule.value = radioBtnObj.value === 'true';\n }\n else {\n if (this.getColumn(rule.field).values) {\n rule.value = radioBtnObj.value;\n }\n else {\n rule.value = radioBtnObj.value === 'true';\n }\n }\n }\n radioBtnObj.refresh();\n break;\n case 'numerictextbox':\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = getComponent(element, controlName).value;\n }\n else {\n rule.value = getComponent(element, controlName).value;\n }\n break;\n case 'datepicker':\n column = this.getColumn(rule.field);\n format = this.getFormat(column.format);\n selectedDate = getComponent(element, controlName).value;\n if (rule.operator.indexOf('between') > -1) {\n if (typeof rule.value === 'string') {\n rule.value = [];\n }\n rule.value[i] = this.intl.formatDate(selectedDate, format);\n }\n else if (isNullOrUndefined(format.format) && selectedDate) {\n rule.value = this.intl.formatDate(selectedDate);\n }\n else if (selectedDate) {\n rule.value = this.intl.formatDate(selectedDate, format);\n }\n else {\n rule.value = selectedDate;\n }\n break;\n case 'multiselect':\n rule.value = getComponent(element, controlName).value;\n break;\n }\n };\n QueryBuilder.prototype.updateRules = function (target, selectedValue, i, isNotTrigger) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var index = 0;\n var dropDownObj;\n var eventsArgs;\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var beforeRules = this.getValidRules(this.rule);\n while (ruleElem && ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';\n ruleElem = closest(target, '.e-rule-container');\n var ruleID = ruleElem.id.replace(this.element.id + '_', '');\n if (closest(target, '.e-rule-filter') || closest(target, '.e-rule-sub-filter')) {\n if (this.subFieldElem) {\n target = this.subFieldElem;\n }\n dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :\n getComponent(target, 'dropdownlist');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n : this.getColumn(dropDownObj.value);\n if (!this.isImportRules && rule.rules[index].field &&\n rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {\n if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)\n || (operator.indexOf('empty') > -1)) {\n rule.rules[index].value = '';\n }\n }\n this.selectedColumn = this.getColumn(this.selectedColumn.field);\n rule.rules[index].field = this.selectedColumn.field;\n rule.rules[index].type = this.selectedColumn.type;\n rule.rules[index].label = this.selectedColumn.label;\n var ruleElement = closest(target, '.e-rule-filter');\n ruleElement = ruleElement ? ruleElement : closest(target, '.e-rule-sub-filter');\n var element = ruleElement.nextElementSibling.querySelector('input.e-control');\n element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');\n operator = getComponent(element, 'dropdownlist').value.toString();\n rule.rules[index].operator = operator;\n var valueContainer = ruleElement.nextElementSibling.nextElementSibling;\n var elementCln = valueContainer.querySelectorAll('input.e-control');\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('div.e-control');\n }\n if (elementCln.length < 1) {\n elementCln = valueContainer.querySelectorAll('.e-template');\n }\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: rule.rules[index].field, type: 'field' };\n for (var i_1 = 0; i_1 < elementCln.length; i_1++) {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n this.updateValues(elementCln[i_1], rule.rules[index]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', eventsArgs);\n }\n if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'field');\n }\n else if (closest(target, '.e-rule-operator')) {\n dropDownObj = getComponent(target, 'dropdownlist');\n rule.rules[index].operator = dropDownObj.value.toString();\n var inputElem = ruleElem.querySelectorAll('.e-rule-value input.e-control');\n eventsArgs = { groupID: groupID, ruleID: ruleID, value: dropDownObj.value, type: 'operator' };\n if (this.allowValidation && rule.rules[index].operator && target.parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(target.parentElement, 'tooltip').destroy();\n }\n if (inputElem.length > 1 && !(inputElem[0].className.indexOf('e-template') > -1)) {\n rule.rules[index].value = [];\n }\n for (var i_2 = 0; i_2 < inputElem.length; i_2++) {\n if (rule.rules[index].operator.indexOf('null') > -1 || rule.rules[index].operator.indexOf('empty') > -1) {\n rule.rules[index].value = null;\n continue;\n }\n else if (inputElem[i_2].classList.contains('e-template')) {\n continue;\n }\n this.updateValues(inputElem[i_2], rule.rules[index]);\n }\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'operator');\n }\n else if (closest(target, '.e-rule-value')) {\n this.ruleValueUpdate(target, selectedValue, rule, index, groupElem, ruleElem, i);\n if (!isNotTrigger) {\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'value');\n }\n }\n };\n QueryBuilder.prototype.filterRules = function (beforeRule, afterRule, type) {\n var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });\n var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });\n if (beforeRuleStr !== afetrRuleStr) {\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });\n }\n }\n };\n QueryBuilder.prototype.ruleValueUpdate = function (target, selectedValue, rule, index, groupElem, ruleElem, i) {\n var eventsArgs;\n var oper;\n var arrOperator = ['in', 'between', 'notin', 'notbetween'];\n if (rule.rules[index].operator) {\n oper = rule.rules[index].operator.toString().toLowerCase();\n }\n if (selectedValue !== null) {\n if (target.className.indexOf('e-multiselect') > -1 && rule.rules[index].type === 'number' &&\n !this.isNotified) {\n var selVal = [];\n var dupSelectedValue = selectedValue;\n for (var k = 0, kLen = dupSelectedValue.length; k < kLen; k++) {\n if (typeof dupSelectedValue[k] === 'string') {\n selVal.push(parseFloat(dupSelectedValue[k]));\n }\n }\n if (selVal.length) {\n selectedValue = selVal;\n }\n }\n if (this.isNotified) {\n rule.rules[index].value = selectedValue;\n eventsArgs = { groupID: groupElem.id, ruleID: ruleElem.id, value: rule.rules[index].value, type: 'value' };\n if (!this.isImportRules) {\n this.trigger('change', eventsArgs);\n }\n }\n else if (target.className.indexOf('e-spin') > -1 || target.className.indexOf('e-numeric') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-radio') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-multiselect') > -1) {\n rule.rules[index].value = selectedValue;\n }\n else if (target.className.indexOf('e-textbox') > -1) {\n if (oper === 'in' || oper === 'notin') {\n if (rule.rules[index].type === 'string') {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n else {\n rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);\n }\n }\n else if (oper === 'between' || oper === 'notbetween') {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else if (target.className.indexOf('e-datepicker') > -1) {\n var format = this.getFormat(this.getColumn(this.selectedColumn.field).format);\n if (format.type) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = this.intl.formatDate(selectedValue, format);\n }\n else {\n rule.rules[index].value = this.intl.formatDate(selectedValue, format);\n }\n }\n }\n this.validateValue(rule, ruleElem, index);\n }\n else {\n if (target.className.indexOf('e-datepicker') > -1) {\n if (arrOperator.indexOf(oper) > -1) {\n if (typeof rule.rules[index].value === 'string') {\n rule.rules[index].value = [];\n }\n rule.rules[index].value[i] = selectedValue;\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n else {\n rule.rules[index].value = selectedValue;\n }\n }\n };\n QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {\n if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {\n return;\n }\n if (!isNullOrUndefined(index)) {\n rule = rule.rules[index];\n }\n var isObject = typeof (rule.value) === 'object';\n if (this.allowValidation && (isNullOrUndefined(index) || (isObject ? rule.value.length > 0 : rule.value))) {\n var valElem = ruleElem.querySelectorAll('.e-rule-value .e-control');\n if (valElem.length > 0) {\n if (valElem[0].className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0], 'tooltip').destroy();\n }\n else if (valElem[0].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[0].parentElement, 'tooltip').destroy();\n }\n if (valElem[1] && valElem[1].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[1].parentElement, 'tooltip').destroy();\n }\n if (valElem[2] && valElem[2].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(valElem[2].parentElement, 'tooltip').destroy();\n }\n }\n }\n };\n QueryBuilder.prototype.getFormat = function (format) {\n var formatOptions;\n if (format) {\n if (typeof (format) === 'string') {\n formatOptions = { type: 'dateTime' };\n if (format === 'short' || format === 'yMd') {\n formatOptions.type = 'date';\n formatOptions.skeleton = format;\n }\n else {\n formatOptions.format = format;\n }\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: format.skeleton };\n }\n }\n else {\n formatOptions = { type: 'date', skeleton: 'yMd' };\n }\n return formatOptions;\n };\n QueryBuilder.prototype.findGroupByIdx = function (groupIdx, rule, isRoot) {\n var ruleColl = rule.rules;\n var dupRuleColl = [];\n if (!isRoot) {\n for (var j = 0, jLen = ruleColl.length; j < jLen; j++) {\n rule = ruleColl[j];\n if (rule.rules) {\n dupRuleColl.push(rule);\n }\n }\n return dupRuleColl[groupIdx];\n }\n return rule;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n QueryBuilder.prototype.destroy = function () {\n this.isDestroy = true;\n var queryElement = this.element;\n if (!queryElement) {\n return;\n }\n var element;\n var i;\n var len;\n var tooltip;\n _super.prototype.destroy.call(this);\n element = this.element.querySelectorAll('.e-addrulegroup');\n len = element.length;\n for (i = 0; i < len; i++) {\n getComponent(element[i], 'dropdown-btn').destroy();\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-filter .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-filter .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n }\n else {\n getComponent(element[i], 'dropdowntree').destroy();\n }\n detach(element[i]);\n }\n tooltip = this.element.querySelectorAll('.e-rule-operator .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n element = this.element.querySelectorAll('.e-rule-operator .e-control:not(.e-tooltip)');\n len = element.length;\n for (i = 0; i < len; i++) {\n if (getComponent(element[i], 'dropdownlist')) {\n getComponent(element[i], 'dropdownlist').destroy();\n detach(element[i]);\n }\n }\n tooltip = this.element.querySelectorAll('.e-rule-value .e-control.e-tooltip');\n for (i = 0; i < tooltip.length; i++) {\n getComponent(tooltip[i], 'tooltip').destroy();\n }\n this.isImportRules = false;\n this.unWireEvents();\n this.levelColl[this.element.id + '_group0'] = [0];\n this.element.innerHTML = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.portals && this.portals.length) {\n this.clearQBTemplate();\n }\n var qbDdlElems = this.element.querySelectorAll('.qb-dropdownlist');\n if (qbDdlElems && qbDdlElems.length > 0) {\n for (i = 0; i < qbDdlElems.length; i++) {\n var ddlElem = qbDdlElems[i];\n if (this.element.contains(ddlElem)) {\n var targetInput = ddlElem.tagName === 'INPUT' ? ddlElem : ddlElem.querySelector('input');\n if (targetInput) {\n var ddlInst = getComponent(targetInput, 'dropdownlist');\n if (ddlInst) {\n if (ddlInst.close) {\n ddlInst.close = null;\n }\n if (ddlInst.open) {\n ddlInst.open = null;\n }\n if (ddlInst.change) {\n ddlInst.change = null;\n }\n ddlInst.destroy();\n }\n }\n }\n }\n }\n // Cleanup orphaned popup elements\n var popupElement = this.element.querySelectorAll('.e-popup.e-dropdownlist');\n if (popupElement && popupElement.length > 0) {\n for (i = 0; i < popupElement.length; i++) {\n popupElement[i].remove();\n }\n }\n classList(this.element, [], ['e-rtl', 'e-responsive', 'e-device']);\n this.isDestroy = false;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds single or multiple rules.\n *\n * @param {RuleModel[]} rule - 'rule collection' to be passed to add the rules.\n * @param {string} groupID - 'group id' to be passed to add the rule in groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addRules = function (rule, groupID) {\n groupID = this.element.id + '_' + groupID;\n this.isPublic = true;\n for (var i = 0, len = rule.length; i < len; i++) {\n this.addRuleElement(document.getElementById(groupID), rule[i]);\n }\n this.isPublic = false;\n };\n /**\n * Adds single or multiple groups, which contains the collection of rules.\n *\n * @param {RuleModel[]} groups - 'group collection' to be passed to add the groups.\n * @param {string} groupID - 'group id' to be passed to add the groups.\n * @returns {void}.\n */\n QueryBuilder.prototype.addGroups = function (groups, groupID) {\n if (this.isAddSuccess || this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount) {\n groupID = this.element.id + '_' + groupID;\n var groupElem = document.getElementById(groupID);\n var temp = this.groupIndex;\n var rule = this.getParentGroup(groupElem);\n var grouplen = groups.length;\n if (grouplen) {\n this.isPublic = true;\n for (var i = 0, len = groups.length; i < len; i++) {\n this.updatedRule = {\n isLocked: groups[i].isLocked, condition: groups[i].condition,\n not: groups[i].not\n };\n this.importRules(groups[i], groupElem, false, groups[i].not);\n }\n this.isPublic = false;\n }\n else {\n var condition = 'and';\n var not = false;\n var isLocked = false;\n if (this.updatedRule) {\n condition = this.updatedRule.condition;\n not = this.updatedRule.not;\n isLocked = this.updatedRule.isLocked;\n }\n if (this.groupCloned && this.target instanceof HTMLElement &&\n this.getGroup(this.target).rules.length > 1) {\n var parent_1 = this.element.querySelector('#' + groupID);\n var allContainers = parent_1.querySelectorAll(':scope > .e-group-body > .e-rule-list > [class*=\"-container\"]');\n var topLevelGroups = parent_1.querySelectorAll(':scope > .e-group-body > .e-rule-list > .e-group-container');\n if (topLevelGroups.length > 0 && groupID !== 'querybuilder_group0' && !(this.isAngular && groupID === this.initialID + '_group0')) {\n var lastGroupIndex = -1;\n var lastGroup = topLevelGroups[topLevelGroups.length - 1];\n for (var i = 0; i < allContainers.length; i++) {\n if (allContainers[i] === lastGroup) {\n lastGroupIndex = i;\n break;\n }\n }\n this.groupIndex = lastGroupIndex - 1;\n }\n }\n if (this.groupIndex < 0) {\n if (this.enableNotCondition) {\n rule.rules.push({ 'condition': condition, 'not': not, rules: [] });\n }\n else {\n rule.rules.push({ 'condition': condition, rules: [] });\n }\n }\n else {\n if (this.enableNotCondition) {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, not: not, rules: [], isLocked: isLocked });\n }\n else {\n rule.rules.splice(this.groupIndex + 1, 0, { condition: condition, rules: [], isLocked: isLocked });\n }\n }\n if (this.groupCloned) {\n this.groupIndex = temp;\n }\n }\n if (!this.headerTemplate) {\n this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);\n }\n }\n };\n QueryBuilder.prototype.initWrapper = function () {\n this.isInitialLoad = true;\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableSeparateConnector) {\n addClass([this.element], 'e-multi-connector');\n }\n if (this.enableRtl) {\n addClass([this.element], 'e-rtl');\n }\n if (this.width) {\n this.element.style.width = this.width;\n }\n if (this.height) {\n this.element.style.height = this.height;\n }\n if (this.rule.rules.length) {\n this.isImportRules = true;\n }\n else {\n this.addGroupElement(false, this.element);\n }\n if (Browser.isDevice || (window.innerWidth < 768 && !this.isPropChange) || this.displayMode === 'Vertical') {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.element.style.width = '100%';\n this.element.classList.add('e-device');\n }\n removeClass(this.element.querySelectorAll('.e-rule-container'), 'e-horizontal-mode');\n addClass(this.element.querySelectorAll('.e-rule-container'), 'e-vertical-mode');\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n if (this.summaryView) {\n if (this.isImportRules) {\n this.renderSummary();\n }\n else {\n this.renderSummaryCollapse();\n }\n }\n else {\n if (this.columns && this.columns.length && this.isImportRules) {\n this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);\n var mRules = extend({}, this.rule, {}, true);\n this.isRefreshed = true;\n this.setGroupRules(mRules);\n this.isRefreshed = false;\n }\n else if (this.columns && this.columns.length) {\n this.addRuleElement(this.element.querySelector('.e-group-container'), {});\n }\n this.notGroupRtl();\n if (this.readonly) {\n this.enableReadonly();\n }\n var buttons = this.element.querySelectorAll('label.e-btn');\n var button = void 0;\n for (var i = 0; i < buttons.length; i++) {\n button = buttons.item(i);\n rippleEffect(button, { selector: '.e-btn' });\n }\n }\n };\n QueryBuilder.prototype.renderSummary = function () {\n var contentElem = this.createElement('div', {\n attrs: {\n class: 'e-summary-content',\n id: this.element.id + '_summary_content'\n }\n });\n var textElem = this.createElement('textarea', { attrs: { class: 'e-summary-text', readonly: 'true' }, styles: 'max-height:500px' });\n var editElem = this.createElement('button', { attrs: { type: 'button', class: 'e-edit-rule e-css e-btn e-small e-flat e-primary' } });\n var divElem = this.createElement('div', { attrs: { class: 'e-summary-btndiv' } });\n contentElem.appendChild(textElem);\n textElem.textContent = this.getSqlFromRules(this.rule);\n editElem.textContent = this.l10n.getConstant('Edit');\n divElem.appendChild(editElem);\n contentElem.appendChild(divElem);\n this.element.appendChild(contentElem);\n };\n QueryBuilder.prototype.renderSummaryCollapse = function () {\n var collapseElem = this.createElement('div', {\n attrs: {\n class: 'e-collapse-rule e-icons',\n title: this.l10n.getConstant('SummaryViewTitle')\n }\n });\n this.element.querySelector('.e-group-header').appendChild(collapseElem);\n };\n QueryBuilder.prototype.columnSort = function () {\n if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));\n }\n else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));\n }\n };\n QueryBuilder.prototype.onChangeNotGroup = function () {\n this.element.innerHTML = '';\n this.groupIdCounter = 0;\n if (!this.headerTemplate) {\n if (this.enableNotCondition) {\n var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });\n if (this.groupElem.querySelector('.e-btn-group')) {\n this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));\n }\n }\n else {\n this.groupElem.querySelector('.e-qb-toggle').remove();\n }\n }\n this.setProperties({ rule: this.checkNotGroup(this.rule) }, true);\n this.initWrapper();\n };\n QueryBuilder.prototype.notGroupRtl = function () {\n if (this.enableRtl) {\n addClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n else {\n removeClass(this.element.querySelectorAll('.e-btn-group'), 'e-rtl');\n }\n };\n QueryBuilder.prototype.checkNotGroup = function (rule) {\n var orgRule;\n if (rule.rules) {\n for (var i = 0; i < rule.rules.length; i++) {\n orgRule = rule.rules[i];\n orgRule = this.checkNotGroup(orgRule);\n rule.rules[i] = orgRule;\n }\n }\n if (!isNullOrUndefined(rule.not)) {\n if (this.enableNotCondition) {\n rule.not = false;\n }\n delete rule.not;\n }\n else if (this.enableNotCondition && !isNullOrUndefined(rule.condition)) {\n rule.not = false;\n }\n return rule;\n };\n QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {\n var properties = Object.keys(newProp);\n this.isPropChange = true;\n var groupElem = this.element.querySelector('.e-group-container');\n var summaryElem = this.element.querySelector('.e-summary-content');\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'summaryView':\n if (newProp.summaryView) {\n groupElem.style.display = 'none';\n if (this.element.querySelectorAll('.e-summary-content').length < 1) {\n this.renderSummary();\n summaryElem = this.element.querySelector('.e-summary-content');\n }\n else {\n this.element.querySelector('.e-summary-text').textContent = this.getSqlFromRules(this.rule);\n }\n summaryElem.style.display = 'block';\n }\n else {\n if (groupElem.querySelectorAll('.e-collapse-rule').length > -1) {\n this.renderSummaryCollapse();\n }\n groupElem.style.display = 'block';\n summaryElem.style.display = 'none';\n }\n break;\n case 'displayMode':\n this.refresh();\n break;\n case 'showButtons':\n if (!isNullOrUndefined(newProp.showButtons.lockGroup)) {\n if (newProp.showButtons.lockGroup) {\n removeClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.lockRule)) {\n if (newProp.showButtons.lockRule) {\n removeClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-lock-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneGroup)) {\n if (newProp.showButtons.cloneGroup) {\n removeClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-grp-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.cloneRule)) {\n if (newProp.showButtons.cloneRule) {\n removeClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-clone-rule-btn'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.ruleDelete)) {\n if (newProp.showButtons.ruleDelete) {\n removeClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-rule-delete'), 'e-button-hide');\n }\n }\n if (!isNullOrUndefined(newProp.showButtons.groupDelete)) {\n if (newProp.showButtons.groupDelete) {\n removeClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n else {\n addClass(this.element.querySelectorAll('.e-deletegroup'), 'e-button-hide');\n }\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n else {\n removeClass([this.element], 'e-rtl');\n this.notGroupRtl();\n }\n break;\n case 'enablePersistence':\n this.enablePersistence = newProp.enablePersistence;\n break;\n case 'dataSource':\n this.dataSource = newProp.dataSource;\n this.refresh();\n break;\n case 'columns':\n this.columns = newProp.columns;\n this.columnSort();\n this.updateSubFieldsFromColumns(this.columns);\n break;\n case 'sortDirection':\n this.sortDirection = newProp.sortDirection;\n this.columnSort();\n break;\n case 'maxGroupCount':\n this.maxGroupCount = newProp.maxGroupCount;\n break;\n case 'height':\n this.height = newProp.height;\n this.element.style.height = this.height;\n break;\n case 'rule':\n if (this.rule.rules.length === 0 && !isNullOrUndefined(this.rule)) {\n this.reset();\n }\n this.setProperties({ rule: newProp.rule }, true);\n newProp.rule = this.getRuleCollection(this.rule, false);\n this.setRules(this.rule);\n break;\n case 'width':\n this.width = newProp.width;\n this.element.style.width = this.width;\n break;\n case 'locale':\n this.locale = newProp.locale;\n this.intl = new Internationalization(this.locale);\n this.isLocale = true;\n this.refresh();\n this.isLocale = false;\n break;\n case 'enableNotCondition':\n this.onChangeNotGroup();\n break;\n case 'readonly':\n this.isReadonly = newProp.readonly;\n this.enableReadonly();\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.refresh();\n break;\n case 'enableSeparateConnector':\n this.enableSeparateConnector = newProp.enableSeparateConnector;\n this.refresh();\n break;\n }\n }\n this.isPropChange = false;\n };\n QueryBuilder.prototype.preRender = function () {\n this.element.id = this.element.id || getUniqueID('ej2-querybuilder');\n this.initialID = this.element.id;\n this.defaultLocale = {\n StartsWith: 'Starts With',\n DoesNotStartWith: 'Does Not Start With',\n EndsWith: 'Ends With',\n DoesNotEndWith: 'Does Not End With',\n Contains: 'Contains',\n DoesNotContain: 'Does Not Contain',\n NotLike: 'Not Like',\n Like: 'Like',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n Between: 'Between',\n NotBetween: 'Not Between',\n In: 'In',\n NotIn: 'Not In',\n Remove: 'REMOVE',\n SelectField: 'Select a field',\n SelectOperator: 'Select operator',\n DeleteRule: 'Remove this condition',\n DeleteGroup: 'Delete group',\n AddGroup: 'Add Group',\n AddCondition: 'Add Condition',\n Edit: 'EDIT',\n ValidationMessage: 'This field is required',\n SummaryViewTitle: 'Summary View',\n OtherFields: 'Other Fields',\n AND: 'AND',\n OR: 'OR',\n NOT: 'NOT',\n SelectValue: 'Enter Value',\n IsEmpty: 'Is Empty',\n IsNotEmpty: 'Is Not Empty',\n IsNull: 'Is Null',\n IsNotNull: 'Is Not Null',\n True: 'true',\n False: 'false',\n AddButton: 'Add Group/Condition',\n CloneGroup: 'Clone Group',\n LockGroup: 'Lock Group',\n CloneRule: 'Clone Rule',\n LockRule: 'Lock Rule',\n UnlockRule: 'Unlock Rule',\n UnlockGroup: 'Unlock Group'\n };\n this.l10n = new L10n('querybuilder', this.defaultLocale, this.locale);\n this.intl = new Internationalization(this.locale);\n this.groupIdCounter = 0;\n this.subFilterCounter = 0;\n this.ruleIdCounter = 0;\n this.btnGroupId = 0;\n this.isImportRules = false;\n this.parser = [];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', key: this.l10n.getConstant('StartsWith') },\n { value: 'notstartswith', key: this.l10n.getConstant('DoesNotStartWith') },\n { value: 'endswith', key: this.l10n.getConstant('EndsWith') },\n { value: 'notendswith', key: this.l10n.getConstant('DoesNotEndWith') },\n { value: 'contains', key: this.l10n.getConstant('Contains') },\n { value: 'notcontains', key: this.l10n.getConstant('DoesNotContain') },\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') },\n { value: 'isempty', key: this.l10n.getConstant('IsEmpty') },\n { value: 'isnotempty', key: this.l10n.getConstant('IsNotEmpty') }\n ],\n dateOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') }\n ],\n booleanOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: [\n { value: 'equal', key: this.l10n.getConstant('Equal') },\n { value: 'greaterthanorequal', key: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'greaterthan', key: this.l10n.getConstant('GreaterThan') },\n { value: 'between', key: this.l10n.getConstant('Between') },\n { value: 'lessthan', key: this.l10n.getConstant('LessThan') },\n { value: 'notbetween', key: this.l10n.getConstant('NotBetween') },\n { value: 'lessthanorequal', key: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', key: this.l10n.getConstant('NotEqual') },\n { value: 'in', key: this.l10n.getConstant('In') },\n { value: 'notin', key: this.l10n.getConstant('NotIn') }\n ]\n };\n this.operators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: 'IN', notin: 'NOT IN',\n lessthanorequal: '<=', startswith: 'LIKE', endswith: 'LIKE', between: 'BETWEEN', notbetween: 'NOT BETWEEN', contains: 'LIKE',\n isnull: 'IS NULL', isnotnull: 'IS NOT NULL', isempty: 'IS EMPTY', isnotempty: 'IS NOT EMPTY', notstartswith: 'NOT LIKE',\n notendswith: 'NOT LIKE', notcontains: 'NOT LIKE'\n };\n this.sqlOperators = {\n equal: '=', notequal: '!=', greaterthan: '>', greaterthanorequal: '>=', lessthan: '<', in: this.l10n.getConstant('In').toUpperCase(),\n notin: this.l10n.getConstant('NotIn').toUpperCase(), lessthanorequal: '<=', startswith: this.l10n.getConstant('Like').toUpperCase(),\n endswith: this.l10n.getConstant('Like').toUpperCase(), between: this.l10n.getConstant('Between').toUpperCase(),\n notbetween: this.l10n.getConstant('NotBetween').toUpperCase(), contains: this.l10n.getConstant('Like').toUpperCase(),\n isnull: this.l10n.getConstant('IsNull').toUpperCase(), isnotnull: this.l10n.getConstant('IsNotNull').toUpperCase(),\n isempty: this.l10n.getConstant('IsEmpty').toUpperCase(), isnotempty: this.l10n.getConstant('IsNotEmpty').toUpperCase(),\n notstartswith: this.l10n.getConstant('NotLike').toUpperCase(), notendswith: this.l10n.getConstant('NotLike').toUpperCase(),\n notcontains: this.l10n.getConstant('NotLike').toUpperCase()\n };\n if (!this.fields) {\n this.fields = { text: 'label', value: 'field' };\n }\n };\n QueryBuilder.prototype.render = function () {\n this.levelColl = {};\n this.items = [\n {\n text: this.l10n.getConstant('AddGroup'),\n iconCss: 'e-icons e-add-icon e-addgroup'\n },\n {\n text: this.l10n.getConstant('AddCondition'),\n iconCss: 'e-icons e-add-icon e-addrule'\n }\n ];\n this.ruleElem = this.ruleTemplate();\n this.groupElem = this.groupTemplate();\n var stringOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n var numberOper = [\n { value: 'isnull', key: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', key: this.l10n.getConstant('IsNotNull') }\n ];\n this.customOperators['stringOperator'] = this.customOperators['stringOperator'].concat(stringOper); // tslint:disable-line\n this.customOperators['numberOperator'] = this.customOperators['numberOperator'].concat(numberOper); // tslint:disable-line\n if (this.dataSource instanceof DataManager) {\n this.dataManager = this.dataSource;\n if (this.columns && this.columns.length) {\n this.dataColl = this.columns;\n this.initControl();\n }\n else {\n this.executeDataManager(new Query().take(1));\n }\n }\n else {\n this.dataManager = new DataManager(this.dataSource);\n this.dataColl = this.dataManager.executeLocal(new Query());\n this.initControl();\n }\n this.renderComplete();\n if (this.allowDragAndDrop) {\n this.initializeDrag();\n }\n };\n QueryBuilder.prototype.initializeDrag = function () {\n this.draggable = new Draggable(this.element, {\n dragTarget: '.e-drag-qb-rule',\n distance: 5,\n helper: this.helper.bind(this),\n dragStart: this.dragStartHandler.bind(this),\n drag: this.dragHandler.bind(this),\n dragStop: this.dragStopHandler.bind(this),\n isReplaceDragEle: true,\n isPreventSelect: false,\n abort: '.e-parent-header',\n isDragScroll: true,\n enableAutoScroll: true\n });\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n QueryBuilder.prototype.helper = function (e) {\n var target = this.draggable.currentStateTarget;\n if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {\n return false;\n }\n var visualElement = this.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + this.element.offsetWidth\n });\n var cloneElement;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n cloneElement = closest(target, '.e-group-container').cloneNode(true);\n closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');\n }\n else {\n visualElement.classList.add('e-group-body');\n cloneElement = this.createElement('div', { className: 'e-rule-container' });\n var ruleElement = closest(target, '.e-rule-field').cloneNode(true);\n cloneElement.appendChild(ruleElement);\n closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');\n }\n visualElement.appendChild(cloneElement);\n var childElements = visualElement.querySelectorAll('*');\n childElements.forEach(function (child) {\n child.removeAttribute('id');\n });\n this.element.appendChild(visualElement);\n return visualElement;\n };\n QueryBuilder.prototype.dragStartHandler = function (e) {\n this.draggedRule = e.target;\n this.isDragEventPrevent = false;\n document.body.classList.add('e-prevent-select');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dragElement = e.dragElement;\n var rule = closest(e.target, '.e-rule-container');\n var group = closest(e.target, '.e-group-container');\n var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };\n this.trigger('dragStart', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragHandler = function (e) {\n if (this.isDragEventPrevent) {\n return;\n }\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n if (isNullOrUndefined(e.target)) {\n return;\n }\n if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||\n !closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {\n this.dragElement.classList.add('e-notallowedcur');\n return;\n }\n else {\n this.dragElement.classList.remove('e-notallowedcur');\n }\n var targetElem = closest(e.target, '.e-rule-container');\n var grpElem = closest(e.target, '.e-group-container');\n if (targetElem) {\n var rect = targetElem.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n targetElem.classList.add('e-drag-rule-top-line');\n }\n else if (distanceToBottom < threshold) {\n targetElem.classList.add('e-drag-rule-bottom-line');\n }\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {\n var rect = e.target.children[0].getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToTop = mouseY - rect.top;\n var threshold = 20; // Adjust as needed\n if (distanceToTop < threshold) {\n e.target.classList.add('e-drag-rule-top-line');\n }\n }\n else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {\n if (!grpElem) {\n grpElem = e.target;\n }\n if (grpElem.id.indexOf('group0') > -1) {\n var rect = e.target.getBoundingClientRect();\n var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;\n var distanceToBottom = rect.bottom - mouseY;\n var threshold = 20; // Adjust as needed\n if (distanceToBottom < threshold) {\n e.target.classList.add('e-drag-rule-bottom-line');\n }\n }\n }\n var dragEventArgs = {\n dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,\n dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false\n };\n this.trigger('drag', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\n };\n QueryBuilder.prototype.dragStopHandler = function (e) {\n var _this = this;\n if (this.isDragEventPrevent) {\n return;\n }\n var targetGroup = closest(e.target, '.e-rule-container');\n if (isNullOrUndefined(targetGroup) && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector) {\n targetGroup = closest(e.target.parentElement.previousElementSibling, '.e-rule-container');\n }\n var isPreventelem;\n if (!isNullOrUndefined(e.helper)) {\n isPreventelem = closest(e.helper, '.e-notallowedcur');\n }\n var prevRule;\n if (!isPreventelem) {\n var targetGrp = closest(e.target, '.e-group-container');\n var dropEventArgs = {\n cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id\n : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null\n };\n this.trigger('drop', dropEventArgs);\n if (dropEventArgs.cancel) {\n isPreventelem = true;\n }\n prevRule = this.getValidRules();\n }\n this.prvtEvtTgrDaD = true;\n var tgrt = this.enableSeparateConnector && e.target.parentElement &&\n e.target.parentElement.classList.contains('e-btn-group') ? e.target.parentElement.previousElementSibling : e.target;\n if (targetGroup && !isPreventelem) {\n var groupId_1 = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-rule-field') ||\n this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(targetGroup), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElem = closest(targetGroup, '.e-group-container');\n var cloneGroupElem = groupElem.cloneNode(true);\n var isRuleArea = false;\n if (closest(e.target, '.e-group-container') && closest(e.target, '.e-group-container').id === this.initialID + '_group0') {\n isRuleArea = true;\n }\n var nestGrpElem = groupElem.querySelectorAll('.e-group-container');\n nestGrpElem.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n var ruleIds = [];\n var dropInd = void 0;\n for (var i = 0; i < ruleElems.length; i++) {\n if (ruleElems[i].classList.contains('e-drag-rule-top-line') ||\n ruleElems[i].classList.contains('e-drag-rule-bottom-line')) {\n dropInd = i;\n }\n ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);\n }\n this.deleteRules(ruleIds);\n // Calculate index considering both groups and rules in the overall rules collection\n var overallDropIndex = 0;\n var ruleListElem = cloneGroupElem.querySelector('.e-rule-list');\n if (ruleListElem) {\n var droppedElement = void 0;\n for (var j = 0; j < ruleListElem.children.length; j++) {\n var child = ruleListElem.children[j];\n if (child.classList.contains('e-drag-rule-top-line') || child.classList.contains('e-drag-rule-bottom-line')) {\n droppedElement = child;\n overallDropIndex = j;\n break;\n }\n }\n }\n if (targetGroup.classList.contains('e-drag-rule-top-line')) {\n groupRule.rules.splice(isRuleArea ? overallDropIndex : dropInd, 0, rule);\n }\n else {\n groupRule.rules.splice(isRuleArea ? overallDropIndex + 1 : dropInd + 1, 0, rule);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_1);\n }\n else {\n _this.addGroups([rule], groupId_1);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_1);\n }\n else {\n _this.addRules([rule], groupId_1);\n }\n }\n });\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children.length === 0 && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n else if (tgrt.classList.contains('e-rule-list') && tgrt.children[0].classList.contains('e-group-container') && !isPreventelem) {\n var groupElem = closest(tgrt, '.e-group-container');\n var groupId_2 = groupElem.id.split(this.element.id + '_')[1].split('_')[0];\n var rule = void 0;\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n var groupRule = extend([], this.getGroup(tgrt), [], true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (groupRule.properties) {\n groupRule = groupRule.properties;\n }\n var groupElems = tgrt.querySelectorAll('.e-group-container');\n groupElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteGroup(ele);\n }\n });\n var ruleElems = groupElem.querySelectorAll('.e-rule-container');\n ruleElems.forEach(function (ele) {\n if (_this.element.querySelector('#' + ele.id)) {\n _this.deleteRule(ele);\n }\n });\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n this.addGroups([rule], groupId_2);\n }\n else {\n this.addRules([rule], groupId_2);\n }\n groupRule.rules.forEach(function (rule) {\n if (_this.enableSeparateConnector) {\n if (!rule.rules) {\n _this.addRules([rule], groupId_2);\n }\n else {\n _this.addGroups([rule], groupId_2);\n }\n }\n else {\n if (rule.condition) {\n _this.addGroups([rule], groupId_2);\n }\n else {\n _this.addRules([rule], groupId_2);\n }\n }\n });\n }\n else if ((closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) && !isPreventelem) {\n var rule = void 0;\n targetGroup = closest(e.target, '.e-group-container');\n if (!targetGroup && e.target.classList.contains('e-group-container')) {\n targetGroup = e.target;\n }\n var groupId = targetGroup.id.split(this.element.id + '_')[1].split('_')[0];\n if (groupId === 'group0') {\n if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {\n rule = this.getGroup(this.draggedRule);\n this.deleteGroup(closest(this.draggedRule, '.e-group-container'));\n }\n else {\n rule = this.getRule(this.draggedRule);\n this.deleteRule(this.draggedRule);\n }\n if (this.enableSeparateConnector) {\n if (!rule.rules) {\n this.addRules([rule], groupId);\n }\n else {\n this.addGroups([rule], groupId);\n }\n }\n else {\n if (rule.condition) {\n this.addGroups([rule], groupId);\n }\n else {\n this.addRules([rule], groupId);\n }\n }\n }\n }\n if (!isPreventelem) {\n this.trigger('ruleChange', { previousRule: prevRule, rule: this.getValidRules(), type: 'drag-and-drop' });\n }\n this.prvtEvtTgrDaD = false;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n if (e.helper && e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n };\n QueryBuilder.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return templateCompiler(template);\n }\n }\n return undefined;\n };\n QueryBuilder.prototype.executeDataManager = function (query) {\n var _this = this;\n var data = this.dataManager.executeQuery(query);\n var deferred = new Deferred();\n data.then(function (e) {\n if (e.actual && e.actual.result) {\n _this.dataColl = e.actual.result;\n }\n else {\n _this.dataColl = e.result;\n }\n _this.initControl();\n }).catch(function (e) {\n deferred.reject(e);\n });\n };\n QueryBuilder.prototype.initControl = function () {\n this.initialize();\n this.initWrapper();\n this.wireEvents();\n };\n QueryBuilder.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n if (target && ((target.closest && target.closest('.e-popup')))) {\n this.isPopupScroll = true;\n }\n else {\n this.isPopupScroll = false;\n }\n };\n QueryBuilder.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickEventHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);\n EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n this.boundScrollHandler = this.scrollEventHandler.bind(this);\n document.addEventListener('wheel', this.boundScrollHandler);\n document.addEventListener('scroll', this.boundScrollHandler);\n if (this.allowDragAndDrop) {\n EventHandler.add(document, 'keydown', this.keyBoardHandler, this);\n }\n this.boundResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundResizeHandler);\n };\n QueryBuilder.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickEventHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);\n EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n document.removeEventListener('wheel', this.boundScrollHandler);\n document.removeEventListener('scroll', this.boundScrollHandler);\n this.boundScrollHandler = null;\n EventHandler.remove(document, 'keydown', this.keyBoardHandler);\n if (this.boundResizeHandler) {\n window.removeEventListener('resize', this.boundResizeHandler);\n this.boundResizeHandler = null;\n }\n };\n QueryBuilder.prototype.getParentGroup = function (target, isParent) {\n var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[\"\" + target];\n var len = isParent ? groupLevel.length - 1 : groupLevel.length;\n var rule = this.rule;\n for (var i = 0; i < len; i++) {\n rule = this.findGroupByIdx(groupLevel[i], rule, i === 0);\n }\n return rule;\n };\n /**\n * Delete the Group\n *\n * @param {Element | string} target - 'target' to be passed to delete the group.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroup = function (target) {\n var _this = this;\n var groupElem = target;\n var groupId;\n if (typeof target === 'string') {\n groupId = this.element.id + '_' + target;\n target = document.getElementById(groupId);\n groupId = groupId.replace(this.element.id + '_', '');\n }\n else {\n groupId = groupElem.id.replace(this.element.id + '_', '');\n }\n if (groupId === 'group0' || !target) {\n return;\n }\n var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteGroupSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteGroupSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteGroupSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = target;\n var rule = this.getParentGroup(groupElem, true);\n var index = 0;\n var i = void 0;\n var len = void 0;\n var beforeRules = this.getValidRules(this.rule);\n var nextElem = groupElem.nextElementSibling;\n var prevElem = groupElem.previousElementSibling;\n var element = groupElem.querySelectorAll('.e-group-container');\n var valElem = groupElem.querySelectorAll('.e-tooltip');\n len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n for (i = 0, len = element.length; i < len; i++) {\n delete this.levelColl[element[i].id];\n }\n while (groupElem.previousElementSibling !== null) {\n groupElem = groupElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||\n groupElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n if (!this.enableSeparateConnector) {\n if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {\n removeClass([nextElem], 'e-separate-rule');\n addClass([nextElem], 'e-joined-rule');\n if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {\n addClass([prevElem], 'e-prev-joined-rule');\n }\n }\n }\n var elem = groupElem.parentElement.parentElement.parentElement;\n var removeString = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n var remRule = rule.rules[index];\n var ruleElemColl = target.querySelectorAll('.e-rule-container');\n if (remRule && remRule.rules) {\n for (var r = 0; r < remRule.rules.length; r++) {\n var column = this.getColumn(remRule.rules[r].field);\n if (ruleElemColl[r]) {\n var isTemplateRendered = ruleElemColl[r].querySelector('.e-template-value');\n if (column && (column.ruleTemplate || (this.isPlatformTemplate(column) && isTemplateRendered))) {\n removeString.push(ruleElemColl[r].id);\n }\n }\n }\n }\n }\n detach(target);\n if (this.headerTemplate) {\n this.clearQBTemplate([target.id]);\n }\n if (removeString.length) {\n this.clearQBTemplate(removeString);\n }\n rule.rules.splice(index, 1);\n delete this.levelColl[args.groupID];\n this.refreshLevelColl();\n this.disableRuleCondition(elem, rule);\n if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||\n (this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {\n detach(prevElem);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');\n }\n };\n QueryBuilder.prototype.isPlatformTemplate = function (column) {\n var isTemp = false;\n isTemp = column.template && (typeof column.template === 'string' || column.template.create === undefined);\n return isTemp;\n };\n QueryBuilder.prototype.deleteRule = function (target) {\n var _this = this;\n var groupElem = closest(target, '.e-group-container');\n var groupID = groupElem.id.replace(this.element.id + '_', '');\n var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');\n var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('beforeChange', args, function (observedChangeArgs) {\n _this.deleteRuleSuccessCallBack(observedChangeArgs, target);\n });\n }\n else {\n this.deleteRuleSuccessCallBack(args, target);\n }\n };\n QueryBuilder.prototype.deleteRuleSuccessCallBack = function (args, target) {\n if (!args.cancel) {\n var groupElem = closest(target, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n var ruleElem = closest(target, '.e-rule-container');\n var beforeRules = this.getValidRules(this.rule);\n var prevElem = ruleElem.previousElementSibling;\n var index = 0;\n var clnruleElem = ruleElem;\n var nextElem = ruleElem.nextElementSibling;\n var valElem = ruleElem.querySelectorAll('.e-tooltip');\n var i = void 0;\n var len = valElem.length;\n for (i = 0; i < len; i++) {\n getComponent(valElem[i], 'tooltip').destroy();\n }\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n var column = this.getColumn(rule.rules[index].field);\n if (column && column.template && clnruleElem.querySelector('.e-template')) {\n this.templateDestroy(column, clnruleElem.querySelector('.e-template').id);\n }\n if (!prevElem || prevElem.className.indexOf('e-rule-container') < 0) {\n if (nextElem) {\n removeClass([nextElem], 'e-joined-rule');\n }\n }\n if (!nextElem || nextElem.className.indexOf('e-rule-container') < 0) {\n if (prevElem) {\n removeClass([prevElem], 'e-prev-joined-rule');\n }\n }\n var isTemplateRendered = clnruleElem.querySelector('.e-template-value');\n // eslint-disable\n try {\n if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {\n var previousElem = clnruleElem.previousElementSibling;\n var nextElem_1 = clnruleElem.nextElementSibling;\n if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))\n || (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {\n if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {\n var rule_1 = this.getRule(previousElem.previousElementSibling);\n rule_1.condition = null;\n }\n detach(previousElem);\n }\n else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))\n || (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {\n detach(nextElem_1);\n }\n }\n detach(clnruleElem);\n }\n catch (err) {\n return;\n }\n if (column && column.ruleTemplate) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n if (column && this.isPlatformTemplate(column) && isTemplateRendered) {\n this.clearQBTemplate([clnruleElem.id]);\n }\n rule.rules.splice(index, 1);\n if (!(rule.rules[0] && rule.rules[0].rules)) {\n this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);\n }\n var tooltipElem = this.element.querySelectorAll('.e-tooltip');\n for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {\n getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);\n }\n if (!this.isImportRules && !this.prvtEvtTgrDaD) {\n this.trigger('change', args);\n }\n this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');\n }\n };\n QueryBuilder.prototype.setGroupRules = function (rule, isRoot) {\n if (this.headerTemplate && isRoot) {\n this.isRoot = true;\n }\n this.clearQBTemplate();\n this.reset();\n this.groupIdCounter = 1;\n this.ruleIdCounter = 0;\n this.isImportRules = true;\n this.setProperties({ rule: rule }, true);\n rule = this.getRuleCollection(this.rule, false);\n this.importRules(this.rule, this.element.querySelector('.e-group-container'), true, this.rule.not, isRoot);\n if (rule.isLocked) {\n var lockGrpTarget = this.element.querySelector('.e-group-container').querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n this.isImportRules = false;\n };\n QueryBuilder.prototype.keyBoardHandler = function (e) {\n if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {\n e.preventDefault();\n }\n else if (e.code === 'Escape' && this.allowDragAndDrop) {\n this.isDragEventPrevent = true;\n document.body.classList.remove('e-prevent-select');\n var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-bottom-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-drag-rule-top-line');\n });\n borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');\n borderLineElem.forEach(function (ele) {\n ele.classList.remove('e-qb-dragging-rule');\n });\n var dragElemnet = this.element.querySelector('.e-cloneproperties');\n if (dragElemnet) {\n remove(dragElemnet);\n }\n if (this.enableSeparateConnector) {\n this.refresh();\n }\n }\n };\n QueryBuilder.prototype.windowResizeHandler = function () {\n if (Browser.isDevice || window.innerWidth < 768) {\n this.displayMode = 'Vertical';\n }\n else {\n this.displayMode = 'Horizontal';\n }\n };\n QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact || this.isAngular) {\n this.clearTemplate(ruleElemColl);\n }\n };\n QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {\n if (!this.headerTemplate) {\n if (this.readonly) {\n return;\n }\n var count = groupElem.querySelector('.e-rule-list').childElementCount;\n var andElem = groupElem.querySelector('.e-btngroup-and');\n var orElem = groupElem.querySelector('.e-btngroup-or');\n if (count > 1) {\n andElem.disabled = false;\n orElem.disabled = false;\n if (orElem.nextElementSibling.classList.contains('e-btn-disable') ||\n andElem.nextElementSibling.classList.contains('e-btn-disable')) {\n orElem.nextElementSibling.classList.remove('e-btn-disable');\n andElem.nextElementSibling.classList.remove('e-btn-disable');\n }\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = groupElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded) {\n if (rules && rules.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (this.enableSeparateConnector && !isNewRuleAdded) {\n var index = 0;\n var element = void 0;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');\n var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');\n andElem = andGroup[andGroup.length - (1 + index)];\n orElem = orGroup[orGroup.length - (1 + index)];\n if (this.isImportRules) {\n andElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-and');\n orElem = groupElem.parentElement.querySelector('.e-btn-group.e-multi-connector .e-btngroup-or');\n }\n element = andGroup[andGroup.length - (1 + index)];\n if (element && element.parentElement && element.parentElement.style.display === 'none') {\n index++;\n }\n else {\n break;\n }\n }\n var elem = void 0;\n var tempElem = groupElem.previousElementSibling;\n while (tempElem) {\n if (tempElem.classList.contains('e-group-container')) {\n tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (tempElem.classList.contains('e-rule-container')) {\n elem = tempElem;\n break;\n }\n tempElem = tempElem.previousElementSibling;\n }\n if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {\n elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];\n }\n if (isNewGroup && groupElem.classList.contains('e-group-container')) {\n elem = groupElem;\n var prevRule = this.getGroup(elem);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n else if (elem) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or' && orElem) {\n orElem.checked = true;\n }\n else if (andElem) {\n andElem.checked = true;\n }\n }\n }\n else if (!isNewRuleAdded && !isNullOrUndefined(andElem)) {\n andElem.checked = false;\n andElem.disabled = true;\n orElem.checked = false;\n orElem.disabled = true;\n if (rules) {\n orElem.nextElementSibling.classList.add('e-btn-disable');\n andElem.nextElementSibling.classList.add('e-btn-disable');\n }\n }\n }\n }\n };\n /**\n * Get the valid rule or rules collection.\n *\n * @param {RuleModel} currentRule - 'currentRule' to be passed to get the valid rules.\n * @returns {RuleModel} - Valid rule or rules collection\n */\n QueryBuilder.prototype.getValidRules = function (currentRule) {\n this.isValueEmpty = true;\n if (!currentRule) {\n currentRule = this.getRules();\n }\n var ruleCondtion = currentRule.condition;\n var notCondition = currentRule.not;\n var ruleColl = extend([], currentRule.rules, [], true);\n var rule = !isNullOrUndefined(currentRule.isLocked) ?\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition, isLocked: currentRule.isLocked }, true) :\n this.getRuleCollection({ condition: ruleCondtion, rules: ruleColl, not: notCondition }, true);\n this.isValueEmpty = false;\n return rule;\n };\n QueryBuilder.prototype.getRuleCollection = function (rule, isValidRule) {\n if (isNullOrUndefined(rule)) {\n return null;\n }\n var orgRule;\n if (rule.rules && rule.rules.length && (Object.keys(rule.rules[0]).length > 6 || isValidRule)) {\n var jLen = rule.rules.length;\n for (var j = 0; j < jLen; j++) {\n orgRule = rule.rules[j];\n orgRule = this.getRuleCollection(orgRule, isValidRule);\n rule.rules[j] = orgRule;\n if (Object.keys(orgRule).length < 1 && isValidRule) {\n rule.rules.splice(j, 1);\n j--;\n jLen--;\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var customObj = rule.custom;\n if ((rule.field && rule.field !== '') && (isNullOrUndefined(customObj) || (customObj && (customObj.type !== 'question' &&\n customObj.type !== 'answer')))) {\n if (rule.operator) {\n if (rule.operator.toString().indexOf('null') > -1 || rule.operator.toString().indexOf('empty') > -1) {\n rule.value = null;\n }\n }\n if ((this.isRefreshed && this.enablePersistence) || (rule.field !== '' && rule.operator !== '' &&\n (this.isValueEmpty ? rule.value !== '' && rule.value !== undefined : rule.value !== undefined)) ||\n (customObj && customObj.isQuestion)) {\n var condition = rule.condition;\n var lockedRule = rule.isLocked;\n rule = { 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value };\n if (!isNullOrUndefined(lockedRule)) {\n rule.isLocked = lockedRule;\n }\n if (condition) {\n rule.condition = condition;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {\n rule = {};\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((rule.operator === 'between' || rule.operator === 'notbetween') && Array.isArray(rule.value) && (rule.value.length < 2 || rule.value.some(function (val) { return val === '' || val === null; }))) {\n rule = {};\n }\n }\n else {\n rule = {};\n }\n }\n else {\n if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {\n var notValue = rule.not;\n rule = {\n 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,\n 'condition': rule.condition, 'rules': rule.rules\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n if (this.enableNotCondition) {\n rule.not = notValue;\n }\n }\n else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {\n rule = {};\n }\n else {\n var isLocked = rule.isLocked;\n if (this.enableNotCondition) {\n rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };\n }\n else {\n rule = { 'condition': rule.condition, 'rules': rule.rules };\n }\n if (!isNullOrUndefined(isLocked)) {\n rule.isLocked = isLocked;\n }\n if (customObj) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = customObj;\n }\n if (rule.rules && rule.rules.length === 0) {\n rule = {};\n }\n }\n }\n return rule;\n };\n /**\n * Set the rule or rules collection.\n *\n * @param {RuleModel} rule - 'rule' to be passed to set rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.setRules = function (rule) {\n var mRules = extend({}, rule, {}, true);\n if (this.headerTemplate) {\n this.setGroupRules(mRules, true);\n }\n else {\n this.setGroupRules(mRules);\n }\n };\n /**\n * Gets the rule or rule collection.\n *\n * @returns {object} - Rule or rule collection\n */\n QueryBuilder.prototype.getRules = function () {\n var rule;\n if (this.enableNotCondition) {\n rule = { condition: this.rule.condition, rules: this.rule.rules, not: this.rule.not };\n }\n else {\n rule = { condition: this.rule.condition, rules: this.rule.rules };\n }\n if (!isNullOrUndefined(this.rule.isLocked)) {\n rule.isLocked = this.rule.isLocked;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.rule.custom) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rule.custom = this.rule.custom;\n }\n return rule;\n };\n /**\n * Gets the rule.\n *\n * @param {string | HTMLElement} elem - 'elem' to be passed to get rule.\n * @returns {object} - Rule\n */\n QueryBuilder.prototype.getRule = function (elem) {\n var ruleElem;\n var ruleId;\n var index = 0;\n if (elem instanceof HTMLElement) {\n ruleElem = closest(elem, '.e-rule-container');\n }\n else {\n ruleId = this.element.id + '_' + elem;\n ruleElem = document.getElementById(ruleId);\n }\n if (isNullOrUndefined(ruleElem)) {\n return null;\n }\n var groupElem = closest(ruleElem, '.e-group-container');\n var rule = this.getParentGroup(groupElem);\n while (ruleElem.previousElementSibling !== null) {\n ruleElem = ruleElem.previousElementSibling;\n if (!this.enableSeparateConnector || (this.enableSeparateConnector &&\n ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||\n this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||\n ruleElem.classList.contains('e-group-container'))))) {\n index++;\n }\n }\n return rule.rules[index];\n };\n /**\n * Gets the group.\n *\n * @param {string | Element} target - 'target' to be passed to get group.\n * @returns {object} -Group\n */\n QueryBuilder.prototype.getGroup = function (target) {\n if (target instanceof Element && target.className.indexOf('e-group-container') < 1) {\n target = closest(target, '.e-group-container');\n }\n var groupId = (target instanceof Element) ? target.id : this.element.id + '_' + target;\n var rule = this.getParentGroup(groupId);\n return rule;\n };\n /**\n * Deletes the group or groups based on the group ID.\n *\n * @param {string[]} groupIdColl - 'groupIdColl' to be passed to delete groups.\n * @returns {void}\n */\n QueryBuilder.prototype.deleteGroups = function (groupIdColl) {\n var i;\n var len = groupIdColl.length;\n var groupID;\n for (i = 0; i < len; i++) {\n if (groupIdColl[i] === 'group0') {\n continue;\n }\n groupID = this.element.id + '_' + groupIdColl[i];\n this.deleteGroup(document.getElementById(groupID));\n }\n };\n /**\n * Return the Query from current rules collection.\n *\n * @returns {Promise} - Query from current rules collection\n * @blazorType object\n */\n QueryBuilder.prototype.getFilteredRecords = function () {\n var predicate = this.getPredicate(this.getValidRules(this.rule));\n var dataManagerQuery = isNullOrUndefined(predicate) ? new Query() : new Query().where(predicate);\n return this.dataManager.executeQuery(dataManagerQuery);\n };\n /**\n * Deletes the rule or rules based on the rule ID.\n *\n * @param {string[]} ruleIdColl - 'ruleIdColl' to be passed to delete rules.\n * @returns {void}.\n */\n QueryBuilder.prototype.deleteRules = function (ruleIdColl) {\n var i;\n var len = ruleIdColl.length;\n var ruleID;\n for (i = 0; i < len; i++) {\n ruleID = this.element.id + '_' + ruleIdColl[i];\n this.deleteRule(document.getElementById(ruleID));\n }\n };\n /**\n * Gets the query for Data Manager.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get query.\n * @returns {string} - Query for Data Manager\n */\n QueryBuilder.prototype.getDataManagerQuery = function (rule) {\n var predicate = this.getPredicate(rule);\n var query;\n var fields = [];\n for (var i = 0, len = Object.keys(this.columns); i < len.length; i++) {\n fields.push(this.columns[i].field);\n }\n if (rule.rules.length) {\n query = new Query().select(fields).where(predicate);\n }\n else {\n query = new Query().select(fields);\n }\n return query;\n };\n /**\n * Get the predicate from collection of rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get predicate.\n * @returns {Predicate} - Predicate from collection of rules\n */\n QueryBuilder.prototype.getPredicate = function (rule) {\n var ruleColl = rule.rules;\n var pred;\n var pred2;\n var ruleValue;\n var ignoreCase = false;\n var column;\n if (!ruleColl) {\n return pred;\n }\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var operator = ruleColl[i].operator;\n if (operator === 'notstartswith') {\n operator = 'doesnotstartwith';\n }\n else if (operator === 'notendswith') {\n operator = 'doesnotendwith';\n }\n else if (operator === 'notcontains') {\n operator = 'doesnotcontain';\n }\n var keys = Object.keys(ruleColl[i]);\n ignoreCase = false;\n if (keys.indexOf('rules') > -1 && ruleColl[i].rules) {\n pred2 = this.getPredicate(ruleColl[i]);\n if (pred2) {\n if (pred) {\n if (rule.condition === 'and') {\n pred = pred.and(pred2);\n }\n else {\n pred = pred.or(pred2);\n }\n }\n else {\n pred = pred2;\n }\n }\n }\n else if (!isNullOrUndefined(operator) && !isNullOrUndefined(operator.length)) {\n var oper = ruleColl[i].operator.toLowerCase();\n var isDateFilter = false;\n var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];\n if (ruleColl[i].type === 'string') {\n ignoreCase = this.matchCase ? false : true;\n }\n if (ruleColl[i].type === 'date' && dateOperColl.indexOf(oper) > -1) {\n ignoreCase = true;\n }\n column = this.getColumn(ruleColl[i].field);\n if (oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) {\n ruleColl[i].value = null;\n }\n else if (ruleColl[i].type === 'date' && !(ruleColl[i].value instanceof Array)) {\n var format = this.getFormat(column.format);\n if (!isNullOrUndefined(ruleColl[i].value)) {\n ruleValue = this.getDate(ruleColl[i].value, format);\n if (dateOperColl.indexOf(oper) > -1 && !this.isTime(ruleColl[i].value)) {\n isDateFilter = true;\n }\n }\n else {\n ruleValue = null;\n }\n }\n else {\n ruleValue = ruleColl[i].value;\n }\n if (i === 0) {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||\n oper.indexOf('empty') > -1) && (oper.indexOf('contain') < 0)) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :\n this.arrayPredicate(ruleColl[i]);\n }\n else {\n var value = ruleValue;\n if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n else {\n if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 ||\n oper.indexOf('null') > -1 || oper.indexOf('empty') > -1) && oper.indexOf('contain') < 0) {\n pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue, pred, rule.condition) :\n this.arrayPredicate(ruleColl[i], pred, rule.condition);\n }\n else {\n if (rule.condition === 'and') {\n var value = ruleValue;\n if (pred && value !== '') {\n pred\n = pred.and(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n else {\n var value = ruleValue;\n if (pred && value !== '') {\n pred = pred.or(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n else if (value !== '') {\n pred = new Predicate(ruleColl[i].field, operator, ruleValue, ignoreCase);\n }\n }\n }\n }\n }\n }\n if (this.dataSource instanceof DataManager) {\n if (!isNullOrUndefined(pred) && (pred.operator === 'isnull' || pred.operator === 'isnotnull')) {\n pred.operator = pred.operator === 'isnull' ? 'equal' : 'notequal';\n }\n }\n return pred;\n };\n QueryBuilder.prototype.getLocale = function () {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.short';\n var localeString = this.locale;\n var mainVal = 'main.';\n var cultureObj = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n if (!cultureObj) {\n localeString = 'en';\n }\n return localeString;\n };\n QueryBuilder.prototype.getColumn = function (field, col) {\n var columns = this.columns;\n var column;\n columns = col ? col : columns;\n var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];\n var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === field) {\n column = columns[i];\n break;\n }\n }\n if (!column && this.separator !== '') {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === rootField) {\n if (columns[i].columns) {\n var subField = field.substring(rootField.length + this.separator.length);\n if (subField) {\n column = this.getColumn(subField, columns[i].columns);\n }\n else {\n column = columns[i];\n }\n }\n else {\n column = columns[i];\n }\n break;\n }\n }\n }\n if (!column) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n column = this.getColumn(field, columns[i].columns);\n if (column) {\n break;\n }\n }\n }\n }\n return column;\n };\n /* eslint-disable */\n /**\n * Return the operator bound to the column.\n *\n * @returns {[key: string]: Object}[] - Operator bound to the column\n */\n /* eslint-enable */\n QueryBuilder.prototype.getOperators = function (field) {\n var column = this.getColumn(field);\n return column.operators;\n };\n QueryBuilder.prototype.setTime = function (date, isStart) {\n if (isStart) {\n date.setHours(0, 0, 0);\n }\n else {\n date.setHours(23, 59, 59);\n }\n return date;\n };\n QueryBuilder.prototype.datePredicate = function (ruleColl, value, predicate, condition) {\n var pred;\n var startDate = this.setTime(new Date(value.getTime()), true);\n var endDate = this.setTime(value);\n switch (ruleColl.operator) {\n case 'equal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n pred = pred.and(ruleColl.field, 'lessthanorequal', endDate);\n break;\n case 'notequal':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n pred = pred.or(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthan':\n pred = new Predicate(ruleColl.field, 'greaterthan', endDate);\n break;\n case 'greaterthanorequal':\n pred = new Predicate(ruleColl.field, 'greaterthanorequal', startDate);\n break;\n case 'lessthan':\n pred = new Predicate(ruleColl.field, 'lessthan', startDate);\n break;\n case 'lessthanorequal':\n pred = new Predicate(ruleColl.field, 'lessthanorequal', endDate);\n break;\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.arrayPredicate = function (ruleColl, predicate, condition) {\n var value = ruleColl.value;\n var operator = ruleColl.operator.toString();\n var nullValue = ruleColl.value;\n var pred;\n var column = this.getColumn(ruleColl.field);\n var format = this.getFormat(column.format);\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n switch (operator) {\n case 'isnull':\n pred = new Predicate(ruleColl.field, 'isnull', nullValue);\n break;\n case 'isnotnull':\n pred = new Predicate(ruleColl.field, 'isnotnull', nullValue);\n break;\n case 'isempty':\n pred = new Predicate(ruleColl.field, 'equal', '');\n break;\n case 'isnotempty':\n pred = new Predicate(ruleColl.field, 'notequal', '');\n break;\n }\n }\n if (!(operator.indexOf('null') > -1 || operator.indexOf('empty') > -1)) {\n for (var j = 0, jLen = value.length; j < jLen; j++) {\n if (value[j] !== '' || ((operator === 'in' || operator === 'notin') && column.type === 'string')) {\n if (j === 0) {\n var gte = 'greaterthanorequal';\n switch (operator) {\n case 'between':\n if (column.type !== 'date') {\n pred = new Predicate(ruleColl.field, gte, value[j]);\n }\n else {\n pred = new Predicate(ruleColl.field, gte, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format), true)) : null);\n }\n else {\n pred = new Predicate(ruleColl.field, 'lessthan', value[j]);\n }\n break;\n case 'in':\n pred = new Predicate(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = new Predicate(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n else {\n var gt = 'greaterthan';\n switch (ruleColl.operator) {\n case 'between':\n if (column.type === 'date') {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.and(ruleColl.field, 'lessthanorequal', value[j]);\n }\n break;\n case 'notbetween':\n if (column.type === 'date') {\n pred = pred.or(ruleColl.field, gt, value[j] ?\n (this.isTime(value[j]) ? this.getDate(value[j], format) :\n this.setTime(this.getDate(value[j], format))) : value[j]);\n }\n else {\n pred = pred.or(ruleColl.field, 'greaterthan', value[j]);\n }\n break;\n case 'in':\n pred = pred.or(ruleColl.field, 'equal', value[j]);\n break;\n case 'notin':\n pred = pred.and(ruleColl.field, 'notequal', value[j]);\n break;\n }\n }\n }\n }\n }\n if (pred) {\n if (predicate) {\n if (condition === 'and') {\n predicate = predicate.and(pred);\n }\n else if (condition === 'or') {\n predicate = predicate.or(pred);\n }\n }\n else {\n predicate = pred;\n }\n }\n return predicate;\n };\n QueryBuilder.prototype.getDate = function (value, format) {\n var currDate = this.intl.parseDate(value, format);\n if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0\n && value.indexOf('-') < 0)) {\n currDate = new Date();\n currDate.setHours(parseInt(value.split(':')[0], 10));\n currDate.setMinutes(parseInt(value.split(':')[1], 10));\n if (value.split(':')[2]) {\n currDate.setSeconds(parseInt(value.split(':')[2], 10));\n }\n }\n return currDate;\n };\n QueryBuilder.prototype.isTime = function (value) {\n if (value && value.indexOf(':') > -1) {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.importRules = function (rule, parentElem, isReset, not, isRoot) {\n if (!isReset) {\n parentElem = this.renderGroup(rule, rule.condition, parentElem, not);\n }\n else {\n if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {\n // enable/disable conditions when rule group is added\n var orElem = parentElem.querySelector('.e-btngroup-or');\n var andElem = parentElem.querySelector('.e-btngroup-and');\n if (this.enableSeparateConnector && parentElem.previousElementSibling) {\n orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');\n andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');\n }\n orElem.disabled = false;\n andElem.disabled = false;\n if (this.enableSeparateConnector) {\n var elem = parentElem.previousElementSibling;\n while (elem && !elem.classList.contains('e-rule-container')) {\n if (elem.classList.contains('e-group-container')) {\n elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];\n break;\n }\n elem = elem.previousElementSibling;\n }\n if (elem && elem.classList.contains('e-rule-container')) {\n var ruleID = elem.id.replace(this.element.id + '_', '');\n var prevRule = this.getRule(ruleID);\n if (prevRule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n if (rule.condition === 'or') {\n orElem.checked = true;\n }\n else {\n andElem.checked = true;\n }\n }\n }\n else {\n // enable/disable conditions when rule condition is added\n this.disableRuleCondition(parentElem);\n }\n if (this.headerTemplate && isRoot) {\n parentElem = this.renderGroup(rule, rule.condition, this.element, rule.not, isRoot);\n }\n if (this.enableNotCondition && !this.headerTemplate) {\n var tglBtnElem = parentElem.querySelector('.e-qb-toggle');\n if (rule.not) {\n addClass([tglBtnElem], 'e-active-toggle');\n if (this.enableSeparateConnector) {\n getComponent(tglBtnElem.querySelector('.e-checkbox'), 'checkbox').checked = rule.not;\n }\n }\n else {\n removeClass([tglBtnElem], 'e-active-toggle');\n }\n }\n }\n if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {\n rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };\n }\n var ruleColl = rule.rules;\n if (!isNullOrUndefined(ruleColl)) {\n for (var i = 0, len = ruleColl.length; i < len; i++) {\n var keys = Object.keys(ruleColl[i]);\n if (!isNullOrUndefined(ruleColl[i].rules) && keys.indexOf('rules') > -1 && (ruleColl[i].rules.length !== 0)) {\n if (this.element.querySelectorAll('.e-group-container').length > this.maxGroupCount) {\n return null;\n }\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n parentElem = this.importRules(ruleColl[i], parentElem, true);\n }\n else if (!isNullOrUndefined(ruleColl[i].rules)) {\n parentElem = this.renderGroup(ruleColl[i], ruleColl[i].condition, parentElem, ruleColl[i].not);\n var andElem = parentElem.querySelector('.e-btngroup-and');\n var orElem = parentElem.querySelector('.e-btngroup-or');\n andElem.disabled = true;\n orElem.disabled = true;\n }\n else {\n this.renderRule(ruleColl[i], parentElem);\n }\n if (!isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {\n var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');\n this.groupLock(lockGrpTarget);\n }\n }\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-rule-list');\n }\n if (parentElem) {\n parentElem = closest(parentElem, '.e-group-container');\n }\n return parentElem;\n };\n QueryBuilder.prototype.renderGroup = function (rule, condition, parentElem, not, isRoot) {\n this.addGroupElement(true, parentElem, condition, false, not, isRoot, rule); //Child group\n var element = parentElem.querySelectorAll('.e-group-container');\n var cloneElem = parentElem.querySelector('.e-rule-list').children;\n if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {\n this.isMiddleGroup = false;\n this.cloneGrpBtnClick = false;\n var index = 0;\n var tempGroupIndex = this.groupIndex + 1;\n if (this.enableSeparateConnector) {\n for (var i = 0; i < tempGroupIndex; i++) {\n if (cloneElem[i].classList.contains('e-rule-container')) {\n tempGroupIndex++;\n index++;\n }\n }\n }\n return cloneElem[this.groupIndex + index + 1]; // group added in the middle\n }\n else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {\n this.isLastGroup = false;\n this.cloneGrpBtnClick = false;\n return cloneElem[cloneElem.length - 1]; // group added in the end\n }\n else {\n return element[element.length - 1];\n }\n };\n QueryBuilder.prototype.renderRule = function (rule, parentElem) {\n if (parentElem.className.indexOf('e-group-container') > -1) {\n this.addRuleElement(parentElem, rule); //Create rule\n }\n else {\n this.addRuleElement(parentElem.querySelector('.e-group-container'), rule); //Create group\n }\n };\n QueryBuilder.prototype.enableReadonly = function () {\n var target = this.element;\n var elem = target.querySelectorAll('.e-dropdownlist, .e-dropdowntree, .e-numerictextbox, .e-textbox, .e-datepicker, .e-multiselect .e-lib, .e-radio');\n for (var i = 0; i < elem.length; i++) {\n if (elem[i].classList.contains('e-dropdownlist')) {\n var dropDownObj = getInstance(elem[i], DropDownList);\n dropDownObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-dropdowntree')) {\n var dropDownTreeObj = getComponent(elem[i], 'dropdowntree');\n dropDownTreeObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-numerictextbox')) {\n var numericTextBoxObj = getInstance(elem[i], NumericTextBox);\n numericTextBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-textbox')) {\n var textBoxObj = getInstance(elem[i], TextBox);\n textBoxObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-datepicker')) {\n var datePickerObj = getInstance(elem[i], DatePicker);\n datePickerObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-multiselect')) {\n var multiSelectObj = getInstance(elem[i], MultiSelect);\n multiSelectObj.readonly = this.isReadonly;\n }\n else if (elem[i].classList.contains('e-radio')) {\n var radioButtonObj = getInstance(elem[i], RadioButton);\n if (!radioButtonObj.checked) {\n if (this.isReadonly) {\n elem[i].parentElement.style.display = 'none';\n }\n else {\n elem[i].parentElement.style.display = 'inherit';\n }\n }\n }\n }\n var deleteGroupElems = this.element.querySelectorAll('.e-deletegroup');\n var addRuleGroupElems = this.element.querySelectorAll('.e-addrulegroup');\n var removeRuleElems = this.element.querySelectorAll('.e-removerule');\n if (!this.isReadonly && this.ruleElem.classList.contains('e-readonly')) {\n this.ruleElem.classList.remove('e-readonly');\n }\n var elems = [deleteGroupElems, addRuleGroupElems, removeRuleElems];\n for (var i = 0; i < elems.length; i++) {\n elems[i].forEach(function (elem) {\n if (elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n }\n this.enableBtnGroup();\n };\n QueryBuilder.prototype.enableBtnGroup = function () {\n var _this = this;\n var elems = this.element.querySelectorAll('.e-btngroup-and-lbl, .e-btngroup-or-lbl, .e-qb-toggle');\n var not = false;\n elems.forEach(function (elem) {\n if (elem.classList.contains('e-qb-toggle') && !elem.classList.contains('e-active-toggle')\n && !elem.classList.contains('e-readonly')) {\n elem.classList.add('e-readonly');\n not = false;\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-not-readonly')) {\n elem.classList.remove('e-not-readonly');\n }\n else if (elem.classList.contains('e-qb-toggle') && elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n }\n else if (elem.classList.contains('e-active-toggle')) {\n elem.classList.add('e-not-readonly');\n not = true;\n }\n else if (elem.previousElementSibling.checked || elem.classList.contains('e-readonly')) {\n elem.classList.remove('e-readonly');\n if (not) {\n if (elem.textContent === 'AND') {\n elem.classList.add('e-readonly-and');\n }\n else {\n elem.classList.add('e-readonly-or');\n }\n }\n else {\n if (elem.textContent === 'AND' && _this.isReadonly) {\n elem.classList.remove('e-not');\n elem.classList.add('e-readonly-and');\n }\n else {\n if (_this.enableNotCondition) {\n elem.classList.add('e-not');\n }\n elem.classList.remove('e-readonly-and');\n }\n if (elem.textContent === 'OR' && _this.isReadonly) {\n elem.classList.add('e-readonly-or-not');\n }\n else {\n elem.classList.remove('e-readonly-or-not');\n }\n }\n }\n else if (elem.classList.contains('e-btn-disable')) {\n // do nothing\n }\n else {\n elem.classList.add('e-readonly');\n }\n });\n };\n QueryBuilder.prototype.isDateFunction = function (value) {\n var dateFunc = ['date', 'time', 'day', 'week', 'month', 'year', 'hour', 'minute', 'second', 'now', 'quarter', 'period', 'extract'];\n for (var i = 0, len = dateFunc.length; i < len; i++) {\n if (value.toLowerCase().indexOf(dateFunc[i]) > -1) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {\n var _this = this;\n var isRoot = false;\n if (!queryStr && queryStr !== '') {\n queryStr = '';\n isRoot = true;\n }\n else {\n queryStr += '(';\n }\n if (rules.not) {\n var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';\n queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';\n }\n if (rules.rules && rules.rules.length) {\n queryStr += rules.rules.reduce(function (result, rule, j) {\n var ruleStr = '';\n if (rule.rules) {\n ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);\n if (_this.enableSeparateConnector) {\n rules.condition = rule.condition;\n }\n }\n else {\n var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];\n var valueStr = '';\n if (rule.value instanceof Array) {\n if (rule.operator.toString().indexOf('between') > -1) {\n var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';\n if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {\n valueStr = \"\\\"\" + rule.value[0] + \"\\\"\" + ruleCondition + \"\\\"\" + rule.value[1] + \"\\\"\";\n }\n else {\n valueStr = \"\" + rule.value[0] + ruleCondition + rule.value[1];\n }\n }\n else {\n if (typeof rule.value[0] === 'string' && rule.value !== null) {\n var valueArray = rule.value;\n valueStr = '(\"' + valueArray.join('\",\"') + '\")';\n }\n else {\n valueStr = \"(\" + rule.value + \")\";\n }\n }\n }\n else {\n if (rule.operator.toString().indexOf('startswith') > -1) {\n valueStr = rule.value ? \"(\\\"\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('endswith') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"\\\")\" : \"(\" + rule.value + \")\";\n }\n else if (rule.operator.toString().indexOf('contains') > -1) {\n valueStr = rule.value ? \"(\\\"%\" + rule.value + \"%\\\")\" : \"(\" + rule.value + \")\";\n }\n else {\n if (rule.type === 'number' || typeof rule.value === 'boolean' ||\n (rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {\n valueStr = \"\" + rule.value;\n }\n else if (rule.operator.toString().indexOf('empty') > -1) {\n valueStr = '\"\"';\n }\n else {\n valueStr = \"\\\"\" + rule.value + \"\\\"\";\n }\n }\n }\n var fieldName = rule.field;\n if (enableEscape) {\n fieldName = '`' + fieldName + '`';\n }\n else if (fieldName.indexOf(' ') > -1) {\n fieldName = '\"' + fieldName + '\"';\n }\n if (rule.operator.toString().indexOf('null') > -1) {\n ruleStr = fieldName + ' ' + ruleOpertor;\n }\n else {\n var custOper = ruleOpertor;\n if (rule.operator === 'isempty') {\n custOper = '=';\n }\n else if (rule.operator === 'isnotempty') {\n custOper = '!=';\n }\n ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;\n }\n }\n if (j !== rules.rules.length - 1) {\n var condition = rules.condition;\n if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {\n condition = rule.condition;\n }\n if (condition) {\n condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();\n ruleStr += ' ' + condition + ' ';\n }\n }\n return result + ruleStr;\n }, '');\n }\n if (!isRoot) {\n queryStr += ')';\n }\n if (rules.not) {\n queryStr += ')';\n }\n return queryStr;\n };\n /**\n * Sets the rules from the sql query.\n *\n * @param {string} sqlString - 'sql String' to be passed to set the rule.\n * @param {boolean} sqlLocale - Optional. Set `true` if Localization for Sql query.\n * @returns {void}\n */\n QueryBuilder.prototype.setRulesFromSql = function (sqlString, sqlLocale) {\n sqlString = sqlString.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sqlString, sqlLocale);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n };\n /**\n * Get the rules from SQL query.\n *\n * @param {string} sqlString - 'sql String' to be passed to get the rule.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {object} - Rules from SQL query\n */\n QueryBuilder.prototype.getRulesFromSql = function (sqlString, sqlLocale) {\n this.parser = [];\n this.sqlParser(sqlString, sqlLocale);\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n var rule = this.processParser(this.parser, this.rule, [0], sqlLocale);\n if (this.enableNotCondition) {\n return { condition: rule.condition, not: rule.not, rules: rule.rules };\n }\n else {\n return { condition: rule.condition, rules: rule.rules };\n }\n };\n /**\n * Gets the sql query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @param {boolean} allowEscape - Set `true` if it exclude the escape character.\n * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.\n * @returns {string} - Sql query from rules.\n */\n QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {\n if (!rule) {\n rule = this.getValidRules();\n }\n rule = this.getRuleCollection(rule, false);\n var sqlString = this.getSqlString(this.getValidRules(rule), allowEscape, null, sqlLocale).replace(/\"/g, '\\'');\n return sqlString;\n };\n /**\n * Gets the parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the parameter sql string.\n * @returns {ParameterizedSql} – Parameterized SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the parameter sql query.\n *\n * @param { ParameterizedSql} sqlQuery – Specifies the parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the named parameter SQL query from rules.\n *\n * @param {RuleModel} rule – Specify the rule to be passed to get the named parameter SQL string.\n * @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.\n */\n QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { sql: null };\n this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });\n return obj['sql'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return null;\n };\n /**\n * Sets the rules from the named parameter SQL query.\n *\n * @param { ParameterizedNamedSql } sqlQuery – Specifies the named parameter SQL to be passed to set the rule and load it to the query builder.\n * @returns {void}\n */\n QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n var obj = { sql: null };\n this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });\n var sql = obj['sql'];\n if (sql) {\n sql = sql.replace(/`/g, '');\n var ruleModel = this.getRulesFromSql(sql);\n this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });\n }\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Set the rules from Mongo query.\n *\n * @param {string} mongoQuery - 'sql String' to be passed to get the rule.\n * @param {boolean} mongoLocale - Set `true` if Localization for Mongo query.\n * @returns {void}\n */\n QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n this.rule = { condition: 'and', not: false, rules: [] };\n this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n };\n /**\n * Gets the Mongo query from rules.\n *\n * @param {RuleModel} rule - 'rule' to be passed to get the sql.\n * @returns {object} - Sql query from rules.\n */\n QueryBuilder.prototype.getMongoQuery = function (rule) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.moduleLoader.loadedModules.length) {\n if (!rule) {\n rule = this.getValidRules();\n }\n var obj = { mongoQuery: null };\n this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });\n return obj['mongoQuery'];\n }\n else {\n console.warn('[WARNING] :: Module \"query-library\" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');\n }\n return '';\n };\n /**\n * Clones the rule based on the rule ID to the specific group.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be cloned.\n * @param {string} groupID - Specifies the groupID in which the rule to be cloned.\n * @param {number} index - Specifies the index to insert the cloned rule inside the group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneRule = function (ruleID, groupID, index) {\n var getRule = this.getRule(ruleID.replace(this.element.id + '_', ''));\n var isCloneRule = this.showButtons.cloneRule;\n groupID = groupID.replace(this.element.id + '_', '');\n this.ruleIndex = index;\n this.cloneRuleBtnClick = true;\n this.showButtons.cloneRule = true;\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupID);\n this.ruleIndex = -1;\n this.cloneRuleBtnClick = false;\n this.showButtons.cloneRule = isCloneRule;\n isCloneRule = false;\n };\n /**\n * Clones the group based on the group ID to the specific group.\n *\n * @param {string} groupID - Specifies the groupID that needs to be cloned.\n * @param {string} parentGroupID - Specifies the parentGroupID in which the group to be cloned.\n * @param {number} index - Specifies the index to insert the cloned group inside the parent group.\n * @returns {void}\n */\n QueryBuilder.prototype.cloneGroup = function (groupID, parentGroupID, index) {\n parentGroupID = parentGroupID.replace(this.element.id + '_', '');\n var group = this.getGroup(parentGroupID);\n var isCloneGroup = this.showButtons.cloneGroup;\n groupID = groupID.replace(this.element.id + '_', '');\n this.groupIndex = index;\n this.cloneGrpBtnClick = this.groupCloned = true;\n this.showButtons.cloneGroup = true;\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupID);\n this.groupIndex = -1;\n this.cloneGrpBtnClick = false;\n this.showButtons.cloneGroup = isCloneGroup;\n isCloneGroup = this.groupCloned = false;\n };\n /**\n * Locks the rule based on the rule ID.\n *\n * @param {string} ruleID - Specifies the ruleID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockRule = function (ruleID) {\n if (ruleID.indexOf(this.element.id) < 0) {\n ruleID = this.element.id + '_' + ruleID;\n }\n var target = document.getElementById(ruleID).querySelectorAll('.e-lock-rule-btn')[0];\n this.ruleLock(target);\n };\n /**\n * Locks the group based on the group ID\n *\n * @param {string} groupID - Specifies the groupID that needs to be locked.\n * @returns {void}\n */\n QueryBuilder.prototype.lockGroup = function (groupID) {\n if (groupID.indexOf(this.element.id) < 0) {\n groupID = this.element.id + '_' + groupID;\n }\n var target = document.getElementById(groupID).querySelectorAll('.e-lock-grp-btn')[0];\n this.groupLock(target);\n };\n QueryBuilder.prototype.sqlParser = function (sqlString, sqlLocale) {\n var st = 0;\n var str;\n do {\n str = sqlString.slice(st);\n st += this.parseSqlStrings(str, sqlLocale);\n } while (str !== '');\n return this.parser;\n };\n QueryBuilder.prototype.parseSqlStrings = function (sqlString, sqlLocale) {\n var operators = ['=', '!=', '<=', '>=', '<', '>'];\n var conditions;\n if (sqlLocale) {\n conditions = [this.l10n.getConstant('AND').toUpperCase(), this.l10n.getConstant('OR').toUpperCase(), this.l10n.getConstant('NOT').toUpperCase()];\n }\n else {\n conditions = ['AND', 'OR', 'NOT'];\n }\n var subOp;\n if (sqlLocale) {\n subOp = [this.l10n.getConstant('In').toUpperCase(), this.l10n.getConstant('NotIn').toUpperCase(),\n this.l10n.getConstant('Like').toUpperCase(), this.l10n.getConstant('NotLike').toUpperCase(),\n this.l10n.getConstant('Between').toUpperCase(), this.l10n.getConstant('NotBetween').toUpperCase(),\n this.l10n.getConstant('IsNull').toUpperCase(), this.l10n.getConstant('IsNotNull').toUpperCase(),\n this.l10n.getConstant('IsEmpty').toUpperCase(), this.l10n.getConstant('IsNotEmpty').toUpperCase()];\n }\n else {\n subOp = ['IN', 'NOT IN', 'LIKE', 'NOT LIKE', 'BETWEEN', 'NOT BETWEEN', 'IS NULL', 'IS NOT NULL', 'IS EMPTY', 'IS NOT EMPTY'];\n }\n var regexStr;\n var regex;\n var matchValue;\n for (var i = 0, iLen = operators.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(operators[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Operators', operators[i].toLowerCase()]);\n return operators[i].length;\n }\n }\n var lastPasrser = this.parser[this.parser.length - 1];\n if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {\n for (var i = 0, iLen = conditions.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(conditions[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['Conditions', conditions[i].toLowerCase()]);\n return conditions[i].length;\n }\n }\n }\n for (var i = 0, iLen = subOp.length; i < iLen; i++) {\n regexStr = /^\\w+$/.test(subOp[i]) ? '\\\\b' : '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');\n if (regex.exec(sqlString)) {\n this.parser.push(['SubOperators', subOp[i].toLowerCase()]);\n return subOp[i].length;\n }\n }\n if (/^\\(/.exec(sqlString)) {\n this.parser.push(['Left', '(']);\n return 1;\n }\n if (/^\\)/.exec(sqlString)) {\n this.parser.push(['Right', ')']);\n return 1;\n }\n if (/^(true|false)/.exec(sqlString)) {\n matchValue = /^(true|false)/.exec(sqlString)[0];\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n if (/^null/.exec(sqlString)) {\n matchValue = /^null/.exec(sqlString)[0];\n this.parser.push(['String', null]);\n return matchValue.length;\n }\n if (/^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {\n matchValue = /^`?([a-z_][a-z0-9_.\\\\[\\]\\\\(\\\\)]{0,}(\\\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {\n matchValue = /^'?([a-z_][a-z0-9 _.\\\\[\\]\\\\(\\\\)-]{0,}(\\\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length + 2;\n }\n if (this.checkNumberLiteral(sqlString, sqlLocale)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExValue = /^[0-9]+(\\.[0-9]+)$/.exec(sqlString);\n if (regExValue) {\n matchValue = regExValue[0];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n }\n var singleString = this.getSingleQuoteString(sqlString);\n if (singleString !== '') {\n matchValue = singleString;\n if (matchValue[matchValue.length - 2] === '(') {\n var isClosed = false;\n for (var j = matchValue.length; j < sqlString.length; j++) {\n matchValue += sqlString[j];\n if (sqlString[j] === ')') {\n isClosed = true;\n }\n if (isClosed && sqlString[j] === '\\'') {\n break;\n }\n }\n }\n else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue)) {\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n var doubleString = this.getDoubleQuoteString(sqlString);\n if (doubleString !== '') {\n matchValue = doubleString;\n this.parser.push(['DoubleString', matchValue]);\n return matchValue.length;\n }\n if (/^\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n if (/^-?\\d*\\.?\\d+/.exec(sqlString)) {\n matchValue = /^-?\\d*\\.?\\d+/.exec(sqlString)[0];\n this.parser.push(['Number', matchValue]);\n return matchValue.length;\n }\n return 1;\n };\n QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {\n var start = sqlString.indexOf('\"');\n if (start === 0) {\n var end = sqlString.indexOf('\"', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {\n if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||\n sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {\n return true;\n }\n return false;\n };\n QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {\n var start = sqlString.indexOf('\\'');\n if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {\n var end = sqlString.indexOf('\\'', start + 1);\n if (end !== -1) {\n return sqlString.substring(start, end + 1);\n }\n }\n return '';\n };\n QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {\n if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&\n !this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {\n var tempMatchValue = matchValue.substring(0, matchValue.length - 1);\n var tempStr = sqlString.replace(tempMatchValue, '');\n var singleString = this.getSingleQuoteString(tempStr, true);\n if (singleString !== '') {\n var parsedValue = singleString.substring(1, singleString.length);\n matchValue += parsedValue;\n matchValue = this.combineSingleQuoteString(sqlString, matchValue);\n }\n }\n return matchValue;\n };\n QueryBuilder.prototype.checkLiteral = function () {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n return false;\n };\n QueryBuilder.prototype.checkNumberLiteral = function (sqlString, sqlLocale) {\n var lastParser = this.parser[this.parser.length - 1];\n if (!lastParser) {\n return true;\n }\n else {\n if (/^[0-9]+(?:\\.[0-9]+)$/.exec(sqlString)) {\n var secParser = this.parser[this.parser.length - 2];\n var betweenParser = this.parser[this.parser.length - 3];\n if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {\n return true;\n }\n var betweenOperator = sqlLocale ? this.l10n.getConstant('Between').toLowerCase() : 'between';\n if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf(betweenOperator) < 0)) {\n return true;\n }\n }\n }\n return false;\n };\n QueryBuilder.prototype.getOperator = function (value, operator, sqlLocale) {\n var operators = {\n '=': 'equal', '!=': 'notequal', '<': 'lessthan', '>': 'greaterthan', '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal', 'in': 'in', 'not in': 'notin', 'between': 'between', 'not between': 'notbetween',\n 'is empty': 'isempty', 'is null': 'isnull', 'is not null': 'isnotnull', 'is not empty': 'isnotempty'\n };\n if (sqlLocale) {\n var localeOperator = Object.keys(this.sqlOperators);\n for (var i = 0; i < localeOperator.length; i++) {\n if (this.sqlOperators[localeOperator[i]] === operator.toUpperCase()) {\n if (value && value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notcontains' : 'contains';\n }\n else if (value && value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notstartswith' : 'startswith';\n }\n else if (value && value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator.toUpperCase() === 'NOT LIKE') ? 'notendswith' : 'endswith';\n }\n return localeOperator[i];\n }\n }\n return null;\n }\n if (value) {\n if (value.indexOf('%') === 0 && value[value.length - 1] === '%') {\n return (operator === 'not like') ? 'notcontains' : 'contains';\n }\n else if (value.indexOf('%') !== 0 && value.indexOf('%') === value.length - 1) {\n return (operator === 'not like') ? 'notstartswith' : 'startswith';\n }\n else if (value.indexOf('%') === 0 && value.indexOf('%') !== value.length - 1) {\n return (operator === 'not like') ? 'notendswith' : 'endswith';\n }\n }\n else {\n if (operator === 'not like') {\n return 'notequal';\n }\n else if (operator === 'like') {\n return 'equal';\n }\n }\n return operators[\"\" + operator];\n };\n QueryBuilder.prototype.getTypeFromColumn = function (rules) {\n var columnData = this.getColumn(rules.field);\n if (!isNullOrUndefined(columnData)) {\n return columnData.type;\n }\n return null;\n };\n QueryBuilder.prototype.getLabelFromColumn = function (field) {\n var label = '';\n var l = 0;\n if (this.separator !== '') {\n var fieldColl = field.split(this.separator);\n for (var i = 0; i < fieldColl.length; i++) {\n label += this.getLabelFromField(fieldColl, i + 1);\n l++;\n if (l < fieldColl.length) {\n label += this.separator;\n }\n }\n return label;\n }\n else {\n var labelItem = this.getColumn(field).label;\n return labelItem;\n }\n };\n QueryBuilder.prototype.getLabelFromField = function (field, startIdx) {\n var fieldName = '';\n var j = 0;\n for (var k = 0; k < startIdx; k++) {\n fieldName += field[k];\n j++;\n if (j < startIdx) {\n fieldName += this.separator;\n }\n }\n return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';\n };\n QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {\n var j;\n var jLen;\n var rule;\n var subRules;\n var numVal = [];\n var strVal = [];\n var k;\n var kLen;\n var l;\n var lLen;\n var grpCount;\n var operator;\n var isLeftOpened = false;\n var isNotOpened = false;\n for (var i = 0, iLen = parser.length; i < iLen; i++) {\n if (parser[i][0] === 'Literal') {\n var column = this.getColumn(parser[i][1]);\n rule = { label: (column && column.label) ? column.label : parser[i][1], field: parser[i][1] };\n if (parser[i + 1][0] === 'SubOperators') {\n if (parser[i + 1][1].indexOf('null') > -1 || parser[i + 1][1].indexOf('empty') > -1) {\n rule.operator = this.getOperator(' ', parser[i + 1][1], sqlLocale);\n rule.value = null;\n rule.type = this.getTypeFromColumn(rule);\n }\n else {\n if (parser.length === 3 && parser[2][0] === 'String' && (parser[2][1]).indexOf('%') !== -1) {\n var oper = parser[i + 2][1] ? parser[i + 2][1].replace(/'/g, '') : parser[i + 2][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n else {\n var oper = parser[i + 3][1] ? parser[i + 3][1].replace(/'/g, '') : parser[i + 3][1];\n rule.operator = this.getOperator(oper, parser[i + 1][1], sqlLocale);\n }\n }\n operator = parser[i + 1][1];\n i++;\n j = i + 1;\n jLen = iLen;\n if (sqlLocale && rule.operator === 'contains' || rule.operator === 'startswith' || rule.operator === 'endswith') {\n operator = 'like';\n }\n else if (sqlLocale && rule.operator === 'notcontains' || rule.operator === 'notstartswith' || rule.operator === 'notendswith') {\n operator = 'not like';\n }\n else if (sqlLocale) {\n operator = rule.operator;\n }\n for (j = i + 1; j < jLen; j++) {\n if (operator.indexOf('between') < 0 && parser[j][0] === 'Left') {\n isLeftOpened = true;\n }\n else if (parser[j][0] === 'Right' && isLeftOpened) {\n i = j;\n isLeftOpened = false;\n break;\n }\n else {\n if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {\n break;\n }\n if (operator.indexOf('like') > -1 && parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n val = val ? val.replace(/%/g, '') : parser[j][1];\n rule.value = val;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1) {\n if (parser[j][0] === 'Literal' || parser[j][0] === 'Left') {\n break;\n }\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n else {\n if (parser[j][0] === 'Number') {\n numVal.push(Number(parser[j][1]));\n }\n else if (parser[j][0] === 'String') {\n var val = parser[j][1];\n if (parser[j][1] && parser[j][1][0] === '\\'') {\n val = parser[j][1].substring(1, parser[j][1].length - 1);\n }\n strVal.push(val);\n }\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n }\n if (operator.indexOf('like') < 0) {\n if (parser[j - 1][0] === 'Number') {\n rule.value = numVal;\n rule.type = 'number';\n }\n else if (parser[j - 1][0] === 'String') {\n rule.value = strVal;\n rule.type = 'string';\n }\n else if (operator.indexOf('between') > -1 && parser[j - 1][0] === 'Conditions') {\n if (strVal.length !== 0) {\n rule.value = strVal;\n rule.type = 'string';\n }\n else {\n rule.value = numVal;\n rule.type = 'number';\n }\n }\n numVal = [];\n strVal = [];\n rule.type = this.getTypeFromColumn(rule);\n }\n if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {\n rule.condition = parser[i + 1][1];\n }\n }\n else if (parser[i + 1][0] === 'Operators') {\n rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);\n if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isempty';\n }\n else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\\'\\'') {\n rule.operator = 'isnotempty';\n }\n if (parser[i + 2][0] === 'Number') {\n rule.type = 'number';\n rule.value = Number(parser[i + 2][1]);\n }\n else {\n rule.type = 'string';\n var val = parser[i + 2][1];\n if (val && val[0] === '\\'') {\n val = val.substring(1, val.length - 1);\n }\n rule.value = val;\n }\n if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {\n rule.condition = parser[i + 3][1];\n }\n rule.type = this.getTypeFromColumn(rule);\n }\n rules.rules.push(rule);\n }\n else if (parser[i][0] === 'Left') {\n if (!(parser[0][0] === 'Left') && (parser[i - 1][1] === 'not' || sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i - 1][1])) {\n isNotOpened = true;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n if (this.enableNotCondition) {\n subRules = { condition: 'and', rules: [], not: false };\n }\n else {\n subRules = { condition: 'and', rules: [] };\n }\n grpCount = 0;\n kLen = rules.rules.length;\n for (k = 0; k < kLen; k++) { //To get the group position\n if (rules.rules[k].rules) {\n grpCount++;\n }\n }\n levelColl.push(grpCount);\n rules.rules.push(subRules);\n subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);\n return rules;\n }\n else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {\n if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {\n rules.not = true;\n }\n else {\n rules.condition = parser[i][1];\n }\n }\n else if (parser[i][0] === 'Right') {\n if (isNotOpened && parser[i + 1][0] === 'Right') {\n isNotOpened = false;\n continue;\n }\n this.parser = parser.splice(i + 1, iLen - (i + 1));\n levelColl.pop(); //To get the parent Group\n rules = this.rule;\n lLen = levelColl.length;\n for (l = 0; l < lLen; l++) {\n rules = this.findGroupByIdx(levelColl[l], rules, l === 0);\n }\n return this.processParser(this.parser, rules, levelColl, sqlLocale);\n }\n }\n return rules;\n };\n /**\n * Clone the Group\n *\n * @param {Element | string} target - 'target' to be passed to clone the group.\n * @returns {void}\n */\n QueryBuilder.prototype.groupClone = function (target) {\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var targetGrpId = target.id.replace(this.element.id + '_', '');\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var group = this.getGroup(targetGrpId);\n this.groupIndex = Array.prototype.indexOf.call(target.closest('.e-rule-list').children, target.closest('.e-group-container'));\n this.addGroups([{ 'condition': group.condition, 'not': group.not, 'rules': group.rules }], groupId);\n this.groupIndex = -1;\n this.groupCloned = false;\n };\n QueryBuilder.prototype.ruleClone = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var groupElem = target.closest('.e-rule-list').closest('.e-group-container');\n var getRule = this.getRule(target);\n var groupId = groupElem.id.replace(this.element.id + '_', '');\n var ruleElemColl = groupElem.querySelectorAll('.e-rule-container');\n for (var i = 0, iLen = ruleElemColl.length; i < iLen; i++) {\n if (ruleElem.id === ruleElemColl[i].id) {\n this.ruleIndex = i;\n }\n }\n if (this.enableSeparateConnector) {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition\n }], groupId);\n }\n else {\n this.addRules([{\n 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value\n }], groupId);\n }\n this.ruleIndex = -1;\n };\n QueryBuilder.prototype.ruleLock = function (target) {\n var ruleElem = closest(target, '.e-rule-container');\n var rule = this.getRule(ruleElem.id.replace(this.element.id + '_', ''));\n if (ruleElem.classList.contains('e-disable')) {\n rule.isLocked = false;\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== ruleElem.id; });\n ruleElem.classList.remove('e-disable');\n this.disableRuleControls(target, ruleElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockRule'));\n }\n else {\n rule.isLocked = true;\n if (this.lockItems.indexOf(ruleElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, ruleElem.id);\n }\n ruleElem.classList.add('e-disable');\n this.disableRuleControls(target, ruleElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockRule'));\n }\n };\n QueryBuilder.prototype.groupLock = function (target) {\n var groupElem = closest(target, '.e-group-container');\n var group = this.getGroup(groupElem.id.replace(this.element.id + '_', ''));\n var isRoot = groupElem.id.indexOf('group0') > -1;\n if (groupElem.classList.contains('e-disable')) {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = false;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = false;\n }\n this.lockItems = this.lockItems.filter(function (lockItem) { return lockItem !== groupElem.id; });\n groupElem.classList.remove('e-disable');\n this.disableHeaderControls(target, groupElem, false);\n target.children[0].classList.add('e-unlock');\n target.children[0].classList.remove('e-lock');\n target.setAttribute('title', this.l10n.getConstant('LockGroup'));\n this.updateLockItems();\n }\n else {\n if (isRoot) {\n var newGroup = {};\n newGroup.condition = group.condition;\n newGroup.not = group.not;\n newGroup.isLocked = true;\n this.setProperties({ rule: newGroup }, true);\n }\n else {\n group.isLocked = true;\n }\n if (this.lockItems.indexOf(groupElem.id) < 0) {\n this.lockItems.splice(this.lockItems.length - 1, 0, groupElem.id);\n }\n groupElem.classList.add('e-disable');\n this.disableHeaderControls(target, groupElem, true);\n target.children[0].classList.add('e-lock');\n target.children[0].classList.remove('e-unlock');\n target.setAttribute('title', this.l10n.getConstant('UnlockGroup'));\n }\n };\n QueryBuilder.prototype.updateLockItems = function () {\n for (var i = 0; i < this.lockItems.length; i++) {\n var idColl = this.lockItems[i].split('_');\n if (idColl.length > 2) {\n var ruleElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = ruleElem.querySelector('.e-lock-rule-btn');\n ruleElem = closest(target, '.e-rule-container');\n if (!ruleElem.classList.contains('e-disable')) {\n this.ruleLock(target);\n }\n }\n else {\n var groupElem = this.element.querySelector('#' + this.lockItems[i]);\n var target = groupElem.querySelector('.e-lock-grp-btn');\n groupElem = closest(target, '.e-group-container');\n if (!groupElem.classList.contains('e-disable')) {\n this.groupLock(target);\n }\n }\n }\n };\n QueryBuilder.prototype.disableHeaderControls = function (target, groupElem, isDisabled) {\n var andElem = groupElem.querySelectorAll('.e-btngroup-and');\n var orElem = groupElem.querySelectorAll('.e-btngroup-or');\n var notElem = groupElem.querySelectorAll('.e-qb-toggle');\n var addElem = groupElem.querySelectorAll('.e-add-btn');\n var deleteGrpElem = groupElem.querySelectorAll('.e-deletegroup');\n var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');\n var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');\n var groupContElem = groupElem.querySelectorAll('.e-group-container');\n var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');\n var addGroup = groupElem.querySelectorAll('.e-add-group-btn');\n for (var i = 0; i < andElem.length; i++) {\n if (isDisabled) {\n if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {\n groupContElem[i].classList.add('e-disable');\n }\n andElem[i].disabled = true;\n orElem[i].disabled = true;\n if (addElem[i]) {\n addElem[i].disabled = true;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = true;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = true;\n }\n if (notElem[i]) {\n notElem[i].disabled = true;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = true;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = true;\n }\n andElem[i].parentElement.classList.add('e-disabled');\n if (lockElem[i] && lockElem[i] !== target) {\n lockElem[i].disabled = true;\n lockElem[i].children[0].classList.remove('e-unlock');\n lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (groupContElem[i]) {\n groupContElem[i].classList.remove('e-disable');\n }\n andElem[i].disabled = false;\n orElem[i].disabled = false;\n if (addElem[i]) {\n addElem[i].disabled = false;\n }\n if (addCondition[i]) {\n addCondition[i].disabled = false;\n }\n if (addGroup[i]) {\n addGroup[i].disabled = false;\n }\n if (lockElem[i]) {\n lockElem[i].disabled = false;\n }\n if (notElem[i]) {\n notElem[i].disabled = false;\n }\n if (deleteGrpElem[i]) {\n deleteGrpElem[i].disabled = false;\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = false;\n }\n andElem[i].parentElement.classList.remove('e-disabled');\n if (lockElem[i]) {\n lockElem[i].children[0].classList.remove('e-lock');\n }\n if (lockElem[i]) {\n lockElem[i].children[0].classList.add('e-unlock');\n }\n }\n }\n this.disableRuleControls(target, groupElem, isDisabled);\n };\n QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {\n var disableComponents = function (elements, componentGetter, isDisabled) {\n elements.forEach(function (element) {\n var component = componentGetter(element);\n if ('enabled' in component) {\n component.enabled = !isDisabled;\n }\n else if ('disabled' in component) {\n component.disabled = isDisabled;\n }\n });\n };\n var elements = {\n ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),\n numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),\n text: groupElem.querySelectorAll('.e-control.e-textbox'),\n date: groupElem.querySelectorAll('.e-control.e-datepicker'),\n checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),\n radio: groupElem.querySelectorAll('.e-control.e-radio'),\n multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),\n deleteElem: groupElem.querySelectorAll('.e-rule-delete'),\n lockElem: groupElem.querySelectorAll('.e-lock-rule'),\n cloneElem: groupElem.querySelectorAll('.e-clone-rule'),\n ruleElem: groupElem.querySelectorAll('.e-rule-container'),\n ddTree: groupElem.querySelectorAll('.e-control.e-dropdowntree')\n };\n elements.deleteElem.forEach(function (elem, i) {\n if (isDisabled) {\n if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {\n elements.ruleElem[i].classList.add('e-disable');\n }\n elements.deleteElem[i].disabled = true;\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = true;\n }\n if (elements.lockElem[i] !== target) {\n elements.lockElem[i].disabled = true;\n elements.lockElem[i].children[0].classList.remove('e-unlock');\n elements.lockElem[i].children[0].classList.add('e-lock');\n }\n }\n else {\n if (elements.ruleElem[i]) {\n elements.ruleElem[i].classList.remove('e-disable');\n }\n if (elements.cloneElem[i]) {\n elements.cloneElem[i].disabled = false;\n }\n elements.deleteElem[i].disabled = false;\n elements.lockElem[i].disabled = false;\n elements.lockElem[i].children[0].classList.remove('e-lock');\n elements.lockElem[i].children[0].classList.add('e-unlock');\n }\n });\n disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);\n disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);\n disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);\n disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);\n disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);\n disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);\n disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);\n disableComponents(elements.ddTree, function (elem) { return getComponent(elem, 'dropdowntree'); }, isDisabled);\n };\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"beforeChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"ruleChange\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"drop\", void 0);\n __decorate([\n Complex({}, ShowButtons)\n ], QueryBuilder.prototype, \"showButtons\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"summaryView\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowValidation\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"fieldMode\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"columns\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"fieldModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"operatorModel\", void 0);\n __decorate([\n Property(null)\n ], QueryBuilder.prototype, \"valueModel\", void 0);\n __decorate([\n Property()\n ], QueryBuilder.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"cssClass\", void 0);\n __decorate([\n Property([])\n ], QueryBuilder.prototype, \"dataSource\", void 0);\n __decorate([\n Property('Horizontal')\n ], QueryBuilder.prototype, \"displayMode\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('Default')\n ], QueryBuilder.prototype, \"sortDirection\", void 0);\n __decorate([\n Property(5)\n ], QueryBuilder.prototype, \"maxGroupCount\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], QueryBuilder.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"matchCase\", void 0);\n __decorate([\n Property(0)\n ], QueryBuilder.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableNotCondition\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"addRuleToNewGroups\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"autoSelectField\", void 0);\n __decorate([\n Property(true)\n ], QueryBuilder.prototype, \"autoSelectOperator\", void 0);\n __decorate([\n Property('')\n ], QueryBuilder.prototype, \"separator\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"enableSeparateConnector\", void 0);\n __decorate([\n Complex({ condition: 'and', rules: [] }, Rule)\n ], QueryBuilder.prototype, \"rule\", void 0);\n __decorate([\n Property(false)\n ], QueryBuilder.prototype, \"allowDragAndDrop\", void 0);\n QueryBuilder = __decorate([\n NotifyPropertyChanges\n ], QueryBuilder);\n return QueryBuilder;\n}(Component));\nexport { QueryBuilder };\nvar LevelColl = /** @class */ (function () {\n function LevelColl() {\n }\n return LevelColl;\n}());\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar QueryLibrary = /** @class */ (function () {\n function QueryLibrary(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n QueryLibrary.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n QueryLibrary.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('query-library', this.queryLibrary, this);\n this.parent.on('destroyed', this.destroy, this);\n };\n QueryLibrary.prototype.removeEventListener = function () {\n this.parent.off('query-library', this.queryLibrary);\n this.parent.off('destroyed', this.destroy);\n };\n QueryLibrary.prototype.queryLibrary = function (args) {\n switch (args.prop) {\n case 'getMongoFromRules':\n args.value['obj']['mongoQuery'] = this.getMongoFromRules(args.value['rule'], args.value['mongoQuery']);\n break;\n case 'mongoParser':\n this.mongoParser(args.value['mongoQuery'], args.value['rule'], args.value['mongoLocale']);\n break;\n case 'getParameterSql':\n args.value['obj']['sql'] = this.getParameterSql(args.value['rule']);\n break;\n case 'getNamedParameterSql':\n args.value['obj']['sql'] = this.getNamedParameterSql(args.value['rule']);\n break;\n case 'convertParamSqlToSql':\n args.value['obj']['sql'] = this.convertParamSqlToSql(args.value['sql']);\n break;\n case 'convertNamedParamSqlToSql':\n args.value['obj']['sql'] = this.convertNamedParamSqlToSql(args.value['sql']);\n break;\n }\n };\n QueryLibrary.prototype.getMongoFromRules = function (rule, mongoQuery) {\n mongoQuery = '{';\n if (rule.condition === 'or') {\n mongoQuery += '\"$or\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += '\"$and\":[';\n mongoQuery = this.convertMongoQuery(rule.rules, mongoQuery) + ']';\n }\n mongoQuery += '}';\n return mongoQuery;\n };\n QueryLibrary.prototype.getOperatorFromMongoOperator = function (operator) {\n var operatorValue;\n switch (operator) {\n case '$ne':\n operatorValue = 'notequal';\n break;\n case '$gt':\n operatorValue = 'greaterthan';\n break;\n case '$gte':\n operatorValue = 'greaterthanorequal';\n break;\n case '$lt':\n operatorValue = 'lessthan';\n break;\n case '$lte':\n operatorValue = 'lessthanorequal';\n break;\n case '$nin':\n operatorValue = 'notin';\n break;\n }\n return operatorValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.convertMongoQuery = function (rules, mongoQuery) {\n var _this = this;\n var i = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rules.forEach(function (item) {\n i++;\n mongoQuery += '{';\n if (item.rules !== undefined) {\n if (item.condition === 'or') {\n mongoQuery += ' \"$or\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n else {\n mongoQuery += ' \"$and\":[';\n mongoQuery = _this.convertMongoQuery(item.rules, mongoQuery) + ']';\n }\n }\n var itVal = item.type === 'string' && item.operator !== 'in' && item.operator !== 'notin' && item.value && item.value.trim() !== '' ? item.value.replace(/'/g, '\\\\') : '';\n if (item.type === 'string' && (item.operator === 'in' || item.operator === 'notin') && item.value && item.value.length === 1) {\n itVal = item.value[0].replace(/'/g, '\\\\');\n }\n var field = item.field ? item.field.substring(0) : '';\n switch (item.operator) {\n case 'contains':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '\"}';\n break;\n case 'notcontains':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '\"}}';\n break;\n case 'startswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"^' + itVal + '\"}';\n break;\n case 'notstartswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"^' + item.value + '\"}}';\n break;\n case 'endswith':\n mongoQuery += '\"' + field + '\":{\"$regex\":\"' + itVal + '$\"}';\n break;\n case 'notendswith':\n mongoQuery += '\"' + field + '\":{\"$not\":{\"$regex\":\"' + item.value + '$\"}}';\n break;\n case 'isnull':\n mongoQuery += '\"' + field + '\": null';\n break;\n case 'isnotnull':\n mongoQuery += '\"' + field + '\":{\"$ne\": null}';\n break;\n case 'isempty':\n mongoQuery += '\"' + field + '\": \"\"';\n break;\n case 'isnotempty':\n mongoQuery += '\"' + field + '\":{\"$ne\": \"\"}';\n break;\n case 'equal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":\"' + itVal + '\"';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":\"' + item.value + '\"';\n }\n else if (item.type === 'boolean') {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n else {\n mongoQuery += '\"' + field + '\":' + item.value + '';\n }\n break;\n case 'notequal':\n if (item.type === 'string') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + itVal + '\"}';\n }\n else if (item.type === 'date') {\n mongoQuery += '\"' + field + '\":{\"$ne\":\"' + item.value + '\"}';\n }\n else {\n mongoQuery += '\"' + field + '\":{\"$ne\":' + item.value + '}';\n }\n break;\n case 'in':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$in\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$in\": [' + item.value + ']}';\n }\n }\n break;\n case 'notin':\n if (item.type === 'string') {\n if (item.value.length > 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var s = item.value.map(function (x, j) { return (j < item.value.length ? \"\\\"\" + x + \"\\\"\" : ''); }).toString();\n s = s.endsWith(',') ? s.substring(0, s.length - 1) : s;\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + s + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [\"' + itVal + '\"]}';\n }\n }\n else if (item.type === 'number') {\n if (item.value.length > 1) {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value.toString() + ']}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$nin\": [' + item.value + ']}';\n }\n }\n break;\n case 'greaterthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gt\": \"' + item.value + '\"}';\n }\n break;\n case 'greaterthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$gte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$gte\": \"' + item.value + '\"}';\n }\n break;\n case 'between':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": {\"$gte\":' + item.value[0] + ', \"$lte\":' + item.value[1] + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": {\"$gte\": \"' + item.value[0] + '\", \"$lte\": \"' + item.value[1] + '\"}';\n }\n break;\n case 'notbetween':\n if (item.type === 'number') {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\":' + item.value[0] + '}}, {\"' + field + '\": {\"$gt\":' + item.value[1] + '}}]';\n }\n else {\n mongoQuery += '\"$or\":[{\"' + field + '\": {\"$lt\": \"' + item.value[0] + '\"}}, {\"' + field + '\": {\"$gt\": \"' + item.value[1] + '\"}}]';\n }\n break;\n case 'lessthan':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lt\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lt\": \"' + item.value + '\"}';\n }\n break;\n case 'lessthanorequal':\n if (item.type === 'number') {\n mongoQuery += '\"' + field + '\": { \"$lte\": ' + item.value + '}';\n }\n else {\n mongoQuery += '\"' + field + '\": { \"$lte\": \"' + item.value + '\"}';\n }\n break;\n }\n mongoQuery += '}';\n if (rules.length !== i) {\n mongoQuery += ',';\n }\n });\n return mongoQuery;\n };\n QueryLibrary.prototype.mongoParser = function (mongoQuery, rule, mongoLocale) {\n var mongoList;\n if (Object.keys(mongoQuery).indexOf('$and') > -1) {\n mongoList = mongoQuery['$and'];\n rule.condition = 'and';\n }\n else if (Object.keys(mongoQuery).indexOf('$or') > -1) {\n mongoList = mongoQuery['$or'];\n rule.condition = 'or';\n }\n rule.rules = [];\n this.mongoRecursion(mongoList, rule.rules, mongoLocale);\n };\n QueryLibrary.prototype.mongoRecursion = function (mongoList, rules, mongoLocale) {\n var operatorValue;\n var type;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var stringValue;\n var key;\n var betweenValue;\n var fieldType;\n var condition;\n var value;\n var subRules;\n var rule;\n var keyObj;\n var ruleValue;\n for (var i = 0, len = mongoList.length; i < len; i++) {\n var betweenOperatorArray = [];\n var inOperatorArray = [];\n condition = Object.keys(mongoList[i])[0];\n value = mongoList[i][condition];\n if (condition === '$and') {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n else if (condition === '$or') {\n var notBetween = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var innerObject = [];\n var keys = [];\n var firstKey = [];\n var secondKey = [];\n var innerKeys = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var firstValue = [];\n var secondValue = [];\n var innerFirstValue = [];\n var innerSecondValue = [];\n if (Array.isArray(value) && value.length === 2) {\n keys = Object.keys(value);\n innerFirstValue = value[keys[0]];\n innerSecondValue = value[keys[1]];\n if (typeof innerFirstValue === 'object') {\n innerObject = Object.keys(innerFirstValue)[0];\n innerKeys = Object.keys(innerFirstValue[Object.keys(innerFirstValue)[0]]);\n firstKey = innerKeys[0];\n secondKey = Object.keys(innerSecondValue[Object.keys(innerSecondValue)[0]])[0];\n if (firstKey === '$lt' && secondKey === '$gt') {\n operatorValue = 'notbetween';\n // eslint-disable-next-line security/detect-object-injection\n firstValue = innerFirstValue[innerObject][firstKey];\n // eslint-disable-next-line security/detect-object-injection\n secondValue = innerSecondValue[innerObject][secondKey];\n type = typeof firstValue === 'number' ? 'number' : 'date';\n ruleValue = [firstValue, secondValue];\n rule = { field: innerObject, label: innerObject, value: ruleValue, operator: operatorValue, type: type };\n rules.push(rule);\n notBetween = true;\n }\n }\n }\n if (!notBetween) {\n if (this.parent.enableNotCondition) {\n subRules = { condition: condition.replace('$', ''), rules: [], not: false };\n }\n else {\n subRules = { condition: condition.replace('$', ''), rules: [] };\n }\n rules.push(subRules);\n this.mongoRecursion(mongoList[i][condition], rules[rules.length - 1].rules, mongoLocale);\n }\n }\n else {\n value = mongoList[i][condition];\n if (value === null) { // isnull operator\n operatorValue = 'isnull';\n }\n if (typeof value === 'boolean') { // boolean type values\n operatorValue = 'equal';\n type = 'boolean';\n ruleValue = value;\n }\n if (typeof (value) === 'number') {\n ruleValue = value;\n type = 'number';\n operatorValue = 'equal';\n }\n else if (typeof (value) === 'object' && value !== null) {\n keyObj = Object.keys(value);\n for (var i_1 = 0; i_1 < keyObj.length; i_1++) {\n key = keyObj[i_1];\n stringValue = (value)[keyObj[i_1]];\n if (key === '$ne' && isNullOrUndefined(stringValue)) { // not null operator\n operatorValue = 'isnotnull';\n ruleValue = null;\n }\n if (key === '$ne' && typeof stringValue === 'boolean') { // not equal operator for boolean\n operatorValue = 'notequal';\n ruleValue = stringValue;\n type = 'boolean';\n }\n if (keyObj.length >= 2 && keyObj[i_1]) {\n if (typeof (stringValue) == 'object') { // between and notbetween operators\n operatorValue = 'notbetween';\n condition = Object.keys(stringValue)[0];\n betweenValue = [Object.keys(stringValue[condition])[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n betweenOperatorArray.push(stringValue[condition][betweenValue]);\n type = 'number';\n }\n else {\n operatorValue = 'between';\n betweenOperatorArray.push(stringValue);\n }\n if (typeof (stringValue) === 'number') {\n type = 'number';\n }\n }\n else if (typeof (stringValue) === 'object' && stringValue !== null) { // \"in\" and \"notin\" operator\n if (key === '$not' && Object.keys(stringValue)[0] === '$regex') {\n if (stringValue['$regex'].indexOf('^') > -1) {\n operatorValue = 'notstartswith';\n ruleValue = stringValue['$regex'].replace('^', '');\n }\n else if (stringValue['$regex'].indexOf('$') > -1) {\n operatorValue = 'notendswith';\n ruleValue = stringValue['$regex'].replace('$', '');\n }\n else {\n operatorValue = 'notcontains';\n ruleValue = stringValue['$regex'];\n }\n }\n else {\n operatorValue = key === '$in' ? 'in' : 'notin';\n inOperatorArray = stringValue;\n type = typeof (stringValue[0]) === 'number' ? 'number' : 'string';\n }\n }\n else if (typeof (stringValue) === 'number') { // number type values\n operatorValue = this.getOperatorFromMongoOperator(key);\n type = 'number';\n ruleValue = stringValue;\n }\n if (typeof (stringValue) === 'string') { // string type values\n if (key === '$regex') {\n operatorValue = 'contains';\n ruleValue = stringValue;\n type = 'string';\n }\n if (key === '$ne') { // not equal\n if (stringValue !== null && stringValue.length > 0 && isNaN(Date.parse(stringValue))) {\n operatorValue = 'notequal';\n ruleValue = stringValue;\n }\n else if (isNullOrUndefined(stringValue)) { // is not null operator\n operatorValue = 'isnotnull';\n ruleValue = stringValue;\n }\n else if (stringValue === '') { // is not empty operator\n operatorValue = 'isnotempty';\n ruleValue = stringValue;\n }\n type = 'string';\n }\n if (stringValue.indexOf('^') > -1) {\n operatorValue = 'startswith';\n ruleValue = stringValue.replace('^', '');\n type = 'string';\n }\n if (stringValue.indexOf('$') > -1 && key !== '$not') {\n operatorValue = 'endswith';\n ruleValue = stringValue.replace('$', '');\n type = 'string';\n }\n for (var _i = 0, _a = this.parent.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n if (column.field === condition) {\n fieldType = column.type;\n break;\n }\n }\n if (!isNaN(Date.parse(stringValue)) || fieldType === 'date') { // Date type operators\n operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);\n type = 'date';\n ruleValue = stringValue;\n }\n }\n }\n }\n else if (value && typeof (value) === 'string' && !isNaN(Date.parse(value))) {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'date';\n }\n else if (typeof (value) === 'string' && value !== '' && value !== 'true' && value !== 'false') {\n operatorValue = 'equal';\n ruleValue = value;\n type = 'string';\n }\n else if (typeof (value) === 'string' && value === '') {\n operatorValue = 'isempty';\n ruleValue = value;\n type = 'string';\n }\n if (betweenOperatorArray && betweenOperatorArray.length > 1) { // between opertor value\n rule = { field: condition, label: condition, value: betweenOperatorArray, operator: operatorValue, type: type };\n }\n else if (inOperatorArray && inOperatorArray.length > 1) { // in operator value\n rule = { field: condition, label: condition, value: inOperatorArray, operator: operatorValue, type: type };\n }\n else {\n rule = { field: condition, label: condition, value: ruleValue, operator: operatorValue, type: type };\n }\n rules.push(rule);\n operatorValue = '';\n }\n }\n };\n QueryLibrary.prototype.convertParamSqlToSql = function (sql) {\n var paramSql = sql.sql;\n var paramValues = sql.params;\n var parts = paramSql.split('?');\n var normalSql = parts[0];\n for (var i = 0; i < paramValues.length; i++) {\n normalSql += (typeof (paramValues[i]) === 'string' ? \"'\" + paramValues[i] + \"'\" + parts[i + 1] : paramValues[i] + parts[i + 1]);\n }\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.convertNamedParamSqlToSql = function (sql) {\n var namedParamSql = sql.sql;\n var params = sql.params;\n var normalSql = namedParamSql;\n Object.keys(params).forEach(function (paramName) {\n var paramValue = params[paramName];\n paramName = ':' + paramName;\n normalSql = normalSql.replace(paramName, typeof (paramValue) === 'string' ? \"'\" + paramValue + \"'\" : String(paramValue));\n });\n if (normalSql.length >= 2 && normalSql[0] === '(' && normalSql[normalSql.length - 1] === ')') {\n normalSql = normalSql.slice(1, -1);\n }\n normalSql = normalSql.replace(/!= ''(?! =)/g, 'IS NOT EMPTY').replace(/= ''/g, 'IS EMPTY');\n return normalSql;\n };\n QueryLibrary.prototype.getParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, false);\n return this.getParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['ruleVal']);\n };\n QueryLibrary.prototype.getNamedParameterSql = function (qbrule) {\n var qbRule = extend({}, qbrule, null, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateRuleValue(qbRule, true);\n return this.getNamedParameterSQLVal(this.parent.getSqlFromRules(qbRule), value['namedRuleVal']);\n };\n QueryLibrary.prototype.getParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n QueryLibrary.prototype.getNamedParameterSQLVal = function (content, ruleValue) {\n var replacedString = content.replace(/[%']/g, '');\n return { sql: '(' + replacedString + ')', params: ruleValue };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n QueryLibrary.prototype.updateRuleValue = function (rule, isNamedParameter) {\n var ruleVal = [];\n var namedRuleVal = {};\n var namedParameters = [];\n return this.updateValue(rule.rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n };\n QueryLibrary.prototype.updateValue = function (rules, isNamedParameter, ruleVal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal, namedParameters) {\n if (isNullOrUndefined(rules)) {\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n }\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].rules) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = this.updateValue(rules[i].rules, isNamedParameter, ruleVal, namedRuleVal, namedParameters);\n ruleVal = value['ruleVal'];\n namedRuleVal = value['namedRuleVal'];\n }\n else {\n var namedField = void 0;\n if (rules[i].value instanceof Array) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (var j = 0; j < (rules[i].value).length; j++) {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (!isNullOrUndefined(rules[i].value[j])) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n else {\n if (isNamedParameter) {\n namedRuleVal[namedField] = rules[i].value[j];\n }\n else {\n ruleVal.push(rules[i].value[j]);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value[j] = ':' + namedField;\n }\n else {\n rules[i].value[j] = '?';\n }\n }\n }\n else {\n if (isNamedParameter) {\n namedField = this.getNamedParameter(rules[i].field, namedParameters);\n }\n if (rules[i].operator.indexOf('null') < 1) {\n if (rules[i].type !== 'string' || (rules[i].type === 'string' && (rules[i].value !== '' || rules[i].value === 0))) {\n if (rules[i].type === 'string' || rules[i].type === 'date') {\n if (rules[i].operator.indexOf('empty') < 1) {\n var value = rules[i].value.toString();\n switch (rules[i].operator) {\n case 'startswith':\n case 'notstartswith':\n value = value + '%';\n break;\n case 'endswith':\n case 'notendswith':\n value = '%' + value;\n break;\n case 'contains':\n case 'notcontains':\n value = '%' + value + '%';\n break;\n }\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(value);\n }\n }\n else {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = '';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push('');\n }\n if (rules[i].operator === 'isempty') {\n rules[i].operator = 'equal';\n }\n else {\n rules[i].operator = 'notequal';\n }\n }\n }\n else {\n if (!isNullOrUndefined(rules[i].value)) {\n if (isNamedParameter) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namedRuleVal[namedField] = rules[i].value;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ruleVal.push(rules[i].value);\n }\n }\n }\n if (isNamedParameter) {\n rules[i].value = ':' + namedField;\n }\n else {\n rules[i].value = '?';\n }\n }\n }\n }\n }\n }\n return { ruleVal: ruleVal, namedRuleVal: namedRuleVal };\n };\n QueryLibrary.prototype.getNamedParameter = function (field, namedParameters) {\n var newField = null;\n if (namedParameters.length > 0) {\n for (var i = namedParameters.length - 1; i >= 0; i--) {\n var currField = namedParameters[i];\n if (currField.indexOf(field) > -1) {\n var idx = parseInt(currField.split('_')[1], 10) + 1;\n newField = field + '_' + idx;\n namedParameters.push(newField);\n break;\n }\n }\n }\n if (!newField) {\n newField = field + '_1';\n namedParameters.push(newField);\n }\n return newField;\n };\n QueryLibrary.prototype.getModuleName = function () {\n return 'query-library';\n };\n return QueryLibrary;\n}());\nexport { QueryLibrary };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","Columns","ChildProperty","Property","isRequired","min","max","Number","MAX_VALUE","Rule","Collection","Value","ShowButtons","Component","QueryBuilder","getPersistData","addOnPersist","reset","isImportRules","fragment","grpContainer","grpHeader","grpBody","bodyElem","element","querySelector","inputElements","querySelectorAll","batchSize","currentIndex","processBatch","endIndex","Math","tooltip","className","indexOf","getComponent","destroy","parentElement","e","console","warn","requestAnimationFrame","textContent","document","createDocumentFragment","createElement","attrs","class","appendChild","headerTemplate","isRoot","enableNotCondition","toggleElements","removeClass","levelColl","id","setProperties","rule","condition","not","rules","disableRuleCondition","getWrapper","getModuleName","requiredModules","modules","push","member","args","GetRootColumnName","field","isNullOrUndefined","separator","split","initialize","_this","dataColl","type_1","value_1","columnKeys_1","keys","cols","categories_1","groupBy_1","isDate_1","validateObj_1","columns","columnSort","forEach","column","updateCustomOperator","type","isNaN","Date","parse","getTime","validation","category","l10n","getConstant","operators","isLocale","isCustomOprCols","customOperators","fields","text","value","groupBy","updateSubFieldsFromColumns","len","label","updateSubFields","sortDirection","processColumnsInBatches","setTimeout","trigger","endIdx","processedCount","col","updateSubFieldsLarge","processNextBatch","colLength","j","data","columnKeys","compField","result","resData","sampCol","from","this_1","_loop_1","operator_1","values","sqlIdx","operColl","map","join","valueIdx","focusEventHandler","event","clickEventHandler","forIdValue","group","ariaChecked","targetValue","tagName","animation","Animation","duration","delay","renderSummary","txtareaElem","summaryElem","getElementById","animate","name","groupElem","style","display","getSqlFromRules","height","scrollHeight","mRules","actionButton","deleteRule","cloneRuleBtnClick","isRuleClicked","ruleClone","ruleLock","groupLock","cloneGrpBtnClick","groupCloned","groupClone","closest","deleteGroup","addGroupElement","extend","setGroupRules","renderSummaryCollapse","getAttribute","enableSeparateConnector","classList","contains","groupID","replace","getGroup","toggleElem","getElementsByClassName","addClass","cancel","toLowerCase","beforeSuccessCallBack","observedChangeArgs","beforeRules","andElem","orElem","getValidRules","getParentGroup","previousElementSibling","getRule","ruleID","filterRules","checked","selectBtn","showButtons","groupInsert","maxGroupCount","enableRtl","children","addRuleElement","appendRuleElem","parentId","action","ruleElem","elem","ruleListElem","select","setAttribute","ruleIdCounter","cloneRule","ruleIndex","index","tempRuleIndex","insertBefore","ruleTemplate","requestType","ruleTemplateFn","templateParser","templateID","getOperators","operatorFields","isReact","isAngular","templateColl","nodeType","isVue3","append","cloneNode","lockGroup","lockRule","cloneGroup","ruleDelete","allowDragAndDrop","renderReactTemplates","isRuleTemplate","isInitialLoad","prvtEvtTgrDaD","addRuleSuccessCallBack","trgt","act","pId","isRlTmp","passedRule_1","isVertical","displayMode","getColumn","newRule","operator","selectedColumn","actionArgs","createArgs","spanElement","add","previousRuleElem","processAdjacentElements","updateAddedRule","ruleCount","applyFieldComponent","isLocked","lockRuleTarget","processConnectorElements","prevRule","ruleContainer","headerTemplateFn","handleOrphanedRuleElement","prevRuleContainer","prevElem","notCondition","undefined","handleOrphanedConnectorElement","setMultiConnector","fieldMode","applyDropdownListComponent","applyDropdownTreeComponent","ddlValue","autoSelectField","ddlField","dataSource","placeholder","popupHeight","close","fieldClose","bind","change","changeField","open","popupOpen","cssClass","dropDownList","fieldModel","DropDownList","appendTo","ddlVal","getDataByValue","changeRule","itemData","dropdowntree","dummyDropdownTreeDs","updateDropdowntreeDS","child","expanded","selectable","showClearButton","changeOnBlur","treeSettings","expandOn","filtering","dropdownTreeFiltering","dropdownTreeClose","DropDownTree","getLabelFromColumn","proxy","srcElement","ruleElemID","hierarchicalData","ddTree","changeDataSource","matchedDataSource","nestedChildFilter","filter","filteredChild","treeObj","expandAll","refresh","node","matchedChildren","isMatchedNode","checkValue","parseInt","toString","template","isNewRuleAdded","enableSeparateCondition","custom","splice","changeRuleTemplate","parentGroup","previousColumn","detach","clearQBTemplate","operVal","renderToolTip","Tooltip","content","position","afterClose","beforeOpen","tooltipCloseElement","beforeClose","isPopupScroll","validateFields","dropDownTreeObj","isValid","allowValidation","excludeOprs","fieldElem","indexElem","valArray","dropDownObj","tempElem","ruleElemCln","validateRule","separateCondition","valElem","jLen","refreshLevelColl","refreshLevel","groupElement","level","obj","childElem","ruleList","iLen","groupCount","slice","groupTemplate","isConnector","inputElem","groupBtn","groupHdrElem","grpBodyElem","rulesElem","dragClsName","spanDragElement","aria-label","title","glueElem","role","labelElem","innerHTML","grpActElem","filterElem","cloneRuleBtnElem","cloneClsName","lockClsName","cloneLockBtnElem","clsName","delBtnElem","isGroup","isBtnClick","addGroupSuccess","eventTarget","conditionBtn_1","groupBtn_1","btnObj","dltGroupBtn","groupIdCounter","andInpElem","orInpElem","andLblElem","orLblElem","btnGroupId","groupDelete","Button","iconCss","rippleEffect","selector","childElems","grpLen","groupIndex","isLastGroup","tempGroupIndex","idx","parentNode","isMiddleGroup","lockBtnElem","isAddSuccess","addGroups","addRuleToNewGroups","cloneBtnElem","lockSpanElement","notElem","CheckBox","updatedRule","nextSibling","btnGroup","childNodes","newAndElem","newOrElem","nextElementSibling","args_1","onclick","DropDownButton","items","grpId","chgrpId","childGroupID","btnGroupElem","addHeaderDiv","disabled","isInitialRule","groupHdr","getRuleCollection","headerFn","enableSeparateConnectorInitialRule","nodeName","notifyChange","grpElement","ruleElement","format","getFormat","intl","formatDate","templateChange","isNotified","updateRules","grpElem","validateValue","prevOper","arrOper","grpEle","destroyControls","eventsArgs","changeValue","numericTextBoxObj","decimalSeparator","isNumInput","currentTarget","dateElement","rbValue","getInstance","NumericTextBox","getValue","getNumericObject","locale","getNumberParser","immediateModeDelay","window","clearInterval","timer","setInterval","filterValue","grID","rlID","ele","changeValueSuccessCallBack","setSecondDateMinFromFirst","valueIndex","operatorDropdownElement","operatorDropdown","firstDateElement","secondDateElement","firstDatePicker","secondDatePicker","nextDay","setDate","getDate","customArgs","isFieldChange","isDestroy","isFieldClose","item","ddl","popupObj","getItemData","isInteracted","previousItemData","prevItemData","previousItem","previousValue","ddtElem","ddt","oldValue","dataBind","destroySubFields","subFieldElem","isNotValueChange","ddlArgs","ddlObj","changeFilter","flt","dl","rl","tmpRl","dArg","operatorElem","selectedField","fieldChangeSuccess","changeOperator","opr","selectedIndex","operatorChangeSuccess","changeRuleValues","tempRule","tooltipElem","createSubFields","remove","subFieldValue","subFilterCounter","ruleId","subField","parentElem","currOper","prevValue","operatorList","operator_2","ddlIdx","ddlOperator","childElementCount","fieldObj","renderValues","oprElem","autoSelectOperator","operatorModel","isField","popup","inputElement","divElement","templateDestroy","templateElement","elemId","temp","templateElements","elementId","elements","getValues","original","fieldColl","fieldStr","dataObj","createNestedObject","lastIndex","k","getDistinctValues","nest","isNested","this_2","_loop_2","renderMultiSelect","selectedValue","ds","isFetched","isValues","multiSelectUserQuery","isGetNestedData","valueModel","multiSelectModel","query","multiSelectQuery","clone","Query","resolvedQuery","multiSelectObj","dataManager","DataManager","multiSelectValue","selectedRule","mode","width","closePopup","actionBegin","multiSelectOpen","MultiSelect","multiselectObj","incomingQuery","bindMultiSelectData","existingQuery","areQueriesSame","query1","query2","JSON","stringify","getMultiSelectData","dummyData","deferred","Deferred","userQuery","dataQuery","isRequestSent","executeQuery","hideSpinner","createSpinner","showSpinner","then","actual","newData","current","catch","reject","spinnerElem","Browser","isDevice","ms","processTemplate","onComplete","container","tempElements","write","templateArgs","writeResult","parentFieldObj","subFieldObjList","lastSubFieldObj","setDefaultValue","isArryValue","isNumber","renderStringValue","ruleValElem","selectedVal","columnData","isTemplate","isPublic","txtBox","input","textBoxModel","inputobj","TextBox","minWidth","renderNumberValue","numericTxt","selVal","txtInp","step","numericTextBoxModel","numeric","oninput","processValueString","numArr","strArr","kLen","parseDate","dParser","getDateParser","skeleton","formatOpt","renderControls","isRendered","length_1","processBoolValues","parsedDate","datePicker","place","formatObj","getLocale","parsedMinDate","datePickerModel","DatePicker","orgValue","isCheck","radiobutton","radioBtn","radioButtonModel","RadioButton","getOperatorIndex","getPreviousItemData","isRender","filtElem","getElementsByTagName","filtObj","isTempRendered","setColumnTemplate","inputLen","renderTemplate","observedActionArgs","actionBeginSuccessCallBack","Element","columnTemplateFn","valElemColl","updateValues","selectedDate","textboxValue","controlName","some","op","val","trim","radioBtnObj","isNotTrigger","valueContainer","elementCln","i_1","i_2","ruleValueUpdate","beforeRule","afterRule","previousRule","oper","arrOperator","dupSelectedValue","parseFloat","isObject","formatOptions","findGroupByIdx","groupIdx","ruleColl","dupRuleColl","unWireEvents","portals","qbDdlElems","ddlElem","targetInput","ddlInst","popupElement","addRules","groups","importRules","HTMLElement","parent_1","allContainers","topLevelGroups","initialID","lastGroupIndex","lastGroup","initWrapper","innerWidth","isPropChange","summaryView","isRefreshed","notGroupRtl","readonly","enableReadonly","button","buttons","contentElem","textElem","styles","editElem","divElem","collapseElem","executeLocal","sortByDesc","sortBy","onChangeNotGroup","checkNotGroup","orgRule","onPropertyChanged","newProp","oldProp","properties","_i","properties_1","enablePersistence","setRules","Internationalization","isReadonly","preRender","getUniqueID","defaultLocale","StartsWith","DoesNotStartWith","EndsWith","DoesNotEndWith","Contains","DoesNotContain","NotLike","Like","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","Between","NotBetween","In","NotIn","Remove","SelectField","SelectOperator","DeleteRule","DeleteGroup","AddGroup","AddCondition","Edit","ValidationMessage","SummaryViewTitle","OtherFields","AND","OR","NOT","SelectValue","IsEmpty","IsNotEmpty","IsNull","IsNotNull","True","False","AddButton","CloneGroup","LockGroup","CloneRule","LockRule","UnlockRule","UnlockGroup","L10n","parser","stringOperator","dateOperator","booleanOperator","numberOperator","equal","notequal","greaterthan","greaterthanorequal","lessthan","in","notin","lessthanorequal","startswith","endswith","between","notbetween","isnull","isnotnull","isempty","isnotempty","notstartswith","notendswith","notcontains","sqlOperators","toUpperCase","render","stringOper","numberOper","concat","initControl","executeDataManager","take","renderComplete","initializeDrag","draggable","Draggable","dragTarget","distance","helper","dragStart","dragStartHandler","drag","dragHandler","dragStop","dragStopHandler","isReplaceDragEle","isPreventSelect","abort","isDragScroll","enableAutoScroll","visualElement","cloneElement","currentStateTarget","offsetWidth","removeAttribute","draggedRule","isDragEventPrevent","body","dragElement","dragEventArgs","dragRuleID","dragGroupID","targetElem","rect","mouseY","distanceToBottom","threshold","getBoundingClientRect","distanceToTop","clientY","changedTouches","top","bottom","isPreventelem","dropEventArgs","groupId_2","groupId","targetGroup","tgrt","targetGrp","dropRuleID","dropGroupID","groupId_1","groupRule","cloneGroupElem","isRuleArea","ruleElems","ruleIds","dropInd","deleteRules","overallDropIndex","borderLineElem","templateCompiler","compile","error","wireEvents","scrollEventHandler","wrapper","EventHandler","keyBoardHandler","boundScrollHandler","addEventListener","boundResizeHandler","windowResizeHandler","removeEventListener","isParent","groupLevel","deleteGroupSuccessCallBack","nextElem","removeString","remRule","ruleElemColl","isTemplateRendered","isPlatformTemplate","deleteRuleSuccessCallBack","clnruleElem","previousElem","nextElem_1","err","i_3","lockGrpTarget","dragElemnet","keyCode","code","preventDefault","clearTemplate","isNewGroup","count","andGroup","orGroup","currentRule","isValueEmpty","ruleCondtion","getRules","isValidRule","notValue","customObj","isQuestion","lockedRule","isArray","deleteGroups","groupIdColl","getFilteredRecords","predicate","getPredicate","dataManagerQuery","where","ruleIdColl","getDataManagerQuery","pred","ruleValue","ignoreCase","isDateFilter","dateOperColl","pred2","and","or","matchCase","isTime","datePredicate","arrayPredicate","Predicate","localeString","cldrData","fieldParts","rootField","substring","setTime","date","isStart","setHours","startDate","endDate","nullValue","gte","currDate","setMinutes","setSeconds","isReset","renderGroup","tglBtnElem","renderRule","cloneElem","radioButtonObj","deleteGroupElems","addRuleGroupElems","removeRuleElems","elems","enableBtnGroup","isDateFunction","dateFunc","getSqlString","enableEscape","queryStr","sqlLocale","notPrefix","reduce","valueStr","custOper","ruleStr","ruleOpertor","ruleCondition","fieldName","isCustom","setRulesFromSql","sqlString","ruleModel","getRulesFromSql","sqlParser","processParser","allowEscape","getParameterizedSql","moduleLoader","loadedModules","notify","prop","onPropertyChange","sql","setParameterizedSql","sqlQuery","getParameterizedNamedSql","setParameterizedNamedSql","setMongoQuery","mongoQuery","mongoLocale","getMongoQuery","isCloneRule","parentGroupID","isCloneGroup","str","st","parseSqlStrings","matchValue","conditions","subOp","regexStr","test","RegExp","exec","lastPasrser","checkLiteral","checkNumberLiteral","regExValue","singleString","getSingleQuoteString","isClosed","checkCondition","combineSingleQuoteString","doubleString","getDoubleQuoteString","start","end","isBetween","parsedValue","tempMatchValue","tempStr","secParser","betweenParser","lastParser","betweenOperator","getOperator","localeOperator","=","!=","<",">","<=",">=","not in","not between","is empty","is null","is not null","is not empty","getTypeFromColumn","l","getLabelFromField","startIdx","lLen","grpCount","numVal","strVal","isLeftOpened","isNotOpened","subRules","pop","targetGrpId","lockItems","lockItem","disableRuleControls","newGroup","disableHeaderControls","updateLockItems","isDisabled","addElem","deleteGrpElem","lockElem","groupContElem","addCondition","addGroup","disableComponents","componentGetter","component","enabled","checkbox","radio","multiSelect","deleteElem","Event","Complex","NotifyPropertyChanges","options","groupCounter","Inject","CheckBoxSelection","QueryLibrary","parent","isDestroyed","on","queryLibrary","off","getMongoFromRules","mongoParser","getParameterSql","getNamedParameterSql","convertParamSqlToSql","convertNamedParamSqlToSql","convertMongoQuery","getOperatorFromMongoOperator","operatorValue","itVal","x","endsWith","mongoList","mongoRecursion","stringValue","betweenValue","fieldType","betweenOperatorArray","inOperatorArray","innerObject","secondKey","secondValue","innerFirstValue","innerSecondValue","notBetween","firstKey","firstValue","keyObj","_a","paramSql","paramValues","params","parts","normalSql","namedParamSql","paramName","paramValue","String","qbrule","qbRule","updateRuleValue","getParameterSQLVal","getNamedParameterSQLVal","isNamedParameter","updateValue","ruleVal","namedRuleVal","namedParameters","namedField","getNamedParameter","newField","currField"],"mappings":"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"}