handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-cecf979-20231026
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.d.ts +1 -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
package/shortcuts/context.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
+
exports.isContextObject = isContextObject;
|
4
5
|
require("core-js/modules/es.error.cause.js");
|
5
6
|
require("core-js/modules/es.array.push.js");
|
6
7
|
var _uniqueMap = require("../utils/dataStructures/uniqueMap");
|
@@ -9,6 +10,18 @@ var _mixed = require("../helpers/mixed");
|
|
9
10
|
var _function = require("../helpers/function");
|
10
11
|
var _object = require("../helpers/object");
|
11
12
|
var _templateLiteralTag = require("../helpers/templateLiteralTag");
|
13
|
+
const __kindOf = Symbol('shortcut-context');
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Checks if the provided object is a context object.
|
17
|
+
*
|
18
|
+
* @param {*} objectToCheck An object to check.
|
19
|
+
* @returns {boolean}
|
20
|
+
*/
|
21
|
+
function isContextObject(objectToCheck) {
|
22
|
+
return (0, _object.isObject)(objectToCheck) && objectToCheck.__kindOf === __kindOf;
|
23
|
+
}
|
24
|
+
|
12
25
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
13
26
|
/**
|
14
27
|
* The `ShortcutContext` API lets you store and manage [keyboard shortcuts](@/guides/accessories-and-menus/keyboard-shortcuts.md) in a given [context](@/guides/accessories-and-menus/keyboard-shortcuts.md#keyboard-shortcut-contexts).
|
@@ -36,13 +49,13 @@ const createContext = name => {
|
|
36
49
|
* @param {Function} options.callback The shortcut's action
|
37
50
|
* @param {object} options.group A group of shortcuts to which the shortcut belongs
|
38
51
|
* @param {object} [options.runOnlyIf] A condition on which the shortcut's action runs
|
39
|
-
* @param {object} [options.stopPropagation=
|
52
|
+
* @param {object} [options.stopPropagation=false] If set to `true`: stops the event's propagation
|
40
53
|
* @param {object} [options.captureCtrl=false] If set to `true`: captures the state of the Control/Meta modifier key
|
41
54
|
* @param {object} [options.preventDefault=true] If set to `true`: prevents the default behavior
|
42
55
|
* @param {object} [options.position='after'] The order in which the shortcut's action runs:
|
43
56
|
* `'before'` or `'after'` the `relativeToGroup` group of actions
|
44
57
|
* @param {object} [options.relativeToGroup] The name of a group of actions, used to determine an action's `position`
|
45
|
-
*
|
58
|
+
* @param {object} [options.forwardToContext] The context object where the event will be forwarded to.
|
46
59
|
*/
|
47
60
|
const addShortcut = function () {
|
48
61
|
let {
|
@@ -54,7 +67,8 @@ const createContext = name => {
|
|
54
67
|
preventDefault = true,
|
55
68
|
stopPropagation = false,
|
56
69
|
relativeToGroup,
|
57
|
-
position
|
70
|
+
position,
|
71
|
+
forwardToContext
|
58
72
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
59
73
|
if ((0, _mixed.isUndefined)(group)) {
|
60
74
|
throw new Error('You need to define the shortcut\'s group.');
|
@@ -78,6 +92,9 @@ const createContext = name => {
|
|
78
92
|
if ((0, _mixed.isDefined)(relativeToGroup)) {
|
79
93
|
[newShortcut.relativeToGroup, newShortcut.position] = [relativeToGroup, position];
|
80
94
|
}
|
95
|
+
if (isContextObject(forwardToContext)) {
|
96
|
+
newShortcut.forwardToContext = forwardToContext;
|
97
|
+
}
|
81
98
|
keys.forEach(keyCombination => {
|
82
99
|
const normalizedKeys = (0, _utils.normalizeKeys)(keyCombination);
|
83
100
|
const hasKeyCombination = SHORTCUTS.hasItem(normalizedKeys);
|
@@ -109,11 +126,12 @@ const createContext = name => {
|
|
109
126
|
* @param {Function} [options.callback] A shortcut's action
|
110
127
|
* @param {object} [options.group] A group of shortcuts to which a shortcut belongs
|
111
128
|
* @param {object} [options.runOnlyIf] A condition on which a shortcut's action runs
|
112
|
-
* @param {object} [options.stopPropagation=
|
129
|
+
* @param {object} [options.stopPropagation=false] If set to `true`: stops the event's propagation
|
113
130
|
* @param {object} [options.preventDefault=true] If set to `true`: prevents the default behavior
|
114
131
|
* @param {object} [options.position='after'] The order in which a shortcut's action runs:
|
115
132
|
* `'before'` or `'after'` a `relativeToGroup` group of actions
|
116
133
|
* @param {object} [options.relativeToGroup] The name of a group of actions, used to determine an action's `position`
|
134
|
+
* @param {object} [options.forwardToContext] The context object where the event will be forwarded to.
|
117
135
|
*/
|
118
136
|
const addShortcuts = function (shortcuts) {
|
119
137
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
@@ -189,6 +207,7 @@ const createContext = name => {
|
|
189
207
|
return SHORTCUTS.hasItem(normalizedKeys);
|
190
208
|
};
|
191
209
|
return {
|
210
|
+
__kindOf,
|
192
211
|
addShortcut,
|
193
212
|
addShortcuts,
|
194
213
|
getShortcuts,
|
package/shortcuts/context.mjs
CHANGED
@@ -4,8 +4,20 @@ import { createUniqueMap } from "../utils/dataStructures/uniqueMap.mjs";
|
|
4
4
|
import { normalizeKeys, getKeysList } from "./utils.mjs";
|
5
5
|
import { isUndefined, isDefined } from "../helpers/mixed.mjs";
|
6
6
|
import { isFunction } from "../helpers/function.mjs";
|
7
|
-
import { objectEach } from "../helpers/object.mjs";
|
7
|
+
import { objectEach, isObject } from "../helpers/object.mjs";
|
8
8
|
import { toSingleLine } from "../helpers/templateLiteralTag.mjs";
|
9
|
+
const __kindOf = Symbol('shortcut-context');
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Checks if the provided object is a context object.
|
13
|
+
*
|
14
|
+
* @param {*} objectToCheck An object to check.
|
15
|
+
* @returns {boolean}
|
16
|
+
*/
|
17
|
+
export function isContextObject(objectToCheck) {
|
18
|
+
return isObject(objectToCheck) && objectToCheck.__kindOf === __kindOf;
|
19
|
+
}
|
20
|
+
|
9
21
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
10
22
|
/**
|
11
23
|
* The `ShortcutContext` API lets you store and manage [keyboard shortcuts](@/guides/accessories-and-menus/keyboard-shortcuts.md) in a given [context](@/guides/accessories-and-menus/keyboard-shortcuts.md#keyboard-shortcut-contexts).
|
@@ -33,13 +45,13 @@ export const createContext = name => {
|
|
33
45
|
* @param {Function} options.callback The shortcut's action
|
34
46
|
* @param {object} options.group A group of shortcuts to which the shortcut belongs
|
35
47
|
* @param {object} [options.runOnlyIf] A condition on which the shortcut's action runs
|
36
|
-
* @param {object} [options.stopPropagation=
|
48
|
+
* @param {object} [options.stopPropagation=false] If set to `true`: stops the event's propagation
|
37
49
|
* @param {object} [options.captureCtrl=false] If set to `true`: captures the state of the Control/Meta modifier key
|
38
50
|
* @param {object} [options.preventDefault=true] If set to `true`: prevents the default behavior
|
39
51
|
* @param {object} [options.position='after'] The order in which the shortcut's action runs:
|
40
52
|
* `'before'` or `'after'` the `relativeToGroup` group of actions
|
41
53
|
* @param {object} [options.relativeToGroup] The name of a group of actions, used to determine an action's `position`
|
42
|
-
*
|
54
|
+
* @param {object} [options.forwardToContext] The context object where the event will be forwarded to.
|
43
55
|
*/
|
44
56
|
const addShortcut = function () {
|
45
57
|
let {
|
@@ -51,7 +63,8 @@ export const createContext = name => {
|
|
51
63
|
preventDefault = true,
|
52
64
|
stopPropagation = false,
|
53
65
|
relativeToGroup,
|
54
|
-
position
|
66
|
+
position,
|
67
|
+
forwardToContext
|
55
68
|
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
56
69
|
if (isUndefined(group)) {
|
57
70
|
throw new Error('You need to define the shortcut\'s group.');
|
@@ -75,6 +88,9 @@ export const createContext = name => {
|
|
75
88
|
if (isDefined(relativeToGroup)) {
|
76
89
|
[newShortcut.relativeToGroup, newShortcut.position] = [relativeToGroup, position];
|
77
90
|
}
|
91
|
+
if (isContextObject(forwardToContext)) {
|
92
|
+
newShortcut.forwardToContext = forwardToContext;
|
93
|
+
}
|
78
94
|
keys.forEach(keyCombination => {
|
79
95
|
const normalizedKeys = normalizeKeys(keyCombination);
|
80
96
|
const hasKeyCombination = SHORTCUTS.hasItem(normalizedKeys);
|
@@ -106,11 +122,12 @@ export const createContext = name => {
|
|
106
122
|
* @param {Function} [options.callback] A shortcut's action
|
107
123
|
* @param {object} [options.group] A group of shortcuts to which a shortcut belongs
|
108
124
|
* @param {object} [options.runOnlyIf] A condition on which a shortcut's action runs
|
109
|
-
* @param {object} [options.stopPropagation=
|
125
|
+
* @param {object} [options.stopPropagation=false] If set to `true`: stops the event's propagation
|
110
126
|
* @param {object} [options.preventDefault=true] If set to `true`: prevents the default behavior
|
111
127
|
* @param {object} [options.position='after'] The order in which a shortcut's action runs:
|
112
128
|
* `'before'` or `'after'` a `relativeToGroup` group of actions
|
113
129
|
* @param {object} [options.relativeToGroup] The name of a group of actions, used to determine an action's `position`
|
130
|
+
* @param {object} [options.forwardToContext] The context object where the event will be forwarded to.
|
114
131
|
*/
|
115
132
|
const addShortcuts = function (shortcuts) {
|
116
133
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
@@ -186,6 +203,7 @@ export const createContext = name => {
|
|
186
203
|
return SHORTCUTS.hasItem(normalizedKeys);
|
187
204
|
};
|
188
205
|
return {
|
206
|
+
__kindOf,
|
189
207
|
addShortcut,
|
190
208
|
addShortcuts,
|
191
209
|
getShortcuts,
|
package/shortcuts/manager.js
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
require("core-js/modules/es.error.cause.js");
|
5
5
|
var _uniqueMap = require("../utils/dataStructures/uniqueMap");
|
6
|
+
var _event = require("../helpers/dom/event");
|
6
7
|
var _context = require("./context");
|
7
8
|
var _recorder = require("./recorder");
|
8
9
|
var _templateLiteralTag = require("../helpers/templateLiteralTag");
|
9
10
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
10
|
-
|
11
11
|
/**
|
12
12
|
* The `ShortcutManager` API lets you store and manage [keyboard shortcut contexts](@/guides/accessories-and-menus/keyboard-shortcuts.md#keyboard-shortcut-contexts) ([`ShortcutContext`](@/api/shortcutContext.md)).
|
13
13
|
*
|
@@ -103,12 +103,18 @@ const createShortcutManager = _ref => {
|
|
103
103
|
let isCtrlKeySilenced = false;
|
104
104
|
|
105
105
|
/**
|
106
|
-
*
|
106
|
+
* A callback function for listening events from the recorder.
|
107
107
|
*
|
108
|
-
* @
|
108
|
+
* @param {KeyboardEvent} event The keyboard event.
|
109
|
+
* @param {string[]} keys Names of the shortcut's keys,
|
110
|
+
* (coming from [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)),
|
111
|
+
* in lowercase or uppercase, unified across browsers.
|
112
|
+
* @param {object | string} context The context object or name.
|
113
|
+
* @returns {boolean}
|
109
114
|
*/
|
110
|
-
const
|
111
|
-
|
115
|
+
const recorderCallback = function (event, keys) {
|
116
|
+
let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getActiveContextName();
|
117
|
+
const activeContext = (0, _context.isContextObject)(context) ? context : getContext(context);
|
112
118
|
let isExecutionCancelled = false;
|
113
119
|
if (!activeContext.hasShortcut(keys)) {
|
114
120
|
return isExecutionCancelled;
|
@@ -122,7 +128,8 @@ const createShortcutManager = _ref => {
|
|
122
128
|
runOnlyIf,
|
123
129
|
preventDefault,
|
124
130
|
stopPropagation,
|
125
|
-
captureCtrl
|
131
|
+
captureCtrl,
|
132
|
+
forwardToContext
|
126
133
|
} = shortcuts[index];
|
127
134
|
if (runOnlyIf(event) !== false) {
|
128
135
|
isCtrlKeySilenced = captureCtrl;
|
@@ -132,15 +139,26 @@ const createShortcutManager = _ref => {
|
|
132
139
|
event.preventDefault();
|
133
140
|
}
|
134
141
|
if (stopPropagation) {
|
142
|
+
(0, _event.stopImmediatePropagation)(event);
|
135
143
|
event.stopPropagation();
|
136
144
|
}
|
137
145
|
if (isExecutionCancelled) {
|
138
146
|
break;
|
139
147
|
}
|
148
|
+
if (forwardToContext) {
|
149
|
+
recorderCallback(event, keys, forwardToContext);
|
150
|
+
}
|
140
151
|
}
|
141
152
|
}
|
142
153
|
return isExecutionCancelled;
|
143
|
-
}
|
154
|
+
};
|
155
|
+
|
156
|
+
/**
|
157
|
+
* Internal key recorder.
|
158
|
+
*
|
159
|
+
* @private
|
160
|
+
*/
|
161
|
+
const keyRecorder = (0, _recorder.useRecorder)(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, recorderCallback);
|
144
162
|
keyRecorder.mount();
|
145
163
|
return {
|
146
164
|
addContext,
|
package/shortcuts/manager.mjs
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import { createUniqueMap } from "../utils/dataStructures/uniqueMap.mjs";
|
3
|
-
import {
|
3
|
+
import { stopImmediatePropagation } from "../helpers/dom/event.mjs";
|
4
|
+
import { createContext, isContextObject } from "./context.mjs";
|
4
5
|
import { useRecorder } from "./recorder.mjs";
|
5
6
|
import { toSingleLine } from "../helpers/templateLiteralTag.mjs";
|
6
7
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
@@ -99,12 +100,18 @@ export const createShortcutManager = _ref => {
|
|
99
100
|
let isCtrlKeySilenced = false;
|
100
101
|
|
101
102
|
/**
|
102
|
-
*
|
103
|
+
* A callback function for listening events from the recorder.
|
103
104
|
*
|
104
|
-
* @
|
105
|
+
* @param {KeyboardEvent} event The keyboard event.
|
106
|
+
* @param {string[]} keys Names of the shortcut's keys,
|
107
|
+
* (coming from [`KeyboardEvent.key`](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values)),
|
108
|
+
* in lowercase or uppercase, unified across browsers.
|
109
|
+
* @param {object | string} context The context object or name.
|
110
|
+
* @returns {boolean}
|
105
111
|
*/
|
106
|
-
const
|
107
|
-
|
112
|
+
const recorderCallback = function (event, keys) {
|
113
|
+
let context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getActiveContextName();
|
114
|
+
const activeContext = isContextObject(context) ? context : getContext(context);
|
108
115
|
let isExecutionCancelled = false;
|
109
116
|
if (!activeContext.hasShortcut(keys)) {
|
110
117
|
return isExecutionCancelled;
|
@@ -118,7 +125,8 @@ export const createShortcutManager = _ref => {
|
|
118
125
|
runOnlyIf,
|
119
126
|
preventDefault,
|
120
127
|
stopPropagation,
|
121
|
-
captureCtrl
|
128
|
+
captureCtrl,
|
129
|
+
forwardToContext
|
122
130
|
} = shortcuts[index];
|
123
131
|
if (runOnlyIf(event) !== false) {
|
124
132
|
isCtrlKeySilenced = captureCtrl;
|
@@ -128,15 +136,26 @@ export const createShortcutManager = _ref => {
|
|
128
136
|
event.preventDefault();
|
129
137
|
}
|
130
138
|
if (stopPropagation) {
|
139
|
+
stopImmediatePropagation(event);
|
131
140
|
event.stopPropagation();
|
132
141
|
}
|
133
142
|
if (isExecutionCancelled) {
|
134
143
|
break;
|
135
144
|
}
|
145
|
+
if (forwardToContext) {
|
146
|
+
recorderCallback(event, keys, forwardToContext);
|
147
|
+
}
|
136
148
|
}
|
137
149
|
}
|
138
150
|
return isExecutionCancelled;
|
139
|
-
}
|
151
|
+
};
|
152
|
+
|
153
|
+
/**
|
154
|
+
* Internal key recorder.
|
155
|
+
*
|
156
|
+
* @private
|
157
|
+
*/
|
158
|
+
const keyRecorder = useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, recorderCallback);
|
140
159
|
keyRecorder.mount();
|
141
160
|
return {
|
142
161
|
addContext,
|
package/shortcuts/recorder.js
CHANGED
@@ -87,7 +87,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
|
|
87
87
|
if (event.keyCode === 229 || result === false || (0, _event.isImmediatePropagationStopped)(event)) {
|
88
88
|
return;
|
89
89
|
}
|
90
|
-
const pressedKey = (0, _utils.normalizeEventKey)(event
|
90
|
+
const pressedKey = (0, _utils.normalizeEventKey)(event);
|
91
91
|
let extraModifierKeys = [];
|
92
92
|
if (!isModifierKey(pressedKey)) {
|
93
93
|
extraModifierKeys = getPressedModifierKeys(event);
|
@@ -108,7 +108,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
|
|
108
108
|
* @param {KeyboardEvent} event The event object
|
109
109
|
*/
|
110
110
|
const onkeydownForModKeys = event => {
|
111
|
-
const pressedKey = (0, _utils.normalizeEventKey)(event
|
111
|
+
const pressedKey = (0, _utils.normalizeEventKey)(event);
|
112
112
|
if (isModifierKey(pressedKey)) {
|
113
113
|
modifierKeysObserver.press(pressedKey);
|
114
114
|
}
|
@@ -121,7 +121,7 @@ function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDown, call
|
|
121
121
|
* @param {KeyboardEvent} event The event object
|
122
122
|
*/
|
123
123
|
const onkeyupForModKeys = event => {
|
124
|
-
const pressedKey = (0, _utils.normalizeEventKey)(event
|
124
|
+
const pressedKey = (0, _utils.normalizeEventKey)(event);
|
125
125
|
if (isModifierKey(pressedKey)) {
|
126
126
|
modifierKeysObserver.release(pressedKey);
|
127
127
|
}
|
package/shortcuts/recorder.mjs
CHANGED
@@ -83,7 +83,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
|
|
83
83
|
if (event.keyCode === 229 || result === false || isImmediatePropagationStopped(event)) {
|
84
84
|
return;
|
85
85
|
}
|
86
|
-
const pressedKey = normalizeEventKey(event
|
86
|
+
const pressedKey = normalizeEventKey(event);
|
87
87
|
let extraModifierKeys = [];
|
88
88
|
if (!isModifierKey(pressedKey)) {
|
89
89
|
extraModifierKeys = getPressedModifierKeys(event);
|
@@ -104,7 +104,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
|
|
104
104
|
* @param {KeyboardEvent} event The event object
|
105
105
|
*/
|
106
106
|
const onkeydownForModKeys = event => {
|
107
|
-
const pressedKey = normalizeEventKey(event
|
107
|
+
const pressedKey = normalizeEventKey(event);
|
108
108
|
if (isModifierKey(pressedKey)) {
|
109
109
|
modifierKeysObserver.press(pressedKey);
|
110
110
|
}
|
@@ -117,7 +117,7 @@ export function useRecorder(ownerWindow, handleEvent, beforeKeyDown, afterKeyDow
|
|
117
117
|
* @param {KeyboardEvent} event The event object
|
118
118
|
*/
|
119
119
|
const onkeyupForModKeys = event => {
|
120
|
-
const pressedKey = normalizeEventKey(event
|
120
|
+
const pressedKey = normalizeEventKey(event);
|
121
121
|
if (isModifierKey(pressedKey)) {
|
122
122
|
modifierKeysObserver.release(pressedKey);
|
123
123
|
}
|
package/shortcuts/utils.js
CHANGED
@@ -37,13 +37,27 @@ const getKeysList = normalizedKeys => {
|
|
37
37
|
};
|
38
38
|
|
39
39
|
/**
|
40
|
-
*
|
40
|
+
* The regex tests if the event.code matches to the pattern and it's used to extract letters and digits from
|
41
|
+
* the string.
|
42
|
+
*/
|
43
|
+
exports.getKeysList = getKeysList;
|
44
|
+
const codeToKeyRegExp = new RegExp('^(?:Key|Digit)([A-Z0-9])$');
|
45
|
+
|
46
|
+
/**
|
47
|
+
* Normalizes a keyboard event key value to a key before its modification. When the keyboard event
|
48
|
+
* is triggered with Alt, Control or Shift keys the `key` property contains modified key e.g. for Alt+L
|
49
|
+
* it will be `ł`. But that value is only valid for polish keyboard layout. To fix that limitations, for
|
50
|
+
* letters and digits the value is taken from the `code` property which holds original value before
|
51
|
+
* transformation.
|
41
52
|
*
|
42
|
-
* @param {
|
53
|
+
* @param {Event} event The KeyboardEvent object.
|
43
54
|
* @returns {string}
|
44
55
|
*/
|
45
|
-
|
46
|
-
|
47
|
-
|
56
|
+
const normalizeEventKey = _ref => {
|
57
|
+
let {
|
58
|
+
key,
|
59
|
+
code
|
60
|
+
} = _ref;
|
61
|
+
return (codeToKeyRegExp.test(code) ? code.replace(codeToKeyRegExp, '$1') : key).toLowerCase();
|
48
62
|
};
|
49
63
|
exports.normalizeEventKey = normalizeEventKey;
|
package/shortcuts/utils.mjs
CHANGED
@@ -33,11 +33,25 @@ export const getKeysList = normalizedKeys => {
|
|
33
33
|
};
|
34
34
|
|
35
35
|
/**
|
36
|
-
*
|
36
|
+
* The regex tests if the event.code matches to the pattern and it's used to extract letters and digits from
|
37
|
+
* the string.
|
38
|
+
*/
|
39
|
+
const codeToKeyRegExp = new RegExp('^(?:Key|Digit)([A-Z0-9])$');
|
40
|
+
|
41
|
+
/**
|
42
|
+
* Normalizes a keyboard event key value to a key before its modification. When the keyboard event
|
43
|
+
* is triggered with Alt, Control or Shift keys the `key` property contains modified key e.g. for Alt+L
|
44
|
+
* it will be `ł`. But that value is only valid for polish keyboard layout. To fix that limitations, for
|
45
|
+
* letters and digits the value is taken from the `code` property which holds original value before
|
46
|
+
* transformation.
|
37
47
|
*
|
38
|
-
* @param {
|
48
|
+
* @param {Event} event The KeyboardEvent object.
|
39
49
|
* @returns {string}
|
40
50
|
*/
|
41
|
-
export const normalizeEventKey =
|
42
|
-
|
51
|
+
export const normalizeEventKey = _ref => {
|
52
|
+
let {
|
53
|
+
key,
|
54
|
+
code
|
55
|
+
} = _ref;
|
56
|
+
return (codeToKeyRegExp.test(code) ? code.replace(codeToKeyRegExp, '$1') : key).toLowerCase();
|
43
57
|
};
|
package/tableView.js
CHANGED
@@ -9,6 +9,7 @@ var _event = require("./helpers/dom/event");
|
|
9
9
|
var _src = _interopRequireDefault(require("./3rdparty/walkontable/src"));
|
10
10
|
var _mouseEventHandler = require("./selection/mouseEventHandler");
|
11
11
|
var _rootInstance = require("./utils/rootInstance");
|
12
|
+
var _a11y = require("./helpers/a11y");
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
14
|
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
14
15
|
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
@@ -259,6 +260,10 @@ class TableView {
|
|
259
260
|
if (this.instance.getSettings().tableClassName) {
|
260
261
|
(0, _element.addClass)(priv.table, this.instance.getSettings().tableClassName);
|
261
262
|
}
|
263
|
+
if (this.settings.ariaTags) {
|
264
|
+
(0, _element.setAttribute)(priv.table, [(0, _a11y.A11Y_PRESENTATION)()]);
|
265
|
+
(0, _element.setAttribute)(rootElement, [(0, _a11y.A11Y_TREEGRID)(), (0, _a11y.A11Y_ROWCOUNT)(this.instance.countRows()), (0, _a11y.A11Y_COLCOUNT)(this.instance.countCols()), (0, _a11y.A11Y_MULTISELECTABLE)()]);
|
266
|
+
}
|
262
267
|
this.THEAD = rootDocument.createElement('THEAD');
|
263
268
|
priv.table.appendChild(this.THEAD);
|
264
269
|
this.TBODY = rootDocument.createElement('TBODY');
|
@@ -312,11 +317,14 @@ class TableView {
|
|
312
317
|
});
|
313
318
|
this.eventManager.addEventListener(documentElement, 'mouseup', event => {
|
314
319
|
if (selection.isInProgress() && (0, _event.isLeftClick)(event)) {
|
315
|
-
// is left mouse button
|
316
320
|
selection.finish();
|
317
321
|
}
|
318
322
|
priv.mouseDown = false;
|
319
|
-
|
323
|
+
const isOutsideInputElement = (0, _element.isOutsideInput)(rootDocument.activeElement);
|
324
|
+
if (!isOutsideInputElement) {
|
325
|
+
return;
|
326
|
+
}
|
327
|
+
if (isOutsideInputElement || !selection.isSelected() && !selection.isSelectedByAnyHeader() && !rootElement.contains(event.target) && !(0, _event.isRightClick)(event)) {
|
320
328
|
this.instance.unlisten();
|
321
329
|
}
|
322
330
|
});
|
@@ -550,6 +558,40 @@ class TableView {
|
|
550
558
|
return this.countNotHiddenRowIndexes(visualFixedRowsBottom, 1);
|
551
559
|
}
|
552
560
|
|
561
|
+
/**
|
562
|
+
* The function returns the number of renderable column indexes within the passed range of the visual indexes.
|
563
|
+
*
|
564
|
+
* @param {number} columnStart The column visual start index.
|
565
|
+
* @param {number} columnEnd The column visual end index.
|
566
|
+
* @returns {number}
|
567
|
+
*/
|
568
|
+
countRenderableColumnsInRange(columnStart, columnEnd) {
|
569
|
+
let count = 0;
|
570
|
+
for (let column = columnStart; column <= columnEnd; column++) {
|
571
|
+
if (this.instance.columnIndexMapper.getRenderableFromVisualIndex(column) !== null) {
|
572
|
+
count += 1;
|
573
|
+
}
|
574
|
+
}
|
575
|
+
return count;
|
576
|
+
}
|
577
|
+
|
578
|
+
/**
|
579
|
+
* The function returns the number of renderable row indexes within the passed range of the visual indexes.
|
580
|
+
*
|
581
|
+
* @param {number} rowStart The row visual start index.
|
582
|
+
* @param {number} rowEnd The row visual end index.
|
583
|
+
* @returns {number}
|
584
|
+
*/
|
585
|
+
countRenderableRowsInRange(rowStart, rowEnd) {
|
586
|
+
let count = 0;
|
587
|
+
for (let row = rowStart; row <= rowEnd; row++) {
|
588
|
+
if (this.instance.rowIndexMapper.getRenderableFromVisualIndex(row) !== null) {
|
589
|
+
count += 1;
|
590
|
+
}
|
591
|
+
}
|
592
|
+
return count;
|
593
|
+
}
|
594
|
+
|
553
595
|
/**
|
554
596
|
* Checks if at least one cell than belongs to the main table is not covered by the top, left or
|
555
597
|
* bottom overlay.
|
@@ -570,6 +612,7 @@ class TableView {
|
|
570
612
|
initializeWalkontable() {
|
571
613
|
const priv = privatePool.get(this);
|
572
614
|
const walkontableConfig = {
|
615
|
+
ariaTags: this.settings.ariaTags,
|
573
616
|
rtlMode: this.instance.isRtl(),
|
574
617
|
externalRowCalculator: this.instance.getPlugin('autoRowSize') && this.instance.getPlugin('autoRowSize').isEnabled(),
|
575
618
|
table: priv.table,
|
@@ -769,20 +812,78 @@ class TableView {
|
|
769
812
|
},
|
770
813
|
beforeDraw: (force, skipRender) => this.beforeRender(force, skipRender),
|
771
814
|
onDraw: force => this.afterRender(force),
|
772
|
-
|
773
|
-
|
815
|
+
onBeforeViewportScrollVertically: renderableRow => {
|
816
|
+
const rowMapper = this.instance.rowIndexMapper;
|
817
|
+
const areColumnHeadersSelected = renderableRow < 0;
|
818
|
+
let visualRow = renderableRow;
|
819
|
+
if (!areColumnHeadersSelected) {
|
820
|
+
visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
|
821
|
+
|
822
|
+
// for an empty data return index as is
|
823
|
+
if (visualRow === null) {
|
824
|
+
return renderableRow;
|
825
|
+
}
|
826
|
+
}
|
827
|
+
visualRow = this.instance.runHooks('beforeViewportScrollVertically', visualRow);
|
828
|
+
this.instance.runHooks('beforeViewportScroll');
|
829
|
+
if (!areColumnHeadersSelected) {
|
830
|
+
return rowMapper.getRenderableFromVisualIndex(visualRow);
|
831
|
+
}
|
832
|
+
return visualRow;
|
833
|
+
},
|
834
|
+
onBeforeViewportScrollHorizontally: renderableColumn => {
|
835
|
+
const columnMapper = this.instance.columnIndexMapper;
|
836
|
+
const areRowHeadersSelected = renderableColumn < 0;
|
837
|
+
let visualColumn = renderableColumn;
|
838
|
+
if (!areRowHeadersSelected) {
|
839
|
+
visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
|
840
|
+
|
841
|
+
// for an empty data return index as is
|
842
|
+
if (visualColumn === null) {
|
843
|
+
return renderableColumn;
|
844
|
+
}
|
845
|
+
}
|
846
|
+
visualColumn = this.instance.runHooks('beforeViewportScrollHorizontally', visualColumn);
|
847
|
+
this.instance.runHooks('beforeViewportScroll');
|
848
|
+
if (!areRowHeadersSelected) {
|
849
|
+
return columnMapper.getRenderableFromVisualIndex(visualColumn);
|
850
|
+
}
|
851
|
+
return visualColumn;
|
852
|
+
},
|
853
|
+
onScrollVertically: () => {
|
854
|
+
this.instance.runHooks('afterScrollVertically');
|
855
|
+
this.instance.runHooks('afterScroll');
|
856
|
+
},
|
857
|
+
onScrollHorizontally: () => {
|
858
|
+
this.instance.runHooks('afterScrollHorizontally');
|
859
|
+
this.instance.runHooks('afterScroll');
|
860
|
+
},
|
774
861
|
onBeforeRemoveCellClassNames: () => this.instance.runHooks('beforeRemoveCellClassNames'),
|
775
862
|
onBeforeHighlightingRowHeader: (renderableRow, headerLevel, highlightMeta) => {
|
776
863
|
const rowMapper = this.instance.rowIndexMapper;
|
777
|
-
const
|
864
|
+
const areColumnHeadersSelected = renderableRow < 0;
|
865
|
+
let visualRow = renderableRow;
|
866
|
+
if (!areColumnHeadersSelected) {
|
867
|
+
visualRow = rowMapper.getVisualFromRenderableIndex(renderableRow);
|
868
|
+
}
|
778
869
|
const newVisualRow = this.instance.runHooks('beforeHighlightingRowHeader', visualRow, headerLevel, highlightMeta);
|
779
|
-
|
870
|
+
if (!areColumnHeadersSelected) {
|
871
|
+
return rowMapper.getRenderableFromVisualIndex(rowMapper.getNearestNotHiddenIndex(newVisualRow, 1));
|
872
|
+
}
|
873
|
+
return newVisualRow;
|
780
874
|
},
|
781
875
|
onBeforeHighlightingColumnHeader: (renderableColumn, headerLevel, highlightMeta) => {
|
782
876
|
const columnMapper = this.instance.columnIndexMapper;
|
783
|
-
const
|
877
|
+
const areRowHeadersSelected = renderableColumn < 0;
|
878
|
+
let visualColumn = renderableColumn;
|
879
|
+
if (!areRowHeadersSelected) {
|
880
|
+
visualColumn = columnMapper.getVisualFromRenderableIndex(renderableColumn);
|
881
|
+
}
|
784
882
|
const newVisualColumn = this.instance.runHooks('beforeHighlightingColumnHeader', visualColumn, headerLevel, highlightMeta);
|
785
|
-
|
883
|
+
if (!areRowHeadersSelected) {
|
884
|
+
return columnMapper.getRenderableFromVisualIndex(columnMapper.getNearestNotHiddenIndex(newVisualColumn, 1));
|
885
|
+
}
|
886
|
+
return newVisualColumn;
|
786
887
|
},
|
787
888
|
onAfterDrawSelection: (currentRow, currentColumn, layerLevel) => {
|
788
889
|
let cornersOfSelection;
|
@@ -790,10 +891,7 @@ class TableView {
|
|
790
891
|
const selectedRange = this.instance.selection.getSelectedRange();
|
791
892
|
const selectionRangeSize = selectedRange.size();
|
792
893
|
if (selectionRangeSize > 0) {
|
793
|
-
|
794
|
-
// Please look at the `SelectedRange` class and it's method for getting selection's layer for more information.
|
795
|
-
const selectionOffset = (layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0) + 1 - selectionRangeSize;
|
796
|
-
const selectionForLayer = selectedRange.peekByIndex(selectionOffset);
|
894
|
+
const selectionForLayer = selectedRange.peekByIndex(layerLevel !== null && layerLevel !== void 0 ? layerLevel : 0);
|
797
895
|
cornersOfSelection = [selectionForLayer.from.row, selectionForLayer.from.col, selectionForLayer.to.row, selectionForLayer.to.col];
|
798
896
|
}
|
799
897
|
return this.instance.runHooks('afterDrawSelection', visualRowIndex, visualColumnIndex, cornersOfSelection, layerLevel);
|
@@ -946,7 +1044,7 @@ class TableView {
|
|
946
1044
|
*/
|
947
1045
|
isSelectedOnlyCell() {
|
948
1046
|
var _this$instance$getSel, _this$instance$getSel2;
|
949
|
-
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.
|
1047
|
+
return (_this$instance$getSel = (_this$instance$getSel2 = this.instance.getSelectedRangeLast()) === null || _this$instance$getSel2 === void 0 ? void 0 : _this$instance$getSel2.isSingleCell()) !== null && _this$instance$getSel !== void 0 ? _this$instance$getSel : false;
|
950
1048
|
}
|
951
1049
|
|
952
1050
|
/**
|