@syncfusion/ej2-querybuilder 26.1.38 → 26.1.42

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.
@@ -1133,7 +1133,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1133
1133
  popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,
1134
1134
  change: this.changeField.bind(this), value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,
1135
1135
  open: this.popupOpen.bind(this, false), treeSettings: { expandOn: 'Click' },
1136
- cssClass: 'e-qb-ddt'
1136
+ cssClass: 'e-qb-ddt', filtering: this.dropdownTreeFiltering.bind(this), close: this.dropdownTreeClose.bind(this)
1137
1137
  };
1138
1138
  if (this.fieldModel) {
1139
1139
  ddlField = __assign({}, ddlField, this.fieldModel);
@@ -1203,14 +1203,82 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1203
1203
  this.setMultiConnector(ruleElem);
1204
1204
  }
1205
1205
  };
1206
+ QueryBuilder.prototype.dropdownTreeFiltering = function (args) {
1207
+ var _this = this;
1208
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
1209
+ var proxy = this;
1210
+ var ruleElemID = '';
1211
+ var srcElement = args.event.srcElement;
1212
+ var isClearIcon = srcElement.classList.contains('e-clear-icon');
1213
+ var inputElem = isClearIcon ? srcElement.parentElement.querySelector('.e-textbox') : srcElement;
1214
+ ruleElemID = inputElem.id.split('_filterkey')[0];
1215
+ var ruleElem = document.getElementById(ruleElemID);
1216
+ this.ddTree = getComponent(ruleElem.querySelector('input.e-dropdowntree'), 'dropdowntree');
1217
+ var hierarchicalData = extend([], this.columns, [], true);
1218
+ // Cancel the default filtering.
1219
+ args.cancel = true;
1220
+ if (args.text === '') {
1221
+ this.changeDataSource(hierarchicalData);
1222
+ }
1223
+ else {
1224
+ var matchedDataSource = hierarchicalData
1225
+ .map(function (data) { return _this.nestedChildFilter(args.text, data); })
1226
+ .filter(function (filteredChild) { return filteredChild !== null; });
1227
+ this.changeDataSource(matchedDataSource);
1228
+ setTimeout(function () {
1229
+ proxy.ddTree.treeObj.expandAll();
1230
+ }, 100);
1231
+ }
1232
+ };
1233
+ QueryBuilder.prototype.changeDataSource = function (data) {
1234
+ this.ddTree.treeObj.fields = {
1235
+ dataSource: data,
1236
+ value: 'field',
1237
+ text: 'label',
1238
+ child: 'columns',
1239
+ expanded: 'expanded'
1240
+ };
1241
+ this.ddTree.treeObj.refresh();
1242
+ };
1243
+ QueryBuilder.prototype.nestedChildFilter = function (value, node) {
1244
+ var _this = this;
1245
+ var children = node[this.ddTree.fields.child];
1246
+ if (!children) {
1247
+ return this.isMatchedNode(value, node) ? node : null;
1248
+ }
1249
+ var matchedChildren = children
1250
+ .map(function (child) { return _this.nestedChildFilter(value, child); })
1251
+ .filter(function (filteredChild) { return filteredChild !== null; });
1252
+ if (matchedChildren.length) {
1253
+ node[this.ddTree.fields.child] = matchedChildren;
1254
+ return node;
1255
+ }
1256
+ else {
1257
+ node[this.ddTree.fields.child] = children;
1258
+ return this.isMatchedNode(value, node) ? node : null;
1259
+ }
1260
+ };
1261
+ QueryBuilder.prototype.isMatchedNode = function (value, node) {
1262
+ var checkValue = node[this.ddTree.fields.text].toLowerCase();
1263
+ value = value ? value.toLowerCase() : '';
1264
+ return checkValue.indexOf(value) !== -1;
1265
+ };
1266
+ QueryBuilder.prototype.dropdownTreeClose = function () {
1267
+ if (this.ddTree) {
1268
+ this.changeDataSource(this.columns);
1269
+ }
1270
+ this.ddTree = null;
1271
+ };
1206
1272
  QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {
1207
1273
  for (var i = 0; i < columns.length; i++) {
1208
1274
  if (columns[parseInt(i.toString(), 10)].type === 'object') {
1275
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1209
1276
  if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {
1210
1277
  delete columns[parseInt(i.toString(), 10)].template;
1211
1278
  }
1212
1279
  columns[parseInt(i.toString(), 10)].selectable = false;
1213
1280
  this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);
1281
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1214
1282
  }
1215
1283
  else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {
1216
1284
  delete columns[parseInt(i.toString(), 10)].template;
@@ -1375,10 +1443,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1375
1443
  }
1376
1444
  if (excludeOprs.indexOf(rule.rules[index].operator) < -1 &&
1377
1445
  (isNullOrUndefined(rule.rules[index].value) &&
1378
- rule.rules[index].type !== 'date') || rule.rules[index].value === '' ||
1446
+ rule.rules[index].type !== 'date') || rule.rules[index].value === '' || rule.rules[index].value === null ||
1379
1447
  (rule.rules[index].value instanceof Array && valArray.length < 1)) {
1380
1448
  var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
1381
- isValid = false;
1449
+ if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {
1450
+ isValid = false;
1451
+ }
1382
1452
  for (var j = 0, jLen = valElem.length; j < jLen; j++) {
1383
1453
  var element = valElem[j];
1384
1454
  var elem = void 0;
@@ -1393,6 +1463,18 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1393
1463
  }
1394
1464
  j++;
1395
1465
  }
