@syncfusion/ej2-querybuilder 33.2.3 → 33.2.5

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 33.2.3
3
+ * version : 33.2.5
4
4
  * Copyright Syncfusion Inc. 2001 - 2025. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@syncfusion/ej2-querybuilder",
3
- "version": "33.2.3",
3
+ "version": "33.2.5",
4
4
  "description": "Essential JS 2 QueryBuilder",
5
5
  "author": "Syncfusion Inc.",
6
6
  "license": "SEE LICENSE IN license",
@@ -9,10 +9,10 @@
9
9
  "es2015": "./dist/es6/ej2-querybuilder.es5.js",
10
10
  "dependencies": {
11
11
  "@syncfusion/ej2-base": "~33.2.3",
12
- "@syncfusion/ej2-buttons": "~33.2.3",
13
- "@syncfusion/ej2-calendars": "~33.2.3",
14
- "@syncfusion/ej2-dropdowns": "~33.2.3",
15
- "@syncfusion/ej2-inputs": "~33.2.3",
12
+ "@syncfusion/ej2-buttons": "~33.2.5",
13
+ "@syncfusion/ej2-calendars": "~33.2.5",
14
+ "@syncfusion/ej2-dropdowns": "~33.2.5",
15
+ "@syncfusion/ej2-inputs": "~33.2.5",
16
16
  "@syncfusion/ej2-splitbuttons": "~33.2.3"
17
17
  },
18
18
  "devDependencies": {},
@@ -355,6 +355,8 @@ export declare class QueryBuilder extends Component<HTMLDivElement> implements I
355
355
  private initialID;
356
356
  private ddTree;
357
357
  private boundResizeHandler;
