@syncfusion/ej2-querybuilder 30.1.42 → 30.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Property, ChildProperty, Collection, getComponent, removeClass, isNullOrUndefined, Animation, extend, closest, addClass, select, append, detach, rippleEffect, getInstance, getValue, getNumericObject, Browser, classList, Internationalization, getUniqueID, L10n, Draggable, remove, compile, EventHandler, cldrData, Event, Complex, NotifyPropertyChanges, Component } from '@syncfusion/ej2-base';
1
+ import { Property, ChildProperty, Collection, removeClass, isNullOrUndefined, Animation, extend, closest, addClass, select, append, getComponent, detach, rippleEffect, getInstance, getValue, getNumericObject, Browser, classList, Internationalization, getUniqueID, L10n, Draggable, remove, compile, EventHandler, cldrData, Event, Complex, NotifyPropertyChanges, Component } from '@syncfusion/ej2-base';
2
2
  import { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';
3
3
  import { MultiSelect, CheckBoxSelection, DropDownList, DropDownTree } from '@syncfusion/ej2-dropdowns';
4
4
  import { Query, DataManager, Deferred, Predicate } from '@syncfusion/ej2-data';
@@ -220,37 +220,71 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
220
220
  QueryBuilder.prototype.reset = function () {
221
221
  this.isImportRules = false;
222
222
  var bodyElem = this.element.querySelector('.e-group-body');
223
- var inputElement = this.element.querySelectorAll('input.e-control');
224
- for (var i = 0, len = inputElement.length; i < len; i++) {
225
- if (inputElement[i].className.indexOf('e-tooltip') > -1) {
226
- getComponent(inputElement[i], 'tooltip').destroy();
223
+ var inputElements = this.element.querySelectorAll('input.e-control');
224
+ var batchSize = 20;
225
+ var currentIndex = 0;
226
+ var processBatch = function () {
227
+ var endIndex = Math.min(currentIndex + batchSize, inputElements.length);
228
+ for (var i = currentIndex; i < endIndex; i++) {
229
+ var element = inputElements[i];
230
+ try {
231
+ if (element.className.indexOf('e-tooltip') > -1) {
232
+ var tooltip = getComponent(element, 'tooltip');
233
+ if (tooltip) {
234
+ tooltip.destroy();
235
+ }
236
+ }
237
+ else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {
238
+ var tooltip = getComponent(element.parentElement, 'tooltip');
239
+ if (tooltip) {
240
+ tooltip.destroy();
241
+ }
242
+ }
243
+ }
244
+ catch (e) {
245
+ console.warn('Error destroying tooltip:', e);
246
+ }
227
247
  }
228
- else if (inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {
229
- getComponent(inputElement[i].parentElement, 'tooltip').destroy();
248
+ currentIndex = endIndex;
249
+ if (currentIndex < inputElements.length) {
250
+ requestAnimationFrame(processBatch);
230
251
  }
252
+ };
253
+ if (inputElements.length > 0) {
254
+ processBatch();
231
255
  }
232
256
  if (bodyElem) {
233
- bodyElem.innerHTML = '';
257
+ bodyElem.textContent = '';
234
258
  }
235
259
  else {
260
+ var fragment = document.createDocumentFragment();
236
261
  var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });
237
262
  var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });
238
263
  var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });
239
- grpContainer.appendChild(grpHeader).appendChild(grpBody);
240
- this.element.appendChild(grpContainer);
264
+ grpContainer.appendChild(grpHeader);
265
+ grpContainer.appendChild(grpBody);
266
+ fragment.appendChild(grpContainer);
267
+ this.element.appendChild(fragment);
241
268
  bodyElem = this.element.querySelector('.e-group-body');
242
269
  }
243
270
  if (this.headerTemplate && this.isRoot) {
244
- this.element.innerHTML = '';
271
+ this.element.textContent = '';
245
272
  this.isRoot = false;
246
273
  }
247
274
  if (this.enableNotCondition) {
248
- removeClass(this.element.querySelectorAll('.e-qb-toggle'), 'e-active-toggle');
275
+ var toggleElements = this.element.querySelectorAll('.e-qb-toggle');
276
+ for (var i = 0; i < toggleElements.length; i++) {
277
+ removeClass([toggleElements[i]], 'e-active-toggle');
278
+ }
279
+ }
280
+ if (bodyElem) {
281
+ bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));
249
282
  }
250
- bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));
251
283
  this.levelColl[this.element.id + '_group0'] = [0];
252
284
  this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);
253
- this.disableRuleCondition(bodyElem.parentElement);
285
+ if (bodyElem && bodyElem.parentElement) {
286
+ this.disableRuleCondition(bodyElem.parentElement);
287
+ }
254
288
  };
255
289
  QueryBuilder.prototype.getWrapper = function () {
256
290
  return this.element;
@@ -273,100 +307,131 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
273
307
  return '';
274
308
  };
