handsontable 0.0.0-next-b66c79f-20230713 → 0.0.0-next-08765b9-20230714
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 +87 -33
- package/3rdparty/walkontable/src/cell/coords.mjs +87 -33
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +92 -46
- package/3rdparty/walkontable/src/cell/range.mjs +92 -46
- package/3rdparty/walkontable/src/core/_base.js +41 -33
- package/3rdparty/walkontable/src/core/_base.mjs +41 -33
- package/3rdparty/walkontable/src/core/clone.js +8 -5
- package/3rdparty/walkontable/src/core/clone.mjs +8 -5
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +9 -8
- package/3rdparty/walkontable/src/event.mjs +9 -8
- 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 +11 -9
- package/3rdparty/walkontable/src/overlay/_base.mjs +11 -9
- package/3rdparty/walkontable/src/overlay/bottom.js +10 -8
- package/3rdparty/walkontable/src/overlay/bottom.mjs +10 -8
- 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 +12 -14
- package/3rdparty/walkontable/src/overlay/top.mjs +12 -14
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.js +16 -13
- package/3rdparty/walkontable/src/overlay/topInlineStartCorner.mjs +16 -13
- package/3rdparty/walkontable/src/overlays.js +75 -80
- package/3rdparty/walkontable/src/overlays.mjs +75 -80
- package/3rdparty/walkontable/src/scroll.js +27 -24
- package/3rdparty/walkontable/src/scroll.mjs +27 -24
- 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/settings.js +18 -17
- package/3rdparty/walkontable/src/settings.mjs +18 -17
- 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 +48 -115
- package/3rdparty/walkontable/src/table.mjs +49 -116
- package/base.js +2 -2
- package/base.mjs +2 -2
- 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 +181 -298
- package/core.mjs +181 -298
- package/dataMap/metaManager/metaLayers/cellMeta.js +2 -1
- package/dataMap/metaManager/metaLayers/cellMeta.mjs +2 -1
- package/dataMap/metaManager/metaLayers/globalMeta.js +1 -1
- package/dataMap/metaManager/metaLayers/globalMeta.mjs +1 -1
- package/dataMap/metaManager/metaSchema.js +41 -0
- package/dataMap/metaManager/metaSchema.mjs +41 -0
- package/dataMap/metaManager/mods/dynamicCellMeta.js +3 -2
- package/dataMap/metaManager/mods/dynamicCellMeta.mjs +3 -2
- package/dataMap/metaManager/utils.js +4 -2
- package/dataMap/metaManager/utils.mjs +4 -2
- package/dist/handsontable.css +19 -3
- package/dist/handsontable.full.css +19 -3
- package/dist/handsontable.full.js +10739 -7037
- package/dist/handsontable.full.min.css +3 -3
- package/dist/handsontable.full.min.js +25 -25
- package/dist/handsontable.js +24884 -21182
- 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/autocompleteEditor/autocompleteEditor.js +70 -67
- package/editors/autocompleteEditor/autocompleteEditor.mjs +70 -67
- package/editors/baseEditor/baseEditor.js +1 -1
- package/editors/baseEditor/baseEditor.mjs +1 -1
- package/editors/dateEditor/dateEditor.js +2 -1
- package/editors/dateEditor/dateEditor.mjs +2 -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/helpers/object.js +1 -0
- package/helpers/object.mjs +1 -0
- package/index.js +5 -5
- package/index.mjs +5 -5
- package/package.json +1 -1
- package/pluginHooks.d.ts +7 -1
- package/pluginHooks.js +106 -1
- package/pluginHooks.mjs +106 -1
- package/plugins/autoColumnSize/autoColumnSize.js +4 -1
- package/plugins/autoColumnSize/autoColumnSize.mjs +4 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +110 -40
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +110 -40
- package/plugins/columnSorting/columnSorting.js +40 -1
- package/plugins/columnSorting/columnSorting.mjs +40 -3
- package/plugins/columnSorting/columnStatesManager.js +2 -1
- package/plugins/columnSorting/columnStatesManager.mjs +2 -1
- 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 +253 -191
- package/plugins/comments/comments.mjs +252 -192
- 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 +12 -6
- package/plugins/copyPaste/copyPaste.mjs +12 -6
- package/plugins/customBorders/customBorders.js +36 -29
- package/plugins/customBorders/customBorders.mjs +37 -30
- package/plugins/customBorders/utils.js +3 -3
- package/plugins/customBorders/utils.mjs +3 -3
- 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/conditionCollection.js +6 -5
- package/plugins/filters/conditionCollection.mjs +6 -5
- package/plugins/filters/filters.js +44 -21
- package/plugins/filters/filters.mjs +43 -20
- package/plugins/formulas/engine/register.js +3 -3
- package/plugins/formulas/engine/register.mjs +3 -3
- package/plugins/formulas/engine/settings.js +6 -3
- package/plugins/formulas/engine/settings.mjs +6 -3
- package/plugins/formulas/formulas.js +151 -143
- package/plugins/formulas/formulas.mjs +151 -143
- package/plugins/formulas/indexSyncer/axisSyncer.js +115 -79
- package/plugins/formulas/indexSyncer/axisSyncer.mjs +115 -79
- package/plugins/formulas/indexSyncer/index.js +100 -64
- package/plugins/formulas/indexSyncer/index.mjs +100 -64
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
- package/plugins/hiddenColumns/contextMenuItem/showColumn.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.js +51 -34
- package/plugins/hiddenColumns/hiddenColumns.mjs +51 -34
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
- package/plugins/hiddenRows/contextMenuItem/showRow.mjs +2 -2
- package/plugins/hiddenRows/hiddenRows.js +50 -33
- package/plugins/hiddenRows/hiddenRows.mjs +50 -33
- package/plugins/manualRowResize/manualRowResize.js +2 -1
- package/plugins/manualRowResize/manualRowResize.mjs +2 -1
- package/plugins/mergeCells/mergeCells.js +6 -17
- package/plugins/mergeCells/mergeCells.mjs +6 -17
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +209 -75
- package/plugins/nestedHeaders/nestedHeaders.mjs +208 -74
- package/plugins/nestedHeaders/stateManager/headersTree.js +58 -38
- package/plugins/nestedHeaders/stateManager/headersTree.mjs +58 -38
- package/plugins/nestedHeaders/stateManager/index.js +107 -49
- package/plugins/nestedHeaders/stateManager/index.mjs +105 -47
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.js +1 -1
- package/plugins/nestedHeaders/stateManager/nodeModifiers/collapse.mjs +1 -1
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +57 -37
- package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +57 -37
- package/plugins/nestedHeaders/utils/ghostTable.js +39 -35
- package/plugins/nestedHeaders/utils/ghostTable.mjs +39 -35
- package/plugins/nestedRows/data/dataManager.js +4 -2
- package/plugins/nestedRows/data/dataManager.mjs +4 -2
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/persistentState/storage.js +1 -0
- package/plugins/persistentState/storage.mjs +1 -0
- package/plugins/undoRedo/undoRedo.js +2 -1
- package/plugins/undoRedo/undoRedo.mjs +2 -1
- 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 +41 -33
- package/selection/highlight/visualSelection.mjs +41 -33
- 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 +290 -154
- package/selection/selection.mjs +287 -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 +163 -91
- package/tableView.mjs +163 -91
- package/translations/changesObservable/observable.js +82 -54
- package/translations/changesObservable/observable.mjs +82 -54
- package/translations/changesObservable/observer.js +24 -11
- package/translations/changesObservable/observer.mjs +24 -11
- package/translations/maps/linkedPhysicalIndexToValueMap.js +14 -8
- package/translations/maps/linkedPhysicalIndexToValueMap.mjs +14 -8
- package/utils/dataStructures/tree.js +21 -18
- package/utils/dataStructures/tree.mjs +21 -18
- 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
@@ -259,13 +259,13 @@ class CopyPaste extends _base.BasePlugin {
|
|
259
259
|
} = this.hot.getSettings();
|
260
260
|
if (typeof settings === 'object') {
|
261
261
|
var _settings$pasteMode, _settings$uiContainer;
|
262
|
-
this.pasteMode = (_settings$pasteMode = settings.pasteMode)
|
262
|
+
this.pasteMode = (_settings$pasteMode = settings.pasteMode) !== null && _settings$pasteMode !== void 0 ? _settings$pasteMode : this.pasteMode;
|
263
263
|
this.rowsLimit = isNaN(settings.rowsLimit) ? this.rowsLimit : settings.rowsLimit;
|
264
264
|
this.columnsLimit = isNaN(settings.columnsLimit) ? this.columnsLimit : settings.columnsLimit;
|
265
265
|
_classPrivateFieldSet(this, _enableCopyColumnHeaders, !!settings.copyColumnHeaders);
|
266
266
|
_classPrivateFieldSet(this, _enableCopyColumnGroupHeaders, !!settings.copyColumnGroupHeaders);
|
267
267
|
_classPrivateFieldSet(this, _enableCopyColumnHeadersOnly, !!settings.copyColumnHeadersOnly);
|
268
|
-
this.uiContainer = (_settings$uiContainer = settings.uiContainer)
|
268
|
+
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
269
269
|
}
|
270
270
|
this.addHook('afterContextMenuDefaultOptions', options => this.onAfterContextMenuDefaultOptions(options));
|
271
271
|
this.addHook('afterOnCellMouseUp', () => this.onAfterOnCellMouseUp());
|
@@ -431,6 +431,10 @@ class CopyPaste extends _base.BasePlugin {
|
|
431
431
|
if (!selectionRange) {
|
432
432
|
return;
|
433
433
|
}
|
434
|
+
if (selectionRange.isSingleHeader()) {
|
435
|
+
this.copyableRanges = [];
|
436
|
+
return;
|
437
|
+
}
|
434
438
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
435
439
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
436
440
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -476,7 +480,8 @@ class CopyPaste extends _base.BasePlugin {
|
|
476
480
|
* @private
|
477
481
|
*/
|
478
482
|
getOrCreateFocusableElement() {
|
479
|
-
|
483
|
+
var _this$hot$getActiveEd;
|
484
|
+
const editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
480
485
|
if (editableElement) {
|
481
486
|
this.focusableElement.setFocusableElement(editableElement);
|
482
487
|
} else {
|
@@ -491,7 +496,8 @@ class CopyPaste extends _base.BasePlugin {
|
|
491
496
|
* @returns {boolean}
|
492
497
|
*/
|
493
498
|
isEditorOpened() {
|
494
|
-
|
499
|
+
var _this$hot$getActiveEd2;
|
500
|
+
return (_this$hot$getActiveEd2 = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd2 === void 0 ? void 0 : _this$hot$getActiveEd2.isOpened();
|
495
501
|
}
|
496
502
|
/**
|
497
503
|
* Prepares new values to populate them into datasource.
|
@@ -625,7 +631,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
625
631
|
* @private
|
626
632
|
*/
|
627
633
|
onPaste(event) {
|
628
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
634
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
629
635
|
return;
|
630
636
|
}
|
631
637
|
if (event && event.preventDefault) {
|
@@ -650,7 +656,7 @@ class CopyPaste extends _base.BasePlugin {
|
|
650
656
|
if (typeof pastedData === 'string') {
|
651
657
|
pastedData = (0, _SheetClip.parse)(pastedData);
|
652
658
|
}
|
653
|
-
if (pastedData && pastedData.length === 0) {
|
659
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
654
660
|
return;
|
655
661
|
}
|
656
662
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -253,13 +253,13 @@ export class CopyPaste extends BasePlugin {
|
|
253
253
|
} = this.hot.getSettings();
|
254
254
|
if (typeof settings === 'object') {
|
255
255
|
var _settings$pasteMode, _settings$uiContainer;
|
256
|
-
this.pasteMode = (_settings$pasteMode = settings.pasteMode)
|
256
|
+
this.pasteMode = (_settings$pasteMode = settings.pasteMode) !== null && _settings$pasteMode !== void 0 ? _settings$pasteMode : this.pasteMode;
|
257
257
|
this.rowsLimit = isNaN(settings.rowsLimit) ? this.rowsLimit : settings.rowsLimit;
|
258
258
|
this.columnsLimit = isNaN(settings.columnsLimit) ? this.columnsLimit : settings.columnsLimit;
|
259
259
|
_classPrivateFieldSet(this, _enableCopyColumnHeaders, !!settings.copyColumnHeaders);
|
260
260
|
_classPrivateFieldSet(this, _enableCopyColumnGroupHeaders, !!settings.copyColumnGroupHeaders);
|
261
261
|
_classPrivateFieldSet(this, _enableCopyColumnHeadersOnly, !!settings.copyColumnHeadersOnly);
|
262
|
-
this.uiContainer = (_settings$uiContainer = settings.uiContainer)
|
262
|
+
this.uiContainer = (_settings$uiContainer = settings.uiContainer) !== null && _settings$uiContainer !== void 0 ? _settings$uiContainer : this.uiContainer;
|
263
263
|
}
|
264
264
|
this.addHook('afterContextMenuDefaultOptions', options => this.onAfterContextMenuDefaultOptions(options));
|
265
265
|
this.addHook('afterOnCellMouseUp', () => this.onAfterOnCellMouseUp());
|
@@ -425,6 +425,10 @@ export class CopyPaste extends BasePlugin {
|
|
425
425
|
if (!selectionRange) {
|
426
426
|
return;
|
427
427
|
}
|
428
|
+
if (selectionRange.isSingleHeader()) {
|
429
|
+
this.copyableRanges = [];
|
430
|
+
return;
|
431
|
+
}
|
428
432
|
_classPrivateFieldGet(this, _copyableRangesFactory).setSelectedRange(selectionRange);
|
429
433
|
const groupedRanges = new Map([['headers', null], ['cells', null]]);
|
430
434
|
if (_classPrivateFieldGet(this, _copyMode) === 'column-headers-only') {
|
@@ -470,7 +474,8 @@ export class CopyPaste extends BasePlugin {
|
|
470
474
|
* @private
|
471
475
|
*/
|
472
476
|
getOrCreateFocusableElement() {
|
473
|
-
|
477
|
+
var _this$hot$getActiveEd;
|
478
|
+
const editableElement = (_this$hot$getActiveEd = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd === void 0 ? void 0 : _this$hot$getActiveEd.TEXTAREA;
|
474
479
|
if (editableElement) {
|
475
480
|
this.focusableElement.setFocusableElement(editableElement);
|
476
481
|
} else {
|
@@ -485,7 +490,8 @@ export class CopyPaste extends BasePlugin {
|
|
485
490
|
* @returns {boolean}
|
486
491
|
*/
|
487
492
|
isEditorOpened() {
|
488
|
-
|
493
|
+
var _this$hot$getActiveEd2;
|
494
|
+
return (_this$hot$getActiveEd2 = this.hot.getActiveEditor()) === null || _this$hot$getActiveEd2 === void 0 ? void 0 : _this$hot$getActiveEd2.isOpened();
|
489
495
|
}
|
490
496
|
/**
|
491
497
|
* Prepares new values to populate them into datasource.
|
@@ -619,7 +625,7 @@ export class CopyPaste extends BasePlugin {
|
|
619
625
|
* @private
|
620
626
|
*/
|
621
627
|
onPaste(event) {
|
622
|
-
if (!this.hot.isListening() || this.isEditorOpened()) {
|
628
|
+
if (!this.hot.isListening() || this.isEditorOpened() || !this.hot.getSelected()) {
|
623
629
|
return;
|
624
630
|
}
|
625
631
|
if (event && event.preventDefault) {
|
@@ -644,7 +650,7 @@ export class CopyPaste extends BasePlugin {
|
|
644
650
|
if (typeof pastedData === 'string') {
|
645
651
|
pastedData = parse(pastedData);
|
646
652
|
}
|
647
|
-
if (pastedData && pastedData.length === 0) {
|
653
|
+
if (pastedData === void 0 || pastedData && pastedData.length === 0) {
|
648
654
|
return;
|
649
655
|
}
|
650
656
|
if (this.hot.runHooks('beforePaste', pastedData, this.copyableRanges) === false) {
|
@@ -13,6 +13,9 @@ var _utils = require("./utils");
|
|
13
13
|
var _selection = require("../../selection");
|
14
14
|
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); }
|
15
15
|
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; }
|
16
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
18
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
16
19
|
const PLUGIN_KEY = 'customBorders';
|
17
20
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
18
21
|
const PLUGIN_PRIORITY = 90;
|
@@ -74,21 +77,22 @@ const PLUGIN_PRIORITY = 90;
|
|
74
77
|
*/
|
75
78
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
76
79
|
class CustomBorders extends _base.BasePlugin {
|
80
|
+
constructor() {
|
81
|
+
super(...arguments);
|
82
|
+
/**
|
83
|
+
* Saved borders.
|
84
|
+
*
|
85
|
+
* @private
|
86
|
+
* @type {Array}
|
87
|
+
*/
|
88
|
+
_defineProperty(this, "savedBorders", []);
|
89
|
+
}
|
77
90
|
static get PLUGIN_KEY() {
|
78
91
|
return PLUGIN_KEY;
|
79
92
|
}
|
80
93
|
static get PLUGIN_PRIORITY() {
|
81
94
|
return PLUGIN_PRIORITY;
|
82
95
|
}
|
83
|
-
|
84
|
-
/**
|
85
|
-
* Saved borders.
|
86
|
-
*
|
87
|
-
* @private
|
88
|
-
* @type {Array}
|
89
|
-
*/
|
90
|
-
savedBorders = [];
|
91
|
-
|
92
96
|
/**
|
93
97
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
94
98
|
* hook and if it returns `true` then the {@link CustomBorders#enablePlugin} method is called.
|
@@ -163,14 +167,11 @@ class CustomBorders extends _base.BasePlugin {
|
|
163
167
|
const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
|
164
168
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
165
169
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
});
|
172
|
-
}
|
173
|
-
}
|
170
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
171
|
+
(0, _array.arrayEach)(borderKeys, borderKey => {
|
172
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
|
173
|
+
});
|
174
|
+
});
|
174
175
|
});
|
175
176
|
|
176
177
|
/*
|
@@ -210,16 +211,13 @@ class CustomBorders extends _base.BasePlugin {
|
|
210
211
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
211
212
|
const selectedBorders = [];
|
212
213
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
});
|
221
|
-
}
|
222
|
-
}
|
214
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
215
|
+
(0, _array.arrayEach)(this.savedBorders, border => {
|
216
|
+
if (border.row === row && border.col === col) {
|
217
|
+
selectedBorders.push((0, _utils.denormalizeBorder)(border));
|
218
|
+
}
|
219
|
+
});
|
220
|
+
});
|
223
221
|
});
|
224
222
|
return selectedBorders;
|
225
223
|
}
|
@@ -610,7 +608,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
610
608
|
let check = false;
|
611
609
|
(0, _array.arrayEach)(this.hot.selection.highlight.customSelections, customSelection => {
|
612
610
|
if (border.id === customSelection.settings.id) {
|
613
|
-
|
611
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
612
|
+
(0, _array.arrayEach)(borders, borderObject => {
|
614
613
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
615
614
|
});
|
616
615
|
|
@@ -644,7 +643,8 @@ class CustomBorders extends _base.BasePlugin {
|
|
644
643
|
customSelection.visualCellRange = cellRange;
|
645
644
|
customSelection.commit();
|
646
645
|
if (place) {
|
647
|
-
|
646
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
647
|
+
(0, _array.arrayEach)(borders, borderObject => {
|
648
648
|
borderObject.changeBorderStyle(place, border);
|
649
649
|
});
|
650
650
|
}
|
@@ -712,6 +712,13 @@ class CustomBorders extends _base.BasePlugin {
|
|
712
712
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
713
713
|
},
|
714
714
|
disabled() {
|
715
|
+
const range = this.getSelectedRangeLast();
|
716
|
+
if (!range) {
|
717
|
+
return true;
|
718
|
+
}
|
719
|
+
if (range.isSingleHeader()) {
|
720
|
+
return true;
|
721
|
+
}
|
715
722
|
return this.selection.isSelectedByCorner();
|
716
723
|
},
|
717
724
|
submenu: {
|
@@ -1,7 +1,10 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
2
|
import "core-js/modules/es.error.cause.js";
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
4
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
5
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
3
6
|
import { BasePlugin } from "../base/index.mjs";
|
4
|
-
import { hasOwnProperty,
|
7
|
+
import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
|
5
8
|
import { rangeEach } from "../../helpers/number.mjs";
|
6
9
|
import { arrayEach, arrayReduce, arrayMap } from "../../helpers/array.mjs";
|
7
10
|
import * as C from "../../i18n/constants.mjs";
|
@@ -67,21 +70,22 @@ export const PLUGIN_PRIORITY = 90;
|
|
67
70
|
* ```
|
68
71
|
*/
|
69
72
|
export class CustomBorders extends BasePlugin {
|
73
|
+
constructor() {
|
74
|
+
super(...arguments);
|
75
|
+
/**
|
76
|
+
* Saved borders.
|
77
|
+
*
|
78
|
+
* @private
|
79
|
+
* @type {Array}
|
80
|
+
*/
|
81
|
+
_defineProperty(this, "savedBorders", []);
|
82
|
+
}
|
70
83
|
static get PLUGIN_KEY() {
|
71
84
|
return PLUGIN_KEY;
|
72
85
|
}
|
73
86
|
static get PLUGIN_PRIORITY() {
|
74
87
|
return PLUGIN_PRIORITY;
|
75
88
|
}
|
76
|
-
|
77
|
-
/**
|
78
|
-
* Saved borders.
|
79
|
-
*
|
80
|
-
* @private
|
81
|
-
* @type {Array}
|
82
|
-
*/
|
83
|
-
savedBorders = [];
|
84
|
-
|
85
89
|
/**
|
86
90
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
87
91
|
* hook and if it returns `true` then the {@link CustomBorders#enablePlugin} method is called.
|
@@ -156,14 +160,11 @@ export class CustomBorders extends BasePlugin {
|
|
156
160
|
const selectionType = detectSelectionType(selectionRanges);
|
157
161
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
158
162
|
arrayEach(selectionRanges, selection => {
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
});
|
165
|
-
}
|
166
|
-
}
|
163
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
164
|
+
arrayEach(borderKeys, borderKey => {
|
165
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
|
166
|
+
});
|
167
|
+
});
|
167
168
|
});
|
168
169
|
|
169
170
|
/*
|
@@ -203,16 +204,13 @@ export class CustomBorders extends BasePlugin {
|
|
203
204
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
204
205
|
const selectedBorders = [];
|
205
206
|
arrayEach(selectionRanges, selection => {
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
});
|
214
|
-
}
|
215
|
-
}
|
207
|
+
selectionSchemaNormalizer(selection).forAll((row, col) => {
|
208
|
+
arrayEach(this.savedBorders, border => {
|
209
|
+
if (border.row === row && border.col === col) {
|
210
|
+
selectedBorders.push(denormalizeBorder(border));
|
211
|
+
}
|
212
|
+
});
|
213
|
+
});
|
216
214
|
});
|
217
215
|
return selectedBorders;
|
218
216
|
}
|
@@ -603,7 +601,8 @@ export class CustomBorders extends BasePlugin {
|
|
603
601
|
let check = false;
|
604
602
|
arrayEach(this.hot.selection.highlight.customSelections, customSelection => {
|
605
603
|
if (border.id === customSelection.settings.id) {
|
606
|
-
|
604
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
605
|
+
arrayEach(borders, borderObject => {
|
607
606
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
608
607
|
});
|
609
608
|
|
@@ -637,7 +636,8 @@ export class CustomBorders extends BasePlugin {
|
|
637
636
|
customSelection.visualCellRange = cellRange;
|
638
637
|
customSelection.commit();
|
639
638
|
if (place) {
|
640
|
-
|
639
|
+
const borders = this.hot.view._wt.selectionManager.getBorderInstances(customSelection);
|
640
|
+
arrayEach(borders, borderObject => {
|
641
641
|
borderObject.changeBorderStyle(place, border);
|
642
642
|
});
|
643
643
|
}
|
@@ -705,6 +705,13 @@ export class CustomBorders extends BasePlugin {
|
|
705
705
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
706
706
|
},
|
707
707
|
disabled() {
|
708
|
+
const range = this.getSelectedRangeLast();
|
709
|
+
if (!range) {
|
710
|
+
return true;
|
711
|
+
}
|
712
|
+
if (range.isSingleHeader()) {
|
713
|
+
return true;
|
714
|
+
}
|
708
715
|
return this.selection.isSelectedByCorner();
|
709
716
|
},
|
710
717
|
submenu: {
|
@@ -74,11 +74,11 @@ function createDefaultHtBorder() {
|
|
74
74
|
function normalizeBorder(border) {
|
75
75
|
if ((0, _mixed.isDefined)(border.start) || (0, _mixed.isDefined)(border.left)) {
|
76
76
|
var _border$start;
|
77
|
-
border.start = (_border$start = border.start)
|
77
|
+
border.start = (_border$start = border.start) !== null && _border$start !== void 0 ? _border$start : border.left;
|
78
78
|
}
|
79
79
|
if ((0, _mixed.isDefined)(border.end) || (0, _mixed.isDefined)(border.right)) {
|
80
80
|
var _border$end;
|
81
|
-
border.end = (_border$end = border.end)
|
81
|
+
border.end = (_border$end = border.end) !== null && _border$end !== void 0 ? _border$end : border.right;
|
82
82
|
}
|
83
83
|
delete border.left;
|
84
84
|
delete border.right;
|
@@ -251,5 +251,5 @@ const physicalToInlinePropNames = new Map([['left', 'start'], ['right', 'end']])
|
|
251
251
|
*/
|
252
252
|
function toInlinePropName(propName) {
|
253
253
|
var _physicalToInlineProp;
|
254
|
-
return (_physicalToInlineProp = physicalToInlinePropNames.get(propName))
|
254
|
+
return (_physicalToInlineProp = physicalToInlinePropNames.get(propName)) !== null && _physicalToInlineProp !== void 0 ? _physicalToInlineProp : propName;
|
255
255
|
}
|
@@ -58,11 +58,11 @@ export function createDefaultHtBorder() {
|
|
58
58
|
export function normalizeBorder(border) {
|
59
59
|
if (isDefined(border.start) || isDefined(border.left)) {
|
60
60
|
var _border$start;
|
61
|
-
border.start = (_border$start = border.start)
|
61
|
+
border.start = (_border$start = border.start) !== null && _border$start !== void 0 ? _border$start : border.left;
|
62
62
|
}
|
63
63
|
if (isDefined(border.end) || isDefined(border.right)) {
|
64
64
|
var _border$end;
|
65
|
-
border.end = (_border$end = border.end)
|
65
|
+
border.end = (_border$end = border.end) !== null && _border$end !== void 0 ? _border$end : border.right;
|
66
66
|
}
|
67
67
|
delete border.left;
|
68
68
|
delete border.right;
|
@@ -235,5 +235,5 @@ const physicalToInlinePropNames = new Map([['left', 'start'], ['right', 'end']])
|
|
235
235
|
*/
|
236
236
|
export function toInlinePropName(propName) {
|
237
237
|
var _physicalToInlineProp;
|
238
|
-
return (_physicalToInlineProp = physicalToInlinePropNames.get(propName))
|
238
|
+
return (_physicalToInlineProp = physicalToInlinePropNames.get(propName)) !== null && _physicalToInlineProp !== void 0 ? _physicalToInlineProp : propName;
|
239
239
|
}
|
@@ -18,7 +18,7 @@ export class DropdownMenu extends BasePlugin {
|
|
18
18
|
|
19
19
|
constructor(hotInstance: Core);
|
20
20
|
isEnabled(): boolean;
|
21
|
-
open(
|
21
|
+
open(position: { left: number, top: number } | Event, offset?: { above?: number, below?: number, left?: number, right?: number }): void;
|
22
22
|
close(): void;
|
23
23
|
executeCommand(commandName: string, ...params: any): void;
|
24
24
|
}
|
@@ -3,7 +3,9 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _base = require("../base");
|
5
5
|
var _array = require("../../helpers/array");
|
6
|
+
var _object = require("../../helpers/object");
|
6
7
|
var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
|
8
|
+
var _utils = require("../contextMenu/utils");
|
7
9
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
8
10
|
var _element = require("../../helpers/dom/element");
|
9
11
|
var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
|
@@ -21,6 +23,7 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
|
|
21
23
|
const PLUGIN_PRIORITY = 230;
|
22
24
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
23
25
|
const BUTTON_CLASS_NAME = 'changeType';
|
26
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
24
27
|
|
25
28
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
26
29
|
/**
|
@@ -157,6 +160,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
157
160
|
if (typeof settings.callback === 'function') {
|
158
161
|
this.commandExecutor.setCommonCallback(settings.callback);
|
159
162
|
}
|
163
|
+
this.registerShortcuts();
|
160
164
|
super.enablePlugin();
|
161
165
|
this.callOnPluginsReady(() => {
|
162
166
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -207,9 +211,68 @@ class DropdownMenu extends _base.BasePlugin {
|
|
207
211
|
if (this.menu) {
|
208
212
|
this.menu.destroy();
|
209
213
|
}
|
214
|
+
this.unregisterShortcuts();
|
210
215
|
super.disablePlugin();
|
211
216
|
}
|
212
217
|
|
218
|
+
/**
|
219
|
+
* Register shortcuts responsible for toggling dropdown menu.
|
220
|
+
*
|
221
|
+
* @private
|
222
|
+
*/
|
223
|
+
registerShortcuts() {
|
224
|
+
const context = this.hot.getShortcutManager().getContext('grid');
|
225
|
+
const callback = () => {
|
226
|
+
const {
|
227
|
+
highlight
|
228
|
+
} = this.hot.getSelectedRangeLast();
|
229
|
+
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
230
|
+
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
231
|
+
const {
|
232
|
+
from
|
233
|
+
} = this.hot.getSelectedRangeLast();
|
234
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
235
|
+
const target = this.hot.getCell(-1, from.col, true);
|
236
|
+
const rect = target.getBoundingClientRect();
|
237
|
+
this.open({
|
238
|
+
left: rect.left + offset.left,
|
239
|
+
top: rect.top + target.offsetHeight + offset.top
|
240
|
+
}, {
|
241
|
+
left: rect.width
|
242
|
+
});
|
243
|
+
this.hot._registerTimeout(() => {
|
244
|
+
this.menu.selectFirstCell();
|
245
|
+
});
|
246
|
+
}
|
247
|
+
};
|
248
|
+
context.addShortcuts([{
|
249
|
+
keys: [['Shift', 'Alt', 'ArrowDown'], ['Shift', 'Enter']],
|
250
|
+
callback,
|
251
|
+
runOnlyIf: () => {
|
252
|
+
var _this$hot$getSelected;
|
253
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
254
|
+
},
|
255
|
+
group: SHORTCUTS_GROUP
|
256
|
+
}, {
|
257
|
+
keys: [['Shift', 'Alt', 'ArrowDown']],
|
258
|
+
callback,
|
259
|
+
runOnlyIf: () => {
|
260
|
+
var _this$hot$getSelected2;
|
261
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
262
|
+
},
|
263
|
+
group: SHORTCUTS_GROUP
|
264
|
+
}]);
|
265
|
+
}
|
266
|
+
|
267
|
+
/**
|
268
|
+
* Unregister shortcuts responsible for toggling dropdown menu.
|
269
|
+
*
|
270
|
+
* @private
|
271
|
+
*/
|
272
|
+
unregisterShortcuts() {
|
273
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
274
|
+
}
|
275
|
+
|
213
276
|
/**
|
214
277
|
* Registers the DOM listeners.
|
215
278
|
*
|
@@ -222,23 +285,30 @@ class DropdownMenu extends _base.BasePlugin {
|
|
222
285
|
/**
|
223
286
|
* Opens menu and re-position it based on the passed coordinates.
|
224
287
|
*
|
225
|
-
* @param {
|
226
|
-
*
|
227
|
-
*
|
228
|
-
*
|
229
|
-
*
|
288
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
289
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
290
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
291
|
+
* coordinates.
|
292
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
293
|
+
* the offset to the menu position.
|
230
294
|
* @fires Hooks#beforeDropdownMenuShow
|
231
295
|
* @fires Hooks#afterDropdownMenuShow
|
232
296
|
*/
|
233
|
-
|
234
297
|
open(position) {
|
235
|
-
|
298
|
+
var _this$menu;
|
299
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
300
|
+
above: 0,
|
301
|
+
below: 0,
|
302
|
+
left: 0,
|
303
|
+
right: 0
|
304
|
+
};
|
305
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
236
306
|
return;
|
237
307
|
}
|
238
308
|
this.menu.open();
|
239
|
-
|
240
|
-
this.menu.setOffset(
|
241
|
-
}
|
309
|
+
(0, _object.objectEach)(offset, (value, key) => {
|
310
|
+
this.menu.setOffset(key, value);
|
311
|
+
});
|
242
312
|
this.menu.setPosition(position);
|
243
313
|
}
|
244
314
|
|
@@ -246,10 +316,8 @@ class DropdownMenu extends _base.BasePlugin {
|
|
246
316
|
* Closes dropdown menu.
|
247
317
|
*/
|
248
318
|
close() {
|
249
|
-
|
250
|
-
|
251
|
-
}
|
252
|
-
this.menu.close();
|
319
|
+
var _this$menu2;
|
320
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 ? void 0 : _this$menu2.close();
|
253
321
|
}
|
254
322
|
|
255
323
|
/**
|
@@ -314,26 +382,14 @@ class DropdownMenu extends _base.BasePlugin {
|
|
314
382
|
*/
|
315
383
|
onTableClick(event) {
|
316
384
|
event.stopPropagation();
|
317
|
-
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)
|
318
|
-
|
319
|
-
let offsetLeft = 0;
|
320
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
321
|
-
const {
|
322
|
-
frameElement
|
323
|
-
} = this.hot.rootWindow;
|
324
|
-
const {
|
325
|
-
top,
|
326
|
-
left
|
327
|
-
} = frameElement.getBoundingClientRect();
|
328
|
-
offsetTop = top;
|
329
|
-
offsetLeft = left;
|
330
|
-
}
|
385
|
+
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
386
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
331
387
|
const rect = event.target.getBoundingClientRect();
|
332
388
|
this.open({
|
333
|
-
left: rect.left +
|
334
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
335
|
-
|
336
|
-
|
389
|
+
left: rect.left + offset.left,
|
390
|
+
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
391
|
+
}, {
|
392
|
+
left: rect.width
|
337
393
|
});
|
338
394
|
}
|
339
395
|
}
|
@@ -372,6 +428,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
372
428
|
const button = this.hot.rootDocument.createElement('button');
|
373
429
|
button.className = BUTTON_CLASS_NAME;
|
374
430
|
button.type = 'button';
|
431
|
+
button.tabIndex = -1;
|
375
432
|
|
376
433
|
// prevent page reload on button click
|
377
434
|
button.onclick = function () {
|