handsontable 0.0.0-next-ac97c93-20230617 → 0.0.0-next-acb8c02-20230620
Sign up to get free protection for your applications and to get access to all the features.
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 +13260 -10403
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +112 -112
- package/dist/handsontable.js +19121 -16264
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +4 -4
- package/editorManager.js +21 -82
- package/editorManager.mjs +26 -86
- 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/contextMenu/utils.js +25 -0
- package/plugins/contextMenu/utils.mjs +24 -0
- 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/dropdownMenu/dropdownMenu.js +79 -25
- package/plugins/dropdownMenu/dropdownMenu.mjs +79 -25
- 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 +52 -0
- package/shortcutContexts/commands/index.mjs +48 -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/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 +244 -0
- package/shortcutContexts/grid.mjs +240 -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/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
@@ -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
|
*
|
@@ -411,6 +411,43 @@ var StateManager = /*#__PURE__*/function () {
|
|
411
411
|
return stepBackColumn;
|
412
412
|
}
|
413
413
|
|
414
|
+
/**
|
415
|
+
* The method is helpful in cases where the column index targets in-between currently
|
416
|
+
* collapsed column. In that case, the method returns the right-most column index
|
417
|
+
* where the nested header ends.
|
418
|
+
*
|
419
|
+
* @param {number} headerLevel Header level (there is support for negative and positive values).
|
420
|
+
* @param {number} columnIndex A visual column index.
|
421
|
+
* @returns {number}
|
422
|
+
*/
|
423
|
+
}, {
|
424
|
+
key: "findRightMostColumnIndex",
|
425
|
+
value: function findRightMostColumnIndex(headerLevel, columnIndex) {
|
426
|
+
var _this$getHeaderSettin3;
|
427
|
+
var _ref4 = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
|
428
|
+
isRoot: true,
|
429
|
+
origColspan: 1
|
430
|
+
},
|
431
|
+
isRoot = _ref4.isRoot,
|
432
|
+
origColspan = _ref4.origColspan;
|
433
|
+
if (isRoot) {
|
434
|
+
return columnIndex + origColspan - 1;
|
435
|
+
}
|
436
|
+
var stepForthColumn = columnIndex + 1;
|
437
|
+
while (stepForthColumn < this.getColumnsCount()) {
|
438
|
+
var _this$getHeaderSettin4;
|
439
|
+
var _ref5 = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
|
440
|
+
isRoot: true
|
441
|
+
},
|
442
|
+
isRootNode = _ref5.isRoot;
|
443
|
+
if (isRootNode) {
|
444
|
+
break;
|
445
|
+
}
|
446
|
+
stepForthColumn += 1;
|
447
|
+
}
|
448
|
+
return stepForthColumn - 1;
|
449
|
+
}
|
450
|
+
|
414
451
|
/**
|
415
452
|
* Gets a total number of headers levels.
|
416
453
|
*
|
@@ -62,6 +62,7 @@ var PLUGIN_KEY = 'nestedRows';
|
|
62
62
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
63
63
|
var PLUGIN_PRIORITY = 300;
|
64
64
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
65
|
+
var SHORTCUTS_GROUP = PLUGIN_KEY;
|
65
66
|
var privatePool = new WeakMap();
|
66
67
|
|
67
68
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
@@ -203,6 +204,7 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
|
|
203
204
|
this.addHook('beforeUpdateData', function (data) {
|
204
205
|
return _this2.onBeforeLoadData(data);
|
205
206
|
});
|
207
|
+
this.registerShortcuts();
|
206
208
|
_get(_getPrototypeOf(NestedRows.prototype), "enablePlugin", this).call(this);
|
207
209
|
}
|
208
210
|
|
@@ -213,6 +215,7 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
|
|
213
215
|
key: "disablePlugin",
|
214
216
|
value: function disablePlugin() {
|
215
217
|
this.hot.rowIndexMapper.unregisterMap('nestedRows');
|
218
|
+
this.unregisterShortcuts();
|
216
219
|
_get(_getPrototypeOf(NestedRows.prototype), "disablePlugin", this).call(this);
|
217
220
|
}
|
218
221
|
|
@@ -236,6 +239,48 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
|
|
236
239
|
_get(_getPrototypeOf(NestedRows.prototype), "updatePlugin", this).call(this);
|
237
240
|
}
|
238
241
|
|
242
|
+
/**
|
243
|
+
* Register shortcuts responsible for toggling collapsible columns.
|
244
|
+
*
|
245
|
+
* @private
|
246
|
+
*/
|
247
|
+
}, {
|
248
|
+
key: "registerShortcuts",
|
249
|
+
value: function registerShortcuts() {
|
250
|
+
var _this3 = this;
|
251
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
252
|
+
keys: [['Enter']],
|
253
|
+
callback: function callback() {
|
254
|
+
var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
|
255
|
+
highlight = _this3$hot$getSelecte.highlight;
|
256
|
+
if (highlight.col === -1 && highlight.row >= 0) {
|
257
|
+
var row = _this3.collapsingUI.translateTrimmedRow(highlight.row);
|
258
|
+
if (_this3.collapsingUI.areChildrenCollapsed(row)) {
|
259
|
+
_this3.collapsingUI.expandChildren(row);
|
260
|
+
} else {
|
261
|
+
_this3.collapsingUI.collapseChildren(row);
|
262
|
+
}
|
263
|
+
}
|
264
|
+
},
|
265
|
+
runOnlyIf: function runOnlyIf() {
|
266
|
+
var _this3$hot$getSelecte2;
|
267
|
+
return (_this3$hot$getSelecte2 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte2 === void 0 ? void 0 : _this3$hot$getSelecte2.highlight.isHeader();
|
268
|
+
},
|
269
|
+
group: SHORTCUTS_GROUP
|
270
|
+
});
|
271
|
+
}
|
272
|
+
|
273
|
+
/**
|
274
|
+
* Unregister shortcuts responsible for toggling collapsible columns.
|
275
|
+
*
|
276
|
+
* @private
|
277
|
+
*/
|
278
|
+
}, {
|
279
|
+
key: "unregisterShortcuts",
|
280
|
+
value: function unregisterShortcuts() {
|
281
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
282
|
+
}
|
283
|
+
|
239
284
|
/**
|
240
285
|
* `beforeRowMove` hook callback.
|
241
286
|
*
|
@@ -415,15 +460,15 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
|
|
415
460
|
}, {
|
416
461
|
key: "onAfterRemoveRow",
|
417
462
|
value: function onAfterRemoveRow(index, amount, logicRows, source) {
|
418
|
-
var
|
463
|
+
var _this4 = this;
|
419
464
|
if (source === this.pluginName) {
|
420
465
|
return;
|
421
466
|
}
|
422
467
|
var priv = privatePool.get(this);
|
423
468
|
setTimeout(function () {
|
424
469
|
priv.skipRender = null;
|
425
|
-
|
426
|
-
|
470
|
+
_this4.headersUI.updateRowHeaderWidth();
|
471
|
+
_this4.collapsingUI.collapsedRowsStash.applyStash();
|
427
472
|
}, 0);
|
428
473
|
}
|
429
474
|
|
@@ -439,17 +484,17 @@ var NestedRows = /*#__PURE__*/function (_BasePlugin) {
|
|
439
484
|
}, {
|
440
485
|
key: "onBeforeRemoveRow",
|
441
486
|
value: function onBeforeRemoveRow(index, amount, physicalRows) {
|
442
|
-
var
|
487
|
+
var _this5 = this;
|
443
488
|
var modifiedPhysicalRows = Array.from(physicalRows.reduce(function (removedRows, physicalIndex) {
|
444
|
-
if (
|
445
|
-
var children =
|
489
|
+
if (_this5.dataManager.isParent(physicalIndex)) {
|
490
|
+
var children = _this5.dataManager.getDataObject(physicalIndex).__children;
|
446
491
|
|
447
492
|
// Preserve a parent in the list of removed rows.
|
448
493
|
removedRows.add(physicalIndex);
|
449
494
|
if (Array.isArray(children)) {
|
450
495
|
// Add a children to the list of removed rows.
|
451
496
|
children.forEach(function (child) {
|
452
|
-
return removedRows.add(
|
497
|
+
return removedRows.add(_this5.dataManager.getRowIndex(child));
|
453
498
|
});
|
454
499
|
}
|
455
500
|
return removedRows;
|