@syncfusion/ej2-querybuilder 25.2.7 → 26.1.38

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.
Files changed (109) hide show
  1. package/.eslintrc.json +3 -2
  2. package/dist/ej2-querybuilder.min.js +2 -2
  3. package/dist/ej2-querybuilder.umd.min.js +2 -2
  4. package/dist/ej2-querybuilder.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-querybuilder.es2015.js +1334 -290
  6. package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
  7. package/dist/es6/ej2-querybuilder.es5.js +1327 -282
  8. package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
  9. package/dist/global/ej2-querybuilder.min.js +2 -2
  10. package/dist/global/ej2-querybuilder.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +12 -12
  13. package/src/query-builder/query-builder-model.d.ts +45 -6
  14. package/src/query-builder/query-builder.d.ts +102 -5
  15. package/src/query-builder/query-builder.js +1319 -262
  16. package/src/query-builder/query-library.js +2 -2
  17. package/styles/bootstrap-dark.css +195 -21
  18. package/styles/bootstrap-dark.scss +15 -1
  19. package/styles/bootstrap.css +195 -21
  20. package/styles/bootstrap.scss +15 -1
  21. package/styles/bootstrap4.css +199 -22
  22. package/styles/bootstrap4.scss +15 -1
  23. package/styles/bootstrap5-dark.css +199 -30
  24. package/styles/bootstrap5-dark.scss +15 -1
  25. package/styles/bootstrap5.css +199 -30
  26. package/styles/bootstrap5.scss +15 -1
  27. package/styles/fabric-dark.css +193 -20
  28. package/styles/fabric-dark.scss +15 -1
  29. package/styles/fabric.css +193 -20
  30. package/styles/fabric.scss +15 -1
  31. package/styles/fluent-dark.css +197 -28
  32. package/styles/fluent-dark.scss +15 -1
  33. package/styles/fluent.css +197 -28
  34. package/styles/fluent.scss +15 -1
  35. package/styles/fluent2.css +2052 -0
  36. package/styles/fluent2.scss +15 -0
  37. package/styles/highcontrast-light.css +196 -20
  38. package/styles/highcontrast-light.scss +15 -1
  39. package/styles/highcontrast.css +196 -20
  40. package/styles/highcontrast.scss +15 -1
  41. package/styles/material-dark.css +206 -24
  42. package/styles/material-dark.scss +15 -1
  43. package/styles/material.css +208 -24
  44. package/styles/material.scss +15 -1
  45. package/styles/material3-dark.css +213 -26
  46. package/styles/material3-dark.scss +15 -1
  47. package/styles/material3.css +213 -26
  48. package/styles/material3.scss +15 -1
  49. package/styles/query-builder/_bds-definition.scss +8 -1
  50. package/styles/query-builder/_bootstrap-dark-definition.scss +8 -0
  51. package/styles/query-builder/_bootstrap-definition.scss +8 -0
  52. package/styles/query-builder/_bootstrap4-definition.scss +8 -0
  53. package/styles/query-builder/_bootstrap5-definition.scss +8 -1
  54. package/styles/query-builder/_bootstrap5.3-definition.scss +115 -0
  55. package/styles/query-builder/_fabric-dark-definition.scss +8 -0
  56. package/styles/query-builder/_fabric-definition.scss +8 -0
  57. package/styles/query-builder/_fluent-definition.scss +8 -1
  58. package/styles/query-builder/_fluent2-definition.scss +114 -0
  59. package/styles/query-builder/_fusionnew-definition.scss +8 -1
  60. package/styles/query-builder/_highcontrast-definition.scss +8 -0
  61. package/styles/query-builder/_highcontrast-light-definition.scss +8 -0
  62. package/styles/query-builder/_layout.scss +273 -12
  63. package/styles/query-builder/_material-dark-definition.scss +8 -0
  64. package/styles/query-builder/_material-definition.scss +8 -0
  65. package/styles/query-builder/_material3-definition.scss +8 -1
  66. package/styles/query-builder/_tailwind-definition.scss +8 -1
  67. package/styles/query-builder/_theme.scss +34 -22
  68. package/styles/query-builder/bootstrap-dark.css +195 -21
  69. package/styles/query-builder/bootstrap.css +195 -21
  70. package/styles/query-builder/bootstrap4.css +199 -22
  71. package/styles/query-builder/bootstrap5-dark.css +199 -30
  72. package/styles/query-builder/bootstrap5.css +199 -30
  73. package/styles/query-builder/fabric-dark.css +193 -20
  74. package/styles/query-builder/fabric.css +193 -20
  75. package/styles/query-builder/fluent-dark.css +197 -28
  76. package/styles/query-builder/fluent.css +197 -28
  77. package/styles/query-builder/fluent2.css +2052 -0
  78. package/styles/query-builder/fluent2.scss +15 -0
  79. package/styles/query-builder/highcontrast-light.css +196 -20
  80. package/styles/query-builder/highcontrast.css +196 -20
  81. package/styles/query-builder/icons/_bds.scss +4 -0
  82. package/styles/query-builder/icons/_bootstrap-dark.scss +4 -0
  83. package/styles/query-builder/icons/_bootstrap.scss +4 -0
  84. package/styles/query-builder/icons/_bootstrap4.scss +4 -0
  85. package/styles/query-builder/icons/_bootstrap5.3.scss +11 -0
  86. package/styles/query-builder/icons/_bootstrap5.scss +4 -0
  87. package/styles/query-builder/icons/_fabric-dark.scss +4 -0
  88. package/styles/query-builder/icons/_fabric.scss +4 -0
  89. package/styles/query-builder/icons/_fluent.scss +4 -0
  90. package/styles/query-builder/icons/_fluent2.scss +11 -0
  91. package/styles/query-builder/icons/_fusionnew.scss +4 -0
  92. package/styles/query-builder/icons/_highcontrast-light.scss +4 -0
  93. package/styles/query-builder/icons/_highcontrast.scss +4 -0
  94. package/styles/query-builder/icons/_material-dark.scss +4 -0
  95. package/styles/query-builder/icons/_material.scss +4 -0
  96. package/styles/query-builder/icons/_material3.scss +4 -0
  97. package/styles/query-builder/icons/_tailwind-dark.scss +4 -0
  98. package/styles/query-builder/icons/_tailwind.scss +4 -0
  99. package/styles/query-builder/material-dark.css +206 -24
  100. package/styles/query-builder/material.css +208 -24
  101. package/styles/query-builder/material3-dark.css +213 -26
  102. package/styles/query-builder/material3.css +213 -26
  103. package/styles/query-builder/tailwind-dark.css +206 -24
  104. package/styles/query-builder/tailwind.css +206 -24
  105. package/styles/tailwind-dark.css +206 -24
  106. package/styles/tailwind-dark.scss +15 -1
  107. package/styles/tailwind.css +206 -24
  108. package/styles/tailwind.scss +15 -1
  109. package/CHANGELOG.md +0 -828
@@ -1,11 +1,11 @@
1
- import { Animation, Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, L10n, NotifyPropertyChanges, Property, addClass, append, classList, cldrData, closest, compile, detach, extend, getComponent, getInstance, getUniqueID, getValue, isNullOrUndefined, removeClass, rippleEffect, select } from '@syncfusion/ej2-base';
2
- import { Button, RadioButton } from '@syncfusion/ej2-buttons';
3
- import { CheckBoxSelection, DropDownList, DropDownTree, MultiSelect } from '@syncfusion/ej2-dropdowns';
4
- import { DataManager, Deferred, Predicate, Query } from '@syncfusion/ej2-data';
1
+ import { Property, ChildProperty, Collection, closest, isNullOrUndefined, extend, remove, getComponent, removeClass, Animation, addClass, select, append, detach, rippleEffect, getInstance, getValue, Browser, classList, Internationalization, getUniqueID, L10n, Draggable, compile, EventHandler, cldrData, Event, Complex, NotifyPropertyChanges, Component } from '@syncfusion/ej2-base';
2
+ import { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';
3
+ import { MultiSelect, CheckBoxSelection, DropDownList, DropDownTree } from '@syncfusion/ej2-dropdowns';
4
+ import { Query, DataManager, Deferred, Predicate } from '@syncfusion/ej2-data';
5
5
  import { NumericTextBox, TextBox } from '@syncfusion/ej2-inputs';
6
6
  import { DatePicker } from '@syncfusion/ej2-calendars';
7
7
  import { DropDownButton } from '@syncfusion/ej2-splitbuttons';
8
- import { Tooltip, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';
8
+ import { Tooltip, showSpinner, hideSpinner, createSpinner } from '@syncfusion/ej2-popups';
9
9
 
10
10
  var __extends = (undefined && undefined.__extends) || (function () {
11
11
  var extendStatics = function (d, b) {
@@ -37,9 +37,6 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
37
37
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38
38
  return c > 3 && r && Object.defineProperty(target, key, r), r;
39
39
  };
40
- /**
41
- * Query Builder Source
42
- */
43
40
  /**
44
41
  * Defines the Columns of Query Builder
45
42
  */
@@ -207,6 +204,233 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
207
204
  _this.cloneGrpBtnClick = false;
208
205
  _this.isMiddleGroup = false;
209
206
  _this.cloneRuleBtnClick = false;
207
+ _this.dragStopHandler = function (e) {
208
+ if (_this.isDragEventPrevent) {
209
+ return;
210
+ }
211
+ var targetGroup = closest(e.target, '.e-rule-container');
212
+ if (isNullOrUndefined(targetGroup) && e.target.parentElement &&
213
+ e.target.parentElement.classList.contains('e-btn-group') && _this.enableSeparateConnector) {
214
+ targetGroup = closest(e.target.parentElement.previousElementSibling, '.e-rule-container');
215
+ }
216
+ var isPreventelem = closest(e.helper, '.e-notallowedcur');
217
+ var prevRule;
218
+ if (!isPreventelem) {
219
+ var targetGrp = closest(e.target, '.e-group-container');
220
+ var dropEventArgs = { cancel: false, dropRuleID: targetGroup !== null ? targetGroup.id
221
+ : targetGrp !== null ? targetGrp.id : null, dropGroupID: targetGrp !== null ? targetGrp.id : null };
222
+ _this.trigger('drop', dropEventArgs);
223
+ if (dropEventArgs.cancel) {
224
+ isPreventelem = true;
225
+ }
226
+ prevRule = _this.getValidRules();
227
+ }
228
+ _this.prvtEvtTgrDaD = true;
229
+ var tgrt = _this.enableSeparateConnector && e.target.parentElement &&
230
+ e.target.parentElement.classList.contains('e-btn-group') ? e.target.parentElement.previousElementSibling : e.target;
231
+ if (targetGroup && !isPreventelem) {
232
+ var groupId_1 = targetGroup.id.split(_this.element.id + '_')[1].split('_')[0];
233
+ if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-rule-field') ||
234
+ _this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
235
+ var rule = void 0;
236
+ if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
237
+ rule = _this.getGroup(_this.draggedRule);
238
+ _this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
239
+ }
240
+ else {
241
+ rule = _this.getRule(_this.draggedRule);
242
+ _this.deleteRule(_this.draggedRule);
243
+ }
244
+ var groupRule = extend([], _this.getGroup(targetGroup), [], true);
245
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
246
+ if (groupRule.properties) {
247
+ groupRule = groupRule.properties;
248
+ }
249
+ var groupElem = closest(targetGroup, '.e-group-container');
250
+ var nestGrpElem = groupElem.querySelectorAll('.e-group-container');
251
+ nestGrpElem.forEach(function (ele) {
252
+ if (_this.element.querySelector('#' + ele.id)) {
253
+ _this.deleteGroup(ele);
254
+ }
255
+ });
256
+ var ruleElems = groupElem.querySelectorAll('.e-rule-container');
257
+ var ruleIds = [];
258
+ var dropInd = void 0;
259
+ for (var i = 0; i < ruleElems.length; i++) {
260
+ if (ruleElems[i].classList.contains('e-drag-rule-top-line') ||
261
+ ruleElems[i].classList.contains('e-drag-rule-bottom-line')) {
262
+ dropInd = i;
263
+ }
264
+ ruleIds.push(ruleElems[i].id.split(_this.element.id + '_')[1]);
265
+ }
266
+ _this.deleteRules(ruleIds);
267
+ if (targetGroup.classList.contains('e-drag-rule-top-line')) {
268
+ groupRule.rules.splice(dropInd, 0, rule);
269
+ }
270
+ else {
271
+ groupRule.rules.splice(dropInd + 1, 0, rule);
272
+ }
273
+ groupRule.rules.forEach(function (rule) {
274
+ if (_this.enableSeparateConnector) {
275
+ if (!rule.rules) {
276
+ _this.addRules([rule], groupId_1);
277
+ }
278
+ else {
279
+ _this.addGroups([rule], groupId_1);
280
+ }
281
+ }
282
+ else {
283
+ if (rule.condition) {
284
+ _this.addGroups([rule], groupId_1);
285
+ }
286
+ else {
287
+ _this.addRules([rule], groupId_1);
288
+ }
289
+ }
290
+ });
291
+ }
292
+ }
293
+ else if (tgrt.classList.contains('e-rule-list') && tgrt.children.length === 0 && !isPreventelem) {
294
+ var groupElem = closest(tgrt, '.e-group-container');
295
+ var groupId = groupElem.id.split(_this.element.id + '_')[1].split('_')[0];
296
+ var rule = void 0;
297
+ if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
298
+ rule = _this.getGroup(_this.draggedRule);
299
+ _this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
300
+ }
301
+ else {
302
+ rule = _this.getRule(_this.draggedRule);
303
+ _this.deleteRule(_this.draggedRule);
304
+ }
305
+ if (_this.enableSeparateConnector) {
306
+ if (!rule.rules) {
307
+ _this.addRules([rule], groupId);
308
+ }
309
+ else {
310
+ _this.addGroups([rule], groupId);
311
+ }
312
+ }
313
+ else {
314
+ if (rule.condition) {
315
+ _this.addGroups([rule], groupId);
316
+ }
317
+ else {
318
+ _this.addRules([rule], groupId);
319
+ }
320
+ }
321
+ }
322
+ else if (tgrt.classList.contains('e-rule-list') && tgrt.children[0].classList.contains('e-group-container') && !isPreventelem) {
323
+ var groupElem = closest(tgrt, '.e-group-container');
324
+ var groupId_2 = groupElem.id.split(_this.element.id + '_')[1].split('_')[0];
325
+ var rule = void 0;
326
+ if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
327
+ rule = _this.getGroup(_this.draggedRule);
328
+ _this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
329
+ }
330
+ else {
331
+ rule = _this.getRule(_this.draggedRule);
332
+ _this.deleteRule(_this.draggedRule);
333
+ }
334
+ var groupRule = extend([], _this.getGroup(tgrt), [], true);
335
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
336
+ if (groupRule.properties) {
337
+ groupRule = groupRule.properties;
338
+ }
339
+ var groupElems = tgrt.querySelectorAll('.e-group-container');
340
+ groupElems.forEach(function (ele) {
341
+ if (_this.element.querySelector('#' + ele.id)) {
342
+ _this.deleteGroup(ele);
343
+ }
344
+ });
345
+ var ruleElems = groupElem.querySelectorAll('.e-rule-container');
346
+ ruleElems.forEach(function (ele) {
347
+ if (_this.element.querySelector('#' + ele.id)) {
348
+ _this.deleteRule(ele);
349
+ }
350
+ });
351
+ if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
352
+ _this.addGroups([rule], groupId_2);
353
+ }
354
+ else {
355
+ _this.addRules([rule], groupId_2);
356
+ }
357
+ groupRule.rules.forEach(function (rule) {
358
+ if (_this.enableSeparateConnector) {
359
+ if (!rule.rules) {
360
+ _this.addRules([rule], groupId_2);
361
+ }
362
+ else {
363
+ _this.addGroups([rule], groupId_2);
364
+ }
365
+ }
366
+ else {
367
+ if (rule.condition) {
368
+ _this.addGroups([rule], groupId_2);
369
+ }
370
+ else {
371
+ _this.addRules([rule], groupId_2);
372
+ }
373
+ }
374
+ });
375
+ }
376
+ else if ((closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) && !isPreventelem) {
377
+ var rule = void 0;
378
+ targetGroup = closest(e.target, '.e-group-container');
379
+ if (!targetGroup && e.target.classList.contains('e-group-container')) {
380
+ targetGroup = e.target;
381
+ }
382
+ var groupId = targetGroup.id.split(_this.element.id + '_')[1].split('_')[0];
383
+ if (groupId === 'group0') {
384
+ if (_this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
385
+ rule = _this.getGroup(_this.draggedRule);
386
+ _this.deleteGroup(closest(_this.draggedRule, '.e-group-container'));
387
+ }
388
+ else {
389
+ rule = _this.getRule(_this.draggedRule);
390
+ _this.deleteRule(_this.draggedRule);
391
+ }
392
+ if (_this.enableSeparateConnector) {
393
+ if (!rule.rules) {
394
+ _this.addRules([rule], groupId);
395
+ }
396
+ else {
397
+ _this.addGroups([rule], groupId);
398
+ }
399
+ }
400
+ else {
401
+ if (rule.condition) {
402
+ _this.addGroups([rule], groupId);
403
+ }
404
+ else {
405
+ _this.addRules([rule], groupId);
406
+ }
407
+ }
408
+ }
409
+ }
410
+ if (!isPreventelem) {
411
+ _this.trigger('ruleChange', { previousRule: prevRule, rule: _this.getValidRules(), type: 'drag-and-drop' });
412
+ }
413
+ _this.prvtEvtTgrDaD = false;
414
+ document.body.classList.remove('e-prevent-select');
415
+ var borderLineElem = _this.element.querySelectorAll('.e-drag-rule-bottom-line');
416
+ borderLineElem.forEach(function (ele) {
417
+ ele.classList.remove('e-drag-rule-bottom-line');
418
+ });
419
+ borderLineElem = _this.element.querySelectorAll('.e-drag-rule-top-line');
420
+ borderLineElem.forEach(function (ele) {
421
+ ele.classList.remove('e-drag-rule-top-line');
422
+ });
423
+ borderLineElem = _this.element.querySelectorAll('.e-qb-dragging-rule');
424
+ borderLineElem.forEach(function (ele) {
425
+ ele.classList.remove('e-qb-dragging-rule');
426
+ });
427
+ if (e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {
428
+ remove(e.helper);
429
+ }
430
+ if (_this.enableSeparateConnector) {
431
+ _this.refresh();
432
+ }
433
+ };
210
434
  MultiSelect.Inject(CheckBoxSelection);
