handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-cecf979-20231026
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
- package/3rdparty/walkontable/src/cell/coords.js +50 -11
- package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +38 -7
- package/3rdparty/walkontable/src/cell/range.mjs +38 -7
- package/3rdparty/walkontable/src/core/_base.js +9 -3
- package/3rdparty/walkontable/src/core/_base.mjs +9 -3
- package/3rdparty/walkontable/src/core/clone.js +2 -2
- package/3rdparty/walkontable/src/core/clone.mjs +2 -2
- package/3rdparty/walkontable/src/core/core.js +3 -2
- package/3rdparty/walkontable/src/core/core.mjs +3 -2
- package/3rdparty/walkontable/src/event.js +12 -10
- package/3rdparty/walkontable/src/event.mjs +12 -10
- package/3rdparty/walkontable/src/facade/core.js +2 -2
- package/3rdparty/walkontable/src/facade/core.mjs +2 -2
- package/3rdparty/walkontable/src/index.js +10 -2
- package/3rdparty/walkontable/src/index.mjs +2 -2
- package/3rdparty/walkontable/src/overlay/_base.js +13 -2
- package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
- package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
- package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
- package/3rdparty/walkontable/src/overlay/top.js +2 -6
- package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
- package/3rdparty/walkontable/src/renderer/cells.js +10 -0
- package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
- package/3rdparty/walkontable/src/renderer/rows.js +13 -0
- package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
- package/3rdparty/walkontable/src/renderer/table.js +9 -0
- package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
- package/3rdparty/walkontable/src/scroll.js +2 -0
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +62 -0
- package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
- package/3rdparty/walkontable/src/selection/index.js +26 -0
- package/3rdparty/walkontable/src/selection/index.mjs +5 -0
- package/3rdparty/walkontable/src/selection/manager.js +274 -0
- package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
- package/3rdparty/walkontable/src/selection/scanner.js +270 -0
- package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
- package/3rdparty/walkontable/src/selection/selection.js +101 -0
- package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
- package/3rdparty/walkontable/src/settings.js +13 -4
- package/3rdparty/walkontable/src/settings.mjs +13 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table.js +19 -78
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +2 -2
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +2 -2
- package/cellTypes/handsontableType/handsontableType.mjs +2 -2
- package/cellTypes/index.d.ts +3 -0
- package/cellTypes/index.js +4 -0
- package/cellTypes/index.mjs +3 -1
- package/cellTypes/selectType/index.d.ts +1 -0
- package/cellTypes/selectType/index.js +6 -0
- package/cellTypes/selectType/index.mjs +1 -0
- package/cellTypes/selectType/selectType.d.ts +14 -0
- package/cellTypes/selectType/selectType.js +13 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +142 -0
- package/core/focusCatcher/index.mjs +138 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +9 -4
- package/core.js +285 -327
- package/core.mjs +285 -327
- package/dataMap/metaManager/metaSchema.js +65 -0
- package/dataMap/metaManager/metaSchema.mjs +65 -0
- package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
- package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
- package/dataMap/replaceData.js +5 -0
- package/dataMap/replaceData.mjs +5 -0
- package/dist/handsontable.css +51 -15
- package/dist/handsontable.full.css +51 -15
- package/dist/handsontable.full.js +13360 -7840
- package/dist/handsontable.full.min.css +7 -7
- package/dist/handsontable.full.min.js +136 -136
- package/dist/handsontable.js +20955 -15435
- package/dist/handsontable.min.css +6 -6
- package/dist/handsontable.min.js +24 -24
- package/dist/languages/all.js +6 -2
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/en-US.js +3 -1
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/pl-PL.js +3 -1
- package/dist/languages/pl-PL.min.js +1 -1
- package/editorManager.js +15 -87
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
- package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
- package/editors/dateEditor/dateEditor.js +26 -7
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/handsontableEditor/handsontableEditor.js +9 -1
- package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
- package/editors/textEditor/textEditor.js +19 -27
- package/editors/textEditor/textEditor.mjs +22 -30
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +79 -0
- package/helpers/a11y.mjs +38 -0
- package/helpers/dom/element.js +188 -9
- package/helpers/dom/element.mjs +182 -9
- package/helpers/mixed.js +1 -1
- package/helpers/mixed.mjs +1 -1
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/i18n/constants.js +7 -1
- package/i18n/constants.mjs +4 -1
- package/i18n/languages/en-US.js +3 -1
- package/i18n/languages/en-US.mjs +3 -1
- package/i18n/languages/pl-PL.js +3 -1
- package/i18n/languages/pl-PL.mjs +3 -1
- package/languages/all.js +6 -2
- package/languages/en-US.js +3 -1
- package/languages/en-US.mjs +3 -1
- package/languages/index.js +6 -2
- package/languages/pl-PL.js +3 -1
- package/languages/pl-PL.mjs +3 -1
- package/package.json +21 -1
- package/pluginHooks.d.ts +12 -1
- package/pluginHooks.js +152 -1
- package/pluginHooks.mjs +152 -1
- package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
- package/plugins/columnSorting/columnSorting.js +43 -0
- package/plugins/columnSorting/columnSorting.mjs +44 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/comments/commentEditor.js +1 -0
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +252 -189
- package/plugins/comments/comments.mjs +251 -190
- package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
- package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
- package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
- package/plugins/comments/contextMenuItem/removeComment.js +38 -0
- package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
- package/plugins/contextMenu/commandExecutor.js +2 -3
- package/plugins/contextMenu/commandExecutor.mjs +2 -3
- package/plugins/contextMenu/contextMenu.d.ts +1 -1
- package/plugins/contextMenu/contextMenu.js +75 -36
- package/plugins/contextMenu/contextMenu.mjs +74 -35
- package/plugins/contextMenu/itemsFactory.js +2 -3
- package/plugins/contextMenu/itemsFactory.mjs +3 -4
- package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
- package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
- package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
- package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
- package/plugins/contextMenu/menu/index.js +9 -0
- package/plugins/contextMenu/menu/index.mjs +1 -0
- package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
- package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
- package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
- package/plugins/contextMenu/menu/navigator.js +27 -0
- package/plugins/contextMenu/menu/navigator.mjs +23 -0
- package/plugins/contextMenu/menu/positioner.js +213 -0
- package/plugins/contextMenu/menu/positioner.mjs +209 -0
- package/plugins/contextMenu/menu/shortcuts.js +114 -0
- package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
- package/plugins/contextMenu/menu/utils.js +177 -0
- package/plugins/contextMenu/menu/utils.mjs +163 -0
- package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/utils.js +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
- package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
- package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
- package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +127 -78
- package/plugins/copyPaste/copyPaste.mjs +128 -79
- package/plugins/customBorders/customBorders.js +23 -20
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +127 -40
- package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +29 -27
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +46 -59
- package/plugins/filters/component/condition.mjs +40 -52
- package/plugins/filters/component/operators.js +21 -22
- package/plugins/filters/component/operators.mjs +18 -18
- package/plugins/filters/component/value.js +35 -26
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/filters.js +106 -62
- package/plugins/filters/filters.mjs +99 -55
- package/plugins/filters/menu/focusController.js +123 -0
- package/plugins/filters/menu/focusController.mjs +119 -0
- package/plugins/filters/menu/focusNavigator.js +30 -0
- package/plugins/filters/menu/focusNavigator.mjs +26 -0
- package/plugins/filters/ui/_base.js +35 -13
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -32
- package/plugins/filters/ui/input.mjs +42 -30
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +234 -129
- package/plugins/filters/ui/multipleSelect.mjs +232 -127
- package/plugins/filters/ui/radioInput.js +42 -18
- package/plugins/filters/ui/radioInput.mjs +42 -17
- package/plugins/filters/ui/select.js +144 -75
- package/plugins/filters/ui/select.mjs +142 -72
- package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
- package/plugins/hiddenRows/hiddenRows.mjs +1 -1
- package/plugins/manualColumnMove/manualColumnMove.js +3 -1
- package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
- package/plugins/mergeCells/mergeCells.js +5 -16
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
- package/plugins/nestedHeaders/nestedHeaders.js +240 -10
- package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedRows/nestedRows.js +41 -0
- package/plugins/nestedRows/nestedRows.mjs +41 -0
- package/plugins/nestedRows/ui/headers.js +11 -0
- package/plugins/nestedRows/ui/headers.mjs +12 -1
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +17 -0
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +29 -0
- package/renderers/dateRenderer/dateRenderer.mjs +24 -0
- package/renderers/dateRenderer/index.d.ts +1 -0
- package/renderers/dateRenderer/index.js +6 -0
- package/renderers/dateRenderer/index.mjs +1 -0
- package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
- package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
- package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
- package/renderers/handsontableRenderer/index.d.ts +1 -0
- package/renderers/handsontableRenderer/index.js +6 -0
- package/renderers/handsontableRenderer/index.mjs +1 -0
- package/renderers/index.d.ts +9 -0
- package/renderers/selectRenderer/index.d.ts +1 -0
- package/renderers/selectRenderer/index.js +6 -0
- package/renderers/selectRenderer/index.mjs +1 -0
- package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
- package/renderers/selectRenderer/selectRenderer.js +27 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/selection/highlight/highlight.js +256 -71
- package/selection/highlight/highlight.mjs +250 -71
- package/selection/highlight/types/activeHeader.js +10 -8
- package/selection/highlight/types/activeHeader.mjs +10 -8
- package/selection/highlight/types/area.js +6 -18
- package/selection/highlight/types/area.mjs +6 -18
- package/selection/highlight/types/areaLayered.js +31 -0
- package/selection/highlight/types/areaLayered.mjs +26 -0
- package/selection/highlight/types/column.js +27 -0
- package/selection/highlight/types/column.mjs +22 -0
- package/selection/highlight/types/customSelection.js +7 -9
- package/selection/highlight/types/customSelection.mjs +7 -9
- package/selection/highlight/types/fill.js +5 -7
- package/selection/highlight/types/fill.mjs +5 -7
- package/selection/highlight/types/{cell.js → focus.js} +5 -7
- package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
- package/selection/highlight/types/header.js +9 -18
- package/selection/highlight/types/header.mjs +9 -18
- package/selection/highlight/types/row.js +27 -0
- package/selection/highlight/types/row.mjs +22 -0
- package/selection/highlight/visualSelection.js +31 -27
- package/selection/highlight/visualSelection.mjs +31 -27
- package/selection/index.js +4 -7
- package/selection/index.mjs +2 -3
- package/selection/mouseEventHandler.js +7 -1
- package/selection/mouseEventHandler.mjs +7 -1
- package/selection/range.js +8 -8
- package/selection/range.mjs +8 -8
- package/selection/selection.js +321 -152
- package/selection/selection.mjs +318 -151
- package/selection/transformation.js +232 -90
- package/selection/transformation.mjs +232 -90
- package/selection/utils.js +15 -21
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +16 -0
- package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
- package/shortcutContexts/commands/editor/index.js +16 -0
- package/shortcutContexts/commands/editor/index.mjs +12 -0
- package/shortcutContexts/commands/editor/open.js +27 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +11 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
- package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
- package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
- package/shortcutContexts/commands/index.js +35 -0
- package/shortcutContexts/commands/index.mjs +31 -0
- package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
- package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +12 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +13 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +163 -0
- package/shortcutContexts/grid.mjs +159 -0
- package/shortcutContexts/index.js +24 -0
- package/shortcutContexts/index.mjs +11 -0
- package/shortcuts/context.d.ts +1 -0
- package/shortcuts/context.js +23 -4
- package/shortcuts/context.mjs +23 -5
- package/shortcuts/manager.js +25 -7
- package/shortcuts/manager.mjs +26 -7
- package/shortcuts/recorder.js +3 -3
- package/shortcuts/recorder.mjs +3 -3
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +111 -13
- package/tableView.mjs +112 -14
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/selection/highlight/constants.js +0 -15
- package/selection/highlight/constants.mjs +0 -6
- package/selection/highlight/types/index.js +0 -35
- package/selection/highlight/types/index.mjs +0 -31
@@ -1,20 +1,34 @@
|
|
1
1
|
import "core-js/modules/es.error.cause.js";
|
2
2
|
import "core-js/modules/es.array.push.js";
|
3
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
4
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
7
|
+
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); }
|
8
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
9
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
10
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
11
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
12
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
3
13
|
import { addClass, closest, isChildOf, hasClass, outerWidth, outerHeight } from "../../helpers/dom/element.mjs";
|
14
|
+
import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
|
4
15
|
import { deepClone, deepExtend, isObject } from "../../helpers/object.mjs";
|
5
16
|
import EventManager from "../../eventManager.mjs";
|
6
17
|
import { BasePlugin } from "../base/index.mjs";
|
7
18
|
import CommentEditor from "./commentEditor.mjs";
|
8
|
-
import { checkSelectionConsistency, markLabelAsSelected } from "../contextMenu/utils.mjs";
|
9
19
|
import DisplaySwitch from "./displaySwitch.mjs";
|
10
|
-
import
|
20
|
+
import { SEPARATOR } from "../contextMenu/predefinedItems/index.mjs";
|
21
|
+
import addEditCommentItem from "./contextMenuItem/addEditComment.mjs";
|
22
|
+
import removeCommentItem from "./contextMenuItem/removeComment.mjs";
|
23
|
+
import readOnlyCommentItem from "./contextMenuItem/readOnlyComment.mjs";
|
11
24
|
export const PLUGIN_KEY = 'comments';
|
12
25
|
export const PLUGIN_PRIORITY = 60;
|
13
|
-
const
|
14
|
-
const
|
15
|
-
const
|
16
|
-
const
|
17
|
-
const
|
26
|
+
export const META_COMMENT = 'comment';
|
27
|
+
export const META_COMMENT_VALUE = 'value';
|
28
|
+
export const META_STYLE = 'style';
|
29
|
+
export const META_READONLY = 'readOnly';
|
30
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
31
|
+
const SHORTCUTS_CONTEXT_NAME = `plugin:${PLUGIN_KEY}`;
|
18
32
|
|
19
33
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
20
34
|
/**
|
@@ -106,55 +120,107 @@ const META_READONLY = 'readOnly';
|
|
106
120
|
* ```
|
107
121
|
* :::
|
108
122
|
*/
|
123
|
+
var _editor = /*#__PURE__*/new WeakMap();
|
124
|
+
var _displaySwitch = /*#__PURE__*/new WeakMap();
|
125
|
+
var _preventEditorAutoSwitch = /*#__PURE__*/new WeakMap();
|
126
|
+
var _preventEditorHiding = /*#__PURE__*/new WeakMap();
|
127
|
+
var _tempEditorDimensions = /*#__PURE__*/new WeakMap();
|
128
|
+
var _cellBelowCursor = /*#__PURE__*/new WeakMap();
|
129
|
+
var _commentValueBeforeSave = /*#__PURE__*/new WeakMap();
|
109
130
|
export class Comments extends BasePlugin {
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
131
|
+
constructor() {
|
132
|
+
super(...arguments);
|
133
|
+
/**
|
134
|
+
* Current cell range, an object with `from` property, with `row` and `col` properties (e.q. `{from: {row: 1, col: 6}}`).
|
135
|
+
*
|
136
|
+
* @type {object}
|
137
|
+
*/
|
138
|
+
_defineProperty(this, "range", {});
|
139
|
+
/**
|
140
|
+
* Instance of {@link EventManager}.
|
141
|
+
*
|
142
|
+
* @protected
|
143
|
+
* @type {EventManager}
|
144
|
+
*/
|
145
|
+
_defineProperty(this, "eventManager", null);
|
118
146
|
/**
|
119
147
|
* Instance of {@link CommentEditor}.
|
120
148
|
*
|
121
149
|
* @private
|
122
150
|
* @type {CommentEditor}
|
123
151
|
*/
|
124
|
-
this
|
152
|
+
_classPrivateFieldInitSpec(this, _editor, {
|
153
|
+
writable: true,
|
154
|
+
value: null
|
155
|
+
});
|
125
156
|
/**
|
126
157
|
* Instance of {@link DisplaySwitch}.
|
127
158
|
*
|
128
159
|
* @private
|
129
160
|
* @type {DisplaySwitch}
|
130
161
|
*/
|
131
|
-
this
|
162
|
+
_classPrivateFieldInitSpec(this, _displaySwitch, {
|
163
|
+
writable: true,
|
164
|
+
value: null
|
165
|
+
});
|
132
166
|
/**
|
133
|
-
*
|
167
|
+
* Prevents showing/hiding editor that reacts on the logic triggered by the "mouseover" events.
|
134
168
|
*
|
135
169
|
* @private
|
136
|
-
* @type {
|
170
|
+
* @type {boolean}
|
137
171
|
*/
|
138
|
-
this
|
172
|
+
_classPrivateFieldInitSpec(this, _preventEditorAutoSwitch, {
|
173
|
+
writable: true,
|
174
|
+
value: false
|
175
|
+
});
|
139
176
|
/**
|
140
|
-
*
|
177
|
+
* Prevents hiding editor when the table viewport is scrolled and that scroll is triggered by the
|
178
|
+
* keyboard shortcut that insert or edits the comment.
|
141
179
|
*
|
180
|
+
* @private
|
181
|
+
* @type {boolean}
|
182
|
+
*/
|
183
|
+
_classPrivateFieldInitSpec(this, _preventEditorHiding, {
|
184
|
+
writable: true,
|
185
|
+
value: false
|
186
|
+
});
|
187
|
+
/**
|
188
|
+
* The property for holding editor dimensions for further processing.
|
189
|
+
*
|
190
|
+
* @private
|
142
191
|
* @type {object}
|
143
192
|
*/
|
144
|
-
this
|
193
|
+
_classPrivateFieldInitSpec(this, _tempEditorDimensions, {
|
194
|
+
writable: true,
|
195
|
+
value: {}
|
196
|
+
});
|
145
197
|
/**
|
146
|
-
*
|
198
|
+
* The flag that allows processing mousedown event correctly when comments editor is triggered.
|
147
199
|
*
|
148
200
|
* @private
|
149
201
|
* @type {boolean}
|
150
202
|
*/
|
151
|
-
this
|
152
|
-
|
153
|
-
|
154
|
-
|
203
|
+
_classPrivateFieldInitSpec(this, _cellBelowCursor, {
|
204
|
+
writable: true,
|
205
|
+
value: null
|
206
|
+
});
|
207
|
+
/**
|
208
|
+
* Holds the comment value before it's actually saved to the cell meta.
|
209
|
+
*
|
210
|
+
* @private
|
211
|
+
* @type {string}
|
212
|
+
*/
|
213
|
+
_classPrivateFieldInitSpec(this, _commentValueBeforeSave, {
|
214
|
+
writable: true,
|
215
|
+
value: ''
|
155
216
|
});
|
156
217
|
}
|
157
|
-
|
218
|
+
static get PLUGIN_KEY() {
|
219
|
+
return PLUGIN_KEY;
|
220
|
+
}
|
221
|
+
static get PLUGIN_PRIORITY() {
|
222
|
+
return PLUGIN_PRIORITY;
|
223
|
+
}
|
158
224
|
/**
|
159
225
|
* Checks if the plugin is enabled in the handsontable settings. This method is executed in {@link Hooks#beforeInit}
|
160
226
|
* hook and if it returns `true` then the {@link Comments#enablePlugin} method is called.
|
@@ -172,22 +238,23 @@ export class Comments extends BasePlugin {
|
|
172
238
|
if (this.enabled) {
|
173
239
|
return;
|
174
240
|
}
|
175
|
-
if (!this
|
176
|
-
this
|
241
|
+
if (!_classPrivateFieldGet(this, _editor)) {
|
242
|
+
_classPrivateFieldSet(this, _editor, new CommentEditor(this.hot.rootDocument, this.hot.isRtl()));
|
177
243
|
}
|
178
244
|
if (!this.eventManager) {
|
179
245
|
this.eventManager = new EventManager(this);
|
180
246
|
}
|
181
|
-
if (!this
|
182
|
-
this
|
247
|
+
if (!_classPrivateFieldGet(this, _displaySwitch)) {
|
248
|
+
_classPrivateFieldSet(this, _displaySwitch, new DisplaySwitch(this.getDisplayDelaySetting()));
|
183
249
|
}
|
184
250
|
this.addHook('afterContextMenuDefaultOptions', options => this.addToContextMenu(options));
|
185
251
|
this.addHook('afterRenderer', (TD, row, col, prop, value, cellProperties) => this.onAfterRenderer(TD, cellProperties));
|
186
|
-
this.addHook('
|
187
|
-
this.addHook('afterScrollVertically', () => this.hide());
|
252
|
+
this.addHook('afterScroll', () => this.onAfterScroll());
|
188
253
|
this.addHook('afterBeginEditing', () => this.hide());
|
189
|
-
this.
|
190
|
-
this.
|
254
|
+
this.addHook('afterDocumentKeyDown', event => this.onAfterDocumentKeyDown(event));
|
255
|
+
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('hide', () => this.hide());
|
256
|
+
_classPrivateFieldGet(this, _displaySwitch).addLocalHook('show', (row, col) => this.showAtCell(row, col));
|
257
|
+
this.registerShortcuts();
|
191
258
|
this.registerListeners();
|
192
259
|
super.enablePlugin();
|
193
260
|
}
|
@@ -199,19 +266,85 @@ export class Comments extends BasePlugin {
|
|
199
266
|
* - [`comments`](@/api/options.md#comments)
|
200
267
|
*/
|
201
268
|
updatePlugin() {
|
202
|
-
this.
|
203
|
-
this.enablePlugin();
|
269
|
+
_classPrivateFieldGet(this, _displaySwitch).updateDelay(this.getDisplayDelaySetting());
|
204
270
|
super.updatePlugin();
|
205
|
-
this.displaySwitch.updateDelay(this.getDisplayDelaySetting());
|
206
271
|
}
|
207
272
|
|
208
273
|
/**
|
209
274
|
* Disables the plugin functionality for this Handsontable instance.
|
210
275
|
*/
|
211
276
|
disablePlugin() {
|
277
|
+
this.unregisterShortcuts();
|
212
278
|
super.disablePlugin();
|
213
279
|
}
|
214
280
|
|
281
|
+
/**
|
282
|
+
* Register shortcuts responsible for toggling context menu.
|
283
|
+
*
|
284
|
+
* @private
|
285
|
+
*/
|
286
|
+
registerShortcuts() {
|
287
|
+
const manager = this.hot.getShortcutManager();
|
288
|
+
const gridContext = manager.getContext('grid');
|
289
|
+
const pluginContext = manager.addContext(SHORTCUTS_CONTEXT_NAME);
|
290
|
+
gridContext.addShortcut({
|
291
|
+
keys: [['Control', 'Alt', 'M']],
|
292
|
+
callback: () => {
|
293
|
+
const range = this.hot.getSelectedRangeLast();
|
294
|
+
_classPrivateFieldSet(this, _preventEditorHiding, true);
|
295
|
+
this.hot.scrollToFocusedCell(() => {
|
296
|
+
this.setRange(range);
|
297
|
+
this.show();
|
298
|
+
this.focusEditor();
|
299
|
+
manager.setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
300
|
+
this.hot._registerTimeout(() => {
|
301
|
+
_classPrivateFieldSet(this, _preventEditorHiding, false);
|
302
|
+
});
|
303
|
+
});
|
304
|
+
},
|
305
|
+
stopPropagation: true,
|
306
|
+
runOnlyIf: () => {
|
307
|
+
var _this$hot$getSelected;
|
308
|
+
return ((_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isCell()) && !_classPrivateFieldGet(this, _editor).isVisible();
|
309
|
+
},
|
310
|
+
group: SHORTCUTS_GROUP
|
311
|
+
});
|
312
|
+
pluginContext.addShortcut({
|
313
|
+
keys: [['Escape']],
|
314
|
+
callback: () => {
|
315
|
+
_classPrivateFieldGet(this, _editor).setValue(_classPrivateFieldGet(this, _commentValueBeforeSave));
|
316
|
+
this.hide();
|
317
|
+
manager.setActiveContextName('grid');
|
318
|
+
},
|
319
|
+
runOnlyIf: () => {
|
320
|
+
var _this$hot$getSelected2;
|
321
|
+
return ((_this$hot$getSelected2 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected2 === void 0 ? void 0 : _this$hot$getSelected2.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
|
322
|
+
},
|
323
|
+
group: SHORTCUTS_GROUP
|
324
|
+
});
|
325
|
+
pluginContext.addShortcut({
|
326
|
+
keys: [['Control/Meta', 'Enter']],
|
327
|
+
callback: () => {
|
328
|
+
this.hide();
|
329
|
+
manager.setActiveContextName('grid');
|
330
|
+
},
|
331
|
+
runOnlyIf: () => {
|
332
|
+
var _this$hot$getSelected3;
|
333
|
+
return ((_this$hot$getSelected3 = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected3 === void 0 ? void 0 : _this$hot$getSelected3.highlight.isCell()) && _classPrivateFieldGet(this, _editor).isVisible();
|
334
|
+
},
|
335
|
+
group: SHORTCUTS_GROUP
|
336
|
+
});
|
337
|
+
}
|
338
|
+
|
339
|
+
/**
|
340
|
+
* Unregister shortcuts responsible for toggling context menu.
|
341
|
+
*
|
342
|
+
* @private
|
343
|
+
*/
|
344
|
+
unregisterShortcuts() {
|
345
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
346
|
+
}
|
347
|
+
|
215
348
|
/**
|
216
349
|
* Registers all necessary DOM listeners.
|
217
350
|
*
|
@@ -221,12 +354,14 @@ export class Comments extends BasePlugin {
|
|
221
354
|
const {
|
222
355
|
rootDocument
|
223
356
|
} = this.hot;
|
357
|
+
const editorElement = this.getEditorInputElement();
|
224
358
|
this.eventManager.addEventListener(rootDocument, 'mouseover', event => this.onMouseOver(event));
|
225
359
|
this.eventManager.addEventListener(rootDocument, 'mousedown', event => this.onMouseDown(event));
|
226
360
|
this.eventManager.addEventListener(rootDocument, 'mouseup', () => this.onMouseUp());
|
227
|
-
this.eventManager.addEventListener(
|
228
|
-
this.eventManager.addEventListener(
|
229
|
-
this.eventManager.addEventListener(
|
361
|
+
this.eventManager.addEventListener(editorElement, 'focus', () => this.onEditorFocus());
|
362
|
+
this.eventManager.addEventListener(editorElement, 'blur', () => this.onEditorBlur());
|
363
|
+
this.eventManager.addEventListener(editorElement, 'mousedown', event => this.onEditorMouseDown(event));
|
364
|
+
this.eventManager.addEventListener(editorElement, 'mouseup', event => this.onEditorMouseUp(event));
|
230
365
|
}
|
231
366
|
|
232
367
|
/**
|
@@ -265,7 +400,7 @@ export class Comments extends BasePlugin {
|
|
265
400
|
* @returns {boolean}
|
266
401
|
*/
|
267
402
|
targetIsCommentTextArea(event) {
|
268
|
-
return this.
|
403
|
+
return this.getEditorInputElement() === event.target;
|
269
404
|
}
|
270
405
|
|
271
406
|
/**
|
@@ -277,7 +412,7 @@ export class Comments extends BasePlugin {
|
|
277
412
|
if (!this.range.from) {
|
278
413
|
throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
|
279
414
|
}
|
280
|
-
const editorValue = this.
|
415
|
+
const editorValue = _classPrivateFieldGet(this, _editor).getValue();
|
281
416
|
let comment = '';
|
282
417
|
if (value !== null && value !== void 0) {
|
283
418
|
comment = value;
|
@@ -366,6 +501,7 @@ export class Comments extends BasePlugin {
|
|
366
501
|
* @returns {boolean} Returns `true` if comment editor was shown.
|
367
502
|
*/
|
368
503
|
show() {
|
504
|
+
var _ref;
|
369
505
|
if (!this.range.from) {
|
370
506
|
throw new Error('Before using this method, first set cell range (hot.getPlugin("comment").setRange())');
|
371
507
|
}
|
@@ -379,8 +515,9 @@ export class Comments extends BasePlugin {
|
|
379
515
|
return false;
|
380
516
|
}
|
381
517
|
const meta = this.hot.getCellMeta(this.range.from.row, this.range.from.col);
|
382
|
-
this.
|
383
|
-
this.
|
518
|
+
_classPrivateFieldGet(this, _displaySwitch).cancelHiding();
|
519
|
+
_classPrivateFieldGet(this, _editor).setValue((_ref = meta[META_COMMENT] ? meta[META_COMMENT][META_COMMENT_VALUE] : null) !== null && _ref !== void 0 ? _ref : '');
|
520
|
+
_classPrivateFieldGet(this, _editor).show();
|
384
521
|
this.refreshEditor(true);
|
385
522
|
return true;
|
386
523
|
}
|
@@ -403,7 +540,7 @@ export class Comments extends BasePlugin {
|
|
403
540
|
* Hides the comment editor.
|
404
541
|
*/
|
405
542
|
hide() {
|
406
|
-
this.
|
543
|
+
_classPrivateFieldGet(this, _editor).hide();
|
407
544
|
}
|
408
545
|
|
409
546
|
/**
|
@@ -414,7 +551,7 @@ export class Comments extends BasePlugin {
|
|
414
551
|
refreshEditor() {
|
415
552
|
var _renderableRow, _renderableColumn;
|
416
553
|
let force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
417
|
-
if (!force && (!this.range.from || !this.
|
554
|
+
if (!force && (!this.range.from || !_classPrivateFieldGet(this, _editor).isVisible())) {
|
418
555
|
return;
|
419
556
|
}
|
420
557
|
const {
|
@@ -432,7 +569,7 @@ export class Comments extends BasePlugin {
|
|
432
569
|
|
433
570
|
// Reset the editor position to (0, 0) so the opening direction calculation wouldn't be influenced by its
|
434
571
|
// previous position
|
435
|
-
this.
|
572
|
+
_classPrivateFieldGet(this, _editor).setPosition(0, 0);
|
436
573
|
if (renderableRow === null) {
|
437
574
|
renderableRow = rowIndexMapper.getRenderableFromVisualIndex(rowIndexMapper.getNearestNotHiddenIndex(visualRow, -1));
|
438
575
|
}
|
@@ -460,9 +597,9 @@ export class Comments extends BasePlugin {
|
|
460
597
|
}, true);
|
461
598
|
const commentStyle = this.getCommentMeta(visualRow, visualColumn, META_STYLE);
|
462
599
|
if (commentStyle) {
|
463
|
-
this.
|
600
|
+
_classPrivateFieldGet(this, _editor).setSize(commentStyle.width, commentStyle.height);
|
464
601
|
} else {
|
465
|
-
this.
|
602
|
+
_classPrivateFieldGet(this, _editor).resetSize();
|
466
603
|
}
|
467
604
|
const lastColWidth = isBeforeRenderedColumns ? 0 : wtTable.getStretchedColumnWidth(renderableColumn);
|
468
605
|
const lastRowHeight = targetingPreviousRow && !isBeforeRenderedRows ? outerHeight(TD) : 0;
|
@@ -475,7 +612,7 @@ export class Comments extends BasePlugin {
|
|
475
612
|
const {
|
476
613
|
width: editorWidth,
|
477
614
|
height: editorHeight
|
478
|
-
} = this.
|
615
|
+
} = _classPrivateFieldGet(this, _editor).getSize();
|
479
616
|
const {
|
480
617
|
innerWidth,
|
481
618
|
innerHeight
|
@@ -496,28 +633,15 @@ export class Comments extends BasePlugin {
|
|
496
633
|
if (top + editorHeight > innerHeight) {
|
497
634
|
y -= editorHeight - cellHeight + 1;
|
498
635
|
}
|
499
|
-
this.
|
500
|
-
this.
|
636
|
+
_classPrivateFieldGet(this, _editor).setPosition(x, y);
|
637
|
+
_classPrivateFieldGet(this, _editor).setReadOnlyState(this.getCommentMeta(visualRow, visualColumn, META_READONLY));
|
501
638
|
}
|
502
639
|
|
503
640
|
/**
|
504
|
-
*
|
505
|
-
*
|
506
|
-
* @private
|
507
|
-
* @returns {boolean}
|
641
|
+
* Focuses the comments editor element.
|
508
642
|
*/
|
509
|
-
|
510
|
-
|
511
|
-
if (!selected) {
|
512
|
-
return false;
|
513
|
-
}
|
514
|
-
let hasComment = false;
|
515
|
-
const cell = selected.getTopStartCorner(); // IN EXCEL THERE IS COMMENT ONLY FOR TOP LEFT CELL IN SELECTION
|
516
|
-
|
517
|
-
if (this.getCommentMeta(cell.row, cell.col, META_COMMENT_VALUE)) {
|
518
|
-
hasComment = true;
|
519
|
-
}
|
520
|
-
return hasComment;
|
643
|
+
focusEditor() {
|
644
|
+
_classPrivateFieldGet(this, _editor).focus();
|
521
645
|
}
|
522
646
|
|
523
647
|
/**
|
@@ -565,7 +689,7 @@ export class Comments extends BasePlugin {
|
|
565
689
|
if (!this.hot.view || !this.hot.view._wt) {
|
566
690
|
return;
|
567
691
|
}
|
568
|
-
if (!this
|
692
|
+
if (!_classPrivateFieldGet(this, _preventEditorAutoSwitch) && !this.targetIsCommentTextArea(event)) {
|
569
693
|
const eventCell = closest(event.target, 'TD', 'TBODY');
|
570
694
|
let coordinates = null;
|
571
695
|
if (eventCell) {
|
@@ -584,19 +708,18 @@ export class Comments extends BasePlugin {
|
|
584
708
|
* @param {MouseEvent} event The `mouseover` event.
|
585
709
|
*/
|
586
710
|
onMouseOver(event) {
|
587
|
-
const priv = privatePool.get(this);
|
588
711
|
const {
|
589
712
|
rootDocument
|
590
713
|
} = this.hot;
|
591
|
-
if (this
|
714
|
+
if (_classPrivateFieldGet(this, _preventEditorAutoSwitch) || _classPrivateFieldGet(this, _editor).isFocused() || hasClass(event.target, 'wtBorder') || _classPrivateFieldGet(this, _cellBelowCursor) === event.target || !_classPrivateFieldGet(this, _editor)) {
|
592
715
|
return;
|
593
716
|
}
|
594
|
-
|
717
|
+
_classPrivateFieldSet(this, _cellBelowCursor, rootDocument.elementFromPoint(event.clientX, event.clientY));
|
595
718
|
if (this.targetIsCellWithComment(event)) {
|
596
719
|
const range = this.hot._createCellRange(this.hot.getCoords(event.target));
|
597
|
-
this.
|
720
|
+
_classPrivateFieldGet(this, _displaySwitch).show(range);
|
598
721
|
} else if (isChildOf(event.target, rootDocument) && !this.targetIsCommentTextArea(event)) {
|
599
|
-
this.
|
722
|
+
_classPrivateFieldGet(this, _displaySwitch).hide();
|
600
723
|
}
|
601
724
|
}
|
602
725
|
|
@@ -606,7 +729,7 @@ export class Comments extends BasePlugin {
|
|
606
729
|
* @private
|
607
730
|
*/
|
608
731
|
onMouseUp() {
|
609
|
-
this
|
732
|
+
_classPrivateFieldSet(this, _preventEditorAutoSwitch, false);
|
610
733
|
}
|
611
734
|
|
612
735
|
/**
|
@@ -623,14 +746,29 @@ export class Comments extends BasePlugin {
|
|
623
746
|
}
|
624
747
|
|
625
748
|
/**
|
626
|
-
*
|
749
|
+
* Hook observer the "blur" event from the comments editor element. The hook clears the
|
750
|
+
* editor content and gives back the keyboard shortcuts control by switching to the "grid" context.
|
627
751
|
*
|
628
752
|
* @private
|
629
753
|
*/
|
630
754
|
onEditorBlur() {
|
755
|
+
_classPrivateFieldSet(this, _commentValueBeforeSave, '');
|
756
|
+
this.hot.getShortcutManager().setActiveContextName('grid');
|
631
757
|
this.setComment();
|
632
758
|
}
|
633
759
|
|
760
|
+
/**
|
761
|
+
* Hook observer the "focus" event from the comments editor element. The hook takes the control of
|
762
|
+
* the keyboard shortcuts by switching the context to plugins one.
|
763
|
+
*
|
764
|
+
* @private
|
765
|
+
*/
|
766
|
+
onEditorFocus() {
|
767
|
+
_classPrivateFieldSet(this, _commentValueBeforeSave, this.getComment());
|
768
|
+
this.hot.listen();
|
769
|
+
this.hot.getShortcutManager().setActiveContextName(SHORTCUTS_CONTEXT_NAME);
|
770
|
+
}
|
771
|
+
|
634
772
|
/**
|
635
773
|
* `mousedown` hook. Along with `onEditorMouseUp` used to simulate the textarea resizing event.
|
636
774
|
*
|
@@ -638,11 +776,10 @@ export class Comments extends BasePlugin {
|
|
638
776
|
* @param {MouseEvent} event The `mousedown` event.
|
639
777
|
*/
|
640
778
|
onEditorMouseDown(event) {
|
641
|
-
|
642
|
-
priv.tempEditorDimensions = {
|
779
|
+
_classPrivateFieldSet(this, _tempEditorDimensions, {
|
643
780
|
width: outerWidth(event.target),
|
644
781
|
height: outerHeight(event.target)
|
645
|
-
};
|
782
|
+
});
|
646
783
|
}
|
647
784
|
|
648
785
|
/**
|
@@ -652,10 +789,9 @@ export class Comments extends BasePlugin {
|
|
652
789
|
* @param {MouseEvent} event The `mouseup` event.
|
653
790
|
*/
|
654
791
|
onEditorMouseUp(event) {
|
655
|
-
const priv = privatePool.get(this);
|
656
792
|
const currentWidth = outerWidth(event.target);
|
657
793
|
const currentHeight = outerHeight(event.target);
|
658
|
-
if (currentWidth !==
|
794
|
+
if (currentWidth !== _classPrivateFieldGet(this, _tempEditorDimensions).width + 1 || currentHeight !== _classPrivateFieldGet(this, _tempEditorDimensions).height + 2) {
|
659
795
|
this.updateCommentMeta(this.range.from.row, this.range.from.col, {
|
660
796
|
[META_STYLE]: {
|
661
797
|
width: currentWidth,
|
@@ -666,121 +802,36 @@ export class Comments extends BasePlugin {
|
|
666
802
|
}
|
667
803
|
|
668
804
|
/**
|
669
|
-
*
|
805
|
+
* Observes the pressed keys and if there is already opened the comment editor prevents open
|
806
|
+
* the table editor into the fast edit mode.
|
670
807
|
*
|
671
|
-
* @
|
672
|
-
*/
|
673
|
-
onContextMenuAddComment() {
|
674
|
-
const coords = this.hot.getSelectedRangeLast();
|
675
|
-
this.preventEditorAutoSwitch = true;
|
676
|
-
this.displaySwitch.cancelHiding();
|
677
|
-
this.setRange({
|
678
|
-
from: coords.highlight
|
679
|
-
});
|
680
|
-
this.show();
|
681
|
-
this.hot.deselectCell();
|
682
|
-
this.editor.focus();
|
683
|
-
}
|
684
|
-
|
685
|
-
/**
|
686
|
-
* Context Menu's "remove comment" callback.
|
687
|
-
*
|
688
|
-
* @private
|
808
|
+
* @param {Event} event The keydown event.
|
689
809
|
*/
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
if (row >= 0 && column >= 0) {
|
695
|
-
this.removeCommentAtCell(row, column, false);
|
696
|
-
}
|
697
|
-
});
|
698
|
-
this.hot.render();
|
810
|
+
onAfterDocumentKeyDown(event) {
|
811
|
+
if (_classPrivateFieldGet(this, _editor).isVisible()) {
|
812
|
+
stopImmediatePropagation(event);
|
813
|
+
}
|
699
814
|
}
|
700
815
|
|
701
816
|
/**
|
702
|
-
*
|
703
|
-
*
|
704
|
-
* @private
|
817
|
+
* Observes the changes in the scroll position if triggered it hides the comment editor.
|
705
818
|
*/
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
if (row >= 0 && column >= 0) {
|
711
|
-
const currentState = !!this.getCommentMeta(row, column, META_READONLY);
|
712
|
-
this.updateCommentMeta(row, column, {
|
713
|
-
[META_READONLY]: !currentState
|
714
|
-
});
|
715
|
-
}
|
716
|
-
});
|
819
|
+
onAfterScroll() {
|
820
|
+
if (!_classPrivateFieldGet(this, _preventEditorHiding)) {
|
821
|
+
this.hide();
|
822
|
+
}
|
717
823
|
}
|
718
824
|
|
719
825
|
/**
|
720
826
|
* Add Comments plugin options to the Context Menu.
|
721
827
|
*
|
722
828
|
* @private
|
723
|
-
* @param {object}
|
724
|
-
*/
|
725
|
-
addToContextMenu(
|
726
|
-
|
727
|
-
|
728
|
-
};
|
729
|
-
defaultOptions.items.push({
|
730
|
-
name: '---------'
|
731
|
-
}, {
|
732
|
-
key: 'commentsAddEdit',
|
733
|
-
name: () => {
|
734
|
-
if (this.checkSelectionCommentsConsistency()) {
|
735
|
-
return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_EDIT_COMMENT);
|
736
|
-
}
|
737
|
-
return this.hot.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_ADD_COMMENT);
|
738
|
-
},
|
739
|
-
callback: () => this.onContextMenuAddComment(),
|
740
|
-
disabled: () => {
|
741
|
-
if (!isThereAnyCellRendered()) {
|
742
|
-
return true;
|
743
|
-
}
|
744
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
|
745
|
-
}
|
746
|
-
}, {
|
747
|
-
key: 'commentsRemove',
|
748
|
-
name() {
|
749
|
-
return this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_REMOVE_COMMENT);
|
750
|
-
},
|
751
|
-
callback: () => this.onContextMenuRemoveComment(),
|
752
|
-
disabled: () => {
|
753
|
-
if (!isThereAnyCellRendered()) {
|
754
|
-
return true;
|
755
|
-
}
|
756
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner());
|
757
|
-
}
|
758
|
-
}, {
|
759
|
-
key: 'commentsReadOnly',
|
760
|
-
name() {
|
761
|
-
let label = this.getTranslatedPhrase(C.CONTEXTMENU_ITEMS_READ_ONLY_COMMENT);
|
762
|
-
const hasProperty = checkSelectionConsistency(this.getSelectedRangeLast(), (row, col) => {
|
763
|
-
let readOnlyProperty = this.getCellMeta(row, col)[META_COMMENT];
|
764
|
-
if (readOnlyProperty) {
|
765
|
-
readOnlyProperty = readOnlyProperty[META_READONLY];
|
766
|
-
}
|
767
|
-
if (readOnlyProperty) {
|
768
|
-
return true;
|
769
|
-
}
|
770
|
-
});
|
771
|
-
if (hasProperty) {
|
772
|
-
label = markLabelAsSelected(label);
|
773
|
-
}
|
774
|
-
return label;
|
775
|
-
},
|
776
|
-
callback: () => this.onContextMenuMakeReadOnly(),
|
777
|
-
disabled: () => {
|
778
|
-
if (!isThereAnyCellRendered()) {
|
779
|
-
return true;
|
780
|
-
}
|
781
|
-
return !(this.hot.getSelectedLast() && !this.hot.selection.isSelectedByCorner()) || !this.checkSelectionCommentsConsistency();
|
782
|
-
}
|
783
|
-
});
|
829
|
+
* @param {object} options The menu options.
|
830
|
+
*/
|
831
|
+
addToContextMenu(options) {
|
832
|
+
options.items.push({
|
833
|
+
name: SEPARATOR
|
834
|
+
}, addEditCommentItem(this), removeCommentItem(this), readOnlyCommentItem(this));
|
784
835
|
}
|
785
836
|
|
786
837
|
/**
|
@@ -796,15 +847,25 @@ export class Comments extends BasePlugin {
|
|
796
847
|
}
|
797
848
|
}
|
798
849
|
|
850
|
+
/**
|
851
|
+
* Gets the editors input element.
|
852
|
+
*
|
853
|
+
* @private
|
854
|
+
* @returns {HTMLTextAreaElement}
|
855
|
+
*/
|
856
|
+
getEditorInputElement() {
|
857
|
+
return _classPrivateFieldGet(this, _editor).getInputElement();
|
858
|
+
}
|
859
|
+
|
799
860
|
/**
|
800
861
|
* Destroys the plugin instance.
|
801
862
|
*/
|
802
863
|
destroy() {
|
803
|
-
if (this
|
804
|
-
this.
|
864
|
+
if (_classPrivateFieldGet(this, _editor)) {
|
865
|
+
_classPrivateFieldGet(this, _editor).destroy();
|
805
866
|
}
|
806
|
-
if (this
|
807
|
-
this.
|
867
|
+
if (_classPrivateFieldGet(this, _displaySwitch)) {
|
868
|
+
_classPrivateFieldGet(this, _displaySwitch).destroy();
|
808
869
|
}
|
809
870
|
super.destroy();
|
810
871
|
}
|