@syncfusion/ej2-querybuilder 20.1.48 → 20.1.59

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/ej2-querybuilder.umd.min.js +2 -2
  3. package/dist/ej2-querybuilder.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-querybuilder.es2015.js +76 -26
  5. package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
  6. package/dist/es6/ej2-querybuilder.es5.js +72 -22
  7. package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
  8. package/dist/global/ej2-querybuilder.min.js +2 -2
  9. package/dist/global/ej2-querybuilder.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +11 -11
  12. package/src/query-builder/query-builder.d.ts +2 -0
  13. package/src/query-builder/query-builder.js +72 -22
  14. package/styles/bootstrap-dark.css +31 -214
  15. package/styles/bootstrap.css +31 -214
  16. package/styles/bootstrap4.css +32 -221
  17. package/styles/bootstrap5-dark.css +32 -213
  18. package/styles/bootstrap5.css +32 -213
  19. package/styles/fabric-dark.css +31 -210
  20. package/styles/fabric.css +31 -210
  21. package/styles/fluent-dark.css +31 -212
  22. package/styles/fluent.css +31 -212
  23. package/styles/highcontrast-light.css +32 -252
  24. package/styles/highcontrast.css +32 -252
  25. package/styles/material-dark.css +27 -199
  26. package/styles/material.css +27 -199
  27. package/styles/query-builder/bootstrap-dark.css +31 -214
  28. package/styles/query-builder/bootstrap.css +31 -214
  29. package/styles/query-builder/bootstrap4.css +32 -221
  30. package/styles/query-builder/bootstrap5-dark.css +32 -213
  31. package/styles/query-builder/bootstrap5.css +32 -213
  32. package/styles/query-builder/fabric-dark.css +31 -210
  33. package/styles/query-builder/fabric.css +31 -210
  34. package/styles/query-builder/fluent-dark.css +31 -212
  35. package/styles/query-builder/fluent.css +31 -212
  36. package/styles/query-builder/highcontrast-light.css +32 -252
  37. package/styles/query-builder/highcontrast.css +32 -252
  38. package/styles/query-builder/material-dark.css +27 -199
  39. package/styles/query-builder/material.css +27 -199
  40. package/styles/query-builder/tailwind-dark.css +28 -200
  41. package/styles/query-builder/tailwind.css +28 -200
  42. package/styles/tailwind-dark.css +28 -200
  43. package/styles/tailwind.css +28 -200
@@ -283,7 +283,7 @@ let QueryBuilder = class QueryBuilder extends Component {
283
283
  }