275
309
  QueryBuilder.prototype.initialize = function () {
310
+ var _this = this;
276
311
  if (this.dataColl.length) {
277
- var columnKeys = Object.keys(this.dataColl[0]);
312
+ var columnKeys_1 = Object.keys(this.dataColl[0]);
278
313
  var cols = [];
279
- var categories = [];
280
- var type = void 0;
281
- var groupBy = false;
282
- var isDate = false;
283
- var value = void 0;
284
- var validateObj = { isRequired: true, min: 0, max: Number.MAX_VALUE };
314
+ var categories_1 = [];
315
+ var type_1;
316
+ var groupBy_1 = false;
317
+ var isDate_1 = false;
318
+ var value_1;
319
+ var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };
285
320
  if (this.columns.length) {
286
321
  this.columnSort();
287
322
  var columns = this.columns;
288
- for (var i = 0, len = columns.length; i < len; i++) {
289
- this.updateCustomOperator(columns[i], 'initial');
290
- if (!columns[i].type) {
291
- if (columnKeys.indexOf(columns[i].field) > -1) {
292
- value = this.dataColl[0][columns[i].field];
293
- type = typeof value;
294
- if (type === 'string') {
295
- isDate = !isNaN(Date.parse(value));
323
+ columns.forEach(function (column) {
324
+ _this.updateCustomOperator(column, 'initial');
325
+ if (!column.type) {
326
+ if (columnKeys_1.indexOf(column.field) > -1) {
327
+ value_1 = _this.dataColl[0][column.field];
328
+ type_1 = typeof value_1;
329
+ if (type_1 === 'string') {
330
+ isDate_1 = !isNaN(Date.parse(value_1));
296
331
  }
297
- else if (type === 'object') {
298
- isDate = value instanceof Date && !isNaN(value.getTime());
299
- type = 'string';
332
+ else if (type_1 === 'object') {
333
+ isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());
334
+ type_1 = 'string';
300
335
  }
301
- columns[i].type = type;
302
- isDate = false;
336
+ column.type = type_1;
337
+ isDate_1 = false;
303
338
  }
304
- type = 'string';
339
+ type_1 = 'string';
305
340
  }
306
- if (!columns[i].validation) {
307
- columns[i].validation = validateObj;
341
+ if (!column.validation) {
342
+ column.validation = validateObj_1;
308
343
  }
309
- if (columns[i].category) {
310
- groupBy = true;
344
+ if (column.category) {
345
+ groupBy_1 = true;
311
346
  }
312
347
  else {
313
- columns[i].category = this.l10n.getConstant('OtherFields');
348
+ column.category = _this.l10n.getConstant('OtherFields');
314
349
  }
315
- if (categories.indexOf(columns[i].category) < 0) {
316
- categories.push(columns[i].category);
350
+ if (categories_1.indexOf(column.category) < 0) {
351
+ categories_1.push(column.category);
317
352
  }
318
- if (!columns[i].operators ||
319
- (this.isLocale && this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
320
- columns[i].operators = this.customOperators[columns[i].type + 'Operator'];
353
+ if (!column.operators ||
354
+ (_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {
355
+ column.operators = _this.customOperators[column.type + 'Operator'];
321
356
  }
322
- }
323
- if (groupBy && (categories.length > 1 || categories[0] !== this.l10n.getConstant('OtherFields'))) {
357
+ });
358
+ if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {
324
359
  this.fields = { text: 'label', value: 'field', groupBy: 'category' };
325
360
  }
326
361
  this.updateSubFieldsFromColumns(this.columns);
327
362
  }
328
363
  else {
329
- for (var i = 0, len = columnKeys.length; i < len; i++) {
330
- value = this.dataColl[0][columnKeys[i]];
331
- type = typeof value;
332
- if (type === 'string') {
333
- isDate = !isNaN(Date.parse(value));
334
- }
335
- else if (type === 'object' && !Object.keys(value).length) {
336
- isDate = value instanceof Date && !isNaN(value.getTime());
337
- type = 'string';
338
- }
339
- cols[i] = { 'field': columnKeys[i], 'label': columnKeys[i], 'type': isDate ? 'date' : type,
340
- 'validation': validateObj };
341
- isDate = false;
364
+ for (var i = 0, len = columnKeys_1.length; i < len; i++) {
365
+ value_1 = this.dataColl[0][columnKeys_1[i]];
366
+ type_1 = typeof value_1;
367
+ if (type_1 === 'string') {
368
+ isDate_1 = !isNaN(Date.parse(value_1));
369
+ }
370
+ else if (type_1 === 'object' && !Object.keys(value_1).length) {
371
+ isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());
372
+ type_1 = 'string';
373
+ }
374
+ cols[i] = {
375
+ 'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,
376
+ 'validation': validateObj_1
377
+ };
378
+ isDate_1 = false;
342
379
  cols[i].operators = this.customOperators[cols[i].type + 'Operator'];
343
- if (type === 'object') {
344
- this.updateSubFields(value, cols[i]);
380
+ if (type_1 === 'object') {
381
+ this.updateSubFields(value_1, cols[i]);
345
382
  }
346
383
  }
347
384
  this.columns = cols;
348
385
  }
349
386
  }
350
387
  else if (this.columns && this.columns.length) {
351
- var columns = this.columns;
352
- for (var i = 0, len = columns.length; i < len; i++) {
353
- if (columns[i].category && columns[i].category !== this.l10n.getConstant('OtherFields')) {
354
- this.fields = { text: 'label', value: 'field', groupBy: 'category' };
388
+ if (this.sortDirection !== 'Default') {
389
+ this.columnSort();
390
+ }
391
+ this.processColumnsInBatches();
392
+ if (this.columns.length > 50) {
393
+ setTimeout(function () {
394
+ _this.updateSubFieldsFromColumns(_this.columns);
395
+ }, 0);
396
+ }
397
+ else {
398
+ this.updateSubFieldsFromColumns(this.columns);
399
+ }
400
+ }
401
+ this.trigger('dataBound', { type: 'dataBound' });
402
+ };
403
+ QueryBuilder.prototype.processColumnsInBatches = function () {
404
+ var _this = this;
405
+ var columns = this.columns;
406
+ var batchSize = 10;
407
+ var processedCount = 0;
408
+ var processBatch = function () {
409
+ var endIdx = Math.min(processedCount + batchSize, columns.length);
410
+ for (var i = processedCount; i < endIdx; i++) {
411
+ if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {
412
+ _this.fields = { text: 'label', value: 'field', groupBy: 'category' };
355
413
  }
356
414
  else {
357
- columns[i].category = this.l10n.getConstant('OtherFields');
415
+ columns[i].category = _this.l10n.getConstant('OtherFields');
358
416
  }
359
- this.updateCustomOperator(columns[i], 'initial');
417
+ _this.updateCustomOperator(columns[i], 'initial');
360
418
  if (!columns[i].operators ||
361
- (this.isLocale && this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
362
- columns[i].operators = this.customOperators[columns[i].type + 'Operator'];
419
+ (_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
420
+ columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];
363
421
  }
364
422
  }
365
- this.updateSubFieldsFromColumns(this.columns);
366
- }
367
- this.trigger('dataBound', { type: 'dataBound' });
423
+ processedCount = endIdx;
424
+ if (processedCount < columns.length) {
425
+ requestAnimationFrame(processBatch);
426
+ }
427
+ };
428
+ processBatch();
368
429
  };
369
430
  QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {
431
+ if (col.length > 50) {
432
+ this.updateSubFieldsLarge(col, field);
433
+ return;
434
+ }
370
435
  for (var i = 0; i < col.length; i++) {
371
436
  if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {
372
437
  col[i].field = field ? field + this.separator + col[i].field : col[i].field;
@@ -383,6 +448,39 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
383
448
  }
384
449
  }
385
450
  };
451
+ QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {
452
+ var _this = this;
453
+ var i = 0;
454
+ var colLength = col.length;
455
+ var processNextBatch = function () {
456
+ var endIdx = Math.min(i + 10, colLength);
457
+ for (; i < endIdx; i++) {
458
+ if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {
459
+ col[i].field = field ? field + _this.separator + col[i].field : col[i].field;
460
+ }
461
+ if (col[i].operators) {
462
+ _this.updateCustomOperator(col[i]);
463
+ }
464
+ else if (col[i].type && col[i].type !== 'object') {
465
+ col[i].operators = _this.customOperators[col[i].type + 'Operator'];
466
+ }
467
+ }
468
+ if (i < colLength) {
469
+ requestAnimationFrame(processNextBatch);
470
+ }
471
+ else {
472
+ setTimeout(function () {
473
+ for (var j = 0; j < colLength; j++) {
474
+ if (col[j].columns) {
475
+ col[j].type = 'object';
476
+ _this.updateSubFieldsFromColumns(col[j].columns, col[j].field);
477
+ }
478
+ }
479
+ }, 0);
480
+ }
481
+ };
482
+ processNextBatch();
483
+ };
386
484
  QueryBuilder.prototype.updateSubFields = function (value, col, data) {
387
485
  var sampCol;
388
486
  col.columns = [];
@@ -552,8 +650,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
552
650
  }
553
651
  args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };
554
652
  if (this.enableNotCondition) {
555
- args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),
556
- 'not': ariaChecked };
653
+ args = {
654
+ groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),
655
+ 'not': ariaChecked
656
+ };
557
657
  }
558
658
  }
559
659
  if (!this.isImportRules) {
@@ -651,7 +751,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
651
751
  QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {
652
752
  var ruleElem;
653
753
  var elem;
654
- var ruleListElem = target.querySelector('.e-rule-list');
754
+ var ruleListElem = target && target.querySelector('.e-rule-list');
655
755
  var args;
656
756
  if (type === 'change') {
657
757
  ruleElem = select('#' + parentId, target);
@@ -1004,7 +1104,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1004
1104
  var ruleElem = document.getElementById(ruleElemID);
1005
1105
  this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');
1006
1106
  var hierarchicalData = extend([], this.columns, [], true);
1007
- // Cancel the default filtering.
1008
1107
  args.cancel = true;
1009
1108
  if (args.text === '') {
1010
1109
  this.changeDataSource(hierarchicalData);
@@ -1164,7 +1263,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1164
1263
  }
1165
1264
  };
1166
1265
  QueryBuilder.prototype.renderToolTip = function (element) {
1167
- var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'), isSticky: true,
1266
+ var tooltip = new Tooltip({
1267
+ content: this.l10n.getConstant('ValidationMessage'), isSticky: true,
1168
1268
  position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {
1169
1269
  tooltip.destroy();
1170
1270
  }, beforeOpen: function (args) {
@@ -1172,7 +1272,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1172
1272
  if (tooltipCloseElement) {
1173
1273
  tooltipCloseElement.style.display = 'none';
1174
1274
  }
1175
- } });
1275
+ }
1276
+ });
1176
1277
  tooltip.appendTo(element);
1177
1278
  tooltip.open(element);
1178
1279
  };
@@ -1330,7 +1431,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1330
1431
  groupElem.appendChild(groupHdrElem);
1331
1432
  grpBodyElem.appendChild(rulesElem);
1332
1433
  groupElem.appendChild(grpBodyElem);
1333
- // create button group in OR and AND process
1334
1434
  if (!this.headerTemplate) {
1335
1435
  if (this.allowDragAndDrop) {
1336
1436
  dragClsName = 'e-icons e-drag-qb-rule';
@@ -1338,8 +1438,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1338
1438
  else {
1339
1439
  dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1340
1440
  }
1341
- var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-label': 'drag handle',
1342
- title: 'drag handle' } });
1441
+ var spanDragElement = this.createElement('span', {
1442
+ attrs: {
1443
+ class: dragClsName, 'aria-label': 'drag handle',
1444
+ title: 'drag handle'
1445
+ }
1446
+ });
1343
1447
  groupHdrElem.appendChild(spanDragElement);
1344
1448
  var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
1345
1449
  glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
@@ -1357,13 +1461,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1357
1461
  }
1358
1462
  inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
1359
1463
  glueElem.appendChild(inputElem);
1360
- labelElem = this.createElement('label', { attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },
1361
- innerHTML: this.l10n.getConstant('AND') });
1464
+ labelElem = this.createElement('label', {
1465
+ attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },
1466
+ innerHTML: this.l10n.getConstant('AND')
1467
+ });
1362
1468
  glueElem.appendChild(labelElem);
1363
1469
  inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });
1364
1470
  glueElem.appendChild(inputElem);
1365
- labelElem = this.createElement('label', { attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },
1366
- innerHTML: this.l10n.getConstant('OR') });
1471
+ labelElem = this.createElement('label', {
1472
+ attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },
1473
+ innerHTML: this.l10n.getConstant('OR')
1474
+ });
1367
1475
  glueElem.appendChild(labelElem);
