handsontable 0.0.0-next-2b3d6d8-20230623 → 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/translations/indexMapper.d.ts +2 -0
- 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
@@ -32,7 +32,9 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
|
|
32
32
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
33
33
|
import { BasePlugin } from "../base/index.mjs";
|
34
34
|
import { arrayEach } from "../../helpers/array.mjs";
|
35
|
+
import { objectEach } from "../../helpers/object.mjs";
|
35
36
|
import CommandExecutor from "../contextMenu/commandExecutor.mjs";
|
37
|
+
import { getDocumentOffsetByElement } from "../contextMenu/utils.mjs";
|
36
38
|
import EventManager from "../../eventManager.mjs";
|
37
39
|
import { hasClass } from "../../helpers/dom/element.mjs";
|
38
40
|
import ItemsFactory from "../contextMenu/itemsFactory.mjs";
|
@@ -47,6 +49,7 @@ Hooks.getSingleton().register('afterDropdownMenuExecute');
|
|
47
49
|
export var PLUGIN_KEY = 'dropdownMenu';
|
48
50
|
export var PLUGIN_PRIORITY = 230;
|
49
51
|
var BUTTON_CLASS_NAME = 'changeType';
|
52
|
+
var SHORTCUTS_GROUP = PLUGIN_KEY;
|
50
53
|
|
51
54
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
52
55
|
/**
|
@@ -176,6 +179,7 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
|
|
176
179
|
if (typeof settings.callback === 'function') {
|
177
180
|
this.commandExecutor.setCommonCallback(settings.callback);
|
178
181
|
}
|
182
|
+
this.registerShortcuts();
|
179
183
|
_get(_getPrototypeOf(DropdownMenu.prototype), "enablePlugin", this).call(this);
|
180
184
|
this.callOnPluginsReady(function () {
|
181
185
|
_this2.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -239,9 +243,71 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
|
|
239
243
|
if (this.menu) {
|
240
244
|
this.menu.destroy();
|
241
245
|
}
|
246
|
+
this.unregisterShortcuts();
|
242
247
|
_get(_getPrototypeOf(DropdownMenu.prototype), "disablePlugin", this).call(this);
|
243
248
|
}
|
244
249
|
|
250
|
+
/**
|
251
|
+
* Register shortcuts responsible for toggling dropdown menu.
|
252
|
+
*
|
253
|
+
* @private
|
254
|
+
*/
|
255
|
+
}, {
|
256
|
+
key: "registerShortcuts",
|
257
|
+
value: function registerShortcuts() {
|
258
|
+
var _this3 = this;
|
259
|
+
var context = this.hot.getShortcutManager().getContext('grid');
|
260
|
+
var callback = function callback() {
|
261
|
+
var _this3$hot$getSelecte = _this3.hot.getSelectedRangeLast(),
|
262
|
+
highlight = _this3$hot$getSelecte.highlight;
|
263
|
+
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
264
|
+
_this3.hot.selectColumns(highlight.col, highlight.col, -1);
|
265
|
+
var _this3$hot$getSelecte2 = _this3.hot.getSelectedRangeLast(),
|
266
|
+
from = _this3$hot$getSelecte2.from;
|
267
|
+
var offset = getDocumentOffsetByElement(_this3.menu.container, _this3.hot.rootDocument);
|
268
|
+
var target = _this3.hot.getCell(-1, from.col, true);
|
269
|
+
var rect = target.getBoundingClientRect();
|
270
|
+
_this3.open({
|
271
|
+
left: rect.left + offset.left,
|
272
|
+
top: rect.top + target.offsetHeight + offset.top
|
273
|
+
}, {
|
274
|
+
left: rect.width
|
275
|
+
});
|
276
|
+
_this3.hot._registerTimeout(function () {
|
277
|
+
_this3.menu.selectFirstCell();
|
278
|
+
});
|
279
|
+
}
|
280
|
+
};
|
281
|
+
context.addShortcuts([{
|
282
|
+
keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
|
283
|
+
callback: callback,
|
284
|
+
runOnlyIf: function runOnlyIf() {
|
285
|
+
var _this3$hot$getSelecte3;
|
286
|
+
return ((_this3$hot$getSelecte3 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte3 === void 0 ? void 0 : _this3$hot$getSelecte3.highlight.isHeader()) && !_this3.menu.isOpened();
|
287
|
+
},
|
288
|
+
group: SHORTCUTS_GROUP
|
289
|
+
}, {
|
290
|
+
keys: [['Shift', 'Alt', 'ArrowDown']],
|
291
|
+
callback: callback,
|
292
|
+
runOnlyIf: function runOnlyIf() {
|
293
|
+
var _this3$hot$getSelecte4;
|
294
|
+
return ((_this3$hot$getSelecte4 = _this3.hot.getSelectedRangeLast()) === null || _this3$hot$getSelecte4 === void 0 ? void 0 : _this3$hot$getSelecte4.highlight.isCell()) && !_this3.menu.isOpened();
|
295
|
+
},
|
296
|
+
group: SHORTCUTS_GROUP
|
297
|
+
}]);
|
298
|
+
}
|
299
|
+
|
300
|
+
/**
|
301
|
+
* Unregister shortcuts responsible for toggling dropdown menu.
|
302
|
+
*
|
303
|
+
* @private
|
304
|
+
*/
|
305
|
+
}, {
|
306
|
+
key: "unregisterShortcuts",
|
307
|
+
value: function unregisterShortcuts() {
|
308
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
309
|
+
}
|
310
|
+
|
245
311
|
/**
|
246
312
|
* Registers the DOM listeners.
|
247
313
|
*
|
@@ -250,33 +316,42 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
|
|
250
316
|
}, {
|
251
317
|
key: "registerEvents",
|
252
318
|
value: function registerEvents() {
|
253
|
-
var
|
319
|
+
var _this4 = this;
|
254
320
|
this.eventManager.addEventListener(this.hot.rootElement, 'click', function (event) {
|
255
|
-
return
|
321
|
+
return _this4.onTableClick(event);
|
256
322
|
});
|
257
323
|
}
|
258
324
|
|
259
325
|
/**
|
260
326
|
* Opens menu and re-position it based on the passed coordinates.
|
261
327
|
*
|
262
|
-
* @param {
|
263
|
-
*
|
264
|
-
*
|
265
|
-
*
|
266
|
-
*
|
328
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
329
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
330
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
331
|
+
* coordinates.
|
332
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
333
|
+
* the offset to the menu position.
|
267
334
|
* @fires Hooks#beforeDropdownMenuShow
|
268
335
|
* @fires Hooks#afterDropdownMenuShow
|
269
336
|
*/
|
270
337
|
}, {
|
271
338
|
key: "open",
|
272
339
|
value: function open(position) {
|
273
|
-
|
340
|
+
var _this$menu,
|
341
|
+
_this5 = this;
|
342
|
+
var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
343
|
+
above: 0,
|
344
|
+
below: 0,
|
345
|
+
left: 0,
|
346
|
+
right: 0
|
347
|
+
};
|
348
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
274
349
|
return;
|
275
350
|
}
|
276
351
|
this.menu.open();
|
277
|
-
|
278
|
-
|
279
|
-
}
|
352
|
+
objectEach(offset, function (value, key) {
|
353
|
+
_this5.menu.setOffset(key, value);
|
354
|
+
});
|
280
355
|
this.menu.setPosition(position);
|
281
356
|
}
|
282
357
|
|
@@ -286,10 +361,8 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
|
|
286
361
|
}, {
|
287
362
|
key: "close",
|
288
363
|
value: function close() {
|
289
|
-
|
290
|
-
|
291
|
-
}
|
292
|
-
this.menu.close();
|
364
|
+
var _this$menu2;
|
365
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
|
293
366
|
}
|
294
367
|
|
295
368
|
/**
|
@@ -361,23 +434,14 @@ export var DropdownMenu = /*#__PURE__*/function (_BasePlugin) {
|
|
361
434
|
key: "onTableClick",
|
362
435
|
value: function onTableClick(event) {
|
363
436
|
event.stopPropagation();
|
364
|
-
if (hasClass(event.target, BUTTON_CLASS_NAME)
|
365
|
-
var
|
366
|
-
var offsetLeft = 0;
|
367
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
368
|
-
var frameElement = this.hot.rootWindow.frameElement;
|
369
|
-
var _frameElement$getBoun = frameElement.getBoundingClientRect(),
|
370
|
-
top = _frameElement$getBoun.top,
|
371
|
-
left = _frameElement$getBoun.left;
|
372
|
-
offsetTop = top;
|
373
|
-
offsetLeft = left;
|
374
|
-
}
|
437
|
+
if (hasClass(event.target, BUTTON_CLASS_NAME)) {
|
438
|
+
var offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
375
439
|
var rect = event.target.getBoundingClientRect();
|
376
440
|
this.open({
|
377
|
-
left: rect.left +
|
378
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
379
|
-
|
380
|
-
|
441
|
+
left: rect.left + offset.left,
|
442
|
+
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
443
|
+
}, {
|
444
|
+
left: rect.width
|
381
445
|
});
|
382
446
|
}
|
383
447
|
}
|
@@ -243,9 +243,6 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
243
243
|
this.addHook('afterDrawSelection', function () {
|
244
244
|
return _this2.onAfterDrawSelection.apply(_this2, arguments);
|
245
245
|
});
|
246
|
-
this.addHook('beforeRemoveCellClassNames', function () {
|
247
|
-
return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
|
248
|
-
});
|
249
246
|
this.addHook('beforeUndoStackChange', function (action, source) {
|
250
247
|
if (source === 'MergeCells') {
|
251
248
|
return false;
|
@@ -662,8 +659,11 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
662
659
|
gridContext.addShortcut({
|
663
660
|
keys: [['Control', 'm']],
|
664
661
|
callback: function callback() {
|
665
|
-
_this7.
|
666
|
-
|
662
|
+
var range = _this7.hot.getSelectedRangeLast();
|
663
|
+
if (range && !range.isSingleHeader()) {
|
664
|
+
_this7.toggleMerge(range);
|
665
|
+
_this7.hot.render();
|
666
|
+
}
|
667
667
|
},
|
668
668
|
runOnlyIf: function runOnlyIf(event) {
|
669
669
|
return !event.altKey;
|
@@ -1340,19 +1340,6 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
1340
1340
|
}
|
1341
1341
|
return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
|
1342
1342
|
}
|
1343
|
-
|
1344
|
-
/**
|
1345
|
-
* `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
|
1346
|
-
*
|
1347
|
-
* @private
|
1348
|
-
* @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
|
1349
|
-
* all the cells in the table.
|
1350
|
-
*/
|
1351
|
-
}, {
|
1352
|
-
key: "onBeforeRemoveCellClassNames",
|
1353
|
-
value: function onBeforeRemoveCellClassNames() {
|
1354
|
-
return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
|
1355
|
-
}
|
1356
1343
|
}], [{
|
1357
1344
|
key: "PLUGIN_KEY",
|
1358
1345
|
get: function get() {
|
@@ -236,9 +236,6 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
236
236
|
this.addHook('afterDrawSelection', function () {
|
237
237
|
return _this2.onAfterDrawSelection.apply(_this2, arguments);
|
238
238
|
});
|
239
|
-
this.addHook('beforeRemoveCellClassNames', function () {
|
240
|
-
return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
|
241
|
-
});
|
242
239
|
this.addHook('beforeUndoStackChange', function (action, source) {
|
243
240
|
if (source === 'MergeCells') {
|
244
241
|
return false;
|
@@ -655,8 +652,11 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
655
652
|
gridContext.addShortcut({
|
656
653
|
keys: [['Control', 'm']],
|
657
654
|
callback: function callback() {
|
658
|
-
_this7.
|
659
|
-
|
655
|
+
var range = _this7.hot.getSelectedRangeLast();
|
656
|
+
if (range && !range.isSingleHeader()) {
|
657
|
+
_this7.toggleMerge(range);
|
658
|
+
_this7.hot.render();
|
659
|
+
}
|
660
660
|
},
|
661
661
|
runOnlyIf: function runOnlyIf(event) {
|
662
662
|
return !event.altKey;
|
@@ -1333,19 +1333,6 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
|
|
1333
1333
|
}
|
1334
1334
|
return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
|
1335
1335
|
}
|
1336
|
-
|
1337
|
-
/**
|
1338
|
-
* `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
|
1339
|
-
*
|
1340
|
-
* @private
|
1341
|
-
* @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
|
1342
|
-
* all the cells in the table.
|
1343
|
-
*/
|
1344
|
-
}, {
|
1345
|
-
key: "onBeforeRemoveCellClassNames",
|
1346
|
-
value: function onBeforeRemoveCellClassNames() {
|
1347
|
-
return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
|
1348
|
-
}
|
1349
1336
|
}], [{
|
1350
1337
|
key: "PLUGIN_KEY",
|
1351
1338
|
get: function get() {
|
@@ -16,8 +16,8 @@ require("core-js/modules/es.string.iterator.js");
|
|
16
16
|
require("core-js/modules/web.dom-collections.iterator.js");
|
17
17
|
exports.__esModule = true;
|
18
18
|
exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.MultiColumnSorting = void 0;
|
19
|
-
require("core-js/modules/es.array.concat.js");
|
20
19
|
require("core-js/modules/es.array.sort.js");
|
20
|
+
require("core-js/modules/es.array.concat.js");
|
21
21
|
require("core-js/modules/es.object.set-prototype-of.js");
|
22
22
|
require("core-js/modules/es.object.get-prototype-of.js");
|
23
23
|
var _columnSorting = require("../columnSorting");
|
@@ -45,8 +45,8 @@ var PLUGIN_KEY = 'multiColumnSorting';
|
|
45
45
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
46
46
|
var PLUGIN_PRIORITY = 170;
|
47
47
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
48
|
-
var APPEND_COLUMN_CONFIG_STRATEGY = 'append';
|
49
48
|
var CONFLICTED_PLUGIN_KEY = 'columnSorting';
|
49
|
+
var SHORTCUTS_GROUP = PLUGIN_KEY;
|
50
50
|
(0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
|
51
51
|
|
52
52
|
/**
|
@@ -151,6 +151,45 @@ var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
|
|
151
151
|
_get(_getPrototypeOf(MultiColumnSorting.prototype), "disablePlugin", this).call(this);
|
152
152
|
}
|
153
153
|
|
154
|
+
/**
|
155
|
+
* Register shortcuts responsible for toggling column sorting functionality.
|
156
|
+
*
|
157
|
+
* @private
|
158
|
+
*/
|
159
|
+
}, {
|
160
|
+
key: "registerShortcuts",
|
161
|
+
value: function registerShortcuts() {
|
162
|
+
var _this2 = this;
|
163
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "registerShortcuts", this).call(this);
|
164
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
165
|
+
keys: [['Control/Meta', 'Enter']],
|
166
|
+
callback: function callback() {
|
167
|
+
var _this2$hot$getSelecte = _this2.hot.getSelectedRangeLast(),
|
168
|
+
highlight = _this2$hot$getSelecte.highlight;
|
169
|
+
if (highlight.row === -1 && highlight.col >= 0) {
|
170
|
+
_this2.sort(_this2.getNextSortConfig(highlight.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
|
171
|
+
}
|
172
|
+
},
|
173
|
+
runOnlyIf: function runOnlyIf() {
|
174
|
+
var _this2$hot$getSelecte2;
|
175
|
+
return (_this2$hot$getSelecte2 = _this2.hot.getSelectedRangeLast()) === null || _this2$hot$getSelecte2 === void 0 ? void 0 : _this2$hot$getSelecte2.highlight.isHeader();
|
176
|
+
},
|
177
|
+
group: SHORTCUTS_GROUP
|
178
|
+
});
|
179
|
+
}
|
180
|
+
|
181
|
+
/**
|
182
|
+
* Unregister shortcuts responsible for toggling column sorting functionality.
|
183
|
+
*
|
184
|
+
* @private
|
185
|
+
*/
|
186
|
+
}, {
|
187
|
+
key: "unregisterShortcuts",
|
188
|
+
value: function unregisterShortcuts() {
|
189
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "unregisterShortcuts", this).call(this);
|
190
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
191
|
+
}
|
192
|
+
|
154
193
|
/**
|
155
194
|
* Sorts the table by chosen columns and orders.
|
156
195
|
*
|
@@ -319,7 +358,7 @@ var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
|
|
319
358
|
if (this.hot.getShortcutManager().isCtrlPressed()) {
|
320
359
|
this.hot.deselectCell();
|
321
360
|
this.hot.selectColumns(coords.col);
|
322
|
-
this.sort(this.getNextSortConfig(coords.col, APPEND_COLUMN_CONFIG_STRATEGY));
|
361
|
+
this.sort(this.getNextSortConfig(coords.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
|
323
362
|
} else {
|
324
363
|
this.sort(this.getColumnNextConfig(coords.col));
|
325
364
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
2
|
-
import "core-js/modules/es.array.concat.js";
|
3
2
|
import "core-js/modules/es.array.sort.js";
|
3
|
+
import "core-js/modules/es.array.concat.js";
|
4
4
|
import "core-js/modules/es.object.set-prototype-of.js";
|
5
5
|
import "core-js/modules/es.object.get-prototype-of.js";
|
6
6
|
import "core-js/modules/es.object.to-string.js";
|
@@ -30,7 +30,7 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) ===
|
|
30
30
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
31
31
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
32
32
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
33
|
-
import { ColumnSorting } from "../columnSorting/index.mjs";
|
33
|
+
import { APPEND_COLUMN_CONFIG_STRATEGY, ColumnSorting } from "../columnSorting/index.mjs";
|
34
34
|
import { registerRootComparator } from "../columnSorting/sortService/index.mjs";
|
35
35
|
import { wasHeaderClickedProperly } from "../columnSorting/utils.mjs";
|
36
36
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
@@ -39,8 +39,8 @@ import { warnAboutPluginsConflict } from "./utils.mjs";
|
|
39
39
|
import { getClassesToAdd, getClassesToRemove } from "./domHelpers.mjs";
|
40
40
|
export var PLUGIN_KEY = 'multiColumnSorting';
|
41
41
|
export var PLUGIN_PRIORITY = 170;
|
42
|
-
var APPEND_COLUMN_CONFIG_STRATEGY = 'append';
|
43
42
|
var CONFLICTED_PLUGIN_KEY = 'columnSorting';
|
43
|
+
var SHORTCUTS_GROUP = PLUGIN_KEY;
|
44
44
|
registerRootComparator(PLUGIN_KEY, rootComparator);
|
45
45
|
|
46
46
|
/**
|
@@ -145,6 +145,45 @@ export var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
|
|
145
145
|
_get(_getPrototypeOf(MultiColumnSorting.prototype), "disablePlugin", this).call(this);
|
146
146
|
}
|
147
147
|
|
148
|
+
/**
|
149
|
+
* Register shortcuts responsible for toggling column sorting functionality.
|
150
|
+
*
|
151
|
+
* @private
|
152
|
+
*/
|
153
|
+
}, {
|
154
|
+
key: "registerShortcuts",
|
155
|
+
value: function registerShortcuts() {
|
156
|
+
var _this2 = this;
|
157
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "registerShortcuts", this).call(this);
|
158
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
159
|
+
keys: [['Control/Meta', 'Enter']],
|
160
|
+
callback: function callback() {
|
161
|
+
var _this2$hot$getSelecte = _this2.hot.getSelectedRangeLast(),
|
162
|
+
highlight = _this2$hot$getSelecte.highlight;
|
163
|
+
if (highlight.row === -1 && highlight.col >= 0) {
|
164
|
+
_this2.sort(_this2.getNextSortConfig(highlight.col, APPEND_COLUMN_CONFIG_STRATEGY));
|
165
|
+
}
|
166
|
+
},
|
167
|
+
runOnlyIf: function runOnlyIf() {
|
168
|
+
var _this2$hot$getSelecte2;
|
169
|
+
return (_this2$hot$getSelecte2 = _this2.hot.getSelectedRangeLast()) === null || _this2$hot$getSelecte2 === void 0 ? void 0 : _this2$hot$getSelecte2.highlight.isHeader();
|
170
|
+
},
|
171
|
+
group: SHORTCUTS_GROUP
|
172
|
+
});
|
173
|
+
}
|
174
|
+
|
175
|
+
/**
|
176
|
+
* Unregister shortcuts responsible for toggling column sorting functionality.
|
177
|
+
*
|
178
|
+
* @private
|
179
|
+
*/
|
180
|
+
}, {
|
181
|
+
key: "unregisterShortcuts",
|
182
|
+
value: function unregisterShortcuts() {
|
183
|
+
_get(_getPrototypeOf(MultiColumnSorting.prototype), "unregisterShortcuts", this).call(this);
|
184
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
185
|
+
}
|
186
|
+
|
148
187
|
/**
|
149
188
|
* Sorts the table by chosen columns and orders.
|
150
189
|
*
|
@@ -25,8 +25,8 @@ require("core-js/modules/es.weak-map.js");
|
|
25
25
|
require("core-js/modules/web.dom-collections.iterator.js");
|
26
26
|
var _element = require("../../helpers/dom/element");
|
27
27
|
var _number = require("../../helpers/number");
|
28
|
-
var _event = require("../../helpers/dom/event");
|
29
28
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
29
|
+
var _event = require("../../helpers/dom/event");
|
30
30
|
var _console = require("../../helpers/console");
|
31
31
|
var _selection = require("../../selection");
|
32
32
|
var _base = require("../base");
|
@@ -201,6 +201,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
201
201
|
this.addHook('beforeOnCellMouseOver', function () {
|
202
202
|
return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
|
203
203
|
});
|
204
|
+
this.addHook('modifyTransformStart', function () {
|
205
|
+
return _this2.onModifyTransformStart.apply(_this2, arguments);
|
206
|
+
});
|
207
|
+
this.addHook('afterSelection', function () {
|
208
|
+
return _this2.updateFocusHighlightPosition();
|
209
|
+
});
|
204
210
|
this.addHook('afterGetColumnHeaderRenderers', function (array) {
|
205
211
|
return _this2.onAfterGetColumnHeaderRenderers(array);
|
206
212
|
});
|
@@ -216,9 +222,18 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
216
222
|
this.addHook('beforeCopy', function () {
|
217
223
|
return _this2.onBeforeCopy.apply(_this2, arguments);
|
218
224
|
});
|
225
|
+
this.addHook('beforeSelectColumns', function () {
|
226
|
+
return _this2.onBeforeSelectColumns.apply(_this2, arguments);
|
227
|
+
});
|
219
228
|
this.addHook('afterViewportColumnCalculatorOverride', function () {
|
220
229
|
return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
|
221
230
|
});
|
231
|
+
this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
|
232
|
+
return _this2.updateFocusHighlightPosition();
|
233
|
+
});
|
234
|
+
this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
|
235
|
+
return _this2.updateFocusHighlightPosition();
|
236
|
+
});
|
222
237
|
_get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
|
223
238
|
this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
|
224
239
|
}
|
@@ -440,6 +455,34 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
440
455
|
return this.hot.getColHeader(visualColumnIndex, headerLevel);
|
441
456
|
}
|
442
457
|
|
458
|
+
/**
|
459
|
+
* Updates the selection focus highlight position to point to the nested header root element (TH)
|
460
|
+
* even when the logical coordinates point in-between the header.
|
461
|
+
*
|
462
|
+
* @private
|
463
|
+
*/
|
464
|
+
}, {
|
465
|
+
key: "updateFocusHighlightPosition",
|
466
|
+
value: function updateFocusHighlightPosition() {
|
467
|
+
var _this$hot;
|
468
|
+
var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
|
469
|
+
if (!selection) {
|
470
|
+
return;
|
471
|
+
}
|
472
|
+
var highlight = selection.highlight;
|
473
|
+
var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
|
474
|
+
if (isNestedHeadersRange) {
|
475
|
+
var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
|
476
|
+
var focusHighlight = this.hot.selection.highlight.getFocus();
|
477
|
+
|
478
|
+
// Correct the highlight/focus selection to highlight the correct TH element
|
479
|
+
focusHighlight.visualCellRange.highlight.col = columnIndex;
|
480
|
+
focusHighlight.visualCellRange.from.col = columnIndex;
|
481
|
+
focusHighlight.visualCellRange.to.col = columnIndex;
|
482
|
+
focusHighlight.commit();
|
483
|
+
}
|
484
|
+
}
|
485
|
+
|
443
486
|
/**
|
444
487
|
* Allows to control which header DOM element will be used to highlight.
|
445
488
|
*
|
@@ -456,8 +499,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
456
499
|
if (!headerNodeData) {
|
457
500
|
return visualColumn;
|
458
501
|
}
|
459
|
-
var
|
460
|
-
columnCursor = highlightMeta.columnCursor,
|
502
|
+
var columnCursor = highlightMeta.columnCursor,
|
461
503
|
selectionType = highlightMeta.selectionType,
|
462
504
|
selectionWidth = highlightMeta.selectionWidth;
|
463
505
|
var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
|
@@ -469,8 +511,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
469
511
|
}
|
470
512
|
} else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
|
471
513
|
if (colspan > selectionWidth - columnCursor || !isRoot) {
|
472
|
-
//
|
473
|
-
|
514
|
+
// Prevents adding any CSS class names to the TH element
|
515
|
+
return null;
|
474
516
|
}
|
475
517
|
}
|
476
518
|
return visualColumn;
|
@@ -601,7 +643,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
601
643
|
}, {
|
602
644
|
key: "onBeforeOnCellMouseOver",
|
603
645
|
value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
|
604
|
-
var _this$hot;
|
646
|
+
var _this$hot$selection;
|
605
647
|
if (!this.hot.view.isMouseDown()) {
|
606
648
|
return;
|
607
649
|
}
|
@@ -622,13 +664,93 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
|
|
622
664
|
controller.cell = true;
|
623
665
|
var columnsToSelect = [];
|
624
666
|
if (coords.col < from.col) {
|
625
|
-
columnsToSelect.push(bottomEndCoords.col, columnIndex);
|
667
|
+
columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
|
626
668
|
} else if (coords.col > from.col) {
|
627
|
-
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
|
669
|
+
columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
|
628
670
|
} else {
|
629
|
-
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
|
671
|
+
columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
|
672
|
+
}
|
673
|
+
(_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
|
674
|
+
}
|
675
|
+
|
676
|
+
/**
|
677
|
+
* `modifyTransformStart` hook is called every time the keyboard navigation is used.
|
678
|
+
*
|
679
|
+
* @private
|
680
|
+
* @param {object} delta The transformation delta.
|
681
|
+
*/
|
682
|
+
}, {
|
683
|
+
key: "onModifyTransformStart",
|
684
|
+
value: function onModifyTransformStart(delta) {
|
685
|
+
var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
|
686
|
+
highlight = _this$hot$getSelected.highlight;
|
687
|
+
var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
|
688
|
+
var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
|
689
|
+
if (!isNestedHeadersRange) {
|
690
|
+
return;
|
691
|
+
}
|
692
|
+
var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
|
693
|
+
var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
|
694
|
+
if (delta.col < 0) {
|
695
|
+
var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
|
696
|
+
var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
|
697
|
+
if (notHiddenColumnIndex === null) {
|
698
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
699
|
+
// be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
|
700
|
+
delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
|
701
|
+
} else {
|
702
|
+
delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
|
703
|
+
}
|
704
|
+
} else if (delta.col > 0) {
|
705
|
+
var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
|
706
|
+
var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
|
707
|
+
if (_notHiddenColumnIndex === null) {
|
708
|
+
// There are no visible columns anymore, so move the selection out of the table edge. This will
|
709
|
+
// be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
|
710
|
+
delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
|
711
|
+
} else {
|
712
|
+
delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
|
713
|
+
}
|
714
|
+
}
|
715
|
+
}
|
716
|
+
|
717
|
+
/**
|
718
|
+
* The hook observes the column selection from the Selection API and modifies the column range to
|
719
|
+
* ensure that the whole nested column will be covered.
|
720
|
+
*
|
721
|
+
* @private
|
722
|
+
* @param {*} from The coords object where the selection starts.
|
723
|
+
* @param {*} to The coords object where the selection ends.
|
724
|
+
*/
|
725
|
+
}, {
|
726
|
+
key: "onBeforeSelectColumns",
|
727
|
+
value: function onBeforeSelectColumns(from, to) {
|
728
|
+
var headerLevel = from.row;
|
729
|
+
var startNodeData = this._getHeaderTreeNodeDataByCoords({
|
730
|
+
row: headerLevel,
|
731
|
+
col: from.col
|
732
|
+
});
|
733
|
+
var endNodeData = this._getHeaderTreeNodeDataByCoords({
|
734
|
+
row: headerLevel,
|
735
|
+
col: to.col
|
736
|
+
});
|
737
|
+
if (to.col < from.col) {
|
738
|
+
// Column selection from right to left
|
739
|
+
if (startNodeData) {
|
740
|
+
from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
|
741
|
+
}
|
742
|
+
if (endNodeData) {
|
743
|
+
to.col = endNodeData.columnIndex;
|
744
|
+
}
|
745
|
+
} else if (to.col >= from.col) {
|
746
|
+
// Column selection from left to right or a single column selection
|
747
|
+
if (startNodeData) {
|
748
|
+
from.col = startNodeData.columnIndex;
|
749
|
+
}
|
750
|
+
if (endNodeData) {
|
751
|
+
to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
|
752
|
+
}
|
630
753
|
}
|
631
|
-
(_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
|
632
754
|
}
|
633
755
|
|
634
756
|
/**
|