handsontable 0.0.0-next-b0a4ea2-20231024 → 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 +15 -51
- package/dist/handsontable.full.css +15 -51
- package/dist/handsontable.full.js +8668 -14188
- package/dist/handsontable.full.min.css +7 -7
- package/dist/handsontable.full.min.js +136 -136
- package/dist/handsontable.js +22829 -28349
- package/dist/handsontable.min.css +6 -6
- package/dist/handsontable.min.js +24 -24
- 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} +421 -145
- package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +422 -146
- 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 +40 -127
- package/plugins/dropdownMenu/dropdownMenu.mjs +39 -126
- package/plugins/filters/component/_base.js +8 -23
- package/plugins/filters/component/_base.mjs +8 -23
- package/plugins/filters/component/actionBar.js +27 -29
- package/plugins/filters/component/actionBar.mjs +23 -26
- package/plugins/filters/component/condition.js +59 -46
- package/plugins/filters/component/condition.mjs +52 -40
- package/plugins/filters/component/operators.js +22 -21
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +26 -35
- package/plugins/filters/component/value.mjs +22 -32
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +62 -106
- package/plugins/filters/filters.mjs +55 -99
- package/plugins/filters/ui/_base.js +13 -35
- package/plugins/filters/ui/_base.mjs +13 -35
- package/plugins/filters/ui/input.js +32 -43
- package/plugins/filters/ui/input.mjs +30 -42
- package/plugins/filters/ui/link.js +12 -44
- package/plugins/filters/ui/link.mjs +11 -44
- package/plugins/filters/ui/multipleSelect.js +129 -234
- package/plugins/filters/ui/multipleSelect.mjs +127 -232
- package/plugins/filters/ui/radioInput.js +18 -42
- package/plugins/filters/ui/radioInput.mjs +17 -42
- package/plugins/filters/ui/select.js +75 -144
- package/plugins/filters/ui/select.mjs +72 -142
- 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 +4 -23
- package/shortcuts/context.mjs +5 -23
- 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/defaultShortcutsList.js +0 -88
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +0 -84
- package/plugins/contextMenu/menu/index.js +0 -9
- package/plugins/contextMenu/menu/index.mjs +0 -1
- package/plugins/contextMenu/menu/menuItemRenderer.js +0 -58
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +0 -54
- package/plugins/contextMenu/menu/navigator.js +0 -27
- package/plugins/contextMenu/menu/navigator.mjs +0 -23
- package/plugins/contextMenu/menu/positioner.js +0 -213
- package/plugins/contextMenu/menu/positioner.mjs +0 -209
- package/plugins/contextMenu/menu/shortcuts.js +0 -114
- package/plugins/contextMenu/menu/shortcuts.mjs +0 -110
- 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/plugins/filters/menu/focusController.js +0 -123
- package/plugins/filters/menu/focusController.mjs +0 -119
- package/plugins/filters/menu/focusNavigator.js +0 -30
- package/plugins/filters/menu/focusNavigator.mjs +0 -26
- 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
- package/utils/paginator.js +0 -151
- package/utils/paginator.mjs +0 -147
@@ -1,33 +1,24 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
require("core-js/modules/es.error.cause.js");
|
4
3
|
exports.__esModule = true;
|
5
4
|
require("core-js/modules/es.array.push.js");
|
6
|
-
var
|
7
|
-
var
|
8
|
-
var _shortcuts = require("./shortcuts");
|
9
|
-
var _predefinedItems = require("./../predefinedItems");
|
5
|
+
var _cursor = _interopRequireDefault(require("./cursor"));
|
6
|
+
var _predefinedItems = require("./predefinedItems");
|
10
7
|
var _utils = require("./utils");
|
11
|
-
var
|
12
|
-
var
|
13
|
-
var
|
14
|
-
var
|
15
|
-
var
|
16
|
-
var
|
17
|
-
var
|
18
|
-
var
|
19
|
-
var
|
20
|
-
var
|
21
|
-
var _a11y = require("../../../helpers/a11y");
|
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"));
|
22
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
23
|
-
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
24
|
-
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
25
|
-
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
26
|
-
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
27
|
-
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
28
|
-
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
29
|
-
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
30
19
|
const MIN_WIDTH = 215;
|
20
|
+
const SHORTCUTS_CONTEXT = 'menu';
|
21
|
+
const SHORTCUTS_GROUP = SHORTCUTS_CONTEXT;
|
31
22
|
|
32
23
|
/**
|
33
24
|
* @typedef MenuOptions
|
@@ -44,33 +35,12 @@ const MIN_WIDTH = 215;
|
|
44
35
|
* @private
|
45
36
|
* @class Menu
|
46
37
|
*/
|
47
|
-
var _navigator = /*#__PURE__*/new WeakMap();
|
48
|
-
var _shortcutsCtrl = /*#__PURE__*/new WeakMap();
|
49
38
|
class Menu {
|
50
39
|
/**
|
51
40
|
* @param {Core} hotInstance Handsontable instance.
|
52
41
|
* @param {MenuOptions} [options] Menu options.
|
53
42
|
*/
|
54
43
|
constructor(hotInstance, options) {
|
55
|
-
var _this = this;
|
56
|
-
/**
|
57
|
-
* The controller module that allows modifying the menu item selection positions.
|
58
|
-
*
|
59
|
-
* @type {Paginator}
|
60
|
-
*/
|
61
|
-
_classPrivateFieldInitSpec(this, _navigator, {
|
62
|
-
writable: true,
|
63
|
-
value: void 0
|
64
|
-
});
|
65
|
-
/**
|
66
|
-
* The controller module that allows extending the keyboard shortcuts for the menu.
|
67
|
-
*
|
68
|
-
* @type {KeyboardShortcutsMenuController}
|
69
|
-
*/
|
70
|
-
_classPrivateFieldInitSpec(this, _shortcutsCtrl, {
|
71
|
-
writable: true,
|
72
|
-
value: void 0
|
73
|
-
});
|
74
44
|
this.hot = hotInstance;
|
75
45
|
this.options = options || {
|
76
46
|
parent: null,
|
@@ -83,21 +53,20 @@ class Menu {
|
|
83
53
|
};
|
84
54
|
this.eventManager = new _eventManager.default(this);
|
85
55
|
this.container = this.createContainer(this.options.name);
|
86
|
-
this.positioner = new _positioner.Positioner(this.options.keepInViewport);
|
87
56
|
this.hotMenu = null;
|
88
57
|
this.hotSubMenus = {};
|
89
58
|
this.parentMenu = this.options.parent || null;
|
90
59
|
this.menuItems = null;
|
91
60
|
this.origOutsideClickDeselects = null;
|
61
|
+
this.keyEvent = false;
|
62
|
+
this.offset = {
|
63
|
+
above: 0,
|
64
|
+
below: 0,
|
65
|
+
left: 0,
|
66
|
+
right: 0
|
67
|
+
};
|
68
|
+
this._afterScrollCallback = null;
|
92
69
|
this.registerEvents();
|
93
|
-
if (this.isSubMenu()) {
|
94
|
-
this.addLocalHook('afterSelectionChange', function () {
|
95
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
96
|
-
args[_key] = arguments[_key];
|
97
|
-
}
|
98
|
-
return _this.parentMenu.runLocalHooks('afterSelectionChange', ...args);
|
99
|
-
});
|
100
|
-
}
|
101
70
|
}
|
102
71
|
|
103
72
|
/**
|
@@ -123,24 +92,6 @@ class Menu {
|
|
123
92
|
this.menuItems = menuItems;
|
124
93
|
}
|
125
94
|
|
126
|
-
/**
|
127
|
-
* Gets the controller object that allows modifying the the menu item selection.
|
128
|
-
*
|
129
|
-
* @returns {Paginator | undefined}
|
130
|
-
*/
|
131
|
-
getNavigator() {
|
132
|
-
return _classPrivateFieldGet(this, _navigator);
|
133
|
-
}
|
134
|
-
|
135
|
-
/**
|
136
|
-
* Gets the controller object that allows extending the keyboard shortcuts of the menu.
|
137
|
-
*
|
138
|
-
* @returns {KeyboardShortcutsMenuController | undefined}
|
139
|
-
*/
|
140
|
-
getKeyboardShortcutsCtrl() {
|
141
|
-
return _classPrivateFieldGet(this, _shortcutsCtrl);
|
142
|
-
}
|
143
|
-
|
144
95
|
/**
|
145
96
|
* Returns currently selected menu item. Returns `null` if no item was selected.
|
146
97
|
*
|
@@ -159,6 +110,17 @@ class Menu {
|
|
159
110
|
return Array.isArray(this.hotMenu.getSelectedLast());
|
160
111
|
}
|
161
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
|
+
|
162
124
|
/**
|
163
125
|
* Check if menu is using as sub-menu.
|
164
126
|
*
|
@@ -175,6 +137,7 @@ class Menu {
|
|
175
137
|
* @fires Hooks#afterContextMenuShow
|
176
138
|
*/
|
177
139
|
open() {
|
140
|
+
var _this = this;
|
178
141
|
this.runLocalHooks('beforeOpen');
|
179
142
|
this.container.removeAttribute('style');
|
180
143
|
this.container.style.display = 'block';
|
@@ -209,21 +172,16 @@ class Menu {
|
|
209
172
|
readOnly: true,
|
210
173
|
editor: false,
|
211
174
|
copyPaste: false,
|
212
|
-
hiddenRows: true,
|
213
175
|
maxCols: 1,
|
214
176
|
columns: [{
|
215
177
|
data: 'name',
|
216
|
-
renderer: (
|
178
|
+
renderer: (hot, TD, row, col, prop, value) => this.menuItemRenderer(hot, TD, row, col, prop, value)
|
217
179
|
}],
|
218
180
|
renderAllRows: true,
|
219
181
|
fragmentSelection: false,
|
220
182
|
outsideClickDeselects: false,
|
221
183
|
disableVisualSelection: 'area',
|
222
184
|
layoutDirection: this.hot.isRtl() ? 'rtl' : 'ltr',
|
223
|
-
ariaTags: false,
|
224
|
-
beforeOnCellMouseOver: (event, coords) => {
|
225
|
-
_classPrivateFieldGet(this, _navigator).setCurrentPage(coords.row);
|
226
|
-
},
|
227
185
|
afterOnCellMouseOver: (event, coords) => {
|
228
186
|
if (this.isAllSubMenusClosed()) {
|
229
187
|
delayedOpenSubMenu(coords.row);
|
@@ -241,13 +199,6 @@ class Menu {
|
|
241
199
|
this.close(true);
|
242
200
|
}
|
243
201
|
},
|
244
|
-
afterSelection: (row, column, row2, column2, preventScrolling) => {
|
245
|
-
// do not scroll the viewport when mouse clicks on partially visible menu item
|
246
|
-
if (this.hotMenu.view.isMouseDown()) {
|
247
|
-
preventScrolling.value = true;
|
248
|
-
}
|
249
|
-
this.runLocalHooks('afterSelectionChange', this.getSelectedItem());
|
250
|
-
},
|
251
202
|
beforeOnCellMouseUp: event => {
|
252
203
|
if (this.hasSelectedItem()) {
|
253
204
|
shouldAutoCloseMenu = !this.isCommandPassive(this.getSelectedItem());
|
@@ -265,7 +216,7 @@ class Menu {
|
|
265
216
|
// event hides the tapped element, the click event grabs the element below. As a result, the filter
|
266
217
|
// by condition menu is closed and immediately open on tapping the "None" item.
|
267
218
|
if ((0, _browser.isMobileBrowser)() || (0, _browser.isIpadOS)()) {
|
268
|
-
|
219
|
+
setTimeout(() => this.close(true), 325);
|
269
220
|
} else {
|
270
221
|
this.close(true);
|
271
222
|
}
|
@@ -281,17 +232,120 @@ class Menu {
|
|
281
232
|
};
|
282
233
|
this.origOutsideClickDeselects = this.hot.getSettings().outsideClickDeselects;
|
283
234
|
this.hot.getSettings().outsideClickDeselects = false;
|
284
|
-
this.hotMenu = new
|
235
|
+
this.hotMenu = new _core.default(this.container, settings);
|
285
236
|
this.hotMenu.addHook('afterInit', () => this.onAfterInit());
|
237
|
+
this.hotMenu.addHook('afterSelection', function () {
|
238
|
+
return _this.onAfterSelection(...arguments);
|
239
|
+
});
|
286
240
|
this.hotMenu.init();
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
241
|
+
this.hotMenu.listen();
|
242
|
+
const shortcutManager = this.hotMenu.getShortcutManager();
|
243
|
+
const menuContext = shortcutManager.addContext(SHORTCUTS_GROUP);
|
244
|
+
const config = {
|
245
|
+
group: SHORTCUTS_CONTEXT
|
246
|
+
};
|
247
|
+
const menuContextConfig = {
|
248
|
+
...config,
|
249
|
+
runOnlyIf: event => (0, _element.isInput)(event.target) === false || this.container.contains(event.target) === false
|
250
|
+
};
|
251
|
+
|
252
|
+
// Default shortcuts for Handsontable should not be handled. Changing context will help with that.
|
253
|
+
shortcutManager.setActiveContextName('menu');
|
254
|
+
menuContext.addShortcuts([{
|
255
|
+
keys: [['Escape']],
|
256
|
+
callback: () => {
|
257
|
+
this.keyEvent = true;
|
258
|
+
this.close();
|
259
|
+
this.keyEvent = false;
|
260
|
+
}
|
261
|
+
}, {
|
262
|
+
keys: [['ArrowDown']],
|
263
|
+
callback: () => {
|
264
|
+
const selection = this.hotMenu.getSelectedLast();
|
265
|
+
this.keyEvent = true;
|
266
|
+
if (selection) {
|
267
|
+
this.selectNextCell(selection[0], selection[1]);
|
268
|
+
} else {
|
269
|
+
this.selectFirstCell();
|
270
|
+
}
|
271
|
+
this.keyEvent = false;
|
272
|
+
}
|
273
|
+
}, {
|
274
|
+
keys: [['ArrowUp']],
|
275
|
+
callback: () => {
|
276
|
+
const selection = this.hotMenu.getSelectedLast();
|
277
|
+
this.keyEvent = true;
|
278
|
+
if (selection) {
|
279
|
+
this.selectPrevCell(selection[0], selection[1]);
|
280
|
+
} else {
|
281
|
+
this.selectLastCell();
|
282
|
+
}
|
283
|
+
this.keyEvent = false;
|
284
|
+
}
|
285
|
+
}, {
|
286
|
+
keys: [['ArrowRight']],
|
287
|
+
callback: () => {
|
288
|
+
const selection = this.hotMenu.getSelectedLast();
|
289
|
+
this.keyEvent = true;
|
290
|
+
if (selection) {
|
291
|
+
const menu = this.openSubMenu(selection[0]);
|
292
|
+
if (menu) {
|
293
|
+
menu.selectFirstCell();
|
294
|
+
}
|
295
|
+
}
|
296
|
+
this.keyEvent = false;
|
297
|
+
}
|
298
|
+
}, {
|
299
|
+
keys: [['ArrowLeft']],
|
300
|
+
callback: () => {
|
301
|
+
const selection = this.hotMenu.getSelectedLast();
|
302
|
+
this.keyEvent = true;
|
303
|
+
if (selection && this.isSubMenu()) {
|
304
|
+
this.close();
|
305
|
+
if (this.parentMenu) {
|
306
|
+
this.parentMenu.hotMenu.listen();
|
307
|
+
}
|
308
|
+
}
|
309
|
+
this.keyEvent = false;
|
310
|
+
}
|
311
|
+
}, {
|
312
|
+
keys: [['Enter']],
|
313
|
+
callback: event => {
|
314
|
+
const selection = this.hotMenu.getSelectedLast();
|
315
|
+
this.keyEvent = true;
|
316
|
+
if (!this.hotMenu.getSourceDataAtRow(selection[0]).submenu) {
|
317
|
+
this.executeCommand(event);
|
318
|
+
this.close(true);
|
319
|
+
}
|
320
|
+
this.keyEvent = false;
|
321
|
+
}
|
322
|
+
}, {
|
323
|
+
keys: [['PageUp']],
|
324
|
+
callback: () => {
|
325
|
+
const selection = this.hotMenu.getSelectedLast();
|
326
|
+
this.keyEvent = true;
|
327
|
+
if (selection) {
|
328
|
+
this.hotMenu.selection.transformStart(-this.hotMenu.countVisibleRows(), 0);
|
329
|
+
} else {
|
330
|
+
this.selectFirstCell();
|
331
|
+
}
|
332
|
+
this.keyEvent = false;
|
333
|
+
}
|
334
|
+
}, {
|
335
|
+
keys: [['PageDown']],
|
336
|
+
callback: () => {
|
337
|
+
const selection = this.hotMenu.getSelectedLast();
|
338
|
+
this.keyEvent = true;
|
339
|
+
if (selection) {
|
340
|
+
this.hotMenu.selection.transformStart(this.hotMenu.countVisibleRows(), 0);
|
341
|
+
} else {
|
342
|
+
this.selectLastCell();
|
343
|
+
}
|
344
|
+
this.keyEvent = false;
|
345
|
+
}
|
346
|
+
}], menuContextConfig);
|
347
|
+
this.blockMainTableCallbacks();
|
348
|
+
this.runLocalHooks('afterOpen');
|
295
349
|
}
|
296
350
|
|
297
351
|
/**
|
@@ -304,24 +358,17 @@ class Menu {
|
|
304
358
|
if (!this.isOpened()) {
|
305
359
|
return;
|
306
360
|
}
|
307
|
-
if (closeParent && this.
|
361
|
+
if (closeParent && this.parentMenu) {
|
308
362
|
this.parentMenu.close();
|
309
363
|
} else {
|
310
|
-
_classPrivateFieldGet(this, _navigator).clear();
|
311
364
|
this.closeAllSubMenus();
|
312
365
|
this.container.style.display = 'none';
|
366
|
+
this.releaseMainTableCallbacks();
|
313
367
|
this.hotMenu.destroy();
|
314
368
|
this.hotMenu = null;
|
315
369
|
this.hot.getSettings().outsideClickDeselects = this.origOutsideClickDeselects;
|
316
370
|
this.runLocalHooks('afterClose');
|
317
|
-
if (this.
|
318
|
-
if (this.hot.getSettings().ariaTags) {
|
319
|
-
const selection = this.parentMenu.hotMenu.getSelectedLast();
|
320
|
-
if (selection) {
|
321
|
-
const cell = this.parentMenu.hotMenu.getCell(selection[0], 0);
|
322
|
-
(0, _element.setAttribute)(cell, [(0, _a11y.A11Y_EXPANDED)(false)]);
|
323
|
-
}
|
324
|
-
}
|
371
|
+
if (this.parentMenu) {
|
325
372
|
this.parentMenu.hotMenu.listen();
|
326
373
|
}
|
327
374
|
}
|
@@ -354,11 +401,6 @@ class Menu {
|
|
354
401
|
subMenu.open();
|
355
402
|
subMenu.setPosition(cell.getBoundingClientRect());
|
356
403
|
this.hotSubMenus[dataItem.key] = subMenu;
|
357
|
-
|
358
|
-
// Update the accessibility tags on the cell being the base for the submenu.
|
359
|
-
if (this.hot.getSettings().ariaTags) {
|
360
|
-
(0, _element.setAttribute)(cell, [(0, _a11y.A11Y_EXPANDED)(true)]);
|
361
|
-
}
|
362
404
|
return subMenu;
|
363
405
|
}
|
364
406
|
|
@@ -373,12 +415,6 @@ class Menu {
|
|
373
415
|
if (menus) {
|
374
416
|
menus.destroy();
|
375
417
|
delete this.hotSubMenus[dataItem.key];
|
376
|
-
const cell = this.hotMenu.getCell(row, 0);
|
377
|
-
|
378
|
-
// Update the accessibility tags on the cell being the base for the submenu.
|
379
|
-
if (this.hot.getSettings().ariaTags) {
|
380
|
-
(0, _element.setAttribute)(cell, [(0, _a11y.A11Y_EXPANDED)(false)]);
|
381
|
-
}
|
382
418
|
}
|
383
419
|
}
|
384
420
|
|
@@ -398,19 +434,6 @@ class Menu {
|
|
398
434
|
return Object.keys(this.hotSubMenus).length === 0;
|
399
435
|
}
|
400
436
|
|
401
|
-
/**
|
402
|
-
* Focus the menu so all keyboard shortcuts become active.
|
403
|
-
*/
|
404
|
-
focus() {
|
405
|
-
if (this.isOpened()) {
|
406
|
-
this.hotMenu.rootElement.focus({
|
407
|
-
preventScroll: true
|
408
|
-
});
|
409
|
-
this.getKeyboardShortcutsCtrl().listen();
|
410
|
-
this.hotMenu.listen();
|
411
|
-
}
|
412
|
-
}
|
413
|
-
|
414
437
|
/**
|
415
438
|
* Destroy instance.
|
416
439
|
*/
|
@@ -470,30 +493,252 @@ class Menu {
|
|
470
493
|
* @returns {boolean}
|
471
494
|
*/
|
472
495
|
isCommandPassive(commandDescriptor) {
|
473
|
-
|
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;
|
474
504
|
}
|
475
505
|
|
476
506
|
/**
|
477
|
-
* Set
|
507
|
+
* Set menu position based on dom event or based on literal object.
|
478
508
|
*
|
479
|
-
* @param {
|
480
|
-
* @param {number} offset Offset value.
|
509
|
+
* @param {Event|object} coords Event or literal Object with coordinates.
|
481
510
|
*/
|
482
|
-
|
483
|
-
|
484
|
-
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
|
+
}
|
485
530
|
}
|
486
531
|
|
487
532
|
/**
|
488
|
-
* Set menu position
|
533
|
+
* Set menu horizontal position for RTL mode.
|
489
534
|
*
|
490
|
-
* @param {
|
535
|
+
* @param {Cursor} cursor `Cursor` object.
|
491
536
|
*/
|
492
|
-
|
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;
|
493
611
|
if (this.isSubMenu()) {
|
494
|
-
|
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);
|
685
|
+
}
|
686
|
+
}
|
687
|
+
|
688
|
+
/**
|
689
|
+
* Menu item renderer.
|
690
|
+
*
|
691
|
+
* @private
|
692
|
+
* @param {Core} hot The Handsontable instance.
|
693
|
+
* @param {HTMLCellElement} TD The rendered cell element.
|
694
|
+
* @param {number} row The visual index.
|
695
|
+
* @param {number} col The visual index.
|
696
|
+
* @param {string} prop The column property if used.
|
697
|
+
* @param {string} value The cell value.
|
698
|
+
*/
|
699
|
+
menuItemRenderer(hot, TD, row, col, prop, value) {
|
700
|
+
const item = hot.getSourceDataAtRow(row);
|
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;
|
706
|
+
let itemValue = value;
|
707
|
+
if (typeof itemValue === 'function') {
|
708
|
+
itemValue = itemValue.call(this.hot);
|
709
|
+
}
|
710
|
+
(0, _element.empty)(TD);
|
711
|
+
(0, _element.addClass)(wrapper, 'htItemWrapper');
|
712
|
+
TD.appendChild(wrapper);
|
713
|
+
if (itemIsSeparator(item)) {
|
714
|
+
(0, _element.addClass)(TD, 'htSeparator');
|
715
|
+
} else if (typeof item.renderer === 'function') {
|
716
|
+
(0, _element.addClass)(TD, 'htCustomMenuRenderer');
|
717
|
+
TD.appendChild(item.renderer(hot, wrapper, row, col, prop, itemValue));
|
718
|
+
} else {
|
719
|
+
(0, _element.fastInnerHTML)(wrapper, itemValue);
|
720
|
+
}
|
721
|
+
if (itemIsDisabled(item)) {
|
722
|
+
(0, _element.addClass)(TD, 'htDisabled');
|
723
|
+
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
724
|
+
} else if (itemIsSelectionDisabled(item)) {
|
725
|
+
(0, _element.addClass)(TD, 'htSelectionDisabled');
|
726
|
+
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
727
|
+
} else if (isSubMenu(item)) {
|
728
|
+
(0, _element.addClass)(TD, 'htSubmenu');
|
729
|
+
if (itemIsSelectionDisabled(item)) {
|
730
|
+
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
731
|
+
} else {
|
732
|
+
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
733
|
+
}
|
734
|
+
} else {
|
735
|
+
(0, _element.removeClass)(TD, ['htSubmenu', 'htDisabled']);
|
736
|
+
if (itemIsSelectionDisabled(item)) {
|
737
|
+
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.deselectCell());
|
738
|
+
} else {
|
739
|
+
this.eventManager.addEventListener(TD, 'mouseenter', () => hot.selectCell(row, col, void 0, void 0, false, false));
|
740
|
+
}
|
495
741
|
}
|
496
|
-
this.positioner.setElement(this.container).updatePosition(coords);
|
497
742
|
}
|
498
743
|
|
499
744
|
/**
|
@@ -532,6 +777,26 @@ class Menu {
|
|
532
777
|
return container;
|
533
778
|
}
|
534
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
|
+
|
535
800
|
/**
|
536
801
|
* On after init listener.
|
537
802
|
*
|
@@ -551,10 +816,20 @@ class Menu {
|
|
551
816
|
holderStyle.width = `${currentHiderWidth + 3}px`;
|
552
817
|
holderStyle.height = `${realHeight + 3}px`;
|
553
818
|
hiderStyle.height = holderStyle.height;
|
819
|
+
}
|
554
820
|
|
555
|
-
|
556
|
-
|
557
|
-
|
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;
|
558
833
|
}
|
559
834
|
}
|
560
835
|
|
@@ -594,5 +869,6 @@ class Menu {
|
|
594
869
|
}
|
595
870
|
}
|
596
871
|
}
|
597
|
-
|
598
|
-
|
872
|
+
(0, _object.mixin)(Menu, _localHooks.default);
|
873
|
+
var _default = Menu;
|
874
|
+
exports.default = _default;
|