1368
1476
  groupHdrElem.appendChild(glueElem);
1369
1477
  grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });
@@ -1396,8 +1504,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1396
1504
  else {
1397
1505
  dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1398
1506
  }
1399
- var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-label': 'drag handle',
1400
- title: 'drag handle' } });
1507
+ var spanDragElement = this.createElement('span', {
1508
+ attrs: {
1509
+ class: dragClsName, 'aria-label': 'drag handle',
1510
+ title: 'drag handle'
1511
+ }
1512
+ });
1401
1513
  fieldElem.appendChild(spanDragElement);
1402
1514
  var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
1403
1515
  tempElem.appendChild(filterElem);
@@ -1678,8 +1790,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1678
1790
  }
1679
1791
  this.updatedRule = null;
1680
1792
  if (this.headerTemplate) {
1681
- var args_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1682
- notCondition: this.enableNotCondition ? not : undefined };
1793
+ var args_4 = {
1794
+ requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1795
+ notCondition: this.enableNotCondition ? not : undefined
1796
+ };
1683
1797
  this.trigger('actionBegin', args_4);
1684
1798
  }
1685
1799
  else {
@@ -1718,9 +1832,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1718
1832
  }
1719
1833
  };
1720
1834
  QueryBuilder.prototype.setMultiConnector = function (trgt) {
1721
- if (this.enableSeparateConnector && !this.headerTemplate) {
1722
- if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {
1723
- trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), trgt);
1835
+ if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {
1836
+ var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');
1837
+ if (btnGroupElem) {
1838
+ trgt.parentElement.insertBefore(btnGroupElem, trgt);
1724
1839
  var notElem = trgt.previousElementSibling.childNodes[0];
1725
1840
  if (notElem.classList.contains('e-qb-toggle')) {
1726
1841
  notElem.style.display = 'none';
@@ -1763,9 +1878,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1763
1878
  groupHdr = groupElem;
1764
1879
  }
1765
1880
  if (this.headerTemplate) {
1766
- args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
1881
+ args = {
1882
+ requestType: 'header-template-initialize', ruleID: groupElem.id,
1767
1883
  notCondition: this.enableNotCondition ? not : undefined,
1768
- condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID };
1884
+ condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID
1885
+ };
1769
1886
  this.trigger('actionBegin', args);
1770
1887
  if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1771
1888
  args.requestType = 'rule-template-create';
@@ -1918,7 +2035,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1918
2035
  QueryBuilder.prototype.templateChange = function (element, value, type) {
1919
2036
  var grpElem = closest(element, '.e-group-container');
1920
2037
  var eventsArgs;
1921
- var rules = this.getParentGroup(grpElem);
2038
+ var rules = grpElem && this.getParentGroup(grpElem);
1922
2039
  var ruleElem = closest(element, '.e-rule-container');
1923
2040
  var index = 0;
1924
2041
  if (this.allowValidation) {
@@ -1933,7 +2050,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1933
2050
  index++;
1934
2051
  }
1935
2052
  }
1936
- var rule = rules.rules[index];
2053
+ var rule = rules && rules.rules[index];
1937
2054
  if (type === 'field') {
1938
2055
  this.selectedColumn = this.getColumn(value);
1939
2056
  }
@@ -1941,7 +2058,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1941
2058
  this.selectedColumn = this.getColumn(rule.field);
1942
2059
  }
1943
2060
  var operVal;
1944
- this.previousColumn = this.getColumn(rule.field);
2061
+ this.previousColumn = rule && this.getColumn(rule.field);
1945
2062
  var beforeRules = this.getValidRules(this.rule);
1946
2063
  if (this.selectedColumn) {
1947
2064
  if (this.selectedColumn.operators) {
@@ -1956,11 +2073,16 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1956
2073
  switch (type) {
1957
2074
  case 'field':
1958
2075
  if (isNullOrUndefined(value)) {
1959
- rule.field = '';
1960
- rule.label = '';
1961
- rule.type = '';
1962
- rule.value = '';
1963
- rule.operator = '';
2076
+ if (!isNullOrUndefined(rule)) {
2077
+ rule.field = '';
2078
+ rule.label = '';
2079
+ rule.type = '';
2080
+ rule.value = '';
2081
+ rule.operator = '';
2082
+ }
2083
+ else {
2084
+ return;
2085
+ }
1964
2086
  }
1965
2087
  else {
1966
2088
  rule.field = value;
@@ -2011,10 +2133,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2011
2133
  ruleElement.className.indexOf('e-separate-rule') < 0) {
2012
2134
  ruleElement.className += ' e-separate-rule';
2013
2135
  }
2014
- var args = { requestType: 'template-create', action: type, ruleID: grpEle.id,
2015
- fields: this.fields, rule: rule };
2016
- eventsArgs = { groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),
2017
- value: rule.field, type: 'field' };
2136
+ var args = {
2137
+ requestType: 'template-create', action: type, ruleID: grpEle.id,
2138
+ fields: this.fields, rule: rule
2139
+ };
2140
+ eventsArgs = {
2141
+ groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),
2142
+ value: rule.field, type: 'field'
2143
+ };
2018
2144
  this.trigger('actionBegin', args);
2019
2145
  this.trigger('change', eventsArgs);
2020
2146
  }
@@ -2155,8 +2281,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2155
2281
  var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');
2156
2282
  var itemData = ddl.getItemData();
2157
2283
  ddl.value = itemData.value;
2158
- var customArgs = { element: ddl.element, value: itemData.value, isInteracted: true,
2159
- previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null };
2284
+ var customArgs = {
2285
+ element: ddl.element, value: itemData.value, isInteracted: true,
2286
+ previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null
2287
+ };
2160
2288
  if (ddl.previousValue !== ddl.value) {
2161
2289
  this.changeField(customArgs);
2162
2290
  }
@@ -2269,8 +2397,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2269
2397
  this.selectedColumn = this.getColumn(ddlValue);
2270
2398
  var ruleElem = closest(flt, '.e-rule-container');
2271
2399
  var ruleID = ruleElem.id.replace(this.element.id + '_', '');
2272
- var eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
2273
- dl.value[0] : dl.value, cancel: false, type: 'field' };
2400
+ var eventsArgs = {
2401
+ groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
2402
+ dl.value[0] : dl.value, cancel: false, type: 'field'
2403
+ };
2274
2404
  if (!this.isImportRules && !this.prvtEvtTgrDaD) {
2275
2405
  this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
2276
2406
  _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
@@ -2859,19 +2989,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2859
2989
  : getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');
2860
2990
  var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);
2861
2991
  if (typeof itemData.template === 'string' || itemData.template.write === undefined) {
2862
- var args = { rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,
2863
- requestType: 'value-template-create' };
2992
+ var args = {
2993
+ rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,
2994
+ requestType: 'value-template-create'
2995
+ };
2864
2996
  this.trigger('actionBegin', args);
2865
2997
  }
2866
2998
  else {
2867
2999
  var template = itemData.template;
2868
3000
  if (typeof template.write === 'string') {
2869
- getValue(template.write, window)({ elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,
2870
- operator: tempRule.operator, field: column.field, dataSource: column.values });
3001
+ getValue(template.write, window)({
3002
+ elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,
3003
+ operator: tempRule.operator, field: column.field, dataSource: column.values
3004
+ });
2871
3005
  }
2872
3006
  else if (typeof itemData.template !== 'function') {
2873
- itemData.template.write({ elements: tempElements.length > 1 ? tempElements : tempElements[0],
2874
- values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values });
3007
+ itemData.template.write({
3008
+ elements: tempElements.length > 1 ? tempElements : tempElements[0],
3009
+ values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values
3010
+ });
2875
3011
  }
2876
3012
  }
2877
3013
  };