358
+ private isPopupScroll;
359
+ private boundScrollHandler;
358
360
  /**
359
361
  * Triggers when the component is created.
360
362
  *
@@ -776,6 +778,7 @@ export declare class QueryBuilder extends Component<HTMLDivElement> implements I
776
778
  private templateParser;
777
779
  private executeDataManager;
778
780
  private initControl;
781
+ private scrollEventHandler;
779
782
  protected wireEvents(): void;
780
783
  protected unWireEvents(): void;
781
784
  private getParentGroup;
@@ -222,6 +222,7 @@ var QueryBuilder = /** @class */ (function (_super) {
222
222
  _this.isRuleClicked = false;
223
223
  _this.groupCloned = false;
224
224
  _this.isRequestSent = false;
225
+ _this.isPopupScroll = false;
225
226
  MultiSelect.Inject(CheckBoxSelection);
226
227
  return _this;
227
228
  }
@@ -1358,6 +1359,7 @@ var QueryBuilder = /** @class */ (function (_super) {
1358
1359
  }
1359
1360
  };
1360
1361
  QueryBuilder.prototype.renderToolTip = function (element) {
1362
+ var _this = this;
1361
1363
  var tooltip = new Tooltip({
1362
1364
  content: this.l10n.getConstant('ValidationMessage'),
1363
1365
  position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {
@@ -1367,6 +1369,10 @@ var QueryBuilder = /** @class */ (function (_super) {
1367
1369
  if (tooltipCloseElement) {
1368
1370
  tooltipCloseElement.style.display = 'none';
1369
1371
  }
1372
+ }, beforeClose: function (args) {
1373
+ if (_this.isPopupScroll) {
1374
+ args.cancel = true;
1375
+ }
1370
1376
  }
1371
1377
  });
1372
1378
  tooltip.appendTo(element);
@@ -3432,7 +3438,9 @@ var QueryBuilder = /** @class */ (function (_super) {
3432
3438
  var isTemplate = (typeof itemData.template === 'string');
3433
3439
  if (rule.value && !isNullOrUndefined(format)) {
3434
3440
  selVal = (length_1 > 1) ? rule.value[i] : rule.value;
3435
- selectedValue = this.parseDate(selVal, format) || new Date();
3441
+ if (selVal) {
3442
+ selectedValue = this.parseDate(selVal, format) || new Date();
3443
+ }
3436
3444
  }
3437
3445
  if (!isNullOrUndefined(itemData) && itemData.value && !isTemplate) {
3438
3446
  var parsedDate = this.parseDate(itemData.value.toString(), itemData.format);
@@ -4989,6 +4997,11 @@ var QueryBuilder = /** @class */ (function (_super) {
4989
4997
  groupRule = groupRule.properties;
4990
4998
  }
4991
4999
  var groupElem = closest(targetGroup, '.e-group-container');
5000
+ var cloneGroupElem = groupElem.cloneNode(true);
5001
+ var isRuleArea = false;
5002
+ if (closest(e.target, '.e-group-container') && closest(e.target, '.e-group-container').id === this.initialID + '_group0') {
5003
+ isRuleArea = true;
5004
+ }
4992
5005
  var nestGrpElem = groupElem.querySelectorAll('.e-group-container');
4993
5006
  nestGrpElem.forEach(function (ele) {
4994
5007
  if (_this.element.querySelector('#' + ele.id)) {
@@ -5006,11 +5019,25 @@ var QueryBuilder = /** @class */ (function (_super) {
5006
5019
  ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);
5007
5020
  }
5008
5021
  this.deleteRules(ruleIds);
5022
+ // Calculate index considering both groups and rules in the overall rules collection
5023
+ var overallDropIndex = 0;
5024
+ var ruleListElem = cloneGroupElem.querySelector('.e-rule-list');
5025
+ if (ruleListElem) {
5026
+ var droppedElement = void 0;
5027
+ for (var j = 0; j < ruleListElem.children.length; j++) {
5028
+ var child = ruleListElem.children[j];
5029
+ if (child.classList.contains('e-drag-rule-top-line') || child.classList.contains('e-drag-rule-bottom-line')) {
5030
+ droppedElement = child;
5031
+ overallDropIndex = j;
5032
+ break;
5033
+ }
5034
+ }
5035
+ }
5009
5036
  if (targetGroup.classList.contains('e-drag-rule-top-line')) {
5010
- groupRule.rules.splice(dropInd, 0, rule);
5037
+ groupRule.rules.splice(isRuleArea ? overallDropIndex : dropInd, 0, rule);
5011
5038
  }
5012
5039
  else {
5013
- groupRule.rules.splice(dropInd + 1, 0, rule);
5040
+ groupRule.rules.splice(isRuleArea ? overallDropIndex + 1 : dropInd + 1, 0, rule);
5014
5041
  }
5015
5042
  groupRule.rules.forEach(function (rule) {
5016
5043
  if (_this.enableSeparateConnector) {
@@ -5210,12 +5237,24 @@ var QueryBuilder = /** @class */ (function (_super) {
5210
5237
  this.initWrapper();
5211
5238
  this.wireEvents();
5212
5239
  };
5240
+ QueryBuilder.prototype.scrollEventHandler = function (e) {
5241
+ var target = e.target;
5242
+ if (target && ((target.closest && target.closest('.e-popup')))) {
5243
+ this.isPopupScroll = true;
5244
+ }
5245
+ else {
5246
+ this.isPopupScroll = false;
5247
+ }
5248
+ };
5213
5249
  QueryBuilder.prototype.wireEvents = function () {
5214
5250
  var wrapper = this.getWrapper();
5215
5251
  EventHandler.add(wrapper, 'click', this.clickEventHandler, this);
5216
5252
  EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
5217
5253
  EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
5218
5254
  EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
5255
+ this.boundScrollHandler = this.scrollEventHandler.bind(this);
5256
+ document.addEventListener('wheel', this.boundScrollHandler);
5257
+ document.addEventListener('scroll', this.boundScrollHandler);
5219
5258
  if (this.allowDragAndDrop) {
5220
5259
  EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
5221
5260
  }
@@ -5228,6 +5267,9 @@ var QueryBuilder = /** @class */ (function (_super) {
5228
5267
  EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
5229
5268
  EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
5230
5269
  EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
5270
+ document.removeEventListener('wheel', this.boundScrollHandler);
5271
+ document.removeEventListener('scroll', this.boundScrollHandler);
5272
+ this.boundScrollHandler = null;
5231
5273
  EventHandler.remove(document, 'keydown', this.keyBoardHandler);
5232
5274
  if (this.boundResizeHandler) {
5233
5275
  window.removeEventListener('resize', this.boundResizeHandler);