handsontable 0.0.0-next-010265d-20231005 → 0.0.0-next-9379dd1-20231020
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 +12 -10
- package/3rdparty/walkontable/src/event.mjs +12 -10
- 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 +13 -2
- package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
- 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/renderer/cells.js +10 -0
- package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/rows.js +13 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
- package/3rdparty/walkontable/src/renderer/table.js +9 -0
- package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
- package/3rdparty/walkontable/src/scroll.js +2 -0
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- 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 +274 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +269 -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/settings.js +13 -4
- package/3rdparty/walkontable/src/settings.mjs +13 -4
- 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 +19 -78
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +3 -0
- package/cellTypes/index.js +4 -0
- package/cellTypes/index.mjs +3 -1
- package/cellTypes/selectType/index.d.ts +1 -0
- package/cellTypes/selectType/index.js +6 -0
- package/cellTypes/selectType/index.mjs +1 -0
- package/cellTypes/selectType/selectType.d.ts +14 -0
- package/cellTypes/selectType/selectType.js +13 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -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 +9 -4
- package/core.js +285 -327
- package/core.mjs +285 -327
- package/dataMap/metaManager/metaSchema.js +65 -0
- package/dataMap/metaManager/metaSchema.mjs +65 -0
- package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
- package/dataMap/replaceData.js +5 -0
- package/dataMap/replaceData.mjs +5 -0
- package/dist/handsontable.css +40 -5
- package/dist/handsontable.full.css +40 -5
- package/dist/handsontable.full.js +11744 -6945
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +141 -141
- package/dist/handsontable.js +14036 -9237
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +21 -21
- package/dist/languages/all.js +6 -2
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +3 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +3 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +15 -87
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
- package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
- package/editors/dateEditor/dateEditor.js +26 -7
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/handsontableEditor/handsontableEditor.js +9 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
- package/editors/textEditor/textEditor.js +19 -27
- package/editors/textEditor/textEditor.mjs +22 -30
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +79 -0
- package/helpers/a11y.mjs +38 -0
- package/helpers/dom/element.js +188 -9
- package/helpers/dom/element.mjs +182 -9
- 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/i18n/constants.js +7 -1
- package/i18n/constants.mjs +4 -1
- package/i18n/languages/en-US.js +3 -1
- package/i18n/languages/en-US.mjs +3 -1
- package/i18n/languages/pl-PL.js +3 -1
- package/i18n/languages/pl-PL.mjs +3 -1
- package/languages/all.js +6 -2
- package/languages/en-US.js +3 -1
- package/languages/en-US.mjs +3 -1
- package/languages/index.js +6 -2
- package/languages/pl-PL.js +3 -1
- package/languages/pl-PL.mjs +3 -1
- package/package.json +21 -1
- package/pluginHooks.d.ts +12 -1
- package/pluginHooks.js +152 -1
- package/pluginHooks.mjs +152 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
- package/plugins/columnSorting/columnSorting.js +43 -0
- package/plugins/columnSorting/columnSorting.mjs +44 -3
- 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 +252 -189
- package/plugins/comments/comments.mjs +251 -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/commandExecutor.js +2 -3
- package/plugins/contextMenu/commandExecutor.mjs +2 -3
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +75 -36
- package/plugins/contextMenu/contextMenu.mjs +74 -35
- package/plugins/contextMenu/itemsFactory.js +2 -3
- package/plugins/contextMenu/itemsFactory.mjs +3 -4
- package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
- package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
- package/plugins/contextMenu/menu/index.js +9 -0
- package/plugins/contextMenu/menu/index.mjs +1 -0
- package/plugins/contextMenu/{menu.js → menu/menu.js} +96 -308
- package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +97 -309
- package/plugins/contextMenu/menu/navigator.js +152 -0
- package/plugins/contextMenu/menu/navigator.mjs +148 -0
- package/plugins/contextMenu/menu/positioner.js +213 -0
- package/plugins/contextMenu/menu/positioner.mjs +209 -0
- package/plugins/contextMenu/menu/utils.js +177 -0
- package/plugins/contextMenu/menu/utils.mjs +163 -0
- 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.js → predefinedItems/index.js} +14 -14
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- 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 +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- 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 +127 -78
- package/plugins/copyPaste/copyPaste.mjs +128 -79
- 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 +97 -38
- package/plugins/dropdownMenu/dropdownMenu.mjs +96 -37
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +31 -14
- package/plugins/filters/filters.mjs +31 -14
- package/plugins/filters/ui/select.js +3 -3
- package/plugins/filters/ui/select.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +3 -1
- package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
- package/plugins/mergeCells/mergeCells.js +5 -16
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +240 -10
- package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/nestedRows/ui/headers.js +11 -0
- package/plugins/nestedRows/ui/headers.mjs +12 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +17 -0
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +29 -0
- package/renderers/dateRenderer/dateRenderer.mjs +24 -0
- package/renderers/dateRenderer/index.d.ts +1 -0
- package/renderers/dateRenderer/index.js +6 -0
- package/renderers/dateRenderer/index.mjs +1 -0
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
- package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
- package/renderers/handsontableRenderer/index.d.ts +1 -0
- package/renderers/handsontableRenderer/index.js +6 -0
- package/renderers/handsontableRenderer/index.mjs +1 -0
- package/renderers/index.d.ts +9 -0
- package/renderers/selectRenderer/index.d.ts +1 -0
- package/renderers/selectRenderer/index.js +6 -0
- package/renderers/selectRenderer/index.mjs +1 -0
- package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
- package/renderers/selectRenderer/selectRenderer.js +27 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- 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 +7 -1
- package/selection/mouseEventHandler.mjs +7 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +321 -152
- package/selection/selection.mjs +318 -151
- 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 +4 -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 +25 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -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 +25 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -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 +33 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -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 +33 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +12 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -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/context.js +20 -2
- package/shortcuts/context.mjs +20 -3
- package/shortcuts/manager.js +25 -7
- package/shortcuts/manager.mjs +26 -7
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +111 -13
- package/tableView.mjs +112 -14
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- 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 !== null && highlight !== void 0 && 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 !== null && highlight !== void 0 && 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
|
+
}
|
@@ -85,6 +85,7 @@ class CommandExecutor {
|
|
85
85
|
* @param {string[]} subCommands The collection of the commands.
|
86
86
|
* @returns {boolean}
|
87
87
|
*/
|
88
|
+
exports.CommandExecutor = CommandExecutor;
|
88
89
|
function findSubCommand(subCommandName, subCommands) {
|
89
90
|
let command;
|
90
91
|
(0, _array.arrayEach)(subCommands, cmd => {
|
@@ -95,6 +96,4 @@ function findSubCommand(subCommandName, subCommands) {
|
|
95
96
|
}
|
96
97
|
});
|
97
98
|
return command;
|
98
|
-
}
|
99
|
-
var _default = CommandExecutor;
|
100
|
-
exports.default = _default;
|
99
|
+
}
|
@@ -9,7 +9,7 @@ import { hasOwnProperty } from "../../helpers/object.mjs";
|
|
9
9
|
* @private
|
10
10
|
* @class CommandExecutor
|
11
11
|
*/
|
12
|
-
class CommandExecutor {
|
12
|
+
export class CommandExecutor {
|
13
13
|
constructor(hotInstance) {
|
14
14
|
this.hot = hotInstance;
|
15
15
|
this.commands = {};
|
@@ -92,5 +92,4 @@ function findSubCommand(subCommandName, subCommands) {
|
|
92
92
|
}
|
93
93
|
});
|
94
94
|
return command;
|
95
|
-
}
|
96
|
-
export default CommandExecutor;
|
95
|
+
}
|
@@ -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
|
7
|
+
var _object = require("../../helpers/object");
|
8
|
+
var _commandExecutor = require("./commandExecutor");
|
8
9
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
9
|
-
var _itemsFactory =
|
10
|
-
var _menu =
|
10
|
+
var _itemsFactory = require("./itemsFactory");
|
11
|
+
var _menu = 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');
|
@@ -83,7 +86,7 @@ class ContextMenu extends _base.BasePlugin {
|
|
83
86
|
* @private
|
84
87
|
* @type {CommandExecutor}
|
85
88
|
*/
|
86
|
-
this.commandExecutor = new _commandExecutor.
|
89
|
+
this.commandExecutor = new _commandExecutor.CommandExecutor(this.hot);
|
87
90
|
/**
|
88
91
|
* Instance of {@link ItemsFactory}.
|
89
92
|
*
|
@@ -122,7 +125,7 @@ class ContextMenu extends _base.BasePlugin {
|
|
122
125
|
if (typeof settings.callback === 'function') {
|
123
126
|
this.commandExecutor.setCommonCallback(settings.callback);
|
124
127
|
}
|
125
|
-
this.menu = new _menu.
|
128
|
+
this.menu = new _menu.Menu(this.hot, {
|
126
129
|
className: 'htContextMenu',
|
127
130
|
keepInViewport: true,
|
128
131
|
container: settings.uiContainer || this.hot.rootDocument.body
|
@@ -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,80 @@ 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
|
+
},
|
195
|
+
runOnlyIf: () => this.hot.getSelectedRangeLast() && !this.menu.isOpened(),
|
196
|
+
group: SHORTCUTS_GROUP
|
197
|
+
});
|
198
|
+
}
|
199
|
+
|
200
|
+
/**
|
201
|
+
* Unregister shortcuts responsible for toggling context menu.
|
202
|
+
*
|
203
|
+
* @private
|
204
|
+
*/
|
205
|
+
unregisterShortcuts() {
|
206
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
207
|
+
}
|
208
|
+
|
167
209
|
/**
|
168
210
|
* Opens menu and re-position it based on the passed coordinates.
|
169
211
|
*
|
170
|
-
* @param {Event}
|
212
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
213
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
214
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
215
|
+
* coordinates.
|
216
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
217
|
+
* the offset to the menu position.
|
218
|
+
* @fires Hooks#beforeContextMenuShow
|
219
|
+
* @fires Hooks#afterContextMenuShow
|
171
220
|
*/
|
172
|
-
open(
|
173
|
-
|
221
|
+
open(position) {
|
222
|
+
var _this$menu;
|
223
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
224
|
+
above: 0,
|
225
|
+
below: 0,
|
226
|
+
left: 0,
|
227
|
+
right: 0
|
228
|
+
};
|
229
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
174
230
|
return;
|
175
231
|
}
|
176
232
|
this.prepareMenuItems();
|
177
233
|
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
|
234
|
+
(0, _object.objectEach)(offset, (value, key) => {
|
235
|
+
this.menu.setOffset(key, value);
|
200
236
|
});
|
237
|
+
this.menu.setPosition(position);
|
201
238
|
}
|
202
239
|
|
203
240
|
/**
|
204
241
|
* Closes the menu.
|
205
242
|
*/
|
206
243
|
close() {
|
207
|
-
|
208
|
-
|
209
|
-
}
|
210
|
-
this.menu.close();
|
244
|
+
var _this$menu2;
|
245
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
|
211
246
|
this.itemsFactory = null;
|
212
247
|
}
|
213
248
|
|
@@ -259,7 +294,7 @@ class ContextMenu extends _base.BasePlugin {
|
|
259
294
|
* @fires Hooks#beforeContextMenuSetItems
|
260
295
|
*/
|
261
296
|
prepareMenuItems() {
|
262
|
-
this.itemsFactory = new _itemsFactory.
|
297
|
+
this.itemsFactory = new _itemsFactory.ItemsFactory(this.hot, ContextMenu.DEFAULT_ITEMS);
|
263
298
|
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
264
299
|
const predefinedItems = {
|
265
300
|
items: this.itemsFactory.getItems(settings)
|
@@ -305,7 +340,11 @@ class ContextMenu extends _base.BasePlugin {
|
|
305
340
|
return;
|
306
341
|
}
|
307
342
|
}
|
308
|
-
this.
|
343
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
344
|
+
this.open({
|
345
|
+
top: event.clientY + offset.top,
|
346
|
+
left: event.clientX + offset.left
|
347
|
+
});
|
309
348
|
}
|
310
349
|
|
311
350
|
/**
|
@@ -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
|
4
|
+
import { objectEach } from "../../helpers/object.mjs";
|
5
|
+
import { CommandExecutor } from "./commandExecutor.mjs";
|
5
6
|
import EventManager from "../../eventManager.mjs";
|
6
|
-
import ItemsFactory from "./itemsFactory.mjs";
|
7
|
-
import Menu from "./menu.mjs";
|
8
|
-
import {
|
9
|
-
import {
|
7
|
+
import { ItemsFactory } from "./itemsFactory.mjs";
|
8
|
+
import { Menu } from "./menu/index.mjs";
|
9
|
+
import { getDocumentOffsetByElement } from "./utils.mjs";
|
10
|
+
import { hasClass } from "../../helpers/dom/element.mjs";
|
11
|
+
import { ROW_ABOVE, ROW_BELOW, COLUMN_LEFT, COLUMN_RIGHT, REMOVE_ROW, REMOVE_COLUMN, UNDO, REDO, READ_ONLY, ALIGNMENT, SEPARATOR } from "./predefinedItems/index.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,80 @@ 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
|
+
},
|
189
|
+
runOnlyIf: () => this.hot.getSelectedRangeLast() && !this.menu.isOpened(),
|
190
|
+
group: SHORTCUTS_GROUP
|
191
|
+
});
|
192
|
+
}
|
193
|
+
|
194
|
+
/**
|
195
|
+
* Unregister shortcuts responsible for toggling context menu.
|
196
|
+
*
|
197
|
+
* @private
|
198
|
+
*/
|
199
|
+
unregisterShortcuts() {
|
200
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
201
|
+
}
|
202
|
+
|
161
203
|
/**
|
162
204
|
* Opens menu and re-position it based on the passed coordinates.
|
163
205
|
*
|
164
|
-
* @param {Event}
|
206
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
207
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
208
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
209
|
+
* coordinates.
|
210
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
211
|
+
* the offset to the menu position.
|
212
|
+
* @fires Hooks#beforeContextMenuShow
|
213
|
+
* @fires Hooks#afterContextMenuShow
|
165
214
|
*/
|
166
|
-
open(
|
167
|
-
|
215
|
+
open(position) {
|
216
|
+
var _this$menu;
|
217
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
218
|
+
above: 0,
|
219
|
+
below: 0,
|
220
|
+
left: 0,
|
221
|
+
right: 0
|
222
|
+
};
|
223
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
168
224
|
return;
|
169
225
|
}
|
170
226
|
this.prepareMenuItems();
|
171
227
|
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
|
228
|
+
objectEach(offset, (value, key) => {
|
229
|
+
this.menu.setOffset(key, value);
|
194
230
|
});
|
231
|
+
this.menu.setPosition(position);
|
195
232
|
}
|
196
233
|
|
197
234
|
/**
|
198
235
|
* Closes the menu.
|
199
236
|
*/
|
200
237
|
close() {
|
201
|
-
|
202
|
-
|
203
|
-
}
|
204
|
-
this.menu.close();
|
238
|
+
var _this$menu2;
|
239
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
|
205
240
|
this.itemsFactory = null;
|
206
241
|
}
|
207
242
|
|
@@ -299,7 +334,11 @@ export class ContextMenu extends BasePlugin {
|
|
299
334
|
return;
|
300
335
|
}
|
301
336
|
}
|
302
|
-
this.
|
337
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
338
|
+
this.open({
|
339
|
+
top: event.clientY + offset.top,
|
340
|
+
left: event.clientX + offset.left
|
341
|
+
});
|
303
342
|
}
|
304
343
|
|
305
344
|
/**
|
@@ -66,6 +66,7 @@ class ItemsFactory {
|
|
66
66
|
* @param {object} items Additional options.
|
67
67
|
* @returns {object[]} Returns parsed and merged menu items collection ready to render.
|
68
68
|
*/
|
69
|
+
exports.ItemsFactory = ItemsFactory;
|
69
70
|
function getItems() {
|
70
71
|
let itemsPattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
71
72
|
let defaultPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
@@ -119,6 +120,4 @@ function getItems() {
|
|
119
120
|
});
|
120
121
|
}
|
121
122
|
return result;
|
122
|
-
}
|
123
|
-
var _default = ItemsFactory;
|
124
|
-
exports.default = _default;
|
123
|
+
}
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
2
|
import { objectEach, isObject, extend } from "../../helpers/object.mjs";
|
3
3
|
import { arrayEach } from "../../helpers/array.mjs";
|
4
|
-
import { SEPARATOR, ITEMS, predefinedItems } from "./predefinedItems.mjs";
|
4
|
+
import { SEPARATOR, ITEMS, predefinedItems } from "./predefinedItems/index.mjs";
|
5
5
|
/**
|
6
6
|
* Predefined items class factory for menu items.
|
7
7
|
*
|
8
8
|
* @private
|
9
9
|
* @class ItemsFactory
|
10
10
|
*/
|
11
|
-
class ItemsFactory {
|
11
|
+
export class ItemsFactory {
|
12
12
|
constructor(hotInstance) {
|
13
13
|
let orderPattern = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
14
14
|
this.hot = hotInstance;
|
@@ -116,5 +116,4 @@ function getItems() {
|
|
116
116
|
});
|
117
117
|
}
|
118
118
|
return result;
|
119
|
-
}
|
120
|
-
export default ItemsFactory;
|
119
|
+
}
|