@@ -3369,8 +3505,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3369
3505
  }
3370
3506
  else {
3371
3507
  if (typeof itemData.template === 'string' || itemData.template.create === undefined) {
3372
- args = { requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,
3373
- renderTemplate: true };
3508
+ args = {
3509
+ requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,
3510
+ renderTemplate: true
3511
+ };
3374
3512
  this.trigger('actionBegin', args, function (observedActionArgs) {
3375
3513
  isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);
3376
3514
  });
@@ -3578,7 +3716,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3578
3716
  element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');
3579
3717
  operator = getComponent(element, 'dropdownlist').value.toString();
3580
3718
  rule.rules[index].operator = operator;
3581
- // Value Fields
3582
3719
  var valueContainer = ruleElement.nextElementSibling.nextElementSibling;
3583
3720
  var elementCln = valueContainer.querySelectorAll('input.e-control');
3584
3721
  if (elementCln.length < 1) {
@@ -3740,6 +3877,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3740
3877
  }
3741
3878
  };
3742
3879
  QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {
3880
+ if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {
3881
+ return;
3882
+ }
3743
3883
  if (!isNullOrUndefined(index)) {
3744
3884
  rule = rule.rules[index];
3745
3885
  }
@@ -3901,8 +4041,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3901
4041
  if (grouplen) {
3902
4042
  this.isPublic = true;
3903
4043
  for (var i = 0, len = groups.length; i < len; i++) {
3904
- this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
3905
- not: groups[i].not };
4044
+ this.updatedRule = {
4045
+ isLocked: groups[i].isLocked, condition: groups[i].condition,
4046
+ not: groups[i].not
4047
+ };
3906
4048
  this.importRules(groups[i], groupElem, false, groups[i].not);
3907
4049
  }
3908
4050
  this.isPublic = false;
@@ -4031,10 +4173,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4031
4173
  this.element.querySelector('.e-group-header').appendChild(collapseElem);
4032
4174
  };
