@syncfusion/ej2-querybuilder 33.1.49 → 33.2.4

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.
@@ -164,6 +164,7 @@ let QueryBuilder = class QueryBuilder extends Component {
164
164
  this.isRuleClicked = false;
165
165
  this.groupCloned = false;
166
166
  this.isRequestSent = false;
167
+ this.isPopupScroll = false;
167
168
  MultiSelect.Inject(CheckBoxSelection);
168
169
  }
169
170
  getPersistData() {
@@ -1295,6 +1296,10 @@ let QueryBuilder = class QueryBuilder extends Component {
1295
1296
  if (tooltipCloseElement) {
1296
1297
  tooltipCloseElement.style.display = 'none';
1297
1298
  }
1299
+ }, beforeClose: (args) => {
1300
+ if (this.isPopupScroll) {
1301
+ args.cancel = true;
1302
+ }
1298
1303
  }
1299
1304
  });
1300
1305
  tooltip.appendTo(element);
@@ -4903,6 +4908,11 @@ let QueryBuilder = class QueryBuilder extends Component {
4903
4908
  groupRule = groupRule.properties;
4904
4909
  }
4905
4910
  const groupElem = closest(targetGroup, '.e-group-container');
4911
+ const cloneGroupElem = groupElem.cloneNode(true);
4912
+ let isRuleArea = false;
4913
+ if (closest(e.target, '.e-group-container') && closest(e.target, '.e-group-container').id === this.initialID + '_group0') {
4914
+ isRuleArea = true;
4915
+ }
4906
4916
  const nestGrpElem = groupElem.querySelectorAll('.e-group-container');
4907
4917
  nestGrpElem.forEach((ele) => {
4908
4918
  if (this.element.querySelector('#' + ele.id)) {
@@ -4920,11 +4930,23 @@ let QueryBuilder = class QueryBuilder extends Component {
4920
4930
  ruleIds.push(ruleElems[i].id.split(this.element.id + '_')[1]);
4921
4931
  }
4922
4932
  this.deleteRules(ruleIds);
4933
+ // Calculate index considering both groups and rules in the overall rules collection
4934
+ let overallDropIndex = 0;
4935
+ const ruleListElem = cloneGroupElem.querySelector('.e-rule-list');
4936
+ if (ruleListElem) {
4937
+ for (let j = 0; j < ruleListElem.children.length; j++) {
4938
+ const child = ruleListElem.children[j];
4939
+ if (child.classList.contains('e-drag-rule-top-line') || child.classList.contains('e-drag-rule-bottom-line')) {
4940
+ overallDropIndex = j;
4941
+ break;
4942
+ }
4943
+ }
4944
+ }
4923
4945
  if (targetGroup.classList.contains('e-drag-rule-top-line')) {
4924
- groupRule.rules.splice(dropInd, 0, rule);
4946
+ groupRule.rules.splice(isRuleArea ? overallDropIndex : dropInd, 0, rule);
4925
4947
  }
4926
4948
  else {
4927
- groupRule.rules.splice(dropInd + 1, 0, rule);
4949
+ groupRule.rules.splice(isRuleArea ? overallDropIndex + 1 : dropInd + 1, 0, rule);
4928
4950
  }
4929
4951
  groupRule.rules.forEach((rule) => {
4930
4952
  if (this.enableSeparateConnector) {
@@ -5123,12 +5145,24 @@ let QueryBuilder = class QueryBuilder extends Component {
5123
5145
  this.initWrapper();
5124
5146
  this.wireEvents();
5125
5147
  }
5148
+ scrollEventHandler(e) {
5149
+ const target = e.target;
5150
+ if (target && ((target.closest && target.closest('.e-popup')))) {
5151
+ this.isPopupScroll = true;
5152
+ }
5153
+ else {
5154
+ this.isPopupScroll = false;
5155
+ }
5156
+ }
5126
5157
  wireEvents() {
5127
5158
  const wrapper = this.getWrapper();
5128
5159
  EventHandler.add(wrapper, 'click', this.clickEventHandler, this);
5129
5160
  EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
5130
5161
  EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
5131
5162
  EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
5163
+ this.boundScrollHandler = this.scrollEventHandler.bind(this);
5164
+ document.addEventListener('wheel', this.boundScrollHandler);
5165
+ document.addEventListener('scroll', this.boundScrollHandler);
5132
5166
  if (this.allowDragAndDrop) {
5133
5167
  EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
5134
5168
  }
@@ -5141,6 +5175,9 @@ let QueryBuilder = class QueryBuilder extends Component {
5141
5175
  EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
5142
5176
  EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
5143
5177
  EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
5178
+ document.removeEventListener('wheel', this.boundScrollHandler);
5179
+ document.removeEventListener('scroll', this.boundScrollHandler);
5180
+ this.boundScrollHandler = null;
5144
5181
  EventHandler.remove(document, 'keydown', this.keyBoardHandler);
5145
5182
  if (this.boundResizeHandler) {
5146
5183
  window.removeEventListener('resize', this.boundResizeHandler);