211
435
  return _this;
212
436
  }
@@ -345,7 +569,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
345
569
  this.columns = cols;
346
570
  }
347
571
  }
348
- else if (this.columns.length) {
572
+ else if (this.columns && this.columns.length) {
349
573
  var columns = this.columns;
350
574
  for (var i = 0, len = columns.length; i < len; i++) {
351
575
  if (columns[i].category) {
@@ -460,6 +684,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
460
684
  txtareaElem.style.height = txtareaElem.scrollHeight + 'px';
461
685
  }
462
686
  if (target.tagName === 'BUTTON' && target.className.indexOf('e-qb-toggle') < 0) {
687
+ var animation = new Animation({ duration: 1000, delay: 0 });
463
688
  switch (true) {
464
689
  case target.className.indexOf('e-removerule') > -1:
465
690
  this.actionButton = target;
@@ -488,7 +713,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
488
713
  this.deleteGroup(closest(target, '.e-group-container'));
489
714
  break;
490
715
  case target.className.indexOf('e-edit-rule') > -1:
491
- var animation = new Animation({ duration: 1000, delay: 0 });
492
716
  animation.animate('.e-query-builder', { name: 'SlideLeftIn' });
493
717
  document.getElementById(this.element.id + '_summary_content').style.display = 'none';
494
718
  if (this.element.querySelectorAll('.e-group-container').length < 1) {
@@ -516,6 +740,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
516
740
  if (forIdValue) {
517
741
  targetValue = document.getElementById(forIdValue).getAttribute('value');
518
742
  }
743
+ else if (this.enableSeparateConnector) {
744
+ targetValue = target.textContent;
745
+ }
519
746
  groupID = element.id.replace(this.element.id + '_', '');
520
747
  var group = this.getGroup(groupID);
521
748
  var ariaChecked = void 0;
@@ -559,14 +786,55 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
559
786
  var groupID = element.id.replace(this.element.id + '_', '');
560
787
  var beforeRules = this.getValidRules(this.rule);
561
788
  var rule = this.getParentGroup(element);
562
- rule.condition = args.value;
563
- if (this.enableNotCondition) {
564
- rule.not = args.not;
789
+ if (this.enableSeparateConnector) {
790
+ if (isNullOrUndefined(closest(target, '.e-rule-container')) &&
791
+ element.classList.contains('e-group-container')) {
792
+ element = target.parentElement.previousElementSibling !== null ?
793
+ target.parentElement.previousElementSibling : element;
794
+ }
795
+ else {
796
+ element = closest(target, '.e-rule-container');
797
+ }
798
+ var id = element.id.replace(this.element.id + '_', '');
799
+ if (element.classList.contains('e-rule-container')) {
800
+ rule = this.getRule(element);
801
+ rule.condition = args.value;
802
+ }
803
+ else if (element.classList.contains('e-group-container')) {
804
+ rule = this.getGroup(element);
805
+ rule.condition = args.value;
806
+ }
807
+ if (this.enableNotCondition) {
808
+ rule.not = args.not;
809
+ }
810
+ if (!this.isImportRules) {
811
+ this.trigger('change', { groupID: groupID, ruleID: id, type: 'condition', value: rule.condition });
812
+ }
565
813
  }
566
- if (!this.isImportRules) {
567
- this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });
814
+ else {
815
+ rule.condition = args.value;
816
+ if (this.enableNotCondition) {
817
+ rule.not = args.not;
818
+ }
819
+ if (!this.isImportRules) {
820
+ this.trigger('change', { groupID: groupID, type: 'condition', value: rule.condition });
821
+ }
568
822
  }
569
823
  this.filterRules(beforeRules, this.getValidRules(this.rule), 'condition');
824
+ if (this.enableSeparateConnector) {
825
+ var andElem = target.parentElement.querySelector('.e-btngroup-and');
826
+ var orElem = target.parentElement.querySelector('.e-btngroup-or');
827
+ if (andElem && orElem) {
828
+ if (args.value === 'and') {
829
+ andElem.checked = true;
830
+ orElem.checked = false;
831
+ }
832
+ else if (args.value === 'or') {
833
+ orElem.checked = true;
834
+ andElem.checked = false;
835
+ }
836
+ }
837
+ }
570
838
  }
571
839
  };
572
840
  QueryBuilder.prototype.selectBtn = function (target, event) {
@@ -609,7 +877,23 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
609
877
  ruleListElem.appendChild(ruleElem);
610
878
  }
611
879
  else {
612
- ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position
880
+ if (this.enableSeparateConnector) {
881
+ var index = -1;
882
+ var tempRuleIndex = this.ruleIndex + 1;
883
+ for (var i = 0; i < tempRuleIndex; i++) {
884
+ if (i === ruleListElem.children.length) {
885
+ break;
886
+ }
887
+ if (ruleListElem.children[i].classList.contains('e-rule-container')) {
888
+ tempRuleIndex++;
889
+ index++;
890
+ }
891
+ }
892
+ ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + index + 1]); // added clone rule to next position
893
+ }
894
+ else {
895
+ ruleListElem.insertBefore(ruleElem, ruleListElem.children[this.ruleIndex + 1]); // added clone rule to next position
896
+ }
613
897
  }
614
898
  this.cloneRuleBtnClick = false;
615
899
  }
@@ -680,6 +964,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
680
964
  if (this.showButtons.ruleDelete) {
681
965
  removeClass(ruleElem.querySelectorAll('.e-lock-grp-btn'), 'e-button-hide');
682
966
  }
967
+ if (this.allowDragAndDrop) {
968
+ removeClass(ruleElem.querySelectorAll('.e-drag-qb-rule'), 'e-hidden');
969
+ }
683
970
  if (column && column.ruleTemplate && rule) {
684
971
  this.renderReactTemplates();
685
972
  }
@@ -691,7 +978,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
691
978
  return;
692
979
  }
693
980
  var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertRule' };
694
- if (!this.isImportRules && !this.isInitialLoad) {
981
+ if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {
695
982
  this.trigger('beforeChange', args, function (observedChangeArgs) {
696
983
  _this.addRuleSuccessCallBack(observedChangeArgs, target, rule, column, action, parentId, isRuleTemplate);
697
984
  });
@@ -746,20 +1033,54 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
746
1033
  else {
747
1034
  ruleElem.className = 'e-rule-container e-horizontal-mode';
748
1035
  }
749
- if (ruleElem.previousElementSibling && ruleElem.previousElementSibling.className.indexOf('e-rule-container') > -1) {
750
- if (ruleElem.className.indexOf('e-joined-rule') < 0) {
751
- ruleElem.className += ' e-joined-rule';
1036
+ var previousRuleElem = ruleElem.previousElementSibling;
1037
+ if (this.enableSeparateConnector) {
1038
+ var prevRule = void 0;
1039
+ var ruleContainer = void 0;
1040
+ if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {
1041
+ ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');
1042
+ previousRuleElem = ruleContainer[ruleContainer.length - 1];
1043
+ }
1044
+ if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {
1045
+ prevRule = this.getRule(previousRuleElem);
1046
+ }
1047
+ if (this.headerTemplate && previousRuleElem && prevRule) {
1048
+ this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);
1049
+ }
1050
+ else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
1051
+ var group = ruleElem.closest('.e-group-container');
1052
+ if (group && group.previousElementSibling) {
1053
+ var prevElem = group.previousElementSibling;
1054
+ var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');
1055
+ if (prevElem.classList.contains('e-group-container')) {
1056
+ prevElem = prevRuleContainer[prevRuleContainer.length - 1];
1057
+ }
1058
+ if (prevElem.classList.contains('e-rule-container')) {
1059
+ var prevRule_1 = this.getRule(prevElem);
1060
+ this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);
1061
+ }
1062
+ }
1063
+ else {
1064
+ this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);
1065
+ }
752
1066
  }
753
- if (ruleElem.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {
754
- ruleElem.previousElementSibling.className += ' e-prev-joined-rule';
1067
+ }
1068
+ else {
1069
+ if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {
1070
+ if (ruleElem.className.indexOf('e-joined-rule') < 0) {
1071
+ ruleElem.className += ' e-joined-rule';
1072
+ }
1073
+ if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {
1074
+ previousRuleElem.className += ' e-prev-joined-rule';
1075
+ }
755
1076
  }
756
1077
  }
757
- if (ruleElem.previousElementSibling && ruleElem.previousElementSibling.className.indexOf('e-group-container') > -1 &&
1078
+ if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&
758
1079
  ruleElem.className.indexOf('e-separate-rule') < 0) {
759
1080
  ruleElem.className += ' e-separate-rule';
760
1081
  }
761
1082
  if (!this.isImportRules) {
762
- this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId);
1083
+ this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);
763
1084
  }
764
1085
  if (!column || (column && !column.ruleTemplate) || !rule.field) {
765
1086
  if (this.fieldMode === 'Default') {
@@ -790,7 +1111,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
790
1111
  ddlVal = this.GetRootColumnName(rule.field);
791
1112
  }
792
1113
  else {
793
- ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) : dropDownList.value;
1114
+ ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :
1115
+ dropDownList.value;
794
1116
  }
