handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-20231025
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/{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
@@ -2,20 +2,19 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.array.push.js");
|
5
|
-
var
|
6
|
-
var
|
7
|
-
var _predefinedItems = require("./../predefinedItems");
|
5
|
+
var _cursor = _interopRequireDefault(require("./cursor"));
|
6
|
+
var _predefinedItems = require("./predefinedItems");
|
8
7
|
var _utils = require("./utils");
|
9
|
-
var
|
10
|
-
var
|
11
|
-
var
|
12
|
-
var
|
13
|
-
var
|
14
|
-
var
|
15
|
-
var
|
16
|
-
var
|
17
|
-
var
|
18
|
-
var
|
8
|
+
var _core = _interopRequireDefault(require("../../core"));
|
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"));
|
19
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
20
19
|
const MIN_WIDTH = 215;
|
21
20
|
const SHORTCUTS_CONTEXT = 'menu';
|
@@ -54,13 +53,18 @@ class Menu {
|
|
54
53
|
};
|
55
54
|
this.eventManager = new _eventManager.default(this);
|
56
55
|
this.container = this.createContainer(this.options.name);
|
57
|
-
this.positioner = new _positioner.Positioner(this.options.keepInViewport);
|
58
|
-
this.navigator = new _navigator.Navigator();
|
59
56
|
this.hotMenu = null;
|
60
57
|
this.hotSubMenus = {};
|
61
58
|
this.parentMenu = this.options.parent || null;
|
62
59
|
this.menuItems = null;
|
63
60
|
this.origOutsideClickDeselects = null;
|
61
|
+
this.keyEvent = false;
|
62
|
+
this.offset = {
|
63
|
+
above: 0,
|
64
|
+
below: 0,
|
65
|
+
left: 0,
|
66
|
+
right: 0
|
67
|
+
};
|
64
68
|
this._afterScrollCallback = null;
|
65
69
|
this.registerEvents();
|
66
70
|
}
|
@@ -106,6 +110,17 @@ class Menu {
|
|
106
110
|
return Array.isArray(this.hotMenu.getSelectedLast());
|
107
111
|
}
|
108
112
|
|
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
|
+
|
109
124
|
/**
|
110
125
|
* Check if menu is using as sub-menu.
|
111
126
|
*
|
@@ -122,6 +137,7 @@ class Menu {
|
|
122
137
|
* @fires Hooks#afterContextMenuShow
|
123
138
|
*/
|
124
139
|
open() {
|
140
|
+
var _this = this;
|
125
141
|
this.runLocalHooks('beforeOpen');
|
126
142
|
this.container.removeAttribute('style');
|
127
143
|
this.container.style.display = 'block';
|
@@ -166,7 +182,6 @@ class Menu {
|
|
166
182
|
outsideClickDeselects: false,
|
167
183
|
disableVisualSelection: 'area',
|
168
184
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
|
169
|
-
ariaTags: false,
|
170
185
|
afterOnCellMouseOver: (event, coords) => {
|
171
186
|
if (this.isAllSubMenusClosed()) {
|
172
187
|
delayedOpenSubMenu(coords.row);
|
@@ -184,12 +199,6 @@ class Menu {
|
|
184
199
|
this.close(true);
|
185
200
|
}
|
186
201
|
},
|
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
|
-
},
|
193
202
|
beforeOnCellMouseUp: event => {
|
194
203
|
if (this.hasSelectedItem()) {
|
195
204
|
shouldAutoCloseMenu = !this.isCommandPassive(this.getSelectedItem());
|
@@ -207,7 +216,7 @@ class Menu {
|
|
207
216
|
// event hides the tapped element, the click event grabs the element below. As a result, the filter
|
208
217
|
// by condition menu is closed and immediately open on tapping the "None" item.
|
209
218
|
if ((0, _browser.isMobileBrowser)() || (0, _browser.isIpadOS)()) {
|
210
|
-
|
219
|
+
setTimeout(() => this.close(true), 325);
|
211
220
|
} else {
|
212
221
|
this.close(true);
|
213
222
|
}
|
@@ -223,11 +232,13 @@ class Menu {
|
|
223
232
|
};
|
224
233
|
this.origOutsideClickDeselects = this.hot.getSettings().outsideClickDeselects;
|
225
234
|
this.hot.getSettings().outsideClickDeselects = false;
|
226
|
-
this.hotMenu = new
|
235
|
+
this.hotMenu = new _core.default(this.container, settings);
|
227
236
|
this.hotMenu.addHook('afterInit', () => this.onAfterInit());
|
237
|
+
this.hotMenu.addHook('afterSelection', function () {
|
238
|
+
return _this.onAfterSelection(...arguments);
|
239
|
+
});
|
228
240
|
this.hotMenu.init();
|
229
241
|
this.hotMenu.listen();
|
230
|
-
this.navigator.setMenu(this.hotMenu);
|
231
242
|
const shortcutManager = this.hotMenu.getShortcutManager();
|
232
243
|
const menuContext = shortcutManager.addContext(SHORTCUTS_GROUP);
|
233
244
|
const config = {
|
@@ -235,84 +246,105 @@ class Menu {
|
|
235
246
|
};
|
236
247
|
const menuContextConfig = {
|
237
248
|
...config,
|
238
|
-
runOnlyIf: event =>
|
249
|
+
runOnlyIf: event => (0, _element.isInput)(event.target) === false || this.container.contains(event.target) === false
|
239
250
|
};
|
240
251
|
|
241
252
|
// Default shortcuts for Handsontable should not be handled. Changing context will help with that.
|
242
253
|
shortcutManager.setActiveContextName('menu');
|
243
254
|
menuContext.addShortcuts([{
|
244
|
-
keys: [['Tab'], ['Shift', 'Tab'], ['Control/Meta', 'A']],
|
245
|
-
forwardToContext: this.hot.getShortcutManager().getContext('grid'),
|
246
|
-
callback: () => this.close(true)
|
247
|
-
}, {
|
248
255
|
keys: [['Escape']],
|
249
|
-
callback: () =>
|
256
|
+
callback: () => {
|
257
|
+
this.keyEvent = true;
|
258
|
+
this.close();
|
259
|
+
this.keyEvent = false;
|
260
|
+
}
|
250
261
|
}, {
|
251
262
|
keys: [['ArrowDown']],
|
252
|
-
callback: () =>
|
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
|
+
}
|
253
273
|
}, {
|
254
274
|
keys: [['ArrowUp']],
|
255
|
-
callback: () =>
|
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
|
+
}
|
256
285
|
}, {
|
257
286
|
keys: [['ArrowRight']],
|
258
287
|
callback: () => {
|
259
288
|
const selection = this.hotMenu.getSelectedLast();
|
289
|
+
this.keyEvent = true;
|
260
290
|
if (selection) {
|
261
|
-
const
|
262
|
-
if (
|
263
|
-
|
291
|
+
const menu = this.openSubMenu(selection[0]);
|
292
|
+
if (menu) {
|
293
|
+
menu.selectFirstCell();
|
264
294
|
}
|
265
295
|
}
|
296
|
+
this.keyEvent = false;
|
266
297
|
}
|
267
298
|
}, {
|
268
299
|
keys: [['ArrowLeft']],
|
269
300
|
callback: () => {
|
270
301
|
const selection = this.hotMenu.getSelectedLast();
|
302
|
+
this.keyEvent = true;
|
271
303
|
if (selection && this.isSubMenu()) {
|
272
304
|
this.close();
|
273
|
-
if (this.
|
305
|
+
if (this.parentMenu) {
|
274
306
|
this.parentMenu.hotMenu.listen();
|
275
307
|
}
|
276
308
|
}
|
309
|
+
this.keyEvent = false;
|
277
310
|
}
|
278
311
|
}, {
|
279
|
-
keys: [['
|
280
|
-
callback: () => this.navigator.selectFirst()
|
281
|
-
}, {
|
282
|
-
keys: [['Control/Meta', 'ArrowDown'], ['End']],
|
283
|
-
callback: () => this.navigator.selectLast()
|
284
|
-
}, {
|
285
|
-
keys: [['Enter'], ['Space']],
|
312
|
+
keys: [['Enter']],
|
286
313
|
callback: event => {
|
287
314
|
const selection = this.hotMenu.getSelectedLast();
|
288
|
-
|
289
|
-
|
290
|
-
} else {
|
315
|
+
this.keyEvent = true;
|
316
|
+
if (!this.hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
291
317
|
this.executeCommand(event);
|
292
318
|
this.close(true);
|
293
319
|
}
|
320
|
+
this.keyEvent = false;
|
294
321
|
}
|
295
322
|
}, {
|
296
323
|
keys: [['PageUp']],
|
297
324
|
callback: () => {
|
298
325
|
const selection = this.hotMenu.getSelectedLast();
|
326
|
+
this.keyEvent = true;
|
299
327
|
if (selection) {
|
300
328
|
this.hotMenu.selection.transformStart(-this.hotMenu.countVisibleRows(), 0);
|
301
329
|
} else {
|
302
|
-
this.
|
330
|
+
this.selectFirstCell();
|
303
331
|
}
|
332
|
+
this.keyEvent = false;
|
304
333
|
}
|
305
334
|
}, {
|
306
335
|
keys: [['PageDown']],
|
307
336
|
callback: () => {
|
308
337
|
const selection = this.hotMenu.getSelectedLast();
|
338
|
+
this.keyEvent = true;
|
309
339
|
if (selection) {
|
310
340
|
this.hotMenu.selection.transformStart(this.hotMenu.countVisibleRows(), 0);
|
311
341
|
} else {
|
312
|
-
this.
|
342
|
+
this.selectLastCell();
|
313
343
|
}
|
344
|
+
this.keyEvent = false;
|
314
345
|
}
|
315
346
|
}], menuContextConfig);
|
347
|
+
this.blockMainTableCallbacks();
|
316
348
|
this.runLocalHooks('afterOpen');
|
317
349
|
}
|
318
350
|
|
@@ -326,24 +358,17 @@ class Menu {
|
|
326
358
|
if (!this.isOpened()) {
|
327
359
|
return;
|
328
360
|
}
|
329
|
-
if (closeParent && this.
|
361
|
+
if (closeParent && this.parentMenu) {
|
330
362
|
this.parentMenu.close();
|
331
363
|
} else {
|
332
|
-
this.navigator.clear();
|
333
364
|
this.closeAllSubMenus();
|
334
365
|
this.container.style.display = 'none';
|
366
|
+
this.releaseMainTableCallbacks();
|
335
367
|
this.hotMenu.destroy();
|
336
368
|
this.hotMenu = null;
|
337
369
|
this.hot.getSettings().outsideClickDeselects = this.origOutsideClickDeselects;
|
338
370
|
this.runLocalHooks('afterClose');
|
339
|
-
if (this.
|
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
|
-
}
|
371
|
+
if (this.parentMenu) {
|
347
372
|
this.parentMenu.hotMenu.listen();
|
348
373
|
}
|
349
374
|
}
|
@@ -376,11 +401,6 @@ class Menu {
|
|
376
401
|
subMenu.open();
|
377
402
|
subMenu.setPosition(cell.getBoundingClientRect());
|
378
403
|
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
|
-
}
|
384
404
|
return subMenu;
|
385
405
|
}
|
386
406
|
|
@@ -395,12 +415,6 @@ class Menu {
|
|
395
415
|
if (menus) {
|
396
416
|
menus.destroy();
|
397
417
|
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
|
-
}
|
404
418
|
}
|
405
419
|
}
|
406
420
|
|
@@ -479,30 +493,196 @@ class Menu {
|
|
479
493
|
* @returns {boolean}
|
480
494
|
*/
|
481
495
|
isCommandPassive(commandDescriptor) {
|
482
|
-
|
496
|
+
const {
|
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;
|
483
504
|
}
|
484
505
|
|
485
506
|
/**
|
486
|
-
* Set
|
507
|
+
* Set menu position based on dom event or based on literal object.
|
487
508
|
*
|
488
|
-
* @param {
|
489
|
-
* @param {number} offset Offset value.
|
509
|
+
* @param {Event|object} coords Event or literal Object with coordinates.
|
490
510
|
*/
|
491
|
-
|
492
|
-
|
493
|
-
this.
|
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
|
+
}
|
494
530
|
}
|
495
531
|
|
496
532
|
/**
|
497
|
-
* Set menu position
|
533
|
+
* Set menu horizontal position for RTL mode.
|
498
534
|
*
|
499
|
-
* @param {
|
535
|
+
* @param {Cursor} cursor `Cursor` object.
|
500
536
|
*/
|
501
|
-
|
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`;
|
582
|
+
}
|
583
|
+
|
584
|
+
/**
|
585
|
+
* Set menu position on the right of cursor object.
|
586
|
+
*
|
587
|
+
* @param {Cursor} cursor `Cursor` object.
|
588
|
+
*/
|
589
|
+
setPositionOnRightOfCursor(cursor) {
|
590
|
+
let left = cursor.left;
|
591
|
+
if (this.isSubMenu()) {
|
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`;
|
602
|
+
}
|
603
|
+
|
604
|
+
/**
|
605
|
+
* Set menu position on the left of cursor object.
|
606
|
+
*
|
607
|
+
* @param {Cursor} cursor `Cursor` object.
|
608
|
+
*/
|
609
|
+
setPositionOnLeftOfCursor(cursor) {
|
610
|
+
let left = this.offset.left + cursor.left - this.container.offsetWidth;
|
502
611
|
if (this.isSubMenu()) {
|
503
|
-
|
612
|
+
const {
|
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);
|
504
685
|
}
|
505
|
-
this.positioner.setElement(this.container).updatePosition(coords);
|
506
686
|
}
|
507
687
|
|
508
688
|
/**
|
@@ -519,17 +699,18 @@ class Menu {
|
|
519
699
|
menuItemRenderer(hot, TD, row, col, prop, value) {
|
520
700
|
const item = hot.getSourceDataAtRow(row);
|
521
701
|
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;
|
522
706
|
let itemValue = value;
|
523
707
|
if (typeof itemValue === 'function') {
|
524
708
|
itemValue = itemValue.call(this.hot);
|
525
709
|
}
|
526
710
|
(0, _element.empty)(TD);
|
527
711
|
(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
|
-
}
|
531
712
|
TD.appendChild(wrapper);
|
532
|
-
if ((
|
713
|
+
if (itemIsSeparator(item)) {
|
533
714
|
(0, _element.addClass)(TD, 'htSeparator');
|
534
715
|
} else if (typeof item.renderer === 'function') {
|
535
716
|
(0, _element.addClass)(TD, 'htCustomMenuRenderer');
|
@@ -537,22 +718,22 @@ class Menu {
|
|
537
718
|
} else {
|
538
719
|
(0, _element.fastInnerHTML)(wrapper, itemValue);
|
539
720
|
}
|
540
|
-
if ((
|
721
|
+
if (itemIsDisabled(item)) {
|
541
722
|
(0, _element.addClass)(TD, 'htDisabled');
|
542
723
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
543
|
-
} else if ((
|
724
|
+
} else if (itemIsSelectionDisabled(item)) {
|
544
725
|
(0, _element.addClass)(TD, 'htSelectionDisabled');
|
545
726
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
546
|
-
} else if ((
|
727
|
+
} else if (isSubMenu(item)) {
|
547
728
|
(0, _element.addClass)(TD, 'htSubmenu');
|
548
|
-
if ((
|
729
|
+
if (itemIsSelectionDisabled(item)) {
|
549
730
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
550
731
|
} else {
|
551
732
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
552
733
|
}
|
553
734
|
} else {
|
554
735
|
(0, _element.removeClass)(TD, ['htSubmenu', 'htDisabled']);
|
555
|
-
if ((
|
736
|
+
if (itemIsSelectionDisabled(item)) {
|
556
737
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
557
738
|
} else {
|
558
739
|
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
@@ -596,6 +777,26 @@ class Menu {
|
|
596
777
|
return container;
|
597
778
|
}
|
598
779
|
|
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
|
+
|
599
800
|
/**
|
600
801
|
* On after init listener.
|
601
802
|
*
|
@@ -615,10 +816,20 @@ class Menu {
|
|
615
816
|
holderStyle.width = `${currentHiderWidth + 3}px`;
|
616
817
|
holderStyle.height = `${realHeight + 3}px`;
|
617
818
|
hiderStyle.height = holderStyle.height;
|
819
|
+
}
|
618
820
|
|
619
|
-
|
620
|
-
|
621
|
-
|
821
|
+
/**
|
822
|
+
* On after selection listener.
|
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;
|
622
833
|
}
|
623
834
|
}
|
624
835
|
|
@@ -658,5 +869,6 @@ class Menu {
|
|
658
869
|
}
|
659
870
|
}
|
660
871
|
}
|
661
|
-
|
662
|
-
|
872
|
+
(0, _object.mixin)(Menu, _localHooks.default);
|
873
|
+
var _default = Menu;
|
874
|
+
exports.default = _default;
|