@syncfusion/ej2-querybuilder 30.2.4 → 30.2.6

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.
@@ -878,35 +878,23 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
878
878
  }
879
879
  };
880
880
  QueryBuilder.prototype.addRuleSuccessCallBack = function (args, trgt, rule, col, act, pId, isRlTmp) {
881
- var _this = this;
882
- var isVertical = this.element.className.indexOf('e-device') > -1 || this.displayMode === 'Vertical';
883
- var height = isVertical ? '250px' : '200px';
881
+ var height = (this.element.className.indexOf('e-device') > -1) ? '250px' : '200px';
884
882
  var ruleID;
885
883
  var column = (rule && rule.field) ? this.getColumn(rule.field) : col ? col : this.columns[0];
886
884
  var operators;
885
+ var dropDownList;
887
886
  var ruleElem;
888
887
  var newRule = { 'label': '', 'field': '', 'type': '', 'operator': '' };
889
888
  if (!args.cancel) {
890
- var fragment = document.createDocumentFragment();
891
889
  if (column && column.ruleTemplate && rule.field) {
892
890
  this.selectedColumn = column;
893
891
  operators = this.selectedColumn.operators;
894
- newRule = {
895
- 'label': column.label,
896
- 'field': column.field,
897
- 'type': column.type,
898
- 'operator': operators[0].value
899
- };
892
+ newRule = { 'label': column.label, 'field': column.field, 'type': column.type, 'operator': operators[0].value };
900
893
  var passedRule = Object.keys(rule).length ? rule : newRule;
901
894
  ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field', passedRule);
902
- var actionArgs = {
903
- requestType: 'template-initialize',
904
- ruleID: ruleElem.id,
905
- action: 'insert-rule',
906
- fields: this.fields,
907
- rule: passedRule
908
- };
909
- this.trigger('actionBegin', actionArgs);
895
+ var args_1 = { requestType: 'template-create', action: 'insert-rule', ruleID: ruleElem.id,
896
+ fields: this.fields, rule: passedRule };
897
+ this.trigger('actionBegin', args_1);
910
898
  }
911
899
  else {
912
900
  ruleElem = this.appendRuleElem(trgt, column, act, pId, 'field');
@@ -921,30 +909,139 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
921
909
  addClass([element], 'e-round');
922
910
  addClass([element], 'e-icon-btn');
923
911
  element.setAttribute('title', this.l10n.getConstant('DeleteRule'));
924
- var spanElement = this.createElement('span', {
925
- attrs: { class: 'e-btn-icon e-icons e-delete-icon' }
926
- });
927
- element.appendChild(spanElement);
912
+ var spanElement = this.createElement('span', { attrs: { class: 'e-btn-icon e-icons e-delete-icon' } });
913
+ ruleElem.querySelector('.e-rule-delete').appendChild(spanElement);
928
914
  }
929
915
  if (!this.showButtons.ruleDelete) {
930
916
  element.classList.add('e-button-hide');
931
917
  }
932
918
  }
933
- ruleElem.className = 'e-rule-container ' + (isVertical ? 'e-vertical-mode' : 'e-horizontal-mode');
919
+ if (this.displayMode === 'Vertical' || this.element.className.indexOf('e-device') > -1) {
920
+ ruleElem.className = 'e-rule-container e-vertical-mode';
921
+ }
922
+ else {
923
+ ruleElem.className = 'e-rule-container e-horizontal-mode';
924
+ }
934
925
  var previousRuleElem = ruleElem.previousElementSibling;
935
- this.processAdjacentElements(ruleElem, previousRuleElem, rule);
926
+ if (this.enableSeparateConnector) {
927
+ var prevRule = void 0;
928
+ var ruleContainer = void 0;
929
+ if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {
930
+ ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');
931
+ previousRuleElem = ruleContainer[ruleContainer.length - 1];
932
+ }
933
+ if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {
934
+ prevRule = this.getRule(previousRuleElem);
935
+ }
936
+ if (this.headerTemplate && previousRuleElem && prevRule) {
937
+ this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);
938
+ }
939
+ else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
940
+ var group = ruleElem.closest('.e-group-container');
941
+ if (group && group.previousElementSibling) {
942
+ var prevElem = group.previousElementSibling;
943
+ var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');
944
+ if (prevElem.classList.contains('e-group-container')) {
945
+ prevElem = prevRuleContainer[prevRuleContainer.length - 1];
946
+ }
947
+ if (prevElem.classList.contains('e-rule-container')) {
948
+ var prevRule_1 = this.getRule(prevElem);
949
+ this.headerTemplateFn(prevElem, false, prevRule_1.condition, prevRule_1, prevElem.id, true);
950
+ }
951
+ }
952
+ else {
953
+ this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);
954
+ }
955
+ }
956
+ }
957
+ else {
958
+ if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {
959
+ if (ruleElem.className.indexOf('e-joined-rule') < 0) {
960
+ ruleElem.className += ' e-joined-rule';
961
+ }
962
+ if (previousRuleElem.className.indexOf('e-prev-joined-rule') < 0) {
963
+ previousRuleElem.className += ' e-prev-joined-rule';
964
+ }
965
+ }
966
+ }
967
+ if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&
968
+ ruleElem.className.indexOf('e-separate-rule') < 0) {
969
+ ruleElem.className += ' e-separate-rule';
970
+ }
936
971
  if (!this.isImportRules) {
937
972
  this.updateAddedRule(trgt, rule, newRule, isRlTmp, pId, this.enableSeparateConnector ? true : null);
938
973
  }
