handsontable 0.0.0-next-9379dd1-20231020 → 0.0.0-next-9059914-20231025
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +11 -50
- package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -38
- package/3rdparty/walkontable/src/cell/range.mjs +7 -38
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- package/3rdparty/walkontable/src/event.js +10 -12
- package/3rdparty/walkontable/src/event.mjs +10 -12
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +2 -10
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +2 -13
- package/3rdparty/walkontable/src/overlay/_base.mjs +3 -14
- package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
- package/3rdparty/walkontable/src/overlay/top.js +6 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/cells.js +0 -10
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +0 -10
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +0 -5
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +0 -5
- package/3rdparty/walkontable/src/renderer/rows.js +0 -13
- package/3rdparty/walkontable/src/renderer/rows.mjs +0 -13
- package/3rdparty/walkontable/src/renderer/table.js +0 -9
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -9
- package/3rdparty/walkontable/src/scroll.js +0 -2
- package/3rdparty/walkontable/src/scroll.mjs +0 -2
- package/3rdparty/walkontable/src/selection.js +295 -0
- package/3rdparty/walkontable/src/selection.mjs +290 -0
- package/3rdparty/walkontable/src/settings.js +4 -13
- package/3rdparty/walkontable/src/settings.mjs +4 -13
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +78 -19
- package/3rdparty/walkontable/src/table.mjs +79 -20
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +0 -3
- package/cellTypes/index.js +0 -4
- package/cellTypes/index.mjs +1 -3
- package/core.d.ts +4 -9
- package/core.js +327 -285
- package/core.mjs +327 -285
- package/dataMap/metaManager/metaSchema.js +0 -65
- package/dataMap/metaManager/metaSchema.mjs +0 -65
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -7
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -7
- package/dataMap/replaceData.js +0 -5
- package/dataMap/replaceData.mjs +0 -5
- package/dist/handsontable.css +5 -40
- package/dist/handsontable.full.css +5 -40
- package/dist/handsontable.full.js +8038 -12837
- package/dist/handsontable.full.min.css +4 -4
- package/dist/handsontable.full.min.js +141 -141
- package/dist/handsontable.js +11488 -16287
- package/dist/handsontable.min.css +3 -3
- package/dist/handsontable.min.js +21 -21
- package/dist/languages/all.js +2 -6
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +1 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +1 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +87 -15
- package/editorManager.mjs +87 -16
- package/editors/autocompleteEditor/autocompleteEditor.js +2 -53
- package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -54
- package/editors/dateEditor/dateEditor.js +7 -26
- package/editors/dateEditor/dateEditor.mjs +8 -27
- package/editors/handsontableEditor/handsontableEditor.js +1 -9
- package/editors/handsontableEditor/handsontableEditor.mjs +2 -10
- package/editors/textEditor/textEditor.js +27 -19
- package/editors/textEditor/textEditor.mjs +30 -22
- package/helpers/dom/element.js +9 -188
- package/helpers/dom/element.mjs +9 -182
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/i18n/constants.js +1 -7
- package/i18n/constants.mjs +1 -4
- package/i18n/languages/en-US.js +1 -3
- package/i18n/languages/en-US.mjs +1 -3
- package/i18n/languages/pl-PL.js +1 -3
- package/i18n/languages/pl-PL.mjs +1 -3
- package/languages/all.js +2 -6
- package/languages/en-US.js +1 -3
- package/languages/en-US.mjs +1 -3
- package/languages/index.js +2 -6
- package/languages/pl-PL.js +1 -3
- package/languages/pl-PL.mjs +1 -3
- package/package.json +99 -116
- package/pluginHooks.d.ts +1 -12
- package/pluginHooks.js +1 -152
- package/pluginHooks.mjs +1 -152
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -74
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +5 -75
- package/plugins/columnSorting/columnSorting.js +0 -43
- package/plugins/columnSorting/columnSorting.mjs +3 -44
- package/plugins/columnSorting/index.js +1 -3
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +189 -252
- package/plugins/comments/comments.mjs +190 -251
- package/plugins/contextMenu/commandExecutor.js +3 -2
- package/plugins/contextMenu/commandExecutor.mjs +3 -2
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +36 -75
- package/plugins/contextMenu/contextMenu.mjs +35 -74
- package/plugins/contextMenu/{menu/cursor.mjs → cursor.js} +10 -4
- package/plugins/contextMenu/{menu/cursor.js → cursor.mjs} +4 -6
- package/plugins/contextMenu/itemsFactory.js +3 -2
- package/plugins/contextMenu/itemsFactory.mjs +4 -3
- package/plugins/contextMenu/{menu/menu.js → menu.js} +308 -96
- package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +309 -97
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/{predefinedItems/index.js → predefinedItems.js} +14 -14
- package/plugins/contextMenu/predefinedItems.mjs +68 -0
- package/plugins/contextMenu/utils.js +151 -35
- package/plugins/contextMenu/utils.mjs +144 -35
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +78 -127
- package/plugins/copyPaste/copyPaste.mjs +79 -128
- package/plugins/copyPaste/focusableElement.js +186 -0
- package/plugins/copyPaste/focusableElement.mjs +180 -0
- package/plugins/customBorders/customBorders.js +20 -23
- package/plugins/customBorders/customBorders.mjs +21 -24
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +38 -97
- package/plugins/dropdownMenu/dropdownMenu.mjs +37 -96
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +14 -31
- package/plugins/filters/filters.mjs +14 -31
- package/plugins/filters/ui/select.js +3 -3
- package/plugins/filters/ui/select.mjs +2 -2
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +1 -3
- package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
- package/plugins/mergeCells/mergeCells.js +16 -5
- package/plugins/mergeCells/mergeCells.mjs +16 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
- package/plugins/nestedHeaders/nestedHeaders.js +10 -240
- package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
- package/plugins/nestedHeaders/stateManager/index.js +3 -102
- package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
- package/plugins/nestedRows/nestedRows.js +0 -41
- package/plugins/nestedRows/nestedRows.mjs +0 -41
- package/plugins/nestedRows/ui/headers.js +0 -11
- package/plugins/nestedRows/ui/headers.mjs +1 -12
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
- package/renderers/baseRenderer/baseRenderer.js +0 -17
- package/renderers/baseRenderer/baseRenderer.mjs +1 -18
- package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
- package/renderers/index.d.ts +0 -9
- package/selection/highlight/constants.js +15 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +71 -256
- package/selection/highlight/highlight.mjs +71 -250
- package/selection/highlight/types/activeHeader.js +8 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +18 -6
- package/selection/highlight/types/area.mjs +18 -6
- package/selection/highlight/types/{focus.js → cell.js} +7 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +9 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +7 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +18 -9
- package/selection/highlight/types/header.mjs +18 -9
- package/selection/highlight/types/index.js +35 -0
- package/selection/highlight/types/index.mjs +31 -0
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- package/selection/mouseEventHandler.js +1 -7
- package/selection/mouseEventHandler.mjs +1 -7
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +152 -321
- package/selection/selection.mjs +151 -318
- package/selection/transformation.js +90 -232
- package/selection/transformation.mjs +90 -232
- package/selection/utils.js +21 -15
- package/selection/utils.mjs +21 -16
- package/settings.d.ts +0 -4
- package/shortcuts/context.js +2 -20
- package/shortcuts/context.mjs +3 -20
- package/shortcuts/manager.js +7 -25
- package/shortcuts/manager.mjs +7 -26
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +5 -19
- package/shortcuts/utils.mjs +4 -18
- package/tableView.js +13 -111
- package/tableView.mjs +14 -112
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/selection/constants.js +0 -62
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -26
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -274
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
- package/3rdparty/walkontable/src/selection/scanner.js +0 -270
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
- package/3rdparty/walkontable/src/selection/selection.js +0 -101
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
- package/cellTypes/selectType/index.d.ts +0 -1
- package/cellTypes/selectType/index.js +0 -6
- package/cellTypes/selectType/index.mjs +0 -1
- package/cellTypes/selectType/selectType.d.ts +0 -14
- package/cellTypes/selectType/selectType.js +0 -13
- package/cellTypes/selectType/selectType.mjs +0 -8
- package/core/focusCatcher/focusDetector.js +0 -63
- package/core/focusCatcher/focusDetector.mjs +0 -59
- package/core/focusCatcher/index.js +0 -142
- package/core/focusCatcher/index.mjs +0 -138
- package/core/index.js +0 -9
- package/core/index.mjs +0 -1
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -265
- package/focusManager.mjs +0 -261
- package/helpers/a11y.js +0 -79
- package/helpers/a11y.mjs +0 -38
- package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
- package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
- package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
- package/plugins/comments/contextMenuItem/removeComment.js +0 -38
- package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
- package/plugins/contextMenu/menu/index.js +0 -9
- package/plugins/contextMenu/menu/index.mjs +0 -1
- package/plugins/contextMenu/menu/navigator.js +0 -152
- package/plugins/contextMenu/menu/navigator.mjs +0 -148
- package/plugins/contextMenu/menu/positioner.js +0 -213
- package/plugins/contextMenu/menu/positioner.mjs +0 -209
- package/plugins/contextMenu/menu/utils.js +0 -177
- package/plugins/contextMenu/menu/utils.mjs +0 -163
- package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
- package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
- package/renderers/dateRenderer/dateRenderer.js +0 -29
- package/renderers/dateRenderer/dateRenderer.mjs +0 -24
- package/renderers/dateRenderer/index.d.ts +0 -1
- package/renderers/dateRenderer/index.js +0 -6
- package/renderers/dateRenderer/index.mjs +0 -1
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
- package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
- package/renderers/handsontableRenderer/index.d.ts +0 -1
- package/renderers/handsontableRenderer/index.js +0 -6
- package/renderers/handsontableRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/index.d.ts +0 -1
- package/renderers/selectRenderer/index.js +0 -6
- package/renderers/selectRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
- package/renderers/selectRenderer/selectRenderer.js +0 -27
- package/renderers/selectRenderer/selectRenderer.mjs +0 -22
- package/selection/highlight/types/areaLayered.js +0 -31
- package/selection/highlight/types/areaLayered.mjs +0 -26
- package/selection/highlight/types/column.js +0 -27
- package/selection/highlight/types/column.mjs +0 -22
- package/selection/highlight/types/row.js +0 -27
- package/selection/highlight/types/row.mjs +0 -22
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -27
- package/shortcutContexts/commands/editor/open.mjs +0 -23
- package/shortcutContexts/commands/emptySelectedCells.js +0 -11
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/index.js +0 -35
- package/shortcutContexts/commands/index.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
- package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
- package/shortcutContexts/commands/selectAll.js +0 -12
- package/shortcutContexts/commands/selectAll.mjs +0 -8
- package/shortcutContexts/constants.js +0 -13
- package/shortcutContexts/constants.mjs +0 -8
- package/shortcutContexts/editor.js +0 -25
- package/shortcutContexts/editor.mjs +0 -21
- package/shortcutContexts/grid.js +0 -163
- package/shortcutContexts/grid.mjs +0 -159
- package/shortcutContexts/index.js +0 -24
- package/shortcutContexts/index.mjs +0 -11
@@ -0,0 +1,180 @@
|
|
1
|
+
import EventManager from "../../eventManager.mjs";
|
2
|
+
import localHooks from "../../mixins/localHooks.mjs";
|
3
|
+
import { mixin } from "../../helpers/object.mjs";
|
4
|
+
import { isMobileBrowser } from "../../helpers/browser.mjs";
|
5
|
+
import { selectElementIfAllowed } from "../../helpers/dom/element.mjs";
|
6
|
+
/**
|
7
|
+
* @private
|
8
|
+
* @class FocusableWrapper
|
9
|
+
*/
|
10
|
+
class FocusableWrapper {
|
11
|
+
constructor(container) {
|
12
|
+
this.rootDocument = container.defaultView ? container : container.ownerDocument;
|
13
|
+
/**
|
14
|
+
* The main/operational focusable element.
|
15
|
+
*
|
16
|
+
* @type {HTMLElement}
|
17
|
+
*/
|
18
|
+
this.mainElement = null;
|
19
|
+
/**
|
20
|
+
* Instance of EventManager.
|
21
|
+
*
|
22
|
+
* @type {EventManager}
|
23
|
+
*/
|
24
|
+
this.eventManager = new EventManager(this);
|
25
|
+
/**
|
26
|
+
* An object for tracking information about event listeners attached to the focusable element.
|
27
|
+
*
|
28
|
+
* @type {WeakSet}
|
29
|
+
*/
|
30
|
+
this.listenersCount = new WeakSet();
|
31
|
+
/**
|
32
|
+
* Parent for an focusable element.
|
33
|
+
*
|
34
|
+
* @type {HTMLElement}
|
35
|
+
*/
|
36
|
+
this.container = container;
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Switch to the secondary focusable element. Used when no any main focusable element is provided.
|
41
|
+
*/
|
42
|
+
useSecondaryElement() {
|
43
|
+
const el = createOrGetSecondaryElement(this.container);
|
44
|
+
if (!this.listenersCount.has(el)) {
|
45
|
+
this.listenersCount.add(el);
|
46
|
+
forwardEventsToLocalHooks(this.eventManager, el, this);
|
47
|
+
}
|
48
|
+
this.mainElement = el;
|
49
|
+
}
|
50
|
+
|
51
|
+
/**
|
52
|
+
* Switch to the main focusable element.
|
53
|
+
*
|
54
|
+
* @param {HTMLElement} element The DOM element.
|
55
|
+
*/
|
56
|
+
setFocusableElement(element) {
|
57
|
+
if (!this.listenersCount.has(element)) {
|
58
|
+
this.listenersCount.add(element);
|
59
|
+
forwardEventsToLocalHooks(this.eventManager, element, this);
|
60
|
+
}
|
61
|
+
this.mainElement = element;
|
62
|
+
}
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Get currently set focusable element.
|
66
|
+
*
|
67
|
+
* @returns {HTMLElement}
|
68
|
+
*/
|
69
|
+
getFocusableElement() {
|
70
|
+
return this.mainElement;
|
71
|
+
}
|
72
|
+
|
73
|
+
/**
|
74
|
+
* Set focus to the focusable element.
|
75
|
+
*/
|
76
|
+
focus() {
|
77
|
+
// Add an empty space to texarea. It is necessary for safari to enable "copy" command from menu bar.
|
78
|
+
this.mainElement.value = ' ';
|
79
|
+
if (!isMobileBrowser()) {
|
80
|
+
selectElementIfAllowed(this.mainElement);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
mixin(FocusableWrapper, localHooks);
|
85
|
+
const refCounter = new WeakMap();
|
86
|
+
|
87
|
+
/**
|
88
|
+
* Create and return the FocusableWrapper instance.
|
89
|
+
*
|
90
|
+
* @param {HTMLElement} container The container element, holder for focusable elements.
|
91
|
+
* @returns {FocusableWrapper}
|
92
|
+
*/
|
93
|
+
function createElement(container) {
|
94
|
+
const focusableWrapper = new FocusableWrapper(container);
|
95
|
+
let counter = refCounter.get(container);
|
96
|
+
counter = isNaN(counter) ? 0 : counter;
|
97
|
+
refCounter.set(container, counter + 1);
|
98
|
+
return focusableWrapper;
|
99
|
+
}
|
100
|
+
|
101
|
+
/**
|
102
|
+
* Deactivate the FocusableWrapper instance.
|
103
|
+
*
|
104
|
+
* @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
|
105
|
+
*/
|
106
|
+
function deactivateElement(wrapper) {
|
107
|
+
wrapper.eventManager.clear();
|
108
|
+
}
|
109
|
+
const runLocalHooks = (eventName, subject) => event => subject.runLocalHooks(eventName, event);
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Register copy/cut/paste events and forward their actions to the subject local hooks system.
|
113
|
+
*
|
114
|
+
* @param {EventManager} eventManager The instance of the EventManager class.
|
115
|
+
* @param {HTMLElement} element The element on which the listeners are mounted.
|
116
|
+
* @param {FocusableWrapper} subject The subject object for local hooks.
|
117
|
+
*/
|
118
|
+
function forwardEventsToLocalHooks(eventManager, element, subject) {
|
119
|
+
eventManager.addEventListener(element, 'copy', runLocalHooks('copy', subject));
|
120
|
+
eventManager.addEventListener(element, 'cut', runLocalHooks('cut', subject));
|
121
|
+
eventManager.addEventListener(element, 'paste', runLocalHooks('paste', subject));
|
122
|
+
}
|
123
|
+
const secondaryElements = new WeakMap();
|
124
|
+
|
125
|
+
/**
|
126
|
+
* Create and attach newly created focusable element to the DOM.
|
127
|
+
*
|
128
|
+
* @param {HTMLElement} container The container element, holder for focusable elements.
|
129
|
+
* @returns {HTMLElement}
|
130
|
+
*/
|
131
|
+
function createOrGetSecondaryElement(container) {
|
132
|
+
const secondaryElement = secondaryElements.get(container);
|
133
|
+
if (secondaryElement) {
|
134
|
+
if (!secondaryElement.parentElement) {
|
135
|
+
container.appendChild(secondaryElement);
|
136
|
+
}
|
137
|
+
return secondaryElement;
|
138
|
+
}
|
139
|
+
const doc = container.defaultView ? container : container.ownerDocument;
|
140
|
+
const element = doc.createElement('textarea');
|
141
|
+
secondaryElements.set(container, element);
|
142
|
+
element.setAttribute('data-hot-input', ''); // Makes the element recognizable by Hot as its own component's element.
|
143
|
+
element.className = 'HandsontableCopyPaste';
|
144
|
+
element.tabIndex = -1;
|
145
|
+
element.autocomplete = 'off';
|
146
|
+
element.wrap = 'hard';
|
147
|
+
element.value = ' ';
|
148
|
+
container.appendChild(element);
|
149
|
+
return element;
|
150
|
+
}
|
151
|
+
|
152
|
+
/**
|
153
|
+
* Destroy the FocusableWrapper instance.
|
154
|
+
*
|
155
|
+
* @param {FocusableWrapper} wrapper The instance of the FocusableWrapper class.
|
156
|
+
*/
|
157
|
+
function destroyElement(wrapper) {
|
158
|
+
if (!(wrapper instanceof FocusableWrapper)) {
|
159
|
+
return;
|
160
|
+
}
|
161
|
+
let counter = refCounter.get(wrapper.container);
|
162
|
+
counter = isNaN(counter) ? 0 : counter;
|
163
|
+
if (counter > 0) {
|
164
|
+
counter -= 1;
|
165
|
+
}
|
166
|
+
deactivateElement(wrapper);
|
167
|
+
if (counter <= 0) {
|
168
|
+
counter = 0;
|
169
|
+
|
170
|
+
// Detach secondary element from the DOM.
|
171
|
+
const secondaryElement = secondaryElements.get(wrapper.container);
|
172
|
+
if (secondaryElement && secondaryElement.parentNode) {
|
173
|
+
secondaryElement.parentNode.removeChild(secondaryElement);
|
174
|
+
secondaryElements.delete(wrapper.container);
|
175
|
+
}
|
176
|
+
wrapper.mainElement = null;
|
177
|
+
}
|
178
|
+
refCounter.set(wrapper.container, counter);
|
179
|
+
}
|
180
|
+
export { createElement, deactivateElement, destroyElement };
|
@@ -167,11 +167,14 @@ class CustomBorders extends _base.BasePlugin {
|
|
167
167
|
const selectionType = (0, _selection.detectSelectionType)(selectionRanges);
|
168
168
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
169
169
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
170
|
-
selectionSchemaNormalizer(selection)
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
170
|
+
const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
|
171
|
+
for (let row = rowStart; row <= rowEnd; row += 1) {
|
172
|
+
for (let col = columnStart; col <= columnEnd; col += 1) {
|
173
|
+
(0, _array.arrayEach)(borderKeys, borderKey => {
|
174
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, (0, _utils.toInlinePropName)(borderKey));
|
175
|
+
});
|
176
|
+
}
|
177
|
+
}
|
175
178
|
});
|
176
179
|
|
177
180
|
/*
|
@@ -211,13 +214,16 @@ class CustomBorders extends _base.BasePlugin {
|
|
211
214
|
const selectionSchemaNormalizer = (0, _selection.normalizeSelectionFactory)(selectionType);
|
212
215
|
const selectedBorders = [];
|
213
216
|
(0, _array.arrayEach)(selectionRanges, selection => {
|
214
|
-
selectionSchemaNormalizer(selection)
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
217
|
+
const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
|
218
|
+
for (let row = rowStart; row <= rowEnd; row += 1) {
|
219
|
+
for (let col = columnStart; col <= columnEnd; col += 1) {
|
220
|
+
(0, _array.arrayEach)(this.savedBorders, border => {
|
221
|
+
if (border.row === row && border.col === col) {
|
222
|
+
selectedBorders.push((0, _utils.denormalizeBorder)(border));
|
223
|
+
}
|
224
|
+
});
|
225
|
+
}
|
226
|
+
}
|
221
227
|
});
|
222
228
|
return selectedBorders;
|
223
229
|
}
|
@@ -608,8 +614,7 @@ class CustomBorders extends _base.BasePlugin {
|
|
608
614
|
let check = false;
|
609
615
|
(0, _array.arrayEach)(this.hot.selection.highlight.customSelections, customSelection => {
|
610
616
|
if (border.id === customSelection.settings.id) {
|
611
|
-
|
612
|
-
(0, _array.arrayEach)(borders, borderObject => {
|
617
|
+
(0, _object.objectEach)(customSelection.instanceBorders, borderObject => {
|
613
618
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
614
619
|
});
|
615
620
|
|
@@ -643,8 +648,7 @@ class CustomBorders extends _base.BasePlugin {
|
|
643
648
|
customSelection.visualCellRange = cellRange;
|
644
649
|
customSelection.commit();
|
645
650
|
if (place) {
|
646
|
-
|
647
|
-
(0, _array.arrayEach)(borders, borderObject => {
|
651
|
+
(0, _object.objectEach)(customSelection.instanceBorders, borderObject => {
|
648
652
|
borderObject.changeBorderStyle(place, border);
|
649
653
|
});
|
650
654
|
}
|
@@ -712,13 +716,6 @@ class CustomBorders extends _base.BasePlugin {
|
|
712
716
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
713
717
|
},
|
714
718
|
disabled() {
|
715
|
-
const range = this.getSelectedRangeLast();
|
716
|
-
if (!range) {
|
717
|
-
return true;
|
718
|
-
}
|
719
|
-
if (range.isSingleHeader()) {
|
720
|
-
return true;
|
721
|
-
}
|
722
719
|
return this.selection.isSelectedByCorner();
|
723
720
|
},
|
724
721
|
submenu: {
|
@@ -4,7 +4,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
4
4
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
5
5
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
6
6
|
import { BasePlugin } from "../base/index.mjs";
|
7
|
-
import { hasOwnProperty, deepClone } from "../../helpers/object.mjs";
|
7
|
+
import { hasOwnProperty, objectEach, deepClone } from "../../helpers/object.mjs";
|
8
8
|
import { rangeEach } from "../../helpers/number.mjs";
|
9
9
|
import { arrayEach, arrayReduce, arrayMap } from "../../helpers/array.mjs";
|
10
10
|
import * as C from "../../i18n/constants.mjs";
|
@@ -160,11 +160,14 @@ export class CustomBorders extends BasePlugin {
|
|
160
160
|
const selectionType = detectSelectionType(selectionRanges);
|
161
161
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
162
162
|
arrayEach(selectionRanges, selection => {
|
163
|
-
selectionSchemaNormalizer(selection)
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
163
|
+
const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
|
164
|
+
for (let row = rowStart; row <= rowEnd; row += 1) {
|
165
|
+
for (let col = columnStart; col <= columnEnd; col += 1) {
|
166
|
+
arrayEach(borderKeys, borderKey => {
|
167
|
+
this.prepareBorderFromCustomAdded(row, col, normBorder, toInlinePropName(borderKey));
|
168
|
+
});
|
169
|
+
}
|
170
|
+
}
|
168
171
|
});
|
169
172
|
|
170
173
|
/*
|
@@ -204,13 +207,16 @@ export class CustomBorders extends BasePlugin {
|
|
204
207
|
const selectionSchemaNormalizer = normalizeSelectionFactory(selectionType);
|
205
208
|
const selectedBorders = [];
|
206
209
|
arrayEach(selectionRanges, selection => {
|
207
|
-
selectionSchemaNormalizer(selection)
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
210
|
+
const [rowStart, columnStart, rowEnd, columnEnd] = selectionSchemaNormalizer(selection);
|
211
|
+
for (let row = rowStart; row <= rowEnd; row += 1) {
|
212
|
+
for (let col = columnStart; col <= columnEnd; col += 1) {
|
213
|
+
arrayEach(this.savedBorders, border => {
|
214
|
+
if (border.row === row && border.col === col) {
|
215
|
+
selectedBorders.push(denormalizeBorder(border));
|
216
|
+
}
|
217
|
+
});
|
218
|
+
}
|
219
|
+
}
|
214
220
|
});
|
215
221
|
return selectedBorders;
|
216
222
|
}
|
@@ -601,8 +607,7 @@ export class CustomBorders extends BasePlugin {
|
|
601
607
|
let check = false;
|
602
608
|
arrayEach(this.hot.selection.highlight.customSelections, customSelection => {
|
603
609
|
if (border.id === customSelection.settings.id) {
|
604
|
-
|
605
|
-
arrayEach(borders, borderObject => {
|
610
|
+
objectEach(customSelection.instanceBorders, borderObject => {
|
606
611
|
borderObject.toggleHiddenClass(place, remove); // TODO this also bad?
|
607
612
|
});
|
608
613
|
|
@@ -636,8 +641,7 @@ export class CustomBorders extends BasePlugin {
|
|
636
641
|
customSelection.visualCellRange = cellRange;
|
637
642
|
customSelection.commit();
|
638
643
|
if (place) {
|
639
|
-
|
640
|
-
arrayEach(borders, borderObject => {
|
644
|
+
objectEach(customSelection.instanceBorders, borderObject => {
|
641
645
|
borderObject.changeBorderStyle(place, border);
|
642
646
|
});
|
643
647
|
}
|
@@ -705,13 +709,6 @@ export class CustomBorders extends BasePlugin {
|
|
705
709
|
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_BORDERS);
|
706
710
|
},
|
707
711
|
disabled() {
|
708
|
-
const range = this.getSelectedRangeLast();
|
709
|
-
if (!range) {
|
710
|
-
return true;
|
711
|
-
}
|
712
|
-
if (range.isSingleHeader()) {
|
713
|
-
return true;
|
714
|
-
}
|
715
712
|
return this.selection.isSelectedByCorner();
|
716
713
|
},
|
717
714
|
submenu: {
|
@@ -18,7 +18,7 @@ export class DropdownMenu extends BasePlugin {
|
|
18
18
|
|
19
19
|
constructor(hotInstance: Core);
|
20
20
|
isEnabled(): boolean;
|
21
|
-
open(
|
21
|
+
open(event: Event): void;
|
22
22
|
close(): void;
|
23
23
|
executeCommand(commandName: string, ...params: any): void;
|
24
24
|
}
|
@@ -3,16 +3,13 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _base = require("../base");
|
5
5
|
var _array = require("../../helpers/array");
|
6
|
-
var
|
7
|
-
var _commandExecutor = require("../contextMenu/commandExecutor");
|
8
|
-
var _utils = require("../contextMenu/utils");
|
6
|
+
var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
|
9
7
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
10
8
|
var _element = require("../../helpers/dom/element");
|
11
|
-
var _itemsFactory = require("../contextMenu/itemsFactory");
|
12
|
-
var _menu = require("../contextMenu/menu");
|
9
|
+
var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
|
10
|
+
var _menu = _interopRequireDefault(require("../contextMenu/menu"));
|
13
11
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
14
12
|
var _predefinedItems = require("../contextMenu/predefinedItems");
|
15
|
-
var _a11y = require("../../helpers/a11y");
|
16
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
14
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
|
18
15
|
_pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
|
@@ -24,7 +21,6 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
|
|
24
21
|
const PLUGIN_PRIORITY = 230;
|
25
22
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
26
23
|
const BUTTON_CLASS_NAME = 'changeType';
|
27
|
-
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
28
24
|
|
29
25
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
30
26
|
/**
|
@@ -111,7 +107,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
111
107
|
* @private
|
112
108
|
* @type {CommandExecutor}
|
113
109
|
*/
|
114
|
-
this.commandExecutor = new _commandExecutor.
|
110
|
+
this.commandExecutor = new _commandExecutor.default(this.hot);
|
115
111
|
/**
|
116
112
|
* Instance of {@link ItemsFactory}.
|
117
113
|
*
|
@@ -152,7 +148,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
152
148
|
if (this.enabled) {
|
153
149
|
return;
|
154
150
|
}
|
155
|
-
this.itemsFactory = new _itemsFactory.
|
151
|
+
this.itemsFactory = new _itemsFactory.default(this.hot, DropdownMenu.DEFAULT_ITEMS);
|
156
152
|
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
157
153
|
const predefinedItems = {
|
158
154
|
items: this.itemsFactory.getItems(settings)
|
@@ -161,7 +157,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
161
157
|
if (typeof settings.callback === 'function') {
|
162
158
|
this.commandExecutor.setCommonCallback(settings.callback);
|
163
159
|
}
|
164
|
-
this.registerShortcuts();
|
165
160
|
super.enablePlugin();
|
166
161
|
this.callOnPluginsReady(() => {
|
167
162
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -170,7 +165,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
170
165
|
if (this.menu) {
|
171
166
|
this.menu.destroy();
|
172
167
|
}
|
173
|
-
this.menu = new _menu.
|
168
|
+
this.menu = new _menu.default(this.hot, {
|
174
169
|
className: 'htDropdownMenu',
|
175
170
|
keepInViewport: true,
|
176
171
|
container: settings.uiContainer || this.hot.rootDocument.body
|
@@ -212,66 +207,9 @@ class DropdownMenu extends _base.BasePlugin {
|
|
212
207
|
if (this.menu) {
|
213
208
|
this.menu.destroy();
|
214
209
|
}
|
215
|
-
this.unregisterShortcuts();
|
216
210
|
super.disablePlugin();
|
217
211
|
}
|
218
212
|
|
219
|
-
/**
|
220
|
-
* Register shortcuts responsible for toggling dropdown menu.
|
221
|
-
*
|
222
|
-
* @private
|
223
|
-
*/
|
224
|
-
registerShortcuts() {
|
225
|
-
const context = this.hot.getShortcutManager().getContext('grid');
|
226
|
-
const callback = () => {
|
227
|
-
const {
|
228
|
-
highlight
|
229
|
-
} = this.hot.getSelectedRangeLast();
|
230
|
-
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
231
|
-
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
232
|
-
const {
|
233
|
-
from
|
234
|
-
} = this.hot.getSelectedRangeLast();
|
235
|
-
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
236
|
-
const target = this.hot.getCell(-1, from.col, true);
|
237
|
-
const rect = target.getBoundingClientRect();
|
238
|
-
this.open({
|
239
|
-
left: rect.left + offset.left,
|
240
|
-
top: rect.top + target.offsetHeight + offset.top
|
241
|
-
}, {
|
242
|
-
left: rect.width
|
243
|
-
});
|
244
|
-
}
|
245
|
-
};
|
246
|
-
context.addShortcuts([{
|
247
|
-
keys: [['Shift', 'Alt', 'ArrowDown'], ['Control/Meta', 'Enter']],
|
248
|
-
callback,
|
249
|
-
runOnlyIf: () => {
|
250
|
-
var _this$hot$getSelected;
|
251
|
-
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
252
|
-
},
|
253
|
-
captureCtrl: true,
|
254
|
-
group: SHORTCUTS_GROUP
|
255
|
-
}, {
|
256
|
-
keys: [['Shift', 'Alt', 'ArrowDown']],
|
257
|
-
callback,
|
258
|
-
runOnlyIf: () => {
|
259
|
-
var _this$hot$getSelected2;
|
260
|
-
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
261
|
-
},
|
262
|
-
group: SHORTCUTS_GROUP
|
263
|
-
}]);
|
264
|
-
}
|
265
|
-
|
266
|
-
/**
|
267
|
-
* Unregister shortcuts responsible for toggling dropdown menu.
|
268
|
-
*
|
269
|
-
* @private
|
270
|
-
*/
|
271
|
-
unregisterShortcuts() {
|
272
|
-
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
273
|
-
}
|
274
|
-
|
275
213
|
/**
|
276
214
|
* Registers the DOM listeners.
|
277
215
|
*
|
@@ -284,30 +222,23 @@ class DropdownMenu extends _base.BasePlugin {
|
|
284
222
|
/**
|
285
223
|
* Opens menu and re-position it based on the passed coordinates.
|
286
224
|
*
|
287
|
-
* @param {
|
288
|
-
*
|
289
|
-
*
|
290
|
-
*
|
291
|
-
*
|
292
|
-
* the offset to the menu position.
|
225
|
+
* @param {object|Event} position An object with `pageX` and `pageY` properties which contains values relative to
|
226
|
+
* the top left of the fully rendered content area in the browser or with `clientX`
|
227
|
+
* and `clientY` properties which contains values relative to the upper left edge
|
228
|
+
* of the content area (the viewport) of the browser window. This object is structurally
|
229
|
+
* compatible with native mouse event so it can be used either.
|
293
230
|
* @fires Hooks#beforeDropdownMenuShow
|
294
231
|
* @fires Hooks#afterDropdownMenuShow
|
295
232
|
*/
|
233
|
+
|
296
234
|
open(position) {
|
297
|
-
|
298
|
-
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
299
|
-
above: 0,
|
300
|
-
below: 0,
|
301
|
-
left: 0,
|
302
|
-
right: 0
|
303
|
-
};
|
304
|
-
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
235
|
+
if (!this.menu) {
|
305
236
|
return;
|
306
237
|
}
|
307
238
|
this.menu.open();
|
308
|
-
(
|
309
|
-
this.menu.setOffset(
|
310
|
-
}
|
239
|
+
if (position.width) {
|
240
|
+
this.menu.setOffset('left', position.width);
|
241
|
+
}
|
311
242
|
this.menu.setPosition(position);
|
312
243
|
}
|
313
244
|
|
@@ -315,8 +246,10 @@ class DropdownMenu extends _base.BasePlugin {
|
|
315
246
|
* Closes dropdown menu.
|
316
247
|
*/
|
317
248
|
close() {
|
318
|
-
|
319
|
-
|
249
|
+
if (!this.menu) {
|
250
|
+
return;
|
251
|
+
}
|
252
|
+
this.menu.close();
|
320
253
|
}
|
321
254
|
|
322
255
|
/**
|
@@ -381,14 +314,26 @@ class DropdownMenu extends _base.BasePlugin {
|
|
381
314
|
*/
|
382
315
|
onTableClick(event) {
|
383
316
|
event.stopPropagation();
|
384
|
-
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
385
|
-
|
317
|
+
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME) && !this.menu.isOpened()) {
|
318
|
+
let offsetTop = 0;
|
319
|
+
let offsetLeft = 0;
|
320
|
+
if (this.hot.rootDocument !== this.menu.container.ownerDocument) {
|
321
|
+
const {
|
322
|
+
frameElement
|
323
|
+
} = this.hot.rootWindow;
|
324
|
+
const {
|
325
|
+
top,
|
326
|
+
left
|
327
|
+
} = frameElement.getBoundingClientRect();
|
328
|
+
offsetTop = top;
|
329
|
+
offsetLeft = left;
|
330
|
+
}
|
386
331
|
const rect = event.target.getBoundingClientRect();
|
387
332
|
this.open({
|
388
|
-
left: rect.left +
|
389
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
390
|
-
|
391
|
-
|
333
|
+
left: rect.left + offsetLeft,
|
334
|
+
top: rect.top + event.target.offsetHeight + 3 + offsetTop,
|
335
|
+
width: rect.width,
|
336
|
+
height: rect.height
|
392
337
|
});
|
393
338
|
}
|
394
339
|
}
|
@@ -427,10 +372,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
427
372
|
const button = this.hot.rootDocument.createElement('button');
|
428
373
|
button.className = BUTTON_CLASS_NAME;
|
429
374
|
button.type = 'button';
|
430
|
-
button.tabIndex = -1;
|
431
|
-
if (this.hot.getSettings().ariaTags) {
|
432
|
-
(0, _element.setAttribute)(button, [(0, _a11y.A11Y_HIDDEN)()]);
|
433
|
-
}
|
434
375
|
|
435
376
|
// prevent page reload on button click
|
436
377
|
button.onclick = function () {
|