4033
4175
  QueryBuilder.prototype.columnSort = function () {
4034
- if (this.sortDirection.toLowerCase() === 'descending') {
4176
+ if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {
4035
4177
  this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));
4036
4178
  }
4037
- else if (this.sortDirection.toLowerCase() === 'ascending') {
4179
+ else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {
4038
4180
  this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));
4039
4181
  }
4040
4182
  };
@@ -4521,8 +4663,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4521
4663
  }
4522
4664
  }
4523
4665
  }
4524
- var dragEventArgs = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
4525
- dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };
4666
+ var dragEventArgs = {
4667
+ dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
4668
+ dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false
4669
+ };
4526
4670
  this.trigger('drag', dragEventArgs);
4527
4671
  this.isDragEventPrevent = dragEventArgs.cancel;
4528
4672
  };
@@ -4543,8 +4687,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4543
4687
  var prevRule;
4544
4688
  if (!isPreventelem) {
4545
4689
  var targetGrp = closest(e.target, '.e-group-container');
4546
- var dropEventArgs = { cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
4547
- : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null };
4690
+ var dropEventArgs = {
4691
+ cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
4692
+ : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null
4693
+ };
4548
4694
  this.trigger('drop', dropEventArgs);
4549
4695
  if (dropEventArgs.cancel) {
4550
4696
  isPreventelem = true;
@@ -5313,7 +5459,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5313
5459
  else {
5314
5460
  if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {
5315
5461
  var notValue = rule.not;
5316
- rule = { 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
5462
+ rule = {
5463
+ 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
5317
5464
  'condition': rule.condition, 'rules': rule.rules
5318
5465
  };
5319
5466
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -5635,21 +5782,40 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5635
5782
  var columns = this.columns;
5636
5783
  var column;
5637
5784
  columns = col ? col : columns;
5638
- for (var i = 0, iLen = columns.length; i < iLen; i++) {
5785
+ var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];
5786
+ var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;
5787
+ for (var i = 0; i < columns.length; i++) {
5639
5788
  if (columns[i].field === field) {
5640
5789
  column = columns[i];
5641
5790
  break;
5642
5791
  }
5643
- else if (columns[i].columns) {
5644
- column = this.getColumn(field, columns[i].columns);
5645
- if (column) {
5792
+ }
5793
+ if (!column && this.separator !== '') {
5794
+ for (var i = 0; i < columns.length; i++) {
5795
+ if (columns[i].field === rootField) {
5796
+ if (columns[i].columns) {
5797
+ var subField = field.substring(rootField.length + this.separator.length);
5798
+ if (subField) {
5799
+ column = this.getColumn(subField, columns[i].columns);
5800
+ }
5801
+ else {
5802
+ column = columns[i];
5803
+ }
5804
+ }
5805
+ else {
5806
+ column = columns[i];
5807
+ }
5646
5808
  break;
5647
5809
  }
5648
5810
  }
5649
- else if (field && field.indexOf(this.separator) > -1) {
5650
- if (this.separator !== '' && columns[i].field === field.split(this.separator)[0]) {
5651
- column = columns[i];
5652
- break;
5811
+ }
5812
+ if (!column) {
5813
+ for (var i = 0; i < columns.length; i++) {
5814
+ if (columns[i].columns) {
5815
+ column = this.getColumn(field, columns[i].columns);
5816
+ if (column) {
5817
+ break;
5818
+ }
5653
5819
  }
5654
5820
  }
5655
5821
  }
@@ -6103,6 +6269,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6103
6269
  return false;
6104
6270
  };
6105
6271
  QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {
6272
+ var _this = this;
6106
6273
  var isRoot = false;
6107
6274
  if (!queryStr && queryStr !== '') {
6108
6275
  queryStr = '';
@@ -6111,86 +6278,74 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6111
6278
  else {
6112
6279
  queryStr += '(';
6113
6280
  }
6114
- var condition = rules.condition;
6115
6281
  if (rules.not) {
6116
- var rulesNotCondition = void 0;
6117
- if (isRoot) {
6118
- rulesNotCondition = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' (' : 'NOT (';
6119
- queryStr += rulesNotCondition;
6120
- }
6121
- else {
6122
- rulesNotCondition = sqlLocale ? ' ' + this.l10n.getConstant('NOT').toUpperCase() + ' (' : ' NOT (';
6123
- queryStr += rulesNotCondition;
6124
- }
6282
+ var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';
6283
+ queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';
6125
6284
  }
6126
- if (rules.rules) {
6127
- for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
6128
- if (rules.rules[j].rules) {
6129
- queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
6130
- if (this.enableSeparateConnector) {
6131
- condition = rules.rules[j].condition;
6285
+ if (rules.rules && rules.rules.length) {
6286
+ queryStr += rules.rules.reduce(function (result, rule, j) {
6287
+ var ruleStr = '';
6288
+ if (rule.rules) {
6289
+ ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);
6290
+ if (_this.enableSeparateConnector) {
6291
+ rules.condition = rule.condition;
6132
6292
  }
6133
6293
  }
6134
6294
  else {
6135
- var rule = rules.rules[j];
6295
+ var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];
6136
6296
  var valueStr = '';
6137
- var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
6138
6297
  if (rule.value instanceof Array) {
6139
6298
  if (rule.operator.toString().indexOf('between') > -1) {
6140
- var ruleCondition = sqlLocale ? ' ' + this.l10n.getConstant('AND').toUpperCase() + ' ' : ' ' + 'AND' + ' ';
6141
- if (rule.type === 'date' && !this.isDateFunction(rule.value[0])) {
6142
- valueStr += '"' + rule.value[0] + '"' + ruleCondition + '"' + rule.value[1] + '"';
6299
+ var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';
6300
+ if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {
6301
+ valueStr = "\"" + rule.value[0] + "\"" + ruleCondition + "\"" + rule.value[1] + "\"";
6143
6302
  }
6144
6303
  else {
6145
- valueStr += rule.value[0] + ruleCondition + rule.value[1];
6304
+ valueStr = "" + rule.value[0] + ruleCondition + rule.value[1];
6146
6305
  }
6147
6306
  }
6148
6307
  else {
6149
6308
  if (typeof rule.value[0] === 'string' && rule.value !== null) {
6150
- valueStr += '("' + rule.value[0] + '"';
6151
- for (var k = 1, kLen = rule.value.length; k < kLen; k++) {
6152
- valueStr += ',"' + rule.value[k] + '"';
6153
- }
6154
- valueStr += ')';
6309
+ var valueArray = rule.value;
6310
+ valueStr = '("' + valueArray.join('","') + '")';
6155
6311
  }
6156
6312
  else {
6157
- valueStr += '(' + rule.value + ')';
6313
+ valueStr = "(" + rule.value + ")";
6158
6314
  }
6159
6315
  }
6160
6316
  }
6161
6317
  else {
6162
6318
  if (rule.operator.toString().indexOf('startswith') > -1) {
6163
- valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
6319
+ valueStr = rule.value ? "(\"" + rule.value + "%\")" : "(" + rule.value + ")";
6164
6320
  }
6165
6321
  else if (rule.operator.toString().indexOf('endswith') > -1) {
6166
- valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
6322
+ valueStr = rule.value ? "(\"%" + rule.value + "\")" : "(" + rule.value + ")";
6167
6323
  }
6168
6324
  else if (rule.operator.toString().indexOf('contains') > -1) {
6169
- valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
6325
+ valueStr = rule.value ? "(\"%" + rule.value + "%\")" : "(" + rule.value + ")";
6170
6326
  }
6171
6327
  else {
6172
6328
  if (rule.type === 'number' || typeof rule.value === 'boolean' ||
6173
6329
  (rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
6174
- valueStr += rule.value;
6330
+ valueStr = "" + rule.value;
6175
6331
  }
6176
6332
  else if (rule.operator.toString().indexOf('empty') > -1) {
6177
- valueStr += '""';
6333
+ valueStr = '""';
6178
6334
  }
6179
6335
  else {
6180
- valueStr += '"' + rule.value + '"';
6336
+ valueStr = "\"" + rule.value + "\"";
6181
6337
  }
6182
6338
  }
6183
6339
  }
6340
+ var fieldName = rule.field;
6341
+ if (enableEscape) {
6342
+ fieldName = '`' + fieldName + '`';
6343
+ }
6344
+ else if (fieldName.indexOf(' ') > -1) {
6345
+ fieldName = '"' + fieldName + '"';
6346
+ }
6184
6347
  if (rule.operator.toString().indexOf('null') > -1) {
6185
- if (enableEscape) {
6186
- rule.field = '`' + rule.field + '`';
6187
- }
6188
- else {
6189
- if (rule.field.indexOf(' ') > -1) {
6190
- rule.field = '"' + rule.field + '"';
6191
- }
6192
- }
6193
- queryStr += rule.field + ' ' + ruleOpertor;
6348
+ ruleStr = fieldName + ' ' + ruleOpertor;
6194
6349
  }
6195
6350
  else {
6196
6351
  var custOper = ruleOpertor;
@@ -6200,33 +6355,21 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6200
6355
  else if (rule.operator === 'isnotempty') {
6201
6356
  custOper = '!=';
6202
6357
  }
6203
- if (enableEscape) {
6204
- rule.field = '`' + rule.field + '`';
6205
- }
6206
- else {
6207
- if (rule.field.indexOf(' ') > -1) {
6208
- rule.field = '"' + rule.field + '"';
6209
- }
6210
- }
6211
- queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
6212
- }
6213
- if (rule.condition && rule.condition !== '') {
6214
- condition = rule.condition;
6358
+ ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;
6215
6359
  }
6216
6360
  }
6217
- if (j !== jLen - 1) {
6218
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6219
- var rule = rules.rules[j];
6220
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6361
+ if (j !== rules.rules.length - 1) {
6362
+ var condition = rules.condition;
6221
6363
  if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
6222
6364
  condition = rule.condition;
6223
6365
  }
6224
6366
  if (condition) {
6225
- condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
6226
- queryStr += ' ' + condition + ' ';
6367
+ condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
6368
+ ruleStr += ' ' + condition + ' ';
6227
6369
  }
6228
6370
  }
6229
- }
6371
+ return result + ruleStr;
6372
+ }, '');
6230
6373
  }
6231
6374
  if (!isRoot) {
6232
6375
  queryStr += ')';
@@ -6544,23 +6687,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6544
6687
  return subOp[i].length;
6545
6688
  }
6546
6689
  }
6547
- //Left Parenthesis
6548
6690
  if (/^\(/.exec(sqlString)) {
6549
6691
  this.parser.push(['Left', '(']);
6550
6692
  return 1;
6551
6693
  }
6552
- //Right Parenthesis
6553
6694
  if (/^\)/.exec(sqlString)) {
6554
6695
  this.parser.push(['Right', ')']);
6555
6696
  return 1;
6556
6697
  }
6557
- //Boolean
6558
6698
  if (/^(true|false)/.exec(sqlString)) {
6559
6699
  matchValue = /^(true|false)/.exec(sqlString)[0];
6560
6700
  this.parser.push(['String', matchValue]);
6561
6701
  return matchValue.length;
6562
6702
  }
6563
- //Null
6564
6703
  if (/^null/.exec(sqlString)) {
6565
6704
  matchValue = /^null/.exec(sqlString)[0];
6566
6705
  this.parser.push(['String', null]);
@@ -6585,7 +6724,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6585
6724
  return matchValue.length;
6586
6725
  }
6587
6726
  }
6588
- //String
6589
6727
  var singleString = this.getSingleQuoteString(sqlString);
6590
6728
  if (singleString !== '') {
6591
6729
  matchValue = singleString;
@@ -6605,24 +6743,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6605
6743
  !this.checkCondition(sqlString, matchValue)) {
6606
6744
  matchValue = this.combineSingleQuoteString(sqlString, matchValue);
6607
6745
  }
6608
- // end
6609
6746
  this.parser.push(['String', matchValue]);
6610
6747
  return matchValue.length;
6611
6748
  }
6612
- // Double String
6613
6749
  var doubleString = this.getDoubleQuoteString(sqlString);
6614
6750
  if (doubleString !== '') {
6615
6751
  matchValue = doubleString;
6616
6752
  this.parser.push(['DoubleString', matchValue]);
6617
6753
  return matchValue.length;
6618
6754
  }
6619
- //Number
6620
6755
  if (/^\d*\.?\d+/.exec(sqlString)) {
6621
6756
  matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
6622
6757
  this.parser.push(['Number', matchValue]);
6623
6758
  return matchValue.length;
6624
6759
  }
6625
- //Negative Number
6626
6760
  if (/^-?\d*\.?\d+/.exec(sqlString)) {
6627
6761
  matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
6628
6762
  this.parser.push(['Number', matchValue]);
@@ -6790,7 +6924,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6790
6924
  fieldName += this.separator;
6791
6925
  }
6792
6926
  }
6793
- return this.getColumn(fieldName).label;
6927
+ return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';
6794
6928
  };
6795
6929
  QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {
6796
6930
  var j;
@@ -7022,12 +7156,16 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
7022
7156
  }
7023
7157
  }
7024
7158
  if (this.enableSeparateConnector) {
7025
- this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7026
- 'value': getRule.value, 'condition': getRule.condition }], groupId);
7159
+ this.addRules([{
7160
+ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7161
+ 'value': getRule.value, 'condition': getRule.condition
7162
+ }], groupId);
7027
7163
  }
7028
7164
  else {
7029
- this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7030
- 'value': getRule.value }], groupId);
7165
+ this.addRules([{
7166
+ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7167
+ 'value': getRule.value
7168
+ }], groupId);
7031
7169
  }
