jsl-ui 9.28.2 → 9.28.3
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.d.ts +17 -17
- package/lib/components/IntervalComponent.js +65 -68
- package/lib/components/auto-suggest/AutoSuggestComponent.d.ts +22 -22
- package/lib/components/auto-suggest/AutoSuggestComponent.js +47 -49
- package/lib/components/button/ButtonComponent.d.ts +18 -18
- package/lib/components/button/ButtonComponent.js +29 -46
- package/lib/components/checkbox/CheckBoxComponent.d.ts +28 -28
- package/lib/components/checkbox/CheckBoxComponent.js +81 -98
- package/lib/components/date/DateComponent.d.ts +32 -32
- package/lib/components/date/DateComponent.js +89 -106
- package/lib/components/date-range/DateRangeComponent.d.ts +35 -35
- package/lib/components/date-range/DateRangeComponent.js +123 -136
- package/lib/components/date-time/DateTimeComponent.d.ts +15 -15
- package/lib/components/date-time/DateTimeComponent.js +39 -53
- package/lib/components/dialog/DialogComponent.d.ts +67 -67
- package/lib/components/dialog/DialogComponent.js +198 -251
- package/lib/components/drop-down/DropDownComponent.d.ts +27 -27
- package/lib/components/drop-down/DropDownComponent.js +60 -74
- package/lib/components/expander/ExpanderComponent.d.ts +27 -27
- package/lib/components/expander/ExpanderComponent.js +89 -90
- package/lib/components/form-field/FormComponent.d.ts +12 -12
- package/lib/components/form-field/FormComponent.js +23 -26
- package/lib/components/form-field/FormFieldComponent.d.ts +39 -39
- package/lib/components/form-field/FormFieldComponent.js +138 -140
- package/lib/components/grid/GridComponent.d.ts +26 -26
- package/lib/components/grid/GridComponent.js +110 -116
- package/lib/components/input/InputComponent.d.ts +33 -33
- package/lib/components/input/InputComponent.js +126 -147
- package/lib/components/loading/LoadingComponent.d.ts +8 -8
- package/lib/components/loading/LoadingComponent.js +20 -22
- package/lib/components/navigation/NavigationComponent.d.ts +34 -34
- package/lib/components/navigation/NavigationComponent.js +45 -70
- package/lib/components/notification/Notification.d.ts +19 -19
- package/lib/components/notification/Notification.js +65 -69
- package/lib/components/number/NumberComponent.d.ts +26 -26
- package/lib/components/number/NumberComponent.js +80 -98
- package/lib/components/overlay/OverlayComponent.d.ts +27 -27
- package/lib/components/overlay/OverlayComponent.js +137 -149
- package/lib/components/progress/ProgressComponent.d.ts +18 -18
- package/lib/components/progress/ProgressComponent.js +40 -42
- package/lib/components/ribbon-menu/RibbonMenuComponent.d.ts +12 -12
- package/lib/components/ribbon-menu/RibbonMenuComponent.js +23 -34
- package/lib/components/select/SelectComponent.d.ts +79 -79
- package/lib/components/select/SelectComponent.js +356 -369
- package/lib/components/select/SelectDDAreaComponent.d.ts +32 -32
- package/lib/components/select/SelectDDAreaComponent.js +303 -317
- package/lib/components/slider/nouislider.d.ts +44 -44
- package/lib/components/slider/nouislider.js +2158 -2158
- package/lib/components/stack-panel/SplitterComponent.d.ts +21 -21
- package/lib/components/stack-panel/SplitterComponent.js +124 -126
- package/lib/components/stack-panel/StackPanelComponent.d.ts +20 -20
- package/lib/components/stack-panel/StackPanelComponent.js +50 -64
- package/lib/components/tabs/TabsComponent.d.ts +40 -40
- package/lib/components/tabs/TabsComponent.js +200 -204
- package/lib/components/time/TimeComponent.d.ts +29 -29
- package/lib/components/time/TimeComponent.js +104 -113
- package/lib/components/tree-view/TreeViewComponent.d.ts +23 -23
- package/lib/components/tree-view/TreeViewComponent.js +43 -45
- package/lib/components/virtual-render/VirtualRenderComponent.d.ts +30 -30
- package/lib/components/virtual-render/VirtualRenderComponent.js +92 -104
- package/lib/core/culture.d.ts +5 -5
- package/lib/core/culture.js +385 -385
- package/lib/core/date.d.ts +14 -14
- package/lib/core/date.js +346 -350
- package/lib/core/helper.d.ts +13 -13
- package/lib/core/helper.js +100 -104
- package/lib/core/jq.d.ts +37 -37
- package/lib/core/jq.js +362 -371
- package/lib/core/lang.d.ts +24 -24
- package/lib/core/lang.js +24 -28
- package/lib/core/numeric.d.ts +7 -7
- package/lib/core/numeric.js +139 -143
- package/lib/core/polyfills.js +22 -22
- package/lib/core.d.ts +6 -6
- package/lib/core.js +6 -6
- package/lib/grid/filterDialogs/dateRangeFilter.d.ts +7 -7
- package/lib/grid/filterDialogs/dateRangeFilter.js +106 -156
- package/lib/grid/filterDialogs/excelFilter.d.ts +9 -9
- package/lib/grid/filterDialogs/excelFilter.js +250 -316
- package/lib/grid/plugins/ext.overlay.d.ts +2 -2
- package/lib/grid/plugins/ext.overlay.js +295 -295
- package/lib/grid/plugins/slick.cellrangedecorator.d.ts +12 -12
- package/lib/grid/plugins/slick.cellrangedecorator.js +68 -68
- package/lib/grid/plugins/slick.cellrangeselector.d.ts +1 -1
- package/lib/grid/plugins/slick.cellrangeselector.js +144 -144
- package/lib/grid/plugins/slick.cellselectionmodel.d.ts +1 -1
- package/lib/grid/plugins/slick.cellselectionmodel.js +194 -194
- package/lib/grid/plugins/slick.headerbuttons.d.ts +55 -55
- package/lib/grid/plugins/slick.headerbuttons.js +156 -156
- package/lib/grid/plugins/slick.headermenu.d.ts +74 -74
- package/lib/grid/plugins/slick.headermenu.js +260 -260
- package/lib/grid/plugins/slick.rowmovemanager.d.ts +18 -18
- package/lib/grid/plugins/slick.rowmovemanager.js +249 -249
- package/lib/grid/plugins/slick.rowselectionmodel.d.ts +1 -1
- package/lib/grid/plugins/slick.rowselectionmodel.js +167 -167
- package/lib/grid/slick.core.d.ts +91 -91
- package/lib/grid/slick.core.js +574 -574
- package/lib/grid/slick.creator.d.ts +81 -81
- package/lib/grid/slick.creator.js +726 -726
- package/lib/grid/slick.dataview.d.ts +71 -71
- package/lib/grid/slick.dataview.js +1069 -1080
- package/lib/grid/slick.editors.core.d.ts +4 -4
- package/lib/grid/slick.editors.core.js +235 -235
- package/lib/grid/slick.editors.date.d.ts +2 -2
- package/lib/grid/slick.editors.date.js +125 -125
- package/lib/grid/slick.editors.lookup.d.ts +14 -14
- package/lib/grid/slick.editors.lookup.js +352 -353
- package/lib/grid/slick.editors.nav.d.ts +6 -6
- package/lib/grid/slick.editors.nav.js +22 -22
- package/lib/grid/slick.formatters.d.ts +17 -17
- package/lib/grid/slick.formatters.js +144 -144
- package/lib/grid/slick.grid.d.ts +285 -285
- package/lib/grid/slick.grid.js +5409 -5412
- package/lib/grid/slick.groupitemmetadataprovider.d.ts +39 -39
- package/lib/grid/slick.groupitemmetadataprovider.js +165 -165
- package/lib/grid/slick.tree.d.ts +33 -33
- package/lib/grid/slick.tree.js +208 -220
- package/lib/grid.css +1 -705
- package/lib/grid.d.ts +13 -13
- package/lib/grid.js +13 -13
- package/lib/index.css +8 -2195
- package/lib/index.css.map +1 -1
- package/lib/index.d.ts +56 -55
- package/lib/index.js +61 -61
- package/lib/index.js.map +1 -1
- package/lib/interaction/dataconverter.d.ts +4 -4
- package/lib/interaction/dataconverter.js +0 -1
- package/lib/interaction/eventhandler.d.ts +13 -13
- package/lib/interaction/eventhandler.js +39 -42
- package/lib/interaction/moveable.d.ts +39 -39
- package/lib/interaction/moveable.js +160 -174
- package/lib/interaction/resizable.d.ts +37 -37
- package/lib/interaction/resizable.js +109 -123
- package/lib/ui/auto.suggest.d.ts +18 -18
- package/lib/ui/auto.suggest.js +244 -259
- package/lib/ui/date.picker/date-picker-options.d.ts +11 -11
- package/lib/ui/date.picker/date-picker-options.js +76 -76
- package/lib/ui/date.picker/lib/date-manip.d.ts +74 -74
- package/lib/ui/date.picker/lib/date-manip.js +120 -120
- package/lib/ui/date.picker/lib/dom.d.ts +23 -23
- package/lib/ui/date.picker/lib/dom.js +28 -28
- package/lib/ui/date.picker/lib/emitter.d.ts +13 -13
- package/lib/ui/date.picker/lib/emitter.js +49 -49
- package/lib/ui/date.picker/lib/fns.d.ts +23 -23
- package/lib/ui/date.picker/lib/fns.js +39 -43
- package/lib/ui/date.picker/mode/base-mode.d.ts +26 -26
- package/lib/ui/date.picker/mode/base-mode.js +248 -248
- package/lib/ui/date.picker/mode/dropdown-mode.d.ts +28 -28
- package/lib/ui/date.picker/mode/dropdown-mode.js +50 -50
- package/lib/ui/date.picker/mode/index.d.ts +28 -28
- package/lib/ui/date.picker/mode/index.js +18 -18
- package/lib/ui/date.picker/mode/modal-mode.d.ts +25 -25
- package/lib/ui/date.picker/mode/modal-mode.js +17 -17
- package/lib/ui/date.picker/mode/permanent-mode.d.ts +29 -29
- package/lib/ui/date.picker/mode/permanent-mode.js +19 -19
- package/lib/ui/date.picker/views/day-picker.d.ts +40 -40
- package/lib/ui/date.picker/views/day-picker.js +155 -155
- package/lib/ui/date.picker/views/month-picker.d.ts +26 -26
- package/lib/ui/date.picker/views/month-picker.js +65 -65
- package/lib/ui/date.picker/views/year-picker.d.ts +20 -20
- package/lib/ui/date.picker/views/year-picker.js +66 -66
- package/lib/ui/date.picker.d.ts +66 -66
- package/lib/ui/date.picker.js +32 -32
- package/lib/ui/dialog.d.ts +22 -22
- package/lib/ui/dialog.js +98 -113
- package/lib/ui/drop.down.d.ts +52 -52
- package/lib/ui/drop.down.js +2112 -2112
- package/lib/ui/number.input.d.ts +13 -13
- package/lib/ui/number.input.js +56 -67
- package/package.json +1 -1
|
@@ -1,194 +1,194 @@
|
|
|
1
|
-
import { jQueryReplacement } from '../../core/jq';
|
|
2
|
-
import { Slick, Range } from '../slick.core';
|
|
3
|
-
import { CellRangeSelector } from './slick.cellrangeselector';
|
|
4
|
-
|
|
5
|
-
// register namespace
|
|
6
|
-
$.deepExtend(window, {
|
|
7
|
-
"Slick": {
|
|
8
|
-
"CellSelectionModel": CellSelectionModel
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
export function CellSelectionModel(options) {
|
|
12
|
-
var _grid;
|
|
13
|
-
var _canvas;
|
|
14
|
-
var _ranges = [];
|
|
15
|
-
var _self = this;
|
|
16
|
-
var _selector;
|
|
17
|
-
if (typeof options === "undefined" || typeof options.cellRangeSelector === "undefined") {
|
|
18
|
-
_selector = new CellRangeSelector({
|
|
19
|
-
"selectionCss": {
|
|
20
|
-
"border": "2px solid black"
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
_selector = options.cellRangeSelector;
|
|
26
|
-
}
|
|
27
|
-
var _options;
|
|
28
|
-
var _defaults = {
|
|
29
|
-
selectActiveCell: true
|
|
30
|
-
};
|
|
31
|
-
function init(grid) {
|
|
32
|
-
_options = $.deepExtend({}, _defaults, options);
|
|
33
|
-
_grid = grid;
|
|
34
|
-
_canvas = _grid.getCanvasNode();
|
|
35
|
-
_grid.onActiveCellChanged.subscribe(handleActiveCellChange);
|
|
36
|
-
_grid.onKeyDown.subscribe(handleKeyDown);
|
|
37
|
-
grid.registerPlugin(_selector);
|
|
38
|
-
_selector.onCellRangeSelected.subscribe(handleCellRangeSelected);
|
|
39
|
-
_selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected);
|
|
40
|
-
}
|
|
41
|
-
function destroy() {
|
|
42
|
-
_grid.onActiveCellChanged.unsubscribe(handleActiveCellChange);
|
|
43
|
-
_grid.onKeyDown.unsubscribe(handleKeyDown);
|
|
44
|
-
_selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected);
|
|
45
|
-
_selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected);
|
|
46
|
-
_grid.unregisterPlugin(_selector);
|
|
47
|
-
}
|
|
48
|
-
function removeInvalidRanges(ranges) {
|
|
49
|
-
var result = [];
|
|
50
|
-
for (var i = 0; i < ranges.length; i++) {
|
|
51
|
-
var r = ranges[i];
|
|
52
|
-
if (_grid.canCellBeSelected(r.fromRow, r.fromCell) && _grid.canCellBeSelected(r.toRow, r.toCell)) {
|
|
53
|
-
result.push(r);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return result;
|
|
57
|
-
}
|
|
58
|
-
function rangesAreEqual(range1, range2) {
|
|
59
|
-
var areDifferent = (range1.length !== range2.length);
|
|
60
|
-
if (!areDifferent) {
|
|
61
|
-
for (var i = 0; i < range1.length; i++) {
|
|
62
|
-
if (range1[i].fromCell !== range2[i].fromCell
|
|
63
|
-
|| range1[i].fromRow !== range2[i].fromRow
|
|
64
|
-
|| range1[i].toCell !== range2[i].toCell
|
|
65
|
-
|| range1[i].toRow !== range2[i].toRow) {
|
|
66
|
-
areDifferent = true;
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return !areDifferent;
|
|
72
|
-
}
|
|
73
|
-
function setSelectedRanges(ranges) {
|
|
74
|
-
// simple check for: empty selection didn't change, prevent firing onSelectedRangesChanged
|
|
75
|
-
if ((!_ranges || _ranges.length === 0) && (!ranges || ranges.length === 0)) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
// if range has not changed, don't fire onSelectedRangesChanged
|
|
79
|
-
|
|
80
|
-
_ranges = removeInvalidRanges(ranges);
|
|
81
|
-
if (rangeHasChanged) {
|
|
82
|
-
_self.onSelectedRangesChanged.notify(_ranges);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
function getSelectedRanges() {
|
|
86
|
-
return _ranges;
|
|
87
|
-
}
|
|
88
|
-
function handleBeforeCellRangeSelected(e, args) {
|
|
89
|
-
if (_grid.getEditorLock().isActive()) {
|
|
90
|
-
e.stopPropagation();
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function handleCellRangeSelected(e, args) {
|
|
95
|
-
_grid.setActiveCell(args.range.fromRow, args.range.fromCell, false, false, true);
|
|
96
|
-
setSelectedRanges([args.range]);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function handleActiveCellChange(e, args) {
|
|
100
|
-
if (_options.selectActiveCell && args.row != null && args.cell != null) {
|
|
101
|
-
|
|
102
|
-
if (metaKey) {
|
|
103
|
-
|
|
104
|
-
ranges.push(new Range(args.row, args.cell));
|
|
105
|
-
setSelectedRanges(ranges);
|
|
106
|
-
lastActiveCell = { row: args.row, cell: args.cell };
|
|
107
|
-
}
|
|
108
|
-
else if (e.shiftKey) {
|
|
109
|
-
|
|
110
|
-
if (ranges.length > 0) {
|
|
111
|
-
|
|
112
|
-
if (lastActiveCell == null) {
|
|
113
|
-
lastActiveCell = { row: currentRange.fromRow, cell: currentRange.fromCell };
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
ranges.push(newRange);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
ranges.push(new Range(args.row, args.cell));
|
|
120
|
-
lastActiveCell = { row: args.row, cell: args.cell };
|
|
121
|
-
}
|
|
122
|
-
setSelectedRanges(ranges);
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
setSelectedRanges([new Range(args.row, args.cell)]);
|
|
126
|
-
lastActiveCell = { row: args.row, cell: args.cell };
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else if (!_options.selectActiveCell) {
|
|
130
|
-
// clear the previous selection once the cell changes
|
|
131
|
-
setSelectedRanges([]);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
function handleKeyDown(e) {
|
|
135
|
-
/***
|
|
136
|
-
* Кey codes
|
|
137
|
-
* 37 left
|
|
138
|
-
* 38 up
|
|
139
|
-
* 39 right
|
|
140
|
-
* 40 down
|
|
141
|
-
*/
|
|
142
|
-
var ranges, last;
|
|
143
|
-
var active = _grid.getActiveCell();
|
|
144
|
-
var metaKey = e.ctrlKey || e.metaKey;
|
|
145
|
-
if (active && e.shiftKey && !metaKey && !e.altKey &&
|
|
146
|
-
(e.which == 37 || e.which == 39 || e.which == 38 || e.which == 40)) {
|
|
147
|
-
ranges = getSelectedRanges().slice();
|
|
148
|
-
if (!ranges.length)
|
|
149
|
-
ranges.push(new Range(active.row, active.cell));
|
|
150
|
-
// keyboard can work with last range only
|
|
151
|
-
last = ranges.pop();
|
|
152
|
-
// can't handle selection out of active cell
|
|
153
|
-
if (!last.contains(active.row, active.cell))
|
|
154
|
-
last = new Range(active.row, active.cell);
|
|
155
|
-
var dRow = last.toRow - last.fromRow, dCell = last.toCell - last.fromCell,
|
|
156
|
-
// walking direction
|
|
157
|
-
dirRow = active.row == last.fromRow ? 1 : -1, dirCell = active.cell == last.fromCell ? 1 : -1;
|
|
158
|
-
if (e.which == 37) {
|
|
159
|
-
dCell -= dirCell;
|
|
160
|
-
}
|
|
161
|
-
else if (e.which == 39) {
|
|
162
|
-
dCell += dirCell;
|
|
163
|
-
}
|
|
164
|
-
else if (e.which == 38) {
|
|
165
|
-
dRow -= dirRow;
|
|
166
|
-
}
|
|
167
|
-
else if (e.which == 40) {
|
|
168
|
-
dRow += dirRow;
|
|
169
|
-
}
|
|
170
|
-
// define new selection range
|
|
171
|
-
var new_last = new Slick.Range(active.row, active.cell, active.row + dirRow * dRow, active.cell + dirCell * dCell);
|
|
172
|
-
if (removeInvalidRanges([new_last]).length) {
|
|
173
|
-
ranges.push(new_last);
|
|
174
|
-
var viewRow = dirRow > 0 ? new_last.toRow : new_last.fromRow;
|
|
175
|
-
var viewCell = dirCell > 0 ? new_last.toCell : new_last.fromCell;
|
|
176
|
-
_grid.scrollRowIntoView(viewRow);
|
|
177
|
-
_grid.scrollCellIntoView(viewRow, viewCell);
|
|
178
|
-
}
|
|
179
|
-
else
|
|
180
|
-
ranges.push(last);
|
|
181
|
-
setSelectedRanges(ranges);
|
|
182
|
-
e.preventDefault();
|
|
183
|
-
e.stopPropagation();
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
$.shallowExtend(this, {
|
|
187
|
-
"getSelectedRanges": getSelectedRanges,
|
|
188
|
-
"setSelectedRanges": setSelectedRanges,
|
|
189
|
-
"init": init,
|
|
190
|
-
"destroy": destroy,
|
|
191
|
-
"pluginName": "CellSelectionModel",
|
|
192
|
-
"onSelectedRangesChanged": new Slick.Event()
|
|
193
|
-
});
|
|
194
|
-
}
|
|
1
|
+
import { jQueryReplacement } from '../../core/jq';
|
|
2
|
+
import { Slick, Range } from '../slick.core';
|
|
3
|
+
import { CellRangeSelector } from './slick.cellrangeselector';
|
|
4
|
+
let $ = jQueryReplacement;
|
|
5
|
+
// register namespace
|
|
6
|
+
$.deepExtend(window, {
|
|
7
|
+
"Slick": {
|
|
8
|
+
"CellSelectionModel": CellSelectionModel
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
export function CellSelectionModel(options) {
|
|
12
|
+
var _grid;
|
|
13
|
+
var _canvas;
|
|
14
|
+
var _ranges = [];
|
|
15
|
+
var _self = this;
|
|
16
|
+
var _selector;
|
|
17
|
+
if (typeof options === "undefined" || typeof options.cellRangeSelector === "undefined") {
|
|
18
|
+
_selector = new CellRangeSelector({
|
|
19
|
+
"selectionCss": {
|
|
20
|
+
"border": "2px solid black"
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
_selector = options.cellRangeSelector;
|
|
26
|
+
}
|
|
27
|
+
var _options;
|
|
28
|
+
var _defaults = {
|
|
29
|
+
selectActiveCell: true
|
|
30
|
+
};
|
|
31
|
+
function init(grid) {
|
|
32
|
+
_options = $.deepExtend({}, _defaults, options);
|
|
33
|
+
_grid = grid;
|
|
34
|
+
_canvas = _grid.getCanvasNode();
|
|
35
|
+
_grid.onActiveCellChanged.subscribe(handleActiveCellChange);
|
|
36
|
+
_grid.onKeyDown.subscribe(handleKeyDown);
|
|
37
|
+
grid.registerPlugin(_selector);
|
|
38
|
+
_selector.onCellRangeSelected.subscribe(handleCellRangeSelected);
|
|
39
|
+
_selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected);
|
|
40
|
+
}
|
|
41
|
+
function destroy() {
|
|
42
|
+
_grid.onActiveCellChanged.unsubscribe(handleActiveCellChange);
|
|
43
|
+
_grid.onKeyDown.unsubscribe(handleKeyDown);
|
|
44
|
+
_selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected);
|
|
45
|
+
_selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected);
|
|
46
|
+
_grid.unregisterPlugin(_selector);
|
|
47
|
+
}
|
|
48
|
+
function removeInvalidRanges(ranges) {
|
|
49
|
+
var result = [];
|
|
50
|
+
for (var i = 0; i < ranges.length; i++) {
|
|
51
|
+
var r = ranges[i];
|
|
52
|
+
if (_grid.canCellBeSelected(r.fromRow, r.fromCell) && _grid.canCellBeSelected(r.toRow, r.toCell)) {
|
|
53
|
+
result.push(r);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return result;
|
|
57
|
+
}
|
|
58
|
+
function rangesAreEqual(range1, range2) {
|
|
59
|
+
var areDifferent = (range1.length !== range2.length);
|
|
60
|
+
if (!areDifferent) {
|
|
61
|
+
for (var i = 0; i < range1.length; i++) {
|
|
62
|
+
if (range1[i].fromCell !== range2[i].fromCell
|
|
63
|
+
|| range1[i].fromRow !== range2[i].fromRow
|
|
64
|
+
|| range1[i].toCell !== range2[i].toCell
|
|
65
|
+
|| range1[i].toRow !== range2[i].toRow) {
|
|
66
|
+
areDifferent = true;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return !areDifferent;
|
|
72
|
+
}
|
|
73
|
+
function setSelectedRanges(ranges) {
|
|
74
|
+
// simple check for: empty selection didn't change, prevent firing onSelectedRangesChanged
|
|
75
|
+
if ((!_ranges || _ranges.length === 0) && (!ranges || ranges.length === 0)) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// if range has not changed, don't fire onSelectedRangesChanged
|
|
79
|
+
const rangeHasChanged = !rangesAreEqual(_ranges, ranges);
|
|
80
|
+
_ranges = removeInvalidRanges(ranges);
|
|
81
|
+
if (rangeHasChanged) {
|
|
82
|
+
_self.onSelectedRangesChanged.notify(_ranges);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function getSelectedRanges() {
|
|
86
|
+
return _ranges;
|
|
87
|
+
}
|
|
88
|
+
function handleBeforeCellRangeSelected(e, args) {
|
|
89
|
+
if (_grid.getEditorLock().isActive()) {
|
|
90
|
+
e.stopPropagation();
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function handleCellRangeSelected(e, args) {
|
|
95
|
+
_grid.setActiveCell(args.range.fromRow, args.range.fromCell, false, false, true);
|
|
96
|
+
setSelectedRanges([args.range]);
|
|
97
|
+
}
|
|
98
|
+
let lastActiveCell;
|
|
99
|
+
function handleActiveCellChange(e, args) {
|
|
100
|
+
if (_options.selectActiveCell && args.row != null && args.cell != null) {
|
|
101
|
+
const metaKey = e.ctrlKey || e.metaKey;
|
|
102
|
+
if (metaKey) {
|
|
103
|
+
const ranges = getSelectedRanges().slice();
|
|
104
|
+
ranges.push(new Range(args.row, args.cell));
|
|
105
|
+
setSelectedRanges(ranges);
|
|
106
|
+
lastActiveCell = { row: args.row, cell: args.cell };
|
|
107
|
+
}
|
|
108
|
+
else if (e.shiftKey) {
|
|
109
|
+
const ranges = getSelectedRanges().slice();
|
|
110
|
+
if (ranges.length > 0) {
|
|
111
|
+
const currentRange = ranges.pop();
|
|
112
|
+
if (lastActiveCell == null) {
|
|
113
|
+
lastActiveCell = { row: currentRange.fromRow, cell: currentRange.fromCell };
|
|
114
|
+
}
|
|
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
|
+
ranges.push(newRange);
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
ranges.push(new Range(args.row, args.cell));
|
|
120
|
+
lastActiveCell = { row: args.row, cell: args.cell };
|
|
121
|
+
}
|
|
122
|
+
setSelectedRanges(ranges);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
setSelectedRanges([new Range(args.row, args.cell)]);
|
|
126
|
+
lastActiveCell = { row: args.row, cell: args.cell };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (!_options.selectActiveCell) {
|
|
130
|
+
// clear the previous selection once the cell changes
|
|
131
|
+
setSelectedRanges([]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function handleKeyDown(e) {
|
|
135
|
+
/***
|
|
136
|
+
* Кey codes
|
|
137
|
+
* 37 left
|
|
138
|
+
* 38 up
|
|
139
|
+
* 39 right
|
|
140
|
+
* 40 down
|
|
141
|
+
*/
|
|
142
|
+
var ranges, last;
|
|
143
|
+
var active = _grid.getActiveCell();
|
|
144
|
+
var metaKey = e.ctrlKey || e.metaKey;
|
|
145
|
+
if (active && e.shiftKey && !metaKey && !e.altKey &&
|
|
146
|
+
(e.which == 37 || e.which == 39 || e.which == 38 || e.which == 40)) {
|
|
147
|
+
ranges = getSelectedRanges().slice();
|
|
148
|
+
if (!ranges.length)
|
|
149
|
+
ranges.push(new Range(active.row, active.cell));
|
|
150
|
+
// keyboard can work with last range only
|
|
151
|
+
last = ranges.pop();
|
|
152
|
+
// can't handle selection out of active cell
|
|
153
|
+
if (!last.contains(active.row, active.cell))
|
|
154
|
+
last = new Range(active.row, active.cell);
|
|
155
|
+
var dRow = last.toRow - last.fromRow, dCell = last.toCell - last.fromCell,
|
|
156
|
+
// walking direction
|
|
157
|
+
dirRow = active.row == last.fromRow ? 1 : -1, dirCell = active.cell == last.fromCell ? 1 : -1;
|
|
158
|
+
if (e.which == 37) {
|
|
159
|
+
dCell -= dirCell;
|
|
160
|
+
}
|
|
161
|
+
else if (e.which == 39) {
|
|
162
|
+
dCell += dirCell;
|
|
163
|
+
}
|
|
164
|
+
else if (e.which == 38) {
|
|
165
|
+
dRow -= dirRow;
|
|
166
|
+
}
|
|
167
|
+
else if (e.which == 40) {
|
|
168
|
+
dRow += dirRow;
|
|
169
|
+
}
|
|
170
|
+
// define new selection range
|
|
171
|
+
var new_last = new Slick.Range(active.row, active.cell, active.row + dirRow * dRow, active.cell + dirCell * dCell);
|
|
172
|
+
if (removeInvalidRanges([new_last]).length) {
|
|
173
|
+
ranges.push(new_last);
|
|
174
|
+
var viewRow = dirRow > 0 ? new_last.toRow : new_last.fromRow;
|
|
175
|
+
var viewCell = dirCell > 0 ? new_last.toCell : new_last.fromCell;
|
|
176
|
+
_grid.scrollRowIntoView(viewRow);
|
|
177
|
+
_grid.scrollCellIntoView(viewRow, viewCell);
|
|
178
|
+
}
|
|
179
|
+
else
|
|
180
|
+
ranges.push(last);
|
|
181
|
+
setSelectedRanges(ranges);
|
|
182
|
+
e.preventDefault();
|
|
183
|
+
e.stopPropagation();
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
$.shallowExtend(this, {
|
|
187
|
+
"getSelectedRanges": getSelectedRanges,
|
|
188
|
+
"setSelectedRanges": setSelectedRanges,
|
|
189
|
+
"init": init,
|
|
190
|
+
"destroy": destroy,
|
|
191
|
+
"pluginName": "CellSelectionModel",
|
|
192
|
+
"onSelectedRangesChanged": new Slick.Event()
|
|
193
|
+
});
|
|
194
|
+
}
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
import "./slick.headerbuttons.css";
|
|
2
|
-
/***
|
|
3
|
-
* A plugin to add custom buttons to column headers.
|
|
4
|
-
*
|
|
5
|
-
* USAGE:
|
|
6
|
-
*
|
|
7
|
-
* Add the plugin .js & .css files and register it with the grid.
|
|
8
|
-
*
|
|
9
|
-
* To specify a custom button in a column header, extend the column definition like so:
|
|
10
|
-
*
|
|
11
|
-
* var columns = [
|
|
12
|
-
* {
|
|
13
|
-
* id: 'myColumn',
|
|
14
|
-
* name: 'My column',
|
|
15
|
-
*
|
|
16
|
-
* // This is the relevant part
|
|
17
|
-
* header: {
|
|
18
|
-
* buttons: [
|
|
19
|
-
* {
|
|
20
|
-
* // button options
|
|
21
|
-
* },
|
|
22
|
-
* {
|
|
23
|
-
* // button options
|
|
24
|
-
* }
|
|
25
|
-
* ]
|
|
26
|
-
* }
|
|
27
|
-
* }
|
|
28
|
-
* ];
|
|
29
|
-
*
|
|
30
|
-
* Available button options:
|
|
31
|
-
* cssClass: CSS class to add to the button.
|
|
32
|
-
* image: Relative button image path.
|
|
33
|
-
* tooltip: Button tooltip.
|
|
34
|
-
* showOnHover: Only show the button on hover.
|
|
35
|
-
* handler: Button click handler.
|
|
36
|
-
* command: A command identifier to be passed to the onCommand event handlers.
|
|
37
|
-
*
|
|
38
|
-
* The plugin exposes the following events:
|
|
39
|
-
* onCommand: Fired on button click for buttons with 'command' specified.
|
|
40
|
-
* Event args:
|
|
41
|
-
* grid: Reference to the grid.
|
|
42
|
-
* column: Column definition.
|
|
43
|
-
* command: Button command identified.
|
|
44
|
-
* button: Button options. Note that you can change the button options in your
|
|
45
|
-
* event handler, and the column header will be automatically updated to
|
|
46
|
-
* reflect them. This is useful if you want to implement something like a
|
|
47
|
-
* toggle button.
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* @param options {Object} Options:
|
|
51
|
-
* buttonCssClass: a CSS class to use for buttons (default 'slick-header-button')
|
|
52
|
-
* @class Slick.Plugins.HeaderButtons
|
|
53
|
-
* @constructor
|
|
54
|
-
*/
|
|
55
|
-
export declare function HeaderButtons(options: any): void;
|
|
1
|
+
import "./slick.headerbuttons.css";
|
|
2
|
+
/***
|
|
3
|
+
* A plugin to add custom buttons to column headers.
|
|
4
|
+
*
|
|
5
|
+
* USAGE:
|
|
6
|
+
*
|
|
7
|
+
* Add the plugin .js & .css files and register it with the grid.
|
|
8
|
+
*
|
|
9
|
+
* To specify a custom button in a column header, extend the column definition like so:
|
|
10
|
+
*
|
|
11
|
+
* var columns = [
|
|
12
|
+
* {
|
|
13
|
+
* id: 'myColumn',
|
|
14
|
+
* name: 'My column',
|
|
15
|
+
*
|
|
16
|
+
* // This is the relevant part
|
|
17
|
+
* header: {
|
|
18
|
+
* buttons: [
|
|
19
|
+
* {
|
|
20
|
+
* // button options
|
|
21
|
+
* },
|
|
22
|
+
* {
|
|
23
|
+
* // button options
|
|
24
|
+
* }
|
|
25
|
+
* ]
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ];
|
|
29
|
+
*
|
|
30
|
+
* Available button options:
|
|
31
|
+
* cssClass: CSS class to add to the button.
|
|
32
|
+
* image: Relative button image path.
|
|
33
|
+
* tooltip: Button tooltip.
|
|
34
|
+
* showOnHover: Only show the button on hover.
|
|
35
|
+
* handler: Button click handler.
|
|
36
|
+
* command: A command identifier to be passed to the onCommand event handlers.
|
|
37
|
+
*
|
|
38
|
+
* The plugin exposes the following events:
|
|
39
|
+
* onCommand: Fired on button click for buttons with 'command' specified.
|
|
40
|
+
* Event args:
|
|
41
|
+
* grid: Reference to the grid.
|
|
42
|
+
* column: Column definition.
|
|
43
|
+
* command: Button command identified.
|
|
44
|
+
* button: Button options. Note that you can change the button options in your
|
|
45
|
+
* event handler, and the column header will be automatically updated to
|
|
46
|
+
* reflect them. This is useful if you want to implement something like a
|
|
47
|
+
* toggle button.
|
|
48
|
+
*
|
|
49
|
+
*
|
|
50
|
+
* @param options {Object} Options:
|
|
51
|
+
* buttonCssClass: a CSS class to use for buttons (default 'slick-header-button')
|
|
52
|
+
* @class Slick.Plugins.HeaderButtons
|
|
53
|
+
* @constructor
|
|
54
|
+
*/
|
|
55
|
+
export declare function HeaderButtons(options: any): void;
|