handsontable 0.0.0-next-06a64be-20230621 → 0.0.0-next-be250b6-20230621
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.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +61 -12
- package/3rdparty/walkontable/src/cell/coords.mjs +61 -12
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +44 -7
- package/3rdparty/walkontable/src/cell/range.mjs +44 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +7 -7
- package/3rdparty/walkontable/src/event.mjs +7 -7
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +1 -1
- package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
- package/3rdparty/walkontable/src/overlay/top.js +2 -4
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -4
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
- package/3rdparty/walkontable/src/selection/constants.js +63 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +30 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +329 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +323 -0
- package/3rdparty/walkontable/src/selection/scanner.js +364 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +360 -0
- package/3rdparty/walkontable/src/selection/selection.js +133 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +7 -79
- package/3rdparty/walkontable/src/table.mjs +8 -80
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/core.d.ts +5 -3
- package/core.js +127 -309
- package/core.mjs +127 -309
- package/dataMap/metaManager/metaSchema.js +19 -0
- package/dataMap/metaManager/metaSchema.mjs +19 -0
- package/dist/handsontable.css +8 -3
- package/dist/handsontable.full.css +8 -3
- package/dist/handsontable.full.js +11930 -9113
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +107 -107
- package/dist/handsontable.js +15163 -12346
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +4 -4
- package/editorManager.js +21 -94
- package/editorManager.mjs +26 -98
- package/editors/textEditor/textEditor.js +3 -11
- package/editors/textEditor/textEditor.mjs +4 -12
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/package.json +1 -1
- package/pluginHooks.d.ts +5 -1
- package/pluginHooks.js +89 -1
- package/pluginHooks.mjs +89 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +81 -24
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +81 -24
- package/plugins/columnSorting/columnSorting.js +50 -8
- package/plugins/columnSorting/columnSorting.mjs +49 -9
- package/plugins/columnSorting/index.js +4 -2
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/copyPaste/copyPaste.js +5 -1
- package/plugins/copyPaste/copyPaste.mjs +5 -1
- package/plugins/customBorders/customBorders.js +18 -53
- package/plugins/customBorders/customBorders.mjs +19 -54
- package/plugins/mergeCells/mergeCells.js +5 -18
- package/plugins/mergeCells/mergeCells.mjs +5 -18
- package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
- package/plugins/nestedHeaders/nestedHeaders.js +132 -10
- package/plugins/nestedHeaders/nestedHeaders.mjs +132 -10
- package/plugins/nestedHeaders/stateManager/index.js +37 -0
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedRows/nestedRows.js +52 -7
- package/plugins/nestedRows/nestedRows.mjs +52 -7
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +312 -89
- package/selection/highlight/highlight.mjs +302 -85
- package/selection/highlight/types/activeHeader.js +10 -9
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +12 -27
- package/selection/highlight/types/area.mjs +16 -30
- package/selection/highlight/types/areaLayered.js +54 -0
- package/selection/highlight/types/areaLayered.mjs +49 -0
- package/selection/highlight/types/column.js +50 -0
- package/selection/highlight/types/column.mjs +45 -0
- package/selection/highlight/types/customSelection.js +7 -10
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -8
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -8
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +10 -20
- package/selection/highlight/types/header.mjs +10 -19
- package/selection/highlight/types/{index.js → row.js} +27 -31
- package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +1 -1
- package/selection/mouseEventHandler.mjs +1 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +315 -181
- package/selection/selection.mjs +310 -180
- package/selection/transformation.js +233 -96
- package/selection/transformation.mjs +230 -93
- package/selection/utils.js +12 -36
- package/selection/utils.mjs +13 -36
- package/settings.d.ts +1 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +29 -0
- package/shortcutContexts/commands/editor/open.mjs +24 -0
- package/shortcutContexts/commands/emptySelectedCells.js +12 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
- package/shortcutContexts/commands/index.js +53 -0
- package/shortcutContexts/commands/index.mjs +49 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +19 -0
- package/shortcutContexts/constants.mjs +12 -0
- package/shortcutContexts/editor.js +29 -0
- package/shortcutContexts/editor.mjs +25 -0
- package/shortcutContexts/grid.js +252 -0
- package/shortcutContexts/grid.mjs +248 -0
- package/shortcutContexts/index.js +29 -0
- package/shortcutContexts/index.mjs +15 -0
- package/shortcuts/manager.js +2 -0
- package/shortcuts/manager.mjs +2 -0
- package/tableView.js +58 -9
- package/tableView.mjs +58 -9
- package/translations/indexMapper.js +8 -9
- package/translations/indexMapper.mjs +8 -9
- package/3rdparty/walkontable/src/selection.js +0 -355
- package/3rdparty/walkontable/src/selection.mjs +0 -349
- package/selection/highlight/constants.js +0 -16
- package/selection/highlight/constants.mjs +0 -6
@@ -236,9 +236,6 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
236
236
|
this.addHook('afterDrawSelection', function () {
|
237
237
|
return _this2.onAfterDrawSelection.apply(_this2, arguments);
|
238
238
|
});
|
239
|
-
this.addHook('beforeRemoveCellClassNames', function () {
|
240
|
-
return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
|
241
|
-
});
|
242
239
|
this.addHook('beforeUndoStackChange', function (action, source) {
|
243
240
|
if (source === 'MergeCells') {
|
244
241
|
return false;
|
@@ -655,8 +652,11 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
655
652
|
gridContext.addShortcut({
|
656
653
|
keys: [['Control', 'm']],
|
657
654
|
callback: function callback() {
|
658
|
-
_this7.
|
659
|
-
|
655
|
+
var range = _this7.hot.getSelectedRangeLast();
|
656
|
+
if (range && !range.isSingleHeader()) {
|
657
|
+
_this7.toggleMerge(range);
|
658
|
+
_this7.hot.render();
|
659
|
+
}
|
660
660
|
},
|
661
661
|
runOnlyIf: function runOnlyIf(event) {
|
662
662
|
return !event.altKey;
|
@@ -1333,19 +1333,6 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
1333
1333
|
}
|
1334
1334
|
return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
|
1335
1335
|
}
|
1336
|
-
|
1337
|
-
/**
|
1338
|
-
* `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
|
1339
|
-
*
|
1340
|
-
* @private
|
1341
|
-
* @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
|
1342
|
-
* all the cells in the table.
|
1343
|
-
*/
|
1344
|
-
}, {
|
1345
|
-
key: "onBeforeRemoveCellClassNames",
|
1346
|
-
value: function onBeforeRemoveCellClassNames() {
|
1347
|
-
return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
|
1348
|
-
}
|
1349
1336
|
}], [{
|
1350
1337
|
key: "PLUGIN_KEY",
|
1351
1338
|
get: function get() {
|
@@ -16,8 +16,8 @@ require("core-js/modules/es.string.iterator.js");
|
|
16
16
|
require("core-js/modules/web.dom-collections.iterator.js");
|
17
17
|
exports.__esModule = true;
|
18
18
|
exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.MultiColumnSorting = void 0;
|
19
|
-
require("core-js/modules/es.array.concat.js");
|
20
19
|
require("core-js/modules/es.array.sort.js");
|
20
|
+
require("core-js/modules/es.array.concat.js");
|
21
21
|
require("core-js/modules/es.object.set-prototype-of.js");
|
22
22
|
require("core-js/modules/es.object.get-prototype-of.js");
|
23
23
|
var _columnSorting = require("../columnSorting");
|
@@ -45,8 +45,8 @@ var PLUGIN_KEY = 'multiColumnSorting';
|
|
45
45
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
46
46
|
var PLUGIN_PRIORITY = 170;
|
47
47
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
48
|
-
var APPEND_COLUMN_CONFIG_STRATEGY = 'append';
|
49
48
|
var CONFLICTED_PLUGIN_KEY = 'columnSorting';
|
49
|
+
var SHORTCUTS_GROUP = PLUGIN_KEY;
|
50
50
|
(0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
|
51
51
|
|
52
52
|
/**
|
@@ -151,6 +151,45 @@ var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
|
|
151
151
|
_get(_getPrototypeOf(MultiColumnSorting.prototype), "disablePlugin", this).call(this);
|
152
152
|
}
|
153
153
|
|
154
|
+
/**
|
155
|
+
* Register shortcuts responsible for toggling column sorting functionality.
|
156
|
+
*
|
157
|
+
* @private
|
158
|
+
*/
|
159
|
+
}, {
|
160
|
+
key: "registerShortcuts",
|
161
|
+
value: function registerShortcuts() {
|
162
|
+
var _this2 = this;
|
163
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "registerShortcuts", this).call(this);
|
164
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
165
|
+
keys: [['Control/Meta', 'Enter']],
|
166
|
+
callback: function callback() {
|
167
|
+
var _this2$hot$getSelecte = _this2.hot.getSelectedRangeLast(),
|
168
|
+
highlight = _this2$hot$getSelecte.highlight;
|
169
|
+
if (highlight.row === -1 && highlight.col >= 0) {
|
170
|
+
_this2.sort(_this2.getNextSortConfig(highlight.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
|
171
|
+
}
|
172
|
+
},
|
173
|
+
runOnlyIf: function runOnlyIf() {
|
174
|
+
var _this2$hot$getSelecte2;
|
175
|
+
return (_this2$hot$getSelecte2 = _this2.hot.getSelectedRangeLast()) === null || _this2$hot$getSelecte2 === void 0 ? void 0 : _this2$hot$getSelecte2.highlight.isHeader();
|
176
|
+
},
|
177
|
+
group: SHORTCUTS_GROUP
|
178
|
+
});
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* Unregister shortcuts responsible for toggling column sorting functionality.
|
183
|
+
*
|
184
|
+
* @private
|
185
|
+
*/
|
186
|
+
}, {
|
187
|
+
key: "unregisterShortcuts",
|
188
|
+
value: function unregisterShortcuts() {
|
189
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "unregisterShortcuts", this).call(this);
|
190
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
191
|
+
}
|
192
|
+
|
154
193
|
/**
|
155
194
|
* Sorts the table by chosen columns and orders.
|
156
195
|
*
|
@@ -319,7 +358,7 @@ var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
|
|
319
358
|
if (this.hot.getShortcutManager().isCtrlPressed()) {
|
320
359
|
this.hot.deselectCell();
|
321
360
|
this.hot.selectColumns(coords.col);
|
322
|
-
this.sort(this.getNextSortConfig(coords.col, APPEND_COLUMN_CONFIG_STRATEGY));
|
361
|
+
this.sort(this.getNextSortConfig(coords.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
|
323
362
|
} else {
|
324
363
|
this.sort(this.getColumnNextConfig(coords.col));
|
325
364
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
2
|
-
import "core-js/modules/es.array.concat.js";
|
3
2
|
import "core-js/modules/es.array.sort.js";
|
3
|
+
import "core-js/modules/es.array.concat.js";
|
4
4
|
import "core-js/modules/es.object.set-prototype-of.js";
|
5
5
|
import "core-js/modules/es.object.get-prototype-of.js";
|
6
6
|
import "core-js/modules/es.object.to-string.js";
|
@@ -30,7 +30,7 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) ===
|
|
30
30
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
31
31
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
32
32
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
33
|
-
import { ColumnSorting } from "../columnSorting/index.mjs";
|
33
|
+
import { APPEND_COLUMN_CONFIG_STRATEGY, ColumnSorting } from "../columnSorting/index.mjs";
|
34
34
|
import { registerRootComparator } from "../columnSorting/sortService/index.mjs";
|
35
35
|
import { wasHeaderClickedProperly } from "../columnSorting/utils.mjs";
|
36
36
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
@@ -39,8 +39,8 @@ import { warnAboutPluginsConflict } from "./utils.mjs";
|
|
39
39
|
import { getClassesToAdd, getClassesToRemove } from "./domHelpers.mjs";
|
40
40
|
export var PLUGIN_KEY = 'multiColumnSorting';
|
41
41
|
export var PLUGIN_PRIORITY = 170;
|
42
|
-
var APPEND_COLUMN_CONFIG_STRATEGY = 'append';
|
43
42
|
var CONFLICTED_PLUGIN_KEY = 'columnSorting';
|
43
|
+
var SHORTCUTS_GROUP = PLUGIN_KEY;
|
44
44
|
registerRootComparator(PLUGIN_KEY, rootComparator);
|
45
45
|
|
46
46
|
/**
|
@@ -145,6 +145,45 @@ export var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
|
|
145
145
|
_get(_getPrototypeOf(MultiColumnSorting.prototype), "disablePlugin", this).call(this);
|
146
146
|
}
|
147
147
|
|
148
|
+
/**
|
149
|
+
* Register shortcuts responsible for toggling column sorting functionality.
|
150
|
+
*
|
151
|
+
* @private
|
152
|
+
*/
|
153
|
+
}, {
|
154
|
+
key: "registerShortcuts",
|
155
|
+
value: function registerShortcuts() {
|
156
|
+
var _this2 = this;
|
157
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "registerShortcuts", this).call(this);
|
158
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
159
|
+
keys: [['Control/Meta', 'Enter']],
|
160
|
+
callback: function callback() {
|
161
|
+
var _this2$hot$getSelecte = _this2.hot.getSelectedRangeLast(),
|
162
|
+
highlight = _this2$hot$getSelecte.highlight;
|
163
|
+
if (highlight.row === -1 && highlight.col >= 0) {
|
164
|
+
_this2.sort(_this2.getNextSortConfig(highlight.col, APPEND_COLUMN_CONFIG_STRATEGY));
|
165
|
+
}
|
166
|
+
},
|
167
|
+
runOnlyIf: function runOnlyIf() {
|
168
|
+
var _this2$hot$getSelecte2;
|
169
|
+
return (_this2$hot$getSelecte2 = _this2.hot.getSelectedRangeLast()) === null || _this2$hot$getSelecte2 === void 0 ? void 0 : _this2$hot$getSelecte2.highlight.isHeader();
|
170
|
+
},
|
171
|
+
group: SHORTCUTS_GROUP
|
172
|
+
});
|
173
|
+
}
|
174
|
+
|
175
|
+
/**
|
176
|
+
* Unregister shortcuts responsible for toggling column sorting functionality.
|
177
|
+
*
|
178
|
+
* @private
|
179
|
+
*/
|
180
|
+
}, {
|
181
|
+
key: "unregisterShortcuts",
|
182
|
+
value: function unregisterShortcuts() {
|
183
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "unregisterShortcuts", this).call(this);
|
184
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
185
|
+
}
|
186
|
+
|
148
187
|
/**
|
149
188
|
* Sorts the table by chosen columns and orders.
|
150
189
|
*
|
@@ -25,8 +25,8 @@ require("core-js/modules/es.weak-map.js");
|
|
25
25
|
require("core-js/modules/web.dom-collections.iterator.js");
|
26
26
|
var _element = require("../../helpers/dom/element");
|
27
27
|
var _number = require("../../helpers/number");
|
28
|
-
var _event = require("../../helpers/dom/event");
|
29
28
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
29
|
+
var _event = require("../../helpers/dom/event");
|
30
30
|
var _console = require("../../helpers/console");
|
31
31
|
var _selection = require("../../selection");
|
32
32
|
var _base = require("../base");
|
@@ -201,6 +201,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
201
201
|
this.addHook('beforeOnCellMouseOver', function () {
|
202
202
|
return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
|
203
203
|
});
|
204
|
+
this.addHook('modifyTransformStart', function () {
|
205
|
+
return _this2.onModifyTransformStart.apply(_this2, arguments);
|
206
|
+
});
|
207
|
+
this.addHook('afterSelection', function () {
|
208
|
+
return _this2.updateFocusHighlightPosition();
|
209
|
+
});
|
204
210
|
this.addHook('afterGetColumnHeaderRenderers', function (array) {
|
205
211
|
return _this2.onAfterGetColumnHeaderRenderers(array);
|
206
212
|
});
|
@@ -216,9 +222,18 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
216
222
|
this.addHook('beforeCopy', function () {
|
217
223
|
return _this2.onBeforeCopy.apply(_this2, arguments);
|
218
224
|
});
|
225
|
+
this.addHook('beforeSelectColumns', function () {
|
226
|
+
return _this2.onBeforeSelectColumns.apply(_this2, arguments);
|
227
|
+
});
|
219
228
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
220
229
|
return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
|
221
230
|
});
|
231
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
|
232
|
+
return _this2.updateFocusHighlightPosition();
|
233
|
+
});
|
234
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
|
235
|
+
return _this2.updateFocusHighlightPosition();
|
236
|
+
});
|
222
237
|
_get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
|
223
238
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
224
239
|
}
|
@@ -440,6 +455,34 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
440
455
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
441
456
|
}
|
442
457
|
|
458
|
+
/**
|
459
|
+
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
460
|
+
* even when the logical coordinates point in-between the header.
|
461
|
+
*
|
462
|
+
* @private
|
463
|
+
*/
|
464
|
+
}, {
|
465
|
+
key: "updateFocusHighlightPosition",
|
466
|
+
value: function updateFocusHighlightPosition() {
|
467
|
+
var _this$hot;
|
468
|
+
var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
469
|
+
if (!selection) {
|
470
|
+
return;
|
471
|
+
}
|
472
|
+
var highlight = selection.highlight;
|
473
|
+
var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
474
|
+
if (isNestedHeadersRange) {
|
475
|
+
var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
476
|
+
var focusHighlight = this.hot.selection.highlight.getFocus();
|
477
|
+
|
478
|
+
// Correct the highlight/focus selection to highlight the correct TH element
|
479
|
+
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
480
|
+
focusHighlight.visualCellRange.from.col = columnIndex;
|
481
|
+
focusHighlight.visualCellRange.to.col = columnIndex;
|
482
|
+
focusHighlight.commit();
|
483
|
+
}
|
484
|
+
}
|
485
|
+
|
443
486
|
/**
|
444
487
|
* Allows to control which header DOM element will be used to highlight.
|
445
488
|
*
|
@@ -456,8 +499,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
456
499
|
if (!headerNodeData) {
|
457
500
|
return visualColumn;
|
458
501
|
}
|
459
|
-
var
|
460
|
-
columnCursor = highlightMeta.columnCursor,
|
502
|
+
var columnCursor = highlightMeta.columnCursor,
|
461
503
|
selectionType = highlightMeta.selectionType,
|
462
504
|
selectionWidth = highlightMeta.selectionWidth;
|
463
505
|
var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
|
@@ -469,8 +511,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
469
511
|
}
|
470
512
|
} else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
|
471
513
|
if (colspan > selectionWidth - columnCursor || !isRoot) {
|
472
|
-
//
|
473
|
-
|
514
|
+
// Prevents adding any CSS class names to the TH element
|
515
|
+
return null;
|
474
516
|
}
|
475
517
|
}
|
476
518
|
return visualColumn;
|
@@ -601,7 +643,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
601
643
|
}, {
|
602
644
|
key: "onBeforeOnCellMouseOver",
|
603
645
|
value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
604
|
-
var _this$hot;
|
646
|
+
var _this$hot$selection;
|
605
647
|
if (!this.hot.view.isMouseDown()) {
|
606
648
|
return;
|
607
649
|
}
|
@@ -622,13 +664,93 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
622
664
|
controller.cell = true;
|
623
665
|
var columnsToSelect = [];
|
624
666
|
if (coords.col < from.col) {
|
625
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
667
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
|
626
668
|
} else if (coords.col > from.col) {
|
627
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
669
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
|
628
670
|
} else {
|
629
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
671
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
672
|
+
}
|
673
|
+
(_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
|
674
|
+
}
|
675
|
+
|
676
|
+
/**
|
677
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
678
|
+
*
|
679
|
+
* @private
|
680
|
+
* @param {object} delta The transformation delta.
|
681
|
+
*/
|
682
|
+
}, {
|
683
|
+
key: "onModifyTransformStart",
|
684
|
+
value: function onModifyTransformStart(delta) {
|
685
|
+
var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
|
686
|
+
highlight = _this$hot$getSelected.highlight;
|
687
|
+
var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
688
|
+
var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
689
|
+
if (!isNestedHeadersRange) {
|
690
|
+
return;
|
691
|
+
}
|
692
|
+
var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
693
|
+
var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
694
|
+
if (delta.col < 0) {
|
695
|
+
var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
696
|
+
var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
697
|
+
if (notHiddenColumnIndex === null) {
|
698
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
699
|
+
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
700
|
+
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
701
|
+
} else {
|
702
|
+
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
703
|
+
}
|
704
|
+
} else if (delta.col > 0) {
|
705
|
+
var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
706
|
+
var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
|
707
|
+
if (_notHiddenColumnIndex === null) {
|
708
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
709
|
+
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
710
|
+
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
711
|
+
} else {
|
712
|
+
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
|
713
|
+
}
|
714
|
+
}
|
715
|
+
}
|
716
|
+
|
717
|
+
/**
|
718
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
719
|
+
* ensure that the whole nested column will be covered.
|
720
|
+
*
|
721
|
+
* @private
|
722
|
+
* @param {*} from The coords object where the selection starts.
|
723
|
+
* @param {*} to The coords object where the selection ends.
|
724
|
+
*/
|
725
|
+
}, {
|
726
|
+
key: "onBeforeSelectColumns",
|
727
|
+
value: function onBeforeSelectColumns(from, to) {
|
728
|
+
var headerLevel = from.row;
|
729
|
+
var startNodeData = this._getHeaderTreeNodeDataByCoords({
|
730
|
+
row: headerLevel,
|
731
|
+
col: from.col
|
732
|
+
});
|
733
|
+
var endNodeData = this._getHeaderTreeNodeDataByCoords({
|
734
|
+
row: headerLevel,
|
735
|
+
col: to.col
|
736
|
+
});
|
737
|
+
if (to.col < from.col) {
|
738
|
+
// Column selection from right to left
|
739
|
+
if (startNodeData) {
|
740
|
+
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
741
|
+
}
|
742
|
+
if (endNodeData) {
|
743
|
+
to.col = endNodeData.columnIndex;
|
744
|
+
}
|
745
|
+
} else if (to.col >= from.col) {
|
746
|
+
// Column selection from left to right or a single column selection
|
747
|
+
if (startNodeData) {
|
748
|
+
from.col = startNodeData.columnIndex;
|
749
|
+
}
|
750
|
+
if (endNodeData) {
|
751
|
+
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
752
|
+
}
|
630
753
|
}
|
631
|
-
(_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
|
632
754
|
}
|
633
755
|
|
634
756
|
/**
|
@@ -45,8 +45,8 @@ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!priva
|
|
45
45
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
46
46
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
47
47
|
import { isNumeric } from "../../helpers/number.mjs";
|
48
|
-
import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
|
49
48
|
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
49
|
+
import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
|
50
50
|
import { warn } from "../../helpers/console.mjs";
|
51
51
|
import { ACTIVE_HEADER_TYPE, HEADER_TYPE } from "../../selection/index.mjs";
|
52
52
|
import { BasePlugin } from "../base/index.mjs";
|
@@ -194,6 +194,12 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
194
194
|
this.addHook('beforeOnCellMouseOver', function () {
|
195
195
|
return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
|
196
196
|
});
|
197
|
+
this.addHook('modifyTransformStart', function () {
|
198
|
+
return _this2.onModifyTransformStart.apply(_this2, arguments);
|
199
|
+
});
|
200
|
+
this.addHook('afterSelection', function () {
|
201
|
+
return _this2.updateFocusHighlightPosition();
|
202
|
+
});
|
197
203
|
this.addHook('afterGetColumnHeaderRenderers', function (array) {
|
198
204
|
return _this2.onAfterGetColumnHeaderRenderers(array);
|
199
205
|
});
|
@@ -209,9 +215,18 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
209
215
|
this.addHook('beforeCopy', function () {
|
210
216
|
return _this2.onBeforeCopy.apply(_this2, arguments);
|
211
217
|
});
|
218
|
+
this.addHook('beforeSelectColumns', function () {
|
219
|
+
return _this2.onBeforeSelectColumns.apply(_this2, arguments);
|
220
|
+
});
|
212
221
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
213
222
|
return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
|
214
223
|
});
|
224
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
|
225
|
+
return _this2.updateFocusHighlightPosition();
|
226
|
+
});
|
227
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
|
228
|
+
return _this2.updateFocusHighlightPosition();
|
229
|
+
});
|
215
230
|
_get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
|
216
231
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
217
232
|
}
|
@@ -433,6 +448,34 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
433
448
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
434
449
|
}
|
435
450
|
|
451
|
+
/**
|
452
|
+
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
453
|
+
* even when the logical coordinates point in-between the header.
|
454
|
+
*
|
455
|
+
* @private
|
456
|
+
*/
|
457
|
+
}, {
|
458
|
+
key: "updateFocusHighlightPosition",
|
459
|
+
value: function updateFocusHighlightPosition() {
|
460
|
+
var _this$hot;
|
461
|
+
var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
462
|
+
if (!selection) {
|
463
|
+
return;
|
464
|
+
}
|
465
|
+
var highlight = selection.highlight;
|
466
|
+
var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
467
|
+
if (isNestedHeadersRange) {
|
468
|
+
var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
469
|
+
var focusHighlight = this.hot.selection.highlight.getFocus();
|
470
|
+
|
471
|
+
// Correct the highlight/focus selection to highlight the correct TH element
|
472
|
+
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
473
|
+
focusHighlight.visualCellRange.from.col = columnIndex;
|
474
|
+
focusHighlight.visualCellRange.to.col = columnIndex;
|
475
|
+
focusHighlight.commit();
|
476
|
+
}
|
477
|
+
}
|
478
|
+
|
436
479
|
/**
|
437
480
|
* Allows to control which header DOM element will be used to highlight.
|
438
481
|
*
|
@@ -449,8 +492,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
449
492
|
if (!headerNodeData) {
|
450
493
|
return visualColumn;
|
451
494
|
}
|
452
|
-
var
|
453
|
-
columnCursor = highlightMeta.columnCursor,
|
495
|
+
var columnCursor = highlightMeta.columnCursor,
|
454
496
|
selectionType = highlightMeta.selectionType,
|
455
497
|
selectionWidth = highlightMeta.selectionWidth;
|
456
498
|
var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
|
@@ -462,8 +504,8 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
462
504
|
}
|
463
505
|
} else if (selectionType === ACTIVE_HEADER_TYPE) {
|
464
506
|
if (colspan > selectionWidth - columnCursor || !isRoot) {
|
465
|
-
//
|
466
|
-
|
507
|
+
// Prevents adding any CSS class names to the TH element
|
508
|
+
return null;
|
467
509
|
}
|
468
510
|
}
|
469
511
|
return visualColumn;
|
@@ -594,7 +636,7 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
594
636
|
}, {
|
595
637
|
key: "onBeforeOnCellMouseOver",
|
596
638
|
value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
597
|
-
var _this$hot;
|
639
|
+
var _this$hot$selection;
|
598
640
|
if (!this.hot.view.isMouseDown()) {
|
599
641
|
return;
|
600
642
|
}
|
@@ -615,13 +657,93 @@ export var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
615
657
|
controller.cell = true;
|
616
658
|
var columnsToSelect = [];
|
617
659
|
if (coords.col < from.col) {
|
618
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
660
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
|
619
661
|
} else if (coords.col > from.col) {
|
620
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
662
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
|
621
663
|
} else {
|
622
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
664
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
665
|
+
}
|
666
|
+
(_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
|
667
|
+
}
|
668
|
+
|
669
|
+
/**
|
670
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
671
|
+
*
|
672
|
+
* @private
|
673
|
+
* @param {object} delta The transformation delta.
|
674
|
+
*/
|
675
|
+
}, {
|
676
|
+
key: "onModifyTransformStart",
|
677
|
+
value: function onModifyTransformStart(delta) {
|
678
|
+
var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
|
679
|
+
highlight = _this$hot$getSelected.highlight;
|
680
|
+
var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
681
|
+
var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
682
|
+
if (!isNestedHeadersRange) {
|
683
|
+
return;
|
684
|
+
}
|
685
|
+
var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
686
|
+
var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
687
|
+
if (delta.col < 0) {
|
688
|
+
var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
689
|
+
var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
690
|
+
if (notHiddenColumnIndex === null) {
|
691
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
692
|
+
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
693
|
+
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
694
|
+
} else {
|
695
|
+
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
696
|
+
}
|
697
|
+
} else if (delta.col > 0) {
|
698
|
+
var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
699
|
+
var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
|
700
|
+
if (_notHiddenColumnIndex === null) {
|
701
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
702
|
+
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
703
|
+
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
704
|
+
} else {
|
705
|
+
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
|
706
|
+
}
|
707
|
+
}
|
708
|
+
}
|
709
|
+
|
710
|
+
/**
|
711
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
712
|
+
* ensure that the whole nested column will be covered.
|
713
|
+
*
|
714
|
+
* @private
|
715
|
+
* @param {*} from The coords object where the selection starts.
|
716
|
+
* @param {*} to The coords object where the selection ends.
|
717
|
+
*/
|
718
|
+
}, {
|
719
|
+
key: "onBeforeSelectColumns",
|
720
|
+
value: function onBeforeSelectColumns(from, to) {
|
721
|
+
var headerLevel = from.row;
|
722
|
+
var startNodeData = this._getHeaderTreeNodeDataByCoords({
|
723
|
+
row: headerLevel,
|
724
|
+
col: from.col
|
725
|
+
});
|
726
|
+
var endNodeData = this._getHeaderTreeNodeDataByCoords({
|
727
|
+
row: headerLevel,
|
728
|
+
col: to.col
|
729
|
+
});
|
730
|
+
if (to.col < from.col) {
|
731
|
+
// Column selection from right to left
|
732
|
+
if (startNodeData) {
|
733
|
+
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
734
|
+
}
|
735
|
+
if (endNodeData) {
|
736
|
+
to.col = endNodeData.columnIndex;
|
737
|
+
}
|
738
|
+
} else if (to.col >= from.col) {
|
739
|
+
// Column selection from left to right or a single column selection
|
740
|
+
if (startNodeData) {
|
741
|
+
from.col = startNodeData.columnIndex;
|
742
|
+
}
|
743
|
+
if (endNodeData) {
|
744
|
+
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
745
|
+
}
|
623
746
|
}
|
624
|
-
(_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
|
625
747
|
}
|
626
748
|
|
627
749
|
/**
|
@@ -416,6 +416,43 @@ var StateManager = /*#__PURE__*/function () {
|
|
416
416
|
return stepBackColumn;
|
417
417
|
}
|
418
418
|
|
419
|
+
/**
|
420
|
+
* The method is helpful in cases where the column index targets in-between currently
|
421
|
+
* collapsed column. In that case, the method returns the right-most column index
|
422
|
+
* where the nested header ends.
|
423
|
+
*
|
424
|
+
* @param {number} headerLevel Header level (there is support for negative and positive values).
|
425
|
+
* @param {number} columnIndex A visual column index.
|
426
|
+
* @returns {number}
|
427
|
+
*/
|
428
|
+
}, {
|
429
|
+
key: "findRightMostColumnIndex",
|
430
|
+
value: function findRightMostColumnIndex(headerLevel, columnIndex) {
|
431
|
+
var _this$getHeaderSettin3;
|
432
|
+
var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
|
433
|
+
isRoot: true,
|
434
|
+
origColspan: 1
|
435
|
+
},
|
436
|
+
isRoot = _ref4.isRoot,
|
437
|
+
origColspan = _ref4.origColspan;
|
438
|
+
if (isRoot) {
|
439
|
+
return columnIndex + origColspan - 1;
|
440
|
+
}
|
441
|
+
var stepForthColumn = columnIndex + 1;
|
442
|
+
while (stepForthColumn < this.getColumnsCount()) {
|
443
|
+
var _this$getHeaderSettin4;
|
444
|
+
var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
|
445
|
+
isRoot: true
|
446
|
+
},
|
447
|
+
isRootNode = _ref5.isRoot;
|
448
|
+
if (isRootNode) {
|
449
|
+
break;
|
450
|
+
}
|
451
|
+
stepForthColumn += 1;
|
452
|
+
}
|
453
|
+
return stepForthColumn - 1;
|
454
|
+
}
|
455
|
+
|
419
456
|
/**
|
420
457
|
* Gets a total number of headers levels.
|
421
458
|
*
|