@syncfusion/ej2-querybuilder 30.2.6 → 31.1.17

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