@syncfusion/ej2-querybuilder 26.2.10 → 26.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ej2-querybuilder.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es2015.js +1 -2
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +1 -2
- package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
- package/dist/global/ej2-querybuilder.min.js +2 -2
- package/dist/global/ej2-querybuilder.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +8 -8
- package/src/query-builder/query-builder.js +1 -2
- package/hotfix/26.1.35_Vol2.txt +0 -1
|
@@ -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.dragStopHandler = function (e) {\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 = closest(e.helper, '.e-notallowedcur');\n var prevRule;\n if (!isPreventelem) {\n var targetGrp = closest(e.target, '.e-group-container');\n var dropEventArgs = { cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id\n : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null };\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.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 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 inputElement = this.element.querySelectorAll('input.e-control');\n for (var i = 0, len = inputElement.length; i < len; i++) {\n if (inputElement[i].className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i], 'tooltip').destroy();\n }\n else if (inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i].parentElement, 'tooltip').destroy();\n }\n }\n if (bodyElem) {\n bodyElem.innerHTML = '';\n }\n else {\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).appendChild(grpBody);\n this.element.appendChild(grpContainer);\n bodyElem = this.element.querySelector('.e-group-body');\n }\n if (this.headerTemplate && this.isRoot) {\n this.element.innerHTML = '';\n this.isRoot = false;\n }\n if (this.enableNotCondition) {\n removeClass(this.element.querySelectorAll('.e-qb-toggle'), 'e-active-toggle');\n }\n bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));\n this.levelColl[this.element.id + '_group0'] = [0];\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n this.disableRuleCondition(bodyElem.parentElement);\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 return this.separator ? field.split(this.separator)[0] : field;\n };\n QueryBuilder.prototype.initialize = function () {\n if (this.dataColl.length) {\n var columnKeys = Object.keys(this.dataColl[0]);\n var cols = [];\n var categories = [];\n var type = void 0;\n var groupBy = false;\n var isDate = false;\n var value = void 0;\n var validateObj = { isRequired: true, min: 0, max: Number.MAX_VALUE };\n if (this.columns.length) {\n this.columnSort();\n var columns = this.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n this.updateCustomOperator(columns[i], 'initial');\n if (!columns[i].type) {\n if (columnKeys.indexOf(columns[i].field) > -1) {\n value = this.dataColl[0][columns[i].field];\n type = typeof value;\n if (type === 'string') {\n isDate = !isNaN(Date.parse(value));\n }\n else if (type === 'object') {\n isDate = value instanceof Date && !isNaN(value.getTime());\n type = 'string';\n }\n columns[i].type = type;\n isDate = false;\n }\n type = 'string';\n }\n if (!columns[i].validation) {\n columns[i].validation = validateObj;\n }\n if (columns[i].category) {\n groupBy = true;\n }\n else {\n columns[i].category = this.l10n.getConstant('OtherFields');\n }\n if (categories.indexOf(columns[i].category) < 0) {\n categories.push(columns[i].category);\n }\n if (!columns[i].operators ||\n (this.isLocale && this.isCustomOprCols.indexOf(columns[i].field) !== 0)) {\n columns[i].operators = this.customOperators[columns[i].type + 'Operator'];\n }\n }\n if (groupBy && (categories.length > 1 || categories[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.length; i < len; i++) {\n value = this.dataColl[0][columnKeys[i]];\n type = typeof value;\n if (type === 'string') {\n isDate = !isNaN(Date.parse(value));\n }\n else if (type === 'object' && !Object.keys(value).length) {\n isDate = value instanceof Date && !isNaN(value.getTime());\n type = 'string';\n }\n cols[i] = { 'field': columnKeys[i], 'label': columnKeys[i], 'type': isDate ? 'date' : type,\n 'validation': validateObj };\n isDate = false;\n cols[i].operators = this.customOperators[cols[i].type + 'Operator'];\n if (type === 'object') {\n this.updateSubFields(value, cols[i]);\n }\n }\n this.columns = cols;\n }\n }\n else if (this.columns && this.columns.length) {\n var columns = this.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].category) {\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]);\n if (!columns[i].operators || this.isLocale) {\n columns[i].operators = this.customOperators[columns[i].type + 'Operator'];\n }\n }\n this.updateSubFieldsFromColumns(this.columns);\n }\n this.trigger('dataBound', { type: 'dataBound' });\n };\n QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {\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.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 (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' && 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.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 = 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 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 targetValue = target.textContent;\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 = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),\n 'not': ariaChecked };\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.addRuleElement(closest(target, '.e-group-container'), {});\n }\n else if (event.element.children[0].className.indexOf('e-addgroup') > -1) {\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.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 ruleElem.children[ruleElem.children.length - 1].className += ' e-rule-field';\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 height = (this.element.className.indexOf('e-device') > -1) ? '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 = { 'label': column.label, 'field': column.field, 'type': column.type, 'operator': operators[0].value };\n var passedRule = Object.keys(rule).length ? rule : newRule;\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule);\n var args_1 = { requestType: 'template-create', action: 'insert-rule', ruleID: ruleElem.id,\n fields: this.fields, rule: passedRule };\n this.trigger('actionBegin', args_1);\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', { attrs: { class: 'e-btn-icon e-icons e-delete-icon' } });\n ruleElem.querySelector('.e-rule-delete').appendChild(spanElement);\n }\n if (!this.showButtons.ruleDelete) {\n element.classList.add('e-button-hide');\n }\n }\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElem.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElem.className = 'e-rule-container e-horizontal-mode';\n }\n var previousRuleElem = ruleElem.previousElementSibling;\n if (this.enableSeparateConnector) {\n var prevRule = void 0;\n var ruleContainer = void 0;\n if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {\n ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');\n previousRuleElem = ruleContainer[ruleContainer.length - 1];\n }\n if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {\n prevRule = this.getRule(previousRuleElem);\n }\n if (this.headerTemplate && previousRuleElem && prevRule) {\n this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);\n }\n else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\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_1 = this.getRule(prevElem);\n this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);\n }\n }\n else {\n this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);\n }\n }\n }\n else {\n if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {\n if (ruleElem.className.indexOf('e-joined-rule') < 0) {\n ruleElem.className += ' e-joined-rule';\n }\n if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {\n previousRuleElem.className += ' e-prev-joined-rule';\n }\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 if (!this.isImportRules) {\n this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);\n }\n if (!column || (column && !column.ruleTemplate) || !rule.field) {\n if (this.fieldMode === 'Default') {\n var ddlField = void 0;\n var ddlValue = void 0;\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, placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),\n change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleElem.id + '_filterkey');\n var ddlVal = void 0;\n if (this.separator && rule.field) {\n ddlVal = this.GetRootColumnName(rule.field);\n }\n else {\n ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :\n dropDownList.value;\n }\n this.selectedColumn = dropDownList.getDataByValue(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropDownList.element, itemData: this.selectedColumn\n });\n }\n }\n else {\n var ddlField = void 0;\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: { dataSource: this.dummyDropdownTreeDs,\n value: 'field', text: 'label', child: 'columns', expanded: 'expanded', selectable: 'selectable' },\n placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,\n popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,\n change: this.changeField.bind(this), value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,\n open: this.popupOpen.bind(this, false), treeSettings: { expandOn: 'Click' },\n cssClass: 'e-qb-ddt', filtering: this.dropdownTreeFiltering.bind(this), 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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, itemData: this.selectedColumn\n });\n }\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', { groupID: trgt.id.replace(this.element.id + '_', ''), ruleID: ruleID, type: 'insertRule' });\n }\n }\n if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {\n rule = this.getRule(ruleID);\n }\n if (this.enableSeparateConnector) {\n var prevElem = ruleElem.previousElementSibling;\n var ruleContainer = void 0;\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_2 = { requestType: 'rule-template-create', ruleID: prevElem.id, condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined };\n this.trigger('actionBegin', args_2);\n }\n else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {\n var prevElem_1 = group.previousElementSibling.previousElementSibling;\n if (prevElem_1.classList.contains('e-group-container')) {\n var ruleContainer_1 = prevElem_1.querySelectorAll('.e-rule-container');\n prevElem_1 = ruleContainer_1[ruleContainer_1.length - 1];\n }\n if (prevElem_1.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem_1);\n var args_3 = { requestType: 'rule-template-create', ruleID: prevElem_1.id,\n condition: prevRule.condition, notCondition: this.enableNotCondition ? true : undefined };\n this.trigger('actionBegin', args_3);\n }\n }\n }\n this.setMultiConnector(ruleElem);\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 // Cancel the default filtering.\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 proxy.ddTree.treeObj.expandAll();\n }, 100);\n }\n };\n QueryBuilder.prototype.changeDataSource = function (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(this.columns);\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 var operVal = this.selectedColumn.operators;\n if (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 rule = { field: column.field, label: column.label, operator: operVal[0].value, value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n }\n };\n QueryBuilder.prototype.renderToolTip = function (element) {\n var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'), isSticky: true,\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 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.index) && 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) < -1 &&\n (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.index)) ||\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 // create button group in OR and AND process\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', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',\n title: 'drag handle' } });\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', { attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },\n innerHTML: this.l10n.getConstant('AND') });\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', { attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },\n innerHTML: this.l10n.getConstant('OR') });\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', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',\n title: 'drag handle' } });\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_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,\n notCondition: this.enableNotCondition ? not : undefined };\n this.trigger('actionBegin', args_4);\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) {\n if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {\n trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), 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.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 (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 = { requestType: 'header-template-initialize', ruleID: groupElem.id,\n notCondition: this.enableNotCondition ? not : undefined,\n condition: condition, rule: this.getRuleCollection(rule, true), groupID: groupID };\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) {\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 = 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[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 = 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 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 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 = { requestType: 'template-create', action: type, ruleID: grpEle.id,\n fields: this.fields, rule: rule };\n eventsArgs = { groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),\n value: rule.field, type: 'field' };\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') {\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.currentTarget) {\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.currentTarget) {\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 var numberValue = parseFloat(args.currentTarget.value);\n value = numberValue;\n }\n numericTextBoxObj.value = value;\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 if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: ruleID, value: args.value, cancel: false, type: 'value' });\n }\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.element.querySelector('.e-active');\n var itemData = ddl.getItemData();\n ddl.value = itemData.value;\n var customArgs = { element: ddl.element, value: itemData.value, isInteracted: true,\n previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null };\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 = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?\n dl.value[0] : dl.value, cancel: false, type: 'field' };\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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)) {\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[1]) {\n if (Object.keys(this.dataColl[1]).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 multiSelectValue = {\n dataSource: isValues ? values : (isFetched ? ds : this.dataManager),\n query: new Query([rule.field]),\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'), 'dropdownlist');\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n var value = this.selectedColumn.field;\n var isFetched = false;\n if (this.dataColl[1]) {\n if (Object.keys(this.dataColl[1]).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 }\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 data = this.dataManager.executeQuery(new Query().select(value));\n var multiselectObj = getComponent(element, 'multiselect');\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 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 multiselectObj.dataSource = _this.getDistinctValues(_this.dataColl, value);\n _this.isGetNestedData = true;\n hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n }).catch(function (e) {\n deferred.reject(e);\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 value = getComponent(element, 'multiselect').value;\n this.updateRules(element, value, i);\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 (typeof itemData.template === 'string' || itemData.template.write === undefined) {\n var args = { rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,\n requestType: 'value-template-create' };\n this.trigger('actionBegin', args);\n }\n else {\n var template = itemData.template;\n if (typeof template.write === 'string') {\n getValue(template.write, window)({ elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,\n operator: tempRule.operator, field: column.field, dataSource: column.values });\n }\n else if (typeof itemData.template !== 'function') {\n itemData.template.write({ elements: tempElements.length > 1 ? tempElements : tempElements[0],\n values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values });\n }\n }\n };\n QueryBuilder.prototype.getItemData = function (parentId) {\n var fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');\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 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 // 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 (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);\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 }\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 }\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 = { requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,\n renderTemplate: true };\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 switch (controlName) {\n case 'checkbox':\n value = getComponent(element, controlName).value;\n rule.value = (value !== '') ? value : undefined;\n break;\n case 'textbox':\n rule.value = getComponent(element, controlName).value;\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 // Value Fields\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 {\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(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 popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');\n if (popupElement) {\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 };\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 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 = { isLocked: groups[i].isLocked, condition: groups[i].condition,\n not: groups[i].not };\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.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 }\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 || this.displayMode === 'Vertical') {\n if (Browser.isDevice) {\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.toLowerCase() === 'descending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));\n }\n else if (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 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 };\n QueryBuilder.prototype.preRender = function () {\n this.element.id = this.element.id || getUniqueID('ej2-querybuilder');\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 this.executeDataManager(new Query().take(1));\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 });\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 = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,\n dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };\n this.trigger('drag', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\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 EventHandler.add(document, 'keydown', this.keyBoardHandler, this);\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 };\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 }\n else {\n groupId = groupElem.id.replace(this.element.id + '_', '');\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.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.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 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) {\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 }\n else {\n rule = {};\n }\n }\n else {\n if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {\n var notValue = rule.not;\n rule = { '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 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 for (var i = 0, iLen = columns.length; i < iLen; i++) {\n if (columns[i].field === field) {\n column = columns[i];\n break;\n }\n else if (columns[i].columns) {\n column = this.getColumn(field, columns[i].columns);\n if (column) {\n break;\n }\n }\n else if (field && field.indexOf(this.separator) > -1) {\n if (this.separator !== '' && columns[i].field === field.split(this.separator)[0]) {\n column = columns[i];\n break;\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 }\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 {\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 isRoot = false;\n if (!queryStr && queryStr !== '') {\n queryStr = '';\n isRoot = true;\n }\n else {\n queryStr += '(';\n }\n var condition = rules.condition;\n if (rules.not) {\n var rulesNotCondition = void 0;\n if (isRoot) {\n rulesNotCondition = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' (' : 'NOT (';\n queryStr += rulesNotCondition;\n }\n else {\n rulesNotCondition = sqlLocale ? ' ' + this.l10n.getConstant('NOT').toUpperCase() + ' (' : ' NOT (';\n queryStr += rulesNotCondition;\n }\n }\n if (rules.rules) {\n for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {\n if (rules.rules[j].rules) {\n queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);\n if (this.enableSeparateConnector) {\n condition = rules.rules[j].condition;\n }\n }\n else {\n var rule = rules.rules[j];\n var valueStr = '';\n var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];\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 valueStr += '(\"' + rule.value[0] + '\"';\n for (var k = 1, kLen = rule.value.length; k < kLen; k++) {\n valueStr += ',\"' + rule.value[k] + '\"';\n }\n valueStr += ')';\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 if (rule.operator.toString().indexOf('null') > -1) {\n if (enableEscape) {\n rule.field = '`' + rule.field + '`';\n }\n else {\n if (rule.field.indexOf(' ') > -1) {\n rule.field = '\"' + rule.field + '\"';\n }\n }\n queryStr += rule.field + ' ' + 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 if (enableEscape) {\n rule.field = '`' + rule.field + '`';\n }\n else {\n if (rule.field.indexOf(' ') > -1) {\n rule.field = '\"' + rule.field + '\"';\n }\n }\n queryStr += rule.field + ' ' + custOper + ' ' + valueStr;\n }\n if (rule.condition && rule.condition !== '') {\n condition = rule.condition;\n }\n }\n if (j !== jLen - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rule = rules.rules[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 queryStr += ' ' + condition + ' ';\n }\n }\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 = 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 = 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 //Left Parenthesis\n if (/^\\(/.exec(sqlString)) {\n this.parser.push(['Left', '(']);\n return 1;\n }\n //Right Parenthesis\n if (/^\\)/.exec(sqlString)) {\n this.parser.push(['Right', ')']);\n return 1;\n }\n //Boolean\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 //Null\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 matchValue = /^[0-9]+(\\.[0-9]+)$/.exec(sqlString)[0];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n //String\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 // end\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n // Double String\n var doubleString = this.getDoubleQuoteString(sqlString);\n if (doubleString !== '') {\n matchValue = doubleString;\n this.parser.push(['DoubleString', matchValue]);\n return matchValue.length;\n }\n //Number\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 //Negative Number\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).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 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 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;\n var groupId;\n if (typeof target === 'string') {\n groupId = this.element.id + '_' + target;\n target = document.getElementById(groupId);\n }\n else {\n targetGrpId = target.id.replace(this.element.id + '_', '');\n groupId = groupElem.id.replace(this.element.id + '_', '');\n }\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 };\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([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition }], groupId);\n }\n else {\n this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value }], 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 ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');\n var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');\n var textElement = groupElem.querySelectorAll('.e-control.e-textbox');\n var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');\n var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');\n var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');\n var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');\n var deleteElem = groupElem.querySelectorAll('.e-rule-delete');\n var lockElem = groupElem.querySelectorAll('.e-lock-rule');\n var cloneElem = groupElem.querySelectorAll('.e-clone-rule');\n var ruleElem = groupElem.querySelectorAll('.e-rule-container');\n for (var i = 0; i < deleteElem.length; i++) {\n if (isDisabled) {\n if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {\n ruleElem[i].classList.add('e-disable');\n }\n deleteElem[i].disabled = true;\n if (cloneElem[i]) {\n cloneElem[i].disabled = true;\n }\n if (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 (ruleElem[i]) {\n ruleElem[i].classList.remove('e-disable');\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = false;\n }\n deleteElem[i].disabled = false;\n lockElem[i].disabled = false;\n lockElem[i].children[0].classList.remove('e-lock');\n lockElem[i].children[0].classList.add('e-unlock');\n }\n }\n var dropDownObj;\n var numericObj;\n var textObj;\n var dateObj;\n var checkBoxObj;\n var radioBtnObj;\n var multiSelectObj;\n for (var i = 0; i < ddlElement.length; i++) {\n dropDownObj = getComponent(ddlElement[i], 'dropdownlist');\n if (isDisabled) {\n dropDownObj.enabled = false;\n }\n else {\n dropDownObj.enabled = true;\n }\n }\n for (var i = 0; i < numericElement.length; i++) {\n numericObj = getComponent(numericElement[i], 'numerictextbox');\n if (isDisabled) {\n numericObj.enabled = false;\n }\n else {\n numericObj.enabled = true;\n }\n }\n for (var i = 0; i < textElement.length; i++) {\n textObj = getComponent(textElement[i], 'textbox');\n if (isDisabled) {\n textObj.enabled = false;\n }\n else {\n textObj.enabled = true;\n }\n }\n for (var i = 0; i < dateElement.length; i++) {\n dateObj = getComponent(dateElement[i], 'datepicker');\n if (isDisabled) {\n dateObj.enabled = false;\n }\n else {\n dateObj.enabled = true;\n }\n }\n for (var i = 0; i < checkboxElement.length; i++) {\n checkBoxObj = getComponent(checkboxElement[i], 'checkbox');\n if (isDisabled) {\n checkBoxObj.disabled = true;\n }\n else {\n checkBoxObj.disabled = false;\n }\n }\n for (var i = 0; i < radioBtnElement.length; i++) {\n radioBtnObj = getComponent(radioBtnElement[i], 'radio');\n if (isDisabled) {\n radioBtnObj.disabled = true;\n }\n else {\n radioBtnObj.disabled = false;\n }\n }\n for (var i = 0; i < multiSelectElement.length; i++) {\n multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');\n if (isDisabled) {\n multiSelectObj.enabled = false;\n }\n else {\n multiSelectObj.enabled = true;\n }\n }\n };\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"created\", 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 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 if (!isNaN(Date.parse(stringValue))) { // 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","grpContainer","grpHeader","grpBody","bodyElem","element","querySelector","inputElement","querySelectorAll","len","className","indexOf","getComponent","destroy","parentElement","innerHTML","createElement","attrs","class","appendChild","headerTemplate","isRoot","enableNotCondition","removeClass","levelColl","id","setProperties","rule","condition","not","rules","disableRuleCondition","getWrapper","getModuleName","requiredModules","modules","push","member","args","GetRootColumnName","field","separator","split","initialize","dataColl","columnKeys","keys","cols","categories","type","groupBy","isDate","value","validateObj","columns","columnSort","updateCustomOperator","isNaN","Date","parse","getTime","validation","category","l10n","getConstant","operators","isLocale","isCustomOprCols","customOperators","fields","text","updateSubFieldsFromColumns","label","updateSubFields","trigger","col","data","compField","result","resData","sampCol","column","from","isNullOrUndefined","this_1","j","_loop_1","operator_1","values","sqlIdx","operColl","map","join","valueIdx","focusEventHandler","event","clickEventHandler","forIdValue","group","ariaChecked","targetValue","_this","tagName","animation","Animation","duration","delay","renderSummary","txtareaElem","summaryElem","document","getElementById","animate","name","groupElem","style","display","textContent","getSqlFromRules","height","scrollHeight","mRules","actionButton","deleteRule","cloneRuleBtnClick","ruleClone","ruleLock","groupLock","cloneGrpBtnClick","groupClone","closest","deleteGroup","addGroupElement","extend","setGroupRules","renderSummaryCollapse","getAttribute","enableSeparateConnector","groupID","replace","getGroup","toggleElem","getElementsByClassName","addClass","cancel","toLowerCase","beforeSuccessCallBack","observedChangeArgs","beforeRules","andElem","orElem","getValidRules","getParentGroup","classList","contains","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","ddlField","ddlValue","ddlVal","getColumn","newRule","operator","selectedColumn","passedRule","args_1","displayMode","spanElement","add","previousRuleElem","ruleContainer","prevRule","headerTemplateFn","prevRuleContainer","prevElem","prevRule_1","updateAddedRule","fieldMode","autoSelectField","dataSource","placeholder","popupHeight","close","fieldClose","bind","change","changeField","open","popupOpen","cssClass","fieldModel","dropDownList","DropDownList","appendTo","getDataByValue","changeRule","itemData","dummyDropdownTreeDs","updateDropdowntreeDS","child","expanded","selectable","showClearButton","changeOnBlur","treeSettings","expandOn","filtering","dropdownTreeFiltering","dropdownTreeClose","dropdowntree","DropDownTree","getLabelFromColumn","isLocked","lockRuleTarget","args_2","notCondition","undefined","prevElem_1","ruleContainer_1","args_3","setMultiConnector","proxy","srcElement","ruleElemID","hierarchicalData","ddTree","changeDataSource","matchedDataSource","nestedChildFilter","filter","filteredChild","setTimeout","treeObj","expandAll","refresh","node","matchedChildren","isMatchedNode","checkValue","parseInt","toString","template","isNewRuleAdded","enableSeparateCondition","custom","splice","changeRuleTemplate","parentGroup","operVal","previousColumn","detach","clearQBTemplate","renderToolTip","tooltip","Tooltip","content","isSticky","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-lable","title","glueElem","role","labelElem","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_4","onclick","DropDownButton","items","grpId","chgrpId","childGroupID","addHeaderDiv","disabled","isInitialRule","groupHdr","getRuleCollection","headerFn","enableSeparateConnectorInitialRule","notifyChange","grpElement","ruleElement","format","getFormat","intl","formatDate","templateChange","isNotified","updateRules","grpElem","validateValue","prevOper","arrOper","grpEle","destroyControls","eventsArgs","changeValue","numericTextBoxObj","decimalSeparator","numberValue","isNumInput","currentTarget","dateElement","rbValue","getInstance","NumericTextBox","getValue","getNumericObject","locale","parseFloat","immediateModeDelay","window","clearInterval","timer","setInterval","filterValue","grID","rlID","ele","changeValueSuccessCallBack","customArgs","isFieldChange","isDestroy","isFieldClose","item","ddl","popupObj","getItemData","isInteracted","previousItemData","prevItemData","previousItem","e","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","currOper","parentElem","prevValue","operatorList","operator_2","ddlIdx","ddlOperator","childElementCount","fieldObj","renderValues","oprElem","forEach","autoSelectOperator","operatorModel","isField","popup","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","multiSelectObj","isGetNestedData","multiSelectValue","dataManager","query","Query","selectedRule","mode","width","closePopup","actionBegin","multiSelectOpen","valueModel","multiSelectModel","MultiSelect","DataManager","bindMultiSelectData","getMultiSelectData","dummyData","deferred","Deferred","executeQuery","multiselectObj","hideSpinner","createSpinner","showSpinner","then","actual","catch","reject","spinnerElem","Browser","isDevice","processTemplate","container","tempElements","write","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","datePicker","place","formatObj","getLocale","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","radioBtnObj","controlName","isNotTrigger","valueContainer","elementCln","i_1","i_2","ruleValueUpdate","beforeRule","afterRule","JSON","stringify","previousRule","oper","arrOperator","dupSelectedValue","isObject","formatOptions","findGroupByIdx","groupIdx","ruleColl","dupRuleColl","unWireEvents","portals","popupElement","addRules","groups","importRules","initWrapper","trim","summaryView","isRefreshed","notGroupRtl","readonly","enableReadonly","button","buttons","contentElem","textElem","styles","editElem","divElem","collapseElem","sortDirection","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","executeDataManager","take","initControl","renderComplete","initializeDrag","draggable","Draggable","dragTarget","distance","helper","dragStart","dragStartHandler","drag","dragHandler","dragStop","dragStopHandler","isReplaceDragEle","isPreventSelect","abort","isDragScroll","visualElement","cloneElement","currentStateTarget","offsetWidth","removeAttribute","draggedRule","isDragEventPrevent","body","dragElement","dragEventArgs","dragRuleID","dragGroupID","targetElem","rect","mouseY","distanceToBottom","threshold","nodeName","getBoundingClientRect","distanceToTop","clientY","changedTouches","top","bottom","templateCompiler","compile","error","wireEvents","wrapper","EventHandler","keyBoardHandler","isParent","groupLevel","groupId","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","HTMLElement","deleteGroups","groupIdColl","getFilteredRecords","predicate","getPredicate","dataManagerQuery","where","deleteRules","ruleIdColl","getDataManagerQuery","pred","ruleValue","ignoreCase","isDateFilter","dateOperColl","pred2","and","or","matchCase","getDate","isTime","datePredicate","arrayPredicate","Predicate","localeString","cldrData","setTime","date","isStart","setHours","startDate","endDate","nullValue","gte","currDate","setMinutes","setSeconds","isReset","tglBtnElem","renderGroup","renderRule","cloneElem","radioButtonObj","deleteGroupElems","addRuleGroupElems","removeRuleElems","elems","enableBtnGroup","isDateFunction","dateFunc","getSqlString","enableEscape","queryStr","sqlLocale","valueStr","ruleOpertor","ruleCondition","custOper","isCustom","setRulesFromSql","sqlString","ruleModel","getRulesFromSql","sqlParser","processParser","allowEscape","getParameterizedSql","moduleLoader","loadedModules","notify","prop","onPropertyChange","sql","console","warn","setParameterizedSql","sqlQuery","getParameterizedNamedSql","setParameterizedNamedSql","setMongoQuery","mongoQuery","mongoLocale","getMongoQuery","isCloneRule","parentGroupID","isCloneGroup","str","st","parseSqlStrings","matchValue","conditions","subOp","regexStr","test","RegExp","exec","lastPasrser","checkLiteral","checkNumberLiteral","singleString","getSingleQuoteString","isClosed","checkCondition","combineSingleQuoteString","doubleString","getDoubleQuoteString","start","end","substring","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","fieldName","lLen","grpCount","numVal","strVal","isLeftOpened","isNotOpened","val","subRules","pop","targetGrpId","lockItems","lockItem","disableRuleControls","newGroup","disableHeaderControls","updateLockItems","isDisabled","addElem","deleteGrpElem","lockElem","groupContElem","addCondition","addGroup","ddlElement","numericElement","textElement","checkboxElement","radioBtnElement","multiSelectElement","deleteElem","enabled","Event","Complex","NotifyPropertyChanges","options","groupCounter","dropEventArgs","groupId_2","targetGroup","isPreventelem","tgrt","targetGrp","dropRuleID","dropGroupID","groupId_1","groupRule","ruleElems","ruleIds","dropInd","borderLineElem","Inject","CheckBoxSelection","QueryLibrary","parent","isDestroyed","removeEventListener","addEventListener","on","queryLibrary","off","getMongoFromRules","mongoParser","getParameterSql","getNamedParameterSql","convertParamSqlToSql","convertNamedParamSqlToSql","convertMongoQuery","getOperatorFromMongoOperator","operatorValue","itVal","x","endsWith","mongoList","mongoRecursion","stringValue","betweenValue","betweenOperatorArray","inOperatorArray","innerObject","secondKey","secondValue","innerFirstValue","innerSecondValue","notBetween","isArray","firstKey","firstValue","keyObj","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.dragStopHandler = function (e) {\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 = closest(e.helper, '.e-notallowedcur');\n var prevRule;\n if (!isPreventelem) {\n var targetGrp = closest(e.target, '.e-group-container');\n var dropEventArgs = { cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id\n : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null };\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.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 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 inputElement = this.element.querySelectorAll('input.e-control');\n for (var i = 0, len = inputElement.length; i < len; i++) {\n if (inputElement[i].className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i], 'tooltip').destroy();\n }\n else if (inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {\n getComponent(inputElement[i].parentElement, 'tooltip').destroy();\n }\n }\n if (bodyElem) {\n bodyElem.innerHTML = '';\n }\n else {\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).appendChild(grpBody);\n this.element.appendChild(grpContainer);\n bodyElem = this.element.querySelector('.e-group-body');\n }\n if (this.headerTemplate && this.isRoot) {\n this.element.innerHTML = '';\n this.isRoot = false;\n }\n if (this.enableNotCondition) {\n removeClass(this.element.querySelectorAll('.e-qb-toggle'), 'e-active-toggle');\n }\n bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));\n this.levelColl[this.element.id + '_group0'] = [0];\n this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);\n this.disableRuleCondition(bodyElem.parentElement);\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 return this.separator ? field.split(this.separator)[0] : field;\n };\n QueryBuilder.prototype.initialize = function () {\n if (this.dataColl.length) {\n var columnKeys = Object.keys(this.dataColl[0]);\n var cols = [];\n var categories = [];\n var type = void 0;\n var groupBy = false;\n var isDate = false;\n var value = void 0;\n var validateObj = { isRequired: true, min: 0, max: Number.MAX_VALUE };\n if (this.columns.length) {\n this.columnSort();\n var columns = this.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n this.updateCustomOperator(columns[i], 'initial');\n if (!columns[i].type) {\n if (columnKeys.indexOf(columns[i].field) > -1) {\n value = this.dataColl[0][columns[i].field];\n type = typeof value;\n if (type === 'string') {\n isDate = !isNaN(Date.parse(value));\n }\n else if (type === 'object') {\n isDate = value instanceof Date && !isNaN(value.getTime());\n type = 'string';\n }\n columns[i].type = type;\n isDate = false;\n }\n type = 'string';\n }\n if (!columns[i].validation) {\n columns[i].validation = validateObj;\n }\n if (columns[i].category) {\n groupBy = true;\n }\n else {\n columns[i].category = this.l10n.getConstant('OtherFields');\n }\n if (categories.indexOf(columns[i].category) < 0) {\n categories.push(columns[i].category);\n }\n if (!columns[i].operators ||\n (this.isLocale && this.isCustomOprCols.indexOf(columns[i].field) !== 0)) {\n columns[i].operators = this.customOperators[columns[i].type + 'Operator'];\n }\n }\n if (groupBy && (categories.length > 1 || categories[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.length; i < len; i++) {\n value = this.dataColl[0][columnKeys[i]];\n type = typeof value;\n if (type === 'string') {\n isDate = !isNaN(Date.parse(value));\n }\n else if (type === 'object' && !Object.keys(value).length) {\n isDate = value instanceof Date && !isNaN(value.getTime());\n type = 'string';\n }\n cols[i] = { 'field': columnKeys[i], 'label': columnKeys[i], 'type': isDate ? 'date' : type,\n 'validation': validateObj };\n isDate = false;\n cols[i].operators = this.customOperators[cols[i].type + 'Operator'];\n if (type === 'object') {\n this.updateSubFields(value, cols[i]);\n }\n }\n this.columns = cols;\n }\n }\n else if (this.columns && this.columns.length) {\n var columns = this.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].category) {\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]);\n if (!columns[i].operators || this.isLocale) {\n columns[i].operators = this.customOperators[columns[i].type + 'Operator'];\n }\n }\n this.updateSubFieldsFromColumns(this.columns);\n }\n this.trigger('dataBound', { type: 'dataBound' });\n };\n QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {\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.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 (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' && 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.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 = 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 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 targetValue = target.textContent;\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 = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),\n 'not': ariaChecked };\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.addRuleElement(closest(target, '.e-group-container'), {});\n }\n else if (event.element.children[0].className.indexOf('e-addgroup') > -1) {\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.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 ruleElem.children[ruleElem.children.length - 1].className += ' e-rule-field';\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 height = (this.element.className.indexOf('e-device') > -1) ? '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 = { 'label': column.label, 'field': column.field, 'type': column.type, 'operator': operators[0].value };\n var passedRule = Object.keys(rule).length ? rule : newRule;\n ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule);\n var args_1 = { requestType: 'template-create', action: 'insert-rule', ruleID: ruleElem.id,\n fields: this.fields, rule: passedRule };\n this.trigger('actionBegin', args_1);\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', { attrs: { class: 'e-btn-icon e-icons e-delete-icon' } });\n ruleElem.querySelector('.e-rule-delete').appendChild(spanElement);\n }\n if (!this.showButtons.ruleDelete) {\n element.classList.add('e-button-hide');\n }\n }\n if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {\n ruleElem.className = 'e-rule-container e-vertical-mode';\n }\n else {\n ruleElem.className = 'e-rule-container e-horizontal-mode';\n }\n var previousRuleElem = ruleElem.previousElementSibling;\n if (this.enableSeparateConnector) {\n var prevRule = void 0;\n var ruleContainer = void 0;\n if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {\n ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');\n previousRuleElem = ruleContainer[ruleContainer.length - 1];\n }\n if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {\n prevRule = this.getRule(previousRuleElem);\n }\n if (this.headerTemplate && previousRuleElem && prevRule) {\n this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);\n }\n else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\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_1 = this.getRule(prevElem);\n this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);\n }\n }\n else {\n this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);\n }\n }\n }\n else {\n if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {\n if (ruleElem.className.indexOf('e-joined-rule') < 0) {\n ruleElem.className += ' e-joined-rule';\n }\n if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {\n previousRuleElem.className += ' e-prev-joined-rule';\n }\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 if (!this.isImportRules) {\n this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);\n }\n if (!column || (column && !column.ruleTemplate) || !rule.field) {\n if (this.fieldMode === 'Default') {\n var ddlField = void 0;\n var ddlValue = void 0;\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, placeholder: this.l10n.getConstant('SelectField'),\n popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),\n change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'\n };\n if (this.fieldModel) {\n ddlField = __assign({}, ddlField, this.fieldModel);\n }\n dropDownList = new DropDownList(ddlField);\n dropDownList.appendTo('#' + ruleElem.id + '_filterkey');\n var ddlVal = void 0;\n if (this.separator && rule.field) {\n ddlVal = this.GetRootColumnName(rule.field);\n }\n else {\n ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :\n dropDownList.value;\n }\n this.selectedColumn = dropDownList.getDataByValue(ddlVal);\n if (Object.keys(rule).length) {\n this.changeRule(rule, {\n element: dropDownList.element, itemData: this.selectedColumn\n });\n }\n }\n else {\n var ddlField = void 0;\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: { dataSource: this.dummyDropdownTreeDs,\n value: 'field', text: 'label', child: 'columns', expanded: 'expanded', selectable: 'selectable' },\n placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,\n popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,\n change: this.changeField.bind(this), value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,\n open: this.popupOpen.bind(this, false), treeSettings: { expandOn: 'Click' },\n cssClass: 'e-qb-ddt', filtering: this.dropdownTreeFiltering.bind(this), 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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, itemData: this.selectedColumn\n });\n }\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', { groupID: trgt.id.replace(this.element.id + '_', ''), ruleID: ruleID, type: 'insertRule' });\n }\n }\n if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {\n rule = this.getRule(ruleID);\n }\n if (this.enableSeparateConnector) {\n var prevElem = ruleElem.previousElementSibling;\n var ruleContainer = void 0;\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_2 = { requestType: 'rule-template-create', ruleID: prevElem.id, condition: prevRule.condition,\n notCondition: this.enableNotCondition ? true : undefined };\n this.trigger('actionBegin', args_2);\n }\n else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {\n var group = ruleElem.closest('.e-group-container');\n if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {\n var prevElem_1 = group.previousElementSibling.previousElementSibling;\n if (prevElem_1.classList.contains('e-group-container')) {\n var ruleContainer_1 = prevElem_1.querySelectorAll('.e-rule-container');\n prevElem_1 = ruleContainer_1[ruleContainer_1.length - 1];\n }\n if (prevElem_1.classList.contains('e-rule-container')) {\n var prevRule = this.getRule(prevElem_1);\n var args_3 = { requestType: 'rule-template-create', ruleID: prevElem_1.id,\n condition: prevRule.condition, notCondition: this.enableNotCondition ? true : undefined };\n this.trigger('actionBegin', args_3);\n }\n }\n }\n this.setMultiConnector(ruleElem);\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 // Cancel the default filtering.\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 proxy.ddTree.treeObj.expandAll();\n }, 100);\n }\n };\n QueryBuilder.prototype.changeDataSource = function (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(this.columns);\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 var operVal = this.selectedColumn.operators;\n if (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 rule = { field: column.field, label: column.label, operator: operVal[0].value, value: '' };\n this.addRuleElement(parentGroup, rule, column, 'change', parentId, true);\n }\n }\n };\n QueryBuilder.prototype.renderToolTip = function (element) {\n var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'), isSticky: true,\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 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.index) && 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) < -1 &&\n (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.index)) ||\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 // create button group in OR and AND process\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', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',\n title: 'drag handle' } });\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', { attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },\n innerHTML: this.l10n.getConstant('AND') });\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', { attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },\n innerHTML: this.l10n.getConstant('OR') });\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', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',\n title: 'drag handle' } });\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_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,\n notCondition: this.enableNotCondition ? not : undefined };\n this.trigger('actionBegin', args_4);\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) {\n if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {\n trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), 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.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 (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 = { requestType: 'header-template-initialize', ruleID: groupElem.id,\n notCondition: this.enableNotCondition ? not : undefined,\n condition: condition, rule: this.getRuleCollection(rule, true), groupID: groupID };\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) {\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 = 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[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 = 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 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 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 = { requestType: 'template-create', action: type, ruleID: grpEle.id,\n fields: this.fields, rule: rule };\n eventsArgs = { groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),\n value: rule.field, type: 'field' };\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') {\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.currentTarget) {\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.currentTarget) {\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 numericTextBoxObj.value = value;\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 if (!this.isImportRules) {\n this.trigger('change', { groupID: groupID, ruleID: ruleID, value: args.value, cancel: false, type: 'value' });\n }\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.element.querySelector('.e-active');\n var itemData = ddl.getItemData();\n ddl.value = itemData.value;\n var customArgs = { element: ddl.element, value: itemData.value, isInteracted: true,\n previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null };\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 = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?\n dl.value[0] : dl.value, cancel: false, type: 'field' };\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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)) {\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[1]) {\n if (Object.keys(this.dataColl[1]).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 multiSelectValue = {\n dataSource: isValues ? values : (isFetched ? ds : this.dataManager),\n query: new Query([rule.field]),\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'), 'dropdownlist');\n this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);\n var value = this.selectedColumn.field;\n var isFetched = false;\n if (this.dataColl[1]) {\n if (Object.keys(this.dataColl[1]).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 }\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 data = this.dataManager.executeQuery(new Query().select(value));\n var multiselectObj = getComponent(element, 'multiselect');\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 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 multiselectObj.dataSource = _this.getDistinctValues(_this.dataColl, value);\n _this.isGetNestedData = true;\n hideSpinner(closest(element, '.e-multi-select-wrapper').parentElement);\n }).catch(function (e) {\n deferred.reject(e);\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 value = getComponent(element, 'multiselect').value;\n this.updateRules(element, value, i);\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 (typeof itemData.template === 'string' || itemData.template.write === undefined) {\n var args = { rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,\n requestType: 'value-template-create' };\n this.trigger('actionBegin', args);\n }\n else {\n var template = itemData.template;\n if (typeof template.write === 'string') {\n getValue(template.write, window)({ elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,\n operator: tempRule.operator, field: column.field, dataSource: column.values });\n }\n else if (typeof itemData.template !== 'function') {\n itemData.template.write({ elements: tempElements.length > 1 ? tempElements : tempElements[0],\n values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values });\n }\n }\n };\n QueryBuilder.prototype.getItemData = function (parentId) {\n var fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');\n if (this.fieldMode === 'DropdownTree') {\n fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');\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 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 // 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 (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);\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 }\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 }\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 = { requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,\n renderTemplate: true };\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 switch (controlName) {\n case 'checkbox':\n value = getComponent(element, controlName).value;\n rule.value = (value !== '') ? value : undefined;\n break;\n case 'textbox':\n rule.value = getComponent(element, controlName).value;\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 // Value Fields\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 {\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(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 popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');\n if (popupElement) {\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 };\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 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 = { isLocked: groups[i].isLocked, condition: groups[i].condition,\n not: groups[i].not };\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.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 }\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 || this.displayMode === 'Vertical') {\n if (Browser.isDevice) {\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.toLowerCase() === 'descending') {\n this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));\n }\n else if (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 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 };\n QueryBuilder.prototype.preRender = function () {\n this.element.id = this.element.id || getUniqueID('ej2-querybuilder');\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 this.executeDataManager(new Query().take(1));\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 });\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 = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,\n dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };\n this.trigger('drag', dragEventArgs);\n this.isDragEventPrevent = dragEventArgs.cancel;\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 EventHandler.add(document, 'keydown', this.keyBoardHandler, this);\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 };\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 }\n else {\n groupId = groupElem.id.replace(this.element.id + '_', '');\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.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.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 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) {\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 }\n else {\n rule = {};\n }\n }\n else {\n if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {\n var notValue = rule.not;\n rule = { '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 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 for (var i = 0, iLen = columns.length; i < iLen; i++) {\n if (columns[i].field === field) {\n column = columns[i];\n break;\n }\n else if (columns[i].columns) {\n column = this.getColumn(field, columns[i].columns);\n if (column) {\n break;\n }\n }\n else if (field && field.indexOf(this.separator) > -1) {\n if (this.separator !== '' && columns[i].field === field.split(this.separator)[0]) {\n column = columns[i];\n break;\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 }\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 {\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 isRoot = false;\n if (!queryStr && queryStr !== '') {\n queryStr = '';\n isRoot = true;\n }\n else {\n queryStr += '(';\n }\n var condition = rules.condition;\n if (rules.not) {\n var rulesNotCondition = void 0;\n if (isRoot) {\n rulesNotCondition = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' (' : 'NOT (';\n queryStr += rulesNotCondition;\n }\n else {\n rulesNotCondition = sqlLocale ? ' ' + this.l10n.getConstant('NOT').toUpperCase() + ' (' : ' NOT (';\n queryStr += rulesNotCondition;\n }\n }\n if (rules.rules) {\n for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {\n if (rules.rules[j].rules) {\n queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);\n if (this.enableSeparateConnector) {\n condition = rules.rules[j].condition;\n }\n }\n else {\n var rule = rules.rules[j];\n var valueStr = '';\n var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];\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 valueStr += '(\"' + rule.value[0] + '\"';\n for (var k = 1, kLen = rule.value.length; k < kLen; k++) {\n valueStr += ',\"' + rule.value[k] + '\"';\n }\n valueStr += ')';\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 if (rule.operator.toString().indexOf('null') > -1) {\n if (enableEscape) {\n rule.field = '`' + rule.field + '`';\n }\n else {\n if (rule.field.indexOf(' ') > -1) {\n rule.field = '\"' + rule.field + '\"';\n }\n }\n queryStr += rule.field + ' ' + 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 if (enableEscape) {\n rule.field = '`' + rule.field + '`';\n }\n else {\n if (rule.field.indexOf(' ') > -1) {\n rule.field = '\"' + rule.field + '\"';\n }\n }\n queryStr += rule.field + ' ' + custOper + ' ' + valueStr;\n }\n if (rule.condition && rule.condition !== '') {\n condition = rule.condition;\n }\n }\n if (j !== jLen - 1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rule = rules.rules[j];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 queryStr += ' ' + condition + ' ';\n }\n }\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 = 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 = 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 //Left Parenthesis\n if (/^\\(/.exec(sqlString)) {\n this.parser.push(['Left', '(']);\n return 1;\n }\n //Right Parenthesis\n if (/^\\)/.exec(sqlString)) {\n this.parser.push(['Right', ')']);\n return 1;\n }\n //Boolean\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 //Null\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 matchValue = /^[0-9]+(\\.[0-9]+)$/.exec(sqlString)[0];\n this.parser.push(['Literal', matchValue]);\n return matchValue.length;\n }\n //String\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 // end\n this.parser.push(['String', matchValue]);\n return matchValue.length;\n }\n // Double String\n var doubleString = this.getDoubleQuoteString(sqlString);\n if (doubleString !== '') {\n matchValue = doubleString;\n this.parser.push(['DoubleString', matchValue]);\n return matchValue.length;\n }\n //Number\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 //Negative Number\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).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 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 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;\n var groupId;\n if (typeof target === 'string') {\n groupId = this.element.id + '_' + target;\n target = document.getElementById(groupId);\n }\n else {\n targetGrpId = target.id.replace(this.element.id + '_', '');\n groupId = groupElem.id.replace(this.element.id + '_', '');\n }\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 };\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([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value, 'condition': getRule.condition }], groupId);\n }\n else {\n this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,\n 'value': getRule.value }], 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 ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');\n var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');\n var textElement = groupElem.querySelectorAll('.e-control.e-textbox');\n var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');\n var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');\n var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');\n var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');\n var deleteElem = groupElem.querySelectorAll('.e-rule-delete');\n var lockElem = groupElem.querySelectorAll('.e-lock-rule');\n var cloneElem = groupElem.querySelectorAll('.e-clone-rule');\n var ruleElem = groupElem.querySelectorAll('.e-rule-container');\n for (var i = 0; i < deleteElem.length; i++) {\n if (isDisabled) {\n if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {\n ruleElem[i].classList.add('e-disable');\n }\n deleteElem[i].disabled = true;\n if (cloneElem[i]) {\n cloneElem[i].disabled = true;\n }\n if (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 (ruleElem[i]) {\n ruleElem[i].classList.remove('e-disable');\n }\n if (cloneElem[i]) {\n cloneElem[i].disabled = false;\n }\n deleteElem[i].disabled = false;\n lockElem[i].disabled = false;\n lockElem[i].children[0].classList.remove('e-lock');\n lockElem[i].children[0].classList.add('e-unlock');\n }\n }\n var dropDownObj;\n var numericObj;\n var textObj;\n var dateObj;\n var checkBoxObj;\n var radioBtnObj;\n var multiSelectObj;\n for (var i = 0; i < ddlElement.length; i++) {\n dropDownObj = getComponent(ddlElement[i], 'dropdownlist');\n if (isDisabled) {\n dropDownObj.enabled = false;\n }\n else {\n dropDownObj.enabled = true;\n }\n }\n for (var i = 0; i < numericElement.length; i++) {\n numericObj = getComponent(numericElement[i], 'numerictextbox');\n if (isDisabled) {\n numericObj.enabled = false;\n }\n else {\n numericObj.enabled = true;\n }\n }\n for (var i = 0; i < textElement.length; i++) {\n textObj = getComponent(textElement[i], 'textbox');\n if (isDisabled) {\n textObj.enabled = false;\n }\n else {\n textObj.enabled = true;\n }\n }\n for (var i = 0; i < dateElement.length; i++) {\n dateObj = getComponent(dateElement[i], 'datepicker');\n if (isDisabled) {\n dateObj.enabled = false;\n }\n else {\n dateObj.enabled = true;\n }\n }\n for (var i = 0; i < checkboxElement.length; i++) {\n checkBoxObj = getComponent(checkboxElement[i], 'checkbox');\n if (isDisabled) {\n checkBoxObj.disabled = true;\n }\n else {\n checkBoxObj.disabled = false;\n }\n }\n for (var i = 0; i < radioBtnElement.length; i++) {\n radioBtnObj = getComponent(radioBtnElement[i], 'radio');\n if (isDisabled) {\n radioBtnObj.disabled = true;\n }\n else {\n radioBtnObj.disabled = false;\n }\n }\n for (var i = 0; i < multiSelectElement.length; i++) {\n multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');\n if (isDisabled) {\n multiSelectObj.enabled = false;\n }\n else {\n multiSelectObj.enabled = true;\n }\n }\n };\n __decorate([\n Event()\n ], QueryBuilder.prototype, \"created\", 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 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 if (!isNaN(Date.parse(stringValue))) { // 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","grpContainer","grpHeader","grpBody","bodyElem","element","querySelector","inputElement","querySelectorAll","len","className","indexOf","getComponent","destroy","parentElement","innerHTML","createElement","attrs","class","appendChild","headerTemplate","isRoot","enableNotCondition","removeClass","levelColl","id","setProperties","rule","condition","not","rules","disableRuleCondition","getWrapper","getModuleName","requiredModules","modules","push","member","args","GetRootColumnName","field","separator","split","initialize","dataColl","columnKeys","keys","cols","categories","type","groupBy","isDate","value","validateObj","columns","columnSort","updateCustomOperator","isNaN","Date","parse","getTime","validation","category","l10n","getConstant","operators","isLocale","isCustomOprCols","customOperators","fields","text","updateSubFieldsFromColumns","label","updateSubFields","trigger","col","data","compField","result","resData","sampCol","column","from","isNullOrUndefined","this_1","j","_loop_1","operator_1","values","sqlIdx","operColl","map","join","valueIdx","focusEventHandler","event","clickEventHandler","forIdValue","group","ariaChecked","targetValue","_this","tagName","animation","Animation","duration","delay","renderSummary","txtareaElem","summaryElem","document","getElementById","animate","name","groupElem","style","display","textContent","getSqlFromRules","height","scrollHeight","mRules","actionButton","deleteRule","cloneRuleBtnClick","ruleClone","ruleLock","groupLock","cloneGrpBtnClick","groupClone","closest","deleteGroup","addGroupElement","extend","setGroupRules","renderSummaryCollapse","getAttribute","enableSeparateConnector","groupID","replace","getGroup","toggleElem","getElementsByClassName","addClass","cancel","toLowerCase","beforeSuccessCallBack","observedChangeArgs","beforeRules","andElem","orElem","getValidRules","getParentGroup","classList","contains","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","ddlField","ddlValue","ddlVal","getColumn","newRule","operator","selectedColumn","passedRule","args_1","displayMode","spanElement","add","previousRuleElem","ruleContainer","prevRule","headerTemplateFn","prevRuleContainer","prevElem","prevRule_1","updateAddedRule","fieldMode","autoSelectField","dataSource","placeholder","popupHeight","close","fieldClose","bind","change","changeField","open","popupOpen","cssClass","fieldModel","dropDownList","DropDownList","appendTo","getDataByValue","changeRule","itemData","dummyDropdownTreeDs","updateDropdowntreeDS","child","expanded","selectable","showClearButton","changeOnBlur","treeSettings","expandOn","filtering","dropdownTreeFiltering","dropdownTreeClose","dropdowntree","DropDownTree","getLabelFromColumn","isLocked","lockRuleTarget","args_2","notCondition","undefined","prevElem_1","ruleContainer_1","args_3","setMultiConnector","proxy","srcElement","ruleElemID","hierarchicalData","ddTree","changeDataSource","matchedDataSource","nestedChildFilter","filter","filteredChild","setTimeout","treeObj","expandAll","refresh","node","matchedChildren","isMatchedNode","checkValue","parseInt","toString","template","isNewRuleAdded","enableSeparateCondition","custom","splice","changeRuleTemplate","parentGroup","operVal","previousColumn","detach","clearQBTemplate","renderToolTip","tooltip","Tooltip","content","isSticky","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-lable","title","glueElem","role","labelElem","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_4","onclick","DropDownButton","items","grpId","chgrpId","childGroupID","addHeaderDiv","disabled","isInitialRule","groupHdr","getRuleCollection","headerFn","enableSeparateConnectorInitialRule","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","customArgs","isFieldChange","isDestroy","isFieldClose","item","ddl","popupObj","getItemData","isInteracted","previousItemData","prevItemData","previousItem","e","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","currOper","parentElem","prevValue","operatorList","operator_2","ddlIdx","ddlOperator","childElementCount","fieldObj","renderValues","oprElem","forEach","autoSelectOperator","operatorModel","isField","popup","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","multiSelectObj","isGetNestedData","multiSelectValue","dataManager","query","Query","selectedRule","mode","width","closePopup","actionBegin","multiSelectOpen","valueModel","multiSelectModel","MultiSelect","DataManager","bindMultiSelectData","getMultiSelectData","dummyData","deferred","Deferred","executeQuery","multiselectObj","hideSpinner","createSpinner","showSpinner","then","actual","catch","reject","spinnerElem","Browser","isDevice","processTemplate","container","tempElements","write","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","datePicker","place","formatObj","getLocale","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","radioBtnObj","controlName","isNotTrigger","valueContainer","elementCln","i_1","i_2","ruleValueUpdate","beforeRule","afterRule","JSON","stringify","previousRule","oper","arrOperator","dupSelectedValue","parseFloat","isObject","formatOptions","findGroupByIdx","groupIdx","ruleColl","dupRuleColl","unWireEvents","portals","popupElement","addRules","groups","importRules","initWrapper","trim","summaryView","isRefreshed","notGroupRtl","readonly","enableReadonly","button","buttons","contentElem","textElem","styles","editElem","divElem","collapseElem","sortDirection","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","executeDataManager","take","initControl","renderComplete","initializeDrag","draggable","Draggable","dragTarget","distance","helper","dragStart","dragStartHandler","drag","dragHandler","dragStop","dragStopHandler","isReplaceDragEle","isPreventSelect","abort","isDragScroll","visualElement","cloneElement","currentStateTarget","offsetWidth","removeAttribute","draggedRule","isDragEventPrevent","body","dragElement","dragEventArgs","dragRuleID","dragGroupID","targetElem","rect","mouseY","distanceToBottom","threshold","nodeName","getBoundingClientRect","distanceToTop","clientY","changedTouches","top","bottom","templateCompiler","compile","error","wireEvents","wrapper","EventHandler","keyBoardHandler","isParent","groupLevel","groupId","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","HTMLElement","deleteGroups","groupIdColl","getFilteredRecords","predicate","getPredicate","dataManagerQuery","where","deleteRules","ruleIdColl","getDataManagerQuery","pred","ruleValue","ignoreCase","isDateFilter","dateOperColl","pred2","and","or","matchCase","getDate","isTime","datePredicate","arrayPredicate","Predicate","localeString","cldrData","setTime","date","isStart","setHours","startDate","endDate","nullValue","gte","currDate","setMinutes","setSeconds","isReset","tglBtnElem","renderGroup","renderRule","cloneElem","radioButtonObj","deleteGroupElems","addRuleGroupElems","removeRuleElems","elems","enableBtnGroup","isDateFunction","dateFunc","getSqlString","enableEscape","queryStr","sqlLocale","valueStr","ruleOpertor","ruleCondition","custOper","isCustom","setRulesFromSql","sqlString","ruleModel","getRulesFromSql","sqlParser","processParser","allowEscape","getParameterizedSql","moduleLoader","loadedModules","notify","prop","onPropertyChange","sql","console","warn","setParameterizedSql","sqlQuery","getParameterizedNamedSql","setParameterizedNamedSql","setMongoQuery","mongoQuery","mongoLocale","getMongoQuery","isCloneRule","parentGroupID","isCloneGroup","str","st","parseSqlStrings","matchValue","conditions","subOp","regexStr","test","RegExp","exec","lastPasrser","checkLiteral","checkNumberLiteral","singleString","getSingleQuoteString","isClosed","checkCondition","combineSingleQuoteString","doubleString","getDoubleQuoteString","start","end","substring","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","fieldName","lLen","grpCount","numVal","strVal","isLeftOpened","isNotOpened","val","subRules","pop","targetGrpId","lockItems","lockItem","disableRuleControls","newGroup","disableHeaderControls","updateLockItems","isDisabled","addElem","deleteGrpElem","lockElem","groupContElem","addCondition","addGroup","ddlElement","numericElement","textElement","checkboxElement","radioBtnElement","multiSelectElement","deleteElem","enabled","Event","Complex","NotifyPropertyChanges","options","groupCounter","dropEventArgs","groupId_2","targetGroup","isPreventelem","tgrt","targetGrp","dropRuleID","dropGroupID","groupId_1","groupRule","ruleElems","ruleIds","dropInd","borderLineElem","Inject","CheckBoxSelection","QueryLibrary","parent","isDestroyed","removeEventListener","addEventListener","on","queryLibrary","off","getMongoFromRules","mongoParser","getParameterSql","getNamedParameterSql","convertParamSqlToSql","convertNamedParamSqlToSql","convertMongoQuery","getOperatorFromMongoOperator","operatorValue","itVal","x","endsWith","mongoList","mongoRecursion","stringValue","betweenValue","betweenOperatorArray","inOperatorArray","innerObject","secondKey","secondValue","innerFirstValue","innerSecondValue","notBetween","isArray","firstKey","firstValue","keyObj","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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"}
|