handsontable 0.0.0-next-b0a4ea2-20231024 → 0.0.0-next-9059914-20231025
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/{selection/border/border.js → border.js} +12 -7
- package/3rdparty/walkontable/src/{selection/border/border.mjs → border.mjs} +12 -7
- package/3rdparty/walkontable/src/cell/coords.d.ts +1 -6
- package/3rdparty/walkontable/src/cell/coords.js +11 -50
- package/3rdparty/walkontable/src/cell/coords.mjs +11 -50
- package/3rdparty/walkontable/src/cell/range.d.ts +2 -9
- package/3rdparty/walkontable/src/cell/range.js +7 -38
- package/3rdparty/walkontable/src/cell/range.mjs +7 -38
- package/3rdparty/walkontable/src/core/_base.js +3 -9
- package/3rdparty/walkontable/src/core/_base.mjs +3 -9
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +2 -3
- package/3rdparty/walkontable/src/core/core.mjs +2 -3
- package/3rdparty/walkontable/src/event.js +10 -12
- package/3rdparty/walkontable/src/event.mjs +10 -12
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +2 -10
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +2 -13
- package/3rdparty/walkontable/src/overlay/_base.mjs +3 -14
- package/3rdparty/walkontable/src/overlay/inlineStart.js +6 -2
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +6 -2
- package/3rdparty/walkontable/src/overlay/top.js +6 -2
- package/3rdparty/walkontable/src/overlay/top.mjs +6 -2
- package/3rdparty/walkontable/src/renderer/cells.js +0 -10
- package/3rdparty/walkontable/src/renderer/cells.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +0 -10
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +1 -11
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +0 -5
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +0 -5
- package/3rdparty/walkontable/src/renderer/rows.js +0 -13
- package/3rdparty/walkontable/src/renderer/rows.mjs +0 -13
- package/3rdparty/walkontable/src/renderer/table.js +0 -9
- package/3rdparty/walkontable/src/renderer/table.mjs +0 -9
- package/3rdparty/walkontable/src/scroll.js +0 -2
- package/3rdparty/walkontable/src/scroll.mjs +0 -2
- package/3rdparty/walkontable/src/selection.js +295 -0
- package/3rdparty/walkontable/src/selection.mjs +290 -0
- package/3rdparty/walkontable/src/settings.js +4 -13
- package/3rdparty/walkontable/src/settings.mjs +4 -13
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +0 -9
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +0 -9
- package/3rdparty/walkontable/src/table.js +78 -19
- package/3rdparty/walkontable/src/table.mjs +79 -20
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +0 -3
- package/cellTypes/index.js +0 -4
- package/cellTypes/index.mjs +1 -3
- package/core.d.ts +4 -9
- package/core.js +327 -285
- package/core.mjs +327 -285
- package/dataMap/metaManager/metaSchema.js +0 -65
- package/dataMap/metaManager/metaSchema.mjs +0 -65
- package/dataMap/metaManager/mods/extendMetaProperties.js +1 -7
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +1 -7
- package/dataMap/replaceData.js +0 -5
- package/dataMap/replaceData.mjs +0 -5
- package/dist/handsontable.css +15 -51
- package/dist/handsontable.full.css +15 -51
- package/dist/handsontable.full.js +8668 -14188
- package/dist/handsontable.full.min.css +7 -7
- package/dist/handsontable.full.min.js +136 -136
- package/dist/handsontable.js +22829 -28349
- package/dist/handsontable.min.css +6 -6
- package/dist/handsontable.min.js +24 -24
- package/dist/languages/all.js +2 -6
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +1 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +1 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +87 -15
- package/editorManager.mjs +87 -16
- package/editors/autocompleteEditor/autocompleteEditor.js +2 -53
- package/editors/autocompleteEditor/autocompleteEditor.mjs +3 -54
- package/editors/dateEditor/dateEditor.js +7 -26
- package/editors/dateEditor/dateEditor.mjs +8 -27
- package/editors/handsontableEditor/handsontableEditor.js +1 -9
- package/editors/handsontableEditor/handsontableEditor.mjs +2 -10
- package/editors/textEditor/textEditor.js +27 -19
- package/editors/textEditor/textEditor.mjs +30 -22
- package/helpers/dom/element.js +9 -188
- package/helpers/dom/element.mjs +9 -182
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +0 -1
- package/helpers/number.js +0 -18
- package/helpers/number.mjs +0 -17
- package/i18n/constants.js +1 -7
- package/i18n/constants.mjs +1 -4
- package/i18n/languages/en-US.js +1 -3
- package/i18n/languages/en-US.mjs +1 -3
- package/i18n/languages/pl-PL.js +1 -3
- package/i18n/languages/pl-PL.mjs +1 -3
- package/languages/all.js +2 -6
- package/languages/en-US.js +1 -3
- package/languages/en-US.mjs +1 -3
- package/languages/index.js +2 -6
- package/languages/pl-PL.js +1 -3
- package/languages/pl-PL.mjs +1 -3
- package/package.json +99 -116
- package/pluginHooks.d.ts +1 -12
- package/pluginHooks.js +1 -152
- package/pluginHooks.mjs +1 -152
- package/plugins/collapsibleColumns/collapsibleColumns.js +4 -74
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +5 -75
- package/plugins/columnSorting/columnSorting.js +0 -43
- package/plugins/columnSorting/columnSorting.mjs +3 -44
- package/plugins/columnSorting/index.js +1 -3
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +0 -1
- package/plugins/comments/commentEditor.mjs +0 -1
- package/plugins/comments/comments.js +189 -252
- package/plugins/comments/comments.mjs +190 -251
- package/plugins/contextMenu/commandExecutor.js +3 -2
- package/plugins/contextMenu/commandExecutor.mjs +3 -2
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +36 -75
- package/plugins/contextMenu/contextMenu.mjs +35 -74
- package/plugins/contextMenu/{menu/cursor.mjs → cursor.js} +10 -4
- package/plugins/contextMenu/{menu/cursor.js → cursor.mjs} +4 -6
- package/plugins/contextMenu/itemsFactory.js +3 -2
- package/plugins/contextMenu/itemsFactory.mjs +4 -3
- package/plugins/contextMenu/{menu/menu.js → menu.js} +421 -145
- package/plugins/contextMenu/{menu/menu.mjs → menu.mjs} +422 -146
- package/plugins/contextMenu/predefinedItems/alignment.js +0 -7
- package/plugins/contextMenu/predefinedItems/alignment.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.js +3 -5
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.js +3 -5
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/readOnly.js +0 -7
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +0 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/removeRow.js +5 -7
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.js +3 -5
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +3 -5
- package/plugins/contextMenu/{predefinedItems/index.js → predefinedItems.js} +14 -14
- package/plugins/contextMenu/predefinedItems.mjs +68 -0
- package/plugins/contextMenu/utils.js +151 -35
- package/plugins/contextMenu/utils.mjs +144 -35
- package/plugins/copyPaste/contextMenuItem/copy.js +0 -7
- package/plugins/copyPaste/contextMenuItem/copy.mjs +0 -7
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +1 -9
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +1 -9
- package/plugins/copyPaste/contextMenuItem/cut.js +0 -7
- package/plugins/copyPaste/contextMenuItem/cut.mjs +0 -7
- package/plugins/copyPaste/copyPaste.js +78 -127
- package/plugins/copyPaste/copyPaste.mjs +79 -128
- package/plugins/copyPaste/focusableElement.js +186 -0
- package/plugins/copyPaste/focusableElement.mjs +180 -0
- package/plugins/customBorders/customBorders.js +20 -23
- package/plugins/customBorders/customBorders.mjs +21 -24
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +40 -127
- package/plugins/dropdownMenu/dropdownMenu.mjs +39 -126
- package/plugins/filters/component/_base.js +8 -23
- package/plugins/filters/component/_base.mjs +8 -23
- package/plugins/filters/component/actionBar.js +27 -29
- package/plugins/filters/component/actionBar.mjs +23 -26
- package/plugins/filters/component/condition.js +59 -46
- package/plugins/filters/component/condition.mjs +52 -40
- package/plugins/filters/component/operators.js +22 -21
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +26 -35
- package/plugins/filters/component/value.mjs +22 -32
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +62 -106
- package/plugins/filters/filters.mjs +55 -99
- package/plugins/filters/ui/_base.js +13 -35
- package/plugins/filters/ui/_base.mjs +13 -35
- package/plugins/filters/ui/input.js +32 -43
- package/plugins/filters/ui/input.mjs +30 -42
- package/plugins/filters/ui/link.js +12 -44
- package/plugins/filters/ui/link.mjs +11 -44
- package/plugins/filters/ui/multipleSelect.js +129 -234
- package/plugins/filters/ui/multipleSelect.mjs +127 -232
- package/plugins/filters/ui/radioInput.js +18 -42
- package/plugins/filters/ui/radioInput.mjs +17 -42
- package/plugins/filters/ui/select.js +75 -144
- package/plugins/filters/ui/select.mjs +72 -142
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +1 -3
- package/plugins/manualColumnMove/manualColumnMove.mjs +1 -3
- package/plugins/mergeCells/mergeCells.js +16 -5
- package/plugins/mergeCells/mergeCells.mjs +16 -5
- package/plugins/multiColumnSorting/multiColumnSorting.js +2 -37
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +2 -37
- package/plugins/nestedHeaders/nestedHeaders.js +10 -240
- package/plugins/nestedHeaders/nestedHeaders.mjs +11 -241
- package/plugins/nestedHeaders/stateManager/index.js +3 -102
- package/plugins/nestedHeaders/stateManager/index.mjs +3 -102
- package/plugins/nestedRows/nestedRows.js +0 -41
- package/plugins/nestedRows/nestedRows.mjs +0 -41
- package/plugins/nestedRows/ui/headers.js +0 -11
- package/plugins/nestedRows/ui/headers.mjs +1 -12
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +0 -8
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +0 -8
- package/renderers/baseRenderer/baseRenderer.js +0 -17
- package/renderers/baseRenderer/baseRenderer.mjs +1 -18
- package/renderers/checkboxRenderer/checkboxRenderer.js +4 -9
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +4 -9
- package/renderers/index.d.ts +0 -9
- package/selection/highlight/constants.js +15 -0
- package/selection/highlight/constants.mjs +6 -0
- package/selection/highlight/highlight.js +71 -256
- package/selection/highlight/highlight.mjs +71 -250
- package/selection/highlight/types/activeHeader.js +8 -10
- package/selection/highlight/types/activeHeader.mjs +8 -10
- package/selection/highlight/types/area.js +18 -6
- package/selection/highlight/types/area.mjs +18 -6
- package/selection/highlight/types/{focus.js → cell.js} +7 -5
- package/selection/highlight/types/{focus.mjs → cell.mjs} +7 -5
- package/selection/highlight/types/customSelection.js +9 -7
- package/selection/highlight/types/customSelection.mjs +9 -7
- package/selection/highlight/types/fill.js +7 -5
- package/selection/highlight/types/fill.mjs +7 -5
- package/selection/highlight/types/header.js +18 -9
- package/selection/highlight/types/header.mjs +18 -9
- package/selection/highlight/types/index.js +35 -0
- package/selection/highlight/types/index.mjs +31 -0
- package/selection/highlight/visualSelection.js +27 -31
- package/selection/highlight/visualSelection.mjs +27 -31
- package/selection/index.js +7 -4
- package/selection/index.mjs +3 -2
- package/selection/mouseEventHandler.js +1 -7
- package/selection/mouseEventHandler.mjs +1 -7
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +152 -321
- package/selection/selection.mjs +151 -318
- package/selection/transformation.js +90 -232
- package/selection/transformation.mjs +90 -232
- package/selection/utils.js +21 -15
- package/selection/utils.mjs +21 -16
- package/settings.d.ts +0 -4
- package/shortcuts/context.js +4 -23
- package/shortcuts/context.mjs +5 -23
- package/shortcuts/manager.js +7 -25
- package/shortcuts/manager.mjs +7 -26
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +5 -19
- package/shortcuts/utils.mjs +4 -18
- package/tableView.js +13 -111
- package/tableView.mjs +14 -112
- package/3rdparty/walkontable/src/selection/border/constants.js +0 -16
- package/3rdparty/walkontable/src/selection/border/constants.mjs +0 -12
- package/3rdparty/walkontable/src/selection/constants.js +0 -62
- package/3rdparty/walkontable/src/selection/constants.mjs +0 -51
- package/3rdparty/walkontable/src/selection/index.js +0 -26
- package/3rdparty/walkontable/src/selection/index.mjs +0 -5
- package/3rdparty/walkontable/src/selection/manager.js +0 -274
- package/3rdparty/walkontable/src/selection/manager.mjs +0 -269
- package/3rdparty/walkontable/src/selection/scanner.js +0 -270
- package/3rdparty/walkontable/src/selection/scanner.mjs +0 -267
- package/3rdparty/walkontable/src/selection/selection.js +0 -101
- package/3rdparty/walkontable/src/selection/selection.mjs +0 -96
- package/cellTypes/selectType/index.d.ts +0 -1
- package/cellTypes/selectType/index.js +0 -6
- package/cellTypes/selectType/index.mjs +0 -1
- package/cellTypes/selectType/selectType.d.ts +0 -14
- package/cellTypes/selectType/selectType.js +0 -13
- package/cellTypes/selectType/selectType.mjs +0 -8
- package/core/focusCatcher/focusDetector.js +0 -63
- package/core/focusCatcher/focusDetector.mjs +0 -59
- package/core/focusCatcher/index.js +0 -142
- package/core/focusCatcher/index.mjs +0 -138
- package/core/index.js +0 -9
- package/core/index.mjs +0 -1
- package/focusManager.d.ts +0 -12
- package/focusManager.js +0 -265
- package/focusManager.mjs +0 -261
- package/helpers/a11y.js +0 -79
- package/helpers/a11y.mjs +0 -38
- package/plugins/comments/contextMenuItem/addEditComment.js +0 -41
- package/plugins/comments/contextMenuItem/addEditComment.mjs +0 -35
- package/plugins/comments/contextMenuItem/readOnlyComment.js +0 -49
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +0 -43
- package/plugins/comments/contextMenuItem/removeComment.js +0 -38
- package/plugins/comments/contextMenuItem/removeComment.mjs +0 -32
- package/plugins/contextMenu/menu/defaultShortcutsList.js +0 -88
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +0 -84
- package/plugins/contextMenu/menu/index.js +0 -9
- package/plugins/contextMenu/menu/index.mjs +0 -1
- package/plugins/contextMenu/menu/menuItemRenderer.js +0 -58
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +0 -54
- package/plugins/contextMenu/menu/navigator.js +0 -27
- package/plugins/contextMenu/menu/navigator.mjs +0 -23
- package/plugins/contextMenu/menu/positioner.js +0 -213
- package/plugins/contextMenu/menu/positioner.mjs +0 -209
- package/plugins/contextMenu/menu/shortcuts.js +0 -114
- package/plugins/contextMenu/menu/shortcuts.mjs +0 -110
- package/plugins/contextMenu/menu/utils.js +0 -177
- package/plugins/contextMenu/menu/utils.mjs +0 -163
- package/plugins/contextMenu/predefinedItems/index.mjs +0 -68
- package/plugins/filters/menu/focusController.js +0 -123
- package/plugins/filters/menu/focusController.mjs +0 -119
- package/plugins/filters/menu/focusNavigator.js +0 -30
- package/plugins/filters/menu/focusNavigator.mjs +0 -26
- package/renderers/dateRenderer/dateRenderer.d.ts +0 -5
- package/renderers/dateRenderer/dateRenderer.js +0 -29
- package/renderers/dateRenderer/dateRenderer.mjs +0 -24
- package/renderers/dateRenderer/index.d.ts +0 -1
- package/renderers/dateRenderer/index.js +0 -6
- package/renderers/dateRenderer/index.mjs +0 -1
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +0 -5
- package/renderers/handsontableRenderer/handsontableRenderer.js +0 -29
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +0 -24
- package/renderers/handsontableRenderer/index.d.ts +0 -1
- package/renderers/handsontableRenderer/index.js +0 -6
- package/renderers/handsontableRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/index.d.ts +0 -1
- package/renderers/selectRenderer/index.js +0 -6
- package/renderers/selectRenderer/index.mjs +0 -1
- package/renderers/selectRenderer/selectRenderer.d.ts +0 -5
- package/renderers/selectRenderer/selectRenderer.js +0 -27
- package/renderers/selectRenderer/selectRenderer.mjs +0 -22
- package/selection/highlight/types/areaLayered.js +0 -31
- package/selection/highlight/types/areaLayered.mjs +0 -26
- package/selection/highlight/types/column.js +0 -27
- package/selection/highlight/types/column.mjs +0 -22
- package/selection/highlight/types/row.js +0 -27
- package/selection/highlight/types/row.mjs +0 -22
- package/shortcutContexts/commands/editor/closeAndSave.js +0 -12
- package/shortcutContexts/commands/editor/closeAndSave.mjs +0 -8
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +0 -12
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +0 -8
- package/shortcutContexts/commands/editor/fastOpen.js +0 -16
- package/shortcutContexts/commands/editor/fastOpen.mjs +0 -12
- package/shortcutContexts/commands/editor/index.js +0 -16
- package/shortcutContexts/commands/editor/index.mjs +0 -12
- package/shortcutContexts/commands/editor/open.js +0 -27
- package/shortcutContexts/commands/editor/open.mjs +0 -23
- package/shortcutContexts/commands/emptySelectedCells.js +0 -11
- package/shortcutContexts/commands/emptySelectedCells.mjs +0 -7
- package/shortcutContexts/commands/extendCellsSelection/down.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/extendCellsSelection/index.js +0 -26
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +0 -22
- package/shortcutContexts/commands/extendCellsSelection/left.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/right.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +0 -29
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +0 -25
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +0 -19
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.js +0 -15
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +0 -11
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +0 -25
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +0 -21
- package/shortcutContexts/commands/index.js +0 -35
- package/shortcutContexts/commands/index.mjs +0 -31
- package/shortcutContexts/commands/moveCellSelection/down.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/down.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/moveCellSelection/index.js +0 -28
- package/shortcutContexts/commands/moveCellSelection/index.mjs +0 -24
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +0 -12
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +0 -8
- package/shortcutContexts/commands/moveCellSelection/left.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/left.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/right.js +0 -10
- package/shortcutContexts/commands/moveCellSelection/right.mjs +0 -6
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +0 -18
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +0 -14
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +0 -10
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +0 -21
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +0 -17
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +0 -13
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +0 -19
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +0 -15
- package/shortcutContexts/commands/moveCellSelection/up.js +0 -13
- package/shortcutContexts/commands/moveCellSelection/up.mjs +0 -9
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +0 -33
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.js +0 -29
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +0 -25
- package/shortcutContexts/commands/scrollToFocusedCell.js +0 -35
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +0 -31
- package/shortcutContexts/commands/selectAll.js +0 -12
- package/shortcutContexts/commands/selectAll.mjs +0 -8
- package/shortcutContexts/constants.js +0 -13
- package/shortcutContexts/constants.mjs +0 -8
- package/shortcutContexts/editor.js +0 -25
- package/shortcutContexts/editor.mjs +0 -21
- package/shortcutContexts/grid.js +0 -163
- package/shortcutContexts/grid.mjs +0 -159
- package/shortcutContexts/index.js +0 -24
- package/shortcutContexts/index.mjs +0 -11
- package/utils/paginator.js +0 -151
- package/utils/paginator.mjs +0 -147
@@ -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
|
}
|
@@ -1,23 +1,16 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
|
-
require("core-js/modules/es.error.cause.js");
|
5
4
|
var _base = require("../base");
|
6
5
|
var _array = require("../../helpers/array");
|
7
|
-
var
|
8
|
-
var _commandExecutor = require("../contextMenu/commandExecutor");
|
9
|
-
var _utils = require("../contextMenu/utils");
|
6
|
+
var _commandExecutor = _interopRequireDefault(require("../contextMenu/commandExecutor"));
|
10
7
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
11
8
|
var _element = require("../../helpers/dom/element");
|
12
|
-
var _itemsFactory = require("../contextMenu/itemsFactory");
|
13
|
-
var _menu = require("../contextMenu/menu");
|
9
|
+
var _itemsFactory = _interopRequireDefault(require("../contextMenu/itemsFactory"));
|
10
|
+
var _menu = _interopRequireDefault(require("../contextMenu/menu"));
|
14
11
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
15
12
|
var _predefinedItems = require("../contextMenu/predefinedItems");
|
16
|
-
var _a11y = require("../../helpers/a11y");
|
17
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
|
-
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
19
|
-
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
20
|
-
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
21
14
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuDefaultOptions');
|
22
15
|
_pluginHooks.default.getSingleton().register('beforeDropdownMenuShow');
|
23
16
|
_pluginHooks.default.getSingleton().register('afterDropdownMenuShow');
|
@@ -28,7 +21,6 @@ exports.PLUGIN_KEY = PLUGIN_KEY;
|
|
28
21
|
const PLUGIN_PRIORITY = 230;
|
29
22
|
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
30
23
|
const BUTTON_CLASS_NAME = 'changeType';
|
31
|
-
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
32
24
|
|
33
25
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
34
26
|
/**
|
@@ -80,7 +72,7 @@ const SHORTCUTS_GROUP = PLUGIN_KEY;
|
|
80
72
|
* ```
|
81
73
|
* :::
|
82
74
|
*/
|
83
|
-
|
75
|
+
|
84
76
|
class DropdownMenu extends _base.BasePlugin {
|
85
77
|
static get PLUGIN_KEY() {
|
86
78
|
return PLUGIN_KEY;
|
@@ -108,12 +100,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
108
100
|
* @private
|
109
101
|
* @type {EventManager}
|
110
102
|
*/
|
111
|
-
/**
|
112
|
-
* Add custom shortcuts to the provided menu instance.
|
113
|
-
*
|
114
|
-
* @param {Menu} menuInstance The menu instance.
|
115
|
-
*/
|
116
|
-
_classPrivateMethodInitSpec(this, _addCustomShortcuts);
|
117
103
|
this.eventManager = new _eventManager.default(this);
|
118
104
|
/**
|
119
105
|
* Instance of {@link CommandExecutor}.
|
@@ -121,7 +107,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
121
107
|
* @private
|
122
108
|
* @type {CommandExecutor}
|
123
109
|
*/
|
124
|
-
this.commandExecutor = new _commandExecutor.
|
110
|
+
this.commandExecutor = new _commandExecutor.default(this.hot);
|
125
111
|
/**
|
126
112
|
* Instance of {@link ItemsFactory}.
|
127
113
|
*
|
@@ -162,7 +148,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
162
148
|
if (this.enabled) {
|
163
149
|
return;
|
164
150
|
}
|
165
|
-
this.itemsFactory = new _itemsFactory.
|
151
|
+
this.itemsFactory = new _itemsFactory.default(this.hot, DropdownMenu.DEFAULT_ITEMS);
|
166
152
|
const settings = this.hot.getSettings()[PLUGIN_KEY];
|
167
153
|
const predefinedItems = {
|
168
154
|
items: this.itemsFactory.getItems(settings)
|
@@ -171,7 +157,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
171
157
|
if (typeof settings.callback === 'function') {
|
172
158
|
this.commandExecutor.setCommonCallback(settings.callback);
|
173
159
|
}
|
174
|
-
this.registerShortcuts();
|
175
160
|
super.enablePlugin();
|
176
161
|
this.callOnPluginsReady(() => {
|
177
162
|
this.hot.runHooks('afterDropdownMenuDefaultOptions', predefinedItems);
|
@@ -180,7 +165,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
180
165
|
if (this.menu) {
|
181
166
|
this.menu.destroy();
|
182
167
|
}
|
183
|
-
this.menu = new _menu.
|
168
|
+
this.menu = new _menu.default(this.hot, {
|
184
169
|
className: 'htDropdownMenu',
|
185
170
|
keepInViewport: true,
|
186
171
|
container: settings.uiContainer || this.hot.rootDocument.body
|
@@ -189,7 +174,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
189
174
|
this.menu.setMenuItems(menuItems);
|
190
175
|
this.menu.addLocalHook('beforeOpen', () => this.onMenuBeforeOpen());
|
191
176
|
this.menu.addLocalHook('afterOpen', () => this.onMenuAfterOpen());
|
192
|
-
this.menu.addLocalHook('afterSubmenuOpen', subMenuInstance => this.onSubMenuAfterOpen(subMenuInstance));
|
193
177
|
this.menu.addLocalHook('afterClose', () => this.onMenuAfterClose());
|
194
178
|
this.menu.addLocalHook('executeCommand', function () {
|
195
179
|
for (var _len = arguments.length, params = new Array(_len), _key = 0; _key < _len; _key++) {
|
@@ -223,66 +207,9 @@ class DropdownMenu extends _base.BasePlugin {
|
|
223
207
|
if (this.menu) {
|
224
208
|
this.menu.destroy();
|
225
209
|
}
|
226
|
-
this.unregisterShortcuts();
|
227
210
|
super.disablePlugin();
|
228
211
|
}
|
229
212
|
|
230
|
-
/**
|
231
|
-
* Register shortcuts responsible for toggling dropdown menu.
|
232
|
-
*
|
233
|
-
* @private
|
234
|
-
*/
|
235
|
-
registerShortcuts() {
|
236
|
-
const gridContext = this.hot.getShortcutManager().getContext('grid');
|
237
|
-
const callback = () => {
|
238
|
-
const {
|
239
|
-
highlight
|
240
|
-
} = this.hot.getSelectedRangeLast();
|
241
|
-
if ((highlight.isHeader() && highlight.row === -1 || highlight.isCell()) && highlight.col >= 0) {
|
242
|
-
this.hot.selectColumns(highlight.col, highlight.col, -1);
|
243
|
-
const {
|
244
|
-
from
|
245
|
-
} = this.hot.getSelectedRangeLast();
|
246
|
-
const offset = (0, _utils.getDocumentOffsetByElement)(this.menu.container, this.hot.rootDocument);
|
247
|
-
const target = this.hot.getCell(-1, from.col, true);
|
248
|
-
const rect = target.getBoundingClientRect();
|
249
|
-
this.open({
|
250
|
-
left: rect.left + offset.left,
|
251
|
-
top: rect.top + target.offsetHeight + offset.top
|
252
|
-
}, {
|
253
|
-
left: rect.width
|
254
|
-
});
|
255
|
-
}
|
256
|
-
};
|
257
|
-
gridContext.addShortcuts([{
|
258
|
-
keys: [['Shift', 'Alt', 'ArrowDown'], ['Control/Meta', 'Enter']],
|
259
|
-
callback,
|
260
|
-
runOnlyIf: () => {
|
261
|
-
var _this$hot$getSelected;
|
262
|
-
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader()) && !this.menu.isOpened();
|
263
|
-
},
|
264
|
-
captureCtrl: true,
|
265
|
-
group: SHORTCUTS_GROUP
|
266
|
-
}, {
|
267
|
-
keys: [['Shift', 'Alt', 'ArrowDown']],
|
268
|
-
callback,
|
269
|
-
runOnlyIf: () => {
|
270
|
-
var _this$hot$getSelected2;
|
271
|
-
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && !this.menu.isOpened();
|
272
|
-
},
|
273
|
-
group: SHORTCUTS_GROUP
|
274
|
-
}]);
|
275
|
-
}
|
276
|
-
|
277
|
-
/**
|
278
|
-
* Unregister shortcuts responsible for toggling dropdown menu.
|
279
|
-
*
|
280
|
-
* @private
|
281
|
-
*/
|
282
|
-
unregisterShortcuts() {
|
283
|
-
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
284
|
-
}
|
285
|
-
|
286
213
|
/**
|
287
214
|
* Registers the DOM listeners.
|
288
215
|
*
|
@@ -295,30 +222,23 @@ class DropdownMenu extends _base.BasePlugin {
|
|
295
222
|
/**
|
296
223
|
* Opens menu and re-position it based on the passed coordinates.
|
297
224
|
*
|
298
|
-
* @param {
|
299
|
-
*
|
300
|
-
*
|
301
|
-
*
|
302
|
-
*
|
303
|
-
* 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.
|
304
230
|
* @fires Hooks#beforeDropdownMenuShow
|
305
231
|
* @fires Hooks#afterDropdownMenuShow
|
306
232
|
*/
|
233
|
+
|
307
234
|
open(position) {
|
308
|
-
|
309
|
-
let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
310
|
-
above: 0,
|
311
|
-
below: 0,
|
312
|
-
left: 0,
|
313
|
-
right: 0
|
314
|
-
};
|
315
|
-
if ((_this$menu = this.menu) !== null && _this$menu !== void 0 && _this$menu.isOpened()) {
|
235
|
+
if (!this.menu) {
|
316
236
|
return;
|
317
237
|
}
|
318
238
|
this.menu.open();
|
319
|
-
(
|
320
|
-
this.menu.setOffset(
|
321
|
-
}
|
239
|
+
if (position.width) {
|
240
|
+
this.menu.setOffset('left', position.width);
|
241
|
+
}
|
322
242
|
this.menu.setPosition(position);
|
323
243
|
}
|
324
244
|
|
@@ -326,8 +246,10 @@ class DropdownMenu extends _base.BasePlugin {
|
|
326
246
|
* Closes dropdown menu.
|
327
247
|
*/
|
328
248
|
close() {
|
329
|
-
|
330
|
-
|
249
|
+
if (!this.menu) {
|
250
|
+
return;
|
251
|
+
}
|
252
|
+
this.menu.close();
|
331
253
|
}
|
332
254
|
|
333
255
|
/**
|
@@ -383,6 +305,7 @@ class DropdownMenu extends _base.BasePlugin {
|
|
383
305
|
}
|
384
306
|
}
|
385
307
|
}
|
308
|
+
|
386
309
|
/**
|
387
310
|
* Table click listener.
|
388
311
|
*
|
@@ -391,14 +314,26 @@ class DropdownMenu extends _base.BasePlugin {
|
|
391
314
|
*/
|
392
315
|
onTableClick(event) {
|
393
316
|
event.stopPropagation();
|
394
|
-
if ((0, _element.hasClass)(event.target, BUTTON_CLASS_NAME)) {
|
395
|
-
|
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
|
+
}
|
396
331
|
const rect = event.target.getBoundingClientRect();
|
397
332
|
this.open({
|
398
|
-
left: rect.left +
|
399
|
-
top: rect.top + event.target.offsetHeight + 3 +
|
400
|
-
|
401
|
-
|
333
|
+
left: rect.left + offsetLeft,
|
334
|
+
top: rect.top + event.target.offsetHeight + 3 + offsetTop,
|
335
|
+
width: rect.width,
|
336
|
+
height: rect.height
|
402
337
|
});
|
403
338
|
}
|
404
339
|
}
|
@@ -437,11 +372,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
437
372
|
const button = this.hot.rootDocument.createElement('button');
|
438
373
|
button.className = BUTTON_CLASS_NAME;
|
439
374
|
button.type = 'button';
|
440
|
-
button.tabIndex = -1;
|
441
|
-
if (this.hot.getSettings().ariaTags) {
|
442
|
-
(0, _element.setAttribute)(button, [(0, _a11y.A11Y_HIDDEN)()]);
|
443
|
-
(0, _element.setAttribute)(TH, [(0, _a11y.A11Y_HASPOPUP)('menu')]);
|
444
|
-
}
|
445
375
|
|
446
376
|
// prevent page reload on button click
|
447
377
|
button.onclick = function () {
|
@@ -468,17 +398,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
468
398
|
*/
|
469
399
|
onMenuAfterOpen() {
|
470
400
|
this.hot.runHooks('afterDropdownMenuShow', this);
|
471
|
-
_classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, this.menu);
|
472
|
-
}
|
473
|
-
|
474
|
-
/**
|
475
|
-
* Listener for the `afterSubmenuOpen` hook.
|
476
|
-
*
|
477
|
-
* @private
|
478
|
-
* @param {Menu} subMenuInstance The opened sub menu instance.
|
479
|
-
*/
|
480
|
-
onSubMenuAfterOpen(subMenuInstance) {
|
481
|
-
_classPrivateMethodGet(this, _addCustomShortcuts, _addCustomShortcuts2).call(this, subMenuInstance);
|
482
401
|
}
|
483
402
|
|
484
403
|
/**
|
@@ -504,12 +423,6 @@ class DropdownMenu extends _base.BasePlugin {
|
|
504
423
|
}
|
505
424
|
}
|
506
425
|
exports.DropdownMenu = DropdownMenu;
|
507
|
-
function _addCustomShortcuts2(menuInstance) {
|
508
|
-
menuInstance.getKeyboardShortcutsCtrl().addCustomShortcuts([{
|
509
|
-
keys: [['Control/Meta', 'A']],
|
510
|
-
callback: () => false
|
511
|
-
}]);
|
512
|
-
}
|
513
426
|
DropdownMenu.SEPARATOR = {
|
514
427
|
name: _predefinedItems.SEPARATOR
|
515
428
|
};
|