7032
7170
  this.ruleIndex = -1;
7033
7171
  };
@@ -7202,115 +7340,65 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
7202
7340
  this.disableRuleControls(target, groupElem, isDisabled);
7203
7341
  };
7204
7342
  QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
7205
- var ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');
7206
- var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');
7207
- var textElement = groupElem.querySelectorAll('.e-control.e-textbox');
7208
- var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');
7209
- var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');
7210
- var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');
7211
- var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');
7212
- var deleteElem = groupElem.querySelectorAll('.e-rule-delete');
7213
- var lockElem = groupElem.querySelectorAll('.e-lock-rule');
7214
- var cloneElem = groupElem.querySelectorAll('.e-clone-rule');
7215
- var ruleElem = groupElem.querySelectorAll('.e-rule-container');
7216
- for (var i = 0; i < deleteElem.length; i++) {
7343
+ var disableComponents = function (elements, componentGetter, isDisabled) {
7344
+ elements.forEach(function (element) {
7345
+ var component = componentGetter(element);
7346
+ if ('enabled' in component) {
7347
+ component.enabled = !isDisabled;
7348
+ }
7349
+ else if ('disabled' in component) {
7350
+ component.disabled = isDisabled;
7351
+ }
7352
+ });
7353
+ };
7354
+ var elements = {
7355
+ ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),
7356
+ numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),
7357
+ text: groupElem.querySelectorAll('.e-control.e-textbox'),
7358
+ date: groupElem.querySelectorAll('.e-control.e-datepicker'),
7359
+ checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),
7360
+ radio: groupElem.querySelectorAll('.e-control.e-radio'),
7361
+ multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),
7362
+ deleteElem: groupElem.querySelectorAll('.e-rule-delete'),
7363
+ lockElem: groupElem.querySelectorAll('.e-lock-rule'),
7364
+ cloneElem: groupElem.querySelectorAll('.e-clone-rule'),
7365
+ ruleElem: groupElem.querySelectorAll('.e-rule-container')
7366
+ };
7367
+ elements.deleteElem.forEach(function (elem, i) {
7217
7368
  if (isDisabled) {
7218
- if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
7219
- ruleElem[i].classList.add('e-disable');
7369
+ if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {
7370
+ elements.ruleElem[i].classList.add('e-disable');
7220
7371
  }
7221
- deleteElem[i].disabled = true;
7222
- if (cloneElem[i]) {
7223
- cloneElem[i].disabled = true;
7372
+ elements.deleteElem[i].disabled = true;
7373
+ if (elements.cloneElem[i]) {
7374
+ elements.cloneElem[i].disabled = true;
7224
7375
  }
7225
- if (lockElem[i] !== target) {
7226
- lockElem[i].disabled = true;
7227
- lockElem[i].children[0].classList.remove('e-unlock');
7228
- lockElem[i].children[0].classList.add('e-lock');
7376
+ if (elements.lockElem[i] !== target) {
7377
+ elements.lockElem[i].disabled = true;
7378
+ elements.lockElem[i].children[0].classList.remove('e-unlock');
7379
+ elements.lockElem[i].children[0].classList.add('e-lock');
7229
7380
  }
7230
7381
  }
7231
7382
  else {
7232
- if (ruleElem[i]) {
7233
- ruleElem[i].classList.remove('e-disable');
7383
+ if (elements.ruleElem[i]) {
7384
+ elements.ruleElem[i].classList.remove('e-disable');
7234
7385
  }
7235
- if (cloneElem[i]) {
7236
- cloneElem[i].disabled = false;
7386
+ if (elements.cloneElem[i]) {
7387
+ elements.cloneElem[i].disabled = false;
7237
7388
  }
7238
- deleteElem[i].disabled = false;
7239
- lockElem[i].disabled = false;
7240
- lockElem[i].children[0].classList.remove('e-lock');
7241
- lockElem[i].children[0].classList.add('e-unlock');
7389
+ elements.deleteElem[i].disabled = false;
7390
+ elements.lockElem[i].disabled = false;
7391
+ elements.lockElem[i].children[0].classList.remove('e-lock');
7392
+ elements.lockElem[i].children[0].classList.add('e-unlock');
7242
7393
  }
7243
- }
7244
- var dropDownObj;
7245
- var numericObj;
7246
- var textObj;
7247
- var dateObj;
7248
- var checkBoxObj;
7249
- var radioBtnObj;
7250
- var multiSelectObj;
7251
- for (var i = 0; i < ddlElement.length; i++) {
7252
- dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
7253
- if (isDisabled) {
7254
- dropDownObj.enabled = false;
7255
- }
7256
- else {
7257
- dropDownObj.enabled = true;
7258
- }
7259
- }
7260
- for (var i = 0; i < numericElement.length; i++) {
7261
- numericObj = getComponent(numericElement[i], 'numerictextbox');
7262
- if (isDisabled) {
7263
- numericObj.enabled = false;
7264
- }
7265
- else {
7266
- numericObj.enabled = true;
7267
- }
7268
- }
7269
- for (var i = 0; i < textElement.length; i++) {
7270
- textObj = getComponent(textElement[i], 'textbox');
7271
- if (isDisabled) {
7272
- textObj.enabled = false;
7273
- }
7274
- else {
7275
- textObj.enabled = true;
7276
- }
7277
- }
7278
- for (var i = 0; i < dateElement.length; i++) {
7279
- dateObj = getComponent(dateElement[i], 'datepicker');
7280
- if (isDisabled) {
7281
- dateObj.enabled = false;
7282
- }
7283
- else {
7284
- dateObj.enabled = true;
7285
- }
7286
- }
7287
- for (var i = 0; i < checkboxElement.length; i++) {
7288
- checkBoxObj = getComponent(checkboxElement[i], 'checkbox');
7289
- if (isDisabled) {
7290
- checkBoxObj.disabled = true;
7291
- }
7292
- else {
7293
- checkBoxObj.disabled = false;
7294
- }
7295
- }
7296
- for (var i = 0; i < radioBtnElement.length; i++) {
7297
- radioBtnObj = getComponent(radioBtnElement[i], 'radio');
7298
- if (isDisabled) {
7299
- radioBtnObj.disabled = true;
7300
- }
7301
- else {
7302
- radioBtnObj.disabled = false;
7303
- }
7304
- }
7305
- for (var i = 0; i < multiSelectElement.length; i++) {
7306
- multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
7307
- if (isDisabled) {
7308
- multiSelectObj.enabled = false;
7309
- }
7310
- else {
7311
- multiSelectObj.enabled = true;
7312
- }
7313
- }
7394
+ });
7395
+ disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);
7396
+ disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);
7397
+ disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);
7398
+ disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);
7399
+ disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);
7400
+ disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);
7401
+ disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);
7314
7402
  };
7315
7403
  __decorate([
7316
7404
  Event()