795
1117
  this.selectedColumn = dropDownList.getDataByValue(ddlVal);
796
1118
  if (Object.keys(rule).length) {
@@ -834,20 +1156,68 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
834
1156
  }
835
1157
  }
836
1158
  ruleID = ruleElem.id.replace(this.element.id + '_', '');
837
- if (!this.isImportRules) {
1159
+ if (rule && rule.isLocked) {
1160
+ var lockRuleTarget = ruleElem.querySelector('.e-lock-rule-btn');
1161
+ this.ruleLock(lockRuleTarget);
1162
+ }
1163
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
838
1164
  this.trigger('change', { groupID: trgt.id.replace(this.element.id + '_', ''), ruleID: ruleID, type: 'insertRule' });
839
1165
  }
840
1166
  }
1167
+ if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {
1168
+ rule = this.getRule(ruleID);
1169
+ }
1170
+ if (this.enableSeparateConnector) {
1171
+ var prevElem = ruleElem.previousElementSibling;
1172
+ var ruleContainer = void 0;
1173
+ while (prevElem && !prevElem.classList.contains('e-rule-container')) {
1174
+ if (prevElem.classList.contains('e-group-container')) {
1175
+ ruleContainer = prevElem.querySelectorAll('.e-rule-container');
1176
+ prevElem = ruleContainer[ruleContainer.length - 1];
1177
+ break;
1178
+ }
1179
+ prevElem = prevElem.previousElementSibling;
1180
+ }
1181
+ if (this.headerTemplate && prevElem) {
1182
+ var prevRule = this.getRule(prevElem);
1183
+ var args_2 = { requestType: 'rule-template-create', ruleID: prevElem.id, condition: prevRule.condition,
1184
+ notCondition: this.enableNotCondition ? true : undefined };
1185
+ this.trigger('actionBegin', args_2);
1186
+ }
1187
+ else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
1188
+ var group = ruleElem.closest('.e-group-container');
1189
+ if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {
1190
+ var prevElem_1 = group.previousElementSibling.previousElementSibling;
1191
+ if (prevElem_1.classList.contains('e-group-container')) {
1192
+ var ruleContainer_1 = prevElem_1.querySelectorAll('.e-rule-container');
1193
+ prevElem_1 = ruleContainer_1[ruleContainer_1.length - 1];
1194
+ }
1195
+ if (prevElem_1.classList.contains('e-rule-container')) {
1196
+ var prevRule = this.getRule(prevElem_1);
1197
+ var args_3 = { requestType: 'rule-template-create', ruleID: prevElem_1.id,
1198
+ condition: prevRule.condition, notCondition: this.enableNotCondition ? true : undefined };
1199
+ this.trigger('actionBegin', args_3);
1200
+ }
1201
+ }
1202
+ }
1203
+ this.setMultiConnector(ruleElem);
1204
+ }
841
1205
  };
842
1206
  QueryBuilder.prototype.updateDropdowntreeDS = function (columns) {
843
1207
  for (var i = 0; i < columns.length; i++) {
844
1208
  if (columns[parseInt(i.toString(), 10)].type === 'object') {
1209
+ if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {
1210
+ delete columns[parseInt(i.toString(), 10)].template;
1211
+ }
845
1212
  columns[parseInt(i.toString(), 10)].selectable = false;
846
1213
  this.updateDropdowntreeDS(columns[parseInt(i.toString(), 10)].columns);
847
1214
  }
1215
+ else if (this.isAngular && columns[parseInt(i.toString(), 10)].template) {
1216
+ delete columns[parseInt(i.toString(), 10)].template;
1217
+ }
848
1218
  }
849
1219
  };
850
- QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId) {
1220
+ QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {
851
1221
  var ruleElem;
852
1222
  var index = 0;
853
1223
  var groupElem;
@@ -858,7 +1228,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
858
1228
  rules = this.getParentGroup(groupElem);
859
1229
  while (ruleElem && ruleElem.previousElementSibling !== null) {
860
1230
  ruleElem = ruleElem.previousElementSibling;
861
- index++;
1231
+ var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
1232
+ (this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
1233
+ ruleElem.classList.contains('e-group-container'))));
1234
+ if (!this.enableSeparateConnector || enableSeparateCondition) {
1235
+ index++;
1236
+ }
862
1237
  }
863
1238
  rules.rules[index] = rule;
864
1239
  }
@@ -876,6 +1251,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
876
1251
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
877
1252
  rules.rules[rules.rules.length - 1].custom = custom;
878
1253
  }
1254
+ if (this.enableSeparateConnector) {
1255
+ rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;
1256
+ }
879
1257
  }
880
1258
  else {
881
1259
  rules.rules.splice(this.ruleIndex + 1, 0, {
@@ -885,6 +1263,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
885
1263
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
886
1264
  rules.rules[this.ruleIndex + 1].custom = custom;
887
1265
  }
1266
+ if (this.enableSeparateConnector) {
1267
+ rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;
1268
+ }
888
1269
  }
889
1270
  }
890
1271
  else {
@@ -898,7 +1279,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
898
1279
  rules.rules.push(newRule);
899
1280
  }
900
1281
  }
901
- this.disableRuleCondition(target, rules);
1282
+ this.disableRuleCondition(target, rules, isNewRuleAdded);
902
1283
  };
903
1284
  QueryBuilder.prototype.changeRuleTemplate = function (column, element) {
904
1285
  var operVal = this.selectedColumn.operators;
@@ -976,7 +1357,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
976
1357
  if (validateRule && validateRule.isRequired) {
977
1358
  while (indexElem && indexElem.previousElementSibling !== null) {
978
1359
  indexElem = indexElem.previousElementSibling;
979
- index++;
1360
+ var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||
1361
+ (this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));
1362
+ if (!this.enableSeparateConnector || separateCondition) {
1363
+ index++;
1364
+ }
980
1365
  }
981
1366
  fieldElem = tempElem.querySelector('.e-rule-operator .e-control');
982
1367
  if (!rule.rules[index].operator) {
@@ -1053,9 +1438,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1053
1438
  obj.level = this.levelColl[obj.groupElement.id].slice();
1054
1439
  return obj;
1055
1440
  };
1056
- QueryBuilder.prototype.groupTemplate = function () {
1441
+ QueryBuilder.prototype.groupTemplate = function (isConnector) {
1057
1442
  var glueElem;
1058
1443
  var inputElem;
1444
+ var dragClsName;
1059
1445
  var labelElem;
1060
1446
  var grpActElem;
1061
1447
  var groupBtn;
@@ -1068,9 +1454,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1068
1454
  groupElem.appendChild(grpBodyElem);
1069
1455
  // create button group in OR and AND process
1070
1456
  if (!this.headerTemplate) {
1071
- glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group', role: 'group' } });
1457
+ if (this.allowDragAndDrop) {
1458
+ dragClsName = 'e-icons e-drag-qb-rule';
1459
+ }
1460
+ else {
1461
+ dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1462
+ }
1463
+ var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
1464
+ title: 'drag handle' } });
1465
+ groupHdrElem.appendChild(spanDragElement);
1466
+ var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
1467
+ glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
1468
+ if (this.enableSeparateConnector) {
1469
+ glueElem.classList.add('e-multi-connector');
1470
+ }
1072
1471
  if (this.enableNotCondition) {
1073
- inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
1472
+ if (this.enableSeparateConnector) {
1473
+ inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });
1474
+ }
1475
+ else {
1476
+ inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
1477
+ }
1074
1478
  glueElem.appendChild(inputElem);
1075
1479
  }
1076
1480
  inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
@@ -1085,8 +1489,16 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1085
1489
  glueElem.appendChild(labelElem);
1086
1490
  groupHdrElem.appendChild(glueElem);
1087
1491
  grpActElem = this.createElement('div', { attrs: { class: 'e-group-action' } });
1088
- groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });
1089
- grpActElem.appendChild(groupBtn);
1492
+ if (this.enableSeparateConnector) {
1493
+ groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });
1494
+ grpActElem.appendChild(groupBtn);
1495
+ groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });
1496
+ grpActElem.appendChild(groupBtn);
1497
+ }
1498
+ else {
1499
+ groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });
1500
+ grpActElem.appendChild(groupBtn);
1501
+ }
1090
1502
  groupHdrElem.appendChild(grpActElem);
1091
1503
  }
1092
1504
  return groupElem;
@@ -1096,9 +1508,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1096
1508
  var clsName;
1097
1509
  var cloneClsName;
1098
1510
  var lockClsName;
1511
+ var dragClsName;
1099
1512
  var ruleElem = this.createElement('div');
1100
1513
  var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });
1101
1514
  tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });
1515
+ if (this.allowDragAndDrop) {
1516
+ dragClsName = 'e-icons e-drag-qb-rule';
1517
+ }
1518
+ else {
1519
+ dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1520
+ }
1521
+ var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
1522
+ title: 'drag handle' } });
1523
+ fieldElem.appendChild(spanDragElement);
1102
1524
  var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
1103
1525
  tempElem.appendChild(filterElem);
1104
1526
  fieldElem.appendChild(tempElem);
@@ -1142,7 +1564,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1142
1564
  QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {
1143
1565
  var _this = this;
1144
1566
  var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };
1145
- if (!this.isImportRules && !this.isInitialLoad) {
1567
+ if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {
1146
1568
  this.trigger('beforeChange', args, function (observedChangeArgs) {
1147
1569
  _this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);
1148
1570
  });
@@ -1153,6 +1575,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1153
1575
  }
1154
1576
  };
1155
1577
  QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {
1578
+ var _this = this;
1156
1579
  if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {
1157
1580
  var target = eventTarget;
1158
1581
  var dltGroupBtn = void 0;
@@ -1163,8 +1586,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1163
1586
  else {
1164
1587
  groupID = target.id;
1165
1588
  }
1589
+ if (this.enableSeparateConnector) {
1590
+ this.groupElem = this.groupTemplate();
1591
+ }
1166
1592
  var groupElem = this.groupElem.cloneNode(true);
1167
1593
  groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);
1594
+ if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {
1595
+ if (groupElem && groupElem.children[0]) {
1596
+ groupElem.children[0].classList.add('e-parent-header');
1597
+ }
1598
+ addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');
1599
+ }
1168
1600
  if (this.headerTemplate) {
1169
1601
  if (isRoot) {
1170
1602
  isGroup = false;
@@ -1217,7 +1649,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1217
1649
  this.isLastGroup = true;
1218
1650
  }
1219
1651
  else {
1220
- childElems[this.groupIndex + 1].parentNode.insertBefore(groupElem, childElems[this.groupIndex + 1]); // clone the element to nxt element
1652
+ if (this.enableSeparateConnector) {
1653
+ var index = 0;
1654
+ var tempGroupIndex = this.groupIndex + 1;
1655
+ for (var i = 0; i < tempGroupIndex; i++) {
1656
+ if (childElems[i].classList.contains('e-rule-container')) {
1657
+ tempGroupIndex++;
1658
+ index++;
1659
+ }
1660
+ }
1661
+ if (index > 0) {
1662
+ index--;
1663
+ }
1664
+ var idx = this.groupIndex + index + 1;
1665
+ childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
1666
+ }
1667
+ else {
1668
+ var idx = this.groupIndex + 1;
1669
+ childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
1670
+ }
1221
1671
  this.isMiddleGroup = true;
1222
1672
  }
1223
1673
  }
@@ -1283,7 +1733,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1283
1733
  if (this.enableNotCondition) {
1284
1734
  if (!this.headerTemplate) {
1285
1735
  var notElem = groupElem.querySelector('.e-qb-toggle');
1286
- var tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });
1736
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1737
+ var tglBtn = void 0;
1738
+ if (this.enableSeparateConnector) {
1739
+ tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });
1740
+ }
1741
+ else {
1742
+ tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });
1743
+ }
1287
1744
  tglBtn.appendTo(notElem);
1288
1745
  groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');
1289
1746
  if (this.updatedRule && this.updatedRule.not) {
@@ -1291,67 +1748,218 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1291
1748
  }
1292
1749
  }
1293
1750
  }
1751
+ if (this.enableSeparateConnector && !this.headerTemplate) {
1752
+ var andElem = groupElem.querySelector('.e-btngroup-and');
1753
+ var orElem = groupElem.querySelector('.e-btngroup-or');
1754
+ var btnGroup = groupElem.querySelector('.e-btn-group');
1755
+ for (var i = 0; i < btnGroup.childNodes.length; i++) {
1756
+ if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {
1757
+ if (!this.enableNotCondition) {
1758
+ btnGroup.childNodes[i].style.display = 'none';
1759
+ }
1760
+ else {
1761
+ btnGroup.childNodes[i].classList.add('e-multiconnector');
1762
+ }
1763
+ }
1764
+ else {
1765
+ btnGroup.childNodes[i].style.display = 'none';
1766
+ }
1767
+ }
1768
+ var prevSibling = groupElem.previousElementSibling;
1769
+ if (prevSibling) {
1770
+ if (isNullOrUndefined(this.headerTemplate)) {
1771
+ groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);
1772
+ var notElem = groupElem.previousElementSibling.childNodes[0];
1773
+ if (notElem.classList.contains('e-qb-toggle')) {
1774
+ notElem.style.display = 'none';
1775
+ }
1776
+ }
1777
+ if (!this.isImportRules) {
1778
+ var groupElement = groupElem.previousElementSibling;
1779
+ var newAndElem = groupElement.querySelector('.e-btngroup-and');
1780
+ var newOrElem = groupElement.querySelector('.e-btngroup-or');
1781
+ if (!andElem.checked && !orElem.checked) {
1782
+ var nextSibling = groupElem.nextElementSibling;
1783
+ if (nextSibling && nextSibling.classList.contains('e-btn-group')) {
1784
+ andElem = nextSibling.querySelector('.e-btngroup-and');
1785
+ orElem = nextSibling.querySelector('.e-btngroup-or');
1786
+ newAndElem.checked = andElem.checked;
1787
+ newOrElem.checked = orElem.checked;
1788
+ }
1789
+ }
1790
+ else if (this.enableSeparateConnector) {
1791
+ if (andElem.checked) {
1792
+ newAndElem.checked = true;
1793
+ }
1794
+ if (orElem.checked) {
1795
+ newOrElem.checked = true;
1796
+ }
1797
+ }
1798
+ }
1799
+ }
1800
+ }
1294
1801
  this.updatedRule = null;
