handsontable 0.0.0-next-08765b9-20230809 → 0.0.0-next-912c214-20230818
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/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +11 -50
- package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -38
- package/3rdparty/walkontable/src/cell/range.mjs +7 -38
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- 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 +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- 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 +2 -10
- 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 +6 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
- package/3rdparty/walkontable/src/overlay/top.js +6 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
- package/3rdparty/walkontable/src/selection.js +295 -0
- package/3rdparty/walkontable/src/selection.mjs +290 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +78 -6
- package/3rdparty/walkontable/src/table.mjs +79 -7
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/common.d.ts +1 -1
- package/core.d.ts +3 -6
- package/core.js +290 -173
- package/core.mjs +290 -173
- package/dataMap/metaManager/metaSchema.js +0 -41
- package/dataMap/metaManager/metaSchema.mjs +0 -41
- package/dist/handsontable.css +4 -24
- package/dist/handsontable.full.css +4 -24
- package/dist/handsontable.full.js +5589 -8684
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +25 -25
- package/dist/handsontable.js +8036 -11131
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +19 -19
- package/editorManager.js +75 -11
- package/editorManager.mjs +74 -11
- package/editors/baseEditor/baseEditor.d.ts +1 -0
- package/editors/textEditor/textEditor.js +11 -3
- package/editors/textEditor/textEditor.mjs +12 -4
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/package.json +1 -1
- package/pluginHooks.d.ts +1 -7
- package/pluginHooks.js +1 -106
- package/pluginHooks.mjs +1 -106
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -58
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +4 -58
- package/plugins/columnSorting/columnSorting.js +0 -38
- package/plugins/columnSorting/columnSorting.mjs +2 -38
- package/plugins/columnSorting/index.js +1 -3
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +189 -251
- package/plugins/comments/comments.mjs +190 -250
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +30 -72
- package/plugins/contextMenu/contextMenu.mjs +31 -73
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/utils.js +16 -28
- package/plugins/contextMenu/utils.mjs +15 -27
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +10 -14
- package/plugins/copyPaste/copyPaste.mjs +10 -14
- package/plugins/customBorders/customBorders.js +20 -23
- package/plugins/customBorders/customBorders.mjs +21 -24
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +32 -89
- package/plugins/dropdownMenu/dropdownMenu.mjs +32 -89
- package/plugins/filters/filters.js +14 -31
- package/plugins/filters/filters.mjs +13 -30
- package/plugins/manualColumnResize/manualColumnResize.js +6 -0
- package/plugins/manualColumnResize/manualColumnResize.mjs +7 -1
- package/plugins/mergeCells/mergeCells.js +17 -5
- package/plugins/mergeCells/mergeCells.mjs +17 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
- package/plugins/nestedHeaders/nestedHeaders.js +8 -121
- package/plugins/nestedHeaders/nestedHeaders.mjs +8 -121
- package/plugins/nestedHeaders/stateManager/index.js +0 -37
- package/plugins/nestedHeaders/stateManager/index.mjs +0 -37
- package/plugins/nestedRows/nestedRows.js +0 -41
- package/plugins/nestedRows/nestedRows.mjs +0 -41
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/constants.js +15 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +71 -256
- package/selection/highlight/highlight.mjs +71 -250
- package/selection/highlight/types/activeHeader.js +8 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +18 -6
- package/selection/highlight/types/area.mjs +18 -6
- package/selection/highlight/types/{focus.js → cell.js} +7 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +9 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +7 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +18 -9
- package/selection/highlight/types/header.mjs +18 -9
- package/selection/highlight/types/index.js +35 -0
- package/selection/highlight/types/index.mjs +31 -0
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- 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 +154 -290
- package/selection/selection.mjs +153 -287
- package/selection/transformation.js +90 -232
- package/selection/transformation.mjs +90 -232
- package/selection/utils.js +21 -15
- package/selection/utils.mjs +21 -16
- package/settings.d.ts +0 -2
- package/shortcuts/manager.js +0 -2
- package/shortcuts/manager.mjs +0 -2
- package/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +5 -19
- package/shortcuts/utils.mjs +4 -18
- package/tableView.js +13 -67
- package/tableView.mjs +13 -67
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/selection/constants.js +0 -62
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -26
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -259
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -254
- package/3rdparty/walkontable/src/selection/scanner.js +0 -270
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
- package/3rdparty/walkontable/src/selection/selection.js +0 -101
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
- package/core/focusCatcher/focusDetector.js +0 -58
- package/core/focusCatcher/focusDetector.mjs +0 -54
- package/core/focusCatcher/index.js +0 -142
- package/core/focusCatcher/index.mjs +0 -138
- package/core/index.js +0 -9
- package/core/index.mjs +0 -1
- package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
- package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
- package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
- package/plugins/comments/contextMenuItem/removeComment.js +0 -38
- package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
- package/selection/highlight/types/areaLayered.js +0 -31
- package/selection/highlight/types/areaLayered.mjs +0 -26
- package/selection/highlight/types/column.js +0 -27
- package/selection/highlight/types/column.mjs +0 -22
- package/selection/highlight/types/row.js +0 -27
- package/selection/highlight/types/row.mjs +0 -22
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -27
- package/shortcutContexts/commands/editor/open.mjs +0 -23
- package/shortcutContexts/commands/emptySelectedCells.js +0 -11
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -21
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -17
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -21
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -17
- package/shortcutContexts/commands/index.js +0 -35
- package/shortcutContexts/commands/index.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -31
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -27
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -31
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -27
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
- package/shortcutContexts/commands/scrollToFocusedCell.js +0 -36
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -32
- package/shortcutContexts/commands/selectAll.js +0 -10
- package/shortcutContexts/commands/selectAll.mjs +0 -6
- package/shortcutContexts/constants.js +0 -13
- package/shortcutContexts/constants.mjs +0 -8
- package/shortcutContexts/editor.js +0 -25
- package/shortcutContexts/editor.mjs +0 -21
- package/shortcutContexts/grid.js +0 -163
- package/shortcutContexts/grid.mjs +0 -159
- package/shortcutContexts/index.js +0 -24
- package/shortcutContexts/index.mjs +0 -11
@@ -1,6 +1,6 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
2
|
import { BasePlugin } from "../base/index.mjs";
|
3
|
-
import { addClass, closest, hasClass, removeClass, outerHeight, isDetached } from "../../helpers/dom/element.mjs";
|
3
|
+
import { addClass, closest, hasClass, removeClass, outerHeight, isDetached, overlayContainsElement } from "../../helpers/dom/element.mjs";
|
4
4
|
import EventManager from "../../eventManager.mjs";
|
5
5
|
import { arrayEach } from "../../helpers/array.mjs";
|
6
6
|
import { rangeEach } from "../../helpers/number.mjs";
|
@@ -213,6 +213,12 @@ export class ManualColumnResize extends BasePlugin {
|
|
213
213
|
return;
|
214
214
|
}
|
215
215
|
this.currentTH = TH;
|
216
|
+
const hotRootElement = this.hot.rootElement;
|
217
|
+
|
218
|
+
// Handling elements placed only inside columns header of the main instance.
|
219
|
+
if (overlayContainsElement('top_inline_start_corner', this.currentTH, hotRootElement) === false && overlayContainsElement('top', this.currentTH, hotRootElement) === false) {
|
220
|
+
return;
|
221
|
+
}
|
216
222
|
const {
|
217
223
|
_wt: wt
|
218
224
|
} = this.hot.view;
|
@@ -188,6 +188,9 @@ class MergeCells extends _base.BasePlugin {
|
|
188
188
|
this.addHook('afterDrawSelection', function () {
|
189
189
|
return _this.onAfterDrawSelection(...arguments);
|
190
190
|
});
|
191
|
+
this.addHook('beforeRemoveCellClassNames', function () {
|
192
|
+
return _this.onBeforeRemoveCellClassNames(...arguments);
|
193
|
+
});
|
191
194
|
this.addHook('beforeUndoStackChange', (action, source) => {
|
192
195
|
if (source === 'MergeCells') {
|
193
196
|
return false;
|
@@ -494,6 +497,7 @@ class MergeCells extends _base.BasePlugin {
|
|
494
497
|
(0, _number.rangeEach)(0, currentCollection.rowspan - 1, i => {
|
495
498
|
(0, _number.rangeEach)(0, currentCollection.colspan - 1, j => {
|
496
499
|
this.hot.removeCellMeta(currentCollection.row + i, currentCollection.col + j, 'hidden');
|
500
|
+
this.hot.removeCellMeta(currentCollection.row + i, currentCollection.col + j, 'copyable');
|
497
501
|
});
|
498
502
|
});
|
499
503
|
this.hot.removeCellMeta(currentCollection.row, currentCollection.col, 'spanned');
|
@@ -571,11 +575,8 @@ class MergeCells extends _base.BasePlugin {
|
|
571
575
|
gridContext.addShortcut({
|
572
576
|
keys: [['Control', 'm']],
|
573
577
|
callback: () => {
|
574
|
-
|
575
|
-
|
576
|
-
this.toggleMerge(range);
|
577
|
-
this.hot.render();
|
578
|
-
}
|
578
|
+
this.toggleMerge(this.hot.getSelectedRangeLast());
|
579
|
+
this.hot.render();
|
579
580
|
},
|
580
581
|
runOnlyIf: event => !event.altKey,
|
581
582
|
// right ALT in some systems triggers ALT+CTRL
|
@@ -1198,5 +1199,16 @@ class MergeCells extends _base.BasePlugin {
|
|
1198
1199
|
}
|
1199
1200
|
return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
|
1200
1201
|
}
|
1202
|
+
|
1203
|
+
/**
|
1204
|
+
* `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
|
1205
|
+
*
|
1206
|
+
* @private
|
1207
|
+
* @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
|
1208
|
+
* all the cells in the table.
|
1209
|
+
*/
|
1210
|
+
onBeforeRemoveCellClassNames() {
|
1211
|
+
return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
|
1212
|
+
}
|
1201
1213
|
}
|
1202
1214
|
exports.MergeCells = MergeCells;
|
@@ -182,6 +182,9 @@ export class MergeCells extends BasePlugin {
|
|
182
182
|
this.addHook('afterDrawSelection', function () {
|
183
183
|
return _this.onAfterDrawSelection(...arguments);
|
184
184
|
});
|
185
|
+
this.addHook('beforeRemoveCellClassNames', function () {
|
186
|
+
return _this.onBeforeRemoveCellClassNames(...arguments);
|
187
|
+
});
|
185
188
|
this.addHook('beforeUndoStackChange', (action, source) => {
|
186
189
|
if (source === 'MergeCells') {
|
187
190
|
return false;
|
@@ -488,6 +491,7 @@ export class MergeCells extends BasePlugin {
|
|
488
491
|
rangeEach(0, currentCollection.rowspan - 1, i => {
|
489
492
|
rangeEach(0, currentCollection.colspan - 1, j => {
|
490
493
|
this.hot.removeCellMeta(currentCollection.row + i, currentCollection.col + j, 'hidden');
|
494
|
+
this.hot.removeCellMeta(currentCollection.row + i, currentCollection.col + j, 'copyable');
|
491
495
|
});
|
492
496
|
});
|
493
497
|
this.hot.removeCellMeta(currentCollection.row, currentCollection.col, 'spanned');
|
@@ -565,11 +569,8 @@ export class MergeCells extends BasePlugin {
|
|
565
569
|
gridContext.addShortcut({
|
566
570
|
keys: [['Control', 'm']],
|
567
571
|
callback: () => {
|
568
|
-
|
569
|
-
|
570
|
-
this.toggleMerge(range);
|
571
|
-
this.hot.render();
|
572
|
-
}
|
572
|
+
this.toggleMerge(this.hot.getSelectedRangeLast());
|
573
|
+
this.hot.render();
|
573
574
|
},
|
574
575
|
runOnlyIf: event => !event.altKey,
|
575
576
|
// right ALT in some systems triggers ALT+CTRL
|
@@ -1192,4 +1193,15 @@ export class MergeCells extends BasePlugin {
|
|
1192
1193
|
}
|
1193
1194
|
return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
|
1194
1195
|
}
|
1196
|
+
|
1197
|
+
/**
|
1198
|
+
* `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
|
1199
|
+
*
|
1200
|
+
* @private
|
1201
|
+
* @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
|
1202
|
+
* all the cells in the table.
|
1203
|
+
*/
|
1204
|
+
onBeforeRemoveCellClassNames() {
|
1205
|
+
return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
|
1206
|
+
}
|
1195
1207
|
}
|
@@ -12,8 +12,8 @@ const PLUGIN_KEY = 'multiColumnSorting';
|
|
12
12
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
13
13
|
const PLUGIN_PRIORITY = 170;
|
14
14
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
15
|
+
const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
|
15
16
|
const CONFLICTED_PLUGIN_KEY = 'columnSorting';
|
16
|
-
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
17
17
|
(0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
|
18
18
|
|
19
19
|
/**
|
@@ -113,41 +113,6 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
|
|
113
113
|
super.disablePlugin();
|
114
114
|
}
|
115
115
|
|
116
|
-
/**
|
117
|
-
* Register shortcuts responsible for toggling column sorting functionality.
|
118
|
-
*
|
119
|
-
* @private
|
120
|
-
*/
|
121
|
-
registerShortcuts() {
|
122
|
-
super.registerShortcuts();
|
123
|
-
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
124
|
-
keys: [['Control/Meta', 'Enter']],
|
125
|
-
callback: () => {
|
126
|
-
const {
|
127
|
-
highlight
|
128
|
-
} = this.hot.getSelectedRangeLast();
|
129
|
-
if (highlight.row === -1 && highlight.col >= 0) {
|
130
|
-
this.sort(this.getNextSortConfig(highlight.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
|
131
|
-
}
|
132
|
-
},
|
133
|
-
runOnlyIf: () => {
|
134
|
-
var _this$hot$getSelected;
|
135
|
-
return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
|
136
|
-
},
|
137
|
-
group: SHORTCUTS_GROUP
|
138
|
-
});
|
139
|
-
}
|
140
|
-
|
141
|
-
/**
|
142
|
-
* Unregister shortcuts responsible for toggling column sorting functionality.
|
143
|
-
*
|
144
|
-
* @private
|
145
|
-
*/
|
146
|
-
unregisterShortcuts() {
|
147
|
-
super.unregisterShortcuts();
|
148
|
-
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
149
|
-
}
|
150
|
-
|
151
116
|
/**
|
152
117
|
* Sorts the table by chosen columns and orders.
|
153
118
|
*
|
@@ -297,7 +262,7 @@ class MultiColumnSorting extends _columnSorting.ColumnSorting {
|
|
297
262
|
if (this.hot.getShortcutManager().isCtrlPressed()) {
|
298
263
|
this.hot.deselectCell();
|
299
264
|
this.hot.selectColumns(coords.col);
|
300
|
-
this.sort(this.getNextSortConfig(coords.col,
|
265
|
+
this.sort(this.getNextSortConfig(coords.col, APPEND_COLUMN_CONFIG_STRATEGY));
|
301
266
|
} else {
|
302
267
|
this.sort(this.getColumnNextConfig(coords.col));
|
303
268
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ColumnSorting } from "../columnSorting/index.mjs";
|
2
2
|
import { registerRootComparator } from "../columnSorting/sortService/index.mjs";
|
3
3
|
import { wasHeaderClickedProperly } from "../columnSorting/utils.mjs";
|
4
4
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
@@ -7,8 +7,8 @@ import { warnAboutPluginsConflict } from "./utils.mjs";
|
|
7
7
|
import { getClassesToAdd, getClassesToRemove } from "./domHelpers.mjs";
|
8
8
|
export const PLUGIN_KEY = 'multiColumnSorting';
|
9
9
|
export const PLUGIN_PRIORITY = 170;
|
10
|
+
const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
|
10
11
|
const CONFLICTED_PLUGIN_KEY = 'columnSorting';
|
11
|
-
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
12
12
|
registerRootComparator(PLUGIN_KEY, rootComparator);
|
13
13
|
|
14
14
|
/**
|
@@ -108,41 +108,6 @@ export class MultiColumnSorting extends ColumnSorting {
|
|
108
108
|
super.disablePlugin();
|
109
109
|
}
|
110
110
|
|
111
|
-
/**
|
112
|
-
* Register shortcuts responsible for toggling column sorting functionality.
|
113
|
-
*
|
114
|
-
* @private
|
115
|
-
*/
|
116
|
-
registerShortcuts() {
|
117
|
-
super.registerShortcuts();
|
118
|
-
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
119
|
-
keys: [['Control/Meta', 'Enter']],
|
120
|
-
callback: () => {
|
121
|
-
const {
|
122
|
-
highlight
|
123
|
-
} = this.hot.getSelectedRangeLast();
|
124
|
-
if (highlight.row === -1 && highlight.col >= 0) {
|
125
|
-
this.sort(this.getNextSortConfig(highlight.col, APPEND_COLUMN_CONFIG_STRATEGY));
|
126
|
-
}
|
127
|
-
},
|
128
|
-
runOnlyIf: () => {
|
129
|
-
var _this$hot$getSelected;
|
130
|
-
return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
|
131
|
-
},
|
132
|
-
group: SHORTCUTS_GROUP
|
133
|
-
});
|
134
|
-
}
|
135
|
-
|
136
|
-
/**
|
137
|
-
* Unregister shortcuts responsible for toggling column sorting functionality.
|
138
|
-
*
|
139
|
-
* @private
|
140
|
-
*/
|
141
|
-
unregisterShortcuts() {
|
142
|
-
super.unregisterShortcuts();
|
143
|
-
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
144
|
-
}
|
145
|
-
|
146
111
|
/**
|
147
112
|
* Sorts the table by chosen columns and orders.
|
148
113
|
*
|
@@ -5,8 +5,8 @@ exports.__esModule = true;
|
|
5
5
|
require("core-js/modules/es.array.push.js");
|
6
6
|
var _element = require("../../helpers/dom/element");
|
7
7
|
var _number = require("../../helpers/number");
|
8
|
-
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
9
8
|
var _event = require("../../helpers/dom/event");
|
9
|
+
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
10
10
|
var _console = require("../../helpers/console");
|
11
11
|
var _selection = require("../../selection");
|
12
12
|
var _base = require("../base");
|
@@ -158,10 +158,6 @@ class NestedHeaders extends _base.BasePlugin {
|
|
158
158
|
this.addHook('beforeOnCellMouseOver', function () {
|
159
159
|
return _this.onBeforeOnCellMouseOver(...arguments);
|
160
160
|
});
|
161
|
-
this.addHook('modifyTransformStart', function () {
|
162
|
-
return _this.onModifyTransformStart(...arguments);
|
163
|
-
});
|
164
|
-
this.addHook('afterSelection', () => this.updateFocusHighlightPosition());
|
165
161
|
this.addHook('afterGetColumnHeaderRenderers', array => this.onAfterGetColumnHeaderRenderers(array));
|
166
162
|
this.addHook('modifyColWidth', function () {
|
167
163
|
return _this.onModifyColWidth(...arguments);
|
@@ -175,14 +171,9 @@ class NestedHeaders extends _base.BasePlugin {
|
|
175
171
|
this.addHook('beforeCopy', function () {
|
176
172
|
return _this.onBeforeCopy(...arguments);
|
177
173
|
});
|
178
|
-
this.addHook('beforeSelectColumns', function () {
|
179
|
-
return _this.onBeforeSelectColumns(...arguments);
|
180
|
-
});
|
181
174
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
182
175
|
return _this.onAfterViewportColumnCalculatorOverride(...arguments);
|
183
176
|
});
|
184
|
-
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () => this.updateFocusHighlightPosition());
|
185
|
-
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () => this.updateFocusHighlightPosition());
|
186
177
|
super.enablePlugin();
|
187
178
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
188
179
|
}
|
@@ -398,34 +389,6 @@ class NestedHeaders extends _base.BasePlugin {
|
|
398
389
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
399
390
|
}
|
400
391
|
|
401
|
-
/**
|
402
|
-
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
403
|
-
* even when the logical coordinates point in-between the header.
|
404
|
-
*
|
405
|
-
* @private
|
406
|
-
*/
|
407
|
-
updateFocusHighlightPosition() {
|
408
|
-
var _this$hot;
|
409
|
-
const selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
410
|
-
if (!selection) {
|
411
|
-
return;
|
412
|
-
}
|
413
|
-
const {
|
414
|
-
highlight
|
415
|
-
} = selection;
|
416
|
-
const isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
417
|
-
if (isNestedHeadersRange) {
|
418
|
-
const columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
419
|
-
const focusHighlight = this.hot.selection.highlight.getFocus();
|
420
|
-
|
421
|
-
// Correct the highlight/focus selection to highlight the correct TH element
|
422
|
-
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
423
|
-
focusHighlight.visualCellRange.from.col = columnIndex;
|
424
|
-
focusHighlight.visualCellRange.to.col = columnIndex;
|
425
|
-
focusHighlight.commit();
|
426
|
-
}
|
427
|
-
}
|
428
|
-
|
429
392
|
/**
|
430
393
|
* Allows to control which header DOM element will be used to highlight.
|
431
394
|
*
|
@@ -441,6 +404,7 @@ class NestedHeaders extends _base.BasePlugin {
|
|
441
404
|
return visualColumn;
|
442
405
|
}
|
443
406
|
const {
|
407
|
+
classNames,
|
444
408
|
columnCursor,
|
445
409
|
selectionType,
|
446
410
|
selectionWidth
|
@@ -455,8 +419,8 @@ class NestedHeaders extends _base.BasePlugin {
|
|
455
419
|
}
|
456
420
|
} else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
|
457
421
|
if (colspan > selectionWidth - columnCursor || !isRoot) {
|
458
|
-
//
|
459
|
-
|
422
|
+
// Reset the class names array so the generated TH element won't be modified.
|
423
|
+
classNames.length = 0;
|
460
424
|
}
|
461
425
|
}
|
462
426
|
return visualColumn;
|
@@ -610,90 +574,13 @@ class NestedHeaders extends _base.BasePlugin {
|
|
610
574
|
controller.cell = true;
|
611
575
|
const columnsToSelect = [];
|
612
576
|
if (coords.col < from.col) {
|
613
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex
|
577
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
614
578
|
} else if (coords.col > from.col) {
|
615
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1
|
579
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
616
580
|
} else {
|
617
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1
|
618
|
-
}
|
619
|
-
this.hot.selection.selectColumns(...columnsToSelect);
|
620
|
-
}
|
621
|
-
|
622
|
-
/**
|
623
|
-
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
624
|
-
*
|
625
|
-
* @private
|
626
|
-
* @param {object} delta The transformation delta.
|
627
|
-
*/
|
628
|
-
onModifyTransformStart(delta) {
|
629
|
-
const {
|
630
|
-
highlight
|
631
|
-
} = this.hot.getSelectedRangeLast();
|
632
|
-
const nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
633
|
-
const isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
634
|
-
if (!isNestedHeadersRange) {
|
635
|
-
return;
|
636
|
-
}
|
637
|
-
const visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
638
|
-
const visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
639
|
-
if (delta.col < 0) {
|
640
|
-
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
641
|
-
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
642
|
-
if (notHiddenColumnIndex === null) {
|
643
|
-
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
644
|
-
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
645
|
-
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
646
|
-
} else {
|
647
|
-
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
648
|
-
}
|
649
|
-
} else if (delta.col > 0) {
|
650
|
-
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
651
|
-
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, 1);
|
652
|
-
if (notHiddenColumnIndex === null) {
|
653
|
-
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
654
|
-
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
655
|
-
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
656
|
-
} else {
|
657
|
-
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, notHiddenColumnIndex) - 1, 1);
|
658
|
-
}
|
659
|
-
}
|
660
|
-
}
|
661
|
-
|
662
|
-
/**
|
663
|
-
* The hook observes the column selection from the Selection API and modifies the column range to
|
664
|
-
* ensure that the whole nested column will be covered.
|
665
|
-
*
|
666
|
-
* @private
|
667
|
-
* @param {*} from The coords object where the selection starts.
|
668
|
-
* @param {*} to The coords object where the selection ends.
|
669
|
-
*/
|
670
|
-
onBeforeSelectColumns(from, to) {
|
671
|
-
const headerLevel = from.row;
|
672
|
-
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
673
|
-
row: headerLevel,
|
674
|
-
col: from.col
|
675
|
-
});
|
676
|
-
const endNodeData = this._getHeaderTreeNodeDataByCoords({
|
677
|
-
row: headerLevel,
|
678
|
-
col: to.col
|
679
|
-
});
|
680
|
-
if (to.col < from.col) {
|
681
|
-
// Column selection from right to left
|
682
|
-
if (startNodeData) {
|
683
|
-
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
684
|
-
}
|
685
|
-
if (endNodeData) {
|
686
|
-
to.col = endNodeData.columnIndex;
|
687
|
-
}
|
688
|
-
} else if (to.col >= from.col) {
|
689
|
-
// Column selection from left to right or a single column selection
|
690
|
-
if (startNodeData) {
|
691
|
-
from.col = startNodeData.columnIndex;
|
692
|
-
}
|
693
|
-
if (endNodeData) {
|
694
|
-
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
695
|
-
}
|
581
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
696
582
|
}
|
583
|
+
this.hot.selectColumns(...columnsToSelect);
|
697
584
|
}
|
698
585
|
|
699
586
|
/**
|
@@ -12,8 +12,8 @@ function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!priva
|
|
12
12
|
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
13
13
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
14
14
|
import { isNumeric } from "../../helpers/number.mjs";
|
15
|
-
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
16
15
|
import { isLeftClick, isRightClick } from "../../helpers/dom/event.mjs";
|
16
|
+
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
17
17
|
import { warn } from "../../helpers/console.mjs";
|
18
18
|
import { ACTIVE_HEADER_TYPE, HEADER_TYPE } from "../../selection/index.mjs";
|
19
19
|
import { BasePlugin } from "../base/index.mjs";
|
@@ -152,10 +152,6 @@ export class NestedHeaders extends BasePlugin {
|
|
152
152
|
this.addHook('beforeOnCellMouseOver', function () {
|
153
153
|
return _this.onBeforeOnCellMouseOver(...arguments);
|
154
154
|
});
|
155
|
-
this.addHook('modifyTransformStart', function () {
|
156
|
-
return _this.onModifyTransformStart(...arguments);
|
157
|
-
});
|
158
|
-
this.addHook('afterSelection', () => this.updateFocusHighlightPosition());
|
159
155
|
this.addHook('afterGetColumnHeaderRenderers', array => this.onAfterGetColumnHeaderRenderers(array));
|
160
156
|
this.addHook('modifyColWidth', function () {
|
161
157
|
return _this.onModifyColWidth(...arguments);
|
@@ -169,14 +165,9 @@ export class NestedHeaders extends BasePlugin {
|
|
169
165
|
this.addHook('beforeCopy', function () {
|
170
166
|
return _this.onBeforeCopy(...arguments);
|
171
167
|
});
|
172
|
-
this.addHook('beforeSelectColumns', function () {
|
173
|
-
return _this.onBeforeSelectColumns(...arguments);
|
174
|
-
});
|
175
168
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
176
169
|
return _this.onAfterViewportColumnCalculatorOverride(...arguments);
|
177
170
|
});
|
178
|
-
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', () => this.updateFocusHighlightPosition());
|
179
|
-
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', () => this.updateFocusHighlightPosition());
|
180
171
|
super.enablePlugin();
|
181
172
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
182
173
|
}
|
@@ -392,34 +383,6 @@ export class NestedHeaders extends BasePlugin {
|
|
392
383
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
393
384
|
}
|
394
385
|
|
395
|
-
/**
|
396
|
-
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
397
|
-
* even when the logical coordinates point in-between the header.
|
398
|
-
*
|
399
|
-
* @private
|
400
|
-
*/
|
401
|
-
updateFocusHighlightPosition() {
|
402
|
-
var _this$hot;
|
403
|
-
const selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
404
|
-
if (!selection) {
|
405
|
-
return;
|
406
|
-
}
|
407
|
-
const {
|
408
|
-
highlight
|
409
|
-
} = selection;
|
410
|
-
const isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
411
|
-
if (isNestedHeadersRange) {
|
412
|
-
const columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
413
|
-
const focusHighlight = this.hot.selection.highlight.getFocus();
|
414
|
-
|
415
|
-
// Correct the highlight/focus selection to highlight the correct TH element
|
416
|
-
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
417
|
-
focusHighlight.visualCellRange.from.col = columnIndex;
|
418
|
-
focusHighlight.visualCellRange.to.col = columnIndex;
|
419
|
-
focusHighlight.commit();
|
420
|
-
}
|
421
|
-
}
|
422
|
-
|
423
386
|
/**
|
424
387
|
* Allows to control which header DOM element will be used to highlight.
|
425
388
|
*
|
@@ -435,6 +398,7 @@ export class NestedHeaders extends BasePlugin {
|
|
435
398
|
return visualColumn;
|
436
399
|
}
|
437
400
|
const {
|
401
|
+
classNames,
|
438
402
|
columnCursor,
|
439
403
|
selectionType,
|
440
404
|
selectionWidth
|
@@ -449,8 +413,8 @@ export class NestedHeaders extends BasePlugin {
|
|
449
413
|
}
|
450
414
|
} else if (selectionType === ACTIVE_HEADER_TYPE) {
|
451
415
|
if (colspan > selectionWidth - columnCursor || !isRoot) {
|
452
|
-
//
|
453
|
-
|
416
|
+
// Reset the class names array so the generated TH element won't be modified.
|
417
|
+
classNames.length = 0;
|
454
418
|
}
|
455
419
|
}
|
456
420
|
return visualColumn;
|
@@ -604,90 +568,13 @@ export class NestedHeaders extends BasePlugin {
|
|
604
568
|
controller.cell = true;
|
605
569
|
const columnsToSelect = [];
|
606
570
|
if (coords.col < from.col) {
|
607
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex
|
571
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
608
572
|
} else if (coords.col > from.col) {
|
609
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1
|
573
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
610
574
|
} else {
|
611
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1
|
612
|
-
}
|
613
|
-
this.hot.selection.selectColumns(...columnsToSelect);
|
614
|
-
}
|
615
|
-
|
616
|
-
/**
|
617
|
-
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
618
|
-
*
|
619
|
-
* @private
|
620
|
-
* @param {object} delta The transformation delta.
|
621
|
-
*/
|
622
|
-
onModifyTransformStart(delta) {
|
623
|
-
const {
|
624
|
-
highlight
|
625
|
-
} = this.hot.getSelectedRangeLast();
|
626
|
-
const nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
627
|
-
const isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
628
|
-
if (!isNestedHeadersRange) {
|
629
|
-
return;
|
630
|
-
}
|
631
|
-
const visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
632
|
-
const visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
633
|
-
if (delta.col < 0) {
|
634
|
-
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
635
|
-
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
636
|
-
if (notHiddenColumnIndex === null) {
|
637
|
-
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
638
|
-
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
639
|
-
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
640
|
-
} else {
|
641
|
-
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
642
|
-
}
|
643
|
-
} else if (delta.col > 0) {
|
644
|
-
const nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
645
|
-
const notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, 1);
|
646
|
-
if (notHiddenColumnIndex === null) {
|
647
|
-
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
648
|
-
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
649
|
-
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
650
|
-
} else {
|
651
|
-
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, notHiddenColumnIndex) - 1, 1);
|
652
|
-
}
|
653
|
-
}
|
654
|
-
}
|
655
|
-
|
656
|
-
/**
|
657
|
-
* The hook observes the column selection from the Selection API and modifies the column range to
|
658
|
-
* ensure that the whole nested column will be covered.
|
659
|
-
*
|
660
|
-
* @private
|
661
|
-
* @param {*} from The coords object where the selection starts.
|
662
|
-
* @param {*} to The coords object where the selection ends.
|
663
|
-
*/
|
664
|
-
onBeforeSelectColumns(from, to) {
|
665
|
-
const headerLevel = from.row;
|
666
|
-
const startNodeData = this._getHeaderTreeNodeDataByCoords({
|
667
|
-
row: headerLevel,
|
668
|
-
col: from.col
|
669
|
-
});
|
670
|
-
const endNodeData = this._getHeaderTreeNodeDataByCoords({
|
671
|
-
row: headerLevel,
|
672
|
-
col: to.col
|
673
|
-
});
|
674
|
-
if (to.col < from.col) {
|
675
|
-
// Column selection from right to left
|
676
|
-
if (startNodeData) {
|
677
|
-
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
678
|
-
}
|
679
|
-
if (endNodeData) {
|
680
|
-
to.col = endNodeData.columnIndex;
|
681
|
-
}
|
682
|
-
} else if (to.col >= from.col) {
|
683
|
-
// Column selection from left to right or a single column selection
|
684
|
-
if (startNodeData) {
|
685
|
-
from.col = startNodeData.columnIndex;
|
686
|
-
}
|
687
|
-
if (endNodeData) {
|
688
|
-
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
689
|
-
}
|
575
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
690
576
|
}
|
577
|
+
this.hot.selectColumns(...columnsToSelect);
|
691
578
|
}
|
692
579
|
|
693
580
|
/**
|
@@ -367,43 +367,6 @@ class StateManager {
|
|
367
367
|
return stepBackColumn;
|
368
368
|
}
|
369
369
|
|
370
|
-
/**
|
371
|
-
* The method is helpful in cases where the column index targets in-between currently
|
372
|
-
* collapsed column. In that case, the method returns the right-most column index
|
373
|
-
* where the nested header ends.
|
374
|
-
*
|
375
|
-
* @param {number} headerLevel Header level (there is support for negative and positive values).
|
376
|
-
* @param {number} columnIndex A visual column index.
|
377
|
-
* @returns {number}
|
378
|
-
*/
|
379
|
-
findRightMostColumnIndex(headerLevel, columnIndex) {
|
380
|
-
var _this$getHeaderSettin3;
|
381
|
-
const {
|
382
|
-
isRoot,
|
383
|
-
origColspan
|
384
|
-
} = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
|
385
|
-
isRoot: true,
|
386
|
-
origColspan: 1
|
387
|
-
};
|
388
|
-
if (isRoot) {
|
389
|
-
return columnIndex + origColspan - 1;
|
390
|
-
}
|
391
|
-
let stepForthColumn = columnIndex + 1;
|
392
|
-
while (stepForthColumn < this.getColumnsCount()) {
|
393
|
-
var _this$getHeaderSettin4;
|
394
|
-
const {
|
395
|
-
isRoot: isRootNode
|
396
|
-
} = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
|
397
|
-
isRoot: true
|
398
|
-
};
|
399
|
-
if (isRootNode) {
|
400
|
-
break;
|
401
|
-
}
|
402
|
-
stepForthColumn += 1;
|
403
|
-
}
|
404
|
-
return stepForthColumn - 1;
|
405
|
-
}
|
406
|
-
|
407
370
|
/**
|
408
371
|
* Gets a total number of headers levels.
|
409
372
|
*
|