939
- var ruleCount = this.rule.rules.length;
940
974
  if (!column || (column && !column.ruleTemplate) || !rule.field) {
941
- if (ruleCount > 20) {
942
- setTimeout(function () {
943
- _this.applyFieldComponent(ruleElem, rule, height);
944
- }, 0);
975
+ if (this.fieldMode === 'Default') {
976
+ var ddlField = void 0;
977
+ var ddlValue = void 0;
978
+ if (this.separator && rule.field) {
979
+ ddlValue = this.GetRootColumnName(rule.field);
980
+ }
981
+ else if (this.autoSelectField) {
982
+ ddlValue = this.GetRootColumnName(rule.field);
983
+ }
984
+ else {
985
+ ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
986
+ }
987
+ ddlField = {
988
+ dataSource: this.columns,
989
+ fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),
990
+ popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
991
+ change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true), cssClass: 'qb-dropdownlist'
992
+ };
993
+ if (this.fieldModel) {
994
+ ddlField = __assign({}, ddlField, this.fieldModel);
995
+ }
996
+ dropDownList = new DropDownList(ddlField);
997
+ dropDownList.appendTo('#' + ruleElem.id + '_filterkey');
998
+ var ddlVal = void 0;
999
+ if (this.separator && rule.field) {
1000
+ ddlVal = this.GetRootColumnName(rule.field);
1001
+ }
1002
+ else {
1003
+ ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) :
1004
+ dropDownList.value;
1005
+ }
1006
+ this.selectedColumn = dropDownList.getDataByValue(ddlVal);
1007
+ if (Object.keys(rule).length) {
1008
+ this.changeRule(rule, {
1009
+ element: dropDownList.element, itemData: this.selectedColumn
1010
+ });
1011
+ }
945
1012
  }
946
1013
  else {
947
- this.applyFieldComponent(ruleElem, rule, height);
1014
+ var ddlField = void 0;
1015
+ var ddlValue = this.isImportRules ? rule.field : rule.field;
1016
+ this.dummyDropdownTreeDs = extend([], this.columns, [], true);
1017
+ this.updateDropdowntreeDS(this.dummyDropdownTreeDs);
1018
+ ddlField = {
1019
+ fields: { dataSource: this.dummyDropdownTreeDs,
1020
+ value: 'field', text: 'label', child: 'columns', expanded: 'expanded', selectable: 'selectable' },
1021
+ placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,
1022
+ popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,
1023
+ change: this.changeField.bind(this), value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,
1024
+ open: this.popupOpen.bind(this, false), treeSettings: { expandOn: 'Click' },
1025
+ cssClass: 'e-qb-ddt', filtering: this.dropdownTreeFiltering.bind(this), close: this.dropdownTreeClose.bind(this)
1026
+ };
1027
+ if (this.fieldModel) {
1028
+ ddlField = __assign({}, ddlField, this.fieldModel);
1029
+ }
1030
+ var dropdowntree = new DropDownTree(ddlField);
1031
+ dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
1032
+ if (!isNullOrUndefined(dropdowntree.value)) {
1033
+ var value = this.getLabelFromColumn(dropdowntree.value[0]);
1034
+ dropdowntree.element.value = value;
1035
+ }
1036
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1037
+ var ddlVal = !isNullOrUndefined(rule.field) ?
1038
+ this.GetRootColumnName(rule.field) : dropdowntree.value;
1039
+ this.selectedColumn = this.getColumn(ddlVal);
1040
+ if (Object.keys(rule).length) {
1041
+ this.changeRule(rule, {
1042
+ element: dropdowntree.element, itemData: this.selectedColumn
1043
+ });
1044
+ }
948
1045
  }
