handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-20231025
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/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +11 -50
- package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -38
- package/3rdparty/walkontable/src/cell/range.mjs +7 -38
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- 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 +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- package/3rdparty/walkontable/src/event.js +10 -12
- package/3rdparty/walkontable/src/event.mjs +10 -12
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +2 -10
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +2 -13
- package/3rdparty/walkontable/src/overlay/_base.mjs +3 -14
- package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
- package/3rdparty/walkontable/src/overlay/top.js +6 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/cells.js +0 -10
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +0 -10
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +0 -5
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +0 -5
- package/3rdparty/walkontable/src/renderer/rows.js +0 -13
- package/3rdparty/walkontable/src/renderer/rows.mjs +0 -13
- package/3rdparty/walkontable/src/renderer/table.js +0 -9
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -9
- package/3rdparty/walkontable/src/scroll.js +0 -2
- package/3rdparty/walkontable/src/scroll.mjs +0 -2
- package/3rdparty/walkontable/src/selection.js +295 -0
- package/3rdparty/walkontable/src/selection.mjs +290 -0
- package/3rdparty/walkontable/src/settings.js +4 -13
- package/3rdparty/walkontable/src/settings.mjs +4 -13
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +78 -19
- package/3rdparty/walkontable/src/table.mjs +79 -20
- 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 +0 -3
- package/cellTypes/index.js +0 -4
- package/cellTypes/index.mjs +1 -3
- package/core.d.ts +4 -9
- package/core.js +327 -285
- package/core.mjs +327 -285
- package/dataMap/metaManager/metaSchema.js +0 -65
- package/dataMap/metaManager/metaSchema.mjs +0 -65
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -7
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -7
- package/dataMap/replaceData.js +0 -5
- package/dataMap/replaceData.mjs +0 -5
- package/dist/handsontable.css +5 -40
- package/dist/handsontable.full.css +5 -40
- package/dist/handsontable.full.js +8038 -12837
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +141 -141
- package/dist/handsontable.js +11488 -16287
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +21 -21
- package/dist/languages/all.js +2 -6
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +1 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +1 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +87 -15
- package/editorManager.mjs +87 -16
- package/editors/autocompleteEditor/autocompleteEditor.js +2 -53
- package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -54
- package/editors/dateEditor/dateEditor.js +7 -26
- package/editors/dateEditor/dateEditor.mjs +8 -27
- package/editors/handsontableEditor/handsontableEditor.js +1 -9
- package/editors/handsontableEditor/handsontableEditor.mjs +2 -10
- package/editors/textEditor/textEditor.js +27 -19
- package/editors/textEditor/textEditor.mjs +30 -22
- package/helpers/dom/element.js +9 -188
- package/helpers/dom/element.mjs +9 -182
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/i18n/constants.js +1 -7
- package/i18n/constants.mjs +1 -4
- package/i18n/languages/en-US.js +1 -3
- package/i18n/languages/en-US.mjs +1 -3
- package/i18n/languages/pl-PL.js +1 -3
- package/i18n/languages/pl-PL.mjs +1 -3
- package/languages/all.js +2 -6
- package/languages/en-US.js +1 -3
- package/languages/en-US.mjs +1 -3
- package/languages/index.js +2 -6
- package/languages/pl-PL.js +1 -3
- package/languages/pl-PL.mjs +1 -3
- package/package.json +99 -116
- package/pluginHooks.d.ts +1 -12
- package/pluginHooks.js +1 -152
- package/pluginHooks.mjs +1 -152
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -74
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +5 -75
- package/plugins/columnSorting/columnSorting.js +0 -43
- package/plugins/columnSorting/columnSorting.mjs +3 -44
- package/plugins/columnSorting/index.js +1 -3
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +189 -252
- package/plugins/comments/comments.mjs +190 -251
- package/plugins/contextMenu/commandExecutor.js +3 -2
- package/plugins/contextMenu/commandExecutor.mjs +3 -2
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +36 -75
- package/plugins/contextMenu/contextMenu.mjs +35 -74
- package/plugins/contextMenu/{menu/cursor.mjs → cursor.js} +10 -4
- package/plugins/contextMenu/{menu/cursor.js → cursor.mjs} +4 -6
- package/plugins/contextMenu/itemsFactory.js +3 -2
- package/plugins/contextMenu/itemsFactory.mjs +4 -3
- package/plugins/contextMenu/{menu/menu.js → menu.js} +308 -96
- package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +309 -97
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/{predefinedItems/index.js → predefinedItems.js} +14 -14
- package/plugins/contextMenu/predefinedItems.mjs +68 -0
- package/plugins/contextMenu/utils.js +151 -35
- package/plugins/contextMenu/utils.mjs +144 -35
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +78 -127
- package/plugins/copyPaste/copyPaste.mjs +79 -128
- package/plugins/copyPaste/focusableElement.js +186 -0
- package/plugins/copyPaste/focusableElement.mjs +180 -0
- package/plugins/customBorders/customBorders.js +20 -23
- package/plugins/customBorders/customBorders.mjs +21 -24
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +38 -97
- package/plugins/dropdownMenu/dropdownMenu.mjs +37 -96
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +14 -31
- package/plugins/filters/filters.mjs +14 -31
- 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 +1 -3
- package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
- package/plugins/mergeCells/mergeCells.js +16 -5
- package/plugins/mergeCells/mergeCells.mjs +16 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
- package/plugins/nestedHeaders/nestedHeaders.js +10 -240
- package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
- package/plugins/nestedHeaders/stateManager/index.js +3 -102
- package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
- package/plugins/nestedRows/nestedRows.js +0 -41
- package/plugins/nestedRows/nestedRows.mjs +0 -41
- package/plugins/nestedRows/ui/headers.js +0 -11
- package/plugins/nestedRows/ui/headers.mjs +1 -12
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
- package/renderers/baseRenderer/baseRenderer.js +0 -17
- package/renderers/baseRenderer/baseRenderer.mjs +1 -18
- package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
- package/renderers/index.d.ts +0 -9
- package/selection/highlight/constants.js +15 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +71 -256
- package/selection/highlight/highlight.mjs +71 -250
- package/selection/highlight/types/activeHeader.js +8 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +18 -6
- package/selection/highlight/types/area.mjs +18 -6
- package/selection/highlight/types/{focus.js → cell.js} +7 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +9 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +7 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +18 -9
- package/selection/highlight/types/header.mjs +18 -9
- package/selection/highlight/types/index.js +35 -0
- package/selection/highlight/types/index.mjs +31 -0
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- package/selection/mouseEventHandler.js +1 -7
- package/selection/mouseEventHandler.mjs +1 -7
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +152 -321
- package/selection/selection.mjs +151 -318
- package/selection/transformation.js +90 -232
- package/selection/transformation.mjs +90 -232
- package/selection/utils.js +21 -15
- package/selection/utils.mjs +21 -16
- package/settings.d.ts +0 -4
- package/shortcuts/context.js +2 -20
- package/shortcuts/context.mjs +3 -20
- package/shortcuts/manager.js +7 -25
- package/shortcuts/manager.mjs +7 -26
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +5 -19
- package/shortcuts/utils.mjs +4 -18
- package/tableView.js +13 -111
- package/tableView.mjs +14 -112
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/selection/constants.js +0 -62
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -26
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -274
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
- package/3rdparty/walkontable/src/selection/scanner.js +0 -270
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
- package/3rdparty/walkontable/src/selection/selection.js +0 -101
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
- package/cellTypes/selectType/index.d.ts +0 -1
- package/cellTypes/selectType/index.js +0 -6
- package/cellTypes/selectType/index.mjs +0 -1
- package/cellTypes/selectType/selectType.d.ts +0 -14
- package/cellTypes/selectType/selectType.js +0 -13
- package/cellTypes/selectType/selectType.mjs +0 -8
- package/core/focusCatcher/focusDetector.js +0 -63
- package/core/focusCatcher/focusDetector.mjs +0 -59
- package/core/focusCatcher/index.js +0 -142
- package/core/focusCatcher/index.mjs +0 -138
- package/core/index.js +0 -9
- package/core/index.mjs +0 -1
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -265
- package/focusManager.mjs +0 -261
- package/helpers/a11y.js +0 -79
- package/helpers/a11y.mjs +0 -38
- package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
- package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
- package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
- package/plugins/comments/contextMenuItem/removeComment.js +0 -38
- package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
- package/plugins/contextMenu/menu/index.js +0 -9
- package/plugins/contextMenu/menu/index.mjs +0 -1
- package/plugins/contextMenu/menu/navigator.js +0 -152
- package/plugins/contextMenu/menu/navigator.mjs +0 -148
- package/plugins/contextMenu/menu/positioner.js +0 -213
- package/plugins/contextMenu/menu/positioner.mjs +0 -209
- package/plugins/contextMenu/menu/utils.js +0 -177
- package/plugins/contextMenu/menu/utils.mjs +0 -163
- package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
- package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
- package/renderers/dateRenderer/dateRenderer.js +0 -29
- package/renderers/dateRenderer/dateRenderer.mjs +0 -24
- package/renderers/dateRenderer/index.d.ts +0 -1
- package/renderers/dateRenderer/index.js +0 -6
- package/renderers/dateRenderer/index.mjs +0 -1
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
- package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
- package/renderers/handsontableRenderer/index.d.ts +0 -1
- package/renderers/handsontableRenderer/index.js +0 -6
- package/renderers/handsontableRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/index.d.ts +0 -1
- package/renderers/selectRenderer/index.js +0 -6
- package/renderers/selectRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
- package/renderers/selectRenderer/selectRenderer.js +0 -27
- package/renderers/selectRenderer/selectRenderer.mjs +0 -22
- package/selection/highlight/types/areaLayered.js +0 -31
- package/selection/highlight/types/areaLayered.mjs +0 -26
- package/selection/highlight/types/column.js +0 -27
- package/selection/highlight/types/column.mjs +0 -22
- package/selection/highlight/types/row.js +0 -27
- package/selection/highlight/types/row.mjs +0 -22
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -27
- package/shortcutContexts/commands/editor/open.mjs +0 -23
- package/shortcutContexts/commands/emptySelectedCells.js +0 -11
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/index.js +0 -35
- package/shortcutContexts/commands/index.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
- package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
- package/shortcutContexts/commands/selectAll.js +0 -12
- package/shortcutContexts/commands/selectAll.mjs +0 -8
- package/shortcutContexts/constants.js +0 -13
- package/shortcutContexts/constants.mjs +0 -8
- package/shortcutContexts/editor.js +0 -25
- package/shortcutContexts/editor.mjs +0 -21
- package/shortcutContexts/grid.js +0 -163
- package/shortcutContexts/grid.mjs +0 -159
- package/shortcutContexts/index.js +0 -24
- package/shortcutContexts/index.mjs +0 -11
@@ -1,18 +1,17 @@
|
|
1
1
|
import "core-js/modules/es.array.push.js";
|
2
|
-
import
|
3
|
-
import {
|
4
|
-
import {
|
5
|
-
import
|
6
|
-
import EventManager from "
|
7
|
-
import { arrayEach, arrayFilter, arrayReduce } from "
|
8
|
-
import { isWindowsOS, isMobileBrowser, isIpadOS } from "
|
9
|
-
import { addClass, empty, fastInnerHTML, isChildOf, isInput, removeClass, getParentWindow, hasClass
|
10
|
-
import { isRightClick } from "
|
11
|
-
import { debounce, isFunction } from "
|
12
|
-
import { isUndefined, isDefined } from "
|
13
|
-
import { mixin } from "
|
14
|
-
import localHooks from "
|
15
|
-
import { A11Y_DISABLED, A11Y_EXPANDED, A11Y_LABEL, A11Y_MENU, A11Y_MENU_ITEM } from "../../../helpers/a11y.mjs";
|
2
|
+
import Cursor from "./cursor.mjs";
|
3
|
+
import { SEPARATOR, NO_ITEMS, predefinedItems } from "./predefinedItems.mjs";
|
4
|
+
import { filterSeparators, hasSubMenu, isDisabled, isItemHidden, isSeparator, isSelectionDisabled, normalizeSelection } from "./utils.mjs";
|
5
|
+
import Core from "../../core.mjs";
|
6
|
+
import EventManager from "../../eventManager.mjs";
|
7
|
+
import { arrayEach, arrayFilter, arrayReduce } from "../../helpers/array.mjs";
|
8
|
+
import { isWindowsOS, isMobileBrowser, isIpadOS } from "../../helpers/browser.mjs";
|
9
|
+
import { addClass, empty, fastInnerHTML, isChildOf, isInput, removeClass, getParentWindow, hasClass } from "../../helpers/dom/element.mjs";
|
10
|
+
import { isRightClick } from "../../helpers/dom/event.mjs";
|
11
|
+
import { debounce, isFunction } from "../../helpers/function.mjs";
|
12
|
+
import { isUndefined, isDefined } from "../../helpers/mixed.mjs";
|
13
|
+
import { mixin, hasOwnProperty } from "../../helpers/object.mjs";
|
14
|
+
import localHooks from "../../mixins/localHooks.mjs";
|
16
15
|
const MIN_WIDTH = 215;
|
17
16
|
const SHORTCUTS_CONTEXT = 'menu';
|
18
17
|
const SHORTCUTS_GROUP = SHORTCUTS_CONTEXT;
|
@@ -32,7 +31,7 @@ const SHORTCUTS_GROUP = SHORTCUTS_CONTEXT;
|
|
32
31
|
* @private
|
33
32
|
* @class Menu
|
34
33
|
*/
|
35
|
-
|
34
|
+
class Menu {
|
36
35
|
/**
|
37
36
|
* @param {Core} hotInstance Handsontable instance.
|
38
37
|
* @param {MenuOptions} [options] Menu options.
|
@@ -50,13 +49,18 @@ export class Menu {
|
|
50
49
|
};
|
51
50
|
this.eventManager = new EventManager(this);
|
52
51
|
this.container = this.createContainer(this.options.name);
|
53
|
-
this.positioner = new Positioner(this.options.keepInViewport);
|
54
|
-
this.navigator = new Navigator();
|
55
52
|
this.hotMenu = null;
|
56
53
|
this.hotSubMenus = {};
|
57
54
|
this.parentMenu = this.options.parent || null;
|
58
55
|
this.menuItems = null;
|
59
56
|
this.origOutsideClickDeselects = null;
|
57
|
+
this.keyEvent = false;
|
58
|
+
this.offset = {
|
59
|
+
above: 0,
|
60
|
+
below: 0,
|
61
|
+
left: 0,
|
62
|
+
right: 0
|
63
|
+
};
|
60
64
|
this._afterScrollCallback = null;
|
61
65
|
this.registerEvents();
|
62
66
|
}
|
@@ -102,6 +106,17 @@ export class Menu {
|
|
102
106
|
return Array.isArray(this.hotMenu.getSelectedLast());
|
103
107
|
}
|
104
108
|
|
109
|
+
/**
|
110
|
+
* Set offset menu position for specified area (`above`, `below`, `left` or `right`).
|
111
|
+
*
|
112
|
+
* @param {string} area Specified area name (`above`, `below`, `left` or `right`).
|
113
|
+
* @param {number} offset Offset value.
|
114
|
+
*/
|
115
|
+
setOffset(area) {
|
116
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
117
|
+
this.offset[area] = offset;
|
118
|
+
}
|
119
|
+
|
105
120
|
/**
|
106
121
|
* Check if menu is using as sub-menu.
|
107
122
|
*
|
@@ -118,6 +133,7 @@ export class Menu {
|
|
118
133
|
* @fires Hooks#afterContextMenuShow
|
119
134
|
*/
|
120
135
|
open() {
|
136
|
+
var _this = this;
|
121
137
|
this.runLocalHooks('beforeOpen');
|
122
138
|
this.container.removeAttribute('style');
|
123
139
|
this.container.style.display = 'block';
|
@@ -162,7 +178,6 @@ export class Menu {
|
|
162
178
|
outsideClickDeselects: false,
|
163
179
|
disableVisualSelection: 'area',
|
164
180
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
|
165
|
-
ariaTags: false,
|
166
181
|
afterOnCellMouseOver: (event, coords) => {
|
167
182
|
if (this.isAllSubMenusClosed()) {
|
168
183
|
delayedOpenSubMenu(coords.row);
|
@@ -180,12 +195,6 @@ export class Menu {
|
|
180
195
|
this.close(true);
|
181
196
|
}
|
182
197
|
},
|
183
|
-
afterSelection: (row, column, row2, column2, preventScrolling) => {
|
184
|
-
// do not scroll the viewport when mouse clicks on partially visible menu item
|
185
|
-
if (this.hotMenu.view.isMouseDown()) {
|
186
|
-
preventScrolling.value = true;
|
187
|
-
}
|
188
|
-
},
|
189
198
|
beforeOnCellMouseUp: event => {
|
190
199
|
if (this.hasSelectedItem()) {
|
191
200
|
shouldAutoCloseMenu = !this.isCommandPassive(this.getSelectedItem());
|
@@ -203,7 +212,7 @@ export class Menu {
|
|
203
212
|
// event hides the tapped element, the click event grabs the element below. As a result, the filter
|
204
213
|
// by condition menu is closed and immediately open on tapping the "None" item.
|
205
214
|
if (isMobileBrowser() || isIpadOS()) {
|
206
|
-
|
215
|
+
setTimeout(() => this.close(true), 325);
|
207
216
|
} else {
|
208
217
|
this.close(true);
|
209
218
|
}
|
@@ -219,11 +228,13 @@ export class Menu {
|
|
219
228
|
};
|
220
229
|
this.origOutsideClickDeselects = this.hot.getSettings().outsideClickDeselects;
|
221
230
|
this.hot.getSettings().outsideClickDeselects = false;
|
222
|
-
this.hotMenu = new
|
231
|
+
this.hotMenu = new Core(this.container, settings);
|
223
232
|
this.hotMenu.addHook('afterInit', () => this.onAfterInit());
|
233
|
+
this.hotMenu.addHook('afterSelection', function () {
|
234
|
+
return _this.onAfterSelection(...arguments);
|
235
|
+
});
|
224
236
|
this.hotMenu.init();
|
225
237
|
this.hotMenu.listen();
|
226
|
-
this.navigator.setMenu(this.hotMenu);
|
227
238
|
const shortcutManager = this.hotMenu.getShortcutManager();
|
228
239
|
const menuContext = shortcutManager.addContext(SHORTCUTS_GROUP);
|
229
240
|
const config = {
|
@@ -231,84 +242,105 @@ export class Menu {
|
|
231
242
|
};
|
232
243
|
const menuContextConfig = {
|
233
244
|
...config,
|
234
|
-
runOnlyIf: event =>
|
245
|
+
runOnlyIf: event => isInput(event.target) === false || this.container.contains(event.target) === false
|
235
246
|
};
|
236
247
|
|
237
248
|
// Default shortcuts for Handsontable should not be handled. Changing context will help with that.
|
238
249
|
shortcutManager.setActiveContextName('menu');
|
239
250
|
menuContext.addShortcuts([{
|
240
|
-
keys: [['Tab'], ['Shift', 'Tab'], ['Control/Meta', 'A']],
|
241
|
-
forwardToContext: this.hot.getShortcutManager().getContext('grid'),
|
242
|
-
callback: () => this.close(true)
|
243
|
-
}, {
|
244
251
|
keys: [['Escape']],
|
245
|
-
callback: () =>
|
252
|
+
callback: () => {
|
253
|
+
this.keyEvent = true;
|
254
|
+
this.close();
|
255
|
+
this.keyEvent = false;
|
256
|
+
}
|
246
257
|
}, {
|
247
258
|
keys: [['ArrowDown']],
|
248
|
-
callback: () =>
|
259
|
+
callback: () => {
|
260
|
+
const selection = this.hotMenu.getSelectedLast();
|
261
|
+
this.keyEvent = true;
|
262
|
+
if (selection) {
|
263
|
+
this.selectNextCell(selection[0], selection[1]);
|
264
|
+
} else {
|
265
|
+
this.selectFirstCell();
|
266
|
+
}
|
267
|
+
this.keyEvent = false;
|
268
|
+
}
|
249
269
|
}, {
|
250
270
|
keys: [['ArrowUp']],
|
251
|
-
callback: () =>
|
271
|
+
callback: () => {
|
272
|
+
const selection = this.hotMenu.getSelectedLast();
|
273
|
+
this.keyEvent = true;
|
274
|
+
if (selection) {
|
275
|
+
this.selectPrevCell(selection[0], selection[1]);
|
276
|
+
} else {
|
277
|
+
this.selectLastCell();
|
278
|
+
}
|
279
|
+
this.keyEvent = false;
|
280
|
+
}
|
252
281
|
}, {
|
253
282
|
keys: [['ArrowRight']],
|
254
283
|
callback: () => {
|
255
284
|
const selection = this.hotMenu.getSelectedLast();
|
285
|
+
this.keyEvent = true;
|
256
286
|
if (selection) {
|
257
|
-
const
|
258
|
-
if (
|
259
|
-
|
287
|
+
const menu = this.openSubMenu(selection[0]);
|
288
|
+
if (menu) {
|
289
|
+
menu.selectFirstCell();
|
260
290
|
}
|
261
291
|
}
|
292
|
+
this.keyEvent = false;
|
262
293
|
}
|
263
294
|
}, {
|
264
295
|
keys: [['ArrowLeft']],
|
265
296
|
callback: () => {
|
266
297
|
const selection = this.hotMenu.getSelectedLast();
|
298
|
+
this.keyEvent = true;
|
267
299
|
if (selection && this.isSubMenu()) {
|
268
300
|
this.close();
|
269
|
-
if (this.
|
301
|
+
if (this.parentMenu) {
|
270
302
|
this.parentMenu.hotMenu.listen();
|
271
303
|
}
|
272
304
|
}
|
305
|
+
this.keyEvent = false;
|
273
306
|
}
|
274
307
|
}, {
|
275
|
-
keys: [['
|
276
|
-
callback: () => this.navigator.selectFirst()
|
277
|
-
}, {
|
278
|
-
keys: [['Control/Meta', 'ArrowDown'], ['End']],
|
279
|
-
callback: () => this.navigator.selectLast()
|
280
|
-
}, {
|
281
|
-
keys: [['Enter'], ['Space']],
|
308
|
+
keys: [['Enter']],
|
282
309
|
callback: event => {
|
283
310
|
const selection = this.hotMenu.getSelectedLast();
|
284
|
-
|
285
|
-
|
286
|
-
} else {
|
311
|
+
this.keyEvent = true;
|
312
|
+
if (!this.hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
287
313
|
this.executeCommand(event);
|
288
314
|
this.close(true);
|
289
315
|
}
|
316
|
+
this.keyEvent = false;
|
290
317
|
}
|
291
318
|
}, {
|
292
319
|
keys: [['PageUp']],
|
293
320
|
callback: () => {
|
294
321
|
const selection = this.hotMenu.getSelectedLast();
|
322
|
+
this.keyEvent = true;
|
295
323
|
if (selection) {
|
296
324
|
this.hotMenu.selection.transformStart(-this.hotMenu.countVisibleRows(), 0);
|
297
325
|
} else {
|
298
|
-
this.
|
326
|
+
this.selectFirstCell();
|
299
327
|
}
|
328
|
+
this.keyEvent = false;
|
300
329
|
}
|
301
330
|
}, {
|
302
331
|
keys: [['PageDown']],
|
303
332
|
callback: () => {
|
304
333
|
const selection = this.hotMenu.getSelectedLast();
|
334
|
+
this.keyEvent = true;
|
305
335
|
if (selection) {
|
306
336
|
this.hotMenu.selection.transformStart(this.hotMenu.countVisibleRows(), 0);
|
307
337
|
} else {
|
308
|
-
this.
|
338
|
+
this.selectLastCell();
|
309
339
|
}
|
340
|
+
this.keyEvent = false;
|
310
341
|
}
|
311
342
|
}], menuContextConfig);
|
343
|
+
this.blockMainTableCallbacks();
|
312
344
|
this.runLocalHooks('afterOpen');
|
313
345
|
}
|
314
346
|
|
@@ -322,24 +354,17 @@ export class Menu {
|
|
322
354
|
if (!this.isOpened()) {
|
323
355
|
return;
|
324
356
|
}
|
325
|
-
if (closeParent && this.
|
357
|
+
if (closeParent && this.parentMenu) {
|
326
358
|
this.parentMenu.close();
|
327
359
|
} else {
|
328
|
-
this.navigator.clear();
|
329
360
|
this.closeAllSubMenus();
|
330
361
|
this.container.style.display = 'none';
|
362
|
+
this.releaseMainTableCallbacks();
|
331
363
|
this.hotMenu.destroy();
|
332
364
|
this.hotMenu = null;
|
333
365
|
this.hot.getSettings().outsideClickDeselects = this.origOutsideClickDeselects;
|
334
366
|
this.runLocalHooks('afterClose');
|
335
|
-
if (this.
|
336
|
-
if (this.hot.getSettings().ariaTags) {
|
337
|
-
const selection = this.parentMenu.hotMenu.getSelectedLast();
|
338
|
-
if (selection) {
|
339
|
-
const cell = this.parentMenu.hotMenu.getCell(selection[0], 0);
|
340
|
-
setAttribute(cell, [A11Y_EXPANDED(false)]);
|
341
|
-
}
|
342
|
-
}
|
367
|
+
if (this.parentMenu) {
|
343
368
|
this.parentMenu.hotMenu.listen();
|
344
369
|
}
|
345
370
|
}
|
@@ -372,11 +397,6 @@ export class Menu {
|
|
372
397
|
subMenu.open();
|
373
398
|
subMenu.setPosition(cell.getBoundingClientRect());
|
374
399
|
this.hotSubMenus[dataItem.key] = subMenu;
|
375
|
-
|
376
|
-
// Update the accessibility tags on the cell being the base for the submenu.
|
377
|
-
if (this.hot.getSettings().ariaTags) {
|
378
|
-
setAttribute(cell, [A11Y_EXPANDED(true)]);
|
379
|
-
}
|
380
400
|
return subMenu;
|
381
401
|
}
|
382
402
|
|
@@ -391,12 +411,6 @@ export class Menu {
|
|
391
411
|
if (menus) {
|
392
412
|
menus.destroy();
|
393
413
|
delete this.hotSubMenus[dataItem.key];
|
394
|
-
const cell = this.hotMenu.getCell(row, 0);
|
395
|
-
|
396
|
-
// Update the accessibility tags on the cell being the base for the submenu.
|
397
|
-
if (this.hot.getSettings().ariaTags) {
|
398
|
-
setAttribute(cell, [A11Y_EXPANDED(false)]);
|
399
|
-
}
|
400
414
|
}
|
401
415
|
}
|
402
416
|
|
@@ -475,30 +489,196 @@ export class Menu {
|
|
475
489
|
* @returns {boolean}
|
476
490
|
*/
|
477
491
|
isCommandPassive(commandDescriptor) {
|
478
|
-
|
492
|
+
const {
|
493
|
+
isCommand,
|
494
|
+
name: commandName,
|
495
|
+
disabled,
|
496
|
+
submenu
|
497
|
+
} = commandDescriptor;
|
498
|
+
const isItemDisabled = disabled === true || typeof disabled === 'function' && disabled.call(this.hot) === true;
|
499
|
+
return isCommand === false || commandName === SEPARATOR || isItemDisabled === true || submenu;
|
479
500
|
}
|
480
501
|
|
481
502
|
/**
|
482
|
-
* Set
|
503
|
+
* Set menu position based on dom event or based on literal object.
|
483
504
|
*
|
484
|
-
* @param {
|
485
|
-
* @param {number} offset Offset value.
|
505
|
+
* @param {Event|object} coords Event or literal Object with coordinates.
|
486
506
|
*/
|
487
|
-
|
488
|
-
|
489
|
-
this.
|
507
|
+
setPosition(coords) {
|
508
|
+
const cursor = new Cursor(coords, this.container.ownerDocument.defaultView);
|
509
|
+
if (this.options.keepInViewport) {
|
510
|
+
if (cursor.fitsBelow(this.container)) {
|
511
|
+
this.setPositionBelowCursor(cursor);
|
512
|
+
} else if (cursor.fitsAbove(this.container)) {
|
513
|
+
this.setPositionAboveCursor(cursor);
|
514
|
+
} else {
|
515
|
+
this.setPositionBelowCursor(cursor);
|
516
|
+
}
|
517
|
+
if (this.hot.isLtr()) {
|
518
|
+
this.setHorizontalPositionForLtr(cursor);
|
519
|
+
} else {
|
520
|
+
this.setHorizontalPositionForRtl(cursor);
|
521
|
+
}
|
522
|
+
} else {
|
523
|
+
this.setPositionBelowCursor(cursor);
|
524
|
+
this.setPositionOnRightOfCursor(cursor);
|
525
|
+
}
|
490
526
|
}
|
491
527
|
|
492
528
|
/**
|
493
|
-
* Set menu position
|
529
|
+
* Set menu horizontal position for RTL mode.
|
494
530
|
*
|
495
|
-
* @param {
|
531
|
+
* @param {Cursor} cursor `Cursor` object.
|
496
532
|
*/
|
497
|
-
|
533
|
+
setHorizontalPositionForRtl(cursor) {
|
534
|
+
if (cursor.fitsOnLeft(this.container)) {
|
535
|
+
this.setPositionOnLeftOfCursor(cursor);
|
536
|
+
} else {
|
537
|
+
this.setPositionOnRightOfCursor(cursor);
|
538
|
+
}
|
539
|
+
}
|
540
|
+
|
541
|
+
/**
|
542
|
+
* Set menu horizontal position for LTR mode.
|
543
|
+
*
|
544
|
+
* @param {Cursor} cursor `Cursor` object.
|
545
|
+
*/
|
546
|
+
setHorizontalPositionForLtr(cursor) {
|
547
|
+
if (cursor.fitsOnRight(this.container)) {
|
548
|
+
this.setPositionOnRightOfCursor(cursor);
|
549
|
+
} else {
|
550
|
+
this.setPositionOnLeftOfCursor(cursor);
|
551
|
+
}
|
552
|
+
}
|
553
|
+
|
554
|
+
/**
|
555
|
+
* Set menu position above cursor object.
|
556
|
+
*
|
557
|
+
* @param {Cursor} cursor `Cursor` object.
|
558
|
+
*/
|
559
|
+
setPositionAboveCursor(cursor) {
|
560
|
+
let top = this.offset.above + cursor.top - this.container.offsetHeight;
|
561
|
+
if (this.isSubMenu()) {
|
562
|
+
top = cursor.top + cursor.cellHeight - this.container.offsetHeight + 3;
|
563
|
+
}
|
564
|
+
this.container.style.top = `${top}px`;
|
565
|
+
}
|
566
|
+
|
567
|
+
/**
|
568
|
+
* Set menu position below cursor object.
|
569
|
+
*
|
570
|
+
* @param {Cursor} cursor `Cursor` object.
|
571
|
+
*/
|
572
|
+
setPositionBelowCursor(cursor) {
|
573
|
+
let top = this.offset.below + cursor.top + 1;
|
574
|
+
if (this.isSubMenu()) {
|
575
|
+
top = cursor.top - 1;
|
576
|
+
}
|
577
|
+
this.container.style.top = `${top}px`;
|
578
|
+
}
|
579
|
+
|
580
|
+
/**
|
581
|
+
* Set menu position on the right of cursor object.
|
582
|
+
*
|
583
|
+
* @param {Cursor} cursor `Cursor` object.
|
584
|
+
*/
|
585
|
+
setPositionOnRightOfCursor(cursor) {
|
586
|
+
let left = cursor.left;
|
587
|
+
if (this.isSubMenu()) {
|
588
|
+
const {
|
589
|
+
right: parentMenuRight
|
590
|
+
} = this.parentMenu.container.getBoundingClientRect();
|
591
|
+
|
592
|
+
// move the sub menu by the width of the parent's border (usually by 1-2 pixels)
|
593
|
+
left += cursor.cellWidth + parentMenuRight - (cursor.left + cursor.cellWidth);
|
594
|
+
} else {
|
595
|
+
left += this.offset.right;
|
596
|
+
}
|
597
|
+
this.container.style.left = `${left}px`;
|
598
|
+
}
|
599
|
+
|
600
|
+
/**
|
601
|
+
* Set menu position on the left of cursor object.
|
602
|
+
*
|
603
|
+
* @param {Cursor} cursor `Cursor` object.
|
604
|
+
*/
|
605
|
+
setPositionOnLeftOfCursor(cursor) {
|
606
|
+
let left = this.offset.left + cursor.left - this.container.offsetWidth;
|
498
607
|
if (this.isSubMenu()) {
|
499
|
-
|
608
|
+
const {
|
609
|
+
left: parentMenuLeft
|
610
|
+
} = this.parentMenu.container.getBoundingClientRect();
|
611
|
+
|
612
|
+
// move the sub menu by the width of the parent's border (usually by 1-2 pixels)
|
613
|
+
left -= cursor.left - parentMenuLeft;
|
614
|
+
}
|
615
|
+
this.container.style.left = `${left}px`;
|
616
|
+
}
|
617
|
+
|
618
|
+
/**
|
619
|
+
* Select first cell in opened menu.
|
620
|
+
*/
|
621
|
+
selectFirstCell() {
|
622
|
+
const cell = this.hotMenu.getCell(0, 0);
|
623
|
+
if (isSeparator(cell) || isDisabled(cell) || isSelectionDisabled(cell)) {
|
624
|
+
this.selectNextCell(0, 0);
|
625
|
+
} else {
|
626
|
+
this.hotMenu.selectCell(0, 0);
|
627
|
+
}
|
628
|
+
}
|
629
|
+
|
630
|
+
/**
|
631
|
+
* Select last cell in opened menu.
|
632
|
+
*/
|
633
|
+
selectLastCell() {
|
634
|
+
const lastRow = this.hotMenu.countRows() - 1;
|
635
|
+
const cell = this.hotMenu.getCell(lastRow, 0);
|
636
|
+
if (isSeparator(cell) || isDisabled(cell) || isSelectionDisabled(cell)) {
|
637
|
+
this.selectPrevCell(lastRow, 0);
|
638
|
+
} else {
|
639
|
+
// disable default "scroll-to-cell" option and instead of that...
|
640
|
+
this.hotMenu.selectCell(lastRow, 0, undefined, undefined, false);
|
641
|
+
// ...scroll to the cell with "snap to the bottom" option
|
642
|
+
this.hotMenu.scrollViewportTo(lastRow, 0, true, false);
|
643
|
+
}
|
644
|
+
}
|
645
|
+
|
646
|
+
/**
|
647
|
+
* Select next cell in opened menu.
|
648
|
+
*
|
649
|
+
* @param {number} row Row index.
|
650
|
+
* @param {number} col Column index.
|
651
|
+
*/
|
652
|
+
selectNextCell(row, col) {
|
653
|
+
const nextRow = row + 1;
|
654
|
+
const cell = nextRow < this.hotMenu.countRows() ? this.hotMenu.getCell(nextRow, col) : null;
|
655
|
+
if (!cell) {
|
656
|
+
return;
|
657
|
+
}
|
658
|
+
if (isSeparator(cell) || isDisabled(cell) || isSelectionDisabled(cell)) {
|
659
|
+
this.selectNextCell(nextRow, col);
|
660
|
+
} else {
|
661
|
+
this.hotMenu.selectCell(nextRow, col);
|
662
|
+
}
|
663
|
+
}
|
664
|
+
|
665
|
+
/**
|
666
|
+
* Select previous cell in opened menu.
|
667
|
+
*
|
668
|
+
* @param {number} row Row index.
|
669
|
+
* @param {number} col Column index.
|
670
|
+
*/
|
671
|
+
selectPrevCell(row, col) {
|
672
|
+
const prevRow = row - 1;
|
673
|
+
const cell = prevRow >= 0 ? this.hotMenu.getCell(prevRow, col) : null;
|
674
|
+
if (!cell) {
|
675
|
+
return;
|
676
|
+
}
|
677
|
+
if (isSeparator(cell) || isDisabled(cell) || isSelectionDisabled(cell)) {
|
678
|
+
this.selectPrevCell(prevRow, col);
|
679
|
+
} else {
|
680
|
+
this.hotMenu.selectCell(prevRow, col);
|
500
681
|
}
|
501
|
-
this.positioner.setElement(this.container).updatePosition(coords);
|
502
682
|
}
|
503
683
|
|
504
684
|
/**
|
@@ -515,17 +695,18 @@ export class Menu {
|
|
515
695
|
menuItemRenderer(hot, TD, row, col, prop, value) {
|
516
696
|
const item = hot.getSourceDataAtRow(row);
|
517
697
|
const wrapper = this.hot.rootDocument.createElement('div');
|
698
|
+
const isSubMenu = itemToTest => hasOwnProperty(itemToTest, 'submenu');
|
699
|
+
const itemIsSeparator = itemToTest => new RegExp(SEPARATOR, 'i').test(itemToTest.name);
|
700
|
+
const itemIsDisabled = itemToTest => itemToTest.disabled === true || typeof itemToTest.disabled === 'function' && itemToTest.disabled.call(this.hot) === true;
|
701
|
+
const itemIsSelectionDisabled = itemToTest => itemToTest.disableSelection;
|
518
702
|
let itemValue = value;
|
519
703
|
if (typeof itemValue === 'function') {
|
520
704
|
itemValue = itemValue.call(this.hot);
|
521
705
|
}
|
522
706
|
empty(TD);
|
523
707
|
addClass(wrapper, 'htItemWrapper');
|
524
|
-
if (this.hot.getSettings().ariaTags) {
|
525
|
-
setAttribute(TD, [A11Y_MENU_ITEM(), A11Y_LABEL(itemValue), ...(isItemDisabled(item, this.hot) ? [A11Y_DISABLED()] : []), ...(isItemSubMenu(item) ? [A11Y_EXPANDED(false)] : [])]);
|
526
|
-
}
|
527
708
|
TD.appendChild(wrapper);
|
528
|
-
if (
|
709
|
+
if (itemIsSeparator(item)) {
|
529
710
|
addClass(TD, 'htSeparator');
|
530
711
|
} else if (typeof item.renderer === 'function') {
|
531
712
|
addClass(TD, 'htCustomMenuRenderer');
|
@@ -533,22 +714,22 @@ export class Menu {
|
|
533
714
|
} else {
|
534
715
|
fastInnerHTML(wrapper, itemValue);
|
535
716
|
}
|
536
|
-
if (
|
717
|
+
if (itemIsDisabled(item)) {
|
537
718
|
addClass(TD, 'htDisabled');
|
538
719
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
539
|
-
} else if (
|
720
|
+
} else if (itemIsSelectionDisabled(item)) {
|
540
721
|
addClass(TD, 'htSelectionDisabled');
|
541
722
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
542
|
-
} else if (
|
723
|
+
} else if (isSubMenu(item)) {
|
543
724
|
addClass(TD, 'htSubmenu');
|
544
|
-
if (
|
725
|
+
if (itemIsSelectionDisabled(item)) {
|
545
726
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
546
727
|
} else {
|
547
728
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
548
729
|
}
|
549
730
|
} else {
|
550
731
|
removeClass(TD, ['htSubmenu', 'htDisabled']);
|
551
|
-
if (
|
732
|
+
if (itemIsSelectionDisabled(item)) {
|
552
733
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
553
734
|
} else {
|
554
735
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
@@ -592,6 +773,26 @@ export class Menu {
|
|
592
773
|
return container;
|
593
774
|
}
|
594
775
|
|
776
|
+
/**
|
777
|
+
* @private
|
778
|
+
*/
|
779
|
+
blockMainTableCallbacks() {
|
780
|
+
this._afterScrollCallback = function () {};
|
781
|
+
this.hot.addHook('afterScrollVertically', this._afterScrollCallback);
|
782
|
+
this.hot.addHook('afterScrollHorizontally', this._afterScrollCallback);
|
783
|
+
}
|
784
|
+
|
785
|
+
/**
|
786
|
+
* @private
|
787
|
+
*/
|
788
|
+
releaseMainTableCallbacks() {
|
789
|
+
if (this._afterScrollCallback) {
|
790
|
+
this.hot.removeHook('afterScrollVertically', this._afterScrollCallback);
|
791
|
+
this.hot.removeHook('afterScrollHorizontally', this._afterScrollCallback);
|
792
|
+
this._afterScrollCallback = null;
|
793
|
+
}
|
794
|
+
}
|
795
|
+
|
595
796
|
/**
|
596
797
|
* On after init listener.
|
597
798
|
*
|
@@ -611,10 +812,20 @@ export class Menu {
|
|
611
812
|
holderStyle.width = `${currentHiderWidth + 3}px`;
|
612
813
|
holderStyle.height = `${realHeight + 3}px`;
|
613
814
|
hiderStyle.height = holderStyle.height;
|
815
|
+
}
|
614
816
|
|
615
|
-
|
616
|
-
|
617
|
-
|
817
|
+
/**
|
818
|
+
* On after selection listener.
|
819
|
+
*
|
820
|
+
* @param {number} r Selection start row index.
|
821
|
+
* @param {number} c Selection start column index.
|
822
|
+
* @param {number} r2 Selection end row index.
|
823
|
+
* @param {number} c2 Selection end column index.
|
824
|
+
* @param {object} preventScrolling Object with `value` property where its value change will be observed.
|
825
|
+
*/
|
826
|
+
onAfterSelection(r, c, r2, c2, preventScrolling) {
|
827
|
+
if (this.keyEvent === false) {
|
828
|
+
preventScrolling.value = true;
|
618
829
|
}
|
619
830
|
}
|
620
831
|
|
@@ -654,4 +865,5 @@ export class Menu {
|
|
654
865
|
}
|
655
866
|
}
|
656
867
|
}
|
657
|
-
mixin(Menu, localHooks);
|
868
|
+
mixin(Menu, localHooks);
|
869
|
+
export default Menu;
|
@@ -23,13 +23,6 @@ function alignmentItem() {
|
|
23
23
|
if (this.countRows() === 0 || this.countCols() === 0) {
|
24
24
|
return true;
|
25
25
|
}
|
26
|
-
const range = this.getSelectedRangeLast();
|
27
|
-
if (!range) {
|
28
|
-
return true;
|
29
|
-
}
|
30
|
-
if (range.isSingleHeader()) {
|
31
|
-
return true;
|
32
|
-
}
|
33
26
|
return !(this.getSelectedRange() && !this.selection.isSelectedByCorner());
|
34
27
|
},
|
35
28
|
submenu: {
|
@@ -16,13 +16,6 @@ export default function alignmentItem() {
|
|
16
16
|
if (this.countRows() === 0 || this.countCols() === 0) {
|
17
17
|
return true;
|
18
18
|
}
|
19
|
-
const range = this.getSelectedRangeLast();
|
20
|
-
if (!range) {
|
21
|
-
return true;
|
22
|
-
}
|
23
|
-
if (range.isSingleHeader()) {
|
24
|
-
return true;
|
25
|
-
}
|
26
19
|
return !(this.getSelectedRange() && !this.selection.isSelectedByCorner());
|
27
20
|
},
|
28
21
|
submenu: {
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
exports.default = clearColumnItem;
|
5
|
+
var _utils = require("../utils");
|
5
6
|
var C = _interopRequireWildcard(require("../../../i18n/constants"));
|
6
7
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
7
8
|
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; }
|
@@ -25,11 +26,8 @@ function clearColumnItem() {
|
|
25
26
|
}
|
26
27
|
},
|
27
28
|
disabled() {
|
28
|
-
const
|
29
|
-
if (!
|
30
|
-
return true;
|
31
|
-
}
|
32
|
-
if (range.isSingleHeader() && range.highlight.col < 0) {
|
29
|
+
const selected = (0, _utils.getValidSelection)(this);
|
30
|
+
if (!selected) {
|
33
31
|
return true;
|
34
32
|
}
|
35
33
|
return !this.selection.isSelectedByColumnHeader();
|