1295
1802
  if (this.headerTemplate) {
1296
- var args_2 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1803
+ var args_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1297
1804
  notCondition: this.enableNotCondition ? not : undefined };
1298
- this.trigger('actionBegin', args_2);
1805
+ this.trigger('actionBegin', args_4);
1299
1806
  }
1300
1807
  else {
1301
- var groupBtn = groupElem.querySelector('.e-add-btn');
1302
- var btnObj = new DropDownButton({
1303
- items: this.items,
1304
- cssClass: 'e-round e-small e-caret-hide e-addrulegroup',
1305
- iconCss: 'e-icons e-add-icon',
1306
- beforeOpen: this.selectBtn.bind(this, groupBtn),
1307
- select: this.selectBtn.bind(this, groupBtn)
1308
- });
1309
- btnObj.appendTo(groupBtn);
1310
- groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));
1808
+ if (this.enableSeparateConnector) {
1809
+ var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');
1810
+ var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });
1811
+ btnObj.appendTo(conditionBtn_1);
1812
+ btnObj.element.onclick = function () {
1813
+ _this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});
1814
+ };
1815
+ var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');
1816
+ btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });
1817
+ btnObj.appendTo(groupBtn_1);
1818
+ btnObj.element.onclick = function () {
1819
+ _this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);
1820
+ };
1821
+ }
1822
+ else {
1823
+ var groupBtn = groupElem.querySelector('.e-add-btn');
1824
+ var btnObj = new DropDownButton({
1825
+ items: this.items,
1826
+ cssClass: 'e-round e-small e-caret-hide e-addrulegroup',
1827
+ iconCss: 'e-icons e-add-icon',
1828
+ beforeOpen: this.selectBtn.bind(this, groupBtn),
1829
+ select: this.selectBtn.bind(this, groupBtn)
1830
+ });
1831
+ btnObj.appendTo(groupBtn);
1832
+ groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));
1833
+ }
1311
1834
  }
1312
- if (!this.isImportRules) {
1835
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
1313
1836
  var grpId = target.id.replace(this.element.id + '_', '');
1314
1837
  var chgrpId = groupElem.id.replace(this.element.id + '_', '');
1315
1838
  this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });
1316
1839
  }
1317
1840
  }
1318
1841
  };
1319
- QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID) {
1842
+ QueryBuilder.prototype.setMultiConnector = function (trgt) {
1843
+ if (this.enableSeparateConnector && !this.headerTemplate) {
1844
+ if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {
1845
+ trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), trgt);
1846
+ var notElem = trgt.previousElementSibling.childNodes[0];
1847
+ if (notElem.classList.contains('e-qb-toggle')) {
1848
+ notElem.style.display = 'none';
1849
+ }
1850
+ this.addHeaderDiv(trgt);
1851
+ }
1852
+ }
1853
+ };
1854
+ QueryBuilder.prototype.addHeaderDiv = function (elem) {
1855
+ var prevRule;
1856
+ var prevElem = elem.previousElementSibling.previousElementSibling;
1857
+ if (prevElem) {
1858
+ if (prevElem.id.indexOf('rule') > -1) {
1859
+ prevRule = this.getRule(prevElem);
1860
+ }
1861
+ else {
1862
+ prevRule = this.getGroup(prevElem);
1863
+ }
1864
+ if (isNullOrUndefined(prevRule.condition)) {
1865
+ prevRule.condition = 'and';
1866
+ }
1867
+ var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');
1868
+ var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');
1869
+ orElem.disabled = false;
1870
+ andElem.disabled = false;
1871
+ if (prevRule.condition === 'or') {
1872
+ orElem.checked = true;
1873
+ }
1874
+ else {
1875
+ andElem.checked = true;
1876
+ }
1877
+ }
1878
+ };
1879
+ QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {
1320
1880
  var template;
1321
1881
  var templateID = this.element.id + '_header';
1322
1882
  var args;
1323
1883
  var groupHdr = groupElem.querySelector('.e-group-header');
1884
+ if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1885
+ groupHdr = groupElem;
1886
+ }
1324
1887
  if (this.headerTemplate) {
1325
1888
  args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
1326
1889
  notCondition: this.enableNotCondition ? not : undefined,
1327
1890
  condition: condition, rule: this.getRuleCollection(rule, true), groupID: groupID };
1328
1891
  this.trigger('actionBegin', args);
1892
+ if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1893
+ args.requestType = 'rule-template-create';
1894
+ }
1329
1895
  this.headerFn = this.templateParser(this.headerTemplate);
1330
1896
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1331
1897
  if (this.isReact) {
1332
1898
  template = this.headerFn(args, this, groupElem.id, templateID)[0];
1333
- groupHdr.appendChild(template);
1899
+ if (this.enableSeparateConnector && isInitialRule) {
1900
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1901
+ }
1902
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1903
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1904
+ }
1905
+ else {
1906
+ groupHdr.appendChild(template);
1907
+ }
1334
1908
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1335
1909
  }
1336
1910
  else if (this.isAngular) {
1337
1911
  var templateColl = this.headerFn(args, this, groupElem.id, templateID);
1338
1912
  template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];
1339
- groupHdr.appendChild(template);
1913
+ if (this.enableSeparateConnector && isInitialRule) {
1914
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1915
+ }
1916
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1917
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1918
+ }
1919
+ else {
1920
+ groupHdr.appendChild(template);
1921
+ }
1340
1922
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1341
1923
  }
1342
1924
  else if (this.isVue3) {
1343
1925
  template = this.headerFn(args, this, groupElem.id, templateID);
1344
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1345
- append(template, groupHdr);
1926
+ if (this.enableSeparateConnector && isInitialRule) {
1927
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1928
+ }
1929
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1930
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1931
+ }
1932
+ else {
1933
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1934
+ append(template, groupHdr);
1935
+ }
1346
1936
  }
1347
1937
  else {
1348
1938
  template = this.headerFn(args, this, 'Template', templateID)[0];
1349
- groupHdr.appendChild(template);
1939
+ if (this.enableSeparateConnector && isInitialRule) {
1940
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1941
+ }
1942
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1943
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1944
+ }
1945
+ else {
1946
+ groupHdr.appendChild(template);
1947
+ }
1350
1948
  }
1351
1949
  this.renderReactTemplates();
1352
1950
  }
1353
1951
  return groupElem;
1354
1952
  };