284
284
  updateSubFieldsFromColumns(col, field) {
285
285
  for (let i = 0; i < col.length; i++) {
286
- if (this.separator != '' && col[i].field.indexOf(this.separator) < 0) {
286
+ if (this.separator !== '' && col[i].field.indexOf(this.separator) < 0) {
287
287
  col[i].field = field ? field + this.separator + col[i].field : col[i].field;
288
288
  }
289
289
  if (col[i].operators) {
@@ -505,7 +505,7 @@ let QueryBuilder = class QueryBuilder extends Component {
505
505
  let template;
506
506
  args.fields = this.fields;
507
507
  args.columns = this.columns;
508
- if (rule.field === "") {
508
+ if (rule.field === '') {
509
509
  rule.field = column.field;
510
510
  }
511
511
  args.operators = this.getOperators(rule.field);
@@ -631,7 +631,6 @@ let QueryBuilder = class QueryBuilder extends Component {
631
631
  }
632
632
  }
633
633
  else {
634
- let dropdowntree;
635
634
  let ddlField;
636
635
  const ddlValue = this.isImportRules ? rule.field : rule.field;
637
636
  ddlField = {
@@ -645,11 +644,13 @@ let QueryBuilder = class QueryBuilder extends Component {
645
644
  if (this.fieldModel) {
646
645
  ddlField = Object.assign({}, ddlField, this.fieldModel);
647
646
  }
648
- dropdowntree = new DropDownTree(ddlField);
647
+ const dropdowntree = new DropDownTree(ddlField);
649
648
  dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
650
649
  if (!isNullOrUndefined(dropdowntree.value)) {
651
- dropdowntree.element.value = dropdowntree.value[0];
650
+ const value = this.getLabelFromColumn(dropdowntree.value[0]);
651
+ dropdowntree.element.value = value;
652
652
  }
653
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
653
654
  const ddlVal = this.isImportRules ?
654
655
  this.GetRootColumnName(rule.field) : dropdowntree.value;
655
656
  this.selectedColumn = this.getColumn(ddlVal);
@@ -684,17 +685,20 @@ let QueryBuilder = class QueryBuilder extends Component {
684
685
  else {
685
686
  groupElem = closest(target, '.e-group-container');
686
687
  rules = this.getParentGroup(groupElem);
688
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
687
689
  const custom = rule.custom;
688
690
  if (Object.keys(rule).length) {
689
691
  rules.rules.push({
690
692
  'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value
691
693
  });
692
694
  if (custom) {
695
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
693
696
  rules.rules[rules.rules.length - 1].custom = custom;
694
697
  }
695
698
  }
696
699
  else {
697
700
  if (custom) {
701
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
698
702
  newRule.custom = custom;
699
703
  }
700
704
  rules.rules.push(newRule);
@@ -761,17 +765,17 @@ let QueryBuilder = class QueryBuilder extends Component {
761
765
  }
762
766
  }
763
767
  else {
764
- dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field input.e-control'), 'dropdownlist');
768
+ dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field .e-control'), 'dropdownlist');
765
769
  this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
766
770
  validateRule = !isNullOrUndefined(dropDownObj.index) && this.selectedColumn.validation;
767
771
  }
768
- fieldElem = tempElem.querySelector('.e-rule-field input.e-control');
772
+ fieldElem = tempElem.querySelector('.e-rule-field .e-control');
769
773
  if (validateRule && validateRule.isRequired) {
770
774
  while (indexElem && indexElem.previousElementSibling !== null) {
771
775
  indexElem = indexElem.previousElementSibling;
772
776
  index++;
773
777
  }
774
- fieldElem = tempElem.querySelector('.e-rule-operator input.e-control');
778
+ fieldElem = tempElem.querySelector('.e-rule-operator .e-control');
775
779
  if (!rule.rules[index].operator) {
776
780
  if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {
777
781
  this.renderToolTip(fieldElem.parentElement);
@@ -784,7 +788,7 @@ let QueryBuilder = class QueryBuilder extends Component {
784
788
  if (excludeOprs.indexOf(rule.rules[index].operator) < 0 && (isNullOrUndefined(rule.rules[index].value) &&
785
789
  rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
786
790
  (rule.rules[index].value instanceof Array && valArray.length < 1)) {
787
- const valElem = tempElem.querySelectorAll('.e-rule-value input.e-control');
791
+ const valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
788
792
  isValid = false;
789
793
  for (let j = 0, jLen = valElem.length; j < jLen; j++) {
790
794
  const element = valElem[j];
@@ -1306,7 +1310,8 @@ let QueryBuilder = class QueryBuilder extends Component {
1306
1310
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1307
1311
  ddt.value = args.value[0];
1308
1312
  ddt.dataBind();
1309
- ddtElem.value = args.value[0];
1313
+ const result = this.getLabelFromColumn(args.value[0]);
1314
+ ddtElem.value = result;
1310
1315
  }
1311
1316
  }
1312
1317
  }
@@ -1336,7 +1341,7 @@ let QueryBuilder = class QueryBuilder extends Component {
1336
1341
  }
1337
1342
  changeRule(rule, ddlArgs) {
1338
1343
  if (!ddlArgs.itemData) {
1339
- if (this.fieldMode === "DropdownTree") {
1344
+ if (this.fieldMode === 'DropdownTree') {
1340
1345
  const ddt = getComponent(ddlArgs.element, 'dropdowntree');
1341
1346
  if (ddt.value == null) {
1342
1347
  return;
@@ -1359,6 +1364,7 @@ let QueryBuilder = class QueryBuilder extends Component {
1359
1364
  }
1360
1365
  changeFilter(flt, dl, grID, rl, tmpRl, dArg) {
1361
1366
  if (flt) {
1367
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1362
1368
  let ddlValue;
1363
1369
  if (this.fieldMode === 'DropdownTree') {
1364
1370
  ddlValue = (dl.value[0]);
@@ -1385,7 +1391,9 @@ let QueryBuilder = class QueryBuilder extends Component {
1385
1391
  this.changeOperator(flt, operatorElem, dl, grID, rl, tmpRl, dArg);
1386
1392
  }
1387
1393
  }
1388
- changeOperator(flt, opr, dl, grID, rl, tmpRl, dArg) {
1394
+ changeOperator(
1395
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1396
+ flt, opr, dl, grID, rl, tmpRl, dArg) {
1389
1397
  let ruleElem;
1390
1398
  let ruleID;
1391
1399
  let eventsArgs;
@@ -1766,14 +1774,15 @@ let QueryBuilder = class QueryBuilder extends Component {
1766
1774
  const original = {};
1767
1775
  const result = [];
1768
1776
  let nest = [];
1769
- let value = "";
1770
- let isNested = field.indexOf(this.separator);
1777
+ let value = '';
1778
+ const isNested = field.indexOf(this.separator);
1771
1779
  for (let i = 0, iLen = dataSource.length; i < iLen; i++) {
1772
1780
  if (isNested === 0) {
1773
1781
  value = dataSource[i][field];
1774
1782
  }
1775
1783
  else {
1776
1784
  nest = field.split(this.separator);
1785
+ // eslint-disable-next-line @typescript-eslint/tslint/config
1777
1786
  nest.forEach(element => {
1778
1787
  if (value) {
1779
1788
  value = value[element];
@@ -1787,7 +1796,7 @@ let QueryBuilder = class QueryBuilder extends Component {
1787
1796
  value = dataSource[i][field].toString();
1788
1797
  }
1789
1798
  const data = {};
1790
- if (!(value in original) && !isNullOrUndefined(value)) {
1799
+ if (!(value in original)) {
1791
1800
  original[value] = 1;
1792
1801
  if (isNested === 0) {
1793
1802
  data[field] = value;
@@ -1816,9 +1825,9 @@ let QueryBuilder = class QueryBuilder extends Component {
1816
1825
  isValues = true;
1817
1826
  }
1818
1827
  let fieldValue = this.selectedRule.field;
1819
- let isNested = this.selectedRule.field.indexOf(this.separator);
1820
- if (isNested !== 0 && this.fieldMode !== "DropdownTree") {
1821
- let nest = this.selectedRule.field.split(this.separator);
1828
+ const isNested = this.selectedRule.field.indexOf(this.separator);
1829
+ if (isNested !== 0 && this.fieldMode !== 'DropdownTree') {
1830
+ const nest = this.selectedRule.field.split(this.separator);
1822
1831
  fieldValue = nest[nest.length - 1];
1823
1832
  }
1824
1833
  let multiSelectValue;
@@ -1928,10 +1937,10 @@ let QueryBuilder = class QueryBuilder extends Component {
1928
1937
  }
1929
1938
  getItemData(parentId) {
1930
1939
  let fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');
1931
- if (this.fieldMode === "DropdownTree") {
1940
+ if (this.fieldMode === 'DropdownTree') {
1932
1941
  fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');
1933
1942
  }
1934
- return this.fieldMode === "DropdownTree" ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);
1943
+ return this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);
1935
1944
  }
1936
1945
  setDefaultValue(parentId, isArryValue, isNumber) {
1937
1946
  const itemData = this.getItemData(parentId);
@@ -2262,6 +2271,7 @@ let QueryBuilder = class QueryBuilder extends Component {
2262
2271
  }
2263
2272
  getPreviousItemData(prevItemData, column) {
2264
2273
  if (this.isFieldClose && prevItemData) {
2274
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2265
2275
  prevItemData = this.getColumn(prevItemData.value);
2266
2276
  }
2267
2277
  if (column.template && prevItemData && Object.keys(prevItemData).length < 4) {
@@ -2274,7 +2284,8 @@ let QueryBuilder = class QueryBuilder extends Component {
2274
2284
  const filtElem = subFldElem.getElementsByTagName('input')[0];
2275
2285
  const filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')
2276
2286
  : getComponent(filtElem, 'dropdownlist');
2277
- let column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])
2287
+ const column = this.fieldMode === 'DropdownTree' ? this.getColumn(filtObj.value[0])
2288
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2278
2289
  : this.getColumn(filtObj.value);
2279
2290
  this.selectedRule = column;
2280
2291
  if (isRender) {
@@ -2518,7 +2529,9 @@ let QueryBuilder = class QueryBuilder extends Component {
2518
2529
  }
2519
2530
  dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :
2520
2531
  getComponent(target, 'dropdownlist');
2532
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2521
2533
  const column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])
2534
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2522
2535
  : this.getColumn(dropDownObj.value);
2523
2536
  if (!this.isImportRules && rule.rules[index].field && rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
2524
2537
  if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)
@@ -2545,8 +2558,8 @@ let QueryBuilder = class QueryBuilder extends Component {
2545
2558
  if (elementCln.length < 1) {
2546
2559
  elementCln = valueContainer.querySelectorAll('.e-template');
2547
2560
  }
2561
+ eventsArgs = { groupID: groupID, ruleID: ruleID, value: rule.rules[index].field, type: 'field' };
2548
2562
  for (let i = 0; i < elementCln.length; i++) {
2549
- eventsArgs = { groupID: groupID, ruleID: ruleID, value: rule.rules[index].field, type: 'field' };
2550
2563
  if (operator.indexOf('null') > -1 || operator.indexOf('empty') > -1) {
2551
2564
  rule.rules[index].value = null;
2552
2565
  continue;
@@ -3451,11 +3464,18 @@ let QueryBuilder = class QueryBuilder extends Component {
3451
3464
  }
3452
3465
  }
3453
3466
  const isTemplateRendered = clnruleElem.querySelector('.e-template-value');
3467
+ // eslint-disable
3454
3468
  try {
3455
3469
  detach(clnruleElem);
3456
3470
  }
3457
3471
  catch (err) {
3472
+ // eslint-disable-next-line no-ex-assign
3473
+ err = [];
3474
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3475
+ const error = 'error';
3476
+ err[error] = error;
3458
3477
  }
3478
+ // eslint-enable
3459
3479
  if (column && column.ruleTemplate) {
3460
3480
  this.clearQBTemplate([clnruleElem.id]);
3461
3481
  }
@@ -3865,8 +3885,8 @@ let QueryBuilder = class QueryBuilder extends Component {
3865
3885
  }
3866
3886
  }
3867
3887
  if (this.dataSource instanceof DataManager) {
3868
- if (!isNullOrUndefined(pred) && (pred.operator === "isnull" || pred.operator === "notnull")) {
3869
- pred.operator = pred.operator === "isnull" ? "equal" : "notequal";
3888
+ if (!isNullOrUndefined(pred) && (pred.operator === 'isnull' || pred.operator === 'notnull')) {
3889
+ pred.operator = pred.operator === 'isnull' ? 'equal' : 'notequal';
3870
3890
  }
3871
3891
  }
3872
3892
  return pred;
@@ -4372,7 +4392,7 @@ let QueryBuilder = class QueryBuilder extends Component {
4372
4392
  }
4373
4393
  queryStr += rule.field + ' ' + this.operators[rule.operator] + ' ' + valueStr;
4374
4394
  }
4375
- if (rule.condition && rule.condition != '') {
4395
+ if (rule.condition && rule.condition !== '') {
4376
4396
  condition = rule.condition;
4377
4397
  }
4378
4398
  }
@@ -4513,7 +4533,6 @@ let QueryBuilder = class QueryBuilder extends Component {
4513
4533
  this.parser.push(['Literal', matchValue]);
4514
4534
  return matchValue.length + 2;
4515
4535
  }
4516
- // eslint-disable-next-line
4517
4536
  if (this.checkNumberLiteral(sqlString)) {
4518
4537
  matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
4519
4538
  this.parser.push(['Literal', matchValue]);
@@ -4608,6 +4627,37 @@ let QueryBuilder = class QueryBuilder extends Component {
4608
4627
  const columnData = this.getColumn(rules.field);
4609
4628
  return columnData.type;
4610
4629
  }
4630
+ getLabelFromColumn(field) {
4631
+ let label = '';
4632
+ let l = 0;
4633
+ if (this.separator !== '') {
4634
+ const fieldColl = field.split(this.separator);
4635
+ for (let i = 0; i < fieldColl.length; i++) {
4636
+ label += this.getLabelFromField(fieldColl, i + 1);
4637
+ l++;
4638
+ if (l < fieldColl.length) {
4639
+ label += this.separator;
4640
+ }
4641
+ }
4642
+ return label;
4643
+ }
4644
+ else {
4645
+ const labelItem = this.getColumn(field).label;
4646
+ return labelItem;
4647
+ }
4648
+ }
4649
+ getLabelFromField(field, startIdx) {
4650
+ let fieldName = '';
4651
+ let j = 0;
4652
+ for (let k = 0; k < startIdx; k++) {
4653
+ fieldName += field[k];
4654
+ j++;
4655
+ if (j < startIdx) {
4656
+ fieldName += this.separator;
4657
+ }
4658
+ }
4659
+ return this.getColumn(fieldName).label;
4660
+ }
4611
4661
  processParser(parser, rules, levelColl) {
4612
4662
  let j;
4613
4663
  let jLen;