@syncfusion/ej2-querybuilder 25.2.4 → 26.1.35

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 +1327 -291
  6. package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
  7. package/dist/es6/ej2-querybuilder.es5.js +1320 -283
  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 +1312 -263
  16. package/src/query-builder/query-library.js +2 -2
  17. package/styles/bootstrap-dark.css +194 -21
  18. package/styles/bootstrap-dark.scss +15 -1
  19. package/styles/bootstrap.css +194 -21
  20. package/styles/bootstrap.scss +15 -1
  21. package/styles/bootstrap4.css +198 -22
  22. package/styles/bootstrap4.scss +15 -1
  23. package/styles/bootstrap5-dark.css +198 -30
  24. package/styles/bootstrap5-dark.scss +15 -1
  25. package/styles/bootstrap5.css +198 -30
  26. package/styles/bootstrap5.scss +15 -1
  27. package/styles/fabric-dark.css +192 -20
  28. package/styles/fabric-dark.scss +15 -1
  29. package/styles/fabric.css +192 -20
  30. package/styles/fabric.scss +15 -1
  31. package/styles/fluent-dark.css +196 -28
  32. package/styles/fluent-dark.scss +15 -1
  33. package/styles/fluent.css +196 -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 +195 -20
  38. package/styles/highcontrast-light.scss +15 -1
  39. package/styles/highcontrast.css +195 -20
  40. package/styles/highcontrast.scss +15 -1
  41. package/styles/material-dark.css +205 -24
  42. package/styles/material-dark.scss +15 -1
  43. package/styles/material.css +207 -24
  44. package/styles/material.scss +15 -1
  45. package/styles/material3-dark.css +211 -26
  46. package/styles/material3-dark.scss +15 -1
  47. package/styles/material3.css +211 -26
  48. package/styles/material3.scss +15 -1
  49. package/styles/query-builder/_bds-definition.scss +7 -1
  50. package/styles/query-builder/_bootstrap-dark-definition.scss +7 -0
  51. package/styles/query-builder/_bootstrap-definition.scss +7 -0
  52. package/styles/query-builder/_bootstrap4-definition.scss +7 -0
  53. package/styles/query-builder/_bootstrap5-definition.scss +7 -1
  54. package/styles/query-builder/_bootstrap5.3-definition.scss +114 -0
  55. package/styles/query-builder/_fabric-dark-definition.scss +7 -0
  56. package/styles/query-builder/_fabric-definition.scss +7 -0
  57. package/styles/query-builder/_fluent-definition.scss +7 -1
  58. package/styles/query-builder/_fluent2-definition.scss +114 -0
  59. package/styles/query-builder/_fusionnew-definition.scss +7 -1
  60. package/styles/query-builder/_highcontrast-definition.scss +7 -0
  61. package/styles/query-builder/_highcontrast-light-definition.scss +7 -0
  62. package/styles/query-builder/_layout.scss +275 -12
  63. package/styles/query-builder/_material-dark-definition.scss +7 -0
  64. package/styles/query-builder/_material-definition.scss +7 -0
  65. package/styles/query-builder/_material3-definition.scss +7 -1
  66. package/styles/query-builder/_tailwind-definition.scss +7 -1
  67. package/styles/query-builder/_theme.scss +34 -22
  68. package/styles/query-builder/bootstrap-dark.css +194 -21
  69. package/styles/query-builder/bootstrap.css +194 -21
  70. package/styles/query-builder/bootstrap4.css +198 -22
  71. package/styles/query-builder/bootstrap5-dark.css +198 -30
  72. package/styles/query-builder/bootstrap5.css +198 -30
  73. package/styles/query-builder/fabric-dark.css +192 -20
  74. package/styles/query-builder/fabric.css +192 -20
  75. package/styles/query-builder/fluent-dark.css +196 -28
  76. package/styles/query-builder/fluent.css +196 -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 +195 -20
  80. package/styles/query-builder/highcontrast.css +195 -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 +205 -24
  100. package/styles/query-builder/material.css +207 -24
  101. package/styles/query-builder/material3-dark.css +211 -26
  102. package/styles/query-builder/material3.css +211 -26
  103. package/styles/query-builder/tailwind-dark.css +205 -24
  104. package/styles/query-builder/tailwind.css +205 -24
  105. package/styles/tailwind-dark.css +205 -24
  106. package/styles/tailwind-dark.scss +15 -1
  107. package/styles/tailwind.css +205 -24
  108. package/styles/tailwind.scss +15 -1
  109. package/CHANGELOG.md +0 -820
@@ -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;
@@ -554,19 +781,60 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
554
781
  }
555
782
  };
556
783
  QueryBuilder.prototype.beforeSuccessCallBack = function (args, target) {
557
- if (!args.cancel) {
784
+ if (args && !args.cancel) {
558
785
  var element = closest(target, '.e-group-container');
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,10 +1156,52 @@ 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++) {
@@ -847,7 +1211,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
847
1211
  }
848
1212
  }
849
1213
  };
850
- QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId) {
1214
+ QueryBuilder.prototype.updateAddedRule = function (target, rule, newRule, isRuleTemplate, pId, isNewRuleAdded) {
851
1215
  var ruleElem;
852
1216
  var index = 0;
853
1217
  var groupElem;
@@ -858,7 +1222,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
858
1222
  rules = this.getParentGroup(groupElem);
859
1223
  while (ruleElem && ruleElem.previousElementSibling !== null) {
860
1224
  ruleElem = ruleElem.previousElementSibling;
861
- index++;
1225
+ var enableSeparateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
1226
+ (this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
1227
+ ruleElem.classList.contains('e-group-container'))));
1228
+ if (!this.enableSeparateConnector || enableSeparateCondition) {
1229
+ index++;
1230
+ }
862
1231
  }
863
1232
  rules.rules[index] = rule;
864
1233
  }
@@ -876,6 +1245,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
876
1245
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
877
1246
  rules.rules[rules.rules.length - 1].custom = custom;
878
1247
  }
1248
+ if (this.enableSeparateConnector) {
1249
+ rules.rules[rules.rules.length - 1].condition = rule.condition ? rule.condition : newRule.condition;
1250
+ }
879
1251
  }
880
1252
  else {
881
1253
  rules.rules.splice(this.ruleIndex + 1, 0, {
@@ -885,6 +1257,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
885
1257
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
886
1258
  rules.rules[this.ruleIndex + 1].custom = custom;
887
1259
  }
1260
+ if (this.enableSeparateConnector) {
1261
+ rules.rules[this.ruleIndex + 1].condition = rule.condition ? rule.condition : newRule.condition;
1262
+ }
888
1263
  }
889
1264
  }
890
1265
  else {
@@ -898,7 +1273,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
898
1273
  rules.rules.push(newRule);
899
1274
  }
900
1275
  }
901
- this.disableRuleCondition(target, rules);
1276
+ this.disableRuleCondition(target, rules, isNewRuleAdded);
902
1277
  };
903
1278
  QueryBuilder.prototype.changeRuleTemplate = function (column, element) {
904
1279
  var operVal = this.selectedColumn.operators;
@@ -976,7 +1351,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
976
1351
  if (validateRule && validateRule.isRequired) {
977
1352
  while (indexElem && indexElem.previousElementSibling !== null) {
978
1353
  indexElem = indexElem.previousElementSibling;
979
- index++;
1354
+ var separateCondition = this.enableSeparateConnector && ((!this.headerTemplate && !indexElem.classList.contains('e-btn-group')) ||
1355
+ (this.headerTemplate && (indexElem.classList.contains('e-rule-container') || indexElem.classList.contains('e-group-container'))));
1356
+ if (!this.enableSeparateConnector || separateCondition) {
1357
+ index++;
1358
+ }
980
1359
  }
981
1360
  fieldElem = tempElem.querySelector('.e-rule-operator .e-control');
982
1361
  if (!rule.rules[index].operator) {
@@ -1053,9 +1432,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1053
1432
  obj.level = this.levelColl[obj.groupElement.id].slice();
1054
1433
  return obj;
1055
1434
  };
1056
- QueryBuilder.prototype.groupTemplate = function () {
1435
+ QueryBuilder.prototype.groupTemplate = function (isConnector) {
1057
1436
  var glueElem;
1058
1437
  var inputElem;
1438
+ var dragClsName;
1059
1439
  var labelElem;
1060
1440
  var grpActElem;
1061
1441
  var groupBtn;
@@ -1068,9 +1448,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1068
1448
  groupElem.appendChild(grpBodyElem);
1069
1449
  // create button group in OR and AND process
1070
1450
  if (!this.headerTemplate) {
1071
- glueElem = this.createElement('div', { attrs: { class: 'e-lib e-btn-group', role: 'group' } });
1451
+ if (this.allowDragAndDrop) {
1452
+ dragClsName = 'e-icons e-drag-qb-rule';
1453
+ }
1454
+ else {
1455
+ dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1456
+ }
1457
+ var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
1458
+ title: 'drag handle' } });
1459
+ groupHdrElem.appendChild(spanDragElement);
1460
+ var className = this.enableSeparateConnector && !isConnector ? 'e-lib e-btn-group e-qb-toggle-btn' : 'e-lib e-btn-group';
1461
+ glueElem = this.createElement('div', { attrs: { class: className, role: 'group' } });
1462
+ if (this.enableSeparateConnector) {
1463
+ glueElem.classList.add('e-multi-connector');
1464
+ }
1072
1465
  if (this.enableNotCondition) {
1073
- inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
1466
+ if (this.enableSeparateConnector) {
1467
+ inputElem = this.createElement('input', { attrs: { type: 'checkbox', class: 'e-qb-toggle' } });
1468
+ }
1469
+ else {
1470
+ inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
1471
+ }
1074
1472
  glueElem.appendChild(inputElem);
1075
1473
  }
1076
1474
  inputElem = this.createElement('input', { attrs: { type: 'radio', class: 'e-btngroup-and', value: 'AND' } });
@@ -1085,8 +1483,16 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1085
1483
  glueElem.appendChild(labelElem);
1086
1484
  groupHdrElem.appendChild(glueElem);
1087
1485
  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);
1486
+ if (this.enableSeparateConnector) {
1487
+ groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-condition-btn' } });
1488
+ grpActElem.appendChild(groupBtn);
1489
+ groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-group-btn' } });
1490
+ grpActElem.appendChild(groupBtn);
1491
+ }
1492
+ else {
1493
+ groupBtn = this.createElement('button', { attrs: { type: 'button', class: 'e-add-btn' } });
1494
+ grpActElem.appendChild(groupBtn);
1495
+ }
1090
1496
  groupHdrElem.appendChild(grpActElem);
1091
1497
  }
1092
1498
  return groupElem;
@@ -1096,9 +1502,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1096
1502
  var clsName;
1097
1503
  var cloneClsName;
1098
1504
  var lockClsName;
1505
+ var dragClsName;
1099
1506
  var ruleElem = this.createElement('div');
1100
1507
  var fieldElem = this.createElement('div', { attrs: { class: 'e-rule-field' } });
1101
1508
  tempElem = this.createElement('div', { attrs: { class: 'e-rule-filter' } });
1509
+ if (this.allowDragAndDrop) {
1510
+ dragClsName = 'e-icons e-drag-qb-rule';
1511
+ }
1512
+ else {
1513
+ dragClsName = 'e-icons e-drag-qb-rule e-hidden';
1514
+ }
1515
+ var spanDragElement = this.createElement('span', { attrs: { class: dragClsName, 'aria-lable': 'drag handle',
1516
+ title: 'drag handle' } });
1517
+ fieldElem.appendChild(spanDragElement);
1102
1518
  var filterElem = this.createElement('input', { attrs: { type: 'text', class: 'e-filter-input' } });
1103
1519
  tempElem.appendChild(filterElem);
1104
1520
  fieldElem.appendChild(tempElem);
