jsl-ui 9.28.2 → 9.28.4
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/lib/components/IntervalComponent.js +32 -35
- package/lib/components/auto-suggest/AutoSuggestComponent.js +19 -21
- package/lib/components/button/ButtonComponent.js +13 -30
- package/lib/components/checkbox/CheckBoxComponent.js +22 -39
- package/lib/components/date/DateComponent.js +29 -46
- package/lib/components/date-range/DateRangeComponent.js +48 -63
- package/lib/components/date-time/DateTimeComponent.js +17 -31
- package/lib/components/dialog/DialogComponent.js +75 -134
- package/lib/components/drop-down/DropDownComponent.js +23 -37
- package/lib/components/expander/ExpanderComponent.js +20 -23
- package/lib/components/form-field/FormComponent.js +9 -12
- package/lib/components/form-field/FormFieldComponent.js +28 -30
- package/lib/components/grid/GridComponent.js +46 -52
- package/lib/components/input/InputComponent.js +26 -47
- package/lib/components/loading/LoadingComponent.js +7 -9
- package/lib/components/navigation/NavigationComponent.js +20 -43
- package/lib/components/notification/Notification.js +18 -22
- package/lib/components/number/NumberComponent.js +28 -46
- package/lib/components/overlay/OverlayComponent.js +45 -60
- package/lib/components/progress/ProgressComponent.js +15 -17
- package/lib/components/ribbon-menu/RibbonMenuComponent.js +9 -20
- package/lib/components/select/SelectComponent.js +105 -122
- package/lib/components/select/SelectDDAreaComponent.js +108 -122
- package/lib/components/slider/nouislider.js +1 -1
- package/lib/components/stack-panel/SplitterComponent.js +27 -29
- package/lib/components/stack-panel/StackPanelComponent.js +17 -31
- package/lib/components/tabs/TabsComponent.js +53 -66
- package/lib/components/time/TimeComponent.js +32 -43
- package/lib/components/tree-view/TreeViewComponent.js +13 -16
- package/lib/components/virtual-render/VirtualRenderComponent.js +30 -44
- package/lib/core/culture.js +2 -2
- package/lib/core/date.js +68 -72
- package/lib/core/helper.js +30 -34
- package/lib/core/jq.js +54 -63
- package/lib/core/lang.js +24 -28
- package/lib/core/numeric.js +35 -39
- package/lib/grid/filterDialogs/dateRangeFilter.js +98 -148
- package/lib/grid/filterDialogs/excelFilter.js +205 -271
- package/lib/grid/plugins/ext.overlay.js +9 -9
- package/lib/grid/plugins/slick.cellrangedecorator.js +2 -2
- package/lib/grid/plugins/slick.cellrangeselector.js +1 -1
- package/lib/grid/plugins/slick.cellselectionmodel.js +8 -8
- package/lib/grid/plugins/slick.headerbuttons.js +1 -1
- package/lib/grid/plugins/slick.headermenu.js +1 -1
- package/lib/grid/plugins/slick.rowmovemanager.js +2 -2
- package/lib/grid/plugins/slick.rowselectionmodel.js +1 -1
- package/lib/grid/slick.core.js +1 -1
- package/lib/grid/slick.creator.js +144 -144
- package/lib/grid/slick.dataview.js +127 -138
- package/lib/grid/slick.editors.core.js +1 -1
- package/lib/grid/slick.editors.date.js +2 -2
- package/lib/grid/slick.editors.lookup.js +36 -37
- package/lib/grid/slick.editors.nav.js +1 -1
- package/lib/grid/slick.formatters.js +26 -26
- package/lib/grid/slick.grid.js +163 -166
- package/lib/grid/slick.groupitemmetadataprovider.js +4 -4
- package/lib/grid/slick.tree.js +91 -103
- package/lib/index.js.map +1 -1
- package/lib/interaction/eventhandler.js +20 -23
- package/lib/interaction/moveable.js +76 -90
- package/lib/interaction/resizable.js +58 -72
- package/lib/ui/auto.suggest.js +13 -28
- package/lib/ui/date.picker/lib/fns.js +1 -5
- package/lib/ui/dialog.js +28 -43
- package/lib/ui/drop.down.js +4 -4
- package/lib/ui/number.input.js +8 -19
- package/package.json +1 -1
|
@@ -1,156 +1,106 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
1
|
import { UILang } from "../../core/lang";
|
|
38
2
|
import { Dialog } from "../../ui/dialog";
|
|
39
3
|
import { JSLRender } from "jsl-render";
|
|
40
4
|
import { DateRangeComponent } from "../../components/date-range/DateRangeComponent";
|
|
41
|
-
|
|
42
|
-
|
|
5
|
+
export class DateRangeFilter {
|
|
6
|
+
constructor(grid) {
|
|
43
7
|
this.grid = grid;
|
|
44
8
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
for (idx = 0, l = this.grid.getDataLength(); idx < l; idx++) {
|
|
61
|
-
v = this.grid.getDataItemValueForColumn(this.grid.getDataItem(idx), col);
|
|
62
|
-
if (minVal == null || v < minVal) {
|
|
63
|
-
minVal = v;
|
|
64
|
-
}
|
|
65
|
-
if (maxVal == null || v > maxVal) {
|
|
66
|
-
maxVal = v;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return [3 /*break*/, 3];
|
|
70
|
-
case 1:
|
|
71
|
-
filterOptions = this.grid.getOptions().getFilterValues;
|
|
72
|
-
if (filterOptions == null) {
|
|
73
|
-
throw new Error("getFilterValues option has to be set when filter mode = server");
|
|
74
|
-
}
|
|
75
|
-
return [4 /*yield*/, filterOptions(col)];
|
|
76
|
-
case 2:
|
|
77
|
-
values = _a.sent();
|
|
78
|
-
// TODO: check if correct type of object was returned
|
|
79
|
-
minVal = values[0];
|
|
80
|
-
maxVal = values[1];
|
|
81
|
-
_a.label = 3;
|
|
82
|
-
case 3:
|
|
83
|
-
oldminMaxValues = [minVal, maxVal];
|
|
84
|
-
if (currentFilters.length > 0) {
|
|
85
|
-
for (_i = 0, currentFilters_1 = currentFilters; _i < currentFilters_1.length; _i++) {
|
|
86
|
-
f = currentFilters_1[_i];
|
|
87
|
-
if (f._checkedValues) {
|
|
88
|
-
oldminMaxValues = f._checkedValues;
|
|
89
|
-
}
|
|
90
|
-
if (mode === "client") {
|
|
91
|
-
filters.push(f);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (mode === "client") {
|
|
95
|
-
this.grid.refreshFilters();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
dlg = document.createElement("div");
|
|
99
|
-
dlg.classList.add("jsl-dialog-overlay");
|
|
100
|
-
dlg.innerHTML = '<div class="jsl-dialog" style="width:50vw;min-height:50vh;"><div class="dlg-header">' + UILang.grid.Filter + '</div><div class="dlg-body" style="max-height:calc(100vh - 7.5rem)"></div>' +
|
|
101
|
-
'<div class="dlg-footer">' +
|
|
102
|
-
'<button class="jsl-button ok-button">' + UILang.core.Ok + "</button>" +
|
|
103
|
-
(currentFilters.length > 0 ? ('<button class="jsl-button clear-button">' + UILang.grid.ClearFilter + '</button>') : "") +
|
|
104
|
-
'<button class="jsl-button close-button">' + UILang.core.Cancel + "</button>" +
|
|
105
|
-
"</div></div>";
|
|
106
|
-
dlgBody = dlg.querySelector(".dlg-body");
|
|
107
|
-
dateRangeComp = new DateRangeComponent({
|
|
108
|
-
min: minVal, max: maxVal,
|
|
109
|
-
minValue: oldminMaxValues[0], maxValue: oldminMaxValues[1],
|
|
110
|
-
increment: "days"
|
|
111
|
-
});
|
|
112
|
-
new JSLRender(dlgBody, false).render(dateRangeComp);
|
|
113
|
-
// const id = helper.newDomGuid();
|
|
114
|
-
document.body.appendChild(dlg);
|
|
115
|
-
dlgObj = Dialog(dlg, {
|
|
116
|
-
autoOpen: true, onClose: function () {
|
|
117
|
-
dlg.innerHTML = "";
|
|
118
|
-
dlg.parentElement.removeChild(dlg);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
dlgOkButton = dlg.querySelector(".dlg-footer .ok-button");
|
|
122
|
-
dlgOkButton.addEventListener("click", function (evt) {
|
|
123
|
-
var min = dateRangeComp.getMin();
|
|
124
|
-
var max = dateRangeComp.getMax();
|
|
125
|
-
_this.grid.clearFilter(col.id, true);
|
|
126
|
-
if (min.getDate() !== minVal.getDate() || min.getFullYear() !== minVal.getFullYear() || max.getDate() !== maxVal.getDate() || max.getFullYear() !== maxVal.getFullYear()) {
|
|
127
|
-
var filterObject = {
|
|
128
|
-
field: col.field, columnId: col.id, match: mode === "server" ? function () { return true; } : function (item, field) {
|
|
129
|
-
return _this.grid.getDataItemValueForColumn(item, col) >= min && _this.grid.getDataItemValueForColumn(item, col) <= max;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
filterObject._checkedValues = [min, max];
|
|
133
|
-
_this.grid.addFilter(filterObject, true);
|
|
134
|
-
}
|
|
135
|
-
_this.grid.refreshFilters();
|
|
136
|
-
dlgObj.close();
|
|
137
|
-
});
|
|
138
|
-
dlgCancelButton = dlg.querySelector(".dlg-footer .close-button");
|
|
139
|
-
dlgCancelButton.addEventListener("click", function (evt) {
|
|
140
|
-
dlgObj.close();
|
|
141
|
-
});
|
|
142
|
-
dlgClearButton = dlg.querySelector(".dlg-footer .clear-button");
|
|
143
|
-
if (dlgClearButton != null) {
|
|
144
|
-
dlgClearButton.addEventListener("click", function (evt) {
|
|
145
|
-
_this.grid.clearFilter(col.id);
|
|
146
|
-
dlgObj.close();
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
return [2 /*return*/];
|
|
9
|
+
async show(col) {
|
|
10
|
+
let minVal;
|
|
11
|
+
let maxVal;
|
|
12
|
+
const filters = this.grid.getFilters();
|
|
13
|
+
const currentFilters = filters.filter((f) => f.columnId === col.id);
|
|
14
|
+
const mode = this.grid.getOptions().mode;
|
|
15
|
+
if (mode === "client") {
|
|
16
|
+
// remove any filters for this column
|
|
17
|
+
if (currentFilters.length > 0) {
|
|
18
|
+
this.grid.clearFilter(col.id);
|
|
19
|
+
}
|
|
20
|
+
for (let idx = 0, l = this.grid.getDataLength(); idx < l; idx++) {
|
|
21
|
+
const v = this.grid.getDataItemValueForColumn(this.grid.getDataItem(idx), col);
|
|
22
|
+
if (minVal == null || v < minVal) {
|
|
23
|
+
minVal = v;
|
|
150
24
|
}
|
|
151
|
-
|
|
25
|
+
if (maxVal == null || v > maxVal) {
|
|
26
|
+
maxVal = v;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const filterOptions = this.grid.getOptions().getFilterValues;
|
|
32
|
+
if (filterOptions == null) {
|
|
33
|
+
throw new Error("getFilterValues option has to be set when filter mode = server");
|
|
34
|
+
}
|
|
35
|
+
const values = await filterOptions(col);
|
|
36
|
+
// TODO: check if correct type of object was returned
|
|
37
|
+
minVal = values[0];
|
|
38
|
+
maxVal = values[1];
|
|
39
|
+
}
|
|
40
|
+
let oldminMaxValues = [minVal, maxVal];
|
|
41
|
+
if (currentFilters.length > 0) {
|
|
42
|
+
for (const f of currentFilters) {
|
|
43
|
+
if (f._checkedValues) {
|
|
44
|
+
oldminMaxValues = f._checkedValues;
|
|
45
|
+
}
|
|
46
|
+
if (mode === "client") {
|
|
47
|
+
filters.push(f);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (mode === "client") {
|
|
51
|
+
this.grid.refreshFilters();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const dlg = document.createElement("div");
|
|
55
|
+
dlg.classList.add("jsl-dialog-overlay");
|
|
56
|
+
dlg.innerHTML = '<div class="jsl-dialog" style="width:50vw;min-height:50vh;"><div class="dlg-header">' + UILang.grid.Filter + '</div><div class="dlg-body" style="max-height:calc(100vh - 7.5rem)"></div>' +
|
|
57
|
+
'<div class="dlg-footer">' +
|
|
58
|
+
'<button class="jsl-button ok-button">' + UILang.core.Ok + "</button>" +
|
|
59
|
+
(currentFilters.length > 0 ? ('<button class="jsl-button clear-button">' + UILang.grid.ClearFilter + '</button>') : "") +
|
|
60
|
+
'<button class="jsl-button close-button">' + UILang.core.Cancel + "</button>" +
|
|
61
|
+
"</div></div>";
|
|
62
|
+
const dlgBody = dlg.querySelector(".dlg-body");
|
|
63
|
+
const dateRangeComp = new DateRangeComponent({
|
|
64
|
+
min: minVal, max: maxVal,
|
|
65
|
+
minValue: oldminMaxValues[0], maxValue: oldminMaxValues[1],
|
|
66
|
+
increment: "days"
|
|
152
67
|
});
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
68
|
+
new JSLRender(dlgBody, false).render(dateRangeComp);
|
|
69
|
+
// const id = helper.newDomGuid();
|
|
70
|
+
document.body.appendChild(dlg);
|
|
71
|
+
const dlgObj = Dialog(dlg, {
|
|
72
|
+
autoOpen: true, onClose: () => {
|
|
73
|
+
dlg.innerHTML = "";
|
|
74
|
+
dlg.parentElement.removeChild(dlg);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const dlgOkButton = dlg.querySelector(".dlg-footer .ok-button");
|
|
78
|
+
dlgOkButton.addEventListener("click", (evt) => {
|
|
79
|
+
const min = dateRangeComp.getMin();
|
|
80
|
+
const max = dateRangeComp.getMax();
|
|
81
|
+
this.grid.clearFilter(col.id, true);
|
|
82
|
+
if (min.getDate() !== minVal.getDate() || min.getFullYear() !== minVal.getFullYear() || max.getDate() !== maxVal.getDate() || max.getFullYear() !== maxVal.getFullYear()) {
|
|
83
|
+
const filterObject = {
|
|
84
|
+
field: col.field, columnId: col.id, match: mode === "server" ? () => true : (item, field) => {
|
|
85
|
+
return this.grid.getDataItemValueForColumn(item, col) >= min && this.grid.getDataItemValueForColumn(item, col) <= max;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
filterObject._checkedValues = [min, max];
|
|
89
|
+
this.grid.addFilter(filterObject, true);
|
|
90
|
+
}
|
|
91
|
+
this.grid.refreshFilters();
|
|
92
|
+
dlgObj.close();
|
|
93
|
+
});
|
|
94
|
+
const dlgCancelButton = dlg.querySelector(".dlg-footer .close-button");
|
|
95
|
+
dlgCancelButton.addEventListener("click", (evt) => {
|
|
96
|
+
dlgObj.close();
|
|
97
|
+
});
|
|
98
|
+
const dlgClearButton = dlg.querySelector(".dlg-footer .clear-button");
|
|
99
|
+
if (dlgClearButton != null) {
|
|
100
|
+
dlgClearButton.addEventListener("click", (evt) => {
|
|
101
|
+
this.grid.clearFilter(col.id);
|
|
102
|
+
dlgObj.close();
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|