@syncfusion/ej2-querybuilder 19.3.53 → 19.4.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/PULL_REQUEST_TEMPLATE/Bug.md +63 -0
- package/.github/PULL_REQUEST_TEMPLATE/feature.md +39 -0
- package/CHANGELOG.md +2 -0
- package/dist/ej2-querybuilder.umd.min.js +2 -2
- package/dist/ej2-querybuilder.umd.min.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es2015.js +68 -12
- package/dist/es6/ej2-querybuilder.es2015.js.map +1 -1
- package/dist/es6/ej2-querybuilder.es5.js +68 -12
- package/dist/es6/ej2-querybuilder.es5.js.map +1 -1
- package/dist/global/ej2-querybuilder.min.js +2 -2
- package/dist/global/ej2-querybuilder.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +11 -11
- package/src/query-builder/query-builder.d.ts +6 -0
- package/src/query-builder/query-builder.js +68 -12
- package/styles/bootstrap4.css +5 -0
- package/styles/bootstrap5-dark.css +5 -0
- package/styles/bootstrap5.css +5 -0
- package/styles/query-builder/_fluent-definition.scss +107 -0
- package/styles/query-builder/bootstrap4.css +5 -0
- package/styles/query-builder/bootstrap5-dark.css +5 -0
- package/styles/query-builder/bootstrap5.css +5 -0
- package/styles/query-builder/icons/_fluent.scss +8 -0
|
@@ -179,6 +179,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
179
179
|
_this.isNotified = false;
|
|
180
180
|
_this.isAddSuccess = false;
|
|
181
181
|
_this.isNotValueChange = false;
|
|
182
|
+
_this.isFieldChange = false;
|
|
183
|
+
_this.isFieldClose = false;
|
|
184
|
+
_this.isDestroy = false;
|
|
182
185
|
MultiSelect.Inject(CheckBoxSelection);
|
|
183
186
|
return _this;
|
|
184
187
|
}
|
|
@@ -658,8 +661,8 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
658
661
|
ddlField = {
|
|
659
662
|
dataSource: this.columns,
|
|
660
663
|
fields: this.fields, placeholder: this.l10n.getConstant('SelectField'),
|
|
661
|
-
popupHeight: ((this.columns.length > 5) ? height : 'auto'),
|
|
662
|
-
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this)
|
|
664
|
+
popupHeight: ((this.columns.length > 5) ? height : 'auto'), close: this.fieldClose.bind(this, ruleElem.id + '_filterkey'),
|
|
665
|
+
change: this.changeField.bind(this), value: rule ? ddlValue : null, open: this.popupOpen.bind(this, true)
|
|
663
666
|
};
|
|
664
667
|
if (this.fieldModel) {
|
|
665
668
|
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
@@ -681,11 +684,11 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
681
684
|
var ddlValue = this.isImportRules ? rule.field : rule.field;
|
|
682
685
|
ddlField = {
|
|
683
686
|
fields: { dataSource: this.columns,
|
|
684
|
-
value:
|
|
687
|
+
value: 'field', text: 'label', child: 'columns', expanded: 'expanded' },
|
|
685
688
|
placeholder: this.l10n.getConstant('SelectField'), showClearButton: false,
|
|
686
689
|
popupHeight: ((this.columns.length > 5) ? height : 'auto'), changeOnBlur: false,
|
|
687
690
|
change: this.changeField.bind(this), value: this.isImportRules ? [ddlValue] : null,
|
|
688
|
-
open: this.popupOpen.bind(this)
|
|
691
|
+
open: this.popupOpen.bind(this, false)
|
|
689
692
|
};
|
|
690
693
|
if (this.fieldModel) {
|
|
691
694
|
ddlField = __assign({}, ddlField, this.fieldModel);
|
|
@@ -1288,21 +1291,38 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1288
1291
|
}
|
|
1289
1292
|
}
|
|
1290
1293
|
};
|
|
1294
|
+
QueryBuilder.prototype.fieldClose = function (id) {
|
|
1295
|
+
if (this.isFieldChange || this.isDestroy) {
|
|
1296
|
+
return;
|
|
1297
|
+
}
|
|
1298
|
+
this.isFieldClose = true;
|
|
1299
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1300
|
+
var ddl = getComponent(id, 'dropdownlist');
|
|
1301
|
+
var item = ddl.popupObj.element.querySelector('.e-active');
|
|
1302
|
+
var itemData = ddl.getItemData();
|
|
1303
|
+
ddl.value = itemData.value;
|
|
1304
|
+
var customArgs = { element: ddl.element, value: itemData.value, isInteracted: true,
|
|
1305
|
+
previousItemData: this.prevItemData, previousItem: null, item: item, itemData: itemData, event: null, e: null };
|
|
1306
|
+
this.changeField(customArgs);
|
|
1307
|
+
this.isFieldChange = false;
|
|
1308
|
+
};
|
|
1291
1309
|
QueryBuilder.prototype.changeField = function (args) {
|
|
1292
1310
|
if (args.isInteracted) {
|
|
1311
|
+
this.isFieldChange = true;
|
|
1312
|
+
this.prevItemData = args.itemData;
|
|
1293
1313
|
var fieldElem = closest(args.element, '.e-rule-filter') || closest(args.element, '.e-rule-sub-filter');
|
|
1294
1314
|
var column = this.fieldMode === 'DropdownTree' ? this.getColumn(args.value[0]) : this.getColumn(args.value);
|
|
1295
1315
|
if (this.fieldMode === 'DropdownTree' && fieldElem != null) {
|
|
1296
|
-
var ddtElem = fieldElem.querySelector(
|
|
1316
|
+
var ddtElem = fieldElem.querySelector('.e-control');
|
|
1297
1317
|
var ddt = getComponent(ddtElem, 'dropdowntree');
|
|
1298
1318
|
if (column) {
|
|
1299
|
-
if (column.type
|
|
1319
|
+
if (column.type === 'object') {
|
|
1300
1320
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1301
1321
|
ddt.value = args.oldValue;
|
|
1302
1322
|
ddt.dataBind();
|
|
1303
1323
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1304
1324
|
if (isNullOrUndefined(args.oldValue)) {
|
|
1305
|
-
ddtElem.value =
|
|
1325
|
+
ddtElem.value = '';
|
|
1306
1326
|
}
|
|
1307
1327
|
else {
|
|
1308
1328
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1468,7 +1488,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1468
1488
|
popupHeight: ((subFieldData.length > 5) ? height : 'auto'),
|
|
1469
1489
|
change: this.changeField.bind(this),
|
|
1470
1490
|
index: 0,
|
|
1471
|
-
open: this.popupOpen.bind(this)
|
|
1491
|
+
open: this.popupOpen.bind(this, false)
|
|
1472
1492
|
});
|
|
1473
1493
|
dropDownList.appendTo('#' + ruleId + '_subfilterkey' + this.subFilterCounter);
|
|
1474
1494
|
if (this.isImportRules) {
|
|
@@ -1589,7 +1609,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1589
1609
|
change: this.changeField.bind(this),
|
|
1590
1610
|
index: 0,
|
|
1591
1611
|
value: value,
|
|
1592
|
-
open: this.popupOpen.bind(this)
|
|
1612
|
+
open: this.popupOpen.bind(this, false)
|
|
1593
1613
|
};
|
|
1594
1614
|
if (this.operatorModel) {
|
|
1595
1615
|
ddlOperator = __assign({}, ddlOperator, this.operatorModel);
|
|
@@ -1608,10 +1628,13 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1608
1628
|
this.updateRules(ddlArgs.element, ddlArgs.item);
|
|
1609
1629
|
}
|
|
1610
1630
|
};
|
|
1611
|
-
QueryBuilder.prototype.popupOpen = function (args) {
|
|
1631
|
+
QueryBuilder.prototype.popupOpen = function (isField, args) {
|
|
1612
1632
|
if (this.enableRtl) {
|
|
1613
1633
|
addClass([args.popup.element], 'e-rtl');
|
|
1614
1634
|
}
|
|
1635
|
+
if (isField) {
|
|
1636
|
+
this.isFieldClose = false;
|
|
1637
|
+
}
|
|
1615
1638
|
};
|
|
1616
1639
|
QueryBuilder.prototype.destroyControls = function (target, isRuleTemplate) {
|
|
1617
1640
|
var element = isRuleTemplate ? target : target.nextElementSibling;
|
|
@@ -1804,7 +1827,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
1804
1827
|
change: this.changeValue.bind(this, i),
|
|
1805
1828
|
close: this.closePopup.bind(this, i),
|
|
1806
1829
|
actionBegin: this.multiSelectOpen.bind(this, parentId + '_valuekey' + i),
|
|
1807
|
-
open: this.popupOpen.bind(this)
|
|
1830
|
+
open: this.popupOpen.bind(this, false)
|
|
1808
1831
|
};
|
|
1809
1832
|
if (this.valueModel && this.valueModel.multiSelectModel) {
|
|
1810
1833
|
multiSelectValue = __assign({}, multiSelectValue, this.valueModel.multiSelectModel);
|
|
@@ -2226,6 +2249,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2226
2249
|
return 0;
|
|
2227
2250
|
};
|
|
2228
2251
|
QueryBuilder.prototype.getPreviousItemData = function (prevItemData, column) {
|
|
2252
|
+
if (this.isFieldClose && prevItemData) {
|
|
2253
|
+
prevItemData = this.getColumn(prevItemData.value);
|
|
2254
|
+
}
|
|
2229
2255
|
if (column.template && prevItemData && Object.keys(prevItemData).length < 4) {
|
|
2230
2256
|
prevItemData.template = column.template;
|
|
2231
2257
|
}
|
|
@@ -2718,6 +2744,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2718
2744
|
* @returns {void}
|
|
2719
2745
|
*/
|
|
2720
2746
|
QueryBuilder.prototype.destroy = function () {
|
|
2747
|
+
this.isDestroy = true;
|
|
2721
2748
|
var queryElement = this.element;
|
|
2722
2749
|
if (!queryElement) {
|
|
2723
2750
|
return;
|
|
@@ -2773,6 +2800,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
2773
2800
|
this.clearQBTemplate();
|
|
2774
2801
|
}
|
|
2775
2802
|
classList(this.element, [], ['e-rtl', 'e-responsive', 'e-device']);
|
|
2803
|
+
this.isDestroy = false;
|
|
2776
2804
|
};
|
|
2777
2805
|
/**
|
|
2778
2806
|
* Adds single or multiple rules.
|
|
@@ -3558,6 +3586,9 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3558
3586
|
rule.not = notValue;
|
|
3559
3587
|
}
|
|
3560
3588
|
}
|
|
3589
|
+
else if ((isNullOrUndefined(rule.condition)) && isNullOrUndefined(rule.rules)) {
|
|
3590
|
+
rule = { 'label': '', 'field': '', 'operator': '', 'type': '', 'value': '' };
|
|
3591
|
+
}
|
|
3561
3592
|
else {
|
|
3562
3593
|
if (this.enableNotCondition) {
|
|
3563
3594
|
rule = { 'condition': rule.condition, 'rules': rule.rules, 'not': rule.not };
|
|
@@ -3741,7 +3772,7 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
3741
3772
|
}
|
|
3742
3773
|
}
|
|
3743
3774
|
}
|
|
3744
|
-
else if (ruleColl[i].operator.length) {
|
|
3775
|
+
else if (!isNullOrUndefined(ruleColl[i].operator) && !isNullOrUndefined(ruleColl[i].operator.length)) {
|
|
3745
3776
|
var oper = ruleColl[i].operator.toLowerCase();
|
|
3746
3777
|
var isDateFilter = false;
|
|
3747
3778
|
var dateOperColl = ['equal', 'notequal', 'greaterthan', 'greaterthanorequal', 'lessthan', 'lessthanorequal'];
|
|
@@ -4445,6 +4476,12 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4445
4476
|
this.parser.push(['Literal', matchValue]);
|
|
4446
4477
|
return matchValue.length + 2;
|
|
4447
4478
|
}
|
|
4479
|
+
// eslint-disable-next-line
|
|
4480
|
+
if (this.checkNumberLiteral(sqlString)) {
|
|
4481
|
+
matchValue = /^[0-9]+(\.[0-9]+)?/.exec(sqlString)[0];
|
|
4482
|
+
this.parser.push(['Literal', matchValue]);
|
|
4483
|
+
return matchValue.length;
|
|
4484
|
+
}
|
|
4448
4485
|
//String
|
|
4449
4486
|
if (/^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)) {
|
|
4450
4487
|
matchValue = /^'((?:[^\\']+?|\\.|'')*)'(?!')/.exec(sqlString)[0];
|
|
@@ -4484,6 +4521,25 @@ var QueryBuilder = /** @__PURE__ @class */ (function (_super) {
|
|
|
4484
4521
|
}
|
|
4485
4522
|
return false;
|
|
4486
4523
|
};
|
|
4524
|
+
QueryBuilder.prototype.checkNumberLiteral = function (sqlString) {
|
|
4525
|
+
var lastParser = this.parser[this.parser.length - 1];
|
|
4526
|
+
if (!lastParser) {
|
|
4527
|
+
return true;
|
|
4528
|
+
}
|
|
4529
|
+
else {
|
|
4530
|
+
if (/^[0-9]+(\.[0-9]+)?/.exec(sqlString)) {
|
|
4531
|
+
var secParser = this.parser[this.parser.length - 2];
|
|
4532
|
+
var betweenParser = this.parser[this.parser.length - 3];
|
|
4533
|
+
if (lastParser[0] === 'Left' && (secParser && secParser[0] === 'Conditions')) {
|
|
4534
|
+
return true;
|
|
4535
|
+
}
|
|
4536
|
+
if (lastParser[0] === 'Conditions' && (betweenParser && betweenParser[1].indexOf('between') < 0)) {
|
|
4537
|
+
return true;
|
|
4538
|
+
}
|
|
4539
|
+
}
|
|
4540
|
+
}
|
|
4541
|
+
return false;
|
|
4542
|
+
};
|
|
4487
4543
|
QueryBuilder.prototype.getOperator = function (value, operator) {
|
|
4488
4544
|
var operators = {
|
|
4489
4545
|
'=': 'equal', '!=': 'notequal', '<': 'lessthan', '>': 'greaterthan', '<=': 'lessthanorequal',
|