@@ -1142,7 +1558,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1142
1558
  QueryBuilder.prototype.addGroupElement = function (isGroup, target, condition, isBtnClick, not, isRoot, rule) {
1143
1559
  var _this = this;
1144
1560
  var args = { groupID: target.id.replace(this.element.id + '_', ''), cancel: false, type: 'insertGroup' };
1145
- if (!this.isImportRules && !this.isInitialLoad) {
1561
+ if (!this.isImportRules && !this.isInitialLoad && !this.prvtEvtTgrDaD) {
1146
1562
  this.trigger('beforeChange', args, function (observedChangeArgs) {
1147
1563
  _this.addGroupSuccess(observedChangeArgs, isGroup, target, condition, isBtnClick, not, isRoot, rule);
1148
1564
  });
@@ -1153,6 +1569,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1153
1569
  }
1154
1570
  };
1155
1571
  QueryBuilder.prototype.addGroupSuccess = function (args, isGroup, eventTarget, condition, isBtnClick, not, isRoot, rule) {
1572
+ var _this = this;
1156
1573
  if (!args.cancel && (this.element.querySelectorAll('.e-group-container').length <= this.maxGroupCount)) {
1157
1574
  var target = eventTarget;
1158
1575
  var dltGroupBtn = void 0;
@@ -1163,8 +1580,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1163
1580
  else {
1164
1581
  groupID = target.id;
1165
1582
  }
1583
+ if (this.enableSeparateConnector) {
1584
+ this.groupElem = this.groupTemplate();
1585
+ }
1166
1586
  var groupElem = this.groupElem.cloneNode(true);
1167
1587
  groupElem.setAttribute('id', this.element.id + '_group' + this.groupIdCounter);
1588
+ if (this.groupIdCounter === 0 && this.allowDragAndDrop && groupElem.querySelector('.e-drag-qb-rule')) {
1589
+ if (groupElem && groupElem.children[0]) {
1590
+ groupElem.children[0].classList.add('e-parent-header');
1591
+ }
1592
+ addClass([groupElem.querySelector('.e-drag-qb-rule')], 'e-hidden');
1593
+ }
1168
1594
  if (this.headerTemplate) {
1169
1595
  if (isRoot) {
1170
1596
  isGroup = false;
@@ -1217,7 +1643,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1217
1643
  this.isLastGroup = true;
1218
1644
  }
1219
1645
  else {
1220
- childElems[this.groupIndex + 1].parentNode.insertBefore(groupElem, childElems[this.groupIndex + 1]); // clone the element to nxt element
1646
+ if (this.enableSeparateConnector) {
1647
+ var index = 0;
1648
+ var tempGroupIndex = this.groupIndex + 1;
1649
+ for (var i = 0; i < tempGroupIndex; i++) {
1650
+ if (childElems[i].classList.contains('e-rule-container')) {
1651
+ tempGroupIndex++;
1652
+ index++;
1653
+ }
1654
+ }
1655
+ if (index > 0) {
1656
+ index--;
1657
+ }
1658
+ var idx = this.groupIndex + index + 1;
1659
+ childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
1660
+ }
1661
+ else {
1662
+ var idx = this.groupIndex + 1;
1663
+ childElems[idx].parentNode.insertBefore(groupElem, childElems[idx]);
1664
+ }
1221
1665
  this.isMiddleGroup = true;
1222
1666
  }
1223
1667
  }
@@ -1283,7 +1727,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1283
1727
  if (this.enableNotCondition) {
1284
1728
  if (!this.headerTemplate) {
1285
1729
  var notElem = groupElem.querySelector('.e-qb-toggle');
1286
- var tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });
1730
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1731
+ var tglBtn = void 0;
1732
+ if (this.enableSeparateConnector) {
1733
+ tglBtn = new CheckBox({ label: this.l10n.getConstant('NOT'), cssClass: 'e-qb-toggle' });
1734
+ }
1735
+ else {
1736
+ tglBtn = new Button({ content: this.l10n.getConstant('NOT'), cssClass: 'e-btn e-small' });
1737
+ }
1287
1738
  tglBtn.appendTo(notElem);
1288
1739
  groupElem.querySelector('.e-btngroup-and-lbl').classList.add('e-not');
1289
1740
  if (this.updatedRule && this.updatedRule.not) {
@@ -1291,67 +1742,218 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1291
1742
  }
1292
1743
  }
1293
1744
  }
1745
+ if (this.enableSeparateConnector && !this.headerTemplate) {
1746
+ var andElem = groupElem.querySelector('.e-btngroup-and');
1747
+ var orElem = groupElem.querySelector('.e-btngroup-or');
1748
+ var btnGroup = groupElem.querySelector('.e-btn-group');
1749
+ for (var i = 0; i < btnGroup.childNodes.length; i++) {
1750
+ if (groupElem.querySelector('.e-btn-group').childNodes[i].textContent.toLowerCase() === 'not') {
1751
+ if (!this.enableNotCondition) {
1752
+ btnGroup.childNodes[i].style.display = 'none';
1753
+ }
1754
+ else {
1755
+ btnGroup.childNodes[i].classList.add('e-multiconnector');
1756
+ }
1757
+ }
1758
+ else {
1759
+ btnGroup.childNodes[i].style.display = 'none';
1760
+ }
1761
+ }
1762
+ var prevSibling = groupElem.previousElementSibling;
1763
+ if (prevSibling) {
1764
+ if (isNullOrUndefined(this.headerTemplate)) {
1765
+ groupElem.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), groupElem);
1766
+ var notElem = groupElem.previousElementSibling.childNodes[0];
1767
+ if (notElem.classList.contains('e-qb-toggle')) {
1768
+ notElem.style.display = 'none';
1769
+ }
1770
+ }
1771
+ if (!this.isImportRules) {
1772
+ var groupElement = groupElem.previousElementSibling;
1773
+ var newAndElem = groupElement.querySelector('.e-btngroup-and');
1774
+ var newOrElem = groupElement.querySelector('.e-btngroup-or');
1775
+ if (!andElem.checked && !orElem.checked) {
1776
+ var nextSibling = groupElem.nextElementSibling;
1777
+ if (nextSibling && nextSibling.classList.contains('e-btn-group')) {
1778
+ andElem = nextSibling.querySelector('.e-btngroup-and');
1779
+ orElem = nextSibling.querySelector('.e-btngroup-or');
1780
+ newAndElem.checked = andElem.checked;
1781
+ newOrElem.checked = orElem.checked;
1782
+ }
1783
+ }
1784
+ else if (this.enableSeparateConnector) {
1785
+ if (andElem.checked) {
1786
+ newAndElem.checked = true;
1787
+ }
1788
+ if (orElem.checked) {
1789
+ newOrElem.checked = true;
1790
+ }
1791
+ }
1792
+ }
1793
+ }
1794
+ }
1294
1795
  this.updatedRule = null;
1295
1796
  if (this.headerTemplate) {
1296
- var args_2 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1797
+ var args_4 = { requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1297
1798
  notCondition: this.enableNotCondition ? not : undefined };
1298
- this.trigger('actionBegin', args_2);
1799
+ this.trigger('actionBegin', args_4);
1299
1800
  }
1300
1801
  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'));
1802
+ if (this.enableSeparateConnector) {
1803
+ var conditionBtn_1 = groupElem.querySelector('.e-add-condition-btn');
1804
+ var btnObj = new Button({ cssClass: this.element.id + '_addConditionbtn', content: this.l10n.getConstant('AddCondition') });
1805
+ btnObj.appendTo(conditionBtn_1);
1806
+ btnObj.element.onclick = function () {
1807
+ _this.addRuleElement(closest(conditionBtn_1, '.e-group-container'), {});
1808
+ };
1809
+ var groupBtn_1 = groupElem.querySelector('.e-add-group-btn');
1810
+ btnObj = new Button({ cssClass: this.element.id + '_addGroupbtn', content: this.l10n.getConstant('AddGroup') });
1811
+ btnObj.appendTo(groupBtn_1);
1812
+ btnObj.element.onclick = function () {
1813
+ _this.addGroupElement(true, closest(groupBtn_1, '.e-group-container'), '', true);
1814
+ };
1815
+ }
1816
+ else {
1817
+ var groupBtn = groupElem.querySelector('.e-add-btn');
1818
+ var btnObj = new DropDownButton({
1819
+ items: this.items,
1820
+ cssClass: 'e-round e-small e-caret-hide e-addrulegroup',
1821
+ iconCss: 'e-icons e-add-icon',
1822
+ beforeOpen: this.selectBtn.bind(this, groupBtn),
1823
+ select: this.selectBtn.bind(this, groupBtn)
1824
+ });
1825
+ btnObj.appendTo(groupBtn);
1826
+ groupBtn.setAttribute('title', this.l10n.getConstant('AddButton'));
1827
+ }
1311
1828
  }
1312
- if (!this.isImportRules) {
1829
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
1313
1830
  var grpId = target.id.replace(this.element.id + '_', '');
1314
1831
  var chgrpId = groupElem.id.replace(this.element.id + '_', '');
1315
1832
  this.trigger('change', { groupID: grpId, type: 'insertGroup', childGroupID: chgrpId });
1316
1833
  }
1317
1834
  }
1318
1835
  };
1319
- QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID) {
1836
+ QueryBuilder.prototype.setMultiConnector = function (trgt) {
1837
+ if (this.enableSeparateConnector && !this.headerTemplate) {
1838
+ if (trgt.previousElementSibling && this.groupElem.querySelector('.e-btn-group')) {
1839
+ trgt.parentElement.insertBefore(this.groupTemplate(true).querySelector('.e-btn-group'), trgt);
1840
+ var notElem = trgt.previousElementSibling.childNodes[0];
1841
+ if (notElem.classList.contains('e-qb-toggle')) {
1842
+ notElem.style.display = 'none';
1843
+ }
1844
+ this.addHeaderDiv(trgt);
1845
+ }
1846
+ }
1847
+ };
1848
+ QueryBuilder.prototype.addHeaderDiv = function (elem) {
1849
+ var prevRule;
1850
+ var prevElem = elem.previousElementSibling.previousElementSibling;
1851
+ if (prevElem) {
1852
+ if (prevElem.id.indexOf('rule') > -1) {
1853
+ prevRule = this.getRule(prevElem);
1854
+ }
1855
+ else {
1856
+ prevRule = this.getGroup(prevElem);
1857
+ }
1858
+ if (isNullOrUndefined(prevRule.condition)) {
1859
+ prevRule.condition = 'and';
1860
+ }
1861
+ var orElem = elem.previousElementSibling.querySelector('.e-btngroup-or');
1862
+ var andElem = elem.previousElementSibling.querySelector('.e-btngroup-and');
1863
+ orElem.disabled = false;
1864
+ andElem.disabled = false;
1865
+ if (prevRule.condition === 'or') {
1866
+ orElem.checked = true;
1867
+ }
1868
+ else {
1869
+ andElem.checked = true;
1870
+ }
1871
+ }
1872
+ };
1873
+ QueryBuilder.prototype.headerTemplateFn = function (groupElem, not, condition, rule, groupID, isInitialRule) {
1320
1874
  var template;
1321
1875
  var templateID = this.element.id + '_header';
1322
1876
  var args;
1323
1877
  var groupHdr = groupElem.querySelector('.e-group-header');
1878
+ if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1879
+ groupHdr = groupElem;
1880
+ }
1324
1881
  if (this.headerTemplate) {
1325
1882
  args = { requestType: 'header-template-initialize', ruleID: groupElem.id,
1326
1883
  notCondition: this.enableNotCondition ? not : undefined,
1327
1884
  condition: condition, rule: this.getRuleCollection(rule, true), groupID: groupID };
1328
1885
  this.trigger('actionBegin', args);
1886
+ if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1887
+ args.requestType = 'rule-template-create';
1888
+ }
1329
1889
  this.headerFn = this.templateParser(this.headerTemplate);
1330
1890
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1331
1891
  if (this.isReact) {
1332
1892
  template = this.headerFn(args, this, groupElem.id, templateID)[0];
1333
- groupHdr.appendChild(template);
1893
+ if (this.enableSeparateConnector && isInitialRule) {
1894
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1895
+ }
1896
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1897
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1898
+ }
1899
+ else {
1900
+ groupHdr.appendChild(template);
1901
+ }
1334
1902
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1335
1903
  }
