@syncfusion/ej2-querybuilder 26.1.40 → 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,6 +1203,72 @@ 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') {