@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.
@@ -209,6 +209,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
209
209
  _this.isRuleClicked = false;
210
210
  _this.groupCloned = false;
211
211
  _this.isRequestSent = false;
212
+ _this.isPopupScroll = false;
212
213
  MultiSelect.Inject(CheckBoxSelection);
213
214
  return _this;
214
215
  }
@@ -1344,6 +1345,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1344
1345
  }
1345
1346
  };
1346
1347
  QueryBuilder.prototype.renderToolTip = function (element) {
1348
+ var _this = this;
1347
1349
  var tooltip = new Tooltip({
1348
1350
  content: this.l10n.getConstant('ValidationMessage'),
1349
1351
  position: 'BottomCenter', cssClass: 'e-querybuilder-error', afterClose: function () {
@@ -1353,6 +1355,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1353
1355
  if (tooltipCloseElement) {
1354
1356
  tooltipCloseElement.style.display = 'none';
1355
1357
  }
1358
+ }, beforeClose: function (args) {
1359
+ if (_this.isPopupScroll) {
1360
+ args.cancel = true;
1361
+ }
1356
1362
  }
1357
1363
  });
1358
1364
  tooltip.appendTo(element);
@@ -3418,7 +3424,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3418
3424
  var isTemplate = (typeof itemData.template === 'string');
3419
3425
  if (rule.value && !isNullOrUndefined(format)) {
3420
3426
  selVal = (length_1 > 1) ? rule.value[i] : rule.value;
3421
- selectedValue = this.parseDate(selVal, format) || new Date();
3427
+ if (selVal) {
3428
+ selectedValue = this.parseDate(selVal, format) || new Date();
3429
+ }
3422
3430
  }
3423
3431
  if (!isNullOrUndefined(itemData) && itemData.value && !isTemplate) {
3424
3432
  var parsedDate = this.parseDate(itemData.value.toString(), itemData.format);
@@ -4975,6 +4983,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4975
4983
  groupRule = groupRule.properties;
4976
4984
  }
4977
4985
  var groupElem = closest(targetGroup, '.e-group-container');
4986
+ var cloneGroupElem = groupElem.cloneNode(true);
4987
+ var isRuleArea = false;
4988
+ if (closest(e.target, '.e-group-container') && closest(e.target, '.e-group-container').id === this.initialID + '_group0') {
4989
+ isRuleArea = true;
4990
+ }
4978
4991
  var nestGrpElem = groupElem.querySelectorAll('.e-group-container');
4979
4992
  nestGrpElem.forEach(function (ele) {
4980
4993
  if (_this.element.querySelector('#' + ele.id)) {
@@ -4992,11 +5005,23 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4992
5005
  ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);
4993
5006
  }
4994
5007
  this.deleteRules(ruleIds);
5008
+ // Calculate index considering both groups and rules in the overall rules collection
5009
+ var overallDropIndex = 0;
5010
+ var ruleListElem = cloneGroupElem.querySelector('.e-rule-list');
5011
+ if (ruleListElem) {
5012
+ for (var j = 0; j < ruleListElem.children.length; j++) {
5013
+ var child = ruleListElem.children[j];
5014
+ if (child.classList.contains('e-drag-rule-top-line') || child.classList.contains('e-drag-rule-bottom-line')) {
5015
+ overallDropIndex = j;
5016
+ break;
5017
+ }
5018
+ }
5019
+ }
4995
5020
  if (targetGroup.classList.contains('e-drag-rule-top-line')) {
4996
- groupRule.rules.splice(dropInd, 0, rule);
5021
+ groupRule.rules.splice(isRuleArea ? overallDropIndex : dropInd, 0, rule);
4997
5022
  }
4998
5023
  else {
4999
- groupRule.rules.splice(dropInd + 1, 0, rule);
5024
+ groupRule.rules.splice(isRuleArea ? overallDropIndex + 1 : dropInd + 1, 0, rule);
5000
5025
  }
5001
5026
  groupRule.rules.forEach(function (rule) {
5002
5027
  if (_this.enableSeparateConnector) {
@@ -5196,12 +5221,24 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5196
5221
  this.initWrapper();
5197
5222
  this.wireEvents();
5198
5223
  };
5224
+ QueryBuilder.prototype.scrollEventHandler = function (e) {
5225
+ var target = e.target;
5226
+ if (target && ((target.closest && target.closest('.e-popup')))) {
5227
+ this.isPopupScroll = true;
5228
+ }
5229
+ else {
5230
+ this.isPopupScroll = false;
5231
+ }
5232
+ };
5199
5233
  QueryBuilder.prototype.wireEvents = function () {
5200
5234
  var wrapper = this.getWrapper();
5201
5235
  EventHandler.add(wrapper, 'click', this.clickEventHandler, this);
5202
5236
  EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
5203
5237
  EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
5204
5238
  EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
5239
+ this.boundScrollHandler = this.scrollEventHandler.bind(this);
5240
+ document.addEventListener('wheel', this.boundScrollHandler);
5241
+ document.addEventListener('scroll', this.boundScrollHandler);
5205
5242
  if (this.allowDragAndDrop) {
5206
5243
  EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
5207
5244
  }
@@ -5214,6 +5251,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5214
5251
  EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
5215
5252
  EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
5216
5253
  EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
5254
+ document.removeEventListener('wheel', this.boundScrollHandler);
5255
+ document.removeEventListener('scroll', this.boundScrollHandler);
5256
+ this.boundScrollHandler = null;
5217
5257
  EventHandler.remove(document, 'keydown', this.keyBoardHandler);
5218
5258
  if (this.boundResizeHandler) {
5219
5259
  window.removeEventListener('resize', this.boundResizeHandler);