1953
+ QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {
1954
+ var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;
1955
+ var group = elem.closest('.e-group-container');
1956
+ if (!groupElem.nextElementSibling && group) {
1957
+ group = group.nextElementSibling ? group.nextElementSibling : group;
1958
+ }
1959
+ if (group) {
1960
+ group.parentElement.insertBefore(template, group);
1961
+ }
1962
+ };
1355
1963
  /**
1356
1964
  * Notify the changes to component.
1357
1965
  *
@@ -1370,12 +1978,29 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1370
1978
  return;
1371
1979
  }
1372
1980
  if (type === 'condition') {
1373
- rules.condition = value;
1981
+ if (this.enableSeparateConnector) {
1982
+ ruleElement = element.parentElement.previousElementSibling;
1983
+ if (ruleElement && ruleElement.classList.contains('e-group-container')) {
1984
+ ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];
1985
+ }
1986
+ if (ruleElement && ruleElement.classList.contains('e-rule-container')) {
1987
+ rules = this.getRule(ruleElement);
1988
+ }
1989
+ rules.condition = value;
1990
+ }
1991
+ else {
1992
+ rules.condition = value;
1993
+ }
1374
1994
  return;
1375
1995
  }
1376
1996
  while (ruleElement && ruleElement.previousElementSibling !== null) {
1377
1997
  ruleElement = ruleElement.previousElementSibling;
1378
- index++;
1998
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
1999
+ ((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||
2000
+ this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||
2001
+ ruleElement.classList.contains('e-group-container'))))) {
2002
+ index++;
2003
+ }
1379
2004
  }
1380
2005
  var rule = rules.rules[index];
1381
2006
  var column = this.getColumn(rule.field);
@@ -1412,7 +2037,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1412
2037
  }
1413
2038
  while (ruleElem && ruleElem.previousElementSibling !== null) {
1414
2039
  ruleElem = ruleElem.previousElementSibling;
1415
- index++;
2040
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
2041
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
2042
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
2043
+ ruleElem.classList.contains('e-group-container'))))) {
2044
+ index++;
2045
+ }
1416
2046
  }
1417
2047
  var rule = rules.rules[index];
1418
2048
  if (type === 'field') {
@@ -1469,12 +2099,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1469
2099
  else {
1470
2100
  ruleElement.className = 'e-rule-container e-horizontal-mode';
1471
2101
  }
1472
- if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {
1473
- if (ruleElement.className.indexOf('e-joined-rule') < 0) {
1474
- ruleElement.className += ' e-joined-rule';
1475
- }
1476
- if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {
1477
- ruleElement.previousElementSibling.className += ' e-prev-joined-rule';
2102
+ if (!this.enableSeparateConnector) {
2103
+ if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {
2104
+ if (ruleElement.className.indexOf('e-joined-rule') < 0) {
2105
+ ruleElement.className += ' e-joined-rule';
2106
+ }
2107
+ if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {
2108
+ ruleElement.previousElementSibling.className += ' e-prev-joined-rule';
2109
+ }
1478
2110
  }
1479
2111
  }
1480
2112
  if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&
@@ -1539,8 +2171,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1539
2171
  var value;
1540
2172
  var rbValue;
1541
2173
  if (element.className.indexOf('e-radio') > -1) {
1542
- // eslint-disable-next-line
1543
- rbValue = parseInt(element.id.split('valuekey')[1], 0);
2174
+ rbValue = parseInt(element.id.split('valuekey')[1], 10);
1544
2175
  if (this.fieldMode === 'Default') {
1545
2176
  dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');
1546
2177
  this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
@@ -1570,7 +2201,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1570
2201
  if (args.type === 'input' && args.currentTarget) {
1571
2202
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1572
2203
  value = Number(args.currentTarget.value);
1573
- var numericTextBoxObj = getInstance(args.currentTarget, NumericTextBox);
2204
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2205
+ var elem = args.currentTarget;
2206
+ var numericTextBoxObj = getInstance(elem, NumericTextBox);
1574
2207
  numericTextBoxObj.value = value;
1575
2208
  this.isNumInput = true;
1576
2209
  }
@@ -1679,7 +2312,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1679
2312
  var index = 0;
1680
2313
  while (ruleElem && ruleElem.previousElementSibling !== null) {
1681
2314
  ruleElem = ruleElem.previousElementSibling;
1682
- index++;
2315
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
2316
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
2317
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
2318
+ ruleElem.classList.contains('e-group-container'))))) {
2319
+ index++;
2320
+ }
1683
2321
  }
1684
2322
  rules.rules[index].value = '';
1685
2323
  this.changeRule(rules.rules[index], args);
@@ -1725,7 +2363,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1725
2363
  var ruleID = ruleElem.id.replace(this.element.id + '_', '');
1726
2364
  var eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
1727
2365
  dl.value[0] : dl.value, cancel: false, type: 'field' };
1728
- if (!this.isImportRules) {
2366
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
1729
2367
  this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
1730
2368
  _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
1731
2369
  });
@@ -1896,7 +2534,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1896
2534
  if (valElem && this.getColumn(rule.field).template) {
1897
2535
  filterElem = operatorElem.previousElementSibling;
1898
2536
  }
1899
- if (valElem.children.length == 0) {
2537
+ if (valElem.children.length === 0) {
1900
2538
  filterElem = operatorElem.previousElementSibling;
1901
2539
  }
1902
2540
  this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
@@ -1950,7 +2588,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1950
2588
  value = '';
1951
2589
  ddlIdx = -1;
1952
2590
  }
1953
- if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1)) {
2591
+ if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {
1954
2592
  value = rule ? (rule.operator ? rule.operator : value) : value;
1955
2593
  }
1956
2594
  var ddlOperator = void 0;
@@ -2181,7 +2819,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2181
2819
  };
2182
2820
  var this_2 = this;
2183
2821
  for (var i = 0, iLen = dataSource.length; i < iLen; i++) {
2184
- _loop_2(i, iLen);
2822
+ _loop_2(i);
2185
2823
  }
2186
2824
  return result;
2187
2825
  };
@@ -2335,14 +2973,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2335
2973
  var columnData = this.getItemData(parentId);
2336
2974
  var selectedValue;
2337
2975
  var isTemplate = (typeof columnData.template === 'string');
2338
- if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value != '') {
2976
+ if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {
2339
2977
  selectedValue = rule.value;
2340
2978
  }
2341
2979
  else {
2342
2980
  selectedValue = this.setDefaultValue(parentId, false, false);
2343
2981
  }
2344
2982
  if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
2345
- selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
2983
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
2984
+ this.setDefaultValue(parentId, true, false);
2346
2985
  this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
2347
2986
  if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
2348
2987
  ruleValElem.style.width = '100%';
@@ -2354,7 +2993,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2354
2993
  }
2355
2994
  else {
2356
2995
  if (operator === 'in' || operator === 'notin') {
2357
- selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
2996
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
2997
+ this.setDefaultValue(parentId, true, false);
2358
2998
  selectedValue = selectedVal.join(',');
2359
2999
  }
2360
3000
  var txtBox = void 0;
@@ -2374,9 +3014,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2374
3014
  QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
2375
3015
  var columnData = this.getItemData(parentId);
2376
3016
  var isTemplate = (typeof columnData.template === 'string');
2377
- var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);
3017
+ var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||
3018
+ typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);
2378
3019
  if ((operator === 'in' || operator === 'notin') && (this.dataColl.length || columnData.values)) {
2379
- selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
3020
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
3021
+ this.setDefaultValue(parentId, true, false);
2380
3022
  this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
2381
3023
  if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
2382
3024
  ruleValElem.style.width = '100%';
@@ -2387,7 +3029,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2387
3029
  }
2388
3030
  }
2389
3031
  else if (operator === 'in' || operator === 'notin') {
2390
- selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
3032
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
3033
+ this.setDefaultValue(parentId, true, false);
2391
3034
  var selVal = selectedVal.join(',');
2392
3035
  var txtInp = void 0;
2393
3036
  txtInp = {
@@ -2849,10 +3492,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2849
3492
  }
2850
3493
  var controlName = element.className.split(' e-')[idx];
2851
3494
  var i = parseInt(element.id.slice(-1), 2);
3495
+ var column;
3496
+ var format;
3497
+ var selectedDate;
3498
+ var value;
3499
+ var radioBtnObj;
2852
3500
  switch (controlName) {
2853
3501
  case 'checkbox':
2854
- // eslint-disable-next-line
2855
- var value = getComponent(element, controlName).value;
3502
+ value = getComponent(element, controlName).value;
2856
3503
  rule.value = (value !== '') ? value : undefined;
2857
3504
  break;
2858
3505
  case 'textbox':
@@ -2862,8 +3509,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2862
3509
  rule.value = getComponent(element, controlName).value;
2863
3510
  break;
2864
3511
  case 'radio':
2865
- // eslint-disable-next-line
2866
- var radioBtnObj = getComponent(element, controlName);
3512
+ radioBtnObj = getComponent(element, controlName);
2867
3513
  if (radioBtnObj.checked) {
2868
3514
  if (typeof rule.value === 'boolean') {
2869
3515
  rule.value = radioBtnObj.value === 'true';
@@ -2891,12 +3537,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2891
3537
  }
2892
3538
  break;
2893
3539
  case 'datepicker':
2894
- // eslint-disable-next-line
2895
- var column = this.getColumn(rule.field);
2896
- // eslint-disable-next-line
2897
- var format = this.getFormat(column.format);
2898
- // eslint-disable-next-line
2899
- var selectedDate = getComponent(element, controlName).value;
3540
+ column = this.getColumn(rule.field);
3541
+ format = this.getFormat(column.format);
3542
+ selectedDate = getComponent(element, controlName).value;
2900
3543
  if (rule.operator.indexOf('between') > -1) {
2901
3544
  if (typeof rule.value === 'string') {
2902
3545
  rule.value = [];
@@ -2929,7 +3572,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2929
3572
  var beforeRules = this.getValidRules(this.rule);
2930
3573
  while (ruleElem && ruleElem.previousElementSibling !== null) {
2931
3574
  ruleElem = ruleElem.previousElementSibling;
2932
- index++;
3575
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
3576
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
3577
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
3578
+ ruleElem.classList.contains('e-group-container'))))) {
3579
+ index++;
3580
+ }
2933
3581
  }
2934
3582
  var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';
2935
3583
  ruleElem = closest(target, '.e-rule-container');
@@ -2978,7 +3626,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2978
3626
  }
2979
3627
  this.updateValues(elementCln[i_1], rule.rules[index]);
2980
3628
  }
2981
- if (!this.isImportRules) {
3629
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
2982
3630
  this.trigger('change', eventsArgs);
2983
3631
  }
2984
3632
  if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {
@@ -3023,7 +3671,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3023
3671
  var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });
3024
3672
  var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });
3025
3673
  if (beforeRuleStr !== afetrRuleStr) {
3026
- if (!this.isImportRules) {
3674
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3027
3675
  this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });
3028
3676
  }
3029
3677
  }
@@ -3190,7 +3838,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3190
3838
  var len;
3191
3839
  var tooltip;
3192
3840
  _super.prototype.destroy.call(this);
3193
- var popupElement;
3194
3841
  element = this.element.querySelectorAll('.e-addrulegroup');
3195
3842
  len = element.length;
3196
3843
  for (i = 0; i < len; i++) {
@@ -3236,7 +3883,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3236
3883
  if (this.portals && this.portals.length) {
3237
3884
  this.clearQBTemplate();
3238
3885
  }
3239
- popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
3886
+ var popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
3240
3887
  if (popupElement) {
3241
3888
  for (i = 0; i < popupElement.length; i++) {
3242
3889
  popupElement[i].remove();
@@ -3309,7 +3956,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3309
3956
  }
3310
3957
  }
3311
3958
  if (!this.headerTemplate) {
3312
- this.disableRuleCondition(groupElem, rule);
3959
+ this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);
3313
3960
  }
3314
3961
  }
3315
3962
  };
@@ -3318,6 +3965,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3318
3965
  if (this.cssClass) {
3319
3966
  addClass([this.element], this.cssClass.replace(/\s+/g, ' ').trim().split(' '));
3320
3967
  }
3968
+ if (this.enableSeparateConnector) {
3969
+ addClass([this.element], 'e-multi-connector');
3970
+ }
3321
3971
  if (this.enableRtl) {
3322
3972
  addClass([this.element], 'e-rtl');
3323
3973
  }
@@ -3354,14 +4004,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3354
4004
  }
3355
4005
  }
3356
4006
  else {
3357
- if (this.columns.length && this.isImportRules) {
4007
+ if (this.columns && this.columns.length && this.isImportRules) {
3358
4008
  this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);
3359
4009
  var mRules = extend({}, this.rule, {}, true);
3360
4010
  this.isRefreshed = true;
3361
4011
  this.setGroupRules(mRules);
3362
4012
  this.isRefreshed = false;
3363
4013
  }
3364
- else if (this.columns.length) {
4014
+ else if (this.columns && this.columns.length) {
3365
4015
  this.addRuleElement(this.element.querySelector('.e-group-container'), {});
3366
4016
  }
3367
4017
  this.notGroupRtl();
@@ -3415,8 +4065,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3415
4065
  this.groupIdCounter = 0;
3416
4066
  if (!this.headerTemplate) {
3417
4067
  if (this.enableNotCondition) {
3418
- if (this.enableNotCondition) {
3419
- var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
4068
+ var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
4069
+ if (this.groupElem.querySelector('.e-btn-group')) {
3420
4070
  this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));
3421
4071
  }
3422
4072
  }
@@ -3457,14 +4107,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3457
4107
  };
3458
4108
  QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {
3459
4109
  var properties = Object.keys(newProp);
4110
+ var groupElem = this.element.querySelector('.e-group-container');
4111
+ var summaryElem = this.element.querySelector('.e-summary-content');
3460
4112
  for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {
3461
4113
  var prop = properties_1[_i];
3462
4114
  switch (prop) {
3463
4115
  case 'summaryView':
3464
- // eslint-disable-next-line
3465
- var groupElem = this.element.querySelector('.e-group-container');
3466
- // eslint-disable-next-line
3467
- var summaryElem = this.element.querySelector('.e-summary-content');
3468
4116
  if (newProp.summaryView) {
3469
4117
  groupElem.style.display = 'none';
3470
4118
  if (this.element.querySelectorAll('.e-summary-content').length < 1) {
@@ -3604,6 +4252,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3604
4252
  this.isReadonly = newProp.readonly;
3605
4253
  this.enableReadonly();
3606
4254
  break;
4255
+ case 'allowDragAndDrop':
4256
+ this.allowDragAndDrop = newProp.allowDragAndDrop;
4257
+ this.refresh();
4258
+ break;
4259
+ case 'enableSeparateConnector':
4260
+ this.enableSeparateConnector = newProp.enableSeparateConnector;
4261
+ this.refresh();
4262
+ break;
3607
4263
  }
3608
4264
  }
3609
4265
  };
@@ -3761,6 +4417,134 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3761
4417
  this.initControl();
3762
4418
  }
3763
4419
  this.renderComplete();
4420
+ if (this.allowDragAndDrop) {
4421
+ this.initializeDrag();
4422
+ }
4423
+ };
4424
+ QueryBuilder.prototype.initializeDrag = function () {
4425
+ this.draggable = new Draggable(this.element, {
4426
+ dragTarget: '.e-drag-qb-rule',
4427
+ distance: 5,
4428
+ helper: this.helper.bind(this),
4429
+ dragStart: this.dragStartHandler.bind(this),
4430
+ drag: this.dragHandler.bind(this),
4431
+ dragStop: this.dragStopHandler.bind(this),
4432
+ isReplaceDragEle: true,
4433
+ isPreventSelect: false,
4434
+ abort: '.e-parent-header',
4435
+ isDragScroll: true
4436
+ });
4437
+ };
4438
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4439
+ QueryBuilder.prototype.helper = function (e) {
4440
+ var target = this.draggable.currentStateTarget;
4441
+ if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {
4442
+ return false;
4443
+ }
4444
+ var visualElement = this.createElement('div', {
4445
+ className: 'e-cloneproperties e-draganddrop e-dragclone',
4446
+ styles: 'height:"auto", z-index:2, width:' + this.element.offsetWidth
4447
+ });
4448
+ var cloneElement;
4449
+ if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
4450
+ cloneElement = closest(target, '.e-group-container').cloneNode(true);
4451
+ closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');
4452
+ }
4453
+ else {
4454
+ visualElement.classList.add('e-group-body');
4455
+ cloneElement = this.createElement('div', { className: 'e-rule-container' });
4456
+ var ruleElement = closest(target, '.e-rule-field').cloneNode(true);
4457
+ cloneElement.appendChild(ruleElement);
4458
+ closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');
4459
+ }
4460
+ visualElement.appendChild(cloneElement);
4461
+ var childElements = visualElement.querySelectorAll('*');
4462
+ childElements.forEach(function (child) {
4463
+ child.removeAttribute('id');
4464
+ });
4465
+ this.element.appendChild(visualElement);
4466
+ return visualElement;
4467
+ };
4468
+ QueryBuilder.prototype.dragStartHandler = function (e) {
4469
+ this.draggedRule = e.target;
4470
+ this.isDragEventPrevent = false;
4471
+ document.body.classList.add('e-prevent-select');
4472
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4473
+ this.dragElement = e.dragElement;
4474
+ var rule = closest(e.target, '.e-rule-container');
4475
+ var group = closest(e.target, '.e-group-container');
4476
+ var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };
4477
+ this.trigger('dragStart', dragEventArgs);
4478
+ this.isDragEventPrevent = dragEventArgs.cancel;
4479
+ };
4480
+ QueryBuilder.prototype.dragHandler = function (e) {
4481
+ if (this.isDragEventPrevent) {
4482
+ return;
4483
+ }
4484
+ var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
4485
+ borderLineElem.forEach(function (ele) {
4486
+ ele.classList.remove('e-drag-rule-bottom-line');
4487
+ });
4488
+ borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
4489
+ borderLineElem.forEach(function (ele) {
4490
+ ele.classList.remove('e-drag-rule-top-line');
4491
+ });
4492
+ if (isNullOrUndefined(e.target)) {
4493
+ return;
4494
+ }
4495
+ if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||
4496
+ !closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {
4497
+ this.dragElement.classList.add('e-notallowedcur');
4498
+ return;
4499
+ }
4500
+ else {
4501
+ this.dragElement.classList.remove('e-notallowedcur');
4502
+ }
4503
+ var targetElem = closest(e.target, '.e-rule-container');
4504
+ var grpElem = closest(e.target, '.e-group-container');
4505
+ if (targetElem) {
4506
+ var rect = targetElem.getBoundingClientRect();
4507
+ var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
4508
+ var distanceToTop = mouseY - rect.top;
4509
+ var distanceToBottom = rect.bottom - mouseY;
4510
+ var threshold = 20; // Adjust as needed
4511
+ if (distanceToTop < threshold) {
4512
+ targetElem.classList.add('e-drag-rule-top-line');
4513
+ }
4514
+ else if (distanceToBottom < threshold) {
4515
+ targetElem.classList.add('e-drag-rule-bottom-line');
4516
+ }
4517
+ }
4518
+ else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {
4519
+ e.target.classList.add('e-drag-rule-bottom-line');
4520
+ }
4521
+ else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {
4522
+ var rect = e.target.children[0].getBoundingClientRect();
4523
+ var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
4524
+ var distanceToTop = mouseY - rect.top;
4525
+ var threshold = 20; // Adjust as needed
4526
+ if (distanceToTop < threshold) {
4527
+ e.target.classList.add('e-drag-rule-top-line');
4528
+ }
4529
+ }
4530
+ else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {
4531
+ if (!grpElem) {
4532
+ grpElem = e.target;
4533
+ }
4534
+ if (grpElem.id.indexOf('group0') > -1) {
4535
+ var rect = e.target.getBoundingClientRect();
4536
+ var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
4537
+ var distanceToBottom = rect.bottom - mouseY;
4538
+ var threshold = 20; // Adjust as needed
4539
+ if (distanceToBottom < threshold) {
4540
+ e.target.classList.add('e-drag-rule-bottom-line');
4541
+ }
4542
+ }
4543
+ }
4544
+ var dragEventArgs = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
4545
+ dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };
4546
+ this.trigger('drag', dragEventArgs);
4547
+ this.isDragEventPrevent = dragEventArgs.cancel;
3764
4548
  };
3765
4549
  QueryBuilder.prototype.templateParser = function (template) {
3766
4550
  if (template) {
@@ -3805,6 +4589,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3805
4589
  EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
3806
4590
  EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
3807
4591
  EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
4592
+ EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
3808
4593
  };
3809
4594
  QueryBuilder.prototype.unWireEvents = function () {
3810
4595
  var wrapper = this.getWrapper();
@@ -3812,6 +4597,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3812
4597
  EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
3813
4598
  EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
3814
4599
  EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
4600
+ EventHandler.remove(document, 'keydown', this.keyBoardHandler);
3815
4601
  };
3816
4602
  QueryBuilder.prototype.getParentGroup = function (target, isParent) {
3817
4603
  var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
@@ -3840,7 +4626,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3840
4626
  groupId = groupElem.id.replace(this.element.id + '_', '');
3841
4627
  }
3842
4628
  var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };
3843
- if (!this.isImportRules) {
4629
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3844
4630
  this.trigger('beforeChange', args, function (observedChangeArgs) {
3845
4631
  _this.deleteGroupSuccessCallBack(observedChangeArgs, target);
3846
4632
  });
@@ -3870,13 +4656,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3870
4656
  }
3871
4657
  while (groupElem.previousElementSibling !== null) {
3872
4658
  groupElem = groupElem.previousElementSibling;
3873
- index++;
4659
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
4660
+ ((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||
4661
+ this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||
4662
+ groupElem.classList.contains('e-group-container'))))) {
4663
+ index++;
4664
+ }
3874
4665
  }
3875
- if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {
3876
- removeClass([nextElem], 'e-separate-rule');
3877
- addClass([nextElem], 'e-joined-rule');
3878
- if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {
3879
- addClass([prevElem], 'e-prev-joined-rule');
4666
+ if (!this.enableSeparateConnector) {
4667
+ if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {
4668
+ removeClass([nextElem], 'e-separate-rule');
4669
+ addClass([nextElem], 'e-joined-rule');
4670
+ if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {
4671
+ addClass([prevElem], 'e-prev-joined-rule');
4672
+ }
3880
4673
  }
3881
4674
  }
3882
4675
  var elem = groupElem.parentElement.parentElement.parentElement;
@@ -3908,7 +4701,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3908
4701
  delete this.levelColl[args.groupID];
3909
4702
  this.refreshLevelColl();
3910
4703
  this.disableRuleCondition(elem, rule);
3911
- if (!this.isImportRules) {
4704
+ if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||
4705
+ (this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {
4706
+ detach(prevElem);
4707
+ }
4708
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3912
4709
  this.trigger('change', args);
3913
4710
  }
3914
4711
  this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');
@@ -3925,7 +4722,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3925
4722
  var groupID = groupElem.id.replace(this.element.id + '_', '');
3926
4723
  var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');
3927
4724
  var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };
3928
- if (!this.isImportRules) {
4725
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3929
4726
  this.trigger('beforeChange', args, function (observedChangeArgs) {
3930
4727
  _this.deleteRuleSuccessCallBack(observedChangeArgs, target);
3931
4728
  });
@@ -3940,10 +4737,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3940
4737
  var rule = this.getParentGroup(groupElem);
3941
4738
  var ruleElem = closest(target, '.e-rule-container');
3942
4739
  var beforeRules = this.getValidRules(this.rule);
3943
- var clnruleElem = ruleElem;
3944
- var nextElem = ruleElem.nextElementSibling;
3945
4740
  var prevElem = ruleElem.previousElementSibling;
3946
4741
  var index = 0;
4742
+ var clnruleElem = ruleElem;
4743
+ var nextElem = ruleElem.nextElementSibling;
3947
4744
  var valElem = ruleElem.querySelectorAll('.e-tooltip');
3948
4745
  var i = void 0;
3949
4746
  var len = valElem.length;
@@ -3952,7 +4749,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3952
4749
  }
3953
4750
  while (ruleElem.previousElementSibling !== null) {
3954
4751
  ruleElem = ruleElem.previousElementSibling;
3955
- index++;
4752
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
4753
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
4754
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
4755
+ ruleElem.classList.contains('e-group-container'))))) {
4756
+ index++;
4757
+ }
3956
4758
  }
3957
4759
  var column = this.getColumn(rule.rules[index].field);
3958
4760
  if (column && column.template && clnruleElem.querySelector('.e-template')) {
@@ -3971,17 +4773,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3971
4773
  var isTemplateRendered = clnruleElem.querySelector('.e-template-value');
3972
4774
  // eslint-disable
3973
4775
  try {
4776
+ if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {
4777
+ var previousElem = clnruleElem.previousElementSibling;
4778
+ var nextElem_1 = clnruleElem.nextElementSibling;
4779
+ if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))
4780
+ || (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {
4781
+ if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {
4782
+ var rule_1 = this.getRule(previousElem.previousElementSibling);
4783
+ rule_1.condition = null;
4784
+ }
4785
+ detach(previousElem);
4786
+ }
4787
+ else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))
4788
+ || (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {
4789
+ detach(nextElem_1);
4790
+ }
4791
+ }
3974
4792
  detach(clnruleElem);
3975
4793
  }
3976
4794
  catch (err) {
3977
- // eslint-disable-next-line no-ex-assign
3978
- err = [];
3979
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
3980
- var error = 'error';
3981
- // eslint-disable-next-line
3982
- err[error] = error;
4795
+ return;
3983
4796
  }
3984
- // eslint-enable
3985
4797
  if (column && column.ruleTemplate) {
3986
4798
  this.clearQBTemplate([clnruleElem.id]);
3987
4799
  }
@@ -3990,13 +4802,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3990
4802
  }
3991
4803
  rule.rules.splice(index, 1);
3992
4804
  if (!(rule.rules[0] && rule.rules[0].rules)) {
3993
- this.disableRuleCondition(groupElem, rule);
4805
+ this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);
3994
4806
  }
3995
4807
  var tooltipElem = this.element.querySelectorAll('.e-tooltip');
3996
4808
  for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {
3997
4809
  getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);
3998
4810
  }
3999
- if (!this.isImportRules) {
4811
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
4000
4812
  this.trigger('change', args);
4001
4813
  }
4002
4814
  this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');
@@ -4020,9 +4832,32 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4020
4832
  this.isImportRules = false;
4021
4833
  };
4022
4834
  QueryBuilder.prototype.keyBoardHandler = function (e) {
4023
- if (this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
4835
+ if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
4024
4836
  e.preventDefault();
4025
4837
  }
4838
+ else if (e.code === 'Escape' && this.allowDragAndDrop) {
4839
+ this.isDragEventPrevent = true;
4840
+ document.body.classList.remove('e-prevent-select');
4841
+ var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
4842
+ borderLineElem.forEach(function (ele) {
4843
+ ele.classList.remove('e-drag-rule-bottom-line');
4844
+ });
4845
+ borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
4846
+ borderLineElem.forEach(function (ele) {
4847
+ ele.classList.remove('e-drag-rule-top-line');
4848
+ });
4849
+ borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');
4850
+ borderLineElem.forEach(function (ele) {
4851
+ ele.classList.remove('e-qb-dragging-rule');
4852
+ });
4853
+ var dragElemnet = this.element.querySelector('.e-cloneproperties');
4854
+ if (dragElemnet) {
4855
+ remove(dragElemnet);
4856
+ }
4857
+ if (this.enableSeparateConnector) {
4858
+ this.refresh();
4859
+ }
4860
+ }
4026
4861
  };
4027
4862
  QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {
4028
4863
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -4030,7 +4865,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4030
4865
  this.clearTemplate(ruleElemColl);
4031
4866
  }
4032
4867
  };
4033
- QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules) {
4868
+ QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {
4034
4869
  if (!this.headerTemplate) {
4035
4870
  if (this.readonly) {
4036
4871
  return;
@@ -4046,21 +4881,124 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4046
4881
  orElem.nextElementSibling.classList.remove('e-btn-disable');
4047
4882
  andElem.nextElementSibling.classList.remove('e-btn-disable');
4048
4883
  }
4049
- if (rules && rules.condition === 'or') {
4050
- orElem.checked = true;
4884
+ if (this.enableSeparateConnector && !isNewRuleAdded) {
4885
+ var index = 0;
4886
+ var element = void 0;
4887
+ // eslint-disable-next-line no-constant-condition
4888
+ while (true) {
4889
+ var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
4890
+ var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
4891
+ andElem = andGroup[andGroup.length - (1 + index)];
4892
+ orElem = orGroup[orGroup.length - (1 + index)];
4893
+ element = andGroup[andGroup.length - (1 + index)];
4894
+ if (element && element.parentElement && element.parentElement.style.display === 'none') {
4895
+ index++;
4896
+ }
4897
+ else {
4898
+ break;
4899
+ }
4900
+ }
4901
+ var elem = groupElem.previousElementSibling;
4902
+ while (elem && !elem.classList.contains('e-rule-container')) {
4903
+ if (elem.classList.contains('e-group-container')) {
4904
+ elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
4905
+ break;
4906
+ }
4907
+ elem = elem.previousElementSibling;
4908
+ }
4909
+ if (isNewGroup && groupElem.classList.contains('e-group-container')) {
4910
+ elem = groupElem;
4911
+ var prevRule = this.getGroup(elem);
4912
+ if (prevRule.condition === 'or') {
4913
+ orElem.checked = true;
4914
+ }
4915
+ else {
4916
+ andElem.checked = true;
4917
+ }
4918
+ }
4919
+ else if (elem && elem.classList.contains('e-rule-container')) {
4920
+ var ruleID = elem.id.replace(this.element.id + '_', '');
4921
+ var prevRule = this.getRule(ruleID);
4922
+ if (prevRule.condition === 'or') {
4923
+ orElem.checked = true;
4924
+ }
4925
+ else {
4926
+ andElem.checked = true;
4927
+ }
4928
+ }
4051
4929
  }
4052
- else {
4053
- andElem.checked = true;
4930
+ else if (!isNewRuleAdded) {
4931
+ if (rules && rules.condition === 'or') {
4932
+ orElem.checked = true;
4933
+ }
4934
+ else {
4935
+ andElem.checked = true;
4936
+ }
4054
4937
  }
4055
4938
  }
4056
4939
  else {
4057
- andElem.checked = false;
4058
- andElem.disabled = true;
4059
- orElem.checked = false;
4060
- orElem.disabled = true;
4061
- if (rules) {
4062
- orElem.nextElementSibling.classList.add('e-btn-disable');
4063
- andElem.nextElementSibling.classList.add('e-btn-disable');
4940
+ if (this.enableSeparateConnector && !isNewRuleAdded) {
4941
+ var index = 0;
4942
+ var element = void 0;
4943
+ // eslint-disable-next-line no-constant-condition
4944
+ while (true) {
4945
+ var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
4946
+ var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
4947
+ andElem = andGroup[andGroup.length - (1 + index)];
4948
+ orElem = orGroup[orGroup.length - (1 + index)];
4949
+ element = andGroup[andGroup.length - (1 + index)];
4950
+ if (element && element.parentElement && element.parentElement.style.display === 'none') {
4951
+ index++;
4952
+ }
4953
+ else {
4954
+ break;
4955
+ }
4956
+ }
4957
+ var elem = void 0;
4958
+ var tempElem = groupElem.previousElementSibling;
4959
+ while (tempElem) {
4960
+ if (tempElem.classList.contains('e-group-container')) {
4961
+ tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];
4962
+ }
4963
+ if (tempElem.classList.contains('e-rule-container')) {
4964
+ elem = tempElem;
4965
+ break;
4966
+ }
4967
+ tempElem = tempElem.previousElementSibling;
4968
+ }
4969
+ if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {
4970
+ elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];
4971
+ }
4972
+ if (isNewGroup && groupElem.classList.contains('e-group-container')) {
4973
+ elem = groupElem;
4974
+ var prevRule = this.getGroup(elem);
4975
+ if (prevRule.condition === 'or') {
4976
+ orElem.checked = true;
4977
+ }
4978
+ else {
4979
+ andElem.checked = true;
4980
+ }
4981
+ }
4982
+ else if (elem) {
4983
+ var ruleID = elem.id.replace(this.element.id + '_', '');
4984
+ var prevRule = this.getRule(ruleID);
4985
+ if (prevRule.condition === 'or' && orElem) {
4986
+ orElem.checked = true;
4987
+ }
4988
+ else if (andElem) {
4989
+ andElem.checked = true;
4990
+ }
4991
+ }
4992
+ }
4993
+ else if (!isNewRuleAdded) {
4994
+ andElem.checked = false;
4995
+ andElem.disabled = true;
4996
+ orElem.checked = false;
4997
+ orElem.disabled = true;
4998
+ if (rules) {
4999
+ orElem.nextElementSibling.classList.add('e-btn-disable');
5000
+ andElem.nextElementSibling.classList.add('e-btn-disable');
5001
+ }
4064
5002
  }
4065
5003
  }
4066
5004
  }
@@ -4164,7 +5102,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4164
5102
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4165
5103
  rule.custom = customObj;
4166
5104
  }
4167
- if (rule.rules.length === 0) {
5105
+ if (rule.rules && rule.rules.length === 0) {
4168
5106
  rule = {};
4169
5107
  }
4170
5108
  }
@@ -4233,7 +5171,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4233
5171
  var rule = this.getParentGroup(groupElem);
4234
5172
  while (ruleElem.previousElementSibling !== null) {
4235
5173
  ruleElem = ruleElem.previousElementSibling;
4236
- index++;
5174
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
5175
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
5176
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
5177
+ ruleElem.classList.contains('e-group-container'))))) {
5178
+ index++;
5179
+ }
4237
5180
  }
4238
5181
  return rule.rules[index];
4239
5182
  };
@@ -4643,13 +5586,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4643
5586
  if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0
4644
5587
  && value.indexOf('-') < 0)) {
4645
5588
  currDate = new Date();
4646
- // eslint-disable-next-line
4647
- currDate.setHours(parseInt(value.split(':')[0]));
4648
- // eslint-disable-next-line
4649
- currDate.setMinutes(parseInt(value.split(':')[1]));
5589
+ currDate.setHours(parseInt(value.split(':')[0], 10));
5590
+ currDate.setMinutes(parseInt(value.split(':')[1], 10));
4650
5591
  if (value.split(':')[2]) {
4651
- // eslint-disable-next-line
4652
- currDate.setSeconds(parseInt(value.split(':')[2]));
5592
+ currDate.setSeconds(parseInt(value.split(':')[2], 10));
4653
5593
  }
4654
5594
  }
4655
5595
  return currDate;
@@ -4665,17 +5605,43 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4665
5605
  parentElem = this.renderGroup(rule, rule.condition, parentElem, not);
4666
5606
  }
4667
5607
  else {
4668
- if (rule.rules.length > 1 && !this.headerTemplate) {
5608
+ if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {
4669
5609
  // enable/disable conditions when rule group is added
4670
5610
  var orElem = parentElem.querySelector('.e-btngroup-or');
4671
5611
  var andElem = parentElem.querySelector('.e-btngroup-and');
5612
+ if (this.enableSeparateConnector && parentElem.previousElementSibling) {
5613
+ orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');
5614
+ andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');
5615
+ }
4672
5616
  orElem.disabled = false;
4673
5617
  andElem.disabled = false;
4674
- if (rule.condition === 'or') {
4675
- orElem.checked = true;
5618
+ if (this.enableSeparateConnector) {
5619
+ var elem = parentElem.previousElementSibling;
5620
+ while (elem && !elem.classList.contains('e-rule-container')) {
5621
+ if (elem.classList.contains('e-group-container')) {
5622
+ elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
5623
+ break;
5624
+ }
5625
+ elem = elem.previousElementSibling;
5626
+ }
5627
+ if (elem && elem.classList.contains('e-rule-container')) {
5628
+ var ruleID = elem.id.replace(this.element.id + '_', '');
5629
+ var prevRule = this.getRule(ruleID);
5630
+ if (prevRule.condition === 'or') {
5631
+ orElem.checked = true;
5632
+ }
5633
+ else {
5634
+ andElem.checked = true;
5635
+ }
5636
+ }
4676
5637
  }
4677
5638
  else {
4678
- andElem.checked = true;
5639
+ if (rule.condition === 'or') {
5640
+ orElem.checked = true;
5641
+ }
5642
+ else {
5643
+ andElem.checked = true;
5644
+ }
4679
5645
  }
4680
5646
  }
4681
5647
  else {
@@ -4695,7 +5661,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4695
5661
  }
4696
5662
  }
4697
5663
  }
4698
- if (rule.rules.length === 0 && this.headerTemplate) {
5664
+ if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {
4699
5665
  rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
4700
5666
  }
4701
5667
  var ruleColl = rule.rules;
@@ -4716,10 +5682,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4716
5682
  var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
4717
5683
  this.groupLock(lockGrpTarget);
4718
5684
  }
4719
- if (isNullOrUndefined(ruleColl[i].rules) && ruleColl[i].isLocked) {
4720
- var lockRuleTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-rule-btn');
4721
- this.ruleLock(lockRuleTarget);
4722
- }
4723
5685
  }
4724
5686
  }
4725
5687
  if (parentElem) {
@@ -4737,7 +5699,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4737
5699
  if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
4738
5700
  this.isMiddleGroup = false;
4739
5701
  this.cloneGrpBtnClick = false;
4740
- return cloneElem[this.groupIndex + 1]; // group added in the middle
5702
+ var index = 0;
5703
+ var tempGroupIndex = this.groupIndex + 1;
5704
+ if (this.enableSeparateConnector) {
5705
+ for (var i = 0; i < tempGroupIndex; i++) {
5706
+ if (cloneElem[i].classList.contains('e-rule-container')) {
5707
+ tempGroupIndex++;
5708
+ index++;
5709
+ }
5710
+ }
5711
+ }
5712
+ return cloneElem[this.groupIndex + index + 1]; // group added in the middle
4741
5713
  }
4742
5714
  else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
4743
5715
  this.isLastGroup = false;
@@ -4864,9 +5836,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4864
5836
  }
4865
5837
  }
4866
5838
  }
4867
- else if (elem.classList.contains('e-btn-disable')) {
4868
- // do nothing
4869
- }
5839
+ else if (elem.classList.contains('e-btn-disable')) ;
4870
5840
  else {
4871
5841
  elem.classList.add('e-readonly');
4872
5842
  }
@@ -4906,6 +5876,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4906
5876
  for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
4907
5877
  if (rules.rules[j].rules) {
4908
5878
  queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
5879
+ if (this.enableSeparateConnector) {
5880
+ condition = rules.rules[j].condition;
5881
+ }
4909
5882
  }
4910
5883
  else {
4911
5884
  var rule = rules.rules[j];
@@ -4997,8 +5970,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4997
5970
  if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
4998
5971
  condition = rule.condition;
4999
5972
  }
5000
- condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
5001
- queryStr += ' ' + condition + ' ';
5973
+ if (condition) {
5974
+ condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
5975
+ queryStr += ' ' + condition + ' ';
5976
+ }
5002
5977
  }
5003
5978
  }
5004
5979
  }
@@ -5064,12 +6039,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5064
6039
  * @returns {ParameterizedSql} – Parameterized SQL query from rules.
5065
6040
  */
