@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.
@@ -233,37 +233,71 @@ var QueryBuilder = /** @class */ (function (_super) {
233
233
  QueryBuilder.prototype.reset = function () {
234
234
  this.isImportRules = false;
235
235
  var bodyElem = this.element.querySelector('.e-group-body');
236
- var inputElement = this.element.querySelectorAll('input.e-control');
237
- for (var i = 0, len = inputElement.length; i < len; i++) {
238
- if (inputElement[i].className.indexOf('e-tooltip') > -1) {
239
- getComponent(inputElement[i], 'tooltip').destroy();
236
+ var inputElements = this.element.querySelectorAll('input.e-control');
237
+ var batchSize = 20;
238
+ var currentIndex = 0;
239
+ var processBatch = function () {
240
+ var endIndex = Math.min(currentIndex + batchSize, inputElements.length);
241
+ for (var i = currentIndex; i < endIndex; i++) {
242
+ var element = inputElements[i];
243
+ try {
244
+ if (element.className.indexOf('e-tooltip') > -1) {
245
+ var tooltip = getComponent(element, 'tooltip');
246
+ if (tooltip) {
247
+ tooltip.destroy();
248
+ }
249
+ }
250
+ else if (element.parentElement && element.parentElement.className.indexOf('e-tooltip') > -1) {
251
+ var tooltip = getComponent(element.parentElement, 'tooltip');
252
+ if (tooltip) {
253
+ tooltip.destroy();
254
+ }
255
+ }
256
+ }
257
+ catch (e) {
258
+ console.warn('Error destroying tooltip:', e);
259
+ }
240
260
  }
241
- else if (inputElement[i].parentElement.className.indexOf('e-tooltip') > -1) {
242
- getComponent(inputElement[i].parentElement, 'tooltip').destroy();
261
+ currentIndex = endIndex;
262
+ if (currentIndex < inputElements.length) {
263
+ requestAnimationFrame(processBatch);
243
264
  }
265
+ };
266
+ if (inputElements.length > 0) {
267
+ processBatch();
244
268
  }
245
269
  if (bodyElem) {
246
- bodyElem.innerHTML = '';
270
+ bodyElem.textContent = '';
247
271
  }
248
272
  else {
273
+ var fragment = document.createDocumentFragment();
249
274
  var grpContainer = this.createElement('div', { attrs: { class: 'e-group-container' } });
250
275
  var grpHeader = this.createElement('div', { attrs: { class: 'e-group-header' } });
251
276
  var grpBody = this.createElement('div', { attrs: { class: 'e-group-body' } });
252
- grpContainer.appendChild(grpHeader).appendChild(grpBody);
253
- this.element.appendChild(grpContainer);
277
+ grpContainer.appendChild(grpHeader);
278
+ grpContainer.appendChild(grpBody);
279
+ fragment.appendChild(grpContainer);
280
+ this.element.appendChild(fragment);
254
281
  bodyElem = this.element.querySelector('.e-group-body');
255
282
  }
256
283
  if (this.headerTemplate && this.isRoot) {
257
- this.element.innerHTML = '';
284
+ this.element.textContent = '';
258
285
  this.isRoot = false;
259
286
  }
260
287
  if (this.enableNotCondition) {
261
- removeClass(this.element.querySelectorAll('.e-qb-toggle'), 'e-active-toggle');
288
+ var toggleElements = this.element.querySelectorAll('.e-qb-toggle');
289
+ for (var i = 0; i < toggleElements.length; i++) {
290
+ removeClass([toggleElements[i]], 'e-active-toggle');
291
+ }
292
+ }
293
+ if (bodyElem) {
294
+ bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));
262
295
  }
263
- bodyElem.appendChild(this.createElement('div', { attrs: { class: 'e-rule-list' } }));
264
296
  this.levelColl[this.element.id + '_group0'] = [0];
265
297
  this.setProperties({ rule: { condition: 'and', not: false, rules: [] } }, true);
266
- this.disableRuleCondition(bodyElem.parentElement);
298
+ if (bodyElem && bodyElem.parentElement) {
299
+ this.disableRuleCondition(bodyElem.parentElement);
300
+ }
267
301
  };
268
302
  QueryBuilder.prototype.getWrapper = function () {
269
303
  return this.element;
@@ -286,100 +320,131 @@ var QueryBuilder = /** @class */ (function (_super) {
286
320
  return '';
287
321
  };
288
322
  QueryBuilder.prototype.initialize = function () {
323
+ var _this = this;
289
324
  if (this.dataColl.length) {
290
- var columnKeys = Object.keys(this.dataColl[0]);
325
+ var columnKeys_1 = Object.keys(this.dataColl[0]);
291
326
  var cols = [];
292
- var categories = [];
293
- var type = void 0;
294
- var groupBy = false;
295
- var isDate = false;
296
- var value = void 0;
297
- var validateObj = { isRequired: true, min: 0, max: Number.MAX_VALUE };
327
+ var categories_1 = [];
328
+ var type_1;
329
+ var groupBy_1 = false;
330
+ var isDate_1 = false;
331
+ var value_1;
332
+ var validateObj_1 = { isRequired: true, min: 0, max: Number.MAX_VALUE };
298
333
  if (this.columns.length) {
299
334
  this.columnSort();
300
335
  var columns = this.columns;
301
- for (var i = 0, len = columns.length; i < len; i++) {
302
- this.updateCustomOperator(columns[i], 'initial');
303
- if (!columns[i].type) {
304
- if (columnKeys.indexOf(columns[i].field) > -1) {
305
- value = this.dataColl[0][columns[i].field];
306
- type = typeof value;
307
- if (type === 'string') {
308
- isDate = !isNaN(Date.parse(value));
336
+ columns.forEach(function (column) {
337
+ _this.updateCustomOperator(column, 'initial');
338
+ if (!column.type) {
339
+ if (columnKeys_1.indexOf(column.field) > -1) {
340
+ value_1 = _this.dataColl[0][column.field];
341
+ type_1 = typeof value_1;
342
+ if (type_1 === 'string') {
343
+ isDate_1 = !isNaN(Date.parse(value_1));
309
344
  }
310
- else if (type === 'object') {
311
- isDate = value instanceof Date && !isNaN(value.getTime());
312
- type = 'string';
345
+ else if (type_1 === 'object') {
346
+ isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());
347
+ type_1 = 'string';
313
348
  }
314
- columns[i].type = type;
315
- isDate = false;
349
+ column.type = type_1;
350
+ isDate_1 = false;
316
351
  }
317
- type = 'string';
352
+ type_1 = 'string';
318
353
  }
319
- if (!columns[i].validation) {
320
- columns[i].validation = validateObj;
354
+ if (!column.validation) {
355
+ column.validation = validateObj_1;
321
356
  }
322
- if (columns[i].category) {
323
- groupBy = true;
357
+ if (column.category) {
358
+ groupBy_1 = true;
324
359
  }
325
360
  else {
326
- columns[i].category = this.l10n.getConstant('OtherFields');
361
+ column.category = _this.l10n.getConstant('OtherFields');
327
362
  }
328
- if (categories.indexOf(columns[i].category) < 0) {
329
- categories.push(columns[i].category);
363
+ if (categories_1.indexOf(column.category) < 0) {
364
+ categories_1.push(column.category);
330
365
  }
331
- if (!columns[i].operators ||
332
- (this.isLocale && this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
333
- columns[i].operators = this.customOperators[columns[i].type + 'Operator'];
366
+ if (!column.operators ||
367
+ (_this.isLocale && _this.isCustomOprCols.indexOf(column.field) === -1)) {
368
+ column.operators = _this.customOperators[column.type + 'Operator'];
334
369
  }
335
- }
336
- if (groupBy && (categories.length > 1 || categories[0] !== this.l10n.getConstant('OtherFields'))) {
370
+ });
371
+ if (groupBy_1 && (categories_1.length > 1 || categories_1[0] !== this.l10n.getConstant('OtherFields'))) {
337
372
  this.fields = { text: 'label', value: 'field', groupBy: 'category' };
338
373
  }
339
374
  this.updateSubFieldsFromColumns(this.columns);
340
375
  }
341
376
  else {
342
- for (var i = 0, len = columnKeys.length; i < len; i++) {
343
- value = this.dataColl[0][columnKeys[i]];
344
- type = typeof value;
345
- if (type === 'string') {
346
- isDate = !isNaN(Date.parse(value));
347
- }
348
- else if (type === 'object' && !Object.keys(value).length) {
349
- isDate = value instanceof Date && !isNaN(value.getTime());
350
- type = 'string';
351
- }
352
- cols[i] = { 'field': columnKeys[i], 'label': columnKeys[i], 'type': isDate ? 'date' : type,
353
- 'validation': validateObj };
354
- isDate = false;
377
+ for (var i = 0, len = columnKeys_1.length; i < len; i++) {
378
+ value_1 = this.dataColl[0][columnKeys_1[i]];
379
+ type_1 = typeof value_1;
380
+ if (type_1 === 'string') {
381
+ isDate_1 = !isNaN(Date.parse(value_1));
382
+ }
383
+ else if (type_1 === 'object' && !Object.keys(value_1).length) {
384
+ isDate_1 = value_1 instanceof Date && !isNaN(value_1.getTime());
385
+ type_1 = 'string';
386
+ }
387
+ cols[i] = {
388
+ 'field': columnKeys_1[i], 'label': columnKeys_1[i], 'type': isDate_1 ? 'date' : type_1,
389
+ 'validation': validateObj_1
390
+ };
391
+ isDate_1 = false;
355
392
  cols[i].operators = this.customOperators[cols[i].type + 'Operator'];
356
- if (type === 'object') {
357
- this.updateSubFields(value, cols[i]);
393
+ if (type_1 === 'object') {
394
+ this.updateSubFields(value_1, cols[i]);
358
395
  }
359
396
  }
360
397
  this.columns = cols;
361
398
  }
362
399
  }
363
400
  else if (this.columns && this.columns.length) {
364
- var columns = this.columns;
365
- for (var i = 0, len = columns.length; i < len; i++) {
366
- if (columns[i].category && columns[i].category !== this.l10n.getConstant('OtherFields')) {
367
- this.fields = { text: 'label', value: 'field', groupBy: 'category' };
401
+ if (this.sortDirection !== 'Default') {
402
+ this.columnSort();
403
+ }
404
+ this.processColumnsInBatches();
405
+ if (this.columns.length > 50) {
406
+ setTimeout(function () {
407
+ _this.updateSubFieldsFromColumns(_this.columns);
408
+ }, 0);
409
+ }
410
+ else {
411
+ this.updateSubFieldsFromColumns(this.columns);
412
+ }
413
+ }
414
+ this.trigger('dataBound', { type: 'dataBound' });
415
+ };
416
+ QueryBuilder.prototype.processColumnsInBatches = function () {
417
+ var _this = this;
418
+ var columns = this.columns;
419
+ var batchSize = 10;
420
+ var processedCount = 0;
421
+ var processBatch = function () {
422
+ var endIdx = Math.min(processedCount + batchSize, columns.length);
423
+ for (var i = processedCount; i < endIdx; i++) {
424
+ if (columns[i].category && columns[i].category !== _this.l10n.getConstant('OtherFields')) {
425
+ _this.fields = { text: 'label', value: 'field', groupBy: 'category' };
368
426
  }
369
427
  else {
370
- columns[i].category = this.l10n.getConstant('OtherFields');
428
+ columns[i].category = _this.l10n.getConstant('OtherFields');
371
429
  }
372
- this.updateCustomOperator(columns[i], 'initial');
430
+ _this.updateCustomOperator(columns[i], 'initial');
373
431
  if (!columns[i].operators ||
374
- (this.isLocale && this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
375
- columns[i].operators = this.customOperators[columns[i].type + 'Operator'];
432
+ (_this.isLocale && _this.isCustomOprCols.indexOf(columns[i].field) === -1)) {
433
+ columns[i].operators = _this.customOperators[columns[i].type + 'Operator'];
376
434
  }
377
435
  }
378
- this.updateSubFieldsFromColumns(this.columns);
379
- }
380
- this.trigger('dataBound', { type: 'dataBound' });
436
+ processedCount = endIdx;
437
+ if (processedCount < columns.length) {
438
+ requestAnimationFrame(processBatch);
439
+ }
440
+ };
441
+ processBatch();
381
442
  };
382
443
  QueryBuilder.prototype.updateSubFieldsFromColumns = function (col, field) {
444
+ if (col.length > 50) {
445
+ this.updateSubFieldsLarge(col, field);
446
+ return;
447
+ }
383
448
  for (var i = 0; i < col.length; i++) {
384
449
  if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {
385
450
  col[i].field = field ? field + this.separator + col[i].field : col[i].field;
@@ -396,6 +461,39 @@ var QueryBuilder = /** @class */ (function (_super) {
396
461
  }
397
462
  }
398
463
  };
464
+ QueryBuilder.prototype.updateSubFieldsLarge = function (col, field) {
465
+ var _this = this;
466
+ var i = 0;
467
+ var colLength = col.length;
468
+ var processNextBatch = function () {
469
+ var endIdx = Math.min(i + 10, colLength);
470
+ for (; i < endIdx; i++) {
471
+ if (_this.separator !== '' && col[i].field.indexOf(_this.separator) < 0) {
472
+ col[i].field = field ? field + _this.separator + col[i].field : col[i].field;
473
+ }
474
+ if (col[i].operators) {
475
+ _this.updateCustomOperator(col[i]);
476
+ }
477
+ else if (col[i].type && col[i].type !== 'object') {
478
+ col[i].operators = _this.customOperators[col[i].type + 'Operator'];
479
+ }
480
+ }
481
+ if (i < colLength) {
482
+ requestAnimationFrame(processNextBatch);
483
+ }
484
+ else {
485
+ setTimeout(function () {
486
+ for (var j = 0; j < colLength; j++) {
487
+ if (col[j].columns) {
488
+ col[j].type = 'object';
489
+ _this.updateSubFieldsFromColumns(col[j].columns, col[j].field);
490
+ }
491
+ }
492
+ }, 0);
493
+ }
494
+ };
495
+ processNextBatch();
496
+ };
399
497
  QueryBuilder.prototype.updateSubFields = function (value, col, data) {
400
498
  var sampCol;
401
499
  col.columns = [];
@@ -565,8 +663,10 @@ var QueryBuilder = /** @class */ (function (_super) {
565
663
  }
566
664
  args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase() };
567
665
  if (this.enableNotCondition) {
568
- args = { groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),
569
- 'not': ariaChecked };
666
+ args = {
667
+ groupID: groupID, cancel: false, type: 'condition', value: targetValue.toLowerCase(),
668
+ 'not': ariaChecked
669
+ };
570
670
  }
571
671
  }
572
672
  if (!this.isImportRules) {
@@ -664,7 +764,7 @@ var QueryBuilder = /** @class */ (function (_super) {
664
764
  QueryBuilder.prototype.appendRuleElem = function (target, column, type, parentId, action, rule) {
665
765
  var ruleElem;
666
766
  var elem;
667
- var ruleListElem = target.querySelector('.e-rule-list');
767
+ var ruleListElem = target && target.querySelector('.e-rule-list');
668
768
  var args;
669
769
  if (type === 'change') {
670
770
  ruleElem = select('#' + parentId, target);
@@ -1017,7 +1117,6 @@ var QueryBuilder = /** @class */ (function (_super) {
1017
1117
  var ruleElem = document.getElementById(ruleElemID);
1018
1118
  this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');
1019
1119
  var hierarchicalData = extend([], this.columns, [], true);
1020
- // Cancel the default filtering.
1021
1120
  args.cancel = true;
1022
1121
  if (args.text === '') {
1023
1122
  this.changeDataSource(hierarchicalData);
@@ -1177,7 +1276,8 @@ var QueryBuilder = /** @class */ (function (_super) {
1177
1276
  }
1178
1277
  };
1179
1278
  QueryBuilder.prototype.renderToolTip = function (element) {
1180
- var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'), isSticky: true,
1279
+ var tooltip = new Tooltip({
1280
+ content: this.l10n.getConstant('ValidationMessage'), isSticky: true,
1181
1281
  position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {
1182
1282
  tooltip.destroy();
1183
1283
  }, beforeOpen: function (args) {
@@ -1185,7 +1285,8 @@ var QueryBuilder = /** @class */ (function (_super) {
1185
1285
  if (tooltipCloseElement) {
1186
1286
  tooltipCloseElement.style.display = 'none';
1187
1287
  }
1188
- } });
1288
+ }
1289
+ });
1189
1290
  tooltip.appendTo(element);
1190
1291
  tooltip.open(element);
1191
1292
  };
@@ -1343,7 +1444,6 @@ var QueryBuilder = /** @class */ (function (_super) {
1343
1444
  groupElem.appendChild(groupHdrElem);
1344
1445
  grpBodyElem.appendChild(rulesElem);
1345
1446
  groupElem.appendChild(grpBodyElem);
1346
- // create button group in OR and AND process
1347
1447
  if (!this.headerTemplate) {
1348
1448
  if (this.allowDragAndDrop) {
1349
1449
  dragClsName = 'e-icons e-drag-qb-rule';
@@ -1351,8 +1451,12 @@ var QueryBuilder = /** @class */ (function (_super) {
1351
1451
  else {
1352
1452
  dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1353
1453
  }
1354
- var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-label': 'drag handle',
1355
- title: 'drag handle' } });
1454
+ var spanDragElement = this.createElement('span', {
1455
+ attrs: {
1456
+ class: dragClsName, 'aria-label': 'drag handle',
1457
+ title: 'drag handle'
1458
+ }
1459
+ });
1356
1460
  groupHdrElem.appendChild(spanDragElement);
1357
1461
  var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
1358
1462
  glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
@@ -1370,13 +1474,17 @@ var QueryBuilder = /** @class */ (function (_super) {
1370
1474
  }
1371
1475
  inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
1372
1476
  glueElem.appendChild(inputElem);
1373
- labelElem = this.createElement('label', { attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },
1374
- innerHTML: this.l10n.getConstant('AND') });
1477
+ labelElem = this.createElement('label', {
1478
+ attrs: { class: 'e-lib e-btn e-btngroup-and-lbl e-small' },
1479
+ innerHTML: this.l10n.getConstant('AND')
1480
+ });
1375
1481
  glueElem.appendChild(labelElem);
1376
1482
  inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-or', value: 'OR' } });
1377
1483
  glueElem.appendChild(inputElem);
1378
- labelElem = this.createElement('label', { attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },
1379
- innerHTML: this.l10n.getConstant('OR') });
1484
+ labelElem = this.createElement('label', {
1485
+ attrs: { class: 'e-lib e-btn e-btngroup-or-lbl e-small' },
1486
+ innerHTML: this.l10n.getConstant('OR')
1487
+ });
1380
1488
  glueElem.appendChild(labelElem);
1381
1489
  groupHdrElem.appendChild(glueElem);
1382
1490
  grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });
@@ -1409,8 +1517,12 @@ var QueryBuilder = /** @class */ (function (_super) {
1409
1517
  else {
1410
1518
  dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1411
1519
  }
1412
- var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-label': 'drag handle',
1413
- title: 'drag handle' } });
1520
+ var spanDragElement = this.createElement('span', {
1521
+ attrs: {
1522
+ class: dragClsName, 'aria-label': 'drag handle',
1523
+ title: 'drag handle'
1524
+ }
1525
+ });
1414
1526
  fieldElem.appendChild(spanDragElement);
1415
1527
  var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
1416
1528
  tempElem.appendChild(filterElem);
@@ -1691,8 +1803,10 @@ var QueryBuilder = /** @class */ (function (_super) {
1691
1803
  }
1692
1804
  this.updatedRule = null;
1693
1805
  if (this.headerTemplate) {
1694
- var args_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1695
- notCondition: this.enableNotCondition ? not : undefined };
1806
+ var args_4 = {
1807
+ requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1808
+ notCondition: this.enableNotCondition ? not : undefined
1809
+ };
1696
1810
  this.trigger('actionBegin', args_4);
1697
1811
  }
1698
1812
  else {
@@ -1731,9 +1845,10 @@ var QueryBuilder = /** @class */ (function (_super) {
1731
1845
  }
1732
1846
  };
1733
1847
  QueryBuilder.prototype.setMultiConnector = function (trgt) {
1734
- if (this.enableSeparateConnector && !this.headerTemplate) {
1735
- if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {
1736
- trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), trgt);
1848
+ if (this.enableSeparateConnector && !this.headerTemplate && trgt.previousElementSibling) {
1849
+ var btnGroupElem = this.groupTemplate(true).querySelector('.e-btn-group');
1850
+ if (btnGroupElem) {
1851
+ trgt.parentElement.insertBefore(btnGroupElem, trgt);
1737
1852
  var notElem = trgt.previousElementSibling.childNodes[0];
1738
1853
  if (notElem.classList.contains('e-qb-toggle')) {
1739
1854
  notElem.style.display = 'none';
@@ -1776,9 +1891,11 @@ var QueryBuilder = /** @class */ (function (_super) {
1776
1891
  groupHdr = groupElem;
1777
1892
  }
1778
1893
  if (this.headerTemplate) {
1779
- args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
1894
+ args = {
1895
+ requestType: 'header-template-initialize', ruleID: groupElem.id,
1780
1896
  notCondition: this.enableNotCondition ? not : undefined,
1781
- condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID };
1897
+ condition: condition, rule: this.getRuleCollection(rule, false), groupID: groupID
1898
+ };
1782
1899
  this.trigger('actionBegin', args);
1783
1900
  if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1784
1901
  args.requestType = 'rule-template-create';
@@ -1931,7 +2048,7 @@ var QueryBuilder = /** @class */ (function (_super) {
1931
2048
  QueryBuilder.prototype.templateChange = function (element, value, type) {
1932
2049
  var grpElem = closest(element, '.e-group-container');
1933
2050
  var eventsArgs;
1934
- var rules = this.getParentGroup(grpElem);
2051
+ var rules = grpElem && this.getParentGroup(grpElem);
1935
2052
  var ruleElem = closest(element, '.e-rule-container');
1936
2053
  var index = 0;
1937
2054
  if (this.allowValidation) {
@@ -1946,7 +2063,7 @@ var QueryBuilder = /** @class */ (function (_super) {
1946
2063
  index++;
1947
2064
  }
1948
2065
  }
1949
- var rule = rules.rules[index];
2066
+ var rule = rules && rules.rules[index];
1950
2067
  if (type === 'field') {
1951
2068
  this.selectedColumn = this.getColumn(value);
1952
2069
  }
@@ -1954,7 +2071,7 @@ var QueryBuilder = /** @class */ (function (_super) {
1954
2071
  this.selectedColumn = this.getColumn(rule.field);
1955
2072
  }
1956
2073
  var operVal;
1957
- this.previousColumn = this.getColumn(rule.field);
2074
+ this.previousColumn = rule && this.getColumn(rule.field);
1958
2075
  var beforeRules = this.getValidRules(this.rule);
1959
2076
  if (this.selectedColumn) {
1960
2077
  if (this.selectedColumn.operators) {
@@ -1969,11 +2086,16 @@ var QueryBuilder = /** @class */ (function (_super) {
1969
2086
  switch (type) {
1970
2087
  case 'field':
1971
2088
  if (isNullOrUndefined(value)) {
1972
- rule.field = '';
1973
- rule.label = '';
1974
- rule.type = '';
1975
- rule.value = '';
1976
- rule.operator = '';
2089
+ if (!isNullOrUndefined(rule)) {
2090
+ rule.field = '';
2091
+ rule.label = '';
2092
+ rule.type = '';
2093
+ rule.value = '';
2094
+ rule.operator = '';
2095
+ }
2096
+ else {
2097
+ return;
2098
+ }
1977
2099
  }
1978
2100
  else {
1979
2101
  rule.field = value;
@@ -2024,10 +2146,14 @@ var QueryBuilder = /** @class */ (function (_super) {
2024
2146
  ruleElement.className.indexOf('e-separate-rule') < 0) {
2025
2147
  ruleElement.className += ' e-separate-rule';
2026
2148
  }
2027
- var args = { requestType: 'template-create', action: type, ruleID: grpEle.id,
2028
- fields: this.fields, rule: rule };
2029
- eventsArgs = { groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),
2030
- value: rule.field, type: 'field' };
2149
+ var args = {
2150
+ requestType: 'template-create', action: type, ruleID: grpEle.id,
2151
+ fields: this.fields, rule: rule
2152
+ };
2153
+ eventsArgs = {
2154
+ groupID: grpElem.id.replace(this.element.id + '_', ''), ruleID: grpEle.id.replace(this.element.id + '_', ''),
2155
+ value: rule.field, type: 'field'
2156
+ };
2031
2157
  this.trigger('actionBegin', args);
2032
2158
  this.trigger('change', eventsArgs);
2033
2159
  }
@@ -2168,8 +2294,10 @@ var QueryBuilder = /** @class */ (function (_super) {
2168
2294
  var item = ddl.popupObj && ddl.popupObj.element.querySelector('.e-active');
2169
2295
  var itemData = ddl.getItemData();
2170
2296
  ddl.value = itemData.value;
2171
- var customArgs = { element: ddl.element, value: itemData.value, isInteracted: true,
2172
- previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null };
2297
+ var customArgs = {
2298
+ element: ddl.element, value: itemData.value, isInteracted: true,
2299
+ previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null
2300
+ };
2173
2301
  if (ddl.previousValue !== ddl.value) {
2174
2302
  this.changeField(customArgs);
2175
2303
  }
@@ -2282,8 +2410,10 @@ var QueryBuilder = /** @class */ (function (_super) {
2282
2410
  this.selectedColumn = this.getColumn(ddlValue);
2283
2411
  var ruleElem = closest(flt, '.e-rule-container');
2284
2412
  var ruleID = ruleElem.id.replace(this.element.id + '_', '');
2285
- var eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
2286
- dl.value[0] : dl.value, cancel: false, type: 'field' };
2413
+ var eventsArgs = {
2414
+ groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
2415
+ dl.value[0] : dl.value, cancel: false, type: 'field'
2416
+ };
2287
2417
  if (!this.isImportRules && !this.prvtEvtTgrDaD) {
2288
2418
  this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
2289
2419
  _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
@@ -2872,19 +3002,25 @@ var QueryBuilder = /** @class */ (function (_super) {
2872
3002
  : getComponent(container.querySelector('.e-rule-filter .e-filter-input'), 'dropdownlist');
2873
3003
  var column = this.fieldMode === 'DropdownTree' ? this.getColumn(ddlObj.value[0]) : this.getColumn(ddlObj.value);
2874
3004
  if (typeof itemData.template === 'string' || itemData.template.write === undefined) {
2875
- var args = { rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,
2876
- requestType: 'value-template-create' };
3005
+ var args = {
3006
+ rule: rule, ruleID: container.id, operator: tempRule.operator, field: column.field,
3007
+ requestType: 'value-template-create'
3008
+ };
2877
3009
  this.trigger('actionBegin', args);
2878
3010
  }
2879
3011
  else {
2880
3012
  var template = itemData.template;
2881
3013
  if (typeof template.write === 'string') {
2882
- getValue(template.write, window)({ elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,
2883
- operator: tempRule.operator, field: column.field, dataSource: column.values });
3014
+ getValue(template.write, window)({
3015
+ elements: tempElements.length > 1 ? tempElements : tempElements[0], values: rule.value,
3016
+ operator: tempRule.operator, field: column.field, dataSource: column.values
3017
+ });
2884
3018
  }
2885
3019
  else if (typeof itemData.template !== 'function') {
2886
- itemData.template.write({ elements: tempElements.length > 1 ? tempElements : tempElements[0],
2887
- values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values });
3020
+ itemData.template.write({
3021
+ elements: tempElements.length > 1 ? tempElements : tempElements[0],
3022
+ values: rule.value, operator: tempRule.operator, field: column.field, dataSource: column.values
3023
+ });
2888
3024
  }
2889
3025
  }
2890
3026
  };
@@ -3382,8 +3518,10 @@ var QueryBuilder = /** @class */ (function (_super) {
3382
3518
  }
3383
3519
  else {
3384
3520
  if (typeof itemData.template === 'string' || itemData.template.create === undefined) {
3385
- args = { requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,
3386
- renderTemplate: true };
3521
+ args = {
3522
+ requestType: 'value-template-initialize', ruleID: ruleID, field: field, operator: operator, rule: rule,
3523
+ renderTemplate: true
3524
+ };
3387
3525
  this.trigger('actionBegin', args, function (observedActionArgs) {
3388
3526
  isRendered = _this.actionBeginSuccessCallBack(observedActionArgs, itemData, ruleID, field, target);
3389
3527
  });
@@ -3591,7 +3729,6 @@ var QueryBuilder = /** @class */ (function (_super) {
3591
3729
  element = element ? element : ruleElement.nextElementSibling.nextElementSibling.querySelector('input.e-control');
3592
3730
  operator = getComponent(element, 'dropdownlist').value.toString();
3593
3731
  rule.rules[index].operator = operator;
3594
- // Value Fields
3595
3732
  var valueContainer = ruleElement.nextElementSibling.nextElementSibling;
3596
3733
  var elementCln = valueContainer.querySelectorAll('input.e-control');
3597
3734
  if (elementCln.length < 1) {
@@ -3753,6 +3890,9 @@ var QueryBuilder = /** @class */ (function (_super) {
3753
3890
  }
3754
3891
  };
3755
3892
  QueryBuilder.prototype.validateValue = function (rule, ruleElem, index) {
3893
+ if (isNullOrUndefined(rule) && isNullOrUndefined(ruleElem)) {
3894
+ return;
3895
+ }
3756
3896
  if (!isNullOrUndefined(index)) {
3757
3897
  rule = rule.rules[index];
3758
3898
  }
@@ -3914,8 +4054,10 @@ var QueryBuilder = /** @class */ (function (_super) {
3914
4054
  if (grouplen) {
3915
4055
  this.isPublic = true;
3916
4056
  for (var i = 0, len = groups.length; i < len; i++) {
3917
- this.updatedRule = { isLocked: groups[i].isLocked, condition: groups[i].condition,
3918
- not: groups[i].not };
4057
+ this.updatedRule = {
4058
+ isLocked: groups[i].isLocked, condition: groups[i].condition,
4059
+ not: groups[i].not
4060
+ };
3919
4061
  this.importRules(groups[i], groupElem, false, groups[i].not);
3920
4062
  }
3921
4063
  this.isPublic = false;
@@ -4044,10 +4186,10 @@ var QueryBuilder = /** @class */ (function (_super) {
4044
4186
  this.element.querySelector('.e-group-header').appendChild(collapseElem);
4045
4187
  };
4046
4188
  QueryBuilder.prototype.columnSort = function () {
4047
- if (this.sortDirection.toLowerCase() === 'descending') {
4189
+ if (this.sortDirection && this.sortDirection.toLowerCase() === 'descending') {
4048
4190
  this.columns = new DataManager(this.columns).executeLocal(new Query().sortByDesc('field'));
4049
4191
  }
4050
- else if (this.sortDirection.toLowerCase() === 'ascending') {
4192
+ else if (this.sortDirection && this.sortDirection.toLowerCase() === 'ascending') {
4051
4193
  this.columns = new DataManager(this.columns).executeLocal(new Query().sortBy('field'));
4052
4194
  }
4053
4195
  };
@@ -4534,8 +4676,10 @@ var QueryBuilder = /** @class */ (function (_super) {
4534
4676
  }
4535
4677
  }
4536
4678
  }
4537
- var dragEventArgs = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
4538
- dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };
4679
+ var dragEventArgs = {
4680
+ dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
4681
+ dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false
4682
+ };
4539
4683
  this.trigger('drag', dragEventArgs);
4540
4684
  this.isDragEventPrevent = dragEventArgs.cancel;
4541
4685
  };
@@ -4556,8 +4700,10 @@ var QueryBuilder = /** @class */ (function (_super) {
4556
4700
  var prevRule;
4557
4701
  if (!isPreventelem) {
4558
4702
  var targetGrp = closest(e.target, '.e-group-container');
4559
- var dropEventArgs = { cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
4560
- : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null };
4703
+ var dropEventArgs = {
4704
+ cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
4705
+ : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null
4706
+ };
4561
4707
  this.trigger('drop', dropEventArgs);
4562
4708
  if (dropEventArgs.cancel) {
4563
4709
  isPreventelem = true;
@@ -5326,7 +5472,8 @@ var QueryBuilder = /** @class */ (function (_super) {
5326
5472
  else {
5327
5473
  if (customObj && (customObj.type === 'question' || customObj.type === 'answer')) {
5328
5474
  var notValue = rule.not;
5329
- rule = { 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
5475
+ rule = {
5476
+ 'label': rule.label, 'field': rule.field, 'operator': rule.operator, 'type': rule.type, 'value': rule.value,
5330
5477
  'condition': rule.condition, 'rules': rule.rules
5331
5478
  };
5332
5479
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -5648,21 +5795,40 @@ var QueryBuilder = /** @class */ (function (_super) {
5648
5795
  var columns = this.columns;
5649
5796
  var column;
5650
5797
  columns = col ? col : columns;
5651
- for (var i = 0, iLen = columns.length; i < iLen; i++) {
5798
+ var fieldParts = this.separator !== '' ? (field ? field.split(this.separator) : []) : [field];
5799
+ var rootField = fieldParts && fieldParts.length > 0 ? fieldParts[0] : null;
5800
+ for (var i = 0; i < columns.length; i++) {
5652
5801
  if (columns[i].field === field) {
5653
5802
  column = columns[i];
5654
5803
  break;
5655
5804
  }
5656
- else if (columns[i].columns) {
5657
- column = this.getColumn(field, columns[i].columns);
5658
- if (column) {
5805
+ }
5806
+ if (!column && this.separator !== '') {
5807
+ for (var i = 0; i < columns.length; i++) {
5808
+ if (columns[i].field === rootField) {
5809
+ if (columns[i].columns) {
5810
+ var subField = field.substring(rootField.length + this.separator.length);
5811
+ if (subField) {
5812
+ column = this.getColumn(subField, columns[i].columns);
5813
+ }
5814
+ else {
5815
+ column = columns[i];
5816
+ }
5817
+ }
5818
+ else {
5819
+ column = columns[i];
5820
+ }
5659
5821
  break;
5660
5822
  }
5661
5823
  }
5662
- else if (field && field.indexOf(this.separator) > -1) {
5663
- if (this.separator !== '' && columns[i].field === field.split(this.separator)[0]) {
5664
- column = columns[i];
5665
- break;
5824
+ }
5825
+ if (!column) {
5826
+ for (var i = 0; i < columns.length; i++) {
5827
+ if (columns[i].columns) {
5828
+ column = this.getColumn(field, columns[i].columns);
5829
+ if (column) {
5830
+ break;
5831
+ }
5666
5832
  }
5667
5833
  }
5668
5834
  }
@@ -6118,6 +6284,7 @@ var QueryBuilder = /** @class */ (function (_super) {
6118
6284
  return false;
6119
6285
  };
6120
6286
  QueryBuilder.prototype.getSqlString = function (rules, enableEscape, queryStr, sqlLocale) {
6287
+ var _this = this;
6121
6288
  var isRoot = false;
6122
6289
  if (!queryStr && queryStr !== '') {
6123
6290
  queryStr = '';
@@ -6126,86 +6293,74 @@ var QueryBuilder = /** @class */ (function (_super) {
6126
6293
  else {
6127
6294
  queryStr += '(';
6128
6295
  }
6129
- var condition = rules.condition;
6130
6296
  if (rules.not) {
6131
- var rulesNotCondition = void 0;
6132
- if (isRoot) {
6133
- rulesNotCondition = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' (' : 'NOT (';
6134
- queryStr += rulesNotCondition;
6135
- }
6136
- else {
6137
- rulesNotCondition = sqlLocale ? ' ' + this.l10n.getConstant('NOT').toUpperCase() + ' (' : ' NOT (';
6138
- queryStr += rulesNotCondition;
6139
- }
6297
+ var notPrefix = sqlLocale ? this.l10n.getConstant('NOT').toUpperCase() + ' ' : 'NOT ';
6298
+ queryStr += isRoot ? notPrefix + '(' : ' ' + notPrefix + '(';
6140
6299
  }
6141
- if (rules.rules) {
6142
- for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
6143
- if (rules.rules[j].rules) {
6144
- queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
6145
- if (this.enableSeparateConnector) {
6146
- condition = rules.rules[j].condition;
6300
+ if (rules.rules && rules.rules.length) {
6301
+ queryStr += rules.rules.reduce(function (result, rule, j) {
6302
+ var ruleStr = '';
6303
+ if (rule.rules) {
6304
+ ruleStr = _this.getSqlString(rule, enableEscape, '', sqlLocale);
6305
+ if (_this.enableSeparateConnector) {
6306
+ rules.condition = rule.condition;
6147
6307
  }
6148
6308
  }
6149
6309
  else {
6150
- var rule = rules.rules[j];
6310
+ var ruleOpertor = sqlLocale ? _this.sqlOperators[rule.operator] : _this.operators[rule.operator];
6151
6311
  var valueStr = '';
6152
- var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
6153
6312
  if (rule.value instanceof Array) {
6154
6313
  if (rule.operator.toString().indexOf('between') > -1) {
6155
- var ruleCondition = sqlLocale ? ' ' + this.l10n.getConstant('AND').toUpperCase() + ' ' : ' ' + 'AND' + ' ';
6156
- if (rule.type === 'date' && !this.isDateFunction(rule.value[0])) {
6157
- valueStr += '"' + rule.value[0] + '"' + ruleCondition + '"' + rule.value[1] + '"';
6314
+ var ruleCondition = sqlLocale ? ' ' + _this.l10n.getConstant('AND').toUpperCase() + ' ' : ' AND ';
6315
+ if (rule.type === 'date' && !_this.isDateFunction(rule.value[0])) {
6316
+ valueStr = "\"" + rule.value[0] + "\"" + ruleCondition + "\"" + rule.value[1] + "\"";
6158
6317
  }
6159
6318
  else {
6160
- valueStr += rule.value[0] + ruleCondition + rule.value[1];
6319
+ valueStr = "" + rule.value[0] + ruleCondition + rule.value[1];
6161
6320
  }
6162
6321
  }
6163
6322
  else {
6164
6323
  if (typeof rule.value[0] === 'string' && rule.value !== null) {
6165
- valueStr += '("' + rule.value[0] + '"';
6166
- for (var k = 1, kLen = rule.value.length; k < kLen; k++) {
6167
- valueStr += ',"' + rule.value[k] + '"';
6168
- }
6169
- valueStr += ')';
6324
+ var valueArray = rule.value;
6325
+ valueStr = '("' + valueArray.join('","') + '")';
6170
6326
  }
6171
6327
  else {
6172
- valueStr += '(' + rule.value + ')';
6328
+ valueStr = "(" + rule.value + ")";
6173
6329
  }
6174
6330
  }
6175
6331
  }
6176
6332
  else {
6177
6333
  if (rule.operator.toString().indexOf('startswith') > -1) {
6178
- valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
6334
+ valueStr = rule.value ? "(\"" + rule.value + "%\")" : "(" + rule.value + ")";
6179
6335
  }
6180
6336
  else if (rule.operator.toString().indexOf('endswith') > -1) {
6181
- valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
6337
+ valueStr = rule.value ? "(\"%" + rule.value + "\")" : "(" + rule.value + ")";
6182
6338
  }
6183
6339
  else if (rule.operator.toString().indexOf('contains') > -1) {
6184
- valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
6340
+ valueStr = rule.value ? "(\"%" + rule.value + "%\")" : "(" + rule.value + ")";
6185
6341
  }
6186
6342
  else {
6187
6343
  if (rule.type === 'number' || typeof rule.value === 'boolean' ||
6188
6344
  (rule.value === null && (rule.operator.toString().indexOf('empty') < -1))) {
6189
- valueStr += rule.value;
6345
+ valueStr = "" + rule.value;
6190
6346
  }
6191
6347
  else if (rule.operator.toString().indexOf('empty') > -1) {
6192
- valueStr += '""';
6348
+ valueStr = '""';
6193
6349
  }
6194
6350
  else {
6195
- valueStr += '"' + rule.value + '"';
6351
+ valueStr = "\"" + rule.value + "\"";
6196
6352
  }
6197
6353
  }
6198
6354
  }
6355
+ var fieldName = rule.field;
6356
+ if (enableEscape) {
6357
+ fieldName = '`' + fieldName + '`';
6358
+ }
6359
+ else if (fieldName.indexOf(' ') > -1) {
6360
+ fieldName = '"' + fieldName + '"';
6361
+ }
6199
6362
  if (rule.operator.toString().indexOf('null') > -1) {
6200
- if (enableEscape) {
6201
- rule.field = '`' + rule.field + '`';
6202
- }
6203
- else {
6204
- if (rule.field.indexOf(' ') > -1) {
6205
- rule.field = '"' + rule.field + '"';
6206
- }
6207
- }
6208
- queryStr += rule.field + ' ' + ruleOpertor;
6363
+ ruleStr = fieldName + ' ' + ruleOpertor;
6209
6364
  }
6210
6365
  else {
6211
6366
  var custOper = ruleOpertor;
@@ -6215,33 +6370,21 @@ var QueryBuilder = /** @class */ (function (_super) {
6215
6370
  else if (rule.operator === 'isnotempty') {
6216
6371
  custOper = '!=';
6217
6372
  }
6218
- if (enableEscape) {
6219
- rule.field = '`' + rule.field + '`';
6220
- }
6221
- else {
6222
- if (rule.field.indexOf(' ') > -1) {
6223
- rule.field = '"' + rule.field + '"';
6224
- }
6225
- }
6226
- queryStr += rule.field + ' ' + custOper + ' ' + valueStr;
6227
- }
6228
- if (rule.condition && rule.condition !== '') {
6229
- condition = rule.condition;
6373
+ ruleStr = fieldName + ' ' + custOper + ' ' + valueStr;
6230
6374
  }
6231
6375
  }
6232
- if (j !== jLen - 1) {
6233
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6234
- var rule = rules.rules[j];
6235
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6376
+ if (j !== rules.rules.length - 1) {
6377
+ var condition = rules.condition;
6236
6378
  if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
6237
6379
  condition = rule.condition;
6238
6380
  }
6239
6381
  if (condition) {
6240
- condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
6241
- queryStr += ' ' + condition + ' ';
6382
+ condition = sqlLocale ? _this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
6383
+ ruleStr += ' ' + condition + ' ';
6242
6384
  }
6243
6385
  }
6244
- }
6386
+ return result + ruleStr;
6387
+ }, '');
6245
6388
  }
6246
6389
  if (!isRoot) {
6247
6390
  queryStr += ')';
@@ -6559,23 +6702,19 @@ var QueryBuilder = /** @class */ (function (_super) {
6559
6702
  return subOp[i].length;
6560
6703
  }
6561
6704
  }
6562
- //Left Parenthesis
6563
6705
  if (/^\(/.exec(sqlString)) {
6564
6706
  this.parser.push(['Left', '(']);
6565
6707
  return 1;
6566
6708
  }
6567
- //Right Parenthesis
6568
6709
  if (/^\)/.exec(sqlString)) {
6569
6710
  this.parser.push(['Right', ')']);
6570
6711
  return 1;
6571
6712
  }
6572
- //Boolean
6573
6713
  if (/^(true|false)/.exec(sqlString)) {
6574
6714
  matchValue = /^(true|false)/.exec(sqlString)[0];
6575
6715
  this.parser.push(['String', matchValue]);
6576
6716
  return matchValue.length;
6577
6717
  }
6578
- //Null
6579
6718
  if (/^null/.exec(sqlString)) {
6580
6719
  matchValue = /^null/.exec(sqlString)[0];
6581
6720
  this.parser.push(['String', null]);
@@ -6600,7 +6739,6 @@ var QueryBuilder = /** @class */ (function (_super) {
6600
6739
  return matchValue.length;
6601
6740
  }
6602
6741
  }
6603
- //String
6604
6742
  var singleString = this.getSingleQuoteString(sqlString);
6605
6743
  if (singleString !== '') {
6606
6744
  matchValue = singleString;
@@ -6620,24 +6758,20 @@ var QueryBuilder = /** @class */ (function (_super) {
6620
6758
  !this.checkCondition(sqlString, matchValue)) {
6621
6759
  matchValue = this.combineSingleQuoteString(sqlString, matchValue);
6622
6760
  }
6623
- // end
6624
6761
  this.parser.push(['String', matchValue]);
6625
6762
  return matchValue.length;
6626
6763
  }
6627
- // Double String
6628
6764
  var doubleString = this.getDoubleQuoteString(sqlString);
6629
6765
  if (doubleString !== '') {
6630
6766
  matchValue = doubleString;
6631
6767
  this.parser.push(['DoubleString', matchValue]);
6632
6768
  return matchValue.length;
6633
6769
  }
6634
- //Number
6635
6770
  if (/^\d*\.?\d+/.exec(sqlString)) {
6636
6771
  matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
6637
6772
  this.parser.push(['Number', matchValue]);
6638
6773
  return matchValue.length;
6639
6774
  }
6640
- //Negative Number
6641
6775
  if (/^-?\d*\.?\d+/.exec(sqlString)) {
6642
6776
  matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
6643
6777
  this.parser.push(['Number', matchValue]);
@@ -6805,7 +6939,7 @@ var QueryBuilder = /** @class */ (function (_super) {
6805
6939
  fieldName += this.separator;
6806
6940
  }
6807
6941
  }
6808
- return this.getColumn(fieldName).label;
6942
+ return this.getColumn(fieldName) ? this.getColumn(fieldName).label : '';
6809
6943
  };
6810
6944
  QueryBuilder.prototype.processParser = function (parser, rules, levelColl, sqlLocale) {
6811
6945
  var j;
@@ -7037,12 +7171,16 @@ var QueryBuilder = /** @class */ (function (_super) {
7037
7171
  }
7038
7172
  }
7039
7173
  if (this.enableSeparateConnector) {
7040
- this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7041
- 'value': getRule.value, 'condition': getRule.condition }], groupId);
7174
+ this.addRules([{
7175
+ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7176
+ 'value': getRule.value, 'condition': getRule.condition
7177
+ }], groupId);
7042
7178
  }
7043
7179
  else {
7044
- this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7045
- 'value': getRule.value }], groupId);
7180
+ this.addRules([{
7181
+ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
7182
+ 'value': getRule.value
7183
+ }], groupId);
7046
7184
  }
7047
7185
  this.ruleIndex = -1;
7048
7186
  };
@@ -7217,115 +7355,65 @@ var QueryBuilder = /** @class */ (function (_super) {
7217
7355
  this.disableRuleControls(target, groupElem, isDisabled);
7218
7356
  };
7219
7357
  QueryBuilder.prototype.disableRuleControls = function (target, groupElem, isDisabled) {
7220
- var ddlElement = groupElem.querySelectorAll('.e-control.e-dropdownlist');
7221
- var numericElement = groupElem.querySelectorAll('.e-control.e-numerictextbox');
7222
- var textElement = groupElem.querySelectorAll('.e-control.e-textbox');
7223
- var dateElement = groupElem.querySelectorAll('.e-control.e-datepicker');
7224
- var checkboxElement = groupElem.querySelectorAll('.e-control.e-checkbox');
7225
- var radioBtnElement = groupElem.querySelectorAll('.e-control.e-radio');
7226
- var multiSelectElement = groupElem.querySelectorAll('.e-control.e-multiselect');
7227
- var deleteElem = groupElem.querySelectorAll('.e-rule-delete');
7228
- var lockElem = groupElem.querySelectorAll('.e-lock-rule');
7229
- var cloneElem = groupElem.querySelectorAll('.e-clone-rule');
7230
- var ruleElem = groupElem.querySelectorAll('.e-rule-container');
7231
- for (var i = 0; i < deleteElem.length; i++) {
7358
+ var disableComponents = function (elements, componentGetter, isDisabled) {
7359
+ elements.forEach(function (element) {
7360
+ var component = componentGetter(element);
7361
+ if ('enabled' in component) {
7362
+ component.enabled = !isDisabled;
7363
+ }
7364
+ else if ('disabled' in component) {
7365
+ component.disabled = isDisabled;
7366
+ }
7367
+ });
7368
+ };
7369
+ var elements = {
7370
+ ddl: groupElem.querySelectorAll('.e-control.e-dropdownlist'),
7371
+ numeric: groupElem.querySelectorAll('.e-control.e-numerictextbox'),
7372
+ text: groupElem.querySelectorAll('.e-control.e-textbox'),
7373
+ date: groupElem.querySelectorAll('.e-control.e-datepicker'),
7374
+ checkbox: groupElem.querySelectorAll('.e-control.e-checkbox'),
7375
+ radio: groupElem.querySelectorAll('.e-control.e-radio'),
7376
+ multiSelect: groupElem.querySelectorAll('.e-control.e-multiselect'),
7377
+ deleteElem: groupElem.querySelectorAll('.e-rule-delete'),
7378
+ lockElem: groupElem.querySelectorAll('.e-lock-rule'),
7379
+ cloneElem: groupElem.querySelectorAll('.e-clone-rule'),
7380
+ ruleElem: groupElem.querySelectorAll('.e-rule-container')
7381
+ };
7382
+ elements.deleteElem.forEach(function (elem, i) {
7232
7383
  if (isDisabled) {
7233
- if (ruleElem[i] && ruleElem[i].classList.contains('e-disable')) {
7234
- ruleElem[i].classList.add('e-disable');
7384
+ if (elements.ruleElem[i] && elements.ruleElem[i].classList.contains('e-disable')) {
7385
+ elements.ruleElem[i].classList.add('e-disable');
7235
7386
  }
7236
- deleteElem[i].disabled = true;
7237
- if (cloneElem[i]) {
7238
- cloneElem[i].disabled = true;
7387
+ elements.deleteElem[i].disabled = true;
7388
+ if (elements.cloneElem[i]) {
7389
+ elements.cloneElem[i].disabled = true;
7239
7390
  }
7240
- if (lockElem[i] !== target) {
7241
- lockElem[i].disabled = true;
7242
- lockElem[i].children[0].classList.remove('e-unlock');
7243
- lockElem[i].children[0].classList.add('e-lock');
7391
+ if (elements.lockElem[i] !== target) {
7392
+ elements.lockElem[i].disabled = true;
7393
+ elements.lockElem[i].children[0].classList.remove('e-unlock');
7394
+ elements.lockElem[i].children[0].classList.add('e-lock');
7244
7395
  }
7245
7396
  }
7246
7397
  else {
7247
- if (ruleElem[i]) {
7248
- ruleElem[i].classList.remove('e-disable');
7398
+ if (elements.ruleElem[i]) {
7399
+ elements.ruleElem[i].classList.remove('e-disable');
7249
7400
  }
7250
- if (cloneElem[i]) {
7251
- cloneElem[i].disabled = false;
7401
+ if (elements.cloneElem[i]) {
7402
+ elements.cloneElem[i].disabled = false;
7252
7403
  }
7253
- deleteElem[i].disabled = false;
7254
- lockElem[i].disabled = false;
7255
- lockElem[i].children[0].classList.remove('e-lock');
7256
- lockElem[i].children[0].classList.add('e-unlock');
7404
+ elements.deleteElem[i].disabled = false;
7405
+ elements.lockElem[i].disabled = false;
7406
+ elements.lockElem[i].children[0].classList.remove('e-lock');
7407
+ elements.lockElem[i].children[0].classList.add('e-unlock');
7257
7408
  }
7258
- }
7259
- var dropDownObj;
7260
- var numericObj;
7261
- var textObj;
7262
- var dateObj;
7263
- var checkBoxObj;
7264
- var radioBtnObj;
7265
- var multiSelectObj;
7266
- for (var i = 0; i < ddlElement.length; i++) {
7267
- dropDownObj = getComponent(ddlElement[i], 'dropdownlist');
7268
- if (isDisabled) {
7269
- dropDownObj.enabled = false;
7270
- }
7271
- else {
7272
- dropDownObj.enabled = true;
7273
- }
7274
- }
7275
- for (var i = 0; i < numericElement.length; i++) {
7276
- numericObj = getComponent(numericElement[i], 'numerictextbox');
7277
- if (isDisabled) {
7278
- numericObj.enabled = false;
7279
- }
7280
- else {
7281
- numericObj.enabled = true;
7282
- }
7283
- }
7284
- for (var i = 0; i < textElement.length; i++) {
7285
- textObj = getComponent(textElement[i], 'textbox');
7286
- if (isDisabled) {
7287
- textObj.enabled = false;
7288
- }
7289
- else {
7290
- textObj.enabled = true;
7291
- }
7292
- }
7293
- for (var i = 0; i < dateElement.length; i++) {
7294
- dateObj = getComponent(dateElement[i], 'datepicker');
7295
- if (isDisabled) {
7296
- dateObj.enabled = false;
7297
- }
7298
- else {
7299
- dateObj.enabled = true;
7300
- }
7301
- }
7302
- for (var i = 0; i < checkboxElement.length; i++) {
7303
- checkBoxObj = getComponent(checkboxElement[i], 'checkbox');
7304
- if (isDisabled) {
7305
- checkBoxObj.disabled = true;
7306
- }
7307
- else {
7308
- checkBoxObj.disabled = false;
7309
- }
7310
- }
7311
- for (var i = 0; i < radioBtnElement.length; i++) {
7312
- radioBtnObj = getComponent(radioBtnElement[i], 'radio');
7313
- if (isDisabled) {
7314
- radioBtnObj.disabled = true;
7315
- }
7316
- else {
7317
- radioBtnObj.disabled = false;
7318
- }
7319
- }
7320
- for (var i = 0; i < multiSelectElement.length; i++) {
7321
- multiSelectObj = getComponent(multiSelectElement[i], 'multiselect');
7322
- if (isDisabled) {
7323
- multiSelectObj.enabled = false;
7324
- }
7325
- else {
7326
- multiSelectObj.enabled = true;
7327
- }
7328
- }
7409
+ });
7410
+ disableComponents(elements.ddl, function (elem) { return getComponent(elem, 'dropdownlist'); }, isDisabled);
7411
+ disableComponents(elements.numeric, function (elem) { return getComponent(elem, 'numerictextbox'); }, isDisabled);
7412
+ disableComponents(elements.text, function (elem) { return getComponent(elem, 'textbox'); }, isDisabled);
7413
+ disableComponents(elements.date, function (elem) { return getComponent(elem, 'datepicker'); }, isDisabled);
7414
+ disableComponents(elements.checkbox, function (elem) { return getComponent(elem, 'checkbox'); }, isDisabled);
7415
+ disableComponents(elements.radio, function (elem) { return getComponent(elem, 'radio'); }, isDisabled);
7416
+ disableComponents(elements.multiSelect, function (elem) { return getComponent(elem, 'multiselect'); }, isDisabled);
7329
7417
  };
7330
7418
  __decorate([
7331
7419
  Event()