1336
1904
  else if (this.isAngular) {
1337
1905
  var templateColl = this.headerFn(args, this, groupElem.id, templateID);
1338
1906
  template = (templateColl[0].nodeType === 3) ? templateColl[1] : templateColl[0];
1339
- groupHdr.appendChild(template);
1907
+ if (this.enableSeparateConnector && isInitialRule) {
1908
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1909
+ }
1910
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1911
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1912
+ }
1913
+ else {
1914
+ groupHdr.appendChild(template);
1915
+ }
1340
1916
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1341
1917
  }
1342
1918
  else if (this.isVue3) {
1343
1919
  template = this.headerFn(args, this, groupElem.id, templateID);
1344
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
1345
- append(template, groupHdr);
1920
+ if (this.enableSeparateConnector && isInitialRule) {
1921
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1922
+ }
1923
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1924
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1925
+ }
1926
+ else {
1927
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1928
+ append(template, groupHdr);
1929
+ }
1346
1930
  }
1347
1931
  else {
1348
1932
  template = this.headerFn(args, this, 'Template', templateID)[0];
1349
- groupHdr.appendChild(template);
1933
+ if (this.enableSeparateConnector && isInitialRule) {
1934
+ this.enableSeparateConnectorInitialRule(groupElem, template);
1935
+ }
1936
+ else if (this.enableSeparateConnector && groupElem.id.indexOf('rule') !== -1) {
1937
+ groupHdr.parentElement.insertBefore(template, groupHdr.nextElementSibling);
1938
+ }
1939
+ else {
1940
+ groupHdr.appendChild(template);
1941
+ }
1350
1942
  }
1351
1943
  this.renderReactTemplates();
1352
1944
  }
1353
1945
  return groupElem;
1354
1946
  };