1466
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1467
+ }
1468
+ else if (rule.rules[index].type === 'date' && (rule.rules[index].value === null || rule.rules[index].value.indexOf(null) > -1)) {
1469
+ var valElem = tempElem.querySelectorAll('.e-rule-value .e-control');
1470
+ if (excludeOprs.indexOf(rule.rules[index].operator) < 0) {
1471
+ isValid = false;
1472
+ }
1473
+ for (var j = 0, jLen = valElem.length; j < jLen; j++) {
1474
+ if (valElem[j].parentElement.className.indexOf('e-tooltip') < 0 && valElem[j].className.indexOf('e-tooltip') < 0 && (isNullOrUndefined(rule.rules[index].value) || rule.rules[index].value[j] == null)) {
1475
+ this.renderToolTip(valElem[j].parentElement);
1476
+ }
1477
+ }
1396
1478
  }
1397
1479
  }
1398
1480
  else if ((dropDownObj && dropDownObj.element && isNullOrUndefined(dropDownObj.index)) ||
@@ -2147,6 +2229,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2147
2229
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2148
2230
  element = args.element;
2149
2231
  }
2232
+ if (!element) {
2233
+ return;
2234
+ }
2150
2235
  if (element.className.indexOf('e-day') > -1 || element.className.indexOf('e-today') > -1 || element.className.indexOf('e-cell') > -1) {
2151
2236
  var calenderArgs = args;
2152
2237
  element = calenderArgs.element;
@@ -3781,6 +3866,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3781
3866
  if (valElem[1] && valElem[1].parentElement.className.indexOf('e-tooltip') > -1) {
3782
3867
  getComponent(valElem[1].parentElement, 'tooltip').destroy();
3783
3868
  }
3869
+ if (valElem[2] && valElem[2].parentElement.className.indexOf('e-tooltip') > -1) {
3870
+ getComponent(valElem[2].parentElement, 'tooltip').destroy();
3871
+ }
3784
3872
  }
3785
3873
  }
3786
3874
  };
@@ -6551,6 +6639,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6551
6639
  var grpCount;
6552
6640
  var operator;
6553
6641
  var isLeftOpened = false;
6642
+ var isNotOpened = false;
6554
6643
  for (var i = 0, iLen = parser.length; i < iLen; i++) {
6555
6644
  if (parser[i][0] === 'Literal') {
6556
6645
  var column = this.getColumn(parser[i][1]);
@@ -6686,6 +6775,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6686
6775
  }
6687
6776
  else if (parser[i][0] === 'Left') {
6688
6777
  if (!(parser[0][0] === 'Left') && (parser[i - 1][1] === 'not' || sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i - 1][1])) {
6778
+ isNotOpened = true;
6689
6779
  continue;
6690
6780
  }
6691
6781
  this.parser = parser.splice(i + 1, iLen - (i + 1));
@@ -6716,6 +6806,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6716
6806
  }
6717
6807
  }
6718
6808
  else if (parser[i][0] === 'Right') {
6809
+ if (isNotOpened && parser[i + 1][0] === 'Right') {
6810
+ isNotOpened = false;
6811
+ continue;
6812
+ }
6719
6813
  this.parser = parser.splice(i + 1, iLen - (i + 1));
6720
6814
  levelColl.pop(); //To get the parent Group
6721
6815
  rules = this.rule;