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.
Files changed (170) hide show
  1. package/lib/components/IntervalComponent.d.ts +17 -17
  2. package/lib/components/IntervalComponent.js +65 -68
  3. package/lib/components/auto-suggest/AutoSuggestComponent.d.ts +22 -22
  4. package/lib/components/auto-suggest/AutoSuggestComponent.js +47 -49
  5. package/lib/components/button/ButtonComponent.d.ts +18 -18
  6. package/lib/components/button/ButtonComponent.js +29 -46
  7. package/lib/components/checkbox/CheckBoxComponent.d.ts +28 -28
  8. package/lib/components/checkbox/CheckBoxComponent.js +81 -98
  9. package/lib/components/date/DateComponent.d.ts +32 -32
  10. package/lib/components/date/DateComponent.js +89 -106
  11. package/lib/components/date-range/DateRangeComponent.d.ts +35 -35
  12. package/lib/components/date-range/DateRangeComponent.js +123 -136
  13. package/lib/components/date-time/DateTimeComponent.d.ts +15 -15
  14. package/lib/components/date-time/DateTimeComponent.js +39 -53
  15. package/lib/components/dialog/DialogComponent.d.ts +67 -67
  16. package/lib/components/dialog/DialogComponent.js +198 -251
  17. package/lib/components/drop-down/DropDownComponent.d.ts +27 -27
  18. package/lib/components/drop-down/DropDownComponent.js +60 -74
  19. package/lib/components/expander/ExpanderComponent.d.ts +27 -27
  20. package/lib/components/expander/ExpanderComponent.js +89 -90
  21. package/lib/components/form-field/FormComponent.d.ts +12 -12
  22. package/lib/components/form-field/FormComponent.js +23 -26
  23. package/lib/components/form-field/FormFieldComponent.d.ts +39 -39
  24. package/lib/components/form-field/FormFieldComponent.js +138 -140
  25. package/lib/components/grid/GridComponent.d.ts +26 -26
  26. package/lib/components/grid/GridComponent.js +110 -116
  27. package/lib/components/input/InputComponent.d.ts +33 -33
  28. package/lib/components/input/InputComponent.js +126 -147
  29. package/lib/components/loading/LoadingComponent.d.ts +8 -8
  30. package/lib/components/loading/LoadingComponent.js +20 -22
  31. package/lib/components/navigation/NavigationComponent.d.ts +34 -34
  32. package/lib/components/navigation/NavigationComponent.js +45 -70
  33. package/lib/components/notification/Notification.d.ts +19 -19
  34. package/lib/components/notification/Notification.js +65 -69
  35. package/lib/components/number/NumberComponent.d.ts +26 -26
  36. package/lib/components/number/NumberComponent.js +80 -98
  37. package/lib/components/overlay/OverlayComponent.d.ts +27 -27
  38. package/lib/components/overlay/OverlayComponent.js +137 -149
  39. package/lib/components/progress/ProgressComponent.d.ts +18 -18
  40. package/lib/components/progress/ProgressComponent.js +40 -42
  41. package/lib/components/ribbon-menu/RibbonMenuComponent.d.ts +12 -12
  42. package/lib/components/ribbon-menu/RibbonMenuComponent.js +23 -34
  43. package/lib/components/select/SelectComponent.d.ts +79 -79
  44. package/lib/components/select/SelectComponent.js +356 -369
  45. package/lib/components/select/SelectDDAreaComponent.d.ts +32 -32
  46. package/lib/components/select/SelectDDAreaComponent.js +303 -317
  47. package/lib/components/slider/nouislider.d.ts +44 -44
  48. package/lib/components/slider/nouislider.js +2158 -2158
  49. package/lib/components/stack-panel/SplitterComponent.d.ts +21 -21
  50. package/lib/components/stack-panel/SplitterComponent.js +124 -126
  51. package/lib/components/stack-panel/StackPanelComponent.d.ts +20 -20
  52. package/lib/components/stack-panel/StackPanelComponent.js +50 -64
  53. package/lib/components/tabs/TabsComponent.d.ts +40 -40
  54. package/lib/components/tabs/TabsComponent.js +200 -204
  55. package/lib/components/time/TimeComponent.d.ts +29 -29
  56. package/lib/components/time/TimeComponent.js +104 -113
  57. package/lib/components/tree-view/TreeViewComponent.d.ts +23 -23
  58. package/lib/components/tree-view/TreeViewComponent.js +43 -45
  59. package/lib/components/virtual-render/VirtualRenderComponent.d.ts +30 -30
  60. package/lib/components/virtual-render/VirtualRenderComponent.js +92 -104
  61. package/lib/core/culture.d.ts +5 -5
  62. package/lib/core/culture.js +385 -385
  63. package/lib/core/date.d.ts +14 -14
  64. package/lib/core/date.js +346 -350
  65. package/lib/core/helper.d.ts +13 -13
  66. package/lib/core/helper.js +100 -104
  67. package/lib/core/jq.d.ts +37 -37
  68. package/lib/core/jq.js +362 -371
  69. package/lib/core/lang.d.ts +24 -24
  70. package/lib/core/lang.js +24 -28
  71. package/lib/core/numeric.d.ts +7 -7
  72. package/lib/core/numeric.js +139 -143
  73. package/lib/core/polyfills.js +22 -22
  74. package/lib/core.d.ts +6 -6
  75. package/lib/core.js +6 -6
  76. package/lib/grid/filterDialogs/dateRangeFilter.d.ts +7 -7
  77. package/lib/grid/filterDialogs/dateRangeFilter.js +106 -156
  78. package/lib/grid/filterDialogs/excelFilter.d.ts +9 -9
  79. package/lib/grid/filterDialogs/excelFilter.js +250 -316
  80. package/lib/grid/plugins/ext.overlay.d.ts +2 -2
  81. package/lib/grid/plugins/ext.overlay.js +295 -295
  82. package/lib/grid/plugins/slick.cellrangedecorator.d.ts +12 -12
  83. package/lib/grid/plugins/slick.cellrangedecorator.js +68 -68
  84. package/lib/grid/plugins/slick.cellrangeselector.d.ts +1 -1
  85. package/lib/grid/plugins/slick.cellrangeselector.js +144 -144
  86. package/lib/grid/plugins/slick.cellselectionmodel.d.ts +1 -1
  87. package/lib/grid/plugins/slick.cellselectionmodel.js +194 -194
  88. package/lib/grid/plugins/slick.headerbuttons.d.ts +55 -55
  89. package/lib/grid/plugins/slick.headerbuttons.js +156 -156
  90. package/lib/grid/plugins/slick.headermenu.d.ts +74 -74
  91. package/lib/grid/plugins/slick.headermenu.js +260 -260
  92. package/lib/grid/plugins/slick.rowmovemanager.d.ts +18 -18
  93. package/lib/grid/plugins/slick.rowmovemanager.js +249 -249
  94. package/lib/grid/plugins/slick.rowselectionmodel.d.ts +1 -1
  95. package/lib/grid/plugins/slick.rowselectionmodel.js +167 -167
  96. package/lib/grid/slick.core.d.ts +91 -91
  97. package/lib/grid/slick.core.js +574 -574
  98. package/lib/grid/slick.creator.d.ts +81 -81
  99. package/lib/grid/slick.creator.js +726 -726
  100. package/lib/grid/slick.dataview.d.ts +71 -71
  101. package/lib/grid/slick.dataview.js +1069 -1080
  102. package/lib/grid/slick.editors.core.d.ts +4 -4
  103. package/lib/grid/slick.editors.core.js +235 -235
  104. package/lib/grid/slick.editors.date.d.ts +2 -2
  105. package/lib/grid/slick.editors.date.js +125 -125
  106. package/lib/grid/slick.editors.lookup.d.ts +14 -14
  107. package/lib/grid/slick.editors.lookup.js +352 -353
  108. package/lib/grid/slick.editors.nav.d.ts +6 -6
  109. package/lib/grid/slick.editors.nav.js +22 -22
  110. package/lib/grid/slick.formatters.d.ts +17 -17
  111. package/lib/grid/slick.formatters.js +144 -144
  112. package/lib/grid/slick.grid.d.ts +285 -285
  113. package/lib/grid/slick.grid.js +5409 -5412
  114. package/lib/grid/slick.groupitemmetadataprovider.d.ts +39 -39
  115. package/lib/grid/slick.groupitemmetadataprovider.js +165 -165
  116. package/lib/grid/slick.tree.d.ts +33 -33
  117. package/lib/grid/slick.tree.js +208 -220
  118. package/lib/grid.css +1 -705
  119. package/lib/grid.d.ts +13 -13
  120. package/lib/grid.js +13 -13
  121. package/lib/index.css +8 -2195
  122. package/lib/index.css.map +1 -1
  123. package/lib/index.d.ts +56 -55
  124. package/lib/index.js +61 -61
  125. package/lib/index.js.map +1 -1
  126. package/lib/interaction/dataconverter.d.ts +4 -4
  127. package/lib/interaction/dataconverter.js +0 -1
  128. package/lib/interaction/eventhandler.d.ts +13 -13
  129. package/lib/interaction/eventhandler.js +39 -42
  130. package/lib/interaction/moveable.d.ts +39 -39
  131. package/lib/interaction/moveable.js +160 -174
  132. package/lib/interaction/resizable.d.ts +37 -37
  133. package/lib/interaction/resizable.js +109 -123
  134. package/lib/ui/auto.suggest.d.ts +18 -18
  135. package/lib/ui/auto.suggest.js +244 -259
  136. package/lib/ui/date.picker/date-picker-options.d.ts +11 -11
  137. package/lib/ui/date.picker/date-picker-options.js +76 -76
  138. package/lib/ui/date.picker/lib/date-manip.d.ts +74 -74
  139. package/lib/ui/date.picker/lib/date-manip.js +120 -120
  140. package/lib/ui/date.picker/lib/dom.d.ts +23 -23
  141. package/lib/ui/date.picker/lib/dom.js +28 -28
  142. package/lib/ui/date.picker/lib/emitter.d.ts +13 -13
  143. package/lib/ui/date.picker/lib/emitter.js +49 -49
  144. package/lib/ui/date.picker/lib/fns.d.ts +23 -23
  145. package/lib/ui/date.picker/lib/fns.js +39 -43
  146. package/lib/ui/date.picker/mode/base-mode.d.ts +26 -26
  147. package/lib/ui/date.picker/mode/base-mode.js +248 -248
  148. package/lib/ui/date.picker/mode/dropdown-mode.d.ts +28 -28
  149. package/lib/ui/date.picker/mode/dropdown-mode.js +50 -50
  150. package/lib/ui/date.picker/mode/index.d.ts +28 -28
  151. package/lib/ui/date.picker/mode/index.js +18 -18
  152. package/lib/ui/date.picker/mode/modal-mode.d.ts +25 -25
  153. package/lib/ui/date.picker/mode/modal-mode.js +17 -17
  154. package/lib/ui/date.picker/mode/permanent-mode.d.ts +29 -29
  155. package/lib/ui/date.picker/mode/permanent-mode.js +19 -19
  156. package/lib/ui/date.picker/views/day-picker.d.ts +40 -40
  157. package/lib/ui/date.picker/views/day-picker.js +155 -155
  158. package/lib/ui/date.picker/views/month-picker.d.ts +26 -26
  159. package/lib/ui/date.picker/views/month-picker.js +65 -65
  160. package/lib/ui/date.picker/views/year-picker.d.ts +20 -20
  161. package/lib/ui/date.picker/views/year-picker.js +66 -66
  162. package/lib/ui/date.picker.d.ts +66 -66
  163. package/lib/ui/date.picker.js +32 -32
  164. package/lib/ui/dialog.d.ts +22 -22
  165. package/lib/ui/dialog.js +98 -113
  166. package/lib/ui/drop.down.d.ts +52 -52
  167. package/lib/ui/drop.down.js +2112 -2112
  168. package/lib/ui/number.input.d.ts +13 -13
  169. package/lib/ui/number.input.js +56 -67
  170. 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
- var $ = 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
- var 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
- var lastActiveCell;
99
- function handleActiveCellChange(e, args) {
100
- if (_options.selectActiveCell && args.row != null && args.cell != null) {
101
- var metaKey = e.ctrlKey || e.metaKey;
102
- if (metaKey) {
103
- var 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
- var ranges = getSelectedRanges().slice();
110
- if (ranges.length > 0) {
111
- var currentRange = ranges.pop();
112
- if (lastActiveCell == null) {
113
- lastActiveCell = { row: currentRange.fromRow, cell: currentRange.fromCell };
114
- }
115
- var 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
+ 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;