handsontable 0.0.0-next-03bda88-20230622 → 0.0.0-next-c3d199b-20230626
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/CHANGELOG.md +0 -31
- 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 +15283 -12109
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +115 -115
- package/dist/handsontable.js +23364 -20190
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +4 -4
- package/editorManager.js +21 -94
- package/editorManager.mjs +26 -98
- package/editors/textEditor/textEditor.js +3 -11
- package/editors/textEditor/textEditor.mjs +4 -12
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- 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/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +263 -224
- package/plugins/comments/comments.mjs +271 -234
- package/plugins/comments/contextMenuItem/addEditComment.js +51 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +63 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +55 -0
- package/plugins/comments/contextMenuItem/removeComment.js +48 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +80 -29
- package/plugins/contextMenu/contextMenu.mjs +81 -30
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +25 -16
- package/plugins/contextMenu/utils.mjs +24 -15
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +6 -2
- package/plugins/copyPaste/copyPaste.mjs +6 -2
- package/plugins/customBorders/customBorders.js +25 -53
- package/plugins/customBorders/customBorders.mjs +26 -54
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +94 -30
- package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
- 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 +247 -0
- package/shortcutContexts/grid.mjs +243 -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/shortcuts/recorder.js +2 -2
- package/shortcuts/recorder.mjs +2 -2
- package/shortcuts/utils.js +21 -5
- package/shortcuts/utils.mjs +20 -4
- package/tableView.js +63 -11
- package/tableView.mjs +63 -11
- 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
@@ -0,0 +1,243 @@
|
|
1
|
+
import { isDefined } from "../helpers/mixed.mjs";
|
2
|
+
import { GRID_GROUP, EDITOR_EDIT_GROUP } from "./constants.mjs";
|
3
|
+
import { createKeyboardShortcutCommandsPool } from "./commands/index.mjs";
|
4
|
+
/**
|
5
|
+
* The context that defines shortcut list available for selected cell or cells.
|
6
|
+
*
|
7
|
+
* @param {Handsontable} hot The Handsontable instance.
|
8
|
+
*/
|
9
|
+
export function shortcutsGridContext(hot) {
|
10
|
+
var context = hot.getShortcutManager().addContext('grid');
|
11
|
+
var commandsPool = createKeyboardShortcutCommandsPool(hot);
|
12
|
+
var config = {
|
13
|
+
runOnlyIf: function runOnlyIf() {
|
14
|
+
var _hot$getSettings = hot.getSettings(),
|
15
|
+
navigableHeaders = _hot$getSettings.navigableHeaders;
|
16
|
+
return isDefined(hot.getSelected()) && (navigableHeaders || !navigableHeaders && hot.countRenderedRows() > 0 && hot.countRenderedCols() > 0);
|
17
|
+
},
|
18
|
+
group: GRID_GROUP
|
19
|
+
};
|
20
|
+
context.addShortcuts([{
|
21
|
+
keys: [['F2']],
|
22
|
+
callback: function callback(event) {
|
23
|
+
return commandsPool.editorFastOpen(event);
|
24
|
+
}
|
25
|
+
}, {
|
26
|
+
keys: [['Enter'], ['Enter', 'Shift']],
|
27
|
+
callback: function callback(event, keys) {
|
28
|
+
return commandsPool.editorOpen(event, keys);
|
29
|
+
}
|
30
|
+
}, {
|
31
|
+
keys: [['Backspace'], ['Delete']],
|
32
|
+
callback: function callback() {
|
33
|
+
return commandsPool.emptySelectedCells();
|
34
|
+
}
|
35
|
+
}], {
|
36
|
+
group: EDITOR_EDIT_GROUP,
|
37
|
+
runOnlyIf: function runOnlyIf() {
|
38
|
+
return isDefined(hot.getSelected());
|
39
|
+
}
|
40
|
+
});
|
41
|
+
context.addShortcuts([{
|
42
|
+
keys: [['Control/Meta', 'A'], ['Control/Meta', 'Shift', 'Space']],
|
43
|
+
callback: function callback() {
|
44
|
+
return commandsPool.selectAll();
|
45
|
+
}
|
46
|
+
}, {
|
47
|
+
keys: [['Control/Meta', 'Enter']],
|
48
|
+
callback: function callback() {
|
49
|
+
return commandsPool.populateSelectedCellsData();
|
50
|
+
},
|
51
|
+
runOnlyIf: function runOnlyIf() {
|
52
|
+
return !hot.getSelectedRangeLast().highlight.isHeader() && hot.getSelectedRangeLast().getCellsCount() > 1;
|
53
|
+
}
|
54
|
+
}, {
|
55
|
+
keys: [['Control', 'Space']],
|
56
|
+
captureCtrl: true,
|
57
|
+
callback: function callback() {
|
58
|
+
return commandsPool.extendCellsSelectionToColumns();
|
59
|
+
}
|
60
|
+
}, {
|
61
|
+
keys: [['Shift', 'Space']],
|
62
|
+
stopPropagation: true,
|
63
|
+
callback: function callback() {
|
64
|
+
return commandsPool.extendCellsSelectionToRows();
|
65
|
+
}
|
66
|
+
}, {
|
67
|
+
keys: [['ArrowUp']],
|
68
|
+
callback: function callback() {
|
69
|
+
return commandsPool.moveCellSelectionUp();
|
70
|
+
}
|
71
|
+
}, {
|
72
|
+
keys: [['ArrowUp', 'Control/Meta']],
|
73
|
+
captureCtrl: true,
|
74
|
+
callback: function callback() {
|
75
|
+
return commandsPool.moveCellSelectionToMostTop();
|
76
|
+
}
|
77
|
+
}, {
|
78
|
+
keys: [['ArrowUp', 'Shift']],
|
79
|
+
callback: function callback() {
|
80
|
+
return commandsPool.extendCellsSelectionUp();
|
81
|
+
}
|
82
|
+
}, {
|
83
|
+
keys: [['ArrowUp', 'Shift', 'Control/Meta']],
|
84
|
+
captureCtrl: true,
|
85
|
+
callback: function callback() {
|
86
|
+
return commandsPool.extendCellsSelectionToMostTop();
|
87
|
+
},
|
88
|
+
runOnlyIf: function runOnlyIf() {
|
89
|
+
return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByColumnHeader());
|
90
|
+
}
|
91
|
+
}, {
|
92
|
+
keys: [['ArrowDown']],
|
93
|
+
callback: function callback() {
|
94
|
+
return commandsPool.moveCellSelectionDown();
|
95
|
+
}
|
96
|
+
}, {
|
97
|
+
keys: [['ArrowDown', 'Control/Meta']],
|
98
|
+
captureCtrl: true,
|
99
|
+
callback: function callback() {
|
100
|
+
return commandsPool.moveCellSelectionToMostBottom();
|
101
|
+
}
|
102
|
+
}, {
|
103
|
+
keys: [['ArrowDown', 'Shift']],
|
104
|
+
callback: function callback() {
|
105
|
+
return commandsPool.extendCellsSelectionDown();
|
106
|
+
}
|
107
|
+
}, {
|
108
|
+
keys: [['ArrowDown', 'Shift', 'Control/Meta']],
|
109
|
+
captureCtrl: true,
|
110
|
+
callback: function callback() {
|
111
|
+
return commandsPool.extendCellsSelectionToMostBottom();
|
112
|
+
},
|
113
|
+
runOnlyIf: function runOnlyIf() {
|
114
|
+
return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByColumnHeader());
|
115
|
+
}
|
116
|
+
}, {
|
117
|
+
keys: [['ArrowLeft']],
|
118
|
+
callback: function callback() {
|
119
|
+
return commandsPool.moveCellSelectionLeft();
|
120
|
+
}
|
121
|
+
}, {
|
122
|
+
keys: [['ArrowLeft', 'Control/Meta']],
|
123
|
+
captureCtrl: true,
|
124
|
+
callback: function callback() {
|
125
|
+
return commandsPool.moveCellSelectionToMostLeft();
|
126
|
+
}
|
127
|
+
}, {
|
128
|
+
keys: [['ArrowLeft', 'Shift']],
|
129
|
+
callback: function callback() {
|
130
|
+
return commandsPool.extendCellsSelectionLeft();
|
131
|
+
}
|
132
|
+
}, {
|
133
|
+
keys: [['ArrowLeft', 'Shift', 'Control/Meta']],
|
134
|
+
captureCtrl: true,
|
135
|
+
callback: function callback() {
|
136
|
+
return commandsPool.extendCellsSelectionToMostLeft();
|
137
|
+
},
|
138
|
+
runOnlyIf: function runOnlyIf() {
|
139
|
+
return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByRowHeader());
|
140
|
+
}
|
141
|
+
}, {
|
142
|
+
keys: [['ArrowRight']],
|
143
|
+
callback: function callback() {
|
144
|
+
return commandsPool.moveCellSelectionRight();
|
145
|
+
}
|
146
|
+
}, {
|
147
|
+
keys: [['ArrowRight', 'Control/Meta']],
|
148
|
+
captureCtrl: true,
|
149
|
+
callback: function callback() {
|
150
|
+
return commandsPool.moveCellSelectionToMostRight();
|
151
|
+
}
|
152
|
+
}, {
|
153
|
+
keys: [['ArrowRight', 'Shift']],
|
154
|
+
callback: function callback() {
|
155
|
+
return commandsPool.extendCellsSelectionRight();
|
156
|
+
}
|
157
|
+
}, {
|
158
|
+
keys: [['ArrowRight', 'Shift', 'Control/Meta']],
|
159
|
+
captureCtrl: true,
|
160
|
+
callback: function callback() {
|
161
|
+
return commandsPool.extendCellsSelectionToMostRight();
|
162
|
+
},
|
163
|
+
runOnlyIf: function runOnlyIf() {
|
164
|
+
return !(hot.selection.isSelectedByCorner() || hot.selection.isSelectedByRowHeader());
|
165
|
+
}
|
166
|
+
}, {
|
167
|
+
keys: [['Home']],
|
168
|
+
captureCtrl: true,
|
169
|
+
callback: function callback() {
|
170
|
+
return commandsPool.moveCellSelectionToMostInlineStart();
|
171
|
+
},
|
172
|
+
runOnlyIf: function runOnlyIf() {
|
173
|
+
return hot.view.isMainTableNotFullyCoveredByOverlays();
|
174
|
+
}
|
175
|
+
}, {
|
176
|
+
keys: [['Home', 'Shift']],
|
177
|
+
callback: function callback() {
|
178
|
+
return commandsPool.extendCellsSelectionToMostInlineStart();
|
179
|
+
}
|
180
|
+
}, {
|
181
|
+
keys: [['Home', 'Control/Meta']],
|
182
|
+
captureCtrl: true,
|
183
|
+
callback: function callback() {
|
184
|
+
return commandsPool.moveCellSelectionToMostTopInlineStart();
|
185
|
+
},
|
186
|
+
runOnlyIf: function runOnlyIf() {
|
187
|
+
return hot.view.isMainTableNotFullyCoveredByOverlays();
|
188
|
+
}
|
189
|
+
}, {
|
190
|
+
keys: [['End']],
|
191
|
+
captureCtrl: true,
|
192
|
+
callback: function callback() {
|
193
|
+
return commandsPool.moveCellSelectionToMostInlineEnd();
|
194
|
+
},
|
195
|
+
runOnlyIf: function runOnlyIf() {
|
196
|
+
return hot.view.isMainTableNotFullyCoveredByOverlays();
|
197
|
+
}
|
198
|
+
}, {
|
199
|
+
keys: [['End', 'Shift']],
|
200
|
+
callback: function callback() {
|
201
|
+
return commandsPool.extendCellsSelectionToMostInlineEnd();
|
202
|
+
}
|
203
|
+
}, {
|
204
|
+
keys: [['End', 'Control/Meta']],
|
205
|
+
captureCtrl: true,
|
206
|
+
callback: function callback() {
|
207
|
+
return commandsPool.moveCellSelectionToMostBottomInlineEnd();
|
208
|
+
},
|
209
|
+
runOnlyIf: function runOnlyIf() {
|
210
|
+
return hot.view.isMainTableNotFullyCoveredByOverlays();
|
211
|
+
}
|
212
|
+
}, {
|
213
|
+
keys: [['PageUp']],
|
214
|
+
callback: function callback() {
|
215
|
+
return commandsPool.moveCellSelectionUpByViewportHight();
|
216
|
+
}
|
217
|
+
}, {
|
218
|
+
keys: [['PageUp', 'Shift']],
|
219
|
+
callback: function callback() {
|
220
|
+
return commandsPool.extendCellsSelectionUpByViewportHeight();
|
221
|
+
}
|
222
|
+
}, {
|
223
|
+
keys: [['PageDown']],
|
224
|
+
callback: function callback() {
|
225
|
+
return commandsPool.moveCellSelectionDownByViewportHeight();
|
226
|
+
}
|
227
|
+
}, {
|
228
|
+
keys: [['PageDown', 'Shift']],
|
229
|
+
callback: function callback() {
|
230
|
+
return commandsPool.extendCellsSelectionDownByViewportHeight();
|
231
|
+
}
|
232
|
+
}, {
|
233
|
+
keys: [['Tab']],
|
234
|
+
callback: function callback() {
|
235
|
+
return commandsPool.moveCellSelectionInlineStart();
|
236
|
+
}
|
237
|
+
}, {
|
238
|
+
keys: [['Shift', 'Tab']],
|
239
|
+
callback: function callback() {
|
240
|
+
return commandsPool.moveCellSelectionInlineEnd();
|
241
|
+
}
|
242
|
+
}], config);
|
243
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
require("core-js/modules/es.object.keys.js");
|
4
|
+
exports.__esModule = true;
|
5
|
+
var _exportNames = {
|
6
|
+
registerAllShortcutContexts: true
|
7
|
+
};
|
8
|
+
exports.registerAllShortcutContexts = registerAllShortcutContexts;
|
9
|
+
require("core-js/modules/es.object.to-string.js");
|
10
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
11
|
+
var _editor = require("./editor");
|
12
|
+
var _grid = require("./grid");
|
13
|
+
var _constants = require("./constants");
|
14
|
+
Object.keys(_constants).forEach(function (key) {
|
15
|
+
if (key === "default" || key === "__esModule") return;
|
16
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
17
|
+
if (key in exports && exports[key] === _constants[key]) return;
|
18
|
+
exports[key] = _constants[key];
|
19
|
+
});
|
20
|
+
/**
|
21
|
+
* Register all shortcut contexts.
|
22
|
+
*
|
23
|
+
* @param {Handsontable} hotInstance The Handsontable instance.
|
24
|
+
*/
|
25
|
+
function registerAllShortcutContexts(hotInstance) {
|
26
|
+
[_editor.shortcutsEditorContext, _grid.shortcutsGridContext].forEach(function (context) {
|
27
|
+
return context(hotInstance);
|
28
|
+
});
|
29
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
import "core-js/modules/es.object.to-string.js";
|
2
|
+
import "core-js/modules/web.dom-collections.for-each.js";
|
3
|
+
import { shortcutsEditorContext } from "./editor.mjs";
|
4
|
+
import { shortcutsGridContext } from "./grid.mjs";
|
5
|
+
export * from "./constants.mjs";
|
6
|
+
/**
|
7
|
+
* Register all shortcut contexts.
|
8
|
+
*
|
9
|
+
* @param {Handsontable} hotInstance The Handsontable instance.
|
10
|
+
*/
|
11
|
+
export function registerAllShortcutContexts(hotInstance) {
|
12
|
+
[shortcutsEditorContext, shortcutsGridContext].forEach(function (context) {
|
13
|
+
return context(hotInstance);
|
14
|
+
});
|
15
|
+
}
|
package/shortcuts/manager.js
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.createShortcutManager = void 0;
|
5
5
|
var _uniqueMap = require("../utils/dataStructures/uniqueMap");
|
6
|
+
var _event = require("../helpers/dom/event");
|
6
7
|
var _context = require("./context");
|
7
8
|
var _recorder = require("./recorder");
|
8
9
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
@@ -126,6 +127,7 @@ var createShortcutManager = function createShortcutManager(_ref) {
|
|
126
127
|
event.preventDefault();
|
127
128
|
}
|
128
129
|
if (stopPropagation) {
|
130
|
+
(0, _event.stopImmediatePropagation)(event);
|
129
131
|
event.stopPropagation();
|
130
132
|
}
|
131
133
|
if (isExecutionCancelled) {
|
package/shortcuts/manager.mjs
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { createUniqueMap } from "../utils/dataStructures/uniqueMap.mjs";
|
2
|
+
import { stopImmediatePropagation } from "../helpers/dom/event.mjs";
|
2
3
|
import { createContext } from "./context.mjs";
|
3
4
|
import { useRecorder } from "./recorder.mjs";
|
4
5
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
@@ -121,6 +122,7 @@ export var createShortcutManager = function createShortcutManager(_ref) {
|
|
121
122
|
event.preventDefault();
|
122
123
|
}
|
123
124
|
if (stopPropagation) {
|
125
|
+
stopImmediatePropagation(event);
|
124
126
|
event.stopPropagation();
|
125
127
|
}
|
126
128
|
if (isExecutionCancelled) {
|
package/shortcuts/recorder.js
CHANGED
@@ -88,7 +88,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
|
|
88
88
|
if (event.keyCode === 229 || result === false || (0, _event.isImmediatePropagationStopped)(event)) {
|
89
89
|
return;
|
90
90
|
}
|
91
|
-
var pressedKey = (0, _utils.normalizeEventKey)(event
|
91
|
+
var pressedKey = (0, _utils.normalizeEventKey)(event);
|
92
92
|
var extraModifierKeys = [];
|
93
93
|
if (isModifierKey(pressedKey)) {
|
94
94
|
modifierKeysObserver.press(pressedKey);
|
@@ -114,7 +114,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
|
|
114
114
|
if (handleEvent(event) === false) {
|
115
115
|
return;
|
116
116
|
}
|
117
|
-
var pressedKey = (0, _utils.normalizeEventKey)(event
|
117
|
+
var pressedKey = (0, _utils.normalizeEventKey)(event);
|
118
118
|
if (isModifierKey(pressedKey) === false) {
|
119
119
|
return;
|
120
120
|
}
|
package/shortcuts/recorder.mjs
CHANGED
@@ -84,7 +84,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
|
|
84
84
|
if (event.keyCode === 229 || result === false || isImmediatePropagationStopped(event)) {
|
85
85
|
return;
|
86
86
|
}
|
87
|
-
var pressedKey = normalizeEventKey(event
|
87
|
+
var pressedKey = normalizeEventKey(event);
|
88
88
|
var extraModifierKeys = [];
|
89
89
|
if (isModifierKey(pressedKey)) {
|
90
90
|
modifierKeysObserver.press(pressedKey);
|
@@ -110,7 +110,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
|
|
110
110
|
if (handleEvent(event) === false) {
|
111
111
|
return;
|
112
112
|
}
|
113
|
-
var pressedKey = normalizeEventKey(event
|
113
|
+
var pressedKey = normalizeEventKey(event);
|
114
114
|
if (isModifierKey(pressedKey) === false) {
|
115
115
|
return;
|
116
116
|
}
|
package/shortcuts/utils.js
CHANGED
@@ -10,6 +10,10 @@ require("core-js/modules/web.dom-collections.iterator.js");
|
|
10
10
|
require("core-js/modules/es.array.join.js");
|
11
11
|
require("core-js/modules/es.array.sort.js");
|
12
12
|
require("core-js/modules/es.array.map.js");
|
13
|
+
require("core-js/modules/es.regexp.constructor.js");
|
14
|
+
require("core-js/modules/es.regexp.exec.js");
|
15
|
+
require("core-js/modules/es.regexp.to-string.js");
|
16
|
+
require("core-js/modules/es.string.replace.js");
|
13
17
|
// This file handles key-name discrepancies between browsers.
|
14
18
|
// For the list of discrepancies, go to: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values.
|
15
19
|
var mappings = new Map([[' ', 'space'],
|
@@ -46,13 +50,25 @@ var getKeysList = function getKeysList(normalizedKeys) {
|
|
46
50
|
};
|
47
51
|
|
48
52
|
/**
|
49
|
-
*
|
53
|
+
* The regex tests if the event.code matches to the pattern and it's used to extract letters and digits from
|
54
|
+
* the string.
|
55
|
+
*/
|
56
|
+
exports.getKeysList = getKeysList;
|
57
|
+
var codeToKeyRegExp = new RegExp('^(?:Key|Digit)([A-Z0-9])$');
|
58
|
+
|
59
|
+
/**
|
60
|
+
* Normalizes a keyboard event key value to a key before its modification. When the keyboard event
|
61
|
+
* is triggered with Alt, Control or Shift keys the `key` property contains modified key e.g. for Alt+L
|
62
|
+
* it will be `ł`. But that value is only valid for polish keyboard layout. To fix that limitations, for
|
63
|
+
* letters and digits the value is taken from the `code` property which holds original value before
|
64
|
+
* transformation.
|
50
65
|
*
|
51
|
-
* @param {
|
66
|
+
* @param {Event} event The KeyboardEvent object.
|
52
67
|
* @returns {string}
|
53
68
|
*/
|
54
|
-
|
55
|
-
var
|
56
|
-
|
69
|
+
var normalizeEventKey = function normalizeEventKey(_ref) {
|
70
|
+
var key = _ref.key,
|
71
|
+
code = _ref.code;
|
72
|
+
return (codeToKeyRegExp.test(code) ? code.replace(codeToKeyRegExp, '$1') : key).toLowerCase();
|
57
73
|
};
|
58
74
|
exports.normalizeEventKey = normalizeEventKey;
|
package/shortcuts/utils.mjs
CHANGED
@@ -6,6 +6,10 @@ import "core-js/modules/web.dom-collections.iterator.js";
|
|
6
6
|
import "core-js/modules/es.array.join.js";
|
7
7
|
import "core-js/modules/es.array.sort.js";
|
8
8
|
import "core-js/modules/es.array.map.js";
|
9
|
+
import "core-js/modules/es.regexp.constructor.js";
|
10
|
+
import "core-js/modules/es.regexp.exec.js";
|
11
|
+
import "core-js/modules/es.regexp.to-string.js";
|
12
|
+
import "core-js/modules/es.string.replace.js";
|
9
13
|
// This file handles key-name discrepancies between browsers.
|
10
14
|
// For the list of discrepancies, go to: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values.
|
11
15
|
var mappings = new Map([[' ', 'space'],
|
@@ -41,11 +45,23 @@ export var getKeysList = function getKeysList(normalizedKeys) {
|
|
41
45
|
};
|
42
46
|
|
43
47
|
/**
|
44
|
-
*
|
48
|
+
* The regex tests if the event.code matches to the pattern and it's used to extract letters and digits from
|
49
|
+
* the string.
|
50
|
+
*/
|
51
|
+
var codeToKeyRegExp = new RegExp('^(?:Key|Digit)([A-Z0-9])$');
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Normalizes a keyboard event key value to a key before its modification. When the keyboard event
|
55
|
+
* is triggered with Alt, Control or Shift keys the `key` property contains modified key e.g. for Alt+L
|
56
|
+
* it will be `ł`. But that value is only valid for polish keyboard layout. To fix that limitations, for
|
57
|
+
* letters and digits the value is taken from the `code` property which holds original value before
|
58
|
+
* transformation.
|
45
59
|
*
|
46
|
-
* @param {
|
60
|
+
* @param {Event} event The KeyboardEvent object.
|
47
61
|
* @returns {string}
|
48
62
|
*/
|
49
|
-
export var normalizeEventKey = function normalizeEventKey(
|
50
|
-
|
63
|
+
export var normalizeEventKey = function normalizeEventKey(_ref) {
|
64
|
+
var key = _ref.key,
|
65
|
+
code = _ref.code;
|
66
|
+
return (codeToKeyRegExp.test(code) ? code.replace(codeToKeyRegExp, '$1') : key).toLowerCase();
|
51
67
|
};
|
package/tableView.js
CHANGED
@@ -356,11 +356,14 @@ var TableView = /*#__PURE__*/function () {
|
|
356
356
|
});
|
357
357
|
this.eventManager.addEventListener(documentElement, 'mouseup', function (event) {
|
358
358
|
if (selection.isInProgress() && (0, _event.isLeftClick)(event)) {
|
359
|
-
// is left mouse button
|
360
359
|
selection.finish();
|
361
360
|
}
|
362
361
|
priv.mouseDown = false;
|
363
|
-
|
362
|
+
var isOutsideInputElement = (0, _element.isOutsideInput)(rootDocument.activeElement);
|
363
|
+
if (!isOutsideInputElement) {
|
364
|
+
return;
|
365
|
+
}
|
366
|
+
if (isOutsideInputElement || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !(0, _event.isRightClick)(event)) {
|
364
367
|
_this.instance.unlisten();
|
365
368
|
}
|
366
369
|
});
|
@@ -613,6 +616,44 @@ var TableView = /*#__PURE__*/function () {
|
|
613
616
|
return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
|
614
617
|
}
|
615
618
|
|
619
|
+
/**
|
620
|
+
* The function returns the number of renderable column indexes within the passed range of the visual indexes.
|
621
|
+
*
|
622
|
+
* @param {number} columnStart The column visual start index.
|
623
|
+
* @param {number} columnEnd The column visual end index.
|
624
|
+
* @returns {number}
|
625
|
+
*/
|
626
|
+
}, {
|
627
|
+
key: "countRenderableColumnsInRange",
|
628
|
+
value: function countRenderableColumnsInRange(columnStart, columnEnd) {
|
629
|
+
var count = 0;
|
630
|
+
for (var column = columnStart; column <= columnEnd; column++) {
|
631
|
+
if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
|
632
|
+
count += 1;
|
633
|
+
}
|
634
|
+
}
|
635
|
+
return count;
|
636
|
+
}
|
637
|
+
|
638
|
+
/**
|
639
|
+
* The function returns the number of renderable row indexes within the passed range of the visual indexes.
|
640
|
+
*
|
641
|
+
* @param {number} rowStart The row visual start index.
|
642
|
+
* @param {number} rowEnd The row visual end index.
|
643
|
+
* @returns {number}
|
644
|
+
*/
|
645
|
+
}, {
|
646
|
+
key: "countRenderableRowsInRange",
|
647
|
+
value: function countRenderableRowsInRange(rowStart, rowEnd) {
|
648
|
+
var count = 0;
|
649
|
+
for (var row = rowStart; row <= rowEnd; row++) {
|
650
|
+
if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
|
651
|
+
count += 1;
|
652
|
+
}
|
653
|
+
}
|
654
|
+
return count;
|
655
|
+
}
|
656
|
+
|
616
657
|
/**
|
617
658
|
* Checks if at least one cell than belongs to the main table is not covered by the top, left or
|
618
659
|
* bottom overlay.
|
@@ -884,15 +925,29 @@ var TableView = /*#__PURE__*/function () {
|
|
884
925
|
},
|
885
926
|
onBeforeHighlightingRowHeader: function onBeforeHighlightingRowHeader(renderableRow, headerLevel, highlightMeta) {
|
886
927
|
var rowMapper = _this2.instance.rowIndexMapper;
|
887
|
-
var
|
928
|
+
var areColumnHeadersSelected = renderableRow < 0;
|
929
|
+
var visualRow = renderableRow;
|
930
|
+
if (!areColumnHeadersSelected) {
|
931
|
+
visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
|
932
|
+
}
|
888
933
|
var newVisualRow = _this2.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
|
889
|
-
|
934
|
+
if (!areColumnHeadersSelected) {
|
935
|
+
return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
|
936
|
+
}
|
937
|
+
return newVisualRow;
|
890
938
|
},
|
891
939
|
onBeforeHighlightingColumnHeader: function onBeforeHighlightingColumnHeader(renderableColumn, headerLevel, highlightMeta) {
|
892
940
|
var columnMapper = _this2.instance.columnIndexMapper;
|
893
|
-
var
|
941
|
+
var areRowHeadersSelected = renderableColumn < 0;
|
942
|
+
var visualColumn = renderableColumn;
|
943
|
+
if (!areRowHeadersSelected) {
|
944
|
+
visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
|
945
|
+
}
|
894
946
|
var newVisualColumn = _this2.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
|
895
|
-
|
947
|
+
if (!areRowHeadersSelected) {
|
948
|
+
return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
|
949
|
+
}
|
950
|
+
return newVisualColumn;
|
896
951
|
},
|
897
952
|
onAfterDrawSelection: function onAfterDrawSelection(currentRow, currentColumn, layerLevel) {
|
898
953
|
var cornersOfSelection;
|
@@ -903,10 +958,7 @@ var TableView = /*#__PURE__*/function () {
|
|
903
958
|
var selectedRange = _this2.instance.selection.getSelectedRange();
|
904
959
|
var selectionRangeSize = selectedRange.size();
|
905
960
|
if (selectionRangeSize > 0) {
|
906
|
-
|
907
|
-
// Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
|
908
|
-
var selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
|
909
|
-
var selectionForLayer = selectedRange.peekByIndex(selectionOffset);
|
961
|
+
var selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
|
910
962
|
cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
|
911
963
|
}
|
912
964
|
return _this2.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
|
@@ -1080,7 +1132,7 @@ var TableView = /*#__PURE__*/function () {
|
|
1080
1132
|
key: "isSelectedOnlyCell",
|
1081
1133
|
value: function isSelectedOnlyCell() {
|
1082
1134
|
var _this$instance$getSel, _this$instance$getSel2;
|
1083
|
-
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.
|
1135
|
+
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
|
1084
1136
|
}
|
1085
1137
|
|
1086
1138
|
/**
|
package/tableView.mjs
CHANGED
@@ -351,11 +351,14 @@ var TableView = /*#__PURE__*/function () {
|
|
351
351
|
});
|
352
352
|
this.eventManager.addEventListener(documentElement, 'mouseup', function (event) {
|
353
353
|
if (selection.isInProgress() && isLeftClick(event)) {
|
354
|
-
// is left mouse button
|
355
354
|
selection.finish();
|
356
355
|
}
|
357
356
|
priv.mouseDown = false;
|
358
|
-
|
357
|
+
var isOutsideInputElement = isOutsideInput(rootDocument.activeElement);
|
358
|
+
if (!isOutsideInputElement) {
|
359
|
+
return;
|
360
|
+
}
|
361
|
+
if (isOutsideInputElement || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !isRightClick(event)) {
|
359
362
|
_this.instance.unlisten();
|
360
363
|
}
|
361
364
|
});
|
@@ -608,6 +611,44 @@ var TableView = /*#__PURE__*/function () {
|
|
608
611
|
return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
|
609
612
|
}
|
610
613
|
|
614
|
+
/**
|
615
|
+
* The function returns the number of renderable column indexes within the passed range of the visual indexes.
|
616
|
+
*
|
617
|
+
* @param {number} columnStart The column visual start index.
|
618
|
+
* @param {number} columnEnd The column visual end index.
|
619
|
+
* @returns {number}
|
620
|
+
*/
|
621
|
+
}, {
|
622
|
+
key: "countRenderableColumnsInRange",
|
623
|
+
value: function countRenderableColumnsInRange(columnStart, columnEnd) {
|
624
|
+
var count = 0;
|
625
|
+
for (var column = columnStart; column <= columnEnd; column++) {
|
626
|
+
if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
|
627
|
+
count += 1;
|
628
|
+
}
|
629
|
+
}
|
630
|
+
return count;
|
631
|
+
}
|
632
|
+
|
633
|
+
/**
|
634
|
+
* The function returns the number of renderable row indexes within the passed range of the visual indexes.
|
635
|
+
*
|
636
|
+
* @param {number} rowStart The row visual start index.
|
637
|
+
* @param {number} rowEnd The row visual end index.
|
638
|
+
* @returns {number}
|
639
|
+
*/
|
640
|
+
}, {
|
641
|
+
key: "countRenderableRowsInRange",
|
642
|
+
value: function countRenderableRowsInRange(rowStart, rowEnd) {
|
643
|
+
var count = 0;
|
644
|
+
for (var row = rowStart; row <= rowEnd; row++) {
|
645
|
+
if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
|
646
|
+
count += 1;
|
647
|
+
}
|
648
|
+
}
|
649
|
+
return count;
|
650
|
+
}
|
651
|
+
|
611
652
|
/**
|
612
653
|
* Checks if at least one cell than belongs to the main table is not covered by the top, left or
|
613
654
|
* bottom overlay.
|
@@ -879,15 +920,29 @@ var TableView = /*#__PURE__*/function () {
|
|
879
920
|
},
|
880
921
|
onBeforeHighlightingRowHeader: function onBeforeHighlightingRowHeader(renderableRow, headerLevel, highlightMeta) {
|
881
922
|
var rowMapper = _this2.instance.rowIndexMapper;
|
882
|
-
var
|
923
|
+
var areColumnHeadersSelected = renderableRow < 0;
|
924
|
+
var visualRow = renderableRow;
|
925
|
+
if (!areColumnHeadersSelected) {
|
926
|
+
visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
|
927
|
+
}
|
883
928
|
var newVisualRow = _this2.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
|
884
|
-
|
929
|
+
if (!areColumnHeadersSelected) {
|
930
|
+
return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
|
931
|
+
}
|
932
|
+
return newVisualRow;
|
885
933
|
},
|
886
934
|
onBeforeHighlightingColumnHeader: function onBeforeHighlightingColumnHeader(renderableColumn, headerLevel, highlightMeta) {
|
887
935
|
var columnMapper = _this2.instance.columnIndexMapper;
|
888
|
-
var
|
936
|
+
var areRowHeadersSelected = renderableColumn < 0;
|
937
|
+
var visualColumn = renderableColumn;
|
938
|
+
if (!areRowHeadersSelected) {
|
939
|
+
visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
|
940
|
+
}
|
889
941
|
var newVisualColumn = _this2.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
|
890
|
-
|
942
|
+
if (!areRowHeadersSelected) {
|
943
|
+
return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
|
944
|
+
}
|
945
|
+
return newVisualColumn;
|
891
946
|
},
|
892
947
|
onAfterDrawSelection: function onAfterDrawSelection(currentRow, currentColumn, layerLevel) {
|
893
948
|
var cornersOfSelection;
|
@@ -898,10 +953,7 @@ var TableView = /*#__PURE__*/function () {
|
|
898
953
|
var selectedRange = _this2.instance.selection.getSelectedRange();
|
899
954
|
var selectionRangeSize = selectedRange.size();
|
900
955
|
if (selectionRangeSize > 0) {
|
901
|
-
|
902
|
-
// Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
|
903
|
-
var selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
|
904
|
-
var selectionForLayer = selectedRange.peekByIndex(selectionOffset);
|
956
|
+
var selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
|
905
957
|
cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
|
906
958
|
}
|
907
959
|
return _this2.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
|
@@ -1075,7 +1127,7 @@ var TableView = /*#__PURE__*/function () {
|
|
1075
1127
|
key: "isSelectedOnlyCell",
|
1076
1128
|
value: function isSelectedOnlyCell() {
|
1077
1129
|
var _this$instance$getSel, _this$instance$getSel2;
|
1078
|
-
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.
|
1130
|
+
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
|
1079
1131
|
}
|
1080
1132
|
|
1081
1133
|
/**
|