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,277 +1,213 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
-
});
|
|
20
|
-
};
|
|
21
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
-
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);
|
|
23
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
-
function step(op) {
|
|
26
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
-
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;
|
|
29
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
-
switch (op[0]) {
|
|
31
|
-
case 0: case 1: t = op; break;
|
|
32
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
-
default:
|
|
36
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
-
if (t[2]) _.ops.pop();
|
|
41
|
-
_.trys.pop(); continue;
|
|
42
|
-
}
|
|
43
|
-
op = body.call(thisArg, _);
|
|
44
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
1
|
import { UILang } from "../../core/lang";
|
|
49
2
|
import { helper } from "../../core/helper";
|
|
50
3
|
import { Dialog } from "../../ui/dialog";
|
|
51
4
|
import { VirtualRenderComponent } from "../../components/virtual-render/VirtualRenderComponent";
|
|
52
5
|
import { JSLRender } from "jsl-render";
|
|
53
|
-
|
|
54
|
-
|
|
6
|
+
export class ExcelFilter {
|
|
7
|
+
static convertRemToPixels(rem) {
|
|
8
|
+
return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
|
|
9
|
+
}
|
|
10
|
+
constructor(grid) {
|
|
55
11
|
this.grid = grid;
|
|
56
12
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
13
|
+
async show(col) {
|
|
14
|
+
let values;
|
|
15
|
+
const filters = this.grid.getFilters();
|
|
16
|
+
const currentFilters = filters.filter((f) => f.columnId === col.id);
|
|
17
|
+
const mode = this.grid.getOptions().mode;
|
|
18
|
+
const filterOptions = this.grid.getOptions().getFilterValues;
|
|
19
|
+
if (filterOptions == null) {
|
|
20
|
+
if (mode === "client") {
|
|
21
|
+
// remove any filters for this column
|
|
22
|
+
if (currentFilters.length > 0) {
|
|
23
|
+
this.grid.clearFilter(col.id);
|
|
24
|
+
}
|
|
25
|
+
values = this.getDistinctValues(col);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error("getFilterValues option has to be set when filter mode = server");
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
values = await filterOptions(col);
|
|
33
|
+
}
|
|
34
|
+
let oldCheckedValues = {};
|
|
35
|
+
if (currentFilters.length > 0) {
|
|
36
|
+
for (const f of currentFilters) {
|
|
37
|
+
if (f._checkedValues) {
|
|
38
|
+
oldCheckedValues = f._checkedValues;
|
|
39
|
+
}
|
|
40
|
+
if (mode === "client") {
|
|
41
|
+
filters.push(f);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (mode === "client") {
|
|
45
|
+
this.grid.refreshFilters();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const dlg = document.createElement("div");
|
|
49
|
+
dlg.classList.add("jsl-dialog-overlay");
|
|
50
|
+
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>' +
|
|
51
|
+
'<div class="dlg-footer">' +
|
|
52
|
+
'<button class="jsl-button ok-button">' + UILang.core.Ok + "</button>" +
|
|
53
|
+
(currentFilters.length > 0 ? ('<button class="jsl-button clear-button">' + UILang.grid.ClearFilter + '</button>') : "") +
|
|
54
|
+
'<button class="jsl-button close-button">' + UILang.core.Cancel + "</button>" +
|
|
55
|
+
"</div></div>";
|
|
56
|
+
const dlgBody = dlg.querySelector(".dlg-body");
|
|
57
|
+
const id = helper.newDomGuid();
|
|
58
|
+
const search = document.createElement("div");
|
|
59
|
+
search.innerHTML = "<input type='text' placeholder='" + UILang.grid.Search + "' />";
|
|
60
|
+
dlgBody.appendChild(search);
|
|
61
|
+
const cbAllContainer = document.createElement("div");
|
|
62
|
+
const cbAll = document.createElement("input");
|
|
63
|
+
cbAll.type = "checkbox";
|
|
64
|
+
cbAll.id = id;
|
|
65
|
+
cbAllContainer.appendChild(cbAll);
|
|
66
|
+
const cbAllLabel = document.createElement("label");
|
|
67
|
+
cbAllLabel.setAttribute("for", id);
|
|
68
|
+
cbAllLabel.textContent = UILang.core.All;
|
|
69
|
+
cbAllLabel.style.cursor = "pointer";
|
|
70
|
+
cbAllLabel.style.marginLeft = "0.2rem";
|
|
71
|
+
cbAllContainer.appendChild(cbAllLabel);
|
|
72
|
+
dlgBody.appendChild(cbAllContainer);
|
|
73
|
+
const sortedValues = [];
|
|
74
|
+
if (Array.isArray(values)) {
|
|
75
|
+
for (const x of values) {
|
|
76
|
+
sortedValues.push({ id: [x], txt: x !== null && x !== void 0 ? x : "" });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
for (const o in values) {
|
|
81
|
+
if (values.hasOwnProperty(o)) {
|
|
82
|
+
sortedValues.push({ id: values[o], txt: o !== null && o !== void 0 ? o : "" });
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// TODO: use custom comparer when available
|
|
87
|
+
sortedValues.sort((a, b) => a.txt.toLocaleLowerCase() < b.txt.toLocaleLowerCase() ? -1 : (a.txt.toLocaleLowerCase() > b.txt.toLocaleLowerCase() ? 1 : 0));
|
|
88
|
+
let visibleValues = sortedValues;
|
|
89
|
+
const checkedValues = { ...oldCheckedValues };
|
|
90
|
+
const cbContainer = document.createElement("div");
|
|
91
|
+
dlgBody.appendChild(cbContainer);
|
|
92
|
+
const rowHeight = /*this.grid.getOptions().rowHeight ||*/ Math.round(ExcelFilter.convertRemToPixels(1.5));
|
|
93
|
+
let height = sortedValues.length * rowHeight;
|
|
94
|
+
height = Math.min(height, Math.round(window.innerHeight - ExcelFilter.convertRemToPixels(13)));
|
|
95
|
+
const vr = new VirtualRenderComponent({
|
|
96
|
+
data: visibleValues,
|
|
97
|
+
renderRow: (args) => {
|
|
98
|
+
args.container.attr.style["padding-left"] = "1rem";
|
|
99
|
+
args.container.attr.style["overflow"] = "hidden";
|
|
100
|
+
args.container.attr.style["display"] = "flex";
|
|
101
|
+
args.container.attr.style["align-items"] = "center";
|
|
102
|
+
args.container.children.push({
|
|
103
|
+
tag: "input",
|
|
104
|
+
attr: {
|
|
105
|
+
id: id + "_" + args.index,
|
|
106
|
+
checked: checkedValues[args.rowData.id[0]] ? "checked" : undefined,
|
|
107
|
+
change: (_, node) => {
|
|
108
|
+
if (node.dom.checked) {
|
|
109
|
+
for (const selId of args.rowData.id) {
|
|
110
|
+
checkedValues[selId] = true;
|
|
139
111
|
}
|
|
140
112
|
}
|
|
141
|
-
}
|
|
142
|
-
// TODO: use custom comparer when available
|
|
143
|
-
sortedValues.sort(function (a, b) { return a.txt.toLocaleLowerCase() < b.txt.toLocaleLowerCase() ? -1 : (a.txt.toLocaleLowerCase() > b.txt.toLocaleLowerCase() ? 1 : 0); });
|
|
144
|
-
visibleValues = sortedValues;
|
|
145
|
-
checkedValues = __assign({}, oldCheckedValues);
|
|
146
|
-
cbContainer = document.createElement("div");
|
|
147
|
-
dlgBody.appendChild(cbContainer);
|
|
148
|
-
rowHeight = Math.round(ExcelFilter.convertRemToPixels(1.5));
|
|
149
|
-
height = sortedValues.length * rowHeight;
|
|
150
|
-
height = Math.min(height, Math.round(window.innerHeight - ExcelFilter.convertRemToPixels(13)));
|
|
151
|
-
vr = new VirtualRenderComponent({
|
|
152
|
-
data: visibleValues,
|
|
153
|
-
renderRow: function (args) {
|
|
154
|
-
args.container.attr.style["padding-left"] = "1rem";
|
|
155
|
-
args.container.attr.style["overflow"] = "hidden";
|
|
156
|
-
args.container.attr.style["display"] = "flex";
|
|
157
|
-
args.container.attr.style["align-items"] = "center";
|
|
158
|
-
args.container.children.push({
|
|
159
|
-
tag: "input",
|
|
160
|
-
attr: {
|
|
161
|
-
id: id + "_" + args.index,
|
|
162
|
-
checked: checkedValues[args.rowData.id[0]] ? "checked" : undefined,
|
|
163
|
-
change: function (_, node) {
|
|
164
|
-
if (node.dom.checked) {
|
|
165
|
-
for (var _i = 0, _a = args.rowData.id; _i < _a.length; _i++) {
|
|
166
|
-
var selId = _a[_i];
|
|
167
|
-
checkedValues[selId] = true;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
for (var _b = 0, _c = args.rowData.id; _b < _c.length; _b++) {
|
|
172
|
-
var selId = _c[_b];
|
|
173
|
-
delete checkedValues[selId];
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
// check if all values or none are checked
|
|
177
|
-
var allChecked = Object.getOwnPropertyNames(checkedValues).length === sortedValues.length;
|
|
178
|
-
var allCb = dlgBody.querySelector("#" + id);
|
|
179
|
-
allCb.checked = allChecked;
|
|
180
|
-
},
|
|
181
|
-
type: "checkbox"
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
args.container.children.push({
|
|
185
|
-
tag: "label",
|
|
186
|
-
attr: {
|
|
187
|
-
for: id + "_" + args.index,
|
|
188
|
-
style: "margin-left:0.2rem;cursor:pointer"
|
|
189
|
-
},
|
|
190
|
-
raw: true,
|
|
191
|
-
content: args.rowData.txt
|
|
192
|
-
});
|
|
193
|
-
},
|
|
194
|
-
rowHeight: rowHeight,
|
|
195
|
-
style: "height:" + height + "px"
|
|
196
|
-
});
|
|
197
|
-
renderer = new JSLRender(cbContainer, false);
|
|
198
|
-
renderer.render(vr);
|
|
199
|
-
search.addEventListener("input", function (evt) {
|
|
200
|
-
var _a;
|
|
201
|
-
var term = ((_a = evt.target.value) !== null && _a !== void 0 ? _a : "").toLowerCase();
|
|
202
|
-
if (term) {
|
|
203
|
-
visibleValues = sortedValues.filter(function (x) { var _a; return ((_a = x.txt) !== null && _a !== void 0 ? _a : "").toLowerCase().indexOf(term) >= 0; });
|
|
204
|
-
}
|
|
205
113
|
else {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
vr.setData(visibleValues);
|
|
209
|
-
renderer.refresh();
|
|
210
|
-
});
|
|
211
|
-
cbAll.addEventListener("change", function () {
|
|
212
|
-
for (var i = 0; i < visibleValues.length; i++) {
|
|
213
|
-
// if (cbAll.checked) {
|
|
214
|
-
// checkedValues[visibleValues[i].id] = true;
|
|
215
|
-
// } else {
|
|
216
|
-
// delete checkedValues[visibleValues[i].id];
|
|
217
|
-
// }
|
|
218
|
-
if (cbAll.checked) {
|
|
219
|
-
for (var _i = 0, _a = visibleValues[i].id; _i < _a.length; _i++) {
|
|
220
|
-
var selId = _a[_i];
|
|
221
|
-
checkedValues[selId] = true;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
for (var _b = 0, _c = visibleValues[i].id; _b < _c.length; _b++) {
|
|
226
|
-
var selId = _c[_b];
|
|
227
|
-
delete checkedValues[selId];
|
|
228
|
-
}
|
|
114
|
+
for (const selId of args.rowData.id) {
|
|
115
|
+
delete checkedValues[selId];
|
|
229
116
|
}
|
|
230
117
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
118
|
+
// check if all values or none are checked
|
|
119
|
+
const allChecked = Object.getOwnPropertyNames(checkedValues).length === sortedValues.length;
|
|
120
|
+
const allCb = dlgBody.querySelector("#" + id);
|
|
121
|
+
allCb.checked = allChecked;
|
|
122
|
+
},
|
|
123
|
+
type: "checkbox"
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
args.container.children.push({
|
|
127
|
+
tag: "label",
|
|
128
|
+
attr: {
|
|
129
|
+
for: id + "_" + args.index,
|
|
130
|
+
style: "margin-left:0.2rem;cursor:pointer"
|
|
131
|
+
},
|
|
132
|
+
raw: true,
|
|
133
|
+
content: args.rowData.txt
|
|
134
|
+
});
|
|
135
|
+
},
|
|
136
|
+
rowHeight,
|
|
137
|
+
style: "height:" + height + "px"
|
|
138
|
+
});
|
|
139
|
+
const renderer = new JSLRender(cbContainer, false);
|
|
140
|
+
renderer.render(vr);
|
|
141
|
+
search.addEventListener("input", (evt) => {
|
|
142
|
+
var _a;
|
|
143
|
+
const term = ((_a = evt.target.value) !== null && _a !== void 0 ? _a : "").toLowerCase();
|
|
144
|
+
if (term) {
|
|
145
|
+
visibleValues = sortedValues.filter((x) => { var _a; return ((_a = x.txt) !== null && _a !== void 0 ? _a : "").toLowerCase().indexOf(term) >= 0; });
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
visibleValues = sortedValues;
|
|
149
|
+
}
|
|
150
|
+
vr.setData(visibleValues);
|
|
151
|
+
renderer.refresh();
|
|
152
|
+
});
|
|
153
|
+
cbAll.addEventListener("change", () => {
|
|
154
|
+
for (let i = 0; i < visibleValues.length; i++) {
|
|
155
|
+
// if (cbAll.checked) {
|
|
156
|
+
// checkedValues[visibleValues[i].id] = true;
|
|
157
|
+
// } else {
|
|
158
|
+
// delete checkedValues[visibleValues[i].id];
|
|
159
|
+
// }
|
|
160
|
+
if (cbAll.checked) {
|
|
161
|
+
for (const selId of visibleValues[i].id) {
|
|
162
|
+
checkedValues[selId] = true;
|
|
163
|
+
}
|
|
271
164
|
}
|
|
272
|
-
|
|
165
|
+
else {
|
|
166
|
+
for (const selId of visibleValues[i].id) {
|
|
167
|
+
delete checkedValues[selId];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
renderer.refresh();
|
|
172
|
+
});
|
|
173
|
+
document.body.appendChild(dlg);
|
|
174
|
+
const dlgObj = Dialog(dlg, {
|
|
175
|
+
autoOpen: true, onClose: () => {
|
|
176
|
+
dlg.innerHTML = "";
|
|
177
|
+
dlg.parentElement.removeChild(dlg);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
const dlgOkButton = dlg.querySelector(".dlg-footer .ok-button");
|
|
181
|
+
dlgOkButton.addEventListener("click", (evt) => {
|
|
182
|
+
const selLength = Object.getOwnPropertyNames(checkedValues).length;
|
|
183
|
+
const allChecked = selLength === sortedValues.length;
|
|
184
|
+
const anyChecked = selLength > 0;
|
|
185
|
+
this.grid.clearFilter(col.id, true);
|
|
186
|
+
if (!allChecked && anyChecked) {
|
|
187
|
+
// something (but not everything) was selected -> filter
|
|
188
|
+
const filterObject = {
|
|
189
|
+
field: col.field, columnId: col.id, match: mode === "server" ? () => true : (item, field) => {
|
|
190
|
+
return !!checkedValues[this.grid.getDataItemValueForColumn(item, col)];
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
filterObject._checkedValues = checkedValues;
|
|
194
|
+
this.grid.addFilter(filterObject, true);
|
|
195
|
+
}
|
|
196
|
+
this.grid.refreshFilters();
|
|
197
|
+
dlgObj.close();
|
|
198
|
+
});
|
|
199
|
+
const dlgCancelButton = dlg.querySelector(".dlg-footer .close-button");
|
|
200
|
+
dlgCancelButton.addEventListener("click", (evt) => {
|
|
201
|
+
dlgObj.close();
|
|
273
202
|
});
|
|
274
|
-
|
|
203
|
+
const dlgClearButton = dlg.querySelector(".dlg-footer .clear-button");
|
|
204
|
+
if (dlgClearButton != null) {
|
|
205
|
+
dlgClearButton.addEventListener("click", (evt) => {
|
|
206
|
+
this.grid.clearFilter(col.id);
|
|
207
|
+
dlgObj.close();
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
275
211
|
// private updateStateOfAllCheckebox(dlgBody: HTMLElement, id: string) {
|
|
276
212
|
// let counter = 0;
|
|
277
213
|
// let el: HTMLInputElement;
|
|
@@ -295,13 +231,13 @@ var ExcelFilter = /** @class */ (function () {
|
|
|
295
231
|
// }
|
|
296
232
|
// }
|
|
297
233
|
// }
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
for (
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
234
|
+
getDistinctValues(col) {
|
|
235
|
+
const textToValues = {};
|
|
236
|
+
for (let idx = 0, len = this.grid.getDataLength(); idx < len; idx++) {
|
|
237
|
+
const item = this.grid.getDataItem(idx);
|
|
238
|
+
const value = this.grid.getDataItemValueForColumn(item, col);
|
|
239
|
+
const text = this.grid.getFormattedValue(col, value, item);
|
|
240
|
+
let valueList = textToValues[text];
|
|
305
241
|
if (valueList == null) {
|
|
306
242
|
valueList = textToValues[text] = [];
|
|
307
243
|
}
|
|
@@ -310,7 +246,5 @@ var ExcelFilter = /** @class */ (function () {
|
|
|
310
246
|
}
|
|
311
247
|
}
|
|
312
248
|
return textToValues;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
}());
|
|
316
|
-
export { ExcelFilter };
|
|
249
|
+
}
|
|
250
|
+
}
|
|
@@ -3,8 +3,8 @@ import { jQueryReplacement } from "../../core/jq";
|
|
|
3
3
|
import { Slick } from "../slick.core";
|
|
4
4
|
import { Moveable } from "../../interaction/moveable";
|
|
5
5
|
import { EventHandler } from "../../interaction/eventhandler";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const selectinOverlayWidth = 1;
|
|
7
|
+
let $ = jQueryReplacement;
|
|
8
8
|
// register namespace
|
|
9
9
|
$.deepExtend(window, {
|
|
10
10
|
"Ext": {
|
|
@@ -140,7 +140,7 @@ export function Overlays(options) {
|
|
|
140
140
|
if (grid.canCellBeSelected(cell.row, cell.cell)) {
|
|
141
141
|
handleDragging = true;
|
|
142
142
|
}
|
|
143
|
-
|
|
143
|
+
const column = grid.getColumns()[cell.cell];
|
|
144
144
|
if (column.editor == null || column.readonly || !grid.getOptions().editable) {
|
|
145
145
|
handleDragging = false;
|
|
146
146
|
}
|
|
@@ -196,22 +196,22 @@ export function Overlays(options) {
|
|
|
196
196
|
this.handle = document.createElement("div");
|
|
197
197
|
this.handle.classList.add("handle-overlay");
|
|
198
198
|
target.appendChild(this.handle);
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
for (
|
|
199
|
+
const gridContainer = target.closest(".slickgrid");
|
|
200
|
+
const viewports = gridContainer.querySelectorAll(".grid-canvas");
|
|
201
|
+
for (let idx = 0; idx < viewports.length; idx++) {
|
|
202
202
|
console.log(idx);
|
|
203
203
|
Moveable(viewports[idx], {
|
|
204
204
|
selector: ".handle-overlay",
|
|
205
205
|
direction: "y",
|
|
206
206
|
gridY: grid.getOptions().rowHeight,
|
|
207
207
|
containInParent: false,
|
|
208
|
-
onStart: EventHandler.Create(
|
|
208
|
+
onStart: EventHandler.Create((e) => {
|
|
209
209
|
handleOverlayDragStart(e);
|
|
210
210
|
}),
|
|
211
|
-
onMove: EventHandler.Create(
|
|
211
|
+
onMove: EventHandler.Create((e) => {
|
|
212
212
|
handleOverlayDrag(e);
|
|
213
213
|
}),
|
|
214
|
-
onStop: EventHandler.Create(
|
|
214
|
+
onStop: EventHandler.Create((e) => {
|
|
215
215
|
handleOverlayDragEnd(e);
|
|
216
216
|
})
|
|
217
217
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jQueryReplacement } from '../../core/jq';
|
|
2
2
|
import { Slick } from '../slick.core';
|
|
3
|
-
|
|
3
|
+
let $ = jQueryReplacement;
|
|
4
4
|
// register namespace
|
|
5
5
|
$.deepExtend(Slick, {
|
|
6
6
|
"CellRangeDecorator": CellRangeDecorator
|
|
@@ -39,7 +39,7 @@ export function CellRangeDecorator(grid, options) {
|
|
|
39
39
|
.css("position", "absolute")
|
|
40
40
|
.appendTo(grid.getActiveCanvasNode());
|
|
41
41
|
if (options.selectionCss) {
|
|
42
|
-
for (
|
|
42
|
+
for (let key in options.selectionCss) {
|
|
43
43
|
_elem.css(key, options.selectionCss[key]);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jQueryReplacement } from '../../core/jq';
|
|
2
2
|
import { Slick, Range } from '../slick.core';
|
|
3
3
|
import { CellRangeDecorator } from './slick.cellrangedecorator';
|
|
4
|
-
|
|
4
|
+
let $ = jQueryReplacement;
|
|
5
5
|
// register namespace
|
|
6
6
|
$.deepExtend(window, {
|
|
7
7
|
"Slick": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jQueryReplacement } from '../../core/jq';
|
|
2
2
|
import { Slick, Range } from '../slick.core';
|
|
3
3
|
import { CellRangeSelector } from './slick.cellrangeselector';
|
|
4
|
-
|
|
4
|
+
let $ = jQueryReplacement;
|
|
5
5
|
// register namespace
|
|
6
6
|
$.deepExtend(window, {
|
|
7
7
|
"Slick": {
|
|
@@ -76,7 +76,7 @@ export function CellSelectionModel(options) {
|
|
|
76
76
|
return;
|
|
77
77
|
}
|
|
78
78
|
// if range has not changed, don't fire onSelectedRangesChanged
|
|
79
|
-
|
|
79
|
+
const rangeHasChanged = !rangesAreEqual(_ranges, ranges);
|
|
80
80
|
_ranges = removeInvalidRanges(ranges);
|
|
81
81
|
if (rangeHasChanged) {
|
|
82
82
|
_self.onSelectedRangesChanged.notify(_ranges);
|
|
@@ -95,24 +95,24 @@ export function CellSelectionModel(options) {
|
|
|
95
95
|
_grid.setActiveCell(args.range.fromRow, args.range.fromCell, false, false, true);
|
|
96
96
|
setSelectedRanges([args.range]);
|
|
97
97
|
}
|
|
98
|
-
|
|
98
|
+
let lastActiveCell;
|
|
99
99
|
function handleActiveCellChange(e, args) {
|
|
100
100
|
if (_options.selectActiveCell && args.row != null && args.cell != null) {
|
|
101
|
-
|
|
101
|
+
const metaKey = e.ctrlKey || e.metaKey;
|
|
102
102
|
if (metaKey) {
|
|
103
|
-
|
|
103
|
+
const ranges = getSelectedRanges().slice();
|
|
104
104
|
ranges.push(new Range(args.row, args.cell));
|
|
105
105
|
setSelectedRanges(ranges);
|
|
106
106
|
lastActiveCell = { row: args.row, cell: args.cell };
|
|
107
107
|
}
|
|
108
108
|
else if (e.shiftKey) {
|
|
109
|
-
|
|
109
|
+
const ranges = getSelectedRanges().slice();
|
|
110
110
|
if (ranges.length > 0) {
|
|
111
|
-
|
|
111
|
+
const currentRange = ranges.pop();
|
|
112
112
|
if (lastActiveCell == null) {
|
|
113
113
|
lastActiveCell = { row: currentRange.fromRow, cell: currentRange.fromCell };
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
const newRange = new Range(Math.min(lastActiveCell.row, args.row), Math.min(lastActiveCell.cell, args.cell), Math.max(lastActiveCell.row, args.row), Math.max(lastActiveCell.cell, args.cell));
|
|
116
116
|
ranges.push(newRange);
|
|
117
117
|
}
|
|
118
118
|
else {
|