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
@@ -3,7 +3,8 @@ import moment from 'moment';
|
|
3
3
|
import Pikaday from 'pikaday';
|
4
4
|
import { TextEditor } from "../textEditor/index.mjs";
|
5
5
|
import EventManager from "../../eventManager.mjs";
|
6
|
-
import { addClass, outerHeight, outerWidth } from "../../helpers/dom/element.mjs";
|
6
|
+
import { addClass, hasClass, outerHeight, outerWidth, setAttribute } from "../../helpers/dom/element.mjs";
|
7
|
+
import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
|
7
8
|
import { deepExtend } from "../../helpers/object.mjs";
|
8
9
|
import { isFunctionKey } from "../../helpers/unicode.mjs";
|
9
10
|
export const EDITOR_TYPE = 'date';
|
@@ -39,7 +40,7 @@ export class DateEditor extends TextEditor {
|
|
39
40
|
throw new Error('You need to include Pikaday to your project.');
|
40
41
|
}
|
41
42
|
super.init();
|
42
|
-
this.
|
43
|
+
this.hot.addHook('afterDestroy', () => {
|
43
44
|
this.parentDestroyed = true;
|
44
45
|
this.destroyElements();
|
45
46
|
});
|
@@ -64,7 +65,21 @@ export class DateEditor extends TextEditor {
|
|
64
65
|
/**
|
65
66
|
* Prevent recognizing clicking on datepicker as clicking outside of table.
|
66
67
|
*/
|
67
|
-
eventManager.addEventListener(this.datePicker, 'mousedown', event =>
|
68
|
+
eventManager.addEventListener(this.datePicker, 'mousedown', event => {
|
69
|
+
if (hasClass(event.target, 'pika-day')) {
|
70
|
+
this.hideDatepicker();
|
71
|
+
}
|
72
|
+
event.stopPropagation();
|
73
|
+
});
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Prevent caret movement in the TEXTAREA when navigating over the date picker.
|
77
|
+
*/
|
78
|
+
eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
|
79
|
+
if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
|
80
|
+
event.preventDefault();
|
81
|
+
}
|
82
|
+
});
|
68
83
|
}
|
69
84
|
|
70
85
|
/**
|
@@ -105,6 +120,9 @@ export class DateEditor extends TextEditor {
|
|
105
120
|
const editorContext = shortcutManager.getContext('editor');
|
106
121
|
super.open();
|
107
122
|
this.showDatepicker(event);
|
123
|
+
if (this.hot.getSettings().ariaTags) {
|
124
|
+
setAttribute(this.TD, [A11Y_EXPANDED('true')]);
|
125
|
+
}
|
108
126
|
editorContext.addShortcut({
|
109
127
|
keys: [['Enter']],
|
110
128
|
callback: keyboardEvent => {
|
@@ -127,9 +145,12 @@ export class DateEditor extends TextEditor {
|
|
127
145
|
if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
|
128
146
|
this.$datePicker.destroy();
|
129
147
|
}
|
130
|
-
this.
|
131
|
-
this.
|
148
|
+
this.hot._registerTimeout(() => {
|
149
|
+
this.hot._refreshBorders();
|
132
150
|
});
|
151
|
+
if (this.TD && this.hot.getSettings().ariaTags) {
|
152
|
+
setAttribute(this.TD, [A11Y_EXPANDED('false')]);
|
153
|
+
}
|
133
154
|
const shortcutManager = this.hot.getShortcutManager();
|
134
155
|
const editorContext = shortcutManager.getContext('editor');
|
135
156
|
editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
|
@@ -147,7 +168,6 @@ export class DateEditor extends TextEditor {
|
|
147
168
|
let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
148
169
|
if (restoreOriginalValue) {
|
149
170
|
// pressed ESC, restore original value
|
150
|
-
// var value = this.instance.getDataAtCell(this.row, this.col);
|
151
171
|
const value = this.originalValue;
|
152
172
|
if (value !== void 0) {
|
153
173
|
this.setValue(value);
|
@@ -164,7 +184,7 @@ export class DateEditor extends TextEditor {
|
|
164
184
|
showDatepicker(event) {
|
165
185
|
const offset = this.TD.getBoundingClientRect();
|
166
186
|
const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
|
167
|
-
const isMouseDown = this.
|
187
|
+
const isMouseDown = this.hot.view.isMouseDown();
|
168
188
|
const isMeta = event ? isFunctionKey(event.keyCode) : false;
|
169
189
|
let dateStr;
|
170
190
|
this.datePicker.style.display = 'block';
|
@@ -243,7 +263,6 @@ export class DateEditor extends TextEditor {
|
|
243
263
|
dateStr = moment(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
|
244
264
|
}
|
245
265
|
this.setValue(dateStr);
|
246
|
-
this.hideDatepicker();
|
247
266
|
if (origOnSelect) {
|
248
267
|
origOnSelect();
|
249
268
|
}
|
@@ -6,6 +6,7 @@ var _element = require("../../helpers/dom/element");
|
|
6
6
|
var _event = require("../../helpers/dom/event");
|
7
7
|
var _object = require("../../helpers/object");
|
8
8
|
var _editorManager = require("../../editorManager");
|
9
|
+
var _a11y = require("../../helpers/a11y");
|
9
10
|
const SHORTCUTS_GROUP = 'handsontableEditor';
|
10
11
|
const EDITOR_TYPE = 'handsontable';
|
11
12
|
|
@@ -42,6 +43,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
42
43
|
}
|
43
44
|
(0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length);
|
44
45
|
this.refreshDimensions();
|
46
|
+
if (this.hot.getSettings().ariaTags) {
|
47
|
+
(0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
|
48
|
+
}
|
45
49
|
}
|
46
50
|
|
47
51
|
/**
|
@@ -53,6 +57,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
53
57
|
}
|
54
58
|
this.removeHooksByKey('beforeKeyDown');
|
55
59
|
super.close();
|
60
|
+
if (this.hot.getSettings().ariaTags) {
|
61
|
+
(0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
|
62
|
+
}
|
56
63
|
}
|
57
64
|
|
58
65
|
/**
|
@@ -81,6 +88,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
81
88
|
fillHandle: false,
|
82
89
|
autoWrapCol: false,
|
83
90
|
autoWrapRow: false,
|
91
|
+
ariaTags: false,
|
84
92
|
afterOnCellMouseDown(_, coords) {
|
85
93
|
const sourceValue = this.getSourceData(coords.row, coords.col);
|
86
94
|
|
@@ -149,7 +157,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
149
157
|
}
|
150
158
|
|
151
159
|
/**
|
152
|
-
*
|
160
|
+
* Assigns afterDestroy callback to prevent memory leaks.
|
153
161
|
*
|
154
162
|
* @private
|
155
163
|
*/
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import { TextEditor } from "../textEditor/index.mjs";
|
2
|
-
import { setCaretPosition } from "../../helpers/dom/element.mjs";
|
2
|
+
import { setAttribute, setCaretPosition } from "../../helpers/dom/element.mjs";
|
3
3
|
import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
|
4
4
|
import { extend } from "../../helpers/object.mjs";
|
5
5
|
import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
|
6
|
+
import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
|
6
7
|
const SHORTCUTS_GROUP = 'handsontableEditor';
|
7
8
|
export const EDITOR_TYPE = 'handsontable';
|
8
9
|
|
@@ -38,6 +39,9 @@ export class HandsontableEditor extends TextEditor {
|
|
38
39
|
}
|
39
40
|
setCaretPosition(this.TEXTAREA, 0, this.TEXTAREA.value.length);
|
40
41
|
this.refreshDimensions();
|
42
|
+
if (this.hot.getSettings().ariaTags) {
|
43
|
+
setAttribute(this.TD, [A11Y_EXPANDED('true')]);
|
44
|
+
}
|
41
45
|
}
|
42
46
|
|
43
47
|
/**
|
@@ -49,6 +53,9 @@ export class HandsontableEditor extends TextEditor {
|
|
49
53
|
}
|
50
54
|
this.removeHooksByKey('beforeKeyDown');
|
51
55
|
super.close();
|
56
|
+
if (this.hot.getSettings().ariaTags) {
|
57
|
+
setAttribute(this.TD, [A11Y_EXPANDED('false')]);
|
58
|
+
}
|
52
59
|
}
|
53
60
|
|
54
61
|
/**
|
@@ -77,6 +84,7 @@ export class HandsontableEditor extends TextEditor {
|
|
77
84
|
fillHandle: false,
|
78
85
|
autoWrapCol: false,
|
79
86
|
autoWrapRow: false,
|
87
|
+
ariaTags: false,
|
80
88
|
afterOnCellMouseDown(_, coords) {
|
81
89
|
const sourceValue = this.getSourceData(coords.row, coords.col);
|
82
90
|
|
@@ -145,7 +153,7 @@ export class HandsontableEditor extends TextEditor {
|
|
145
153
|
}
|
146
154
|
|
147
155
|
/**
|
148
|
-
*
|
156
|
+
* Assigns afterDestroy callback to prevent memory leaks.
|
149
157
|
*
|
150
158
|
* @private
|
151
159
|
*/
|
@@ -12,6 +12,7 @@ var _mixed = require("../../helpers/mixed");
|
|
12
12
|
var _editorManager = require("../../editorManager");
|
13
13
|
var _baseEditor2 = require("../baseEditor/baseEditor");
|
14
14
|
var _caretPositioner = require("./caretPositioner");
|
15
|
+
var _a11y = require("../../helpers/a11y");
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16
17
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
17
18
|
const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
|
@@ -122,7 +123,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
122
123
|
*/
|
123
124
|
close() {
|
124
125
|
this.autoResize.unObserve();
|
125
|
-
if (this.hot.rootDocument.activeElement
|
126
|
+
if ((0, _element.isThisHotChild)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
|
126
127
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
127
128
|
}
|
128
129
|
|
@@ -147,8 +148,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
147
148
|
if (!cellProperties.readOnly) {
|
148
149
|
this.refreshDimensions(true);
|
149
150
|
const {
|
150
|
-
allowInvalid
|
151
|
-
fragmentSelection
|
151
|
+
allowInvalid
|
152
152
|
} = cellProperties;
|
153
153
|
if (allowInvalid) {
|
154
154
|
// Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
|
@@ -158,13 +158,6 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
158
158
|
if (previousState !== _baseEditor.EDITOR_STATE.FINISHED) {
|
159
159
|
this.hideEditableElement();
|
160
160
|
}
|
161
|
-
|
162
|
-
// @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
|
163
|
-
// refocus has to be disabled (to make IME working).
|
164
|
-
const restoreFocus = !fragmentSelection;
|
165
|
-
if (restoreFocus && !(0, _browser.isMobileBrowser)()) {
|
166
|
-
this.focus();
|
167
|
-
}
|
168
161
|
}
|
169
162
|
}
|
170
163
|
|
@@ -201,8 +194,13 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
201
194
|
rootDocument
|
202
195
|
} = this.hot;
|
203
196
|
this.TEXTAREA = rootDocument.createElement('TEXTAREA');
|
204
|
-
|
205
|
-
|
197
|
+
|
198
|
+
// Makes the element recognizable by Hot as its own
|
199
|
+
// component's element.
|
200
|
+
(0, _element.setAttribute)(this.TEXTAREA, [['data-hot-input', ''], (0, _a11y.A11Y_TABINDEX)(-1)]);
|
201
|
+
if (this.hot.getSettings().ariaTags) {
|
202
|
+
(0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
|
203
|
+
}
|
206
204
|
(0, _element.addClass)(this.TEXTAREA, 'handsontableInput');
|
207
205
|
this.textareaStyle = this.TEXTAREA.style;
|
208
206
|
this.textareaStyle.width = 0;
|
@@ -340,8 +338,6 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
340
338
|
* @private
|
341
339
|
*/
|
342
340
|
bindEvents() {
|
343
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'cut', event => event.stopPropagation());
|
344
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'paste', event => event.stopPropagation());
|
345
341
|
if ((0, _browser.isIOS)()) {
|
346
342
|
// on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
|
347
343
|
this.eventManager.addEventListener(this.TEXTAREA, 'focusout', () => this.finishEditing(false));
|
@@ -350,11 +346,15 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
350
346
|
this.addHook('afterScrollVertically', () => this.refreshDimensions());
|
351
347
|
this.addHook('afterColumnResize', () => {
|
352
348
|
this.refreshDimensions();
|
353
|
-
this.
|
349
|
+
if (this.state === _baseEditor.EDITOR_STATE.EDITING) {
|
350
|
+
this.focus();
|
351
|
+
}
|
354
352
|
});
|
355
353
|
this.addHook('afterRowResize', () => {
|
356
354
|
this.refreshDimensions();
|
357
|
-
this.
|
355
|
+
if (this.state === _baseEditor.EDITOR_STATE.EDITING) {
|
356
|
+
this.focus();
|
357
|
+
}
|
358
358
|
});
|
359
359
|
}
|
360
360
|
|
@@ -416,9 +416,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
416
416
|
runOnlyIf: event => !this.hot.selection.isMultiple() &&
|
417
417
|
// We trigger a data population for multiple selection.
|
418
418
|
// catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
|
419
|
-
!event.altKey
|
420
|
-
relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
|
421
|
-
position: 'before'
|
419
|
+
!event.altKey
|
422
420
|
}, {
|
423
421
|
keys: [['Meta', 'Enter']],
|
424
422
|
callback: () => {
|
@@ -426,19 +424,13 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
426
424
|
return false; // Will block closing editor.
|
427
425
|
},
|
428
426
|
|
429
|
-
runOnlyIf: () => !this.hot.selection.isMultiple()
|
430
|
-
// We trigger a data population for multiple selection.
|
431
|
-
relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
|
432
|
-
position: 'before'
|
427
|
+
runOnlyIf: () => !this.hot.selection.isMultiple() // We trigger a data population for multiple selection.
|
433
428
|
}, {
|
434
429
|
keys: [['Alt', 'Enter']],
|
435
430
|
callback: () => {
|
436
431
|
insertNewLine();
|
437
432
|
return false; // Will block closing editor.
|
438
|
-
}
|
439
|
-
|
440
|
-
relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
|
441
|
-
position: 'before'
|
433
|
+
}
|
442
434
|
}, {
|
443
435
|
// TODO: Duplicated part of code (callback to shortcut)
|
444
436
|
keys: [['PageUp']],
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
|
2
2
|
import EventManager from "../../eventManager.mjs";
|
3
|
-
import {
|
4
|
-
import { addClass, getComputedStyle, setCaretPosition, hasClass, removeClass } from "../../helpers/dom/element.mjs";
|
3
|
+
import { isEdge, isIOS } from "../../helpers/browser.mjs";
|
4
|
+
import { addClass, getComputedStyle, isThisHotChild, setCaretPosition, hasClass, removeClass, setAttribute } from "../../helpers/dom/element.mjs";
|
5
5
|
import { rangeEach } from "../../helpers/number.mjs";
|
6
6
|
import { KEY_CODES } from "../../helpers/unicode.mjs";
|
7
7
|
import { autoResize } from "../../3rdparty/autoResize/index.mjs";
|
8
8
|
import { isDefined } from "../../helpers/mixed.mjs";
|
9
|
-
import { SHORTCUTS_GROUP_NAVIGATION
|
9
|
+
import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
|
10
10
|
import { SHORTCUTS_GROUP_EDITOR } from "../baseEditor/baseEditor.mjs";
|
11
11
|
import { updateCaretPosition } from "./caretPositioner.mjs";
|
12
|
+
import { A11Y_HIDDEN, A11Y_TABINDEX } from "../../helpers/a11y.mjs";
|
12
13
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
13
14
|
const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
|
14
15
|
const SHORTCUTS_GROUP = 'textEditor';
|
@@ -117,7 +118,7 @@ export class TextEditor extends BaseEditor {
|
|
117
118
|
*/
|
118
119
|
close() {
|
119
120
|
this.autoResize.unObserve();
|
120
|
-
if (this.hot.rootDocument.activeElement
|
121
|
+
if (isThisHotChild(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
|
121
122
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
122
123
|
}
|
123
124
|
|
@@ -142,8 +143,7 @@ export class TextEditor extends BaseEditor {
|
|
142
143
|
if (!cellProperties.readOnly) {
|
143
144
|
this.refreshDimensions(true);
|
144
145
|
const {
|
145
|
-
allowInvalid
|
146
|
-
fragmentSelection
|
146
|
+
allowInvalid
|
147
147
|
} = cellProperties;
|
148
148
|
if (allowInvalid) {
|
149
149
|
// Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
|
@@ -153,13 +153,6 @@ export class TextEditor extends BaseEditor {
|
|
153
153
|
if (previousState !== EDITOR_STATE.FINISHED) {
|
154
154
|
this.hideEditableElement();
|
155
155
|
}
|
156
|
-
|
157
|
-
// @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
|
158
|
-
// refocus has to be disabled (to make IME working).
|
159
|
-
const restoreFocus = !fragmentSelection;
|
160
|
-
if (restoreFocus && !isMobileBrowser()) {
|
161
|
-
this.focus();
|
162
|
-
}
|
163
156
|
}
|
164
157
|
}
|
165
158
|
|
@@ -196,8 +189,13 @@ export class TextEditor extends BaseEditor {
|
|
196
189
|
rootDocument
|
197
190
|
} = this.hot;
|
198
191
|
this.TEXTAREA = rootDocument.createElement('TEXTAREA');
|
199
|
-
|
200
|
-
|
192
|
+
|
193
|
+
// Makes the element recognizable by Hot as its own
|
194
|
+
// component's element.
|
195
|
+
setAttribute(this.TEXTAREA, [['data-hot-input', ''], A11Y_TABINDEX(-1)]);
|
196
|
+
if (this.hot.getSettings().ariaTags) {
|
197
|
+
setAttribute(this.TEXTAREA, [A11Y_HIDDEN()]);
|
198
|
+
}
|
201
199
|
addClass(this.TEXTAREA, 'handsontableInput');
|
202
200
|
this.textareaStyle = this.TEXTAREA.style;
|
203
201
|
this.textareaStyle.width = 0;
|
@@ -335,8 +333,6 @@ export class TextEditor extends BaseEditor {
|
|
335
333
|
* @private
|
336
334
|
*/
|
337
335
|
bindEvents() {
|
338
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'cut', event => event.stopPropagation());
|
339
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'paste', event => event.stopPropagation());
|
340
336
|
if (isIOS()) {
|
341
337
|
// on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
|
342
338
|
this.eventManager.addEventListener(this.TEXTAREA, 'focusout', () => this.finishEditing(false));
|
@@ -345,11 +341,15 @@ export class TextEditor extends BaseEditor {
|
|
345
341
|
this.addHook('afterScrollVertically', () => this.refreshDimensions());
|
346
342
|
this.addHook('afterColumnResize', () => {
|
347
343
|
this.refreshDimensions();
|
348
|
-
this.
|
344
|
+
if (this.state === EDITOR_STATE.EDITING) {
|
345
|
+
this.focus();
|
346
|
+
}
|
349
347
|
});
|
350
348
|
this.addHook('afterRowResize', () => {
|
351
349
|
this.refreshDimensions();
|
352
|
-
this.
|
350
|
+
if (this.state === EDITOR_STATE.EDITING) {
|
351
|
+
this.focus();
|
352
|
+
}
|
353
353
|
});
|
354
354
|
}
|
355
355
|
|
@@ -411,9 +411,7 @@ export class TextEditor extends BaseEditor {
|
|
411
411
|
runOnlyIf: event => !this.hot.selection.isMultiple() &&
|
412
412
|
// We trigger a data population for multiple selection.
|
413
413
|
// catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
|
414
|
-
!event.altKey
|
415
|
-
relativeToGroup: EDITOR_MANAGER_GROUP,
|
416
|
-
position: 'before'
|
414
|
+
!event.altKey
|
417
415
|
}, {
|
418
416
|
keys: [['Meta', 'Enter']],
|
419
417
|
callback: () => {
|
@@ -421,19 +419,13 @@ export class TextEditor extends BaseEditor {
|
|
421
419
|
return false; // Will block closing editor.
|
422
420
|
},
|
423
421
|
|
424
|
-
runOnlyIf: () => !this.hot.selection.isMultiple()
|
425
|
-
// We trigger a data population for multiple selection.
|
426
|
-
relativeToGroup: EDITOR_MANAGER_GROUP,
|
427
|
-
position: 'before'
|
422
|
+
runOnlyIf: () => !this.hot.selection.isMultiple() // We trigger a data population for multiple selection.
|
428
423
|
}, {
|
429
424
|
keys: [['Alt', 'Enter']],
|
430
425
|
callback: () => {
|
431
426
|
insertNewLine();
|
432
427
|
return false; // Will block closing editor.
|
433
|
-
}
|
434
|
-
|
435
|
-
relativeToGroup: EDITOR_MANAGER_GROUP,
|
436
|
-
position: 'before'
|
428
|
+
}
|
437
429
|
}, {
|
438
430
|
// TODO: Duplicated part of code (callback to shortcut)
|
439
431
|
keys: [['PageUp']],
|
@@ -0,0 +1,12 @@
|
|
1
|
+
type FocusMode = 'cell' | 'mixed';
|
2
|
+
|
3
|
+
export interface FocusManager {
|
4
|
+
getFocusMode(): FocusMode;
|
5
|
+
setFocusMode(focusMode: FocusMode): void;
|
6
|
+
getRefocusDelay(): number;
|
7
|
+
setRefocusDelay(delay: number): void;
|
8
|
+
setRefocusElementGetter(getterFn: () => HTMLElement): void;
|
9
|
+
getRefocusElement(): HTMLElement | void;
|
10
|
+
focusOnHighlightedCell(): void;
|
11
|
+
refocusToEditorTextarea(delay: number): void;
|
12
|
+
}
|