949
1046
  }
950
1047
  ruleID = ruleElem.id.replace(this.element.id + '_', '');
@@ -953,204 +1050,46 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
953
1050
  this.ruleLock(lockRuleTarget);
954
1051
  }
955
1052
  if (!this.isImportRules && !this.prvtEvtTgrDaD) {
956
- this.trigger('change', {
957
- groupID: trgt.id.replace(this.element.id + '_', ''),
958
- ruleID: ruleID,
959
- type: 'insertRule'
960
- });
1053
+ this.trigger('change', { groupID: trgt.id.replace(this.element.id + '_', ''), ruleID: ruleID, type: 'insertRule' });
961
1054
  }
962
1055
  }
963
1056
  if (this.enableSeparateConnector && isNullOrUndefined(rule.condition) && ruleID) {
964
1057
  rule = this.getRule(ruleID);
965
1058
  }
966
1059
  if (this.enableSeparateConnector) {
967
- this.processConnectorElements(ruleElem);
968
- }
969
- };
970
- QueryBuilder.prototype.processAdjacentElements = function (ruleElem, previousRuleElem, rule) {
971
- if (this.enableSeparateConnector) {
972
- if (previousRuleElem && previousRuleElem.classList.contains('e-group-container')) {
973
- var ruleContainer = previousRuleElem.querySelectorAll('.e-rule-container');
974
- previousRuleElem = ruleContainer[ruleContainer.length - 1];
975
- }
976
- if (previousRuleElem && previousRuleElem.classList.contains('e-rule-container')) {
977
- var prevRule = this.getRule(previousRuleElem);
978
- if (this.headerTemplate) {
979
- this.headerTemplateFn(previousRuleElem, false, prevRule.condition, prevRule, previousRuleElem.id);
1060
+ var prevElem = ruleElem.previousElementSibling;
1061
+ var ruleContainer = void 0;
1062
+ while (prevElem && !prevElem.classList.contains('e-rule-container')) {
1063
+ if (prevElem.classList.contains('e-group-container')) {
1064
+ ruleContainer = prevElem.querySelectorAll('.e-rule-container');
1065
+ prevElem = ruleContainer[ruleContainer.length - 1];
1066
+ break;
980
1067
  }
1068
+ prevElem = prevElem.previousElementSibling;
981
1069
  }
982
- else if (isNullOrUndefined(previousRuleElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
983
- this.handleOrphanedRuleElement(ruleElem, rule);
984
- }
985
- }
986
- else {
987
- if (previousRuleElem && previousRuleElem.className.indexOf('e-rule-container') > -1) {
988
- ruleElem.classList.add('e-joined-rule');
989
- previousRuleElem.classList.add('e-prev-joined-rule');
990
- }
991
- }
992
- if (previousRuleElem && previousRuleElem.className.indexOf('e-group-container') > -1 &&
993
- ruleElem.className.indexOf('e-separate-rule') < 0) {
994
- ruleElem.className += ' e-separate-rule';
995
- }
996
- };
997
- QueryBuilder.prototype.handleOrphanedRuleElement = function (ruleElem, rule) {
998
- var group = ruleElem.closest('.e-group-container');
999
- if (group && group.previousElementSibling) {
1000
- var prevElem = group.previousElementSibling;
1001
- var prevRuleContainer = prevElem.querySelectorAll('.e-rule-container');
1002
- if (prevElem.classList.contains('e-group-container')) {
1003
- prevElem = prevRuleContainer[prevRuleContainer.length - 1];
1004
- }
1005
- if (prevElem.classList.contains('e-rule-container')) {
1070
+ if (this.headerTemplate && prevElem) {
1006
1071
  var prevRule = this.getRule(prevElem);
1007
- this.headerTemplateFn(prevElem, false, prevRule.condition, prevRule, prevElem.id, true);
1008
- }
1009
- }
1010
- else {
1011
- this.headerTemplateFn(ruleElem, false, rule.condition, rule, ruleElem.id, true);
1012
- }
1013
- };
1014
- QueryBuilder.prototype.processConnectorElements = function (ruleElem) {
1015
- var prevElem = ruleElem.previousElementSibling;
1016
- var ruleContainer;
1017
- while (prevElem && !prevElem.classList.contains('e-rule-container')) {
1018
- if (prevElem.classList.contains('e-group-container')) {
1019
- ruleContainer = prevElem.querySelectorAll('.e-rule-container');
1020
- prevElem = ruleContainer[ruleContainer.length - 1];
1021
- break;
1022
- }
1023
- prevElem = prevElem.previousElementSibling;
1024
- }
1025
- if (this.headerTemplate && prevElem) {
1026
- var prevRule = this.getRule(prevElem);
1027
- var args = {
1028
- requestType: 'rule-template-create',
1029
- ruleID: prevElem.id,
1030
- condition: prevRule.condition,
1031
- notCondition: this.enableNotCondition ? true : undefined
1032
- };
1033
- this.trigger('actionBegin', args);
1034
- }
1035
- else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
1036
- this.handleOrphanedConnectorElement(ruleElem);
1037
- }
1038
- this.setMultiConnector(ruleElem);
1039
- };
1040
- QueryBuilder.prototype.handleOrphanedConnectorElement = function (ruleElem) {
1041
- var group = ruleElem.closest('.e-group-container');
1042
- if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {
1043
- var prevElem = group.previousElementSibling.previousElementSibling;
1044
- if (prevElem.classList.contains('e-group-container')) {
1045
- var ruleContainer = prevElem.querySelectorAll('.e-rule-container');
1046
- prevElem = ruleContainer[ruleContainer.length - 1];
1072
+ var args_2 = { requestType: 'rule-template-create', ruleID: prevElem.id, condition: prevRule.condition,
1073
+ notCondition: this.enableNotCondition ? true : undefined };
1074
+ this.trigger('actionBegin', args_2);
1047
1075
  }
1048
- if (prevElem.classList.contains('e-rule-container')) {
1049
- var prevRule = this.getRule(prevElem);
1050
- var args = {
1051
- requestType: 'rule-template-create',
1052
- ruleID: prevElem.id,
1053
- condition: prevRule.condition,
1054
- notCondition: this.enableNotCondition ? true : undefined
1055
- };
1056
- this.trigger('actionBegin', args);
1076
+ else if (isNullOrUndefined(prevElem) && ruleElem.id !== this.element.id + '_group0_rule0') {
1077
+ var group = ruleElem.closest('.e-group-container');
1078
+ if (group && group.previousElementSibling && group.previousElementSibling.previousElementSibling) {
1079
+ var prevElem_1 = group.previousElementSibling.previousElementSibling;
1080
+ if (prevElem_1.classList.contains('e-group-container')) {
1081
+ var ruleContainer_1 = prevElem_1.querySelectorAll('.e-rule-container');
1082
+ prevElem_1 = ruleContainer_1[ruleContainer_1.length - 1];
1083
+ }
1084
+ if (prevElem_1.classList.contains('e-rule-container')) {
1085
+ var prevRule = this.getRule(prevElem_1);
1086
+ var args_3 = { requestType: 'rule-template-create', ruleID: prevElem_1.id,
1087
+ condition: prevRule.condition, notCondition: this.enableNotCondition ? true : undefined };
1088
+ this.trigger('actionBegin', args_3);
1089
+ }
1090
+ }
1057
1091
  }
1058
- }
1059
- };
1060
- QueryBuilder.prototype.applyFieldComponent = function (ruleElem, rule, height) {
1061
- if (this.fieldMode === 'Default') {
1062
- this.applyDropdownListComponent(ruleElem, rule, height);
1063
- }
1064
- else {
1065
- this.applyDropdownTreeComponent(ruleElem, rule, height);
1066
- }
1067
- };
1068
- QueryBuilder.prototype.applyDropdownListComponent = function (ruleElem, rule, height) {
1069
- var ddlField;
1070
- var ddlValue;
1071
- if (this.separator && rule.field) {
1072
- ddlValue = this.GetRootColumnName(rule.field);
1073
- }
1074
- else if (this.autoSelectField) {
1075
- ddlValue = this.GetRootColumnName(rule.field);
1076
- }
1077
- else {
1078
- ddlValue = this.isImportRules ? this.GetRootColumnName(rule.field) : rule.field;
1079
- }
1080
- ddlField = {
1081
- dataSource: this.columns,
1082
- fields: this.fields,
1083
- placeholder: this.l10n.getConstant('SelectField'),
1084
- popupHeight: ((this.columns.length > 5) ? height : 'auto'),
1085
- close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
1086
- change: this.changeField.bind(this),
1087
- value: rule ? ddlValue : null,
1088
- open: this.popupOpen.bind(this, true),
1089
- cssClass: 'qb-dropdownlist'
1090
- };
1091
- if (this.fieldModel) {
1092
- ddlField = __assign({}, ddlField, this.fieldModel);
1093
- }
1094
- var dropDownList = new DropDownList(ddlField);
1095
- dropDownList.appendTo('#' + ruleElem.id + '_filterkey');
1096
- var ddlVal;
1097
- if (this.separator && rule.field) {
1098
- ddlVal = this.GetRootColumnName(rule.field);
1099
- }
1100
- else {
1101
- ddlVal = this.isImportRules ? this.GetRootColumnName(rule.field) : dropDownList.value;
1102
- }
1103
- this.selectedColumn = dropDownList.getDataByValue(ddlVal);
1104
- if (Object.keys(rule).length) {
1105
- this.changeRule(rule, {
1106
- element: dropDownList.element,
1107
- itemData: this.selectedColumn
1108
- });
1109
- }
1110
- };
1111
- QueryBuilder.prototype.applyDropdownTreeComponent = function (ruleElem, rule, height) {
1112
- var ddlField;
1113
- var ddlValue = this.isImportRules ? rule.field : rule.field;
1114
- this.dummyDropdownTreeDs = extend([], this.columns, [], true);
1115
- this.updateDropdowntreeDS(this.dummyDropdownTreeDs);
1116
- ddlField = {
1117
- fields: {
1118
- dataSource: this.dummyDropdownTreeDs,
1119
- value: 'field',
1120
- text: 'label',
1121
- child: 'columns',
1122
- expanded: 'expanded',
1123
- selectable: 'selectable'
1124
- },
1125
- placeholder: this.l10n.getConstant('SelectField'),
1126
- showClearButton: false,
1127
- popupHeight: ((this.columns.length > 5) ? height : 'auto'),
1128
- changeOnBlur: false,
1129
- change: this.changeField.bind(this),
1130
- value: !isNullOrUndefined(ddlValue) ? [ddlValue] : null,
1131
- open: this.popupOpen.bind(this, false),
1132
- treeSettings: { expandOn: 'Click' },
1133
- cssClass: 'e-qb-ddt',
1134
- filtering: this.dropdownTreeFiltering.bind(this),
1135
- close: this.dropdownTreeClose.bind(this)
1136
- };
1137
- if (this.fieldModel) {
1138
- ddlField = __assign({}, ddlField, this.fieldModel);
1139
- }
1140
- var dropdowntree = new DropDownTree(ddlField);
1141
- dropdowntree.appendTo('#' + ruleElem.id + '_filterkey');
1142
- if (!isNullOrUndefined(dropdowntree.value)) {
1143
- var value = this.getLabelFromColumn(dropdowntree.value[0]);
1144
- dropdowntree.element.value = value;
1145
- }
1146
- var ddlVal = !isNullOrUndefined(rule.field) ?
1147
- this.GetRootColumnName(rule.field) : dropdowntree.value;
1148
- this.selectedColumn = this.getColumn(ddlVal);
1149
- if (Object.keys(rule).length) {
1150
- this.changeRule(rule, {
1151
- element: dropdowntree.element,
1152
- itemData: this.selectedColumn
1153
- });
1092
+ this.setMultiConnector(ruleElem);
1154
1093
  }
1155
1094
  };
1156
1095
  QueryBuilder.prototype.dropdownTreeFiltering = function (args) {
@@ -1851,11 +1790,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
1851
1790
  }
1852
1791
  this.updatedRule = null;
1853
1792
  if (this.headerTemplate) {
1854
- var args_1 = {
1793
+ var args_4 = {
1855
1794
  requestType: 'header-template-create', ruleID: groupElem.id, condition: condition,
1856
1795
  notCondition: this.enableNotCondition ? not : undefined
1857
1796
  };
1858
- this.trigger('actionBegin', args_1);
1797
+ this.trigger('actionBegin', args_4);
1859
1798
  }
1860
1799
  else {
1861
1800
  if (this.enableSeparateConnector) {