5066
6041
  QueryBuilder.prototype.getParameterizedSql = function (rule) {
5067
- if (!rule) {
5068
- rule = this.getValidRules();
6042
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6043
+ if (this.moduleLoader.loadedModules.length) {
6044
+ if (!rule) {
6045
+ rule = this.getValidRules();
6046
+ }
6047
+ var obj = { sql: null };
6048
+ this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
6049
+ return obj['sql'];
6050
+ }
6051
+ else {
6052
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5069
6053
  }
5070
- var obj = { sql: null };
5071
- this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
5072
- return obj['sql'];
6054
+ return null;
5073
6055
  };
5074
6056
  /**
5075
6057
  * Sets the rules from the parameter sql query.
@@ -5078,13 +6060,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5078
6060
  * @returns {void}
5079
6061
  */
5080
6062
  QueryBuilder.prototype.setParameterizedSql = function (sqlQuery) {
5081
- var obj = { sql: null };
5082
- this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
5083
- var sql = obj['sql'];
5084
- if (sql) {
5085
- sql = sql.replace(/`/g, '');
5086
- var ruleModel = this.getRulesFromSql(sql);
5087
- this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
6063
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6064
+ if (this.moduleLoader.loadedModules.length) {
6065
+ var obj = { sql: null };
6066
+ this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
6067
+ var sql = obj['sql'];
6068
+ if (sql) {
6069
+ sql = sql.replace(/`/g, '');
6070
+ var ruleModel = this.getRulesFromSql(sql);
6071
+ this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
6072
+ }
6073
+ }
6074
+ else {
6075
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5088
6076
  }
5089
6077
  };
