@syncfusion/ej2-querybuilder 20.3.59 → 20.4.38

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.
@@ -744,7 +744,7 @@ export declare class QueryBuilder extends Component<HTMLDivElement> implements I
744
744
  *
745
745
  * @param {RuleModel} rule - 'rule' to be passed to get the sql.
746
746
  * @param {boolean} allowEscape - Set `true` if it exclude the escape character.
747
- * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
747
+ * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
748
748
  * @returns {object} - Sql query from rules.
749
749
  */
750
750
  getSqlFromRules(rule?: RuleModel, allowEscape?: boolean, sqlLocale?: boolean): string;
@@ -392,7 +392,7 @@ var QueryBuilder = /** @class */ (function (_super) {
392
392
  if (sqlIdx > -1) {
393
393
  var operator_1 = column.operators[j];
394
394
  var operColl = Object.keys(operator_1);
395
- var values = operColl.map(function (key) { return operator_1[key]; }).join(',').split(',');
395
+ var values = operColl.map(function (key) { return operator_1["" + key]; }).join(',').split(',');
396
396
  var valueIdx = operColl.indexOf('value');
397
397
  this_1.operators[values[valueIdx]] = values[sqlIdx];
398
398
  }
@@ -789,6 +789,7 @@ var QueryBuilder = /** @class */ (function (_super) {
789
789
  var tooltip = new Tooltip({ content: this.l10n.getConstant('ValidationMessage'),
790
790
  position: 'BottomCenter', cssClass: 'e-querybuilder-error' });
791
791
  tooltip.appendTo(element);
792
+ // eslint-disable-next-line
792
793
  tooltip.open(element);
793
794
  };
794
795
  /**
@@ -846,8 +847,9 @@ var QueryBuilder = /** @class */ (function (_super) {
846
847
  if (rule.rules[index].value instanceof Array) {
847
848
  valArray = rule.rules[index].value;
848
849
  }
849
- if (excludeOprs.indexOf(rule.rules[index].operator) < 0 && (isNullOrUndefined(rule.rules[index].value) &&
850
- rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
850
+ if (excludeOprs.indexOf(rule.rules[index].operator) < 0 &&
851
+ (isNullOrUndefined(rule.rules[index].value) &&
852
+ rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
851
853
  (rule.rules[index].value instanceof Array && valArray.length < 1)) {
852
854
  var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
853
855
  isValid = false;
@@ -925,7 +927,7 @@ var QueryBuilder = /** @class */ (function (_super) {
925
927
  groupElem.appendChild(grpBodyElem);
926
928
  // create button group in OR and AND process
927
929
  if (!this.headerTemplate) {
928
- glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group' } });
930
+ glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group', role: 'group' } });
929
931
  if (this.enableNotCondition) {
930
932
  inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
931
933
  glueElem.appendChild(inputElem);
@@ -1809,29 +1811,29 @@ var QueryBuilder = /** @class */ (function (_super) {
1809
1811
  for (var j = 0, jLen = fieldColl.length; j < jLen; j++) {
1810
1812
  fieldStr = fieldColl[j];
1811
1813
  if (fieldColl.length === (j + 1)) {
1812
- value = dataObj[fieldStr];
1813
- if (Number(dataObj[fieldStr]) === dataObj[fieldStr] && dataObj[fieldStr] % 1 !== 0) {
1814
- value = dataObj[fieldStr].toString();
1814
+ value = dataObj["" + fieldStr];
1815
+ if (Number(dataObj["" + fieldStr]) === dataObj["" + fieldStr] && dataObj["" + fieldStr] % 1 !== 0) {
1816
+ value = dataObj["" + fieldStr].toString();
1815
1817
  }
1816
1818
  }
1817
1819
  else {
1818
- dataObj = dataObj[fieldStr];
1820
+ dataObj = dataObj["" + fieldStr];
1819
1821
  }
1820
1822
  }
1821
1823
  }
1822
1824
  else {
1823
- value = dataSource[i][field];
1824
- if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
1825
- value = dataSource[i][field].toString();
1825
+ value = dataSource[i]["" + field];
1826
+ if (Number(dataSource[i]["" + field]) === dataSource[i]["" + field] && dataSource[i]["" + field] % 1 !== 0) {
1827
+ value = dataSource[i]["" + field].toString();
1826
1828
  }
1827
1829
  }
1828
1830
  if (!(value in original)) {
1829
- original[value] = 1;
1831
+ original["" + value] = 1;
1830
1832
  if (fieldColl.length > 1) {
1831
1833
  this.createNestedObject(data, fieldColl, value);
1832
1834
  }
1833
1835
  else {
1834
- data[field] = value;
1836
+ data["" + field] = value;
1835
1837
  }
1836
1838
  result.push(data);
1837
1839
  }
@@ -1845,9 +1847,9 @@ var QueryBuilder = /** @class */ (function (_super) {
1845
1847
  for (var k = 0; k < lastIndex; ++k) {
1846
1848
  key = fieldColl[k];
1847
1849
  if (!(key in obj)) {
1848
- obj[key] = {};
1850
+ obj["" + key] = {};
1849
1851
  }
1850
- obj = obj[key];
1852
+ obj = obj["" + key];
1851
1853
  }
1852
1854
  obj[fieldColl[lastIndex]] = value;
1853
1855
  };
@@ -1859,28 +1861,28 @@ var QueryBuilder = /** @class */ (function (_super) {
1859
1861
  var isNested = field.indexOf(this.separator);
1860
1862
  var _loop_2 = function (i, iLen) {
1861
1863
  if (isNested === 0) {
1862
- value = dataSource[i][field];
1864
+ value = dataSource[i]["" + field];
1863
1865
  }
1864
1866
  else {
1865
1867
  nest = field.split(this_2.separator);
1866
1868
  // eslint-disable-next-line @typescript-eslint/tslint/config
1867
1869
  nest.forEach(function (element) {
1868
1870
  if (value) {
1869
- value = value[element];
1871
+ value = value["" + element];
1870
1872
  }
1871
1873
  else {
1872
- value = dataSource[i][element];
1874
+ value = dataSource[i]["" + element];
1873
1875
  }
1874
1876
  });
1875
1877
  }
1876
- if (Number(dataSource[i][field]) === dataSource[i][field] && dataSource[i][field] % 1 !== 0) {
1877
- value = dataSource[i][field].toString();
1878
+ if (Number(dataSource[i]["" + field]) === dataSource[i]["" + field] && dataSource[i]["" + field] % 1 !== 0) {
1879
+ value = dataSource[i]["" + field].toString();
1878
1880
  }
1879
1881
  var data = {};
1880
1882
  if (!(value in original)) {
1881
- original[value] = 1;
1883
+ original["" + value] = 1;
1882
1884
  if (isNested === 0) {
1883
- data[field] = value;
1885
+ data["" + field] = value;
1884
1886
  }
1885
1887
  else {
1886
1888
  data[nest[nest.length - 1]] = value;
@@ -2628,7 +2630,8 @@ var QueryBuilder = /** @class */ (function (_super) {
2628
2630
  var column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])
2629
2631
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2630
2632
  : this.getColumn(dropDownObj.value);
2631
- if (!this.isImportRules && rule.rules[index].field && rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
2633
+ if (!this.isImportRules && rule.rules[index].field &&
2634
+ rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
2632
2635
  if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)
2633
2636
  || (operator.indexOf('empty') > -1)) {
2634
2637
  rule.rules[index].value = '';
@@ -3423,7 +3426,7 @@ var QueryBuilder = /** @class */ (function (_super) {
3423
3426
  EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
3424
3427
  };
3425
3428
  QueryBuilder.prototype.getParentGroup = function (target, isParent) {
3426
- var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl[target];
3429
+ var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
3427
3430
  var len = isParent ? groupLevel.length - 1 : groupLevel.length;
3428
3431
  var rule = this.rule;
3429
3432
  for (var i = 0; i < len; i++) {
@@ -3585,6 +3588,7 @@ var QueryBuilder = /** @class */ (function (_super) {
3585
3588
  err = [];
3586
3589
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3587
3590
  var error = 'error';
3591
+ // eslint-disable-next-line
3588
3592
  err[error] = error;
3589
3593
  }
3590
3594
  // eslint-enable
@@ -3746,6 +3750,9 @@ var QueryBuilder = /** @class */ (function (_super) {
3746
3750
  else {
3747
3751
  rule = { 'condition': rule.condition, 'rules': rule.rules };
3748
3752
  }
3753
+ if (rule.rules.length === 0) {
3754
+ rule = {};
3755
+ }
3749
3756
  }
3750
3757
  }
3751
3758
  return rule;
@@ -3954,7 +3961,8 @@ var QueryBuilder = /** @class */ (function (_super) {
3954
3961
  if (i === 0) {
3955
3962
  if (isDateFilter || (oper.indexOf('in') > -1 || oper.indexOf('between') > -1 || oper.indexOf('null') > -1 ||
3956
3963
  oper.indexOf('empty') > -1) && oper.indexOf('contains') < 0) {
3957
- pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) : this.arrayPredicate(ruleColl[i]);
3964
+ pred = isDateFilter ? this.datePredicate(ruleColl[i], ruleValue) :
3965
+ this.arrayPredicate(ruleColl[i]);
3958
3966
  }
3959
3967
  else {
3960
3968
  var value = ruleValue;
@@ -4438,89 +4446,90 @@ var QueryBuilder = /** @class */ (function (_super) {
4438
4446
  queryStr += rulesNotCondition;
4439
4447
  }
4440
4448
  }
4441
- for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
4442
- if (rules.rules[j].rules) {
4443
- queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
4444
- }
4445
- else {
4446
- var rule = rules.rules[j];
4447
- var valueStr = '';
4448
- var ruleOpertor = void 0;
4449
- ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
4450
- if (rule.value instanceof Array) {
4451
- if (rule.operator.toString().indexOf('between') > -1) {
4452
- var ruleCondition = sqlLocale ? ' ' + this.l10n.getConstant('AND').toUpperCase() + ' ' : ' ' + 'AND' + ' ';
4453
- if (rule.type === 'date' && !this.isDateFunction(rule.value[0])) {
4454
- valueStr += '"' + rule.value[0] + '"' + ruleCondition + '"' + rule.value[1] + '"';
4449
+ if (rules.rules) {
4450
+ for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
4451
+ if (rules.rules[j].rules) {
4452
+ queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
4453
+ }
4454
+ else {
4455
+ var rule = rules.rules[j];
4456
+ var valueStr = '';
4457
+ var ruleOpertor = sqlLocale ? this.sqlOperators[rule.operator] : this.operators[rule.operator];
4458
+ if (rule.value instanceof Array) {
4459
+ if (rule.operator.toString().indexOf('between') > -1) {
4460
+ var ruleCondition = sqlLocale ? ' ' + this.l10n.getConstant('AND').toUpperCase() + ' ' : ' ' + 'AND' + ' ';
4461
+ if (rule.type === 'date' && !this.isDateFunction(rule.value[0])) {
4462
+ valueStr += '"' + rule.value[0] + '"' + ruleCondition + '"' + rule.value[1] + '"';
4463
+ }
4464
+ else {
4465
+ valueStr += rule.value[0] + ruleCondition + rule.value[1];
4466
+ }
4455
4467
  }
4456
4468
  else {
4457
- valueStr += rule.value[0] + ruleCondition + rule.value[1];
4469
+ if (typeof rule.value[0] === 'string' && rule.value !== null) {
4470
+ valueStr += '("' + rule.value[0] + '"';
4471
+ for (var k = 1, kLen = rule.value.length; k < kLen; k++) {
4472
+ valueStr += ',"' + rule.value[k] + '"';
4473
+ }
4474
+ valueStr += ')';
4475
+ }
4476
+ else {
4477
+ valueStr += '(' + rule.value + ')';
4478
+ }
4458
4479
  }
4459
4480
  }
4460
4481
  else {
4461
- if (typeof rule.value[0] === 'string' && rule.value !== null) {
4462
- valueStr += '("' + rule.value[0] + '"';
4463
- for (var k = 1, kLen = rule.value.length; k < kLen; k++) {
4464
- valueStr += ',"' + rule.value[k] + '"';
4465
- }
4466
- valueStr += ')';
4482
+ if (rule.operator.toString().indexOf('startswith') > -1) {
4483
+ valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
4484
+ }
4485
+ else if (rule.operator.toString().indexOf('endswith') > -1) {
4486
+ valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
4487
+ }
4488
+ else if (rule.operator.toString().indexOf('contains') > -1) {
4489
+ valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
4467
4490
  }
4468
4491
  else {
4469
- valueStr += '(' + rule.value + ')';
4492
+ if (rule.type === 'number' || typeof rule.value === 'boolean' || rule.value === null) {
4493
+ valueStr += rule.value;
4494
+ }
4495
+ else {
4496
+ valueStr += '"' + rule.value + '"';
4497
+ }
4470
4498
  }
4471
4499
  }
4472
- }
4473
- else {
4474
- if (rule.operator.toString().indexOf('startswith') > -1) {
4475
- valueStr += rule.value ? '("' + rule.value + '%")' : '(' + rule.value + ')';
4476
- }
4477
- else if (rule.operator.toString().indexOf('endswith') > -1) {
4478
- valueStr += rule.value ? '("%' + rule.value + '")' : '(' + rule.value + ')';
4479
- }
4480
- else if (rule.operator.toString().indexOf('contains') > -1) {
4481
- valueStr += rule.value ? '("%' + rule.value + '%")' : '(' + rule.value + ')';
4482
- }
4483
- else {
4484
- if (rule.type === 'number' || typeof rule.value === 'boolean' || rule.value === null) {
4485
- valueStr += rule.value;
4500
+ if (rule.operator.toString().indexOf('null') > -1 || (rule.operator.toString().indexOf('empty') > -1)) {
4501
+ if (enableEscape) {
4502
+ rule.field = '`' + rule.field + '`';
4486
4503
  }
4487
4504
  else {
4488
- valueStr += '"' + rule.value + '"';
4505
+ if (rule.field.indexOf(' ') > -1) {
4506
+ rule.field = '"' + rule.field + '"';
4507
+ }
4489
4508
  }
4490
- }
4491
- }
4492
- if (rule.operator.toString().indexOf('null') > -1 || (rule.operator.toString().indexOf('empty') > -1)) {
4493
- if (enableEscape) {
4494
- rule.field = '`' + rule.field + '`';
4509
+ queryStr += rule.field + ' ' + ruleOpertor;
4495
4510
  }
4496
4511
  else {
4497
- if (rule.field.indexOf(' ') > -1) {
4498
- rule.field = '"' + rule.field + '"';
4512
+ if (enableEscape) {
4513
+ rule.field = '`' + rule.field + '`';
4499
4514
  }
4500
- }
4501
- queryStr += rule.field + ' ' + ruleOpertor;
4502
- }
4503
- else {
4504
- if (enableEscape) {
4505
- rule.field = '`' + rule.field + '`';
4506
- }
4507
- else {
4508
- if (rule.field.indexOf(' ') > -1) {
4509
- rule.field = '"' + rule.field + '"';
4515
+ else {
4516
+ if (rule.field.indexOf(' ') > -1) {
4517
+ rule.field = '"' + rule.field + '"';
4518
+ }
4510
4519
  }
4520
+ queryStr += rule.field + ' ' + ruleOpertor + ' ' + valueStr;
4521
+ }
4522
+ if (rule.condition && rule.condition !== '') {
4523
+ condition = rule.condition;
4511
4524
  }
4512
- queryStr += rule.field + ' ' + ruleOpertor + ' ' + valueStr;
4513
- }
4514
- if (rule.condition && rule.condition !== '') {
4515
- condition = rule.condition;
4516
4525
  }
4517
- }
4518
- if (j !== jLen - 1) {
4519
- if (condition === '') {
4520
- condition = rules.rules[j].condition;
4526
+ if (j !== jLen - 1) {
4527
+ if (condition === '') {
4528
+ condition = rules.rules[j].condition;
4529
+ }
4530
+ condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
4531
+ queryStr += ' ' + condition + ' ';
4521
4532
  }
4522
- condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
4523
- queryStr += ' ' + condition + ' ';
4524
4533
  }
4525
4534
  }
4526
4535
  if (!isRoot) {
@@ -4567,7 +4576,7 @@ var QueryBuilder = /** @class */ (function (_super) {
4567
4576
  *
4568
4577
  * @param {RuleModel} rule - 'rule' to be passed to get the sql.
4569
4578
  * @param {boolean} allowEscape - Set `true` if it exclude the escape character.
4570
- * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
4579
+ * @param {boolean} sqlLocale - Set `true` if Localization for Sql query.
4571
4580
  * @returns {object} - Sql query from rules.
4572
4581
  */
4573
4582
  QueryBuilder.prototype.getSqlFromRules = function (rule, allowEscape, sqlLocale) {
@@ -4611,6 +4620,7 @@ var QueryBuilder = /** @class */ (function (_super) {
4611
4620
  var matchValue;
4612
4621
  for (var i = 0, iLen = operators.length; i < iLen; i++) {
4613
4622
  regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
4623
+ // eslint-disable-next-line
4614
4624
  regex = new RegExp('^(' + operators[i] + ')' + regexStr, 'ig');
4615
4625
  if (regex.exec(sqlString)) {
4616
4626
  this.parser.push(['Operators', operators[i].toLowerCase()]);
@@ -4621,6 +4631,7 @@ var QueryBuilder = /** @class */ (function (_super) {
4621
4631
  if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
4622
4632
  for (var i = 0, iLen = conditions.length; i < iLen; i++) {
4623
4633
  regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
4634
+ // eslint-disable-next-line
4624
4635
  regex = new RegExp('^(' + conditions[i] + ')' + regexStr, 'ig');
4625
4636
  if (regex.exec(sqlString)) {
4626
4637
  this.parser.push(['Conditions', conditions[i].toLowerCase()]);
@@ -4630,6 +4641,7 @@ var QueryBuilder = /** @class */ (function (_super) {
4630
4641
  }
4631
4642
  for (var i = 0, iLen = subOp.length; i < iLen; i++) {
4632
4643
  regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
4644
+ // eslint-disable-next-line
4633
4645
  regex = new RegExp('^(' + subOp[i] + ')' + regexStr, 'ig');
4634
4646
  if (regex.exec(sqlString)) {
4635
4647
  this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
@@ -4673,30 +4685,39 @@ var QueryBuilder = /** @class */ (function (_super) {
4673
4685
  return matchValue.length + 2;
4674
4686
  }
4675
4687
  if (this.checkNumberLiteral(sqlString, sqlLocale)) {
4688
+ // eslint-disable-next-line
4676
4689
  matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
4677
4690
  this.parser.push(['Literal', matchValue]);
4678
4691
  return matchValue.length;
4679
4692
  }
4680
4693
  //String
4694
+ // eslint-disable-next-line
4681
4695
  if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
4696
+ // eslint-disable-next-line
4682
4697
  matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
4683
4698
  this.parser.push(['String', matchValue]);
4684
4699
  return matchValue.length;
4685
4700
  }
4686
4701
  //Double String
4702
+ // eslint-disable-next-line
4687
4703
  if (/^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)) {
4704
+ // eslint-disable-next-line
4688
4705
  matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
4689
4706
  this.parser.push(['DoubleString', matchValue]);
4690
4707
  return matchValue.length;
4691
4708
  }
4692
4709
  //Number
4710
+ // eslint-disable-next-line
4693
4711
  if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
4712
+ // eslint-disable-next-line
4694
4713
  matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
4695
4714
  this.parser.push(['Number', matchValue]);
4696
4715
  return matchValue.length;
4697
4716
  }
4698
4717
  //Negative Number
4718
+ // eslint-disable-next-line
4699
4719
  if (/^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
4720
+ // eslint-disable-next-line
4700
4721
  matchValue = /^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
4701
4722
  this.parser.push(['Number', matchValue]);
4702
4723
  return matchValue.length;
@@ -4722,6 +4743,7 @@ var QueryBuilder = /** @class */ (function (_super) {
4722
4743
  return true;
4723
4744
  }
4724
4745
  else {
4746
+ // eslint-disable-next-line
4725
4747
  if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
4726
4748
  var secParser = this.parser[this.parser.length - 2];
4727
4749
  var betweenParser = this.parser[this.parser.length - 3];
@@ -4779,7 +4801,7 @@ var QueryBuilder = /** @class */ (function (_super) {
4779
4801
  return 'equal';
4780
4802
  }
4781
4803
  }
4782
- return operators[operator];
4804
+ return operators["" + operator];
4783
4805
  };
4784
4806
  QueryBuilder.prototype.getTypeFromColumn = function (rules) {
4785
4807
  var columnData = this.getColumn(rules.field);