handsontable 0.0.0-next-baf2fcf-20230809 → 0.0.0-next-be16baf-20230809
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 +50 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -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 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- 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 +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +259 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +254 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -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 +6 -78
- package/3rdparty/walkontable/src/table.mjs +7 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/common.d.ts +1 -1
- package/core/focusCatcher/focusDetector.js +58 -0
- package/core/focusCatcher/focusDetector.mjs +54 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +6 -3
- package/core.js +176 -293
- package/core.mjs +176 -293
- package/dataMap/metaManager/metaSchema.js +41 -0
- package/dataMap/metaManager/metaSchema.mjs +41 -0
- package/dist/handsontable.css +24 -4
- package/dist/handsontable.full.css +24 -4
- package/dist/handsontable.full.js +8682 -5384
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +25 -25
- package/dist/handsontable.js +10989 -7691
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +19 -19
- package/editorManager.js +11 -75
- package/editorManager.mjs +11 -74
- package/editors/baseEditor/baseEditor.d.ts +0 -1
- package/editors/textEditor/textEditor.js +3 -11
- package/editors/textEditor/textEditor.mjs +4 -12
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/package.json +1 -1
- package/pluginHooks.d.ts +7 -1
- package/pluginHooks.js +106 -1
- package/pluginHooks.mjs +106 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +58 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +58 -4
- package/plugins/columnSorting/columnSorting.js +38 -0
- package/plugins/columnSorting/columnSorting.mjs +38 -2
- package/plugins/columnSorting/index.js +3 -1
- 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 +251 -189
- package/plugins/comments/comments.mjs +250 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +72 -30
- package/plugins/contextMenu/contextMenu.mjs +73 -31
- 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 +28 -16
- package/plugins/contextMenu/utils.mjs +27 -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 +14 -10
- package/plugins/copyPaste/copyPaste.mjs +14 -10
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +89 -32
- package/plugins/dropdownMenu/dropdownMenu.mjs +89 -32
- package/plugins/filters/filters.js +31 -14
- package/plugins/filters/filters.mjs +30 -13
- package/plugins/manualColumnResize/manualColumnResize.js +0 -6
- package/plugins/manualColumnResize/manualColumnResize.mjs +1 -7
- package/plugins/mergeCells/mergeCells.js +5 -17
- package/plugins/mergeCells/mergeCells.mjs +5 -17
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +121 -8
- package/plugins/nestedHeaders/nestedHeaders.mjs +121 -8
- package/plugins/nestedHeaders/stateManager/index.js +37 -0
- package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- 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 +293 -154
- package/selection/selection.mjs +290 -153
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +2 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +17 -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 +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +17 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +31 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +27 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +31 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +27 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +36 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +32 -0
- package/shortcutContexts/commands/selectAll.js +10 -0
- package/shortcutContexts/commands/selectAll.mjs +6 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -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 +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +67 -13
- package/tableView.mjs +67 -13
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
@@ -0,0 +1,41 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.default = addEditCommentItem;
|
5
|
+
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
7
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
8
|
+
/**
|
9
|
+
* @param {Comments} plugin The Comments plugin instance.
|
10
|
+
* @returns {object}
|
11
|
+
*/
|
12
|
+
function addEditCommentItem(plugin) {
|
13
|
+
return {
|
14
|
+
key: 'commentsAddEdit',
|
15
|
+
name() {
|
16
|
+
var _this$getSelectedRang;
|
17
|
+
const highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
|
18
|
+
if (highlight && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
|
19
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
|
20
|
+
}
|
21
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
|
22
|
+
},
|
23
|
+
callback() {
|
24
|
+
const range = this.getSelectedRangeLast();
|
25
|
+
this.deselectCell();
|
26
|
+
plugin.setRange(range);
|
27
|
+
plugin.show();
|
28
|
+
plugin.focusEditor();
|
29
|
+
},
|
30
|
+
disabled() {
|
31
|
+
const range = this.getSelectedRangeLast();
|
32
|
+
if (!range) {
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
if (range.highlight.isHeader()) {
|
36
|
+
return true;
|
37
|
+
}
|
38
|
+
return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
|
39
|
+
}
|
40
|
+
};
|
41
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import * as C from "../../../i18n/constants.mjs";
|
2
|
+
/**
|
3
|
+
* @param {Comments} plugin The Comments plugin instance.
|
4
|
+
* @returns {object}
|
5
|
+
*/
|
6
|
+
export default function addEditCommentItem(plugin) {
|
7
|
+
return {
|
8
|
+
key: 'commentsAddEdit',
|
9
|
+
name() {
|
10
|
+
var _this$getSelectedRang;
|
11
|
+
const highlight = (_this$getSelectedRang = this.getSelectedRangeLast()) === null || _this$getSelectedRang === void 0 ? void 0 : _this$getSelectedRang.highlight;
|
12
|
+
if (highlight && highlight.isCell() && plugin.getCommentAtCell(highlight.row, highlight.col)) {
|
13
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
|
14
|
+
}
|
15
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
|
16
|
+
},
|
17
|
+
callback() {
|
18
|
+
const range = this.getSelectedRangeLast();
|
19
|
+
this.deselectCell();
|
20
|
+
plugin.setRange(range);
|
21
|
+
plugin.show();
|
22
|
+
plugin.focusEditor();
|
23
|
+
},
|
24
|
+
disabled() {
|
25
|
+
const range = this.getSelectedRangeLast();
|
26
|
+
if (!range) {
|
27
|
+
return true;
|
28
|
+
}
|
29
|
+
if (range.highlight.isHeader()) {
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
|
33
|
+
}
|
34
|
+
};
|
35
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.default = readOnlyCommentItem;
|
5
|
+
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
|
+
var _utils = require("../../contextMenu/utils");
|
7
|
+
var _comments = require("../comments");
|
8
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
9
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
10
|
+
/**
|
11
|
+
* @param {Comments} plugin The Comments plugin instance.
|
12
|
+
* @returns {object}
|
13
|
+
*/
|
14
|
+
function readOnlyCommentItem(plugin) {
|
15
|
+
return {
|
16
|
+
key: 'commentsReadOnly',
|
17
|
+
name() {
|
18
|
+
const label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
|
19
|
+
const areReadOnly = (0, _utils.checkSelectionConsistency)(this.getSelectedRange(), (row, col) => {
|
20
|
+
return plugin.getCommentMeta(row, col, _comments.META_READONLY);
|
21
|
+
});
|
22
|
+
return areReadOnly ? (0, _utils.markLabelAsSelected)(label) : label;
|
23
|
+
},
|
24
|
+
callback() {
|
25
|
+
const range = this.getSelectedRangeLast();
|
26
|
+
range.forAll((row, column) => {
|
27
|
+
if (row >= 0 && column >= 0) {
|
28
|
+
const currentState = !!plugin.getCommentMeta(row, column, _comments.META_READONLY);
|
29
|
+
plugin.updateCommentMeta(row, column, {
|
30
|
+
[_comments.META_READONLY]: !currentState
|
31
|
+
});
|
32
|
+
}
|
33
|
+
});
|
34
|
+
},
|
35
|
+
disabled() {
|
36
|
+
const range = this.getSelectedRangeLast();
|
37
|
+
if (!range) {
|
38
|
+
return true;
|
39
|
+
}
|
40
|
+
if (range.highlight.isHeader()) {
|
41
|
+
return true;
|
42
|
+
}
|
43
|
+
if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
|
44
|
+
return true;
|
45
|
+
}
|
46
|
+
return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
|
47
|
+
}
|
48
|
+
};
|
49
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import * as C from "../../../i18n/constants.mjs";
|
2
|
+
import { checkSelectionConsistency, markLabelAsSelected } from "../../contextMenu/utils.mjs";
|
3
|
+
import { META_READONLY } from "../comments.mjs";
|
4
|
+
/**
|
5
|
+
* @param {Comments} plugin The Comments plugin instance.
|
6
|
+
* @returns {object}
|
7
|
+
*/
|
8
|
+
export default function readOnlyCommentItem(plugin) {
|
9
|
+
return {
|
10
|
+
key: 'commentsReadOnly',
|
11
|
+
name() {
|
12
|
+
const label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
|
13
|
+
const areReadOnly = checkSelectionConsistency(this.getSelectedRange(), (row, col) => {
|
14
|
+
return plugin.getCommentMeta(row, col, META_READONLY);
|
15
|
+
});
|
16
|
+
return areReadOnly ? markLabelAsSelected(label) : label;
|
17
|
+
},
|
18
|
+
callback() {
|
19
|
+
const range = this.getSelectedRangeLast();
|
20
|
+
range.forAll((row, column) => {
|
21
|
+
if (row >= 0 && column >= 0) {
|
22
|
+
const currentState = !!plugin.getCommentMeta(row, column, META_READONLY);
|
23
|
+
plugin.updateCommentMeta(row, column, {
|
24
|
+
[META_READONLY]: !currentState
|
25
|
+
});
|
26
|
+
}
|
27
|
+
});
|
28
|
+
},
|
29
|
+
disabled() {
|
30
|
+
const range = this.getSelectedRangeLast();
|
31
|
+
if (!range) {
|
32
|
+
return true;
|
33
|
+
}
|
34
|
+
if (range.highlight.isHeader()) {
|
35
|
+
return true;
|
36
|
+
}
|
37
|
+
if (!plugin.getCommentAtCell(range.highlight.row, range.highlight.col)) {
|
38
|
+
return true;
|
39
|
+
}
|
40
|
+
return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
|
41
|
+
}
|
42
|
+
};
|
43
|
+
}
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
exports.default = removeCommentItem;
|
5
|
+
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
7
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
8
|
+
/**
|
9
|
+
* @param {Comments} plugin The Comments plugin instance.
|
10
|
+
* @returns {object}
|
11
|
+
*/
|
12
|
+
function removeCommentItem(plugin) {
|
13
|
+
return {
|
14
|
+
key: 'commentsRemove',
|
15
|
+
name() {
|
16
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
|
17
|
+
},
|
18
|
+
callback() {
|
19
|
+
const range = this.getSelectedRangeLast();
|
20
|
+
range.forAll((row, column) => {
|
21
|
+
if (row >= 0 && column >= 0) {
|
22
|
+
plugin.removeCommentAtCell(row, column, false);
|
23
|
+
}
|
24
|
+
});
|
25
|
+
this.render();
|
26
|
+
},
|
27
|
+
disabled() {
|
28
|
+
const range = this.getSelectedRangeLast();
|
29
|
+
if (!range) {
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
if (range.highlight.isHeader()) {
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
|
36
|
+
}
|
37
|
+
};
|
38
|
+
}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import * as C from "../../../i18n/constants.mjs";
|
2
|
+
/**
|
3
|
+
* @param {Comments} plugin The Comments plugin instance.
|
4
|
+
* @returns {object}
|
5
|
+
*/
|
6
|
+
export default function removeCommentItem(plugin) {
|
7
|
+
return {
|
8
|
+
key: 'commentsRemove',
|
9
|
+
name() {
|
10
|
+
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
|
11
|
+
},
|
12
|
+
callback() {
|
13
|
+
const range = this.getSelectedRangeLast();
|
14
|
+
range.forAll((row, column) => {
|
15
|
+
if (row >= 0 && column >= 0) {
|
16
|
+
plugin.removeCommentAtCell(row, column, false);
|
17
|
+
}
|
18
|
+
});
|
19
|
+
this.render();
|
20
|
+
},
|
21
|
+
disabled() {
|
22
|
+
const range = this.getSelectedRangeLast();
|
23
|
+
if (!range) {
|
24
|
+
return true;
|
25
|
+
}
|
26
|
+
if (range.highlight.isHeader()) {
|
27
|
+
return true;
|
28
|
+
}
|
29
|
+
return this.countRenderedRows() === 0 || this.countRenderedCols() === 0;
|
30
|
+
}
|
31
|
+
};
|
32
|
+
}
|
@@ -60,7 +60,7 @@ export class ContextMenu extends BasePlugin {
|
|
60
60
|
|
61
61
|
constructor(hotInstance: Core);
|
62
62
|
isEnabled(): boolean;
|
63
|
-
open(
|
63
|
+
open(position: { left: number, top: number } | Event, offset?: { above?: number, below?: number, left?: number, right?: number }): void;
|
64
64
|
close(): void;
|
65
65
|
executeCommand(commandName: string, ...params: any): void;
|
66
66
|
}
|
@@ -4,10 +4,12 @@ exports.__esModule = true;
|
|
4
4
|
var _base = require("../base");
|
5
5
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
6
6
|
var _array = require("../../helpers/array");
|
7
|
+
var _object = require("../../helpers/object");
|
7
8
|
var _commandExecutor = _interopRequireDefault(require("./commandExecutor"));
|
8
9
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
9
10
|
var _itemsFactory = _interopRequireDefault(require("./itemsFactory"));
|
10
11
|
var _menu = _interopRequireDefault(require("./menu"));
|
12
|
+
var _utils = require("./utils");
|
11
13
|
var _element = require("../../helpers/dom/element");
|
12
14
|
var _predefinedItems = require("./predefinedItems");
|
13
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
@@ -15,6 +17,7 @@ const PLUGIN_KEY = 'contextMenu';
|
|
15
17
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
16
18
|
const PLUGIN_PRIORITY = 70;
|
17
19
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
20
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
18
21
|
_pluginHooks.default.getSingleton().register('afterContextMenuDefaultOptions');
|
19
22
|
_pluginHooks.default.getSingleton().register('beforeContextMenuShow');
|
20
23
|
_pluginHooks.default.getSingleton().register('afterContextMenuShow');
|
@@ -137,6 +140,7 @@ class ContextMenu extends _base.BasePlugin {
|
|
137
140
|
return _this.executeCommand.call(_this, ...params);
|
138
141
|
});
|
139
142
|
this.addHook('afterOnCellContextMenu', event => this.onAfterOnCellContextMenu(event));
|
143
|
+
this.registerShortcuts();
|
140
144
|
super.enablePlugin();
|
141
145
|
}
|
142
146
|
|
@@ -149,6 +153,7 @@ class ContextMenu extends _base.BasePlugin {
|
|
149
153
|
updatePlugin() {
|
150
154
|
this.disablePlugin();
|
151
155
|
this.enablePlugin();
|
156
|
+
this.unregisterShortcuts();
|
152
157
|
super.updatePlugin();
|
153
158
|
}
|
154
159
|
|
@@ -164,50 +169,83 @@ class ContextMenu extends _base.BasePlugin {
|
|
164
169
|
super.disablePlugin();
|
165
170
|
}
|
166
171
|
|
172
|
+
/**
|
173
|
+
* Register shortcuts responsible for toggling context menu.
|
174
|
+
*
|
175
|
+
* @private
|
176
|
+
*/
|
177
|
+
registerShortcuts() {
|
178
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
179
|
+
keys: [['Control/Meta', 'Shift', '\\'], ['Shift', 'F10']],
|
180
|
+
callback: () => {
|
181
|
+
const {
|
182
|
+
highlight
|
183
|
+
} = this.hot.getSelectedRangeLast();
|
184
|
+
this.hot.scrollToFocusedCell();
|
185
|
+
const rect = this.hot.getCell(highlight.row, highlight.col, true).getBoundingClientRect();
|
186
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
187
|
+
this.open({
|
188
|
+
left: rect.left + offset.left,
|
189
|
+
top: rect.top + offset.top - 1 + rect.height
|
190
|
+
}, {
|
191
|
+
left: rect.width,
|
192
|
+
above: -rect.height
|
193
|
+
});
|
194
|
+
this.hot._registerTimeout(() => {
|
195
|
+
this.menu.selectFirstCell();
|
196
|
+
});
|
197
|
+
},
|
198
|
+
runOnlyIf: () => this.hot.getSelectedRangeLast() && !this.menu.isOpened(),
|
199
|
+
group: SHORTCUTS_GROUP
|
200
|
+
});
|
201
|
+
}
|
202
|
+
|
203
|
+
/**
|
204
|
+
* Unregister shortcuts responsible for toggling context menu.
|
205
|
+
*
|
206
|
+
* @private
|
207
|
+
*/
|
208
|
+
unregisterShortcuts() {
|
209
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
210
|
+
}
|
211
|
+
|
167
212
|
/**
|
168
213
|
* Opens menu and re-position it based on the passed coordinates.
|
169
214
|
*
|
170
|
-
* @param {Event}
|
215
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
216
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
217
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
218
|
+
* coordinates.
|
219
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
220
|
+
* the offset to the menu position.
|
221
|
+
* @fires Hooks#beforeContextMenuShow
|
222
|
+
* @fires Hooks#afterContextMenuShow
|
171
223
|
*/
|
172
|
-
open(
|
173
|
-
|
224
|
+
open(position) {
|
225
|
+
var _this$menu;
|
226
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
227
|
+
above: 0,
|
228
|
+
below: 0,
|
229
|
+
left: 0,
|
230
|
+
right: 0
|
231
|
+
};
|
232
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
174
233
|
return;
|
175
234
|
}
|
176
235
|
this.prepareMenuItems();
|
177
236
|
this.menu.open();
|
178
|
-
|
179
|
-
|
180
|
-
}
|
181
|
-
let offsetTop = 0;
|
182
|
-
let offsetLeft = 0;
|
183
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
184
|
-
const {
|
185
|
-
frameElement
|
186
|
-
} = this.hot.rootWindow;
|
187
|
-
const {
|
188
|
-
top,
|
189
|
-
left
|
190
|
-
} = frameElement.getBoundingClientRect();
|
191
|
-
offsetTop = top - (0, _element.getWindowScrollTop)(event.view);
|
192
|
-
offsetLeft = left - (0, _element.getWindowScrollLeft)(event.view);
|
193
|
-
} else {
|
194
|
-
offsetTop = -1 * (0, _element.getWindowScrollTop)(this.menu.hotMenu.rootWindow);
|
195
|
-
offsetLeft = -1 * (0, _element.getWindowScrollLeft)(this.menu.hotMenu.rootWindow);
|
196
|
-
}
|
197
|
-
this.menu.setPosition({
|
198
|
-
top: parseInt(event.pageY, 10) + offsetTop,
|
199
|
-
left: parseInt(event.pageX, 10) + offsetLeft
|
237
|
+
(0, _object.objectEach)(offset, (value, key) => {
|
238
|
+
this.menu.setOffset(key, value);
|
200
239
|
});
|
240
|
+
this.menu.setPosition(position);
|
201
241
|
}
|
202
242
|
|
203
243
|
/**
|
204
244
|
* Closes the menu.
|
205
245
|
*/
|
206
246
|
close() {
|
207
|
-
|
208
|
-
|
209
|
-
}
|
210
|
-
this.menu.close();
|
247
|
+
var _this$menu2;
|
248
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
|
211
249
|
this.itemsFactory = null;
|
212
250
|
}
|
213
251
|
|
@@ -305,7 +343,11 @@ class ContextMenu extends _base.BasePlugin {
|
|
305
343
|
return;
|
306
344
|
}
|
307
345
|
}
|
308
|
-
this.
|
346
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
347
|
+
this.open({
|
348
|
+
top: event.clientY + offset.top,
|
349
|
+
left: event.clientX + offset.left
|
350
|
+
});
|
309
351
|
}
|
310
352
|
|
311
353
|
/**
|
@@ -1,14 +1,17 @@
|
|
1
1
|
import { BasePlugin } from "../base/index.mjs";
|
2
2
|
import Hooks from "../../pluginHooks.mjs";
|
3
3
|
import { arrayEach } from "../../helpers/array.mjs";
|
4
|
+
import { objectEach } from "../../helpers/object.mjs";
|
4
5
|
import CommandExecutor from "./commandExecutor.mjs";
|
5
6
|
import EventManager from "../../eventManager.mjs";
|
6
7
|
import ItemsFactory from "./itemsFactory.mjs";
|
7
8
|
import Menu from "./menu.mjs";
|
8
|
-
import {
|
9
|
+
import { getDocumentOffsetByElement } from "./utils.mjs";
|
10
|
+
import { hasClass } from "../../helpers/dom/element.mjs";
|
9
11
|
import { ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR } from "./predefinedItems.mjs";
|
10
12
|
export const PLUGIN_KEY = 'contextMenu';
|
11
13
|
export const PLUGIN_PRIORITY = 70;
|
14
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
12
15
|
Hooks.getSingleton().register('afterContextMenuDefaultOptions');
|
13
16
|
Hooks.getSingleton().register('beforeContextMenuShow');
|
14
17
|
Hooks.getSingleton().register('afterContextMenuShow');
|
@@ -131,6 +134,7 @@ export class ContextMenu extends BasePlugin {
|
|
131
134
|
return _this.executeCommand.call(_this, ...params);
|
132
135
|
});
|
133
136
|
this.addHook('afterOnCellContextMenu', event => this.onAfterOnCellContextMenu(event));
|
137
|
+
this.registerShortcuts();
|
134
138
|
super.enablePlugin();
|
135
139
|
}
|
136
140
|
|
@@ -143,6 +147,7 @@ export class ContextMenu extends BasePlugin {
|
|
143
147
|
updatePlugin() {
|
144
148
|
this.disablePlugin();
|
145
149
|
this.enablePlugin();
|
150
|
+
this.unregisterShortcuts();
|
146
151
|
super.updatePlugin();
|
147
152
|
}
|
148
153
|
|
@@ -158,50 +163,83 @@ export class ContextMenu extends BasePlugin {
|
|
158
163
|
super.disablePlugin();
|
159
164
|
}
|
160
165
|
|
166
|
+
/**
|
167
|
+
* Register shortcuts responsible for toggling context menu.
|
168
|
+
*
|
169
|
+
* @private
|
170
|
+
*/
|
171
|
+
registerShortcuts() {
|
172
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
173
|
+
keys: [['Control/Meta', 'Shift', '\\'], ['Shift', 'F10']],
|
174
|
+
callback: () => {
|
175
|
+
const {
|
176
|
+
highlight
|
177
|
+
} = this.hot.getSelectedRangeLast();
|
178
|
+
this.hot.scrollToFocusedCell();
|
179
|
+
const rect = this.hot.getCell(highlight.row, highlight.col, true).getBoundingClientRect();
|
180
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
181
|
+
this.open({
|
182
|
+
left: rect.left + offset.left,
|
183
|
+
top: rect.top + offset.top - 1 + rect.height
|
184
|
+
}, {
|
185
|
+
left: rect.width,
|
186
|
+
above: -rect.height
|
187
|
+
});
|
188
|
+
this.hot._registerTimeout(() => {
|
189
|
+
this.menu.selectFirstCell();
|
190
|
+
});
|
191
|
+
},
|
192
|
+
runOnlyIf: () => this.hot.getSelectedRangeLast() && !this.menu.isOpened(),
|
193
|
+
group: SHORTCUTS_GROUP
|
194
|
+
});
|
195
|
+
}
|
196
|
+
|
197
|
+
/**
|
198
|
+
* Unregister shortcuts responsible for toggling context menu.
|
199
|
+
*
|
200
|
+
* @private
|
201
|
+
*/
|
202
|
+
unregisterShortcuts() {
|
203
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
204
|
+
}
|
205
|
+
|
161
206
|
/**
|
162
207
|
* Opens menu and re-position it based on the passed coordinates.
|
163
208
|
*
|
164
|
-
* @param {Event}
|
209
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
210
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
211
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
212
|
+
* coordinates.
|
213
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
214
|
+
* the offset to the menu position.
|
215
|
+
* @fires Hooks#beforeContextMenuShow
|
216
|
+
* @fires Hooks#afterContextMenuShow
|
165
217
|
*/
|
166
|
-
open(
|
167
|
-
|
218
|
+
open(position) {
|
219
|
+
var _this$menu;
|
220
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
221
|
+
above: 0,
|
222
|
+
below: 0,
|
223
|
+
left: 0,
|
224
|
+
right: 0
|
225
|
+
};
|
226
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
168
227
|
return;
|
169
228
|
}
|
170
229
|
this.prepareMenuItems();
|
171
230
|
this.menu.open();
|
172
|
-
|
173
|
-
|
174
|
-
}
|
175
|
-
let offsetTop = 0;
|
176
|
-
let offsetLeft = 0;
|
177
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
178
|
-
const {
|
179
|
-
frameElement
|
180
|
-
} = this.hot.rootWindow;
|
181
|
-
const {
|
182
|
-
top,
|
183
|
-
left
|
184
|
-
} = frameElement.getBoundingClientRect();
|
185
|
-
offsetTop = top - getWindowScrollTop(event.view);
|
186
|
-
offsetLeft = left - getWindowScrollLeft(event.view);
|
187
|
-
} else {
|
188
|
-
offsetTop = -1 * getWindowScrollTop(this.menu.hotMenu.rootWindow);
|
189
|
-
offsetLeft = -1 * getWindowScrollLeft(this.menu.hotMenu.rootWindow);
|
190
|
-
}
|
191
|
-
this.menu.setPosition({
|
192
|
-
top: parseInt(event.pageY, 10) + offsetTop,
|
193
|
-
left: parseInt(event.pageX, 10) + offsetLeft
|
231
|
+
objectEach(offset, (value, key) => {
|
232
|
+
this.menu.setOffset(key, value);
|
194
233
|
});
|
234
|
+
this.menu.setPosition(position);
|
195
235
|
}
|
196
236
|
|
197
237
|
/**
|
198
238
|
* Closes the menu.
|
199
239
|
*/
|
200
240
|
close() {
|
201
|
-
|
202
|
-
|
203
|
-
}
|
204
|
-
this.menu.close();
|
241
|
+
var _this$menu2;
|
242
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
|
205
243
|
this.itemsFactory = null;
|
206
244
|
}
|
207
245
|
|
@@ -299,7 +337,11 @@ export class ContextMenu extends BasePlugin {
|
|
299
337
|
return;
|
300
338
|
}
|
301
339
|
}
|
302
|
-
this.
|
340
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
341
|
+
this.open({
|
342
|
+
top: event.clientY + offset.top,
|
343
|
+
left: event.clientX + offset.left
|
344
|
+
});
|
303
345
|
}
|
304
346
|
|
305
347
|
/**
|
@@ -23,6 +23,13 @@ function alignmentItem() {
|
|
23
23
|
if (this.countRows() === 0 || this.countCols() === 0) {
|
24
24
|
return true;
|
25
25
|
}
|
26
|
+
const range = this.getSelectedRangeLast();
|
27
|
+
if (!range) {
|
28
|
+
return true;
|
29
|
+
}
|
30
|
+
if (range.isSingleHeader()) {
|
31
|
+
return true;
|
32
|
+
}
|
26
33
|
return !(this.getSelectedRange() && !this.selection.isSelectedByCorner());
|
27
34
|
},
|
28
35
|
submenu: {
|
@@ -16,6 +16,13 @@ export default function alignmentItem() {
|
|
16
16
|
if (this.countRows() === 0 || this.countCols() === 0) {
|
17
17
|
return true;
|
18
18
|
}
|
19
|
+
const range = this.getSelectedRangeLast();
|
20
|
+
if (!range) {
|
21
|
+
return true;
|
22
|
+
}
|
23
|
+
if (range.isSingleHeader()) {
|
24
|
+
return true;
|
25
|
+
}
|
19
26
|
return !(this.getSelectedRange() && !this.selection.isSelectedByCorner());
|
20
27
|
},
|
21
28
|
submenu: {
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.default = clearColumnItem;
|
5
|
-
var _utils = require("../utils");
|
6
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
7
6
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
8
7
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
@@ -26,8 +25,11 @@ function clearColumnItem() {
|
|
26
25
|
}
|
27
26
|
},
|
28
27
|
disabled() {
|
29
|
-
const
|
30
|
-
if (!
|
28
|
+
const range = this.getSelectedRangeLast();
|
29
|
+
if (!range) {
|
30
|
+
return true;
|
31
|
+
}
|
32
|
+
if (range.isSingleHeader() && range.highlight.col < 0) {
|
31
33
|
return true;
|
32
34
|
}
|
33
35
|
return !this.selection.isSelectedByColumnHeader();
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import { getValidSelection } from "../utils.mjs";
|
2
1
|
import * as C from "../../../i18n/constants.mjs";
|
3
2
|
export const KEY = 'clear_column';
|
4
3
|
|
@@ -19,8 +18,11 @@ export default function clearColumnItem() {
|
|
19
18
|
}
|
20
19
|
},
|
21
20
|
disabled() {
|
22
|
-
const
|
23
|
-
if (!
|
21
|
+
const range = this.getSelectedRangeLast();
|
22
|
+
if (!range) {
|
23
|
+
return true;
|
24
|
+
}
|
25
|
+
if (range.isSingleHeader() && range.highlight.col < 0) {
|
24
26
|
return true;
|
25
27
|
}
|
26
28
|
return !this.selection.isSelectedByColumnHeader();
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.default = columnLeftItem;
|
5
|
-
var _utils = require("../utils");
|
6
5
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
7
6
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
8
7
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
@@ -27,8 +26,11 @@ function columnLeftItem() {
|
|
27
26
|
if (!this.isColumnModificationAllowed()) {
|
28
27
|
return true;
|
29
28
|
}
|
30
|
-
const
|
31
|
-
if (!
|
29
|
+
const range = this.getSelectedRangeLast();
|
30
|
+
if (!range) {
|
31
|
+
return true;
|
32
|
+
}
|
33
|
+
if (range.isSingleHeader() && range.highlight.col < 0) {
|
32
34
|
return true;
|
33
35
|
}
|
34
36
|
if (this.selection.isSelectedByCorner()) {
|