handsontable 0.0.0-next-010265d-20231005 → 0.0.0-next-9379dd1-20231020
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
2
4
|
/**
|
|
3
5
|
* Helper class for checking if element will fit at the desired side of cursor.
|
|
4
6
|
*
|
|
@@ -7,8 +9,8 @@ import { getWindowScrollLeft, getWindowScrollTop } from "../../helpers/dom/eleme
|
|
|
7
9
|
*/
|
|
8
10
|
class Cursor {
|
|
9
11
|
constructor(object, rootWindow) {
|
|
10
|
-
const windowScrollTop =
|
|
11
|
-
const windowScrollLeft =
|
|
12
|
+
const windowScrollTop = rootWindow.scrollY;
|
|
13
|
+
const windowScrollLeft = rootWindow.scrollX;
|
|
12
14
|
let top;
|
|
13
15
|
let topRelative;
|
|
14
16
|
let left;
|
|
@@ -102,4 +104,4 @@ class Cursor {
|
|
|
102
104
|
return this.leftRelative >= element.offsetWidth;
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
|
-
|
|
107
|
+
exports.Cursor = Cursor;
|
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
var _element = require("../../helpers/dom/element");
|
|
5
1
|
/**
|
|
6
2
|
* Helper class for checking if element will fit at the desired side of cursor.
|
|
7
3
|
*
|
|
8
4
|
* @private
|
|
9
5
|
* @class Cursor
|
|
10
6
|
*/
|
|
11
|
-
class Cursor {
|
|
7
|
+
export class Cursor {
|
|
12
8
|
constructor(object, rootWindow) {
|
|
13
|
-
const windowScrollTop =
|
|
14
|
-
const windowScrollLeft =
|
|
9
|
+
const windowScrollTop = rootWindow.scrollY;
|
|
10
|
+
const windowScrollLeft = rootWindow.scrollX;
|
|
15
11
|
let top;
|
|
16
12
|
let topRelative;
|
|
17
13
|
let left;
|
|
@@ -104,6 +100,4 @@ class Cursor {
|
|
|
104
100
|
fitsOnLeft(element) {
|
|
105
101
|
return this.leftRelative >= element.offsetWidth;
|
|
106
102
|
}
|
|
107
|
-
}
|
|
108
|
-
var _default = Cursor;
|
|
109
|
-
exports.default = _default;
|
|
103
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
var _menu = require("./menu");
|
|
5
|
+
Object.keys(_menu).forEach(function (key) {
|
|
6
|
+
if (key === "default" || key === "__esModule") return;
|
|
7
|
+
if (key in exports && exports[key] === _menu[key]) return;
|
|
8
|
+
exports[key] = _menu[key];
|
|
9
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./menu.mjs";
|
|
@@ -2,19 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
require("core-js/modules/es.array.push.js");
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var _positioner = require("./positioner");
|
|
6
|
+
var _navigator = require("./navigator");
|
|
7
|
+
var _predefinedItems = require("./../predefinedItems");
|
|
7
8
|
var _utils = require("./utils");
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
9
|
+
var _eventManager = _interopRequireDefault(require("../../../eventManager"));
|
|
10
|
+
var _array = require("../../../helpers/array");
|
|
11
|
+
var _browser = require("../../../helpers/browser");
|
|
12
|
+
var _element = require("../../../helpers/dom/element");
|
|
13
|
+
var _event = require("../../../helpers/dom/event");
|
|
14
|
+
var _function = require("../../../helpers/function");
|
|
15
|
+
var _mixed = require("../../../helpers/mixed");
|
|
16
|
+
var _object = require("../../../helpers/object");
|
|
17
|
+
var _localHooks = _interopRequireDefault(require("../../../mixins/localHooks"));
|
|
18
|
+
var _a11y = require("../../../helpers/a11y");
|
|
18
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
20
|
const MIN_WIDTH = 215;
|
|
20
21
|
const SHORTCUTS_CONTEXT = 'menu';
|
|
@@ -53,18 +54,13 @@ class Menu {
|
|
|
53
54
|
};
|
|
54
55
|
this.eventManager = new _eventManager.default(this);
|
|
55
56
|
this.container = this.createContainer(this.options.name);
|
|
57
|
+
this.positioner = new _positioner.Positioner(this.options.keepInViewport);
|
|
58
|
+
this.navigator = new _navigator.Navigator();
|
|
56
59
|
this.hotMenu = null;
|
|
57
60
|
this.hotSubMenus = {};
|
|
58
61
|
this.parentMenu = this.options.parent || null;
|
|
59
62
|
this.menuItems = null;
|
|
60
63
|
this.origOutsideClickDeselects = null;
|
|
61
|
-
this.keyEvent = false;
|
|
62
|
-
this.offset = {
|
|
63
|
-
above: 0,
|
|
64
|
-
below: 0,
|
|
65
|
-
left: 0,
|
|
66
|
-
right: 0
|
|
67
|
-
};
|
|
68
64
|
this._afterScrollCallback = null;
|
|
69
65
|
this.registerEvents();
|
|
70
66
|
}
|
|
@@ -110,17 +106,6 @@ class Menu {
|
|
|
110
106
|
return Array.isArray(this.hotMenu.getSelectedLast());
|
|
111
107
|
}
|
|
112
108
|
|
|
113
|
-
/**
|
|
114
|
-
* Set offset menu position for specified area (`above`, `below`, `left` or `right`).
|
|
115
|
-
*
|
|
116
|
-
* @param {string} area Specified area name (`above`, `below`, `left` or `right`).
|
|
117
|
-
* @param {number} offset Offset value.
|
|
118
|
-
*/
|
|
119
|
-
setOffset(area) {
|
|
120
|
-
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
121
|
-
this.offset[area] = offset;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
109
|
/**
|
|
125
110
|
* Check if menu is using as sub-menu.
|
|
126
111
|
*
|
|
@@ -137,7 +122,6 @@ class Menu {
|
|
|
137
122
|
* @fires Hooks#afterContextMenuShow
|
|
138
123
|
*/
|
|
139
124
|
open() {
|
|
140
|
-
var _this = this;
|
|
141
125
|
this.runLocalHooks('beforeOpen');
|
|
142
126
|
this.container.removeAttribute('style');
|
|
143
127
|
this.container.style.display = 'block';
|
|
@@ -182,6 +166,7 @@ class Menu {
|
|
|
182
166
|
outsideClickDeselects: false,
|
|
183
167
|
disableVisualSelection: 'area',
|
|
184
168
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
|
|
169
|
+
ariaTags: false,
|
|
185
170
|
afterOnCellMouseOver: (event, coords) => {
|
|
186
171
|
if (this.isAllSubMenusClosed()) {
|
|
187
172
|
delayedOpenSubMenu(coords.row);
|
|
@@ -199,6 +184,12 @@ class Menu {
|
|
|
199
184
|
this.close(true);
|
|
200
185
|
}
|
|
201
186
|
},
|
|
187
|
+
afterSelection: (row, column, row2, column2, preventScrolling) => {
|
|
188
|
+
// do not scroll the viewport when mouse clicks on partially visible menu item
|
|
189
|
+
if (this.hotMenu.view.isMouseDown()) {
|
|
190
|
+
preventScrolling.value = true;
|
|
191
|
+
}
|
|
192
|
+
},
|
|
202
193
|
beforeOnCellMouseUp: event => {
|
|
203
194
|
if (this.hasSelectedItem()) {
|
|
204
195
|
shouldAutoCloseMenu = !this.isCommandPassive(this.getSelectedItem());
|
|
@@ -216,7 +207,7 @@ class Menu {
|
|
|
216
207
|
// event hides the tapped element, the click event grabs the element below. As a result, the filter
|
|
217
208
|
// by condition menu is closed and immediately open on tapping the "None" item.
|
|
218
209
|
if ((0, _browser.isMobileBrowser)() || (0, _browser.isIpadOS)()) {
|
|
219
|
-
|
|
210
|
+
this.hot._registerTimeout(() => this.close(true), 325);
|
|
220
211
|
} else {
|
|
221
212
|
this.close(true);
|
|
222
213
|
}
|
|
@@ -232,13 +223,11 @@ class Menu {
|
|
|
232
223
|
};
|
|
233
224
|
this.origOutsideClickDeselects = this.hot.getSettings().outsideClickDeselects;
|
|
234
225
|
this.hot.getSettings().outsideClickDeselects = false;
|
|
235
|
-
this.hotMenu = new
|
|
226
|
+
this.hotMenu = new this.hot.constructor(this.container, settings);
|
|
236
227
|
this.hotMenu.addHook('afterInit', () => this.onAfterInit());
|
|
237
|
-
this.hotMenu.addHook('afterSelection', function () {
|
|
238
|
-
return _this.onAfterSelection(...arguments);
|
|
239
|
-
});
|
|
240
228
|
this.hotMenu.init();
|
|
241
229
|
this.hotMenu.listen();
|
|
230
|
+
this.navigator.setMenu(this.hotMenu);
|
|
242
231
|
const shortcutManager = this.hotMenu.getShortcutManager();
|
|
243
232
|
const menuContext = shortcutManager.addContext(SHORTCUTS_GROUP);
|
|
244
233
|
const config = {
|
|
@@ -246,105 +235,84 @@ class Menu {
|
|
|
246
235
|
};
|
|
247
236
|
const menuContextConfig = {
|
|
248
237
|
...config,
|
|
249
|
-
runOnlyIf: event => (0, _element.isInput)(event.target)
|
|
238
|
+
runOnlyIf: event => !(0, _element.isInput)(event.target) || !this.container.contains(event.target)
|
|
250
239
|
};
|
|
251
240
|
|
|
252
241
|
// Default shortcuts for Handsontable should not be handled. Changing context will help with that.
|
|
253
242
|
shortcutManager.setActiveContextName('menu');
|
|
254
243
|
menuContext.addShortcuts([{
|
|
244
|
+
keys: [['Tab'], ['Shift', 'Tab'], ['Control/Meta', 'A']],
|
|
245
|
+
forwardToContext: this.hot.getShortcutManager().getContext('grid'),
|
|
246
|
+
callback: () => this.close(true)
|
|
247
|
+
}, {
|
|
255
248
|
keys: [['Escape']],
|
|
256
|
-
callback: () =>
|
|
257
|
-
this.keyEvent = true;
|
|
258
|
-
this.close();
|
|
259
|
-
this.keyEvent = false;
|
|
260
|
-
}
|
|
249
|
+
callback: () => this.close(true)
|
|
261
250
|
}, {
|
|
262
251
|
keys: [['ArrowDown']],
|
|
263
|
-
callback: () =>
|
|
264
|
-
const selection = this.hotMenu.getSelectedLast();
|
|
265
|
-
this.keyEvent = true;
|
|
266
|
-
if (selection) {
|
|
267
|
-
this.selectNextCell(selection[0], selection[1]);
|
|
268
|
-
} else {
|
|
269
|
-
this.selectFirstCell();
|
|
270
|
-
}
|
|
271
|
-
this.keyEvent = false;
|
|
272
|
-
}
|
|
252
|
+
callback: () => this.navigator.selectNext()
|
|
273
253
|
}, {
|
|
274
254
|
keys: [['ArrowUp']],
|
|
275
|
-
callback: () =>
|
|
276
|
-
const selection = this.hotMenu.getSelectedLast();
|
|
277
|
-
this.keyEvent = true;
|
|
278
|
-
if (selection) {
|
|
279
|
-
this.selectPrevCell(selection[0], selection[1]);
|
|
280
|
-
} else {
|
|
281
|
-
this.selectLastCell();
|
|
282
|
-
}
|
|
283
|
-
this.keyEvent = false;
|
|
284
|
-
}
|
|
255
|
+
callback: () => this.navigator.selectPrev()
|
|
285
256
|
}, {
|
|
286
257
|
keys: [['ArrowRight']],
|
|
287
258
|
callback: () => {
|
|
288
259
|
const selection = this.hotMenu.getSelectedLast();
|
|
289
|
-
this.keyEvent = true;
|
|
290
260
|
if (selection) {
|
|
291
|
-
const
|
|
292
|
-
if (
|
|
293
|
-
|
|
261
|
+
const subMenu = this.openSubMenu(selection[0]);
|
|
262
|
+
if (subMenu) {
|
|
263
|
+
subMenu.navigator.selectFirst();
|
|
294
264
|
}
|
|
295
265
|
}
|
|
296
|
-
this.keyEvent = false;
|
|
297
266
|
}
|
|
298
267
|
}, {
|
|
299
268
|
keys: [['ArrowLeft']],
|
|
300
269
|
callback: () => {
|
|
301
270
|
const selection = this.hotMenu.getSelectedLast();
|
|
302
|
-
this.keyEvent = true;
|
|
303
271
|
if (selection && this.isSubMenu()) {
|
|
304
272
|
this.close();
|
|
305
|
-
if (this.
|
|
273
|
+
if (this.isSubMenu()) {
|
|
306
274
|
this.parentMenu.hotMenu.listen();
|
|
307
275
|
}
|
|
308
276
|
}
|
|
309
|
-
this.keyEvent = false;
|
|
310
277
|
}
|
|
311
278
|
}, {
|
|
312
|
-
keys: [['
|
|
279
|
+
keys: [['Control/Meta', 'ArrowUp'], ['Home']],
|
|
280
|
+
callback: () => this.navigator.selectFirst()
|
|
281
|
+
}, {
|
|
282
|
+
keys: [['Control/Meta', 'ArrowDown'], ['End']],
|
|
283
|
+
callback: () => this.navigator.selectLast()
|
|
284
|
+
}, {
|
|
285
|
+
keys: [['Enter'], ['Space']],
|
|
313
286
|
callback: event => {
|
|
314
287
|
const selection = this.hotMenu.getSelectedLast();
|
|
315
|
-
this.
|
|
316
|
-
|
|
288
|
+
if (this.hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
|
289
|
+
this.openSubMenu(selection[0]).navigator.selectFirst();
|
|
290
|
+
} else {
|
|
317
291
|
this.executeCommand(event);
|
|
318
292
|
this.close(true);
|
|
319
293
|
}
|
|
320
|
-
this.keyEvent = false;
|
|
321
294
|
}
|
|
322
295
|
}, {
|
|
323
296
|
keys: [['PageUp']],
|
|
324
297
|
callback: () => {
|
|
325
298
|
const selection = this.hotMenu.getSelectedLast();
|
|
326
|
-
this.keyEvent = true;
|
|
327
299
|
if (selection) {
|
|
328
300
|
this.hotMenu.selection.transformStart(-this.hotMenu.countVisibleRows(), 0);
|
|
329
301
|
} else {
|
|
330
|
-
this.
|
|
302
|
+
this.navigator.selectFirst();
|
|
331
303
|
}
|
|
332
|
-
this.keyEvent = false;
|
|
333
304
|
}
|
|
334
305
|
}, {
|
|
335
306
|
keys: [['PageDown']],
|
|
336
307
|
callback: () => {
|
|
337
308
|
const selection = this.hotMenu.getSelectedLast();
|
|
338
|
-
this.keyEvent = true;
|
|
339
309
|
if (selection) {
|
|
340
310
|
this.hotMenu.selection.transformStart(this.hotMenu.countVisibleRows(), 0);
|
|
341
311
|
} else {
|
|
342
|
-
this.
|
|
312
|
+
this.navigator.selectLast();
|
|
343
313
|
}
|
|
344
|
-
this.keyEvent = false;
|
|
345
314
|
}
|
|
346
315
|
}], menuContextConfig);
|
|
347
|
-
this.blockMainTableCallbacks();
|
|
348
316
|
this.runLocalHooks('afterOpen');
|
|
349
317
|
}
|
|
350
318
|
|
|
@@ -358,17 +326,24 @@ class Menu {
|
|
|
358
326
|
if (!this.isOpened()) {
|
|
359
327
|
return;
|
|
360
328
|
}
|
|
361
|
-
if (closeParent && this.
|
|
329
|
+
if (closeParent && this.isSubMenu()) {
|
|
362
330
|
this.parentMenu.close();
|
|
363
331
|
} else {
|
|
332
|
+
this.navigator.clear();
|
|
364
333
|
this.closeAllSubMenus();
|
|
365
334
|
this.container.style.display = 'none';
|
|
366
|
-
this.releaseMainTableCallbacks();
|
|
367
335
|
this.hotMenu.destroy();
|
|
368
336
|
this.hotMenu = null;
|
|
369
337
|
this.hot.getSettings().outsideClickDeselects = this.origOutsideClickDeselects;
|
|
370
338
|
this.runLocalHooks('afterClose');
|
|
371
|
-
if (this.
|
|
339
|
+
if (this.isSubMenu()) {
|
|
340
|
+
if (this.hot.getSettings().ariaTags) {
|
|
341
|
+
const selection = this.parentMenu.hotMenu.getSelectedLast();
|
|
342
|
+
if (selection) {
|
|
343
|
+
const cell = this.parentMenu.hotMenu.getCell(selection[0], 0);
|
|
344
|
+
(0, _element.setAttribute)(cell, [(0, _a11y.A11Y_EXPANDED)(false)]);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
372
347
|
this.parentMenu.hotMenu.listen();
|
|
373
348
|
}
|
|
374
349
|
}
|
|
@@ -401,6 +376,11 @@ class Menu {
|
|
|
401
376
|
subMenu.open();
|
|
402
377
|
subMenu.setPosition(cell.getBoundingClientRect());
|
|
403
378
|
this.hotSubMenus[dataItem.key] = subMenu;
|
|
379
|
+
|
|
380
|
+
// Update the accessibility tags on the cell being the base for the submenu.
|
|
381
|
+
if (this.hot.getSettings().ariaTags) {
|
|
382
|
+
(0, _element.setAttribute)(cell, [(0, _a11y.A11Y_EXPANDED)(true)]);
|
|
383
|
+
}
|
|
404
384
|
return subMenu;
|
|
405
385
|
}
|
|
406
386
|
|
|
@@ -415,6 +395,12 @@ class Menu {
|
|
|
415
395
|
if (menus) {
|
|
416
396
|
menus.destroy();
|
|
417
397
|
delete this.hotSubMenus[dataItem.key];
|
|
398
|
+
const cell = this.hotMenu.getCell(row, 0);
|
|
399
|
+
|
|
400
|
+
// Update the accessibility tags on the cell being the base for the submenu.
|
|
401
|
+
if (this.hot.getSettings().ariaTags) {
|
|
402
|
+
(0, _element.setAttribute)(cell, [(0, _a11y.A11Y_EXPANDED)(false)]);
|
|
403
|
+
}
|
|
418
404
|
}
|
|
419
405
|
}
|
|
420
406
|
|
|
@@ -493,196 +479,30 @@ class Menu {
|
|
|
493
479
|
* @returns {boolean}
|
|
494
480
|
*/
|
|
495
481
|
isCommandPassive(commandDescriptor) {
|
|
496
|
-
|
|
497
|
-
isCommand,
|
|
498
|
-
name: commandName,
|
|
499
|
-
disabled,
|
|
500
|
-
submenu
|
|
501
|
-
} = commandDescriptor;
|
|
502
|
-
const isItemDisabled = disabled === true || typeof disabled === 'function' && disabled.call(this.hot) === true;
|
|
503
|
-
return isCommand === false || commandName === _predefinedItems.SEPARATOR || isItemDisabled === true || submenu;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/**
|
|
507
|
-
* Set menu position based on dom event or based on literal object.
|
|
508
|
-
*
|
|
509
|
-
* @param {Event|object} coords Event or literal Object with coordinates.
|
|
510
|
-
*/
|
|
511
|
-
setPosition(coords) {
|
|
512
|
-
const cursor = new _cursor.default(coords, this.container.ownerDocument.defaultView);
|
|
513
|
-
if (this.options.keepInViewport) {
|
|
514
|
-
if (cursor.fitsBelow(this.container)) {
|
|
515
|
-
this.setPositionBelowCursor(cursor);
|
|
516
|
-
} else if (cursor.fitsAbove(this.container)) {
|
|
517
|
-
this.setPositionAboveCursor(cursor);
|
|
518
|
-
} else {
|
|
519
|
-
this.setPositionBelowCursor(cursor);
|
|
520
|
-
}
|
|
521
|
-
if (this.hot.isLtr()) {
|
|
522
|
-
this.setHorizontalPositionForLtr(cursor);
|
|
523
|
-
} else {
|
|
524
|
-
this.setHorizontalPositionForRtl(cursor);
|
|
525
|
-
}
|
|
526
|
-
} else {
|
|
527
|
-
this.setPositionBelowCursor(cursor);
|
|
528
|
-
this.setPositionOnRightOfCursor(cursor);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
/**
|
|
533
|
-
* Set menu horizontal position for RTL mode.
|
|
534
|
-
*
|
|
535
|
-
* @param {Cursor} cursor `Cursor` object.
|
|
536
|
-
*/
|
|
537
|
-
setHorizontalPositionForRtl(cursor) {
|
|
538
|
-
if (cursor.fitsOnLeft(this.container)) {
|
|
539
|
-
this.setPositionOnLeftOfCursor(cursor);
|
|
540
|
-
} else {
|
|
541
|
-
this.setPositionOnRightOfCursor(cursor);
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
/**
|
|
546
|
-
* Set menu horizontal position for LTR mode.
|
|
547
|
-
*
|
|
548
|
-
* @param {Cursor} cursor `Cursor` object.
|
|
549
|
-
*/
|
|
550
|
-
setHorizontalPositionForLtr(cursor) {
|
|
551
|
-
if (cursor.fitsOnRight(this.container)) {
|
|
552
|
-
this.setPositionOnRightOfCursor(cursor);
|
|
553
|
-
} else {
|
|
554
|
-
this.setPositionOnLeftOfCursor(cursor);
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
/**
|
|
559
|
-
* Set menu position above cursor object.
|
|
560
|
-
*
|
|
561
|
-
* @param {Cursor} cursor `Cursor` object.
|
|
562
|
-
*/
|
|
563
|
-
setPositionAboveCursor(cursor) {
|
|
564
|
-
let top = this.offset.above + cursor.top - this.container.offsetHeight;
|
|
565
|
-
if (this.isSubMenu()) {
|
|
566
|
-
top = cursor.top + cursor.cellHeight - this.container.offsetHeight + 3;
|
|
567
|
-
}
|
|
568
|
-
this.container.style.top = `${top}px`;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
/**
|
|
572
|
-
* Set menu position below cursor object.
|
|
573
|
-
*
|
|
574
|
-
* @param {Cursor} cursor `Cursor` object.
|
|
575
|
-
*/
|
|
576
|
-
setPositionBelowCursor(cursor) {
|
|
577
|
-
let top = this.offset.below + cursor.top + 1;
|
|
578
|
-
if (this.isSubMenu()) {
|
|
579
|
-
top = cursor.top - 1;
|
|
580
|
-
}
|
|
581
|
-
this.container.style.top = `${top}px`;
|
|
482
|
+
return commandDescriptor.isCommand === false || (0, _utils.isItemSeparator)(commandDescriptor) || (0, _utils.isItemDisabled)(commandDescriptor, this.hot) || (0, _utils.isItemSubMenu)(commandDescriptor);
|
|
582
483
|
}
|
|
583
484
|
|
|
584
485
|
/**
|
|
585
|
-
* Set menu position
|
|
486
|
+
* Set offset menu position for specified area (`above`, `below`, `left` or `right`).
|
|
586
487
|
*
|
|
587
|
-
* @param {
|
|
488
|
+
* @param {string} area Specified area name (`above`, `below`, `left` or `right`).
|
|
489
|
+
* @param {number} offset Offset value.
|
|
588
490
|
*/
|
|
589
|
-
|
|
590
|
-
let
|
|
591
|
-
|
|
592
|
-
const {
|
|
593
|
-
right: parentMenuRight
|
|
594
|
-
} = this.parentMenu.container.getBoundingClientRect();
|
|
595
|
-
|
|
596
|
-
// move the sub menu by the width of the parent's border (usually by 1-2 pixels)
|
|
597
|
-
left += cursor.cellWidth + parentMenuRight - (cursor.left + cursor.cellWidth);
|
|
598
|
-
} else {
|
|
599
|
-
left += this.offset.right;
|
|
600
|
-
}
|
|
601
|
-
this.container.style.left = `${left}px`;
|
|
491
|
+
setOffset(area) {
|
|
492
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
493
|
+
this.positioner.setOffset(area, offset);
|
|
602
494
|
}
|
|
603
495
|
|
|
604
496
|
/**
|
|
605
|
-
* Set menu position on
|
|
497
|
+
* Set menu position based on dom event or based on literal object.
|
|
606
498
|
*
|
|
607
|
-
* @param {
|
|
499
|
+
* @param {Event|object} coords Event or literal Object with coordinates.
|
|
608
500
|
*/
|
|
609
|
-
|
|
610
|
-
let left = this.offset.left + cursor.left - this.container.offsetWidth;
|
|
501
|
+
setPosition(coords) {
|
|
611
502
|
if (this.isSubMenu()) {
|
|
612
|
-
|
|
613
|
-
left: parentMenuLeft
|
|
614
|
-
} = this.parentMenu.container.getBoundingClientRect();
|
|
615
|
-
|
|
616
|
-
// move the sub menu by the width of the parent's border (usually by 1-2 pixels)
|
|
617
|
-
left -= cursor.left - parentMenuLeft;
|
|
618
|
-
}
|
|
619
|
-
this.container.style.left = `${left}px`;
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
/**
|
|
623
|
-
* Select first cell in opened menu.
|
|
624
|
-
*/
|
|
625
|
-
selectFirstCell() {
|
|
626
|
-
const cell = this.hotMenu.getCell(0, 0);
|
|
627
|
-
if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) {
|
|
628
|
-
this.selectNextCell(0, 0);
|
|
629
|
-
} else {
|
|
630
|
-
this.hotMenu.selectCell(0, 0);
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
|
-
|
|
634
|
-
/**
|
|
635
|
-
* Select last cell in opened menu.
|
|
636
|
-
*/
|
|
637
|
-
selectLastCell() {
|
|
638
|
-
const lastRow = this.hotMenu.countRows() - 1;
|
|
639
|
-
const cell = this.hotMenu.getCell(lastRow, 0);
|
|
640
|
-
if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) {
|
|
641
|
-
this.selectPrevCell(lastRow, 0);
|
|
642
|
-
} else {
|
|
643
|
-
// disable default "scroll-to-cell" option and instead of that...
|
|
644
|
-
this.hotMenu.selectCell(lastRow, 0, undefined, undefined, false);
|
|
645
|
-
// ...scroll to the cell with "snap to the bottom" option
|
|
646
|
-
this.hotMenu.scrollViewportTo(lastRow, 0, true, false);
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
/**
|
|
651
|
-
* Select next cell in opened menu.
|
|
652
|
-
*
|
|
653
|
-
* @param {number} row Row index.
|
|
654
|
-
* @param {number} col Column index.
|
|
655
|
-
*/
|
|
656
|
-
selectNextCell(row, col) {
|
|
657
|
-
const nextRow = row + 1;
|
|
658
|
-
const cell = nextRow < this.hotMenu.countRows() ? this.hotMenu.getCell(nextRow, col) : null;
|
|
659
|
-
if (!cell) {
|
|
660
|
-
return;
|
|
661
|
-
}
|
|
662
|
-
if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) {
|
|
663
|
-
this.selectNextCell(nextRow, col);
|
|
664
|
-
} else {
|
|
665
|
-
this.hotMenu.selectCell(nextRow, col);
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
|
|
669
|
-
/**
|
|
670
|
-
* Select previous cell in opened menu.
|
|
671
|
-
*
|
|
672
|
-
* @param {number} row Row index.
|
|
673
|
-
* @param {number} col Column index.
|
|
674
|
-
*/
|
|
675
|
-
selectPrevCell(row, col) {
|
|
676
|
-
const prevRow = row - 1;
|
|
677
|
-
const cell = prevRow >= 0 ? this.hotMenu.getCell(prevRow, col) : null;
|
|
678
|
-
if (!cell) {
|
|
679
|
-
return;
|
|
680
|
-
}
|
|
681
|
-
if ((0, _utils.isSeparator)(cell) || (0, _utils.isDisabled)(cell) || (0, _utils.isSelectionDisabled)(cell)) {
|
|
682
|
-
this.selectPrevCell(prevRow, col);
|
|
683
|
-
} else {
|
|
684
|
-
this.hotMenu.selectCell(prevRow, col);
|
|
503
|
+
this.positioner.setParentElement(this.parentMenu.container);
|
|
685
504
|
}
|
|
505
|
+
this.positioner.setElement(this.container).updatePosition(coords);
|
|
686
506
|
}
|
|
687
507
|
|
|
688
508
|
/**
|
|
@@ -699,18 +519,17 @@ class Menu {
|
|
|
699
519
|
menuItemRenderer(hot, TD, row, col, prop, value) {
|
|
700
520
|
const item = hot.getSourceDataAtRow(row);
|
|
701
521
|
const wrapper = this.hot.rootDocument.createElement('div');
|
|
702
|
-
const isSubMenu = itemToTest => (0, _object.hasOwnProperty)(itemToTest, 'submenu');
|
|
703
|
-
const itemIsSeparator = itemToTest => new RegExp(_predefinedItems.SEPARATOR, 'i').test(itemToTest.name);
|
|
704
|
-
const itemIsDisabled = itemToTest => itemToTest.disabled === true || typeof itemToTest.disabled === 'function' && itemToTest.disabled.call(this.hot) === true;
|
|
705
|
-
const itemIsSelectionDisabled = itemToTest => itemToTest.disableSelection;
|
|
706
522
|
let itemValue = value;
|
|
707
523
|
if (typeof itemValue === 'function') {
|
|
708
524
|
itemValue = itemValue.call(this.hot);
|
|
709
525
|
}
|
|
710
526
|
(0, _element.empty)(TD);
|
|
711
527
|
(0, _element.addClass)(wrapper, 'htItemWrapper');
|
|
528
|
+
if (this.hot.getSettings().ariaTags) {
|
|
529
|
+
(0, _element.setAttribute)(TD, [(0, _a11y.A11Y_MENU_ITEM)(), (0, _a11y.A11Y_LABEL)(itemValue), ...((0, _utils.isItemDisabled)(item, this.hot) ? [(0, _a11y.A11Y_DISABLED)()] : []), ...((0, _utils.isItemSubMenu)(item) ? [(0, _a11y.A11Y_EXPANDED)(false)] : [])]);
|
|
530
|
+
}
|
|
712
531
|
TD.appendChild(wrapper);
|
|
713
|
-
if (
|
|
532
|
+
if ((0, _utils.isItemSeparator)(item)) {
|
|
714
533
|
(0, _element.addClass)(TD, 'htSeparator');
|
|
715
534
|
} else if (typeof item.renderer === 'function') {
|
|
716
535
|
(0, _element.addClass)(TD, 'htCustomMenuRenderer');
|
|
@@ -718,22 +537,22 @@ class Menu {
|
|
|
718
537
|
} else {
|
|
719
538
|
(0, _element.fastInnerHTML)(wrapper, itemValue);
|
|
720
539
|
}
|
|
721
|
-
if (
|
|
540
|
+
if ((0, _utils.isItemDisabled)(item, this.hot)) {
|
|
722
541
|
(0, _element.addClass)(TD, 'htDisabled');
|
|
723
542
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
|
724
|
-
} else if (
|
|
543
|
+
} else if ((0, _utils.isItemSelectionDisabled)(item)) {
|
|
725
544
|
(0, _element.addClass)(TD, 'htSelectionDisabled');
|
|
726
545
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
|
727
|
-
} else if (
|
|
546
|
+
} else if ((0, _utils.isItemSubMenu)(item)) {
|
|
728
547
|
(0, _element.addClass)(TD, 'htSubmenu');
|
|
729
|
-
if (
|
|
548
|
+
if ((0, _utils.isItemSelectionDisabled)(item)) {
|
|
730
549
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
|
731
550
|
} else {
|
|
732
551
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
|
733
552
|
}
|
|
734
553
|
} else {
|
|
735
554
|
(0, _element.removeClass)(TD, ['htSubmenu', 'htDisabled']);
|
|
736
|
-
if (
|
|
555
|
+
if ((0, _utils.isItemSelectionDisabled)(item)) {
|
|
737
556
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
|
738
557
|
} else {
|
|
739
558
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
|
@@ -777,26 +596,6 @@ class Menu {
|
|
|
777
596
|
return container;
|
|
778
597
|
}
|
|
779
598
|
|
|
780
|
-
/**
|
|
781
|
-
* @private
|
|
782
|
-
*/
|
|
783
|
-
blockMainTableCallbacks() {
|
|
784
|
-
this._afterScrollCallback = function () {};
|
|
785
|
-
this.hot.addHook('afterScrollVertically', this._afterScrollCallback);
|
|
786
|
-
this.hot.addHook('afterScrollHorizontally', this._afterScrollCallback);
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
/**
|
|
790
|
-
* @private
|
|
791
|
-
*/
|
|
792
|
-
releaseMainTableCallbacks() {
|
|
793
|
-
if (this._afterScrollCallback) {
|
|
794
|
-
this.hot.removeHook('afterScrollVertically', this._afterScrollCallback);
|
|
795
|
-
this.hot.removeHook('afterScrollHorizontally', this._afterScrollCallback);
|
|
796
|
-
this._afterScrollCallback = null;
|
|
797
|
-
}
|
|
798
|
-
}
|
|
799
|
-
|
|
800
599
|
/**
|
|
801
600
|
* On after init listener.
|
|
802
601
|
*
|
|
@@ -816,20 +615,10 @@ class Menu {
|
|
|
816
615
|
holderStyle.width = `${currentHiderWidth + 3}px`;
|
|
817
616
|
holderStyle.height = `${realHeight + 3}px`;
|
|
818
617
|
hiderStyle.height = holderStyle.height;
|
|
819
|
-
}
|
|
820
618
|
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
* @param {number} r Selection start row index.
|
|
825
|
-
* @param {number} c Selection start column index.
|
|
826
|
-
* @param {number} r2 Selection end row index.
|
|
827
|
-
* @param {number} c2 Selection end column index.
|
|
828
|
-
* @param {object} preventScrolling Object with `value` property where its value change will be observed.
|
|
829
|
-
*/
|
|
830
|
-
onAfterSelection(r, c, r2, c2, preventScrolling) {
|
|
831
|
-
if (this.keyEvent === false) {
|
|
832
|
-
preventScrolling.value = true;
|
|
619
|
+
// Replace the default accessibility tags with the context menu's
|
|
620
|
+
if (this.hot.getSettings().ariaTags) {
|
|
621
|
+
(0, _element.setAttribute)(this.hotMenu.rootElement, [(0, _a11y.A11Y_MENU)()]);
|
|
833
622
|
}
|
|
834
623
|
}
|
|
835
624
|
|
|
@@ -869,6 +658,5 @@ class Menu {
|
|
|
869
658
|
}
|
|
870
659
|
}
|
|
871
660
|
}
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
exports.default = _default;
|
|
661
|
+
exports.Menu = Menu;
|
|
662
|
+
(0, _object.mixin)(Menu, _localHooks.default);
|