1947
+ QueryBuilder.prototype.enableSeparateConnectorInitialRule = function (groupElem, template) {
1948
+ var elem = groupElem.nextElementSibling ? groupElem.nextElementSibling : groupElem;
1949
+ var group = elem.closest('.e-group-container');
1950
+ if (!groupElem.nextElementSibling && group) {
1951
+ group = group.nextElementSibling ? group.nextElementSibling : group;
1952
+ }
1953
+ if (group) {
1954
+ group.parentElement.insertBefore(template, group);
1955
+ }
1956
+ };
1355
1957
  /**
1356
1958
  * Notify the changes to component.
1357
1959
  *
@@ -1370,12 +1972,29 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1370
1972
  return;
1371
1973
  }
1372
1974
  if (type === 'condition') {
1373
- rules.condition = value;
1975
+ if (this.enableSeparateConnector) {
1976
+ ruleElement = element.parentElement.previousElementSibling;
1977
+ if (ruleElement && ruleElement.classList.contains('e-group-container')) {
1978
+ ruleElement = ruleElement.querySelectorAll('.e-rule-container')[ruleElement.querySelectorAll('.e-rule-container').length - 1];
1979
+ }
1980
+ if (ruleElement && ruleElement.classList.contains('e-rule-container')) {
1981
+ rules = this.getRule(ruleElement);
1982
+ }
1983
+ rules.condition = value;
1984
+ }
1985
+ else {
1986
+ rules.condition = value;
1987
+ }
1374
1988
  return;
1375
1989
  }
1376
1990
  while (ruleElement && ruleElement.previousElementSibling !== null) {
1377
1991
  ruleElement = ruleElement.previousElementSibling;
1378
- index++;
1992
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
1993
+ ((!this.headerTemplate && !ruleElement.classList.contains('e-btn-group')) ||
1994
+ this.headerTemplate && (ruleElement.classList.contains('e-rule-container') ||
1995
+ ruleElement.classList.contains('e-group-container'))))) {
1996
+ index++;
1997
+ }
1379
1998
  }
1380
1999
  var rule = rules.rules[index];
1381
2000
  var column = this.getColumn(rule.field);
@@ -1412,7 +2031,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1412
2031
  }
1413
2032
  while (ruleElem && ruleElem.previousElementSibling !== null) {
1414
2033
  ruleElem = ruleElem.previousElementSibling;
1415
- index++;
2034
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
2035
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
2036
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
2037
+ ruleElem.classList.contains('e-group-container'))))) {
2038
+ index++;
2039
+ }
1416
2040
  }
1417
2041
  var rule = rules.rules[index];
1418
2042
  if (type === 'field') {
@@ -1469,12 +2093,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1469
2093
  else {
1470
2094
  ruleElement.className = 'e-rule-container e-horizontal-mode';
1471
2095
  }
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';
2096
+ if (!this.enableSeparateConnector) {
2097
+ if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-rule-container') > -1) {
2098
+ if (ruleElement.className.indexOf('e-joined-rule') < 0) {
2099
+ ruleElement.className += ' e-joined-rule';
2100
+ }
2101
+ if (ruleElement.previousElementSibling.className.indexOf('e-prev-joined-rule') < 0) {
2102
+ ruleElement.previousElementSibling.className += ' e-prev-joined-rule';
2103
+ }
1478
2104
  }
1479
2105
  }
1480
2106
  if (ruleElement.previousElementSibling && ruleElement.previousElementSibling.className.indexOf('e-group-container') > -1 &&
@@ -1539,8 +2165,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1539
2165
  var value;
1540
2166
  var rbValue;
1541
2167
  if (element.className.indexOf('e-radio') > -1) {
1542
- // eslint-disable-next-line
1543
- rbValue = parseInt(element.id.split('valuekey')[1], 0);
2168
+ rbValue = parseInt(element.id.split('valuekey')[1], 10);
1544
2169
  if (this.fieldMode === 'Default') {
1545
2170
  dropDownObj = getComponent(closest(element, '.e-rule-container').querySelector('.e-filter-input'), 'dropdownlist');
1546
2171
  this.selectedColumn = dropDownObj.getDataByValue(dropDownObj.value);
@@ -1570,7 +2195,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1570
2195
  if (args.type === 'input' && args.currentTarget) {
1571
2196
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1572
2197
  value = Number(args.currentTarget.value);
1573
- var numericTextBoxObj = getInstance(args.currentTarget, NumericTextBox);
2198
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
2199
+ var elem = args.currentTarget;
2200
+ var numericTextBoxObj = getInstance(elem, NumericTextBox);
1574
2201
  numericTextBoxObj.value = value;
1575
2202
  this.isNumInput = true;
1576
2203
  }
@@ -1679,7 +2306,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1679
2306
  var index = 0;
1680
2307
  while (ruleElem && ruleElem.previousElementSibling !== null) {
1681
2308
  ruleElem = ruleElem.previousElementSibling;
1682
- index++;
2309
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
2310
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
2311
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
2312
+ ruleElem.classList.contains('e-group-container'))))) {
2313
+ index++;
2314
+ }
1683
2315
  }
1684
2316
  rules.rules[index].value = '';
1685
2317
  this.changeRule(rules.rules[index], args);
@@ -1725,7 +2357,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1725
2357
  var ruleID = ruleElem.id.replace(this.element.id + '_', '');
1726
2358
  var eventsArgs = { groupID: grID, ruleID: ruleID, selectedField: this.fieldMode === 'DropdownTree' ?
1727
2359
  dl.value[0] : dl.value, cancel: false, type: 'field' };
1728
- if (!this.isImportRules) {
2360
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
1729
2361
  this.trigger('beforeChange', eventsArgs, function (observedChangeArgs) {
1730
2362
  _this.fieldChangeSuccess(observedChangeArgs, tmpRl, flt, rl, dArg);
1731
2363
  });
@@ -1896,7 +2528,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1896
2528
  if (valElem && this.getColumn(rule.field).template) {
1897
2529
  filterElem = operatorElem.previousElementSibling;
1898
2530
  }
1899
- if (valElem.children.length == 0) {
2531
+ if (valElem.children.length === 0) {
1900
2532
  filterElem = operatorElem.previousElementSibling;
1901
2533
  }
1902
2534
  this.changeRuleValues(filterElem, rule, tempRule, ddlArgs);
@@ -1950,7 +2582,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1950
2582
  value = '';
1951
2583
  ddlIdx = -1;
1952
2584
  }
1953
- if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1)) {
2585
+ if (this.isImportRules || (this.ruleIndex > -1 || this.groupIndex > -1 || this.prvtEvtTgrDaD)) {
1954
2586
  value = rule ? (rule.operator ? rule.operator : value) : value;
1955
2587
  }
1956
2588
  var ddlOperator = void 0;
@@ -2181,7 +2813,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2181
2813
  };
2182
2814
  var this_2 = this;
2183
2815
  for (var i = 0, iLen = dataSource.length; i < iLen; i++) {
2184
- _loop_2(i, iLen);
2816
+ _loop_2(i);
2185
2817
  }
2186
2818
  return result;
2187
2819
  };
@@ -2335,14 +2967,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2335
2967
  var columnData = this.getItemData(parentId);
2336
2968
  var selectedValue;
2337
2969
  var isTemplate = (typeof columnData.template === 'string');
2338
- if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value != '') {
2970
+ if (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate || rule.value !== '') {
2339
2971
  selectedValue = rule.value;
2340
2972
  }
2341
2973
  else {
2342
2974
  selectedValue = this.setDefaultValue(parentId, false, false);
2343
2975
  }
2344
2976
  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);
2977
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
2978
+ this.setDefaultValue(parentId, true, false);
2346
2979
  this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
2347
2980
  if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
2348
2981
  ruleValElem.style.width = '100%';
@@ -2354,7 +2987,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2354
2987
  }
2355
2988
  else {
2356
2989
  if (operator === 'in' || operator === 'notin') {
2357
- selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
2990
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
2991
+ this.setDefaultValue(parentId, true, false);
2358
2992
  selectedValue = selectedVal.join(',');
2359
2993
  }
2360
2994
  var txtBox = void 0;
@@ -2374,9 +3008,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2374
3008
  QueryBuilder.prototype.renderNumberValue = function (parentId, rule, operator, idx, ruleValElem, itemData, length) {
2375
3009
  var columnData = this.getItemData(parentId);
2376
3010
  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);
3011
+ var selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic || isTemplate ||
3012
+ typeof rule.value === 'number') ? rule.value : this.setDefaultValue(parentId, false, true);
2378
3013
  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);
3014
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1 || this.isPublic) ? rule.value :
3015
+ this.setDefaultValue(parentId, true, false);
2380
3016
  this.renderMultiSelect(columnData, parentId, idx, selectedVal, columnData.values);
2381
3017
  if (this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical') {
2382
3018
  ruleValElem.style.width = '100%';
@@ -2387,7 +3023,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2387
3023
  }
2388
3024
  }
2389
3025
  else if (operator === 'in' || operator === 'notin') {
2390
- selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value : this.setDefaultValue(parentId, true, false);
3026
+ selectedVal = (this.isImportRules || this.ruleIndex > -1 || this.groupIndex > -1) ? rule.value :
3027
+ this.setDefaultValue(parentId, true, false);
2391
3028
  var selVal = selectedVal.join(',');
2392
3029
  var txtInp = void 0;
2393
3030
  txtInp = {
@@ -2849,10 +3486,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2849
3486
  }
2850
3487
  var controlName = element.className.split(' e-')[idx];
2851
3488
  var i = parseInt(element.id.slice(-1), 2);
3489
+ var column;
3490
+ var format;
3491
+ var selectedDate;
3492
+ var value;
3493
+ var radioBtnObj;
2852
3494
  switch (controlName) {
2853
3495
  case 'checkbox':
2854
- // eslint-disable-next-line
2855
- var value = getComponent(element, controlName).value;
3496
+ value = getComponent(element, controlName).value;
2856
3497
  rule.value = (value !== '') ? value : undefined;
2857
3498
  break;
2858
3499
  case 'textbox':
@@ -2862,8 +3503,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2862
3503
  rule.value = getComponent(element, controlName).value;
2863
3504
  break;
2864
3505
  case 'radio':
2865
- // eslint-disable-next-line
2866
- var radioBtnObj = getComponent(element, controlName);
3506
+ radioBtnObj = getComponent(element, controlName);
2867
3507
  if (radioBtnObj.checked) {
2868
3508
  if (typeof rule.value === 'boolean') {
2869
3509
  rule.value = radioBtnObj.value === 'true';
@@ -2891,12 +3531,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2891
3531
  }
2892
3532
  break;
2893
3533
  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;
3534
+ column = this.getColumn(rule.field);
3535
+ format = this.getFormat(column.format);
3536
+ selectedDate = getComponent(element, controlName).value;
2900
3537
  if (rule.operator.indexOf('between') > -1) {
2901
3538
  if (typeof rule.value === 'string') {
2902
3539
  rule.value = [];
@@ -2929,7 +3566,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2929
3566
  var beforeRules = this.getValidRules(this.rule);
2930
3567
  while (ruleElem && ruleElem.previousElementSibling !== null) {
2931
3568
  ruleElem = ruleElem.previousElementSibling;
2932
- index++;
3569
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
3570
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
3571
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
3572
+ ruleElem.classList.contains('e-group-container'))))) {
3573
+ index++;
3574
+ }
2933
3575
  }
2934
3576
  var operator = rule.rules[index].operator ? rule.rules[index].operator.toString() : '';
2935
3577
  ruleElem = closest(target, '.e-rule-container');
@@ -2978,7 +3620,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
2978
3620
  }
2979
3621
  this.updateValues(elementCln[i_1], rule.rules[index]);
2980
3622
  }
2981
- if (!this.isImportRules) {
3623
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
2982
3624
  this.trigger('change', eventsArgs);
2983
3625
  }
2984
3626
  if (this.allowValidation && rule.rules[index].field && target.parentElement.className.indexOf('e-tooltip') > -1) {
@@ -3023,7 +3665,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3023
3665
  var beforeRuleStr = JSON.stringify({ condition: beforeRule.condition, not: beforeRule.not, rule: beforeRule.rules });
3024
3666
  var afetrRuleStr = JSON.stringify({ condition: afterRule.condition, not: afterRule.not, rule: afterRule.rules });
3025
3667
  if (beforeRuleStr !== afetrRuleStr) {
3026
- if (!this.isImportRules) {
3668
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3027
3669
  this.trigger('ruleChange', { previousRule: beforeRule, rule: afterRule, type: type });
3028
3670
  }
3029
3671
  }
@@ -3190,7 +3832,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3190
3832
  var len;
3191
3833
  var tooltip;
3192
3834
  _super.prototype.destroy.call(this);
3193
- var popupElement;
3194
3835
  element = this.element.querySelectorAll('.e-addrulegroup');
3195
3836
  len = element.length;
3196
3837
  for (i = 0; i < len; i++) {
@@ -3236,7 +3877,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3236
3877
  if (this.portals && this.portals.length) {
3237
3878
  this.clearQBTemplate();
3238
3879
  }
3239
- popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
3880
+ var popupElement = document.querySelectorAll('.qb-dropdownlist.e-popup');
3240
3881
  if (popupElement) {
3241
3882
  for (i = 0; i < popupElement.length; i++) {
3242
3883
  popupElement[i].remove();
@@ -3309,7 +3950,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3309
3950
  }
3310
3951
  }
3311
3952
  if (!this.headerTemplate) {
3312
- this.disableRuleCondition(groupElem, rule);
3953
+ this.disableRuleCondition(groupElem, rule, null, this.enableSeparateConnector ? true : null);
3313
3954
  }
3314
3955
  }
3315
3956
  };
@@ -3318,6 +3959,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3318
3959
  if (this.cssClass) {
3319
3960
  addClass([this.element], this.cssClass.replace(/\s+/g, ' ').trim().split(' '));
3320
3961
  }
3962
+ if (this.enableSeparateConnector) {
3963
+ addClass([this.element], 'e-multi-connector');
3964
+ }
3321
3965
  if (this.enableRtl) {
3322
3966
  addClass([this.element], 'e-rtl');
3323
3967
  }
@@ -3354,14 +3998,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3354
3998
  }
3355
3999
  }
3356
4000
  else {
3357
- if (this.columns.length && this.isImportRules) {
4001
+ if (this.columns && this.columns.length && this.isImportRules) {
3358
4002
  this.addGroupElement(false, this.element, this.rule.condition, false, this.rule.not, false, this.rule);
3359
4003
  var mRules = extend({}, this.rule, {}, true);
3360
4004
  this.isRefreshed = true;
3361
4005
  this.setGroupRules(mRules);
3362
4006
  this.isRefreshed = false;
3363
4007
  }
3364
- else if (this.columns.length) {
4008
+ else if (this.columns && this.columns.length) {
3365
4009
  this.addRuleElement(this.element.querySelector('.e-group-container'), {});
3366
4010
  }
3367
4011
  this.notGroupRtl();
@@ -3415,8 +4059,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3415
4059
  this.groupIdCounter = 0;
3416
4060
  if (!this.headerTemplate) {
3417
4061
  if (this.enableNotCondition) {
3418
- if (this.enableNotCondition) {
3419
- var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
4062
+ var inputElem = this.createElement('button', { attrs: { type: 'button', class: 'e-qb-toggle' } });
4063
+ if (this.groupElem.querySelector('.e-btn-group')) {
3420
4064
  this.groupElem.querySelector('.e-btn-group').insertBefore(inputElem, this.groupElem.querySelector('.e-btngroup-and'));
3421
4065
  }
3422
4066
  }
@@ -3457,14 +4101,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3457
4101
  };
3458
4102
  QueryBuilder.prototype.onPropertyChanged = function (newProp, oldProp) {
3459
4103
  var properties = Object.keys(newProp);
4104
+ var groupElem = this.element.querySelector('.e-group-container');
4105
+ var summaryElem = this.element.querySelector('.e-summary-content');
3460
4106
  for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {
3461
4107
  var prop = properties_1[_i];
3462
4108
  switch (prop) {
3463
4109
  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
4110
  if (newProp.summaryView) {
3469
4111
  groupElem.style.display = 'none';
3470
4112
  if (this.element.querySelectorAll('.e-summary-content').length < 1) {
@@ -3604,6 +4246,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3604
4246
  this.isReadonly = newProp.readonly;
3605
4247
  this.enableReadonly();
3606
4248
  break;
4249
+ case 'allowDragAndDrop':
4250
+ this.allowDragAndDrop = newProp.allowDragAndDrop;
4251
+ this.refresh();
4252
+ break;
4253
+ case 'enableSeparateConnector':
4254
+ this.enableSeparateConnector = newProp.enableSeparateConnector;
4255
+ this.refresh();
4256
+ break;
3607
4257
  }
3608
4258
  }
3609
4259
  };
@@ -3761,6 +4411,134 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3761
4411
  this.initControl();
3762
4412
  }
3763
4413
  this.renderComplete();
4414
+ if (this.allowDragAndDrop) {
4415
+ this.initializeDrag();
4416
+ }
4417
+ };
4418
+ QueryBuilder.prototype.initializeDrag = function () {
4419
+ this.draggable = new Draggable(this.element, {
4420
+ dragTarget: '.e-drag-qb-rule',
4421
+ distance: 5,
4422
+ helper: this.helper.bind(this),
4423
+ dragStart: this.dragStartHandler.bind(this),
4424
+ drag: this.dragHandler.bind(this),
4425
+ dragStop: this.dragStopHandler.bind(this),
4426
+ isReplaceDragEle: true,
4427
+ isPreventSelect: false,
4428
+ abort: '.e-parent-header',
4429
+ isDragScroll: true
4430
+ });
4431
+ };
4432
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4433
+ QueryBuilder.prototype.helper = function (e) {
4434
+ var target = this.draggable.currentStateTarget;
4435
+ if (!target.classList.contains('e-drag-qb-rule') || (target.classList.contains('e-drag-qb-rule') && closest(target, '.e-disable'))) {
4436
+ return false;
4437
+ }
4438
+ var visualElement = this.createElement('div', {
4439
+ className: 'e-cloneproperties e-draganddrop e-dragclone',
4440
+ styles: 'height:"auto", z-index:2, width:' + this.element.offsetWidth
4441
+ });
4442
+ var cloneElement;
4443
+ if (this.draggable.currentStateTarget.parentElement.classList.contains('e-group-header')) {
4444
+ cloneElement = closest(target, '.e-group-container').cloneNode(true);
4445
+ closest(target, '.e-group-container').classList.add('e-qb-dragging-rule');
4446
+ }
4447
+ else {
4448
+ visualElement.classList.add('e-group-body');
4449
+ cloneElement = this.createElement('div', { className: 'e-rule-container' });
4450
+ var ruleElement = closest(target, '.e-rule-field').cloneNode(true);
4451
+ cloneElement.appendChild(ruleElement);
4452
+ closest(target, '.e-rule-field').classList.add('e-qb-dragging-rule');
4453
+ }
4454
+ visualElement.appendChild(cloneElement);
4455
+ var childElements = visualElement.querySelectorAll('*');
4456
+ childElements.forEach(function (child) {
4457
+ child.removeAttribute('id');
4458
+ });
4459
+ this.element.appendChild(visualElement);
4460
+ return visualElement;
4461
+ };
4462
+ QueryBuilder.prototype.dragStartHandler = function (e) {
4463
+ this.draggedRule = e.target;
4464
+ this.isDragEventPrevent = false;
4465
+ document.body.classList.add('e-prevent-select');
4466
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4467
+ this.dragElement = e.dragElement;
4468
+ var rule = closest(e.target, '.e-rule-container');
4469
+ var group = closest(e.target, '.e-group-container');
4470
+ var dragEventArgs = { dragRuleID: rule !== null ? rule.id : group.id, dragGroupID: group.id, cancel: false };
4471
+ this.trigger('dragStart', dragEventArgs);
4472
+ this.isDragEventPrevent = dragEventArgs.cancel;
4473
+ };
4474
+ QueryBuilder.prototype.dragHandler = function (e) {
4475
+ if (this.isDragEventPrevent) {
4476
+ return;
4477
+ }
4478
+ var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
4479
+ borderLineElem.forEach(function (ele) {
4480
+ ele.classList.remove('e-drag-rule-bottom-line');
4481
+ });
4482
+ borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
4483
+ borderLineElem.forEach(function (ele) {
4484
+ ele.classList.remove('e-drag-rule-top-line');
4485
+ });
4486
+ if (isNullOrUndefined(e.target)) {
4487
+ return;
4488
+ }
4489
+ if (e.target.nodeName === 'HTML' || closest(e.target, '.e-qb-dragging-rule') || closest(e.target, '.e-group-header') ||
4490
+ !closest(e.target, '#' + this.element.id) || closest(e.target, '.e-disable') || (e.target.parentElement && e.target.parentElement.classList.contains('e-btn-group') && this.enableSeparateConnector)) {
4491
+ this.dragElement.classList.add('e-notallowedcur');
4492
+ return;
4493
+ }
4494
+ else {
4495
+ this.dragElement.classList.remove('e-notallowedcur');
4496
+ }
4497
+ var targetElem = closest(e.target, '.e-rule-container');
4498
+ var grpElem = closest(e.target, '.e-group-container');
4499
+ if (targetElem) {
4500
+ var rect = targetElem.getBoundingClientRect();
4501
+ var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
4502
+ var distanceToTop = mouseY - rect.top;
4503
+ var distanceToBottom = rect.bottom - mouseY;
4504
+ var threshold = 20; // Adjust as needed
4505
+ if (distanceToTop < threshold) {
4506
+ targetElem.classList.add('e-drag-rule-top-line');
4507
+ }
4508
+ else if (distanceToBottom < threshold) {
4509
+ targetElem.classList.add('e-drag-rule-bottom-line');
4510
+ }
4511
+ }
4512
+ else if (e.target.classList.contains('e-rule-list') && e.target.children.length === 0) {
4513
+ e.target.classList.add('e-drag-rule-bottom-line');
4514
+ }
4515
+ else if (e.target.classList.contains('e-rule-list') && e.target.children[0].classList.contains('e-group-container')) {
4516
+ var rect = e.target.children[0].getBoundingClientRect();
4517
+ var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
4518
+ var distanceToTop = mouseY - rect.top;
4519
+ var threshold = 20; // Adjust as needed
4520
+ if (distanceToTop < threshold) {
4521
+ e.target.classList.add('e-drag-rule-top-line');
4522
+ }
4523
+ }
4524
+ else if (closest(e.target, '.e-group-container') || e.target.classList.contains('e-group-container')) {
4525
+ if (!grpElem) {
4526
+ grpElem = e.target;
4527
+ }
4528
+ if (grpElem.id.indexOf('group0') > -1) {
4529
+ var rect = e.target.getBoundingClientRect();
4530
+ var mouseY = e.event.clientY || e.event.changedTouches[0].clientY;
4531
+ var distanceToBottom = rect.bottom - mouseY;
4532
+ var threshold = 20; // Adjust as needed
4533
+ if (distanceToBottom < threshold) {
4534
+ e.target.classList.add('e-drag-rule-bottom-line');
4535
+ }
4536
+ }
4537
+ }
4538
+ var dragEventArgs = { dragRuleID: targetElem !== null ? targetElem.id : grpElem !== null ? grpElem.id : null,
4539
+ dragGroupID: grpElem !== null ? grpElem.id : null, cancel: false };
4540
+ this.trigger('drag', dragEventArgs);
4541
+ this.isDragEventPrevent = dragEventArgs.cancel;
3764
4542
  };
3765
4543
  QueryBuilder.prototype.templateParser = function (template) {
3766
4544
  if (template) {
@@ -3805,6 +4583,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3805
4583
  EventHandler.add(wrapper, 'focusout', this.focusEventHandler, this);
3806
4584
  EventHandler.add(wrapper, 'focusin', this.focusEventHandler, this);
3807
4585
  EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);
4586
+ EventHandler.add(document, 'keydown', this.keyBoardHandler, this);
3808
4587
  };
3809
4588
  QueryBuilder.prototype.unWireEvents = function () {
3810
4589
  var wrapper = this.getWrapper();
@@ -3812,6 +4591,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3812
4591
  EventHandler.remove(wrapper, 'focusout', this.focusEventHandler);
3813
4592
  EventHandler.remove(wrapper, 'focusin', this.focusEventHandler);
3814
4593
  EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);
4594
+ EventHandler.remove(document, 'keydown', this.keyBoardHandler);
3815
4595
  };
3816
4596
  QueryBuilder.prototype.getParentGroup = function (target, isParent) {
3817
4597
  var groupLevel = (target instanceof Element) ? this.levelColl[target.id] : this.levelColl["" + target];
@@ -3840,7 +4620,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3840
4620
  groupId = groupElem.id.replace(this.element.id + '_', '');
3841
4621
  }
3842
4622
  var args = { groupID: groupId, cancel: false, type: 'deleteGroup' };
3843
- if (!this.isImportRules) {
4623
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3844
4624
  this.trigger('beforeChange', args, function (observedChangeArgs) {
3845
4625
  _this.deleteGroupSuccessCallBack(observedChangeArgs, target);
3846
4626
  });
@@ -3870,13 +4650,20 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3870
4650
  }
3871
4651
  while (groupElem.previousElementSibling !== null) {
3872
4652
  groupElem = groupElem.previousElementSibling;
3873
- index++;
4653
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
4654
+ ((!this.headerTemplate && !groupElem.classList.contains('e-btn-group')) ||
4655
+ this.headerTemplate && (groupElem.classList.contains('e-rule-container') ||
4656
+ groupElem.classList.contains('e-group-container'))))) {
4657
+ index++;
4658
+ }
3874
4659
  }
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');
4660
+ if (!this.enableSeparateConnector) {
4661
+ if (nextElem && nextElem.className.indexOf('e-separate-rule') > -1) {
4662
+ removeClass([nextElem], 'e-separate-rule');
4663
+ addClass([nextElem], 'e-joined-rule');
4664
+ if (prevElem && prevElem.className.indexOf('e-rule-container') > -1) {
4665
+ addClass([prevElem], 'e-prev-joined-rule');
4666
+ }
3880
4667
  }
3881
4668
  }
3882
4669
  var elem = groupElem.parentElement.parentElement.parentElement;
@@ -3908,7 +4695,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3908
4695
  delete this.levelColl[args.groupID];
3909
4696
  this.refreshLevelColl();
3910
4697
  this.disableRuleCondition(elem, rule);
3911
- if (!this.isImportRules) {
4698
+ if (this.enableSeparateConnector && prevElem && ((!this.headerTemplate && prevElem.classList.contains('e-btn-group')) ||
4699
+ (this.headerTemplate && prevElem.classList.contains('e-custom-group-btn')))) {
4700
+ detach(prevElem);
4701
+ }
4702
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3912
4703
  this.trigger('change', args);
3913
4704
  }
3914
4705
  this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteGroup');
@@ -3925,7 +4716,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3925
4716
  var groupID = groupElem.id.replace(this.element.id + '_', '');
3926
4717
  var ruleID = closest(target, '.e-rule-container').id.replace(this.element.id + '_', '');
3927
4718
  var args = { groupID: groupID, ruleID: ruleID, cancel: false, type: 'deleteRule' };
3928
- if (!this.isImportRules) {
4719
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
3929
4720
  this.trigger('beforeChange', args, function (observedChangeArgs) {
3930
4721
  _this.deleteRuleSuccessCallBack(observedChangeArgs, target);
3931
4722
  });
@@ -3940,10 +4731,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3940
4731
  var rule = this.getParentGroup(groupElem);
3941
4732
  var ruleElem = closest(target, '.e-rule-container');
3942
4733
  var beforeRules = this.getValidRules(this.rule);
3943
- var clnruleElem = ruleElem;
3944
- var nextElem = ruleElem.nextElementSibling;
3945
4734
  var prevElem = ruleElem.previousElementSibling;
3946
4735
  var index = 0;
4736
+ var clnruleElem = ruleElem;
4737
+ var nextElem = ruleElem.nextElementSibling;
3947
4738
  var valElem = ruleElem.querySelectorAll('.e-tooltip');
3948
4739
  var i = void 0;
3949
4740
  var len = valElem.length;
@@ -3952,7 +4743,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3952
4743
  }
3953
4744
  while (ruleElem.previousElementSibling !== null) {
3954
4745
  ruleElem = ruleElem.previousElementSibling;
3955
- index++;
4746
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
4747
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
4748
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
4749
+ ruleElem.classList.contains('e-group-container'))))) {
4750
+ index++;
4751
+ }
3956
4752
  }
3957
4753
  var column = this.getColumn(rule.rules[index].field);
3958
4754
  if (column && column.template && clnruleElem.querySelector('.e-template')) {
@@ -3971,17 +4767,27 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3971
4767
  var isTemplateRendered = clnruleElem.querySelector('.e-template-value');
3972
4768
  // eslint-disable
3973
4769
  try {
4770
+ if (this.enableSeparateConnector && (clnruleElem.previousElementSibling || clnruleElem.nextElementSibling)) {
4771
+ var previousElem = clnruleElem.previousElementSibling;
4772
+ var nextElem_1 = clnruleElem.nextElementSibling;
4773
+ if (isNullOrUndefined(nextElem_1) && ((!this.headerTemplate && previousElem.classList.contains('e-btn-group'))
4774
+ || (this.headerTemplate && previousElem.classList.contains('e-custom-group-btn')))) {
4775
+ if (previousElem && previousElem.previousElementSibling && previousElem.previousElementSibling.classList.contains('e-rule-container')) {
4776
+ var rule_1 = this.getRule(previousElem.previousElementSibling);
4777
+ rule_1.condition = null;
4778
+ }
4779
+ detach(previousElem);
4780
+ }
4781
+ else if ((!this.headerTemplate && nextElem_1.classList.contains('e-btn-group'))
4782
+ || (this.headerTemplate && nextElem_1.classList.contains('e-custom-group-btn'))) {
4783
+ detach(nextElem_1);
4784
+ }
4785
+ }
3974
4786
  detach(clnruleElem);
3975
4787
  }
3976
4788
  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;
4789
+ return;
3983
4790
  }
3984
- // eslint-enable
3985
4791
  if (column && column.ruleTemplate) {
3986
4792
  this.clearQBTemplate([clnruleElem.id]);
3987
4793
  }
@@ -3990,13 +4796,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
3990
4796
  }
3991
4797
  rule.rules.splice(index, 1);
3992
4798
  if (!(rule.rules[0] && rule.rules[0].rules)) {
3993
- this.disableRuleCondition(groupElem, rule);
4799
+ this.disableRuleCondition(groupElem, rule, this.enableSeparateConnector ? true : false);
3994
4800
  }
3995
4801
  var tooltipElem = this.element.querySelectorAll('.e-tooltip');
3996
4802
  for (var i_3 = 0; i_3 < tooltipElem.length; i_3++) {
3997
4803
  getComponent(tooltipElem[i_3], 'tooltip').refresh(tooltipElem[i_3]);
3998
4804
  }
3999
- if (!this.isImportRules) {
4805
+ if (!this.isImportRules && !this.prvtEvtTgrDaD) {
4000
4806
  this.trigger('change', args);
4001
4807
  }
4002
4808
  this.filterRules(beforeRules, this.getValidRules(this.rule), 'deleteRule');
@@ -4020,9 +4826,32 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4020
4826
  this.isImportRules = false;
4021
4827
  };
4022
4828
  QueryBuilder.prototype.keyBoardHandler = function (e) {
4023
- if (this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
4829
+ if (e.currentTarget === this.element && this.readonly && (e.keyCode === 38 || e.keyCode === 40 || e.keyCode === 13)) {
4024
4830
  e.preventDefault();
4025
4831
  }
4832
+ else if (e.code === 'Escape' && this.allowDragAndDrop) {
4833
+ this.isDragEventPrevent = true;
4834
+ document.body.classList.remove('e-prevent-select');
4835
+ var borderLineElem = this.element.querySelectorAll('.e-drag-rule-bottom-line');
4836
+ borderLineElem.forEach(function (ele) {
4837
+ ele.classList.remove('e-drag-rule-bottom-line');
4838
+ });
4839
+ borderLineElem = this.element.querySelectorAll('.e-drag-rule-top-line');
4840
+ borderLineElem.forEach(function (ele) {
4841
+ ele.classList.remove('e-drag-rule-top-line');
4842
+ });
4843
+ borderLineElem = this.element.querySelectorAll('.e-qb-dragging-rule');
4844
+ borderLineElem.forEach(function (ele) {
4845
+ ele.classList.remove('e-qb-dragging-rule');
4846
+ });
4847
+ var dragElemnet = this.element.querySelector('.e-cloneproperties');
4848
+ if (dragElemnet) {
4849
+ remove(dragElemnet);
4850
+ }
4851
+ if (this.enableSeparateConnector) {
4852
+ this.refresh();
4853
+ }
4854
+ }
4026
4855
  };
4027
4856
  QueryBuilder.prototype.clearQBTemplate = function (ruleElemColl) {
4028
4857
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -4030,7 +4859,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4030
4859
  this.clearTemplate(ruleElemColl);
4031
4860
  }
4032
4861
  };
4033
- QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules) {
4862
+ QueryBuilder.prototype.disableRuleCondition = function (groupElem, rules, isNewRuleAdded, isNewGroup) {
4034
4863
  if (!this.headerTemplate) {
4035
4864
  if (this.readonly) {
4036
4865
  return;
@@ -4046,21 +4875,124 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4046
4875
  orElem.nextElementSibling.classList.remove('e-btn-disable');
4047
4876
  andElem.nextElementSibling.classList.remove('e-btn-disable');
4048
4877
  }
4049
- if (rules && rules.condition === 'or') {
4050
- orElem.checked = true;
4878
+ if (this.enableSeparateConnector && !isNewRuleAdded) {
4879
+ var index = 0;
4880
+ var element = void 0;
4881
+ // eslint-disable-next-line no-constant-condition
4882
+ while (true) {
4883
+ var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
4884
+ var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
4885
+ andElem = andGroup[andGroup.length - (1 + index)];
4886
+ orElem = orGroup[orGroup.length - (1 + index)];
4887
+ element = andGroup[andGroup.length - (1 + index)];
4888
+ if (element && element.parentElement && element.parentElement.style.display === 'none') {
4889
+ index++;
4890
+ }
4891
+ else {
4892
+ break;
4893
+ }
4894
+ }
4895
+ var elem = groupElem.previousElementSibling;
4896
+ while (elem && !elem.classList.contains('e-rule-container')) {
4897
+ if (elem.classList.contains('e-group-container')) {
4898
+ elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
4899
+ break;
4900
+ }
4901
+ elem = elem.previousElementSibling;
4902
+ }
4903
+ if (isNewGroup && groupElem.classList.contains('e-group-container')) {
4904
+ elem = groupElem;
4905
+ var prevRule = this.getGroup(elem);
4906
+ if (prevRule.condition === 'or') {
4907
+ orElem.checked = true;
4908
+ }
4909
+ else {
4910
+ andElem.checked = true;
4911
+ }
4912
+ }
4913
+ else if (elem && elem.classList.contains('e-rule-container')) {
4914
+ var ruleID = elem.id.replace(this.element.id + '_', '');
4915
+ var prevRule = this.getRule(ruleID);
4916
+ if (prevRule.condition === 'or') {
4917
+ orElem.checked = true;
4918
+ }
4919
+ else {
4920
+ andElem.checked = true;
4921
+ }
4922
+ }
4051
4923
  }
4052
- else {
4053
- andElem.checked = true;
4924
+ else if (!isNewRuleAdded) {
4925
+ if (rules && rules.condition === 'or') {
4926
+ orElem.checked = true;
4927
+ }
4928
+ else {
4929
+ andElem.checked = true;
4930
+ }
4054
4931
  }
4055
4932
  }
4056
4933
  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');
4934
+ if (this.enableSeparateConnector && !isNewRuleAdded) {
4935
+ var index = 0;
4936
+ var element = void 0;
4937
+ // eslint-disable-next-line no-constant-condition
4938
+ while (true) {
4939
+ var andGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-and');
4940
+ var orGroup = groupElem.parentElement.querySelectorAll('.e-btngroup-or');
4941
+ andElem = andGroup[andGroup.length - (1 + index)];
4942
+ orElem = orGroup[orGroup.length - (1 + index)];
4943
+ element = andGroup[andGroup.length - (1 + index)];
4944
+ if (element && element.parentElement && element.parentElement.style.display === 'none') {
4945
+ index++;
4946
+ }
4947
+ else {
4948
+ break;
4949
+ }
4950
+ }
4951
+ var elem = void 0;
4952
+ var tempElem = groupElem.previousElementSibling;
4953
+ while (tempElem) {
4954
+ if (tempElem.classList.contains('e-group-container')) {
4955
+ tempElem = tempElem.querySelectorAll('.e-rule-container')[tempElem.querySelectorAll('.e-rule-container').length - 1];
4956
+ }
4957
+ if (tempElem.classList.contains('e-rule-container')) {
4958
+ elem = tempElem;
4959
+ break;
4960
+ }
4961
+ tempElem = tempElem.previousElementSibling;
4962
+ }
4963
+ if (isNullOrUndefined(elem) && groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1]) {
4964
+ elem = groupElem.querySelectorAll('.e-rule-container')[groupElem.querySelectorAll('.e-rule-container').length - 1];
4965
+ }
4966
+ if (isNewGroup && groupElem.classList.contains('e-group-container')) {
4967
+ elem = groupElem;
4968
+ var prevRule = this.getGroup(elem);
4969
+ if (prevRule.condition === 'or') {
4970
+ orElem.checked = true;
4971
+ }
4972
+ else {
4973
+ andElem.checked = true;
4974
+ }
4975
+ }
4976
+ else if (elem) {
4977
+ var ruleID = elem.id.replace(this.element.id + '_', '');
4978
+ var prevRule = this.getRule(ruleID);
4979
+ if (prevRule.condition === 'or' && orElem) {
4980
+ orElem.checked = true;
4981
+ }
4982
+ else if (andElem) {
4983
+ andElem.checked = true;
4984
+ }
4985
+ }
4986
+ }
4987
+ else if (!isNewRuleAdded) {
4988
+ andElem.checked = false;
4989
+ andElem.disabled = true;
4990
+ orElem.checked = false;
4991
+ orElem.disabled = true;
4992
+ if (rules) {
4993
+ orElem.nextElementSibling.classList.add('e-btn-disable');
4994
+ andElem.nextElementSibling.classList.add('e-btn-disable');
4995
+ }
4064
4996
  }
4065
4997
  }
4066
4998
  }
@@ -4164,7 +5096,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4164
5096
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
4165
5097
  rule.custom = customObj;
4166
5098
  }
4167
- if (rule.rules.length === 0) {
5099
+ if (rule.rules && rule.rules.length === 0) {
4168
5100
  rule = {};
4169
5101
  }
4170
5102
  }
@@ -4233,7 +5165,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4233
5165
  var rule = this.getParentGroup(groupElem);
4234
5166
  while (ruleElem.previousElementSibling !== null) {
4235
5167
  ruleElem = ruleElem.previousElementSibling;
4236
- index++;
5168
+ if (!this.enableSeparateConnector || (this.enableSeparateConnector &&
5169
+ ((!this.headerTemplate && !ruleElem.classList.contains('e-btn-group')) ||
5170
+ this.headerTemplate && (ruleElem.classList.contains('e-rule-container') ||
5171
+ ruleElem.classList.contains('e-group-container'))))) {
5172
+ index++;
5173
+ }
4237
5174
  }
4238
5175
  return rule.rules[index];
4239
5176
  };
@@ -4643,13 +5580,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4643
5580
  if (value.indexOf(':') > -1 && (value.indexOf('/') < 0 && value.indexOf(',') < 0
4644
5581
  && value.indexOf('-') < 0)) {
4645
5582
  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]));
5583
+ currDate.setHours(parseInt(value.split(':')[0], 10));
5584
+ currDate.setMinutes(parseInt(value.split(':')[1], 10));
4650
5585
  if (value.split(':')[2]) {
4651
- // eslint-disable-next-line
4652
- currDate.setSeconds(parseInt(value.split(':')[2]));
5586
+ currDate.setSeconds(parseInt(value.split(':')[2], 10));
4653
5587
  }
4654
5588
  }
4655
5589
  return currDate;
@@ -4665,17 +5599,43 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4665
5599
  parentElem = this.renderGroup(rule, rule.condition, parentElem, not);
4666
5600
  }
4667
5601
  else {
4668
- if (rule.rules.length > 1 && !this.headerTemplate) {
5602
+ if (rule.rules && rule.rules.length > 1 && !this.headerTemplate) {
4669
5603
  // enable/disable conditions when rule group is added
4670
5604
  var orElem = parentElem.querySelector('.e-btngroup-or');
4671
5605
  var andElem = parentElem.querySelector('.e-btngroup-and');
5606
+ if (this.enableSeparateConnector && parentElem.previousElementSibling) {
5607
+ orElem = parentElem.previousElementSibling.querySelector('.e-btngroup-or');
5608
+ andElem = parentElem.previousElementSibling.querySelector('.e-btngroup-and');
5609
+ }
4672
5610
  orElem.disabled = false;
4673
5611
  andElem.disabled = false;
4674
- if (rule.condition === 'or') {
4675
- orElem.checked = true;
5612
+ if (this.enableSeparateConnector) {
5613
+ var elem = parentElem.previousElementSibling;
5614
+ while (elem && !elem.classList.contains('e-rule-container')) {
5615
+ if (elem.classList.contains('e-group-container')) {
5616
+ elem = elem.querySelectorAll('.e-rule-container')[elem.querySelectorAll('.e-rule-container').length - 1];
5617
+ break;
5618
+ }
5619
+ elem = elem.previousElementSibling;
5620
+ }
5621
+ if (elem && elem.classList.contains('e-rule-container')) {
5622
+ var ruleID = elem.id.replace(this.element.id + '_', '');
5623
+ var prevRule = this.getRule(ruleID);
5624
+ if (prevRule.condition === 'or') {
5625
+ orElem.checked = true;
5626
+ }
5627
+ else {
5628
+ andElem.checked = true;
5629
+ }
5630
+ }
4676
5631
  }
4677
5632
  else {
4678
- andElem.checked = true;
5633
+ if (rule.condition === 'or') {
5634
+ orElem.checked = true;
5635
+ }
5636
+ else {
5637
+ andElem.checked = true;
5638
+ }
4679
5639
  }
4680
5640
  }
4681
5641
  else {
@@ -4695,7 +5655,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4695
5655
  }
4696
5656
  }
4697
5657
  }
4698
- if (rule.rules.length === 0 && this.headerTemplate) {
5658
+ if (rule.rules && rule.rules.length === 0 && this.headerTemplate) {
4699
5659
  rule.rules[0] = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
4700
5660
  }
4701
5661
  var ruleColl = rule.rules;
@@ -4716,10 +5676,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4716
5676
  var lockGrpTarget = parentElem.querySelector('.e-rule-list').children[i].querySelector('.e-lock-grp-btn');
4717
5677
  this.groupLock(lockGrpTarget);
4718
5678
  }
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
5679
  }
4724
5680
  }
4725
5681
  if (parentElem) {
@@ -4737,7 +5693,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4737
5693
  if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isMiddleGroup) {
4738
5694
  this.isMiddleGroup = false;
4739
5695
  this.cloneGrpBtnClick = false;
4740
- return cloneElem[this.groupIndex + 1]; // group added in the middle
5696
+ var index = 0;
5697
+ var tempGroupIndex = this.groupIndex + 1;
5698
+ if (this.enableSeparateConnector) {
5699
+ for (var i = 0; i < tempGroupIndex; i++) {
5700
+ if (cloneElem[i].classList.contains('e-rule-container')) {
5701
+ tempGroupIndex++;
5702
+ index++;
5703
+ }
5704
+ }
5705
+ }
5706
+ return cloneElem[this.groupIndex + index + 1]; // group added in the middle
4741
5707
  }
4742
5708
  else if (this.showButtons.cloneGroup && this.cloneGrpBtnClick && this.isLastGroup) {
4743
5709
  this.isLastGroup = false;
@@ -4864,9 +5830,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4864
5830
  }
4865
5831
  }
4866
5832
  }
4867
- else if (elem.classList.contains('e-btn-disable')) {
4868
- // do nothing
4869
- }
5833
+ else if (elem.classList.contains('e-btn-disable')) ;
4870
5834
  else {
4871
5835
  elem.classList.add('e-readonly');
4872
5836
  }
@@ -4906,6 +5870,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4906
5870
  for (var j = 0, jLen = rules.rules.length; j < jLen; j++) {
4907
5871
  if (rules.rules[j].rules) {
4908
5872
  queryStr = this.getSqlString(rules.rules[j], enableEscape, queryStr, sqlLocale);
5873
+ condition = rules.rules[j].condition;
4909
5874
  }
4910
5875
  else {
4911
5876
  var rule = rules.rules[j];
@@ -4997,8 +5962,10 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
4997
5962
  if (condition === '' || (rule && rule.condition !== '' && rule.custom && rule.custom.isCustom)) {
4998
5963
  condition = rule.condition;
4999
5964
  }
5000
- condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
5001
- queryStr += ' ' + condition + ' ';
5965
+ if (condition) {
5966
+ condition = sqlLocale ? this.l10n.getConstant(condition.toUpperCase()).toUpperCase() : condition.toUpperCase();
5967
+ queryStr += ' ' + condition + ' ';
5968
+ }
5002
5969
  }
5003
5970
  }
5004
5971
  }
@@ -5064,12 +6031,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5064
6031
  * @returns {ParameterizedSql} – Parameterized SQL query from rules.
5065
6032
  */