5090
6078
  /**
@@ -5094,12 +6082,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5094
6082
  * @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
5095
6083
  */
5096
6084
  QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
5097
- if (!rule) {
5098
- rule = this.getValidRules();
6085
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6086
+ if (this.moduleLoader.loadedModules.length) {
6087
+ if (!rule) {
6088
+ rule = this.getValidRules();
6089
+ }
6090
+ var obj = { sql: null };
6091
+ this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
6092
+ return obj['sql'];
6093
+ }
6094
+ else {
6095
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5099
6096
  }
5100
- var obj = { sql: null };
5101
- this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
5102
- return obj['sql'];
6097
+ return null;
5103
6098
  };
5104
6099
  /**
5105
6100
  * Sets the rules from the named parameter SQL query.
@@ -5108,13 +6103,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5108
6103
  * @returns {void}
5109
6104
  */
5110
6105
  QueryBuilder.prototype.setParameterizedNamedSql = function (sqlQuery) {
5111
- var obj = { sql: null };
5112
- this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
5113
- var sql = obj['sql'];
5114
- if (sql) {
5115
- sql = sql.replace(/`/g, '');
5116
- var ruleModel = this.getRulesFromSql(sql);
5117
- this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
6106
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6107
+ if (this.moduleLoader.loadedModules.length) {
6108
+ var obj = { sql: null };
6109
+ this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
6110
+ var sql = obj['sql'];
6111
+ if (sql) {
6112
+ sql = sql.replace(/`/g, '');
6113
+ var ruleModel = this.getRulesFromSql(sql);
6114
+ this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
6115
+ }
6116
+ }
6117
+ else {
6118
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5118
6119
  }
5119
6120
  };
5120
6121
  /**
@@ -5125,8 +6126,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5125
6126
  * @returns {void}
5126
6127
  */
5127
6128
  QueryBuilder.prototype.setMongoQuery = function (mongoQuery, mongoLocale) {
5128
- this.rule = { condition: 'and', not: false, rules: [] };
5129
- this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
6129
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6130
+ if (this.moduleLoader.loadedModules.length) {
6131
+ this.rule = { condition: 'and', not: false, rules: [] };
6132
+ this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
6133
+ }
6134
+ else {
6135
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
6136
+ }
5130
6137
  };
5131
6138
  /**
5132
6139
  * Gets the Mongo query from rules.
@@ -5135,12 +6142,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5135
6142
  * @returns {object} - Sql query from rules.
5136
6143
  */
