@syncfusion/ej2-querybuilder 27.2.2 → 27.2.5

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.
@@ -2775,9 +2775,17 @@ let QueryBuilder = class QueryBuilder extends Component {
2775
2775
  }
2776
2776
  getItemData(parentId) {
2777
2777
  let fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdownlist');
2778
+ const parentFieldObj = this.element.querySelector(`#${parentId}`);
2778
2779
  if (this.fieldMode === 'DropdownTree') {
2779
2780
  fieldObj = getComponent(document.getElementById(parentId + '_filterkey'), 'dropdowntree');
2780
2781
  }
2782
+ else if (parentFieldObj) {
2783
+ const subFieldObjList = parentFieldObj.querySelectorAll('.e-rule-sub-filter');
2784
+ if (subFieldObjList.length > 0) {
2785
+ const lastSubFieldObj = subFieldObjList[subFieldObjList.length - 1].querySelector('.e-dropdownlist');
2786
+ fieldObj = getComponent(lastSubFieldObj, 'dropdownlist');
2787
+ }
2788
+ }
2781
2789
  return this.fieldMode === 'DropdownTree' ? this.getColumn(fieldObj.value[0]) : this.getColumn(fieldObj.value);
2782
2790
  }
2783
2791
  setDefaultValue(parentId, isArryValue, isNumber) {
@@ -2826,6 +2834,11 @@ let QueryBuilder = class QueryBuilder extends Component {
2826
2834
  this.setDefaultValue(parentId, true, false);
2827
2835
  selectedValue = selectedVal.join(',');
2828
2836
  }
2837
+ if (operator === 'between' || operator === 'notbetween') {
2838
+ if (selectedValue.length > 1) {
2839
+ selectedValue = selectedValue[idx];
2840
+ }
2841
+ }
2829
2842
  let txtBox;
2830
2843
  txtBox = {
2831
2844
  placeholder: this.l10n.getConstant('SelectValue'),
@@ -3129,7 +3142,7 @@ let QueryBuilder = class QueryBuilder extends Component {
3129
3142
  getPreviousItemData(prevItemData, column) {
3130
3143
  if (this.isFieldClose && prevItemData) {
3131
3144
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
3132
- prevItemData = this.getColumn(prevItemData.value);
3145
+ prevItemData = this.getColumn(prevItemData.value ? prevItemData.value : prevItemData.field);
3133
3146
  }
3134
3147
  if (column && column.template && prevItemData && Object.keys(prevItemData).length < 4) {
3135
3148
  prevItemData.template = column.template;
@@ -3563,6 +3576,12 @@ let QueryBuilder = class QueryBuilder extends Component {
3563
3576
  rule.rules[index].value = this.processValueString(selectedValue, rule.rules[index].type);
3564
3577
  }
3565
3578
  }
3579
+ else if (oper === 'between' || oper === 'notbetween') {
3580
+ if (typeof rule.rules[index].value === 'string') {
3581
+ rule.rules[index].value = [];
3582
+ }
3583
+ rule.rules[index].value[i] = selectedValue;
3584
+ }
3566
3585
  else {
3567
3586
  rule.rules[index].value = selectedValue;
3568
3587
  }
@@ -5139,6 +5158,10 @@ let QueryBuilder = class QueryBuilder extends Component {
5139
5158
  if ((rule.operator === 'in' || rule.operator === 'notin') && rule.value && rule.value.length === 0) {
5140
5159
  rule = {};
5141
5160
  }
5161
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
5162
+ if ((rule.operator === 'between' || rule.operator === 'notbetween') && Array.isArray(rule.value) && (rule.value.length < 2 || rule.value.some((val) => val === '' || val === null))) {
5163
+ rule = {};
5164
+ }
5142
5165
  }
5143
5166
  else {
5144
5167
  rule = {};
@@ -7522,6 +7545,7 @@ class QueryLibrary {
7522
7545
  let stringValue;
7523
7546
  let key;
7524
7547
  let betweenValue;
7548
+ let fieldType;
7525
7549
  let condition;
7526
7550
  let value;
7527
7551
  let subRules;
@@ -7693,7 +7717,13 @@ class QueryLibrary {
7693
7717
  ruleValue = stringValue.replace('$', '');
7694
7718
  type = 'string';
7695
7719
  }
7696
- if (!isNaN(Date.parse(stringValue))) { // Date type operators
7720
+ for (const column of this.parent.columns) {
7721
+ if (column.field === condition) {
7722
+ fieldType = column.type;
7723
+ break;
7724
+ }
7725
+ }
7726
+ if (!isNaN(Date.parse(stringValue)) || fieldType === 'date') { // Date type operators
7697
7727
  operatorValue = operatorValue || this.getOperatorFromMongoOperator(key);
7698
7728
  type = 'date';
7699
7729
  ruleValue = stringValue;