5066
6033
  QueryBuilder.prototype.getParameterizedSql = function (rule) {
5067
- if (!rule) {
5068
- rule = this.getValidRules();
6034
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6035
+ if (this.moduleLoader.loadedModules.length) {
6036
+ if (!rule) {
6037
+ rule = this.getValidRules();
6038
+ }
6039
+ var obj = { sql: null };
6040
+ this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
6041
+ return obj['sql'];
6042
+ }
6043
+ else {
6044
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5069
6045
  }
5070
- var obj = { sql: null };
5071
- this.notify('query-library', { prop: 'getParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
5072
- return obj['sql'];
6046
+ return null;
5073
6047
  };
5074
6048
  /**
5075
6049
  * Sets the rules from the parameter sql query.
@@ -5078,13 +6052,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5078
6052
  * @returns {void}
5079
6053
  */
5080
6054
  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 });
6055
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6056
+ if (this.moduleLoader.loadedModules.length) {
6057
+ var obj = { sql: null };
6058
+ this.notify('query-library', { prop: 'convertParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
6059
+ var sql = obj['sql'];
6060
+ if (sql) {
6061
+ sql = sql.replace(/`/g, '');
6062
+ var ruleModel = this.getRulesFromSql(sql);
6063
+ this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
6064
+ }
6065
+ }
6066
+ else {
6067
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5088
6068
  }
5089
6069
  };
5090
6070
  /**
@@ -5094,12 +6074,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5094
6074
  * @returns {ParameterizedNamedSql} – Parameterized Named SQL query from rules.
5095
6075
  */
5096
6076
  QueryBuilder.prototype.getParameterizedNamedSql = function (rule) {
5097
- if (!rule) {
5098
- rule = this.getValidRules();
6077
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6078
+ if (this.moduleLoader.loadedModules.length) {
6079
+ if (!rule) {
6080
+ rule = this.getValidRules();
6081
+ }
6082
+ var obj = { sql: null };
6083
+ this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
6084
+ return obj['sql'];
6085
+ }
6086
+ else {
6087
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5099
6088
  }
5100
- var obj = { sql: null };
5101
- this.notify('query-library', { prop: 'getNamedParameterSql', onPropertyChange: false, value: { rule: rule, obj: obj } });
5102
- return obj['sql'];
6089
+ return null;
5103
6090
  };
5104
6091
  /**
5105
6092
  * Sets the rules from the named parameter SQL query.
@@ -5108,13 +6095,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5108
6095
  * @returns {void}
5109
6096
  */
5110
6097
  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 });
6098
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6099
+ if (this.moduleLoader.loadedModules.length) {
6100
+ var obj = { sql: null };
6101
+ this.notify('query-library', { prop: 'convertNamedParamSqlToSql', onPropertyChange: false, value: { sql: sqlQuery, obj: obj } });
6102
+ var sql = obj['sql'];
6103
+ if (sql) {
6104
+ sql = sql.replace(/`/g, '');
6105
+ var ruleModel = this.getRulesFromSql(sql);
6106
+ this.setRules({ condition: ruleModel.condition, not: ruleModel.not, rules: ruleModel.rules });
6107
+ }
6108
+ }
6109
+ else {
6110
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5118
6111
  }
5119
6112
  };
5120
6113
  /**
@@ -5125,8 +6118,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5125
6118
  * @returns {void}
5126
6119
  */
5127
6120
  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 } });
