@syncfusion/ej2-querybuilder 20.1.47 → 20.1.55

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.
@@ -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,6 +505,9 @@ 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 === '') {
509
+ rule.field = column.field;
510
+ }
508
511
  args.operators = this.getOperators(rule.field);
509
512
  args.operatorFields = { text: 'key', value: 'value' };
510
513
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -628,7 +631,6 @@ let QueryBuilder = class QueryBuilder extends Component {
628
631
  }
629
632
  }
630
633
  else {
631
- let dropdowntree;
632
634
  let ddlField;
633
635
  const ddlValue = this.isImportRules ? rule.field : rule.field;
634
636
  ddlField = {
@@ -642,11 +644,13 @@ let QueryBuilder = class QueryBuilder extends Component {
642
644
  if (this.fieldModel) {
643
645
  ddlField = Object.assign({}, ddlField, this.fieldModel);
644
646
  }
645
- dropdowntree = new DropDownTree(ddlField);
647
+ const dropdowntree = new DropDownTree(ddlField);
646
648
  dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
647
649
  if (!isNullOrUndefined(dropdowntree.value)) {
648
- dropdowntree.element.value = dropdowntree.value[0];
650
+ const value = this.getLabelFromColumn(dropdowntree.value[0]);
651
+ dropdowntree.element.value = value;
649
652
  }
653
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
650
654
  const ddlVal = this.isImportRules ?
651
655
  this.GetRootColumnName(rule.field) : dropdowntree.value;
652
656
  this.selectedColumn = this.getColumn(ddlVal);
@@ -681,17 +685,20 @@ let QueryBuilder = class QueryBuilder extends Component {
681
685
  else {
682
686
  groupElem = closest(target, '.e-group-container');
683
687
  rules = this.getParentGroup(groupElem);
688
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
684
689
  const custom = rule.custom;
685
690
  if (Object.keys(rule).length) {
686
691
  rules.rules.push({
687
692
  'field': rule.field, 'type': rule.type, 'label': rule.label, 'operator': rule.operator, value: rule.value
688
693
  });
689
694
  if (custom) {
695
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
690
696
  rules.rules[rules.rules.length - 1].custom = custom;
691
697
  }
692
698
  }
693
699
  else {
694
700
  if (custom) {
701
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
695
702
  newRule.custom = custom;
696
703
  }
697
704
  rules.rules.push(newRule);
@@ -758,17 +765,17 @@ let QueryBuilder = class QueryBuilder extends Component {
758
765
  }
759
766
  }
760
767
  else {
761
- dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field input.e-control'), 'dropdownlist');
768
+ dropDownObj = getComponent(ruleElemCln[i].querySelector('.e-rule-field .e-control'), 'dropdownlist');
762
769
  this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
763
770
  validateRule = !isNullOrUndefined(dropDownObj.index) && this.selectedColumn.validation;
764
771
  }
765
- fieldElem = tempElem.querySelector('.e-rule-field input.e-control');
772
+ fieldElem = tempElem.querySelector('.e-rule-field .e-control');
766
773
  if (validateRule && validateRule.isRequired) {
767
774
  while (indexElem && indexElem.previousElementSibling !== null) {
768
775
  indexElem = indexElem.previousElementSibling;
769
776
  index++;
770
777
  }
771
- fieldElem = tempElem.querySelector('.e-rule-operator input.e-control');
778
+ fieldElem = tempElem.querySelector('.e-rule-operator .e-control');
772
779
  if (!rule.rules[index].operator) {
773
780
  if (fieldElem.parentElement.className.indexOf('e-tooltip') < 0) {
774
781
  this.renderToolTip(fieldElem.parentElement);
@@ -781,7 +788,7 @@ let QueryBuilder = class QueryBuilder extends Component {
781
788
  if (excludeOprs.indexOf(rule.rules[index].operator) < 0 && (isNullOrUndefined(rule.rules[index].value) &&
782
789
  rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
783
790
  (rule.rules[index].value instanceof Array && valArray.length < 1)) {
784
- const valElem = tempElem.querySelectorAll('.e-rule-value input.e-control');
791
+ const valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
785
792
  isValid = false;
786
793
  for (let j = 0, jLen = valElem.length; j < jLen; j++) {
787
794
  const element = valElem[j];
@@ -1303,7 +1310,8 @@ let QueryBuilder = class QueryBuilder extends Component {
1303
1310
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1304
1311
  ddt.value = args.value[0];
1305
1312
  ddt.dataBind();
1306
- ddtElem.value = args.value[0];
1313
+ const result = this.getLabelFromColumn(args.value[0]);
1314
+ ddtElem.value = result;
1307
1315
  }
1308
1316
  }
1309
1317
  }
@@ -1333,7 +1341,7 @@ let QueryBuilder = class QueryBuilder extends Component {
1333
1341
  }
1334
1342
  changeRule(rule, ddlArgs) {
1335
1343
  if (!ddlArgs.itemData) {
1336
- if (this.fieldMode === "DropdownTree") {
1344
+ if (this.fieldMode === 'DropdownTree') {
1337
1345
  const ddt = getComponent(ddlArgs.element, 'dropdowntree');
1338
1346
  if (ddt.value == null) {
1339
1347
  return;
@@ -1356,6 +1364,7 @@ let QueryBuilder = class QueryBuilder extends Component {
1356
1364
  }
1357
1365
  changeFilter(flt, dl, grID, rl, tmpRl, dArg) {
1358
1366
  if (flt) {
1367
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1359
1368
  let ddlValue;
1360
1369
  if (this.fieldMode === 'DropdownTree') {
1361
1370
  ddlValue = (dl.value[0]);
@@ -1382,7 +1391,9 @@ let QueryBuilder = class QueryBuilder extends Component {
1382
1391
  this.changeOperator(flt, operatorElem, dl, grID, rl, tmpRl, dArg);
1383
1392
  }
1384
1393
  }
1385
- 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) {
1386
1397
  let ruleElem;
1387
1398
  let ruleID;
1388
1399
  let eventsArgs;
@@ -1763,14 +1774,15 @@ let QueryBuilder = class QueryBuilder extends Component {
1763
1774
  const original = {};
1764
1775
  const result = [];
1765
1776
  let nest = [];
1766
- let value = "";
1767
- let isNested = field.indexOf(this.separator);
1777
+ let value = '';
1778
+ const isNested = field.indexOf(this.separator);
1768
1779
  for (let i = 0, iLen = dataSource.length; i < iLen; i++) {
1769
1780
  if (isNested === 0) {
1770
1781
  value = dataSource[i][field];
1771
1782
  }
1772
1783
  else {
1773
1784
  nest = field.split(this.separator);
1785
+ // eslint-disable-next-line @typescript-eslint/tslint/config
1774
1786
  nest.forEach(element => {
1775
1787
  if (value) {
1776
1788
  value = value[element];
@@ -1784,7 +1796,7 @@ let QueryBuilder = class QueryBuilder extends Component {
1784
1796
  value = dataSource[i][field].toString();
1785
1797
  }
1786
1798
  const data = {};
1787
- if (!(value in original) && !isNullOrUndefined(value)) {
1799
+ if (!(value in original)) {
1788
1800
  original[value] = 1;
1789
1801
  if (isNested === 0) {
1790
1802
  data[field] = value;
@@ -1813,9 +1825,9 @@ let QueryBuilder = class QueryBuilder extends Component {
1813
1825
  isValues = true;
1814
1826
  }
1815
1827
  let fieldValue = this.selectedRule.field;
1816
- let isNested = this.selectedRule.field.indexOf(this.separator);
1817
- if (isNested !== 0 && this.fieldMode !== "DropdownTree") {
1818
- 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);
1819
1831
  fieldValue = nest[nest.length - 1];
1820
1832
  }
1821
1833
  let multiSelectValue;
@@ -1925,10 +1937,10 @@ let QueryBuilder = class QueryBuilder extends Component {
1925
1937
  }
1926
1938
  getItemData(parentId) {
1927
1939
  let fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');
1928
- if (this.fieldMode === "DropdownTree") {
1940
+ if (this.fieldMode === 'DropdownTree') {
1929
1941
  fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');
1930
1942
  }
1931
- 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);
1932
1944
  }
1933
1945
  setDefaultValue(parentId, isArryValue, isNumber) {
1934
1946
  const itemData = this.getItemData(parentId);
@@ -2259,6 +2271,7 @@ let QueryBuilder = class QueryBuilder extends Component {
2259
2271
  }
2260
2272
  getPreviousItemData(prevItemData, column) {
2261
2273
  if (this.isFieldClose && prevItemData) {
2274
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2262
2275
  prevItemData = this.getColumn(prevItemData.value);
2263
2276
  }
2264
2277
  if (column.template && prevItemData && Object.keys(prevItemData).length < 4) {
@@ -2271,7 +2284,8 @@ let QueryBuilder = class QueryBuilder extends Component {
2271
2284
  const filtElem = subFldElem.getElementsByTagName('input')[0];
2272
2285
  const filtObj = this.fieldMode === 'DropdownTree' ? getComponent(filtElem, 'dropdowntree')
2273
2286
  : getComponent(filtElem, 'dropdownlist');
2274
- 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
2275
2289
  : this.getColumn(filtObj.value);
2276
2290
  this.selectedRule = column;
2277
2291
  if (isRender) {
@@ -2515,7 +2529,9 @@ let QueryBuilder = class QueryBuilder extends Component {
2515
2529
  }
2516
2530
  dropDownObj = this.fieldMode === 'DropdownTree' ? getComponent(target, 'dropdowntree') :
2517
2531
  getComponent(target, 'dropdownlist');
2532
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2518
2533
  const column = this.fieldMode === 'DropdownTree' ? this.getColumn(dropDownObj.value[0])
2534
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2519
2535
  : this.getColumn(dropDownObj.value);
2520
2536
  if (!this.isImportRules && rule.rules[index].field && rule.rules[index].field.toLowerCase() !== column.field.toLowerCase()) {
2521
2537
  if (!(ruleElem.querySelectorAll('.e-template')) && !(operator.indexOf('null') > -1)
@@ -3448,11 +3464,18 @@ let QueryBuilder = class QueryBuilder extends Component {
3448
3464
  }
3449
3465
  }
3450
3466
  const isTemplateRendered = clnruleElem.querySelector('.e-template-value');
3467
+ // eslint-disable
3451
3468
  try {
3452
3469
  detach(clnruleElem);
3453
3470
  }
3454
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;
3455
3477
  }
3478
+ // eslint-enable
3456
3479
  if (column && column.ruleTemplate) {
3457
3480
  this.clearQBTemplate([clnruleElem.id]);
3458
3481
  }
@@ -3862,8 +3885,8 @@ let QueryBuilder = class QueryBuilder extends Component {
3862
3885
  }
3863
3886
  }
3864
3887
  if (this.dataSource instanceof DataManager) {
3865
- if (!isNullOrUndefined(pred) && (pred.operator === "isnull" || pred.operator === "notnull")) {
3866
- 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';
3867
3890
  }
3868
3891
  }
3869
3892
  return pred;
@@ -4126,7 +4149,7 @@ let QueryBuilder = class QueryBuilder extends Component {
4126
4149
  }
4127
4150
  }
4128
4151
  }
4129
- if (rule.rules.length === 0) {
4152
+ if (rule.rules.length === 0 && this.headerTemplate) {
4130
4153
  rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
4131
4154
  }
4132
4155
  const ruleColl = rule.rules;
@@ -4369,7 +4392,7 @@ let QueryBuilder = class QueryBuilder extends Component {
4369
4392
  }
4370
4393
  queryStr += rule.field + ' ' + this.operators[rule.operator] + ' ' + valueStr;
4371
4394
  }
4372
- if (rule.condition && rule.condition != '') {
4395
+ if (rule.condition && rule.condition !== '') {
4373
4396
  condition = rule.condition;
4374
4397
  }
4375
4398
  }
@@ -4510,7 +4533,6 @@ let QueryBuilder = class QueryBuilder extends Component {
4510
4533
  this.parser.push(['Literal', matchValue]);
4511
4534
  return matchValue.length + 2;
4512
4535
  }
4513
- // eslint-disable-next-line
4514
4536
  if (this.checkNumberLiteral(sqlString)) {
4515
4537
  matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
4516
4538
  this.parser.push(['Literal', matchValue]);
@@ -4605,6 +4627,37 @@ let QueryBuilder = class QueryBuilder extends Component {
4605
4627
  const columnData = this.getColumn(rules.field);
4606
4628
  return columnData.type;
4607
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
+ }
4608
4661
  processParser(parser, rules, levelColl) {
4609
4662
  let j;
4610
4663
  let jLen;