5137
6144
  QueryBuilder.prototype.getMongoQuery = function (rule) {
5138
- if (!rule) {
5139
- rule = this.getValidRules();
6145
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6146
+ if (this.moduleLoader.loadedModules.length) {
6147
+ if (!rule) {
6148
+ rule = this.getValidRules();
6149
+ }
6150
+ var obj = { mongoQuery: null };
6151
+ this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
6152
+ return obj['mongoQuery'];
6153
+ }
6154
+ else {
6155
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5140
6156
  }
5141
- var obj = { mongoQuery: null };
5142
- this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
5143
- return obj['mongoQuery'];
6157
+ return '';
5144
6158
  };
5145
6159
  /**
5146
6160
  * Clones the rule based on the rule ID to the specific group.
@@ -5159,7 +6173,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5159
6173
  this.showButtons.cloneRule = true;
5160
6174
  this.addRules([{
5161
6175
  'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
5162
- 'value': getRule.value
6176
+ 'value': getRule.value, 'condition': getRule.condition
5163
6177
  }], groupID);
5164
6178
  this.ruleIndex = -1;
5165
6179
  this.cloneRuleBtnClick = false;
@@ -5248,8 +6262,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5248
6262
  var matchValue;
5249
6263
  for (var i = 0, iLen = operators.length; i < iLen; i++) {
5250
6264
  regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
5251
- // eslint-disable-next-line
5252
- regex = new RegExp('^(' + operators[i] + ')' + regexStr, 'ig');
6265
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6266
+ var regExp = RegExp;
6267
+ regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');
5253
6268
  if (regex.exec(sqlString)) {
5254
6269
  this.parser.push(['Operators', operators[i].toLowerCase()]);
5255
6270
  return operators[i].length;
@@ -5259,8 +6274,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5259
6274
  if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
5260
6275
  for (var i = 0, iLen = conditions.length; i < iLen; i++) {
5261
6276
  regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
5262
- // eslint-disable-next-line
5263
- regex = new RegExp('^(' + conditions[i] + ')' + regexStr, 'ig');
6277
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6278
+ var regExp = RegExp;
6279
+ regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');
5264
6280
  if (regex.exec(sqlString)) {
5265
6281
  this.parser.push(['Conditions', conditions[i].toLowerCase()]);
5266
6282
  return conditions[i].length;
@@ -5269,8 +6285,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5269
6285
  }
5270
6286
  for (var i = 0, iLen = subOp.length; i < iLen; i++) {
5271
6287
  regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
5272
- // eslint-disable-next-line
5273
- regex = new RegExp('^(' + subOp[i] + ')' + regexStr, 'ig');
6288
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6289
+ var regExp = RegExp;
6290
+ regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');
5274
6291
  if (regex.exec(sqlString)) {
5275
6292
  this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
5276
6293
  return subOp[i].length;
@@ -5298,31 +6315,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5298
6315
  this.parser.push(['String', null]);
5299
6316
  return matchValue.length;
5300
6317
  }
5301
- // eslint-disable-next-line
5302
- if (/^`?([a-z_][a-z0-9_.\[\]\(\)]{0,}(\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {
5303
- // eslint-disable-next-line
5304
- matchValue = /^`?([a-zåäö_][a-z0-9åäö_.\[\]\(\)]{0,}(\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
6318
+ if (/^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {
6319
+ matchValue = /^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
5305
6320
  this.parser.push(['Literal', matchValue]);
5306
6321
  return matchValue.length;
5307
6322
  }
5308
- // eslint-disable-next-line
5309
- if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\[\]\(\)-]{0,}(\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {
5310
- // eslint-disable-next-line
5311
- matchValue = /^'?([a-z_][a-z0-9 _.\[\]\(\)-]{0,}(\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
6323
+ if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {
6324
+ matchValue = /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
5312
6325
  this.parser.push(['Literal', matchValue]);
5313
6326
  return matchValue.length + 2;
5314
6327
  }
5315
6328
  if (this.checkNumberLiteral(sqlString, sqlLocale)) {
5316
- // eslint-disable-next-line
5317
- matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
6329
+ matchValue = /^[0-9]+(\.[0-9]+)$/.exec(sqlString)[0];
5318
6330
  this.parser.push(['Literal', matchValue]);
5319
6331
  return matchValue.length;
5320
6332
  }
5321
6333
  //String
5322
- // eslint-disable-next-line
5323
- if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
5324
- // eslint-disable-next-line
5325
- matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
6334
+ var singleString = this.getSingleQuoteString(sqlString);
6335
+ if (singleString !== '') {
6336
+ matchValue = singleString;
5326
6337
  if (matchValue[matchValue.length - 2] === '(') {
5327
6338
  var isClosed = false;
5328
6339
  for (var j = matchValue.length; j < sqlString.length; j++) {
@@ -5337,38 +6348,43 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5337
6348
  }
5338
6349
  else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
5339
6350
  !this.checkCondition(sqlString, matchValue)) {
5340
- matchValue = this.getSingleQuoteString(sqlString, matchValue);
6351
+ matchValue = this.combineSingleQuoteString(sqlString, matchValue);
5341
6352
  }
5342
6353
  // end
5343
6354
  this.parser.push(['String', matchValue]);
5344
6355
  return matchValue.length;
5345
6356
  }
5346
6357
  // Double String
5347
- // eslint-disable-next-line
5348
- if (/^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)) {
5349
- // eslint-disable-next-line
5350
- matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
6358
+ var doubleString = this.getDoubleQuoteString(sqlString);
6359
+ if (doubleString !== '') {
6360
+ matchValue = doubleString;
5351
6361
  this.parser.push(['DoubleString', matchValue]);
5352
6362
  return matchValue.length;
5353
6363
  }
5354
6364
  //Number
5355
- // eslint-disable-next-line
5356
- if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
5357
- // eslint-disable-next-line
5358
- matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
6365
+ if (/^\d*\.?\d+/.exec(sqlString)) {
6366
+ matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
5359
6367
  this.parser.push(['Number', matchValue]);
5360
6368
  return matchValue.length;
5361
6369
  }
5362
6370
  //Negative Number
5363
- // eslint-disable-next-line
5364
- if (/^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
5365
- // eslint-disable-next-line
5366
- matchValue = /^-?[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
6371
+ if (/^-?\d*\.?\d+/.exec(sqlString)) {
6372
+ matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
5367
6373
  this.parser.push(['Number', matchValue]);
5368
6374
  return matchValue.length;
5369
6375
  }
5370
6376
  return 1;
5371
6377
  };
6378
+ QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {
6379
+ var start = sqlString.indexOf('"');
6380
+ if (start === 0) {
6381
+ var end = sqlString.indexOf('"', start + 1);
6382
+ if (end !== -1) {
6383
+ return sqlString.substring(start, end + 1);
6384
+ }
6385
+ }
6386
+ return '';
6387
+ };
5372
6388
  QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {
5373
6389
  if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||
5374
6390
  sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {
@@ -5376,16 +6392,26 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5376
6392
  }
5377
6393
  return false;
5378
6394
  };
5379
- QueryBuilder.prototype.getSingleQuoteString = function (sqlString, matchValue) {
6395
+ QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {
6396
+ var start = sqlString.indexOf('\'');
6397
+ if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {
6398
+ var end = sqlString.indexOf('\'', start + 1);
6399
+ if (end !== -1) {
6400
+ return sqlString.substring(start, end + 1);
6401
+ }
6402
+ }
6403
+ return '';
6404
+ };
6405
+ QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {
5380
6406
  if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
5381
6407
  !this.checkCondition(sqlString, matchValue) && sqlString[matchValue.length] !== ',') {
5382
- var tempStr = sqlString.replace(matchValue, '');
5383
- // eslint-disable-next-line
5384
- if (isNullOrUndefined(/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(tempStr))) {
5385
- // eslint-disable-next-line
5386
- var parsedValue = /^((?:[^\\']+?|\\.|'')*)'(?!')/.exec(tempStr)[0];
6408
+ var tempMatchValue = matchValue.substring(0, matchValue.length - 1);
6409
+ var tempStr = sqlString.replace(tempMatchValue, '');
6410
+ var singleString = this.getSingleQuoteString(tempStr, true);
6411
+ if (singleString !== '') {
6412
+ var parsedValue = singleString.substring(1, singleString.length);
5387
6413
  matchValue += parsedValue;
5388
- matchValue = this.getSingleQuoteString(sqlString, matchValue);
6414
+ matchValue = this.combineSingleQuoteString(sqlString, matchValue);
5389
6415
  }
5390
6416
  }
5391
6417
  return matchValue;
@@ -5414,8 +6440,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5414
6440
  return true;
5415
6441
  }
5416
6442
  else {
5417
- // eslint-disable-next-line
5418
- if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
6443
+ if (/^[0-9]+(?:\.[0-9]+)$/.exec(sqlString)) {
5419
6444
  var secParser = this.parser[this.parser.length - 2];
5420
6445
  var betweenParser = this.parser[this.parser.length - 3];
5421
6446
  if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {
@@ -5628,16 +6653,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5628
6653
  strVal = [];
5629
6654
  rule.type = this.getTypeFromColumn(rule);
5630
6655
  }
6656
+ if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {
6657
+ rule.condition = parser[i + 1][1];
6658
+ }
5631
6659
  }
5632
6660
  else if (parser[i + 1][0] === 'Operators') {
5633
6661
  rule.operator = this.getOperator(parser[i + 2][1], parser[i + 1][1], sqlLocale);
5634
- if (rule.operator == "equal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
5635
- rule.operator = "isempty";
5636
-
6662
+ if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
6663
+ rule.operator = 'isempty';
5637
6664
  }
5638
- else if (rule.operator == "notequal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
5639
- rule.operator = "isnotempty";
5640
-
6665
+ else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
6666
+ rule.operator = 'isnotempty';
5641
6667
  }
5642
6668
  if (parser[i + 2][0] === 'Number') {
5643
6669
  rule.type = 'number';
@@ -5651,6 +6677,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5651
6677
  }
5652
6678
  rule.value = val;
5653
6679
  }
6680
+ if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {
6681
+ rule.condition = parser[i + 3][1];
6682
+ }
5654
6683
  rule.type = this.getTypeFromColumn(rule);
5655
6684
  }
5656
6685
  rules.rules.push(rule);
@@ -5678,7 +6707,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5678
6707
  subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);
5679
6708
  return rules;
5680
6709
  }
5681
- else if (parser[i][0] === 'Conditions') {
6710
+ else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {
5682
6711
  if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {
5683
6712
  rules.not = true;
5684
6713
  }
@@ -5699,27 +6728,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5699
6728
  }
5700
6729
  return rules;
5701
6730
  };
5702
- QueryBuilder.prototype.getValueFromParser = function (parser, idx) {
5703
- var value = '';
5704
- var k;
5705
- for (k = idx; k < parser.length; k++) {
5706
- if (parser[k][0] !== 'String' || parser[k][1] === ',' || parser[k][1] === ', ') {
5707
- break;
5708
- }
5709
- else {
5710
- if (value !== '') {
5711
- idx += 1;
5712
- }
5713
- if (parser[k][1] !== null) {
5714
- value += parser[k][1];
5715
- }
5716
- else {
5717
- value = null;
5718
- }
5719
- }
5720
- }
5721
- return { value: value, idx: idx };
5722
- };
5723
6731
  /**
5724
6732
  * Clone the Group
5725
6733
  *
@@ -5754,8 +6762,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5754
6762
  this.ruleIndex = i;
5755
6763
  }
5756
6764
  }
5757
- this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
5758
- 'value': getRule.value }], groupId);
6765
+ if (this.enableSeparateConnector) {
6766
+ this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
6767
+ 'value': getRule.value, 'condition': getRule.condition }], groupId);
6768
+ }
6769
+ else {
6770
+ this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
6771
+ 'value': getRule.value }], groupId);
6772
+ }
5759
6773
  this.ruleIndex = -1;
5760
6774
  };
5761
6775
  QueryBuilder.prototype.ruleLock = function (target) {
@@ -5856,6 +6870,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5856
6870
  var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
5857
6871
  var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
5858
6872
  var groupContElem = groupElem.querySelectorAll('.e-group-container');
6873
+ var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');
6874
+ var addGroup = groupElem.querySelectorAll('.e-add-group-btn');
5859
6875
  for (var i = 0; i < andElem.length; i++) {
5860
6876
  if (isDisabled) {
5861
6877
  if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
@@ -5863,7 +6879,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5863
6879
  }
5864
6880
  andElem[i].disabled = true;
5865
6881
  orElem[i].disabled = true;
5866
- addElem[i].disabled = true;
6882
+ if (addElem[i]) {
6883
+ addElem[i].disabled = true;
6884
+ }
6885
+ if (addCondition[i]) {
6886
+ addCondition[i].disabled = true;
6887
+ }
6888
+ if (addGroup[i]) {
6889
+ addGroup[i].disabled = true;
6890
+ }
5867
6891
  if (notElem[i]) {
5868
6892
  notElem[i].disabled = true;
5869
6893
  }
@@ -5874,7 +6898,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5874
6898
  cloneElem[i].disabled = true;
5875
6899
  }
5876
6900
  andElem[i].parentElement.classList.add('e-disabled');
5877
- if (lockElem[i] !== target) {
6901
+ if (lockElem[i] && lockElem[i] !== target) {
5878
6902
  lockElem[i].disabled = true;
5879
6903
  lockElem[i].children[0].classList.remove('e-unlock');
5880
6904
  lockElem[i].children[0].classList.add('e-lock');
@@ -5886,8 +6910,18 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5886
6910
  }
5887
6911
  andElem[i].disabled = false;
5888
6912
  orElem[i].disabled = false;
5889
- addElem[i].disabled = false;
5890
- lockElem[i].disabled = false;
6913
+ if (addElem[i]) {
6914
+ addElem[i].disabled = false;
6915
+ }
6916
+ if (addCondition[i]) {
6917
+ addCondition[i].disabled = false;
6918
+ }
6919
+ if (addGroup[i]) {
6920
+ addGroup[i].disabled = false;
6921
+ }
6922
+ if (lockElem[i]) {
6923
+ lockElem[i].disabled = false;
6924
+ }
5891
6925
  if (notElem[i]) {
5892
6926
  notElem[i].disabled = false;
5893
6927
  }
@@ -5898,8 +6932,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5898
6932
  cloneElem[i].disabled = false;
5899
6933
  }
5900
6934
  andElem[i].parentElement.classList.remove('e-disabled');
5901
- lockElem[i].children[0].classList.remove('e-lock');
5902
- lockElem[i].children[0].classList.add('e-unlock');
6935
+ if (lockElem[i]) {
6936
+ lockElem[i].children[0].classList.remove('e-lock');
6937
+ }
6938
+ if (lockElem[i]) {
6939
+ lockElem[i].children[0].classList.add('e-unlock');
6940
+ }
5903
6941
  }
5904
6942
  }
5905
6943
  this.disableRuleControls(target, groupElem, isDisabled);
@@ -6033,6 +7071,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6033
7071
  __decorate([
6034
7072
  Event()
6035
7073
  ], QueryBuilder.prototype, "ruleChange", void 0);
7074
+ __decorate([
7075
+ Event()
7076
+ ], QueryBuilder.prototype, "dragStart", void 0);
7077
+ __decorate([
7078
+ Event()
7079
+ ], QueryBuilder.prototype, "drag", void 0);
7080
+ __decorate([
7081
+ Event()
7082
+ ], QueryBuilder.prototype, "drop", void 0);
6036
7083
  __decorate([
6037
7084
  Complex({}, ShowButtons)
6038
7085
  ], QueryBuilder.prototype, "showButtons", void 0);
@@ -6108,9 +7155,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6108
7155
  __decorate([
6109
7156
  Property('')
6110
7157
  ], QueryBuilder.prototype, "separator", void 0);
7158
+ __decorate([
7159
+ Property(false)
7160
+ ], QueryBuilder.prototype, "enableSeparateConnector", void 0);
6111
7161
  __decorate([
6112
7162
  Complex({ condition: 'and', rules: [] }, Rule)
6113
7163
  ], QueryBuilder.prototype, "rule", void 0);
7164
+ __decorate([
7165
+ Property(false)
7166
+ ], QueryBuilder.prototype, "allowDragAndDrop", void 0);
6114
7167
  QueryBuilder = __decorate([
6115
7168
  NotifyPropertyChanges
6116
7169
  ], QueryBuilder);
@@ -6418,13 +7471,13 @@ var QueryLibrary = /** @__PURE__ @class */ (function () {
6418
7471
  }
6419
7472
  else if (condition === '$or') {
6420
7473
  var notBetween = void 0;
6421
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
7474
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6422
7475
  var innerObject = [];
6423
7476
  var keys = [];
6424
7477
  var firstKey = [];
6425
7478
  var secondKey = [];
6426
7479
  var innerKeys = [];
6427
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
7480
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6428
7481
  var firstValue = [];
6429
7482
  var secondValue = [];
6430
7483
  var innerFirstValue = [];
@@ -6805,13 +7858,5 @@ var QueryLibrary = /** @__PURE__ @class */ (function () {
6805
7858
  return QueryLibrary;
6806
7859
  }());
6807
7860
 
6808
- /**
6809
- * QueryBuilder modules
6810
- */
6811
-
6812
- /**
6813
- * QueryBuilder all modules
6814
- */
6815
-
6816
- export { Columns, Rule, Value, ShowButtons, QueryBuilder, QueryLibrary };
7861
+ export { Columns, QueryBuilder, QueryLibrary, Rule, ShowButtons, Value };
6817
7862
  //# sourceMappingURL=ej2-querybuilder.es5.js.map