handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-21d91d0-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/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +12 -10
- package/3rdparty/walkontable/src/event.mjs +12 -10
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +13 -2
- package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- package/3rdparty/walkontable/src/renderer/cells.js +10 -0
- package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/rows.js +13 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
- package/3rdparty/walkontable/src/renderer/table.js +9 -0
- package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
- package/3rdparty/walkontable/src/scroll.js +2 -0
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +274 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
- package/3rdparty/walkontable/src/settings.js +13 -4
- package/3rdparty/walkontable/src/settings.mjs +13 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +19 -78
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +3 -0
- package/cellTypes/index.js +4 -0
- package/cellTypes/index.mjs +3 -1
- package/cellTypes/selectType/index.d.ts +1 -0
- package/cellTypes/selectType/index.js +6 -0
- package/cellTypes/selectType/index.mjs +1 -0
- package/cellTypes/selectType/selectType.d.ts +14 -0
- package/cellTypes/selectType/selectType.js +13 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +9 -4
- package/core.js +285 -327
- package/core.mjs +285 -327
- package/dataMap/metaManager/metaSchema.js +65 -0
- package/dataMap/metaManager/metaSchema.mjs +65 -0
- package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
- package/dataMap/replaceData.js +5 -0
- package/dataMap/replaceData.mjs +5 -0
- package/dist/handsontable.css +51 -15
- package/dist/handsontable.full.css +51 -15
- package/dist/handsontable.full.js +13360 -7840
- package/dist/handsontable.full.min.css +7 -7
- package/dist/handsontable.full.min.js +136 -136
- package/dist/handsontable.js +20955 -15435
- package/dist/handsontable.min.css +6 -6
- package/dist/handsontable.min.js +24 -24
- package/dist/languages/all.js +6 -2
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +3 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +3 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +15 -87
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
- package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
- package/editors/dateEditor/dateEditor.js +26 -7
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/handsontableEditor/handsontableEditor.js +9 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
- package/editors/textEditor/textEditor.js +19 -27
- package/editors/textEditor/textEditor.mjs +22 -30
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +79 -0
- package/helpers/a11y.mjs +38 -0
- package/helpers/dom/element.js +188 -9
- package/helpers/dom/element.mjs +182 -9
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/i18n/constants.js +7 -1
- package/i18n/constants.mjs +4 -1
- package/i18n/languages/en-US.js +3 -1
- package/i18n/languages/en-US.mjs +3 -1
- package/i18n/languages/pl-PL.js +3 -1
- package/i18n/languages/pl-PL.mjs +3 -1
- package/languages/all.js +6 -2
- package/languages/en-US.js +3 -1
- package/languages/en-US.mjs +3 -1
- package/languages/index.js +6 -2
- package/languages/pl-PL.js +3 -1
- package/languages/pl-PL.mjs +3 -1
- package/package.json +21 -1
- package/pluginHooks.d.ts +12 -1
- package/pluginHooks.js +152 -1
- package/pluginHooks.mjs +152 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
- package/plugins/columnSorting/columnSorting.js +43 -0
- package/plugins/columnSorting/columnSorting.mjs +44 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +252 -189
- package/plugins/comments/comments.mjs +251 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/commandExecutor.js +2 -3
- package/plugins/contextMenu/commandExecutor.mjs +2 -3
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +75 -36
- package/plugins/contextMenu/contextMenu.mjs +74 -35
- package/plugins/contextMenu/itemsFactory.js +2 -3
- package/plugins/contextMenu/itemsFactory.mjs +3 -4
- package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
- package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
- package/plugins/contextMenu/menu/index.js +9 -0
- package/plugins/contextMenu/menu/index.mjs +1 -0
- package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
- package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
- package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
- package/plugins/contextMenu/menu/navigator.js +27 -0
- package/plugins/contextMenu/menu/navigator.mjs +23 -0
- package/plugins/contextMenu/menu/positioner.js +213 -0
- package/plugins/contextMenu/menu/positioner.mjs +209 -0
- package/plugins/contextMenu/menu/shortcuts.js +114 -0
- package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
- package/plugins/contextMenu/menu/utils.js +177 -0
- package/plugins/contextMenu/menu/utils.mjs +163 -0
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +127 -78
- package/plugins/copyPaste/copyPaste.mjs +128 -79
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +127 -40
- package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +29 -27
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +46 -59
- package/plugins/filters/component/condition.mjs +40 -52
- package/plugins/filters/component/operators.js +21 -22
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +35 -26
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +106 -62
- package/plugins/filters/filters.mjs +99 -55
- package/plugins/filters/menu/focusController.js +123 -0
- package/plugins/filters/menu/focusController.mjs +119 -0
- package/plugins/filters/menu/focusNavigator.js +30 -0
- package/plugins/filters/menu/focusNavigator.mjs +26 -0
- package/plugins/filters/ui/_base.js +35 -13
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -32
- package/plugins/filters/ui/input.mjs +42 -30
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +234 -129
- package/plugins/filters/ui/multipleSelect.mjs +232 -127
- package/plugins/filters/ui/radioInput.js +42 -18
- package/plugins/filters/ui/radioInput.mjs +42 -17
- package/plugins/filters/ui/select.js +144 -75
- package/plugins/filters/ui/select.mjs +142 -72
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +3 -1
- package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
- package/plugins/mergeCells/mergeCells.js +5 -16
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +240 -10
- package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/nestedRows/ui/headers.js +11 -0
- package/plugins/nestedRows/ui/headers.mjs +12 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +17 -0
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +29 -0
- package/renderers/dateRenderer/dateRenderer.mjs +24 -0
- package/renderers/dateRenderer/index.d.ts +1 -0
- package/renderers/dateRenderer/index.js +6 -0
- package/renderers/dateRenderer/index.mjs +1 -0
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
- package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
- package/renderers/handsontableRenderer/index.d.ts +1 -0
- package/renderers/handsontableRenderer/index.js +6 -0
- package/renderers/handsontableRenderer/index.mjs +1 -0
- package/renderers/index.d.ts +9 -0
- package/renderers/selectRenderer/index.d.ts +1 -0
- package/renderers/selectRenderer/index.js +6 -0
- package/renderers/selectRenderer/index.mjs +1 -0
- package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
- package/renderers/selectRenderer/selectRenderer.js +27 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +7 -1
- package/selection/mouseEventHandler.mjs +7 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +321 -152
- package/selection/selection.mjs +318 -151
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +12 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/context.js +23 -4
- package/shortcuts/context.mjs +23 -5
- package/shortcuts/manager.js +25 -7
- package/shortcuts/manager.mjs +26 -7
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +111 -13
- package/tableView.mjs +112 -14
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
@@ -1,16 +1,23 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
4
5
|
var _base = require("../base");
|
5
6
|
var _array = require("../../helpers/array");
|
6
|
-
var
|
7
|
+
var _object = require("../../helpers/object");
|
8
|
+
var _commandExecutor = require("../contextMenu/commandExecutor");
|
9
|
+
var _utils = require("../contextMenu/utils");
|
7
10
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
8
11
|
var _element = require("../../helpers/dom/element");
|
9
|
-
var _itemsFactory =
|
10
|
-
var _menu =
|
12
|
+
var _itemsFactory = require("../contextMenu/itemsFactory");
|
13
|
+
var _menu = require("../contextMenu/menu");
|
11
14
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
12
15
|
var _predefinedItems = require("../contextMenu/predefinedItems");
|
16
|
+
var _a11y = require("../../helpers/a11y");
|
13
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
19
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
20
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
14
21
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
|
15
22
|
_pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
|
16
23
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuShow');
|
@@ -21,6 +28,7 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
|
|
21
28
|
const PLUGIN_PRIORITY = 230;
|
22
29
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
23
30
|
const BUTTON_CLASS_NAME = 'changeType';
|
31
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
24
32
|
|
25
33
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
26
34
|
/**
|
@@ -72,7 +80,7 @@ const BUTTON_CLASS_NAME = 'changeType';
|
|
72
80
|
* ```
|
73
81
|
* :::
|
74
82
|
*/
|
75
|
-
|
83
|
+
var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
|
76
84
|
class DropdownMenu extends _base.BasePlugin {
|
77
85
|
static get PLUGIN_KEY() {
|
78
86
|
return PLUGIN_KEY;
|
@@ -100,6 +108,12 @@ class DropdownMenu extends _base.BasePlugin {
|
|
100
108
|
* @private
|
101
109
|
* @type {EventManager}
|
102
110
|
*/
|
111
|
+
/**
|
112
|
+
* Add custom shortcuts to the provided menu instance.
|
113
|
+
*
|
114
|
+
* @param {Menu} menuInstance The menu instance.
|
115
|
+
*/
|
116
|
+
_classPrivateMethodInitSpec(this, _addCustomShortcuts);
|
103
117
|
this.eventManager = new _eventManager.default(this);
|
104
118
|
/**
|
105
119
|
* Instance of {@link CommandExecutor}.
|
@@ -107,7 +121,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
107
121
|
* @private
|
108
122
|
* @type {CommandExecutor}
|
109
123
|
*/
|
110
|
-
this.commandExecutor = new _commandExecutor.
|
124
|
+
this.commandExecutor = new _commandExecutor.CommandExecutor(this.hot);
|
111
125
|
/**
|
112
126
|
* Instance of {@link ItemsFactory}.
|
113
127
|
*
|
@@ -148,7 +162,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
148
162
|
if (this.enabled) {
|
149
163
|
return;
|
150
164
|
}
|
151
|
-
this.itemsFactory = new _itemsFactory.
|
165
|
+
this.itemsFactory = new _itemsFactory.ItemsFactory(this.hot, DropdownMenu.DEFAULT_ITEMS);
|
152
166
|
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
153
167
|
const predefinedItems = {
|
154
168
|
items: this.itemsFactory.getItems(settings)
|
@@ -157,6 +171,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
157
171
|
if (typeof settings.callback === 'function') {
|
158
172
|
this.commandExecutor.setCommonCallback(settings.callback);
|
159
173
|
}
|
174
|
+
this.registerShortcuts();
|
160
175
|
super.enablePlugin();
|
161
176
|
this.callOnPluginsReady(() => {
|
162
177
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -165,7 +180,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
165
180
|
if (this.menu) {
|
166
181
|
this.menu.destroy();
|
167
182
|
}
|
168
|
-
this.menu = new _menu.
|
183
|
+
this.menu = new _menu.Menu(this.hot, {
|
169
184
|
className: 'htDropdownMenu',
|
170
185
|
keepInViewport: true,
|
171
186
|
container: settings.uiContainer || this.hot.rootDocument.body
|
@@ -174,6 +189,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
174
189
|
this.menu.setMenuItems(menuItems);
|
175
190
|
this.menu.addLocalHook('beforeOpen', () => this.onMenuBeforeOpen());
|
176
191
|
this.menu.addLocalHook('afterOpen', () => this.onMenuAfterOpen());
|
192
|
+
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.onSubMenuAfterOpen(subMenuInstance));
|
177
193
|
this.menu.addLocalHook('afterClose', () => this.onMenuAfterClose());
|
178
194
|
this.menu.addLocalHook('executeCommand', function () {
|
179
195
|
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
@@ -207,9 +223,66 @@ class DropdownMenu extends _base.BasePlugin {
|
|
207
223
|
if (this.menu) {
|
208
224
|
this.menu.destroy();
|
209
225
|
}
|
226
|
+
this.unregisterShortcuts();
|
210
227
|
super.disablePlugin();
|
211
228
|
}
|
212
229
|
|
230
|
+
/**
|
231
|
+
* Register shortcuts responsible for toggling dropdown menu.
|
232
|
+
*
|
233
|
+
* @private
|
234
|
+
*/
|
235
|
+
registerShortcuts() {
|
236
|
+
const gridContext = this.hot.getShortcutManager().getContext('grid');
|
237
|
+
const callback = () => {
|
238
|
+
const {
|
239
|
+
highlight
|
240
|
+
} = this.hot.getSelectedRangeLast();
|
241
|
+
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
242
|
+
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
243
|
+
const {
|
244
|
+
from
|
245
|
+
} = this.hot.getSelectedRangeLast();
|
246
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
247
|
+
const target = this.hot.getCell(-1, from.col, true);
|
248
|
+
const rect = target.getBoundingClientRect();
|
249
|
+
this.open({
|
250
|
+
left: rect.left + offset.left,
|
251
|
+
top: rect.top + target.offsetHeight + offset.top
|
252
|
+
}, {
|
253
|
+
left: rect.width
|
254
|
+
});
|
255
|
+
}
|
256
|
+
};
|
257
|
+
gridContext.addShortcuts([{
|
258
|
+
keys: [['Shift', 'Alt', 'ArrowDown'], ['Control/Meta', 'Enter']],
|
259
|
+
callback,
|
260
|
+
runOnlyIf: () => {
|
261
|
+
var _this$hot$getSelected;
|
262
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
263
|
+
},
|
264
|
+
captureCtrl: true,
|
265
|
+
group: SHORTCUTS_GROUP
|
266
|
+
}, {
|
267
|
+
keys: [['Shift', 'Alt', 'ArrowDown']],
|
268
|
+
callback,
|
269
|
+
runOnlyIf: () => {
|
270
|
+
var _this$hot$getSelected2;
|
271
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
272
|
+
},
|
273
|
+
group: SHORTCUTS_GROUP
|
274
|
+
}]);
|
275
|
+
}
|
276
|
+
|
277
|
+
/**
|
278
|
+
* Unregister shortcuts responsible for toggling dropdown menu.
|
279
|
+
*
|
280
|
+
* @private
|
281
|
+
*/
|
282
|
+
unregisterShortcuts() {
|
283
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
284
|
+
}
|
285
|
+
|
213
286
|
/**
|
214
287
|
* Registers the DOM listeners.
|
215
288
|
*
|
@@ -222,23 +295,30 @@ class DropdownMenu extends _base.BasePlugin {
|
|
222
295
|
/**
|
223
296
|
* Opens menu and re-position it based on the passed coordinates.
|
224
297
|
*
|
225
|
-
* @param {
|
226
|
-
*
|
227
|
-
*
|
228
|
-
*
|
229
|
-
*
|
298
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
299
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
300
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
301
|
+
* coordinates.
|
302
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
303
|
+
* the offset to the menu position.
|
230
304
|
* @fires Hooks#beforeDropdownMenuShow
|
231
305
|
* @fires Hooks#afterDropdownMenuShow
|
232
306
|
*/
|
233
|
-
|
234
307
|
open(position) {
|
235
|
-
|
308
|
+
var _this$menu;
|
309
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
310
|
+
above: 0,
|
311
|
+
below: 0,
|
312
|
+
left: 0,
|
313
|
+
right: 0
|
314
|
+
};
|
315
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
236
316
|
return;
|
237
317
|
}
|
238
318
|
this.menu.open();
|
239
|
-
|
240
|
-
this.menu.setOffset(
|
241
|
-
}
|
319
|
+
(0, _object.objectEach)(offset, (value, key) => {
|
320
|
+
this.menu.setOffset(key, value);
|
321
|
+
});
|
242
322
|
this.menu.setPosition(position);
|
243
323
|
}
|
244
324
|
|
@@ -246,10 +326,8 @@ class DropdownMenu extends _base.BasePlugin {
|
|
246
326
|
* Closes dropdown menu.
|
247
327
|
*/
|
248
328
|
close() {
|
249
|
-
|
250
|
-
|
251
|
-
}
|
252
|
-
this.menu.close();
|
329
|
+
var _this$menu2;
|
330
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
|
253
331
|
}
|
254
332
|
|
255
333
|
/**
|
@@ -305,7 +383,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
305
383
|
}
|
306
384
|
}
|
307
385
|
}
|
308
|
-
|
309
386
|
/**
|
310
387
|
* Table click listener.
|
311
388
|
*
|
@@ -314,26 +391,14 @@ class DropdownMenu extends _base.BasePlugin {
|
|
314
391
|
*/
|
315
392
|
onTableClick(event) {
|
316
393
|
event.stopPropagation();
|
317
|
-
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)
|
318
|
-
|
319
|
-
let offsetLeft = 0;
|
320
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
321
|
-
const {
|
322
|
-
frameElement
|
323
|
-
} = this.hot.rootWindow;
|
324
|
-
const {
|
325
|
-
top,
|
326
|
-
left
|
327
|
-
} = frameElement.getBoundingClientRect();
|
328
|
-
offsetTop = top;
|
329
|
-
offsetLeft = left;
|
330
|
-
}
|
394
|
+
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
395
|
+
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
331
396
|
const rect = event.target.getBoundingClientRect();
|
332
397
|
this.open({
|
333
|
-
left: rect.left +
|
334
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
335
|
-
|
336
|
-
|
398
|
+
left: rect.left + offset.left,
|
399
|
+
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
400
|
+
}, {
|
401
|
+
left: rect.width
|
337
402
|
});
|
338
403
|
}
|
339
404
|
}
|
@@ -372,6 +437,11 @@ class DropdownMenu extends _base.BasePlugin {
|
|
372
437
|
const button = this.hot.rootDocument.createElement('button');
|
373
438
|
button.className = BUTTON_CLASS_NAME;
|
374
439
|
button.type = 'button';
|
440
|
+
button.tabIndex = -1;
|
441
|
+
if (this.hot.getSettings().ariaTags) {
|
442
|
+
(0, _element.setAttribute)(button, [(0, _a11y.A11Y_HIDDEN)()]);
|
443
|
+
(0, _element.setAttribute)(TH, [(0, _a11y.A11Y_HASPOPUP)('menu')]);
|
444
|
+
}
|
375
445
|
|
376
446
|
// prevent page reload on button click
|
377
447
|
button.onclick = function () {
|
@@ -398,6 +468,17 @@ class DropdownMenu extends _base.BasePlugin {
|
|
398
468
|
*/
|
399
469
|
onMenuAfterOpen() {
|
400
470
|
this.hot.runHooks('afterDropdownMenuShow', this);
|
471
|
+
_classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
|
472
|
+
}
|
473
|
+
|
474
|
+
/**
|
475
|
+
* Listener for the `afterSubmenuOpen` hook.
|
476
|
+
*
|
477
|
+
* @private
|
478
|
+
* @param {Menu} subMenuInstance The opened sub menu instance.
|
479
|
+
*/
|
480
|
+
onSubMenuAfterOpen(subMenuInstance) {
|
481
|
+
_classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
|
401
482
|
}
|
402
483
|
|
403
484
|
/**
|
@@ -423,6 +504,12 @@ class DropdownMenu extends _base.BasePlugin {
|
|
423
504
|
}
|
424
505
|
}
|
425
506
|
exports.DropdownMenu = DropdownMenu;
|
507
|
+
function _addCustomShortcuts2(menuInstance) {
|
508
|
+
menuInstance.getKeyboardShortcutsCtrl().addCustomShortcuts([{
|
509
|
+
keys: [['Control/Meta', 'A']],
|
510
|
+
callback: () => false
|
511
|
+
}]);
|
512
|
+
}
|
426
513
|
DropdownMenu.SEPARATOR = {
|
427
514
|
name: _predefinedItems.SEPARATOR
|
428
515
|
};
|
@@ -1,12 +1,19 @@
|
|
1
|
+
import "core-js/modules/es.error.cause.js";
|
2
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
3
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
4
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
1
5
|
import { BasePlugin } from "../base/index.mjs";
|
2
6
|
import { arrayEach } from "../../helpers/array.mjs";
|
3
|
-
import
|
7
|
+
import { objectEach } from "../../helpers/object.mjs";
|
8
|
+
import { CommandExecutor } from "../contextMenu/commandExecutor.mjs";
|
9
|
+
import { getDocumentOffsetByElement } from "../contextMenu/utils.mjs";
|
4
10
|
import EventManager from "../../eventManager.mjs";
|
5
|
-
import { hasClass } from "../../helpers/dom/element.mjs";
|
6
|
-
import ItemsFactory from "../contextMenu/itemsFactory.mjs";
|
7
|
-
import Menu from "../contextMenu/menu.mjs";
|
11
|
+
import { hasClass, setAttribute } from "../../helpers/dom/element.mjs";
|
12
|
+
import { ItemsFactory } from "../contextMenu/itemsFactory.mjs";
|
13
|
+
import { Menu } from "../contextMenu/menu/index.mjs";
|
8
14
|
import Hooks from "../../pluginHooks.mjs";
|
9
|
-
import { COLUMN_LEFT, COLUMN_RIGHT, REMOVE_COLUMN, CLEAR_COLUMN, READ_ONLY, ALIGNMENT, SEPARATOR } from "../contextMenu/predefinedItems.mjs";
|
15
|
+
import { COLUMN_LEFT, COLUMN_RIGHT, REMOVE_COLUMN, CLEAR_COLUMN, READ_ONLY, ALIGNMENT, SEPARATOR } from "../contextMenu/predefinedItems/index.mjs";
|
16
|
+
import { A11Y_HASPOPUP, A11Y_HIDDEN } from "../../helpers/a11y.mjs";
|
10
17
|
Hooks.getSingleton().register('afterDropdownMenuDefaultOptions');
|
11
18
|
Hooks.getSingleton().register('beforeDropdownMenuShow');
|
12
19
|
Hooks.getSingleton().register('afterDropdownMenuShow');
|
@@ -15,6 +22,7 @@ Hooks.getSingleton().register('afterDropdownMenuExecute');
|
|
15
22
|
export const PLUGIN_KEY = 'dropdownMenu';
|
16
23
|
export const PLUGIN_PRIORITY = 230;
|
17
24
|
const BUTTON_CLASS_NAME = 'changeType';
|
25
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
18
26
|
|
19
27
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
20
28
|
/**
|
@@ -66,7 +74,7 @@ const BUTTON_CLASS_NAME = 'changeType';
|
|
66
74
|
* ```
|
67
75
|
* :::
|
68
76
|
*/
|
69
|
-
|
77
|
+
var _addCustomShortcuts = /*#__PURE__*/new WeakSet();
|
70
78
|
export class DropdownMenu extends BasePlugin {
|
71
79
|
static get PLUGIN_KEY() {
|
72
80
|
return PLUGIN_KEY;
|
@@ -94,6 +102,12 @@ export class DropdownMenu extends BasePlugin {
|
|
94
102
|
* @private
|
95
103
|
* @type {EventManager}
|
96
104
|
*/
|
105
|
+
/**
|
106
|
+
* Add custom shortcuts to the provided menu instance.
|
107
|
+
*
|
108
|
+
* @param {Menu} menuInstance The menu instance.
|
109
|
+
*/
|
110
|
+
_classPrivateMethodInitSpec(this, _addCustomShortcuts);
|
97
111
|
this.eventManager = new EventManager(this);
|
98
112
|
/**
|
99
113
|
* Instance of {@link CommandExecutor}.
|
@@ -151,6 +165,7 @@ export class DropdownMenu extends BasePlugin {
|
|
151
165
|
if (typeof settings.callback === 'function') {
|
152
166
|
this.commandExecutor.setCommonCallback(settings.callback);
|
153
167
|
}
|
168
|
+
this.registerShortcuts();
|
154
169
|
super.enablePlugin();
|
155
170
|
this.callOnPluginsReady(() => {
|
156
171
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -168,6 +183,7 @@ export class DropdownMenu extends BasePlugin {
|
|
168
183
|
this.menu.setMenuItems(menuItems);
|
169
184
|
this.menu.addLocalHook('beforeOpen', () => this.onMenuBeforeOpen());
|
170
185
|
this.menu.addLocalHook('afterOpen', () => this.onMenuAfterOpen());
|
186
|
+
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.onSubMenuAfterOpen(subMenuInstance));
|
171
187
|
this.menu.addLocalHook('afterClose', () => this.onMenuAfterClose());
|
172
188
|
this.menu.addLocalHook('executeCommand', function () {
|
173
189
|
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
@@ -201,9 +217,66 @@ export class DropdownMenu extends BasePlugin {
|
|
201
217
|
if (this.menu) {
|
202
218
|
this.menu.destroy();
|
203
219
|
}
|
220
|
+
this.unregisterShortcuts();
|
204
221
|
super.disablePlugin();
|
205
222
|
}
|
206
223
|
|
224
|
+
/**
|
225
|
+
* Register shortcuts responsible for toggling dropdown menu.
|
226
|
+
*
|
227
|
+
* @private
|
228
|
+
*/
|
229
|
+
registerShortcuts() {
|
230
|
+
const gridContext = this.hot.getShortcutManager().getContext('grid');
|
231
|
+
const callback = () => {
|
232
|
+
const {
|
233
|
+
highlight
|
234
|
+
} = this.hot.getSelectedRangeLast();
|
235
|
+
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
236
|
+
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
237
|
+
const {
|
238
|
+
from
|
239
|
+
} = this.hot.getSelectedRangeLast();
|
240
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
241
|
+
const target = this.hot.getCell(-1, from.col, true);
|
242
|
+
const rect = target.getBoundingClientRect();
|
243
|
+
this.open({
|
244
|
+
left: rect.left + offset.left,
|
245
|
+
top: rect.top + target.offsetHeight + offset.top
|
246
|
+
}, {
|
247
|
+
left: rect.width
|
248
|
+
});
|
249
|
+
}
|
250
|
+
};
|
251
|
+
gridContext.addShortcuts([{
|
252
|
+
keys: [['Shift', 'Alt', 'ArrowDown'], ['Control/Meta', 'Enter']],
|
253
|
+
callback,
|
254
|
+
runOnlyIf: () => {
|
255
|
+
var _this$hot$getSelected;
|
256
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
257
|
+
},
|
258
|
+
captureCtrl: true,
|
259
|
+
group: SHORTCUTS_GROUP
|
260
|
+
}, {
|
261
|
+
keys: [['Shift', 'Alt', 'ArrowDown']],
|
262
|
+
callback,
|
263
|
+
runOnlyIf: () => {
|
264
|
+
var _this$hot$getSelected2;
|
265
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
266
|
+
},
|
267
|
+
group: SHORTCUTS_GROUP
|
268
|
+
}]);
|
269
|
+
}
|
270
|
+
|
271
|
+
/**
|
272
|
+
* Unregister shortcuts responsible for toggling dropdown menu.
|
273
|
+
*
|
274
|
+
* @private
|
275
|
+
*/
|
276
|
+
unregisterShortcuts() {
|
277
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
278
|
+
}
|
279
|
+
|
207
280
|
/**
|
208
281
|
* Registers the DOM listeners.
|
209
282
|
*
|
@@ -216,23 +289,30 @@ export class DropdownMenu extends BasePlugin {
|
|
216
289
|
/**
|
217
290
|
* Opens menu and re-position it based on the passed coordinates.
|
218
291
|
*
|
219
|
-
* @param {
|
220
|
-
*
|
221
|
-
*
|
222
|
-
*
|
223
|
-
*
|
292
|
+
* @param {{ top: number, left: number }|Event} position An object with `top` and `left` properties
|
293
|
+
* which contains coordinates relative to the browsers viewport (without included scroll offsets).
|
294
|
+
* Or if the native event is passed the menu will be positioned based on the `pageX` and `pageY`
|
295
|
+
* coordinates.
|
296
|
+
* @param {{ above: number, below: number, left: number, right: number }} offset An object allows applying
|
297
|
+
* the offset to the menu position.
|
224
298
|
* @fires Hooks#beforeDropdownMenuShow
|
225
299
|
* @fires Hooks#afterDropdownMenuShow
|
226
300
|
*/
|
227
|
-
|
228
301
|
open(position) {
|
229
|
-
|
302
|
+
var _this$menu;
|
303
|
+
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
304
|
+
above: 0,
|
305
|
+
below: 0,
|
306
|
+
left: 0,
|
307
|
+
right: 0
|
308
|
+
};
|
309
|
+
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
230
310
|
return;
|
231
311
|
}
|
232
312
|
this.menu.open();
|
233
|
-
|
234
|
-
this.menu.setOffset(
|
235
|
-
}
|
313
|
+
objectEach(offset, (value, key) => {
|
314
|
+
this.menu.setOffset(key, value);
|
315
|
+
});
|
236
316
|
this.menu.setPosition(position);
|
237
317
|
}
|
238
318
|
|
@@ -240,10 +320,8 @@ export class DropdownMenu extends BasePlugin {
|
|
240
320
|
* Closes dropdown menu.
|
241
321
|
*/
|
242
322
|
close() {
|
243
|
-
|
244
|
-
|
245
|
-
}
|
246
|
-
this.menu.close();
|
323
|
+
var _this$menu2;
|
324
|
+
(_this$menu2 = this.menu) === null || _this$menu2 === void 0 || _this$menu2.close();
|
247
325
|
}
|
248
326
|
|
249
327
|
/**
|
@@ -299,7 +377,6 @@ export class DropdownMenu extends BasePlugin {
|
|
299
377
|
}
|
300
378
|
}
|
301
379
|
}
|
302
|
-
|
303
380
|
/**
|
304
381
|
* Table click listener.
|
305
382
|
*
|
@@ -308,26 +385,14 @@ export class DropdownMenu extends BasePlugin {
|
|
308
385
|
*/
|
309
386
|
onTableClick(event) {
|
310
387
|
event.stopPropagation();
|
311
|
-
if (hasClass(event.target, BUTTON_CLASS_NAME)
|
312
|
-
|
313
|
-
let offsetLeft = 0;
|
314
|
-
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
315
|
-
const {
|
316
|
-
frameElement
|
317
|
-
} = this.hot.rootWindow;
|
318
|
-
const {
|
319
|
-
top,
|
320
|
-
left
|
321
|
-
} = frameElement.getBoundingClientRect();
|
322
|
-
offsetTop = top;
|
323
|
-
offsetLeft = left;
|
324
|
-
}
|
388
|
+
if (hasClass(event.target, BUTTON_CLASS_NAME)) {
|
389
|
+
const offset = getDocumentOffsetByElement(this.menu.container, this.hot.rootDocument);
|
325
390
|
const rect = event.target.getBoundingClientRect();
|
326
391
|
this.open({
|
327
|
-
left: rect.left +
|
328
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
329
|
-
|
330
|
-
|
392
|
+
left: rect.left + offset.left,
|
393
|
+
top: rect.top + event.target.offsetHeight + 3 + offset.top
|
394
|
+
}, {
|
395
|
+
left: rect.width
|
331
396
|
});
|
332
397
|
}
|
333
398
|
}
|
@@ -366,6 +431,11 @@ export class DropdownMenu extends BasePlugin {
|
|
366
431
|
const button = this.hot.rootDocument.createElement('button');
|
367
432
|
button.className = BUTTON_CLASS_NAME;
|
368
433
|
button.type = 'button';
|
434
|
+
button.tabIndex = -1;
|
435
|
+
if (this.hot.getSettings().ariaTags) {
|
436
|
+
setAttribute(button, [A11Y_HIDDEN()]);
|
437
|
+
setAttribute(TH, [A11Y_HASPOPUP('menu')]);
|
438
|
+
}
|
369
439
|
|
370
440
|
// prevent page reload on button click
|
371
441
|
button.onclick = function () {
|
@@ -392,6 +462,17 @@ export class DropdownMenu extends BasePlugin {
|
|
392
462
|
*/
|
393
463
|
onMenuAfterOpen() {
|
394
464
|
this.hot.runHooks('afterDropdownMenuShow', this);
|
465
|
+
_classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
|
466
|
+
}
|
467
|
+
|
468
|
+
/**
|
469
|
+
* Listener for the `afterSubmenuOpen` hook.
|
470
|
+
*
|
471
|
+
* @private
|
472
|
+
* @param {Menu} subMenuInstance The opened sub menu instance.
|
473
|
+
*/
|
474
|
+
onSubMenuAfterOpen(subMenuInstance) {
|
475
|
+
_classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
|
395
476
|
}
|
396
477
|
|
397
478
|
/**
|
@@ -416,6 +497,12 @@ export class DropdownMenu extends BasePlugin {
|
|
416
497
|
super.destroy();
|
417
498
|
}
|
418
499
|
}
|
500
|
+
function _addCustomShortcuts2(menuInstance) {
|
501
|
+
menuInstance.getKeyboardShortcutsCtrl().addCustomShortcuts([{
|
502
|
+
keys: [['Control/Meta', 'A']],
|
503
|
+
callback: () => false
|
504
|
+
}]);
|
505
|
+
}
|
419
506
|
DropdownMenu.SEPARATOR = {
|
420
507
|
name: SEPARATOR
|
421
508
|
};
|
@@ -7,6 +7,9 @@ var _object = require("../../../helpers/object");
|
|
7
7
|
var _localHooks = _interopRequireDefault(require("../../../mixins/localHooks"));
|
8
8
|
var _translations = require("../../../translations");
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
11
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
12
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
10
13
|
/**
|
11
14
|
* @private
|
12
15
|
* @class BaseComponent
|
@@ -22,39 +25,52 @@ class BaseComponent {
|
|
22
25
|
*
|
23
26
|
* @type {Core}
|
24
27
|
*/
|
25
|
-
this
|
28
|
+
_defineProperty(this, "hot", void 0);
|
26
29
|
/**
|
27
30
|
* The component uniq id.
|
28
31
|
*
|
29
32
|
* @type {string}
|
30
33
|
*/
|
31
|
-
this
|
34
|
+
_defineProperty(this, "id", void 0);
|
32
35
|
/**
|
33
36
|
* List of registered component UI elements.
|
34
37
|
*
|
35
38
|
* @type {Array}
|
36
39
|
*/
|
37
|
-
this
|
40
|
+
_defineProperty(this, "elements", []);
|
38
41
|
/**
|
39
42
|
* Flag which determines if element is hidden.
|
40
43
|
*
|
41
44
|
* @type {boolean}
|
42
45
|
*/
|
43
|
-
this
|
46
|
+
_defineProperty(this, "hidden", false);
|
44
47
|
/**
|
45
48
|
* The component states id.
|
46
49
|
*
|
47
50
|
* @type {string}
|
48
51
|
*/
|
49
|
-
this
|
52
|
+
_defineProperty(this, "stateId", '');
|
50
53
|
/**
|
51
54
|
* Index map which stores component states for each column.
|
52
55
|
*
|
53
56
|
* @type {LinkedPhysicalIndexToValueMap|null}
|
54
57
|
*/
|
58
|
+
_defineProperty(this, "state", void 0);
|
59
|
+
this.hot = hotInstance;
|
60
|
+
this.id = id;
|
61
|
+
this.stateId = `Filters.component.${this.id}`;
|
55
62
|
this.state = stateless ? null : this.hot.columnIndexMapper.registerMap(this.stateId, new _translations.LinkedPhysicalIndexToValueMap());
|
56
63
|
}
|
57
64
|
|
65
|
+
/**
|
66
|
+
* Gets the list of elements from which the component is built.
|
67
|
+
*
|
68
|
+
* @returns {BaseUI[]}
|
69
|
+
*/
|
70
|
+
getElements() {
|
71
|
+
return this.elements;
|
72
|
+
}
|
73
|
+
|
58
74
|
/**
|
59
75
|
* Reset elements to its initial state.
|
60
76
|
*/
|
@@ -137,6 +153,5 @@ class BaseComponent {
|
|
137
153
|
this.hot = null;
|
138
154
|
}
|
139
155
|
}
|
140
|
-
|
141
|
-
|
142
|
-
exports.default = _default;
|
156
|
+
exports.BaseComponent = BaseComponent;
|
157
|
+
(0, _object.mixin)(BaseComponent, _localHooks.default);
|