6121
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6122
+ if (this.moduleLoader.loadedModules.length) {
6123
+ this.rule = { condition: 'and', not: false, rules: [] };
6124
+ this.notify('query-library', { prop: 'mongoParser', onPropertyChange: false, value: { mongoQuery: JSON.parse(mongoQuery), rule: this.rule, mongoLocale: mongoLocale } });
6125
+ }
6126
+ else {
6127
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
6128
+ }
5130
6129
  };
5131
6130
  /**
5132
6131
  * Gets the Mongo query from rules.
@@ -5135,12 +6134,19 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5135
6134
  * @returns {object} - Sql query from rules.
5136
6135
  */
5137
6136
  QueryBuilder.prototype.getMongoQuery = function (rule) {
5138
- if (!rule) {
5139
- rule = this.getValidRules();
6137
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6138
+ if (this.moduleLoader.loadedModules.length) {
6139
+ if (!rule) {
6140
+ rule = this.getValidRules();
6141
+ }
6142
+ var obj = { mongoQuery: null };
6143
+ this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
6144
+ return obj['mongoQuery'];
6145
+ }
6146
+ else {
6147
+ console.warn('[WARNING] :: Module "query-library" is not available in QueryBuilder component! You either misspelled the module name or forgot to load it.');
5140
6148
  }
5141
- var obj = { mongoQuery: null };
5142
- this.notify('query-library', { prop: 'getMongoFromRules', onPropertyChange: false, value: { rule: rule, mongoQuery: '', obj: obj } });
5143
- return obj['mongoQuery'];
6149
+ return '';
5144
6150
  };
5145
6151
  /**
5146
6152
  * Clones the rule based on the rule ID to the specific group.
@@ -5159,7 +6165,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5159
6165
  this.showButtons.cloneRule = true;
5160
6166
  this.addRules([{
5161
6167
  'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
5162
- 'value': getRule.value
6168
+ 'value': getRule.value, 'condition': getRule.condition
5163
6169
  }], groupID);
5164
6170
  this.ruleIndex = -1;
5165
6171
  this.cloneRuleBtnClick = false;
@@ -5248,8 +6254,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5248
6254
  var matchValue;
5249
6255
  for (var i = 0, iLen = operators.length; i < iLen; i++) {
5250
6256
  regexStr = /^\w+$/.test(operators[i]) ? '\\b' : '';
5251
- // eslint-disable-next-line
5252
- regex = new RegExp('^(' + operators[i] + ')' + regexStr, 'ig');
6257
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6258
+ var regExp = RegExp;
6259
+ regex = new regExp('^(' + operators[i] + ')' + regexStr, 'ig');
5253
6260
  if (regex.exec(sqlString)) {
5254
6261
  this.parser.push(['Operators', operators[i].toLowerCase()]);
5255
6262
  return operators[i].length;
@@ -5259,8 +6266,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5259
6266
  if (!lastPasrser || (lastPasrser && lastPasrser[0] !== 'Literal')) {
5260
6267
  for (var i = 0, iLen = conditions.length; i < iLen; i++) {
5261
6268
  regexStr = /^\w+$/.test(conditions[i]) ? '\\b' : '';
5262
- // eslint-disable-next-line
5263
- regex = new RegExp('^(' + conditions[i] + ')' + regexStr, 'ig');
6269
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6270
+ var regExp = RegExp;
6271
+ regex = new regExp('^(' + conditions[i] + ')' + regexStr, 'ig');
5264
6272
  if (regex.exec(sqlString)) {
5265
6273
  this.parser.push(['Conditions', conditions[i].toLowerCase()]);
5266
6274
  return conditions[i].length;
@@ -5269,8 +6277,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5269
6277
  }
5270
6278
  for (var i = 0, iLen = subOp.length; i < iLen; i++) {
5271
6279
  regexStr = /^\w+$/.test(subOp[i]) ? '\\b' : '';
5272
- // eslint-disable-next-line
5273
- regex = new RegExp('^(' + subOp[i] + ')' + regexStr, 'ig');
6280
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6281
+ var regExp = RegExp;
6282
+ regex = new regExp('^(' + subOp[i] + ')' + regexStr, 'ig');
5274
6283
  if (regex.exec(sqlString)) {
5275
6284
  this.parser.push(['SubOperators', subOp[i].toLowerCase()]);
5276
6285
  return subOp[i].length;
@@ -5298,31 +6307,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5298
6307
  this.parser.push(['String', null]);
5299
6308
  return matchValue.length;
5300
6309
  }
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];
6310
+ if (/^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)) {
6311
+ matchValue = /^`?([a-z_][a-z0-9_.\\[\]\\(\\)]{0,}(\\:(number|float|string|date|boolean))?)`?/i.exec(sqlString)[1];
5305
6312
  this.parser.push(['Literal', matchValue]);
5306
6313
  return matchValue.length;
5307
6314
  }
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];
6315
+ if (this.checkLiteral() && /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)) {
6316
+ matchValue = /^'?([a-z_][a-z0-9 _.\\[\]\\(\\)-]{0,}(\\:(number|float|string|date|boolean))?)'?/i.exec(sqlString)[1];
5312
6317
  this.parser.push(['Literal', matchValue]);
5313
6318
  return matchValue.length + 2;
5314
6319
  }
5315
6320
  if (this.checkNumberLiteral(sqlString, sqlLocale)) {
5316
- // eslint-disable-next-line
5317
- matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
6321
+ matchValue = /^[0-9]+(\.[0-9]+)$/.exec(sqlString)[0];
5318
6322
  this.parser.push(['Literal', matchValue]);
5319
6323
  return matchValue.length;
5320
6324
  }
5321
6325
  //String
5322
- // eslint-disable-next-line
5323
- if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
5324
- // eslint-disable-next-line
5325
- matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
6326
+ var singleString = this.getSingleQuoteString(sqlString);
6327
+ if (singleString !== '') {
6328
+ matchValue = singleString;
5326
6329
  if (matchValue[matchValue.length - 2] === '(') {
5327
6330
  var isClosed = false;
5328
6331
  for (var j = matchValue.length; j < sqlString.length; j++) {
@@ -5337,38 +6340,43 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5337
6340
  }
5338
6341
  else if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
5339
6342
  !this.checkCondition(sqlString, matchValue)) {
5340
- matchValue = this.getSingleQuoteString(sqlString, matchValue);
6343
+ matchValue = this.combineSingleQuoteString(sqlString, matchValue);
5341
6344
  }
5342
6345
  // end
5343
6346
  this.parser.push(['String', matchValue]);
5344
6347
  return matchValue.length;
5345
6348
  }
5346
6349
  // Double String
5347
- // eslint-disable-next-line
5348
- if (/^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)) {
5349
- // eslint-disable-next-line
5350
- matchValue = /^"([^\\"]*(?:\\.[^\\"]*)*)"/.exec(sqlString)[0];
6350
+ var doubleString = this.getDoubleQuoteString(sqlString);
6351
+ if (doubleString !== '') {
6352
+ matchValue = doubleString;
5351
6353
  this.parser.push(['DoubleString', matchValue]);
5352
6354
  return matchValue.length;
5353
6355
  }
5354
6356
  //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];
6357
+ if (/^\d*\.?\d+/.exec(sqlString)) {
6358
+ matchValue = /^\d*\.?\d+/.exec(sqlString)[0];
5359
6359
  this.parser.push(['Number', matchValue]);
5360
6360
  return matchValue.length;
5361
6361
  }
5362
6362
  //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];
6363
+ if (/^-?\d*\.?\d+/.exec(sqlString)) {
6364
+ matchValue = /^-?\d*\.?\d+/.exec(sqlString)[0];
5367
6365
  this.parser.push(['Number', matchValue]);
5368
6366
  return matchValue.length;
5369
6367
  }
5370
6368
  return 1;
5371
6369
  };
6370
+ QueryBuilder.prototype.getDoubleQuoteString = function (sqlString) {
6371
+ var start = sqlString.indexOf('"');
6372
+ if (start === 0) {
6373
+ var end = sqlString.indexOf('"', start + 1);
6374
+ if (end !== -1) {
6375
+ return sqlString.substring(start, end + 1);
6376
+ }
6377
+ }
6378
+ return '';
6379
+ };
5372
6380
  QueryBuilder.prototype.checkCondition = function (sqlString, matchValue) {
5373
6381
  if (sqlString.slice(matchValue.length + 1, matchValue.length + 4) === 'AND' ||
5374
6382
  sqlString.slice(matchValue.length + 1, matchValue.length + 3) === 'OR') {
@@ -5376,16 +6384,26 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5376
6384
  }
5377
6385
  return false;
5378
6386
  };
5379
- QueryBuilder.prototype.getSingleQuoteString = function (sqlString, matchValue) {
6387
+ QueryBuilder.prototype.getSingleQuoteString = function (sqlString, isBetween) {
6388
+ var start = sqlString.indexOf('\'');
6389
+ if ((start !== -1 && isBetween) || (start === 0 && !isBetween)) {
6390
+ var end = sqlString.indexOf('\'', start + 1);
6391
+ if (end !== -1) {
6392
+ return sqlString.substring(start, end + 1);
6393
+ }
6394
+ }
6395
+ return '';
6396
+ };
6397
+ QueryBuilder.prototype.combineSingleQuoteString = function (sqlString, matchValue) {
5380
6398
  if (sqlString[matchValue.length] && (sqlString[matchValue.length] !== ')') &&
5381
6399
  !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];
6400
+ var tempMatchValue = matchValue.substring(0, matchValue.length - 1);
6401
+ var tempStr = sqlString.replace(tempMatchValue, '');
6402
+ var singleString = this.getSingleQuoteString(tempStr, true);
6403
+ if (singleString !== '') {
6404
+ var parsedValue = singleString.substring(1, singleString.length);
5387
6405
  matchValue += parsedValue;
5388
- matchValue = this.getSingleQuoteString(sqlString, matchValue);
6406
+ matchValue = this.combineSingleQuoteString(sqlString, matchValue);
5389
6407
  }
5390
6408
  }
5391
6409
  return matchValue;
@@ -5414,8 +6432,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5414
6432
  return true;
5415
6433
  }
5416
6434
  else {
5417
- // eslint-disable-next-line
5418
- if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
6435
+ if (/^[0-9]+(?:\.[0-9]+)$/.exec(sqlString)) {
5419
6436
  var secParser = this.parser[this.parser.length - 2];
5420
6437
  var betweenParser = this.parser[this.parser.length - 3];
5421
6438
  if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {
@@ -5628,16 +6645,17 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5628
6645
  strVal = [];
5629
6646
  rule.type = this.getTypeFromColumn(rule);
5630
6647
  }
6648
+ if (this.enableSeparateConnector && parser[i + 1][0] === 'Conditions') {
6649
+ rule.condition = parser[i + 1][1];
6650
+ }
5631
6651
  }
5632
6652
  else if (parser[i + 1][0] === 'Operators') {
5633
6653
  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
-
6654
+ if (rule.operator === 'equal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
6655
+ rule.operator = 'isempty';
5637
6656
  }
5638
- else if (rule.operator == "notequal" && parser[i + 2][0] === "String" && parser[i + 2][1] === "''") {
5639
- rule.operator = "isnotempty";
5640
-
6657
+ else if (rule.operator === 'notequal' && parser[i + 2][0] === 'String' && parser[i + 2][1] === '\'\'') {
6658
+ rule.operator = 'isnotempty';
5641
6659
  }
5642
6660
  if (parser[i + 2][0] === 'Number') {
5643
6661
  rule.type = 'number';
@@ -5651,6 +6669,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5651
6669
  }
5652
6670
  rule.value = val;
5653
6671
  }
6672
+ if (this.enableSeparateConnector && parser[i + 3][0] === 'Conditions') {
6673
+ rule.condition = parser[i + 3][1];
6674
+ }
5654
6675
  rule.type = this.getTypeFromColumn(rule);
5655
6676
  }
5656
6677
  rules.rules.push(rule);
@@ -5678,7 +6699,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5678
6699
  subRules = this.processParser(this.parser, subRules, levelColl, sqlLocale);
5679
6700
  return rules;
5680
6701
  }
5681
- else if (parser[i][0] === 'Conditions') {
6702
+ else if (parser[i][0] === 'Conditions' && !this.enableSeparateConnector) {
5682
6703
  if (parser[i][1] === 'not' || (sqlLocale && this.l10n.getConstant('NOT').toLowerCase() === parser[i][1])) {
5683
6704
  rules.not = true;
5684
6705
  }
@@ -5699,27 +6720,6 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5699
6720
  }
5700
6721
  return rules;
5701
6722
  };
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
6723
  /**
5724
6724
  * Clone the Group
5725
6725
  *
@@ -5754,8 +6754,14 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5754
6754
  this.ruleIndex = i;
5755
6755
  }
5756
6756
  }
5757
- this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
5758
- 'value': getRule.value }], groupId);
6757
+ if (this.enableSeparateConnector) {
6758
+ this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
6759
+ 'value': getRule.value, 'condition': getRule.condition }], groupId);
6760
+ }
6761
+ else {
6762
+ this.addRules([{ 'label': getRule.label, 'field': getRule.field, 'type': getRule.type, 'operator': getRule.operator,
6763
+ 'value': getRule.value }], groupId);
6764
+ }
5759
6765
  this.ruleIndex = -1;
5760
6766
  };
5761
6767
  QueryBuilder.prototype.ruleLock = function (target) {
@@ -5856,6 +6862,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5856
6862
  var lockElem = groupElem.querySelectorAll('.e-lock-grp-btn');
5857
6863
  var cloneElem = groupElem.querySelectorAll('.e-clone-grp-btn');
5858
6864
  var groupContElem = groupElem.querySelectorAll('.e-group-container');
6865
+ var addCondition = groupElem.querySelectorAll('.e-add-condition-btn');
6866
+ var addGroup = groupElem.querySelectorAll('.e-add-group-btn');
5859
6867
  for (var i = 0; i < andElem.length; i++) {
5860
6868
  if (isDisabled) {
5861
6869
  if (groupContElem[i] && groupContElem[i].classList.contains('e-disable')) {
@@ -5863,7 +6871,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5863
6871
  }
5864
6872
  andElem[i].disabled = true;
5865
6873
  orElem[i].disabled = true;
5866
- addElem[i].disabled = true;
6874
+ if (addElem[i]) {
6875
+ addElem[i].disabled = true;
6876
+ }
6877
+ if (addCondition[i]) {
6878
+ addCondition[i].disabled = true;
6879
+ }
6880
+ if (addGroup[i]) {
6881
+ addGroup[i].disabled = true;
6882
+ }
5867
6883
  if (notElem[i]) {
5868
6884
  notElem[i].disabled = true;
5869
6885
  }
@@ -5874,7 +6890,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5874
6890
  cloneElem[i].disabled = true;
5875
6891
  }
5876
6892
  andElem[i].parentElement.classList.add('e-disabled');
5877
- if (lockElem[i] !== target) {
6893
+ if (lockElem[i] && lockElem[i] !== target) {
5878
6894
  lockElem[i].disabled = true;
5879
6895
  lockElem[i].children[0].classList.remove('e-unlock');
5880
6896
  lockElem[i].children[0].classList.add('e-lock');
@@ -5886,8 +6902,18 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5886
6902
  }
5887
6903
  andElem[i].disabled = false;
5888
6904
  orElem[i].disabled = false;
5889
- addElem[i].disabled = false;
5890
- lockElem[i].disabled = false;
6905
+ if (addElem[i]) {
6906
+ addElem[i].disabled = false;
6907
+ }
6908
+ if (addCondition[i]) {
6909
+ addCondition[i].disabled = false;
6910
+ }
6911
+ if (addGroup[i]) {
6912
+ addGroup[i].disabled = false;
6913
+ }
6914
+ if (lockElem[i]) {
6915
+ lockElem[i].disabled = false;
6916
+ }
5891
6917
  if (notElem[i]) {
5892
6918
  notElem[i].disabled = false;
5893
6919
  }
@@ -5898,8 +6924,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
5898
6924
  cloneElem[i].disabled = false;
5899
6925
  }
5900
6926
  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');
6927
+ if (lockElem[i]) {
6928
+ lockElem[i].children[0].classList.remove('e-lock');
6929
+ }
6930
+ if (lockElem[i]) {
6931
+ lockElem[i].children[0].classList.add('e-unlock');
6932
+ }
5903
6933
  }
5904
6934
  }
5905
6935
  this.disableRuleControls(target, groupElem, isDisabled);
@@ -6033,6 +7063,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6033
7063
  __decorate([
6034
7064
  Event()
6035
7065
  ], QueryBuilder.prototype, "ruleChange", void 0);
7066
+ __decorate([
7067
+ Event()
7068
+ ], QueryBuilder.prototype, "dragStart", void 0);
7069
+ __decorate([
7070
+ Event()
7071
+ ], QueryBuilder.prototype, "drag", void 0);
7072
+ __decorate([
7073
+ Event()
7074
+ ], QueryBuilder.prototype, "drop", void 0);
6036
7075
  __decorate([
6037
7076
  Complex({}, ShowButtons)
6038
7077
  ], QueryBuilder.prototype, "showButtons", void 0);
@@ -6108,9 +7147,15 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
6108
7147
  __decorate([
6109
7148
  Property('')
6110
7149
  ], QueryBuilder.prototype, "separator", void 0);
7150
+ __decorate([
7151
+ Property(false)
7152
+ ], QueryBuilder.prototype, "enableSeparateConnector", void 0);
6111
7153
  __decorate([
6112
7154
  Complex({ condition: 'and', rules: [] }, Rule)
6113
7155
  ], QueryBuilder.prototype, "rule", void 0);
7156
+ __decorate([
7157
+ Property(false)
7158
+ ], QueryBuilder.prototype, "allowDragAndDrop", void 0);
6114
7159
  QueryBuilder = __decorate([
6115
7160
  NotifyPropertyChanges
6116
7161
  ], QueryBuilder);
@@ -6418,13 +7463,13 @@ var QueryLibrary = /** @__PURE__ @class */ (function () {
6418
7463
  }
6419
7464
  else if (condition === '$or') {
6420
7465
  var notBetween = void 0;
6421
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
7466
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6422
7467
  var innerObject = [];
6423
7468
  var keys = [];
6424
7469
  var firstKey = [];
6425
7470
  var secondKey = [];
6426
7471
  var innerKeys = [];
6427
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, max-len
7472
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
6428
7473
  var firstValue = [];
6429
7474
  var secondValue = [];
6430
7475
  var innerFirstValue = [];
@@ -6805,13 +7850,5 @@ var QueryLibrary = /** @__PURE__ @class */ (function () {
6805
7850
  return QueryLibrary;
6806
7851
  }());
6807
7852
 
6808
- /**
6809
- * QueryBuilder modules
6810
- */
6811
-
6812
- /**
6813
- * QueryBuilder all modules
6814
- */
6815
-
6816
- export { Columns, Rule, Value, ShowButtons, QueryBuilder, QueryLibrary };
7853
+ export { Columns, QueryBuilder, QueryLibrary, Rule, ShowButtons, Value };
6817
7854
  //# sourceMappingURL=ej2-querybuilder.es5.js.map