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,32 +1,47 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
require("core-js/modules/es.error.cause.js");
|
3
4
|
exports.__esModule = true;
|
5
|
+
require("core-js/modules/es.array.unscopables.flat.js");
|
4
6
|
require("core-js/modules/es.array.push.js");
|
5
7
|
var _base = require("../base");
|
6
8
|
var _array = require("../../helpers/array");
|
7
9
|
var _templateLiteralTag = require("../../helpers/templateLiteralTag");
|
8
10
|
var _console = require("../../helpers/console");
|
9
11
|
var _number = require("../../helpers/number");
|
10
|
-
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
11
12
|
var _element = require("../../helpers/dom/element");
|
13
|
+
var _unicode = require("../../helpers/unicode");
|
12
14
|
var _predefinedItems = require("../contextMenu/predefinedItems");
|
13
15
|
var constants = _interopRequireWildcard(require("../../i18n/constants"));
|
14
|
-
var _condition =
|
15
|
-
var _operators =
|
16
|
-
var _value =
|
17
|
-
var _actionBar =
|
16
|
+
var _condition = require("./component/condition");
|
17
|
+
var _operators = require("./component/operators");
|
18
|
+
var _value = require("./component/value");
|
19
|
+
var _actionBar = require("./component/actionBar");
|
18
20
|
var _conditionCollection = _interopRequireDefault(require("./conditionCollection"));
|
19
21
|
var _dataFilter = _interopRequireDefault(require("./dataFilter"));
|
20
22
|
var _conditionUpdateObserver = _interopRequireDefault(require("./conditionUpdateObserver"));
|
21
23
|
var _utils = require("./utils");
|
24
|
+
var _focusController = require("./menu/focusController");
|
22
25
|
var _constants2 = require("./constants");
|
23
26
|
var _translations = require("../../translations");
|
27
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
24
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
25
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
26
|
-
function
|
30
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
31
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
32
|
+
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; }
|
33
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
34
|
+
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); }
|
35
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
36
|
+
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; } }
|
37
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
38
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
39
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
27
40
|
const PLUGIN_KEY = 'filters';
|
28
41
|
exports.PLUGIN_KEY = PLUGIN_KEY;
|
29
42
|
const PLUGIN_PRIORITY = 250;
|
43
|
+
exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
|
44
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
30
45
|
|
31
46
|
/**
|
32
47
|
* @plugin Filters
|
@@ -63,7 +78,7 @@ const PLUGIN_PRIORITY = 250;
|
|
63
78
|
* ```
|
64
79
|
* :::
|
65
80
|
*/
|
66
|
-
|
81
|
+
var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
|
67
82
|
class Filters extends _base.BasePlugin {
|
68
83
|
static get PLUGIN_KEY() {
|
69
84
|
return PLUGIN_KEY;
|
@@ -74,52 +89,55 @@ class Filters extends _base.BasePlugin {
|
|
74
89
|
static get PLUGIN_DEPS() {
|
75
90
|
return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
|
76
91
|
}
|
92
|
+
|
93
|
+
/**
|
94
|
+
* Instance of {@link DropdownMenu}.
|
95
|
+
*
|
96
|
+
* @private
|
97
|
+
* @type {DropdownMenu}
|
98
|
+
*/
|
99
|
+
|
77
100
|
constructor(hotInstance) {
|
78
101
|
super(hotInstance);
|
79
|
-
|
80
|
-
|
81
|
-
*
|
82
|
-
* @private
|
83
|
-
* @type {EventManager}
|
84
|
-
*/
|
85
|
-
this.eventManager = new _eventManager.default(this);
|
86
|
-
/**
|
87
|
-
* Instance of {@link DropdownMenu}.
|
88
|
-
*
|
89
|
-
* @private
|
90
|
-
* @type {DropdownMenu}
|
91
|
-
*/
|
92
|
-
this.dropdownMenuPlugin = null;
|
102
|
+
// One listener for the enable/disable functionality
|
103
|
+
_defineProperty(this, "dropdownMenuPlugin", null);
|
93
104
|
/**
|
94
105
|
* Instance of {@link ConditionCollection}.
|
95
106
|
*
|
96
107
|
* @private
|
97
108
|
* @type {ConditionCollection}
|
98
109
|
*/
|
99
|
-
this
|
110
|
+
_defineProperty(this, "conditionCollection", null);
|
100
111
|
/**
|
101
112
|
* Instance of {@link ConditionUpdateObserver}.
|
102
113
|
*
|
103
114
|
* @private
|
104
115
|
* @type {ConditionUpdateObserver}
|
105
116
|
*/
|
106
|
-
this
|
117
|
+
_defineProperty(this, "conditionUpdateObserver", null);
|
107
118
|
/**
|
108
119
|
* Map, where key is component identifier and value represent `BaseComponent` element or it derivatives.
|
109
120
|
*
|
110
121
|
* @private
|
111
122
|
* @type {Map}
|
112
123
|
*/
|
113
|
-
this
|
124
|
+
_defineProperty(this, "components", new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]));
|
114
125
|
/**
|
115
126
|
* Map of skipped rows by plugin.
|
116
127
|
*
|
117
128
|
* @private
|
118
129
|
* @type {null|TrimmingMap}
|
119
130
|
*/
|
120
|
-
this
|
121
|
-
|
122
|
-
|
131
|
+
_defineProperty(this, "filtersRowsMap", null);
|
132
|
+
/**
|
133
|
+
* Menu focus navigator allows switching the focus position through Tab and Shift Tab keys.
|
134
|
+
*
|
135
|
+
* @type {MenuFocusNavigator|undefined}
|
136
|
+
*/
|
137
|
+
_classPrivateFieldInitSpec(this, _menuFocusNavigator, {
|
138
|
+
writable: true,
|
139
|
+
value: void 0
|
140
|
+
});
|
123
141
|
this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
|
124
142
|
}
|
125
143
|
|
@@ -154,7 +172,7 @@ class Filters extends _base.BasePlugin {
|
|
154
172
|
const filterByConditionLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_CONDITION)}:`;
|
155
173
|
const filterValueLabel = () => `${this.hot.getTranslatedPhrase(constants.FILTERS_DIVS_FILTER_BY_VALUE)}:`;
|
156
174
|
if (!this.components.get('filter_by_condition')) {
|
157
|
-
const conditionComponent = new _condition.
|
175
|
+
const conditionComponent = new _condition.ConditionComponent(this.hot, {
|
158
176
|
id: 'filter_by_condition',
|
159
177
|
name: filterByConditionLabel,
|
160
178
|
addSeparator: false,
|
@@ -164,13 +182,13 @@ class Filters extends _base.BasePlugin {
|
|
164
182
|
this.components.set('filter_by_condition', addConfirmationHooks(conditionComponent));
|
165
183
|
}
|
166
184
|
if (!this.components.get('filter_operators')) {
|
167
|
-
this.components.set('filter_operators', new _operators.
|
185
|
+
this.components.set('filter_operators', new _operators.OperatorsComponent(this.hot, {
|
168
186
|
id: 'filter_operators',
|
169
187
|
name: 'Operators'
|
170
188
|
}));
|
171
189
|
}
|
172
190
|
if (!this.components.get('filter_by_condition2')) {
|
173
|
-
const conditionComponent = new _condition.
|
191
|
+
const conditionComponent = new _condition.ConditionComponent(this.hot, {
|
174
192
|
id: 'filter_by_condition2',
|
175
193
|
name: '',
|
176
194
|
addSeparator: true,
|
@@ -180,13 +198,13 @@ class Filters extends _base.BasePlugin {
|
|
180
198
|
this.components.set('filter_by_condition2', addConfirmationHooks(conditionComponent));
|
181
199
|
}
|
182
200
|
if (!this.components.get('filter_by_value')) {
|
183
|
-
this.components.set('filter_by_value', addConfirmationHooks(new _value.
|
201
|
+
this.components.set('filter_by_value', addConfirmationHooks(new _value.ValueComponent(this.hot, {
|
184
202
|
id: 'filter_by_value',
|
185
203
|
name: filterValueLabel
|
186
204
|
})));
|
187
205
|
}
|
188
206
|
if (!this.components.get('filter_action_bar')) {
|
189
|
-
this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.
|
207
|
+
this.components.set('filter_action_bar', addConfirmationHooks(new _actionBar.ActionBarComponent(this.hot, {
|
190
208
|
id: 'filter_action_bar',
|
191
209
|
name: 'Action bar'
|
192
210
|
})));
|
@@ -199,7 +217,6 @@ class Filters extends _base.BasePlugin {
|
|
199
217
|
this.conditionUpdateObserver.addLocalHook('update', conditionState => this.updateComponents(conditionState));
|
200
218
|
}
|
201
219
|
this.components.forEach(component => component.show());
|
202
|
-
this.addHook('beforeDropdownMenuSetItems', items => this.onBeforeDropdownMenuSetItems(items));
|
203
220
|
this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => this.onAfterDropdownMenuDefaultOptions(defaultOptions));
|
204
221
|
this.addHook('afterDropdownMenuShow', () => this.onAfterDropdownMenuShow());
|
205
222
|
this.addHook('afterDropdownMenuHide', () => this.onAfterDropdownMenuHide());
|
@@ -210,6 +227,33 @@ class Filters extends _base.BasePlugin {
|
|
210
227
|
this.dropdownMenuPlugin.disablePlugin();
|
211
228
|
this.dropdownMenuPlugin.enablePlugin();
|
212
229
|
}
|
230
|
+
if (!_classPrivateFieldGet(this, _menuFocusNavigator) && this.dropdownMenuPlugin.enabled) {
|
231
|
+
const mainMenu = this.dropdownMenuPlugin.menu;
|
232
|
+
const focusableItems = [
|
233
|
+
// A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
|
234
|
+
// to the menu navigation using arrow keys.
|
235
|
+
{
|
236
|
+
focus: () => mainMenu.focus()
|
237
|
+
}, ...Array.from(this.components).map(_ref => {
|
238
|
+
let [, component] = _ref;
|
239
|
+
return component.getElements();
|
240
|
+
}).flat()];
|
241
|
+
_classPrivateFieldSet(this, _menuFocusNavigator, (0, _focusController.createMenuFocusController)(mainMenu, focusableItems));
|
242
|
+
const forwardToFocusNavigation = event => {
|
243
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).listen();
|
244
|
+
event.preventDefault();
|
245
|
+
if ((0, _unicode.isKey)(event.keyCode, 'TAB')) {
|
246
|
+
if (event.shiftKey) {
|
247
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).toPreviousItem();
|
248
|
+
} else {
|
249
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).toNextItem();
|
250
|
+
}
|
251
|
+
}
|
252
|
+
};
|
253
|
+
this.components.get('filter_by_value').addLocalHook('listTabKeydown', forwardToFocusNavigation);
|
254
|
+
this.components.get('filter_by_condition').addLocalHook('selectTabKeydown', forwardToFocusNavigation);
|
255
|
+
}
|
256
|
+
this.registerShortcuts();
|
213
257
|
super.enablePlugin();
|
214
258
|
}
|
215
259
|
|
@@ -230,9 +274,36 @@ class Filters extends _base.BasePlugin {
|
|
230
274
|
this.conditionCollection = null;
|
231
275
|
this.hot.rowIndexMapper.unregisterMap(this.pluginName);
|
232
276
|
}
|
277
|
+
this.unregisterShortcuts();
|
233
278
|
super.disablePlugin();
|
234
279
|
}
|
235
280
|
|
281
|
+
/**
|
282
|
+
* Register shortcuts responsible for clearing the filters.
|
283
|
+
*
|
284
|
+
* @private
|
285
|
+
*/
|
286
|
+
registerShortcuts() {
|
287
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
288
|
+
keys: [['Alt', 'A']],
|
289
|
+
stopPropagation: true,
|
290
|
+
callback: () => {
|
291
|
+
this.clearConditions();
|
292
|
+
this.filter();
|
293
|
+
},
|
294
|
+
group: SHORTCUTS_GROUP
|
295
|
+
});
|
296
|
+
}
|
297
|
+
|
298
|
+
/**
|
299
|
+
* Unregister shortcuts responsible for clearing the filters.
|
300
|
+
*
|
301
|
+
* @private
|
302
|
+
*/
|
303
|
+
unregisterShortcuts() {
|
304
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
305
|
+
}
|
306
|
+
|
236
307
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
237
308
|
/**
|
238
309
|
* @memberof Filters#
|
@@ -422,7 +493,6 @@ class Filters extends _base.BasePlugin {
|
|
422
493
|
this.hot.runHooks('afterFilter', conditions);
|
423
494
|
this.hot.view.adjustElementsSize(true);
|
424
495
|
this.hot.render();
|
425
|
-
this.clearColumnSelection();
|
426
496
|
}
|
427
497
|
|
428
498
|
/**
|
@@ -444,18 +514,6 @@ class Filters extends _base.BasePlugin {
|
|
444
514
|
};
|
445
515
|
}
|
446
516
|
|
447
|
-
/**
|
448
|
-
* Clears column selection.
|
449
|
-
*
|
450
|
-
* @private
|
451
|
-
*/
|
452
|
-
clearColumnSelection() {
|
453
|
-
const selectedColumn = this.getSelectedColumn();
|
454
|
-
if (selectedColumn !== null) {
|
455
|
-
this.hot.selectCell(0, selectedColumn.visualIndex);
|
456
|
-
}
|
457
|
-
}
|
458
|
-
|
459
517
|
/**
|
460
518
|
* Returns handsontable source data with cell meta based on current selection.
|
461
519
|
*
|
@@ -562,21 +620,6 @@ class Filters extends _base.BasePlugin {
|
|
562
620
|
this.components.get('filter_by_condition2').getSelectElement().closeOptions();
|
563
621
|
}
|
564
622
|
|
565
|
-
/**
|
566
|
-
* Before dropdown menu set menu items listener.
|
567
|
-
*
|
568
|
-
* @private
|
569
|
-
*/
|
570
|
-
onBeforeDropdownMenuSetItems() {
|
571
|
-
if (this.dropdownMenuPlugin) {
|
572
|
-
this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', () => {
|
573
|
-
this.dropdownMenuPlugin.menu.hotMenu.updateSettings({
|
574
|
-
hiddenRows: true
|
575
|
-
});
|
576
|
-
});
|
577
|
-
}
|
578
|
-
}
|
579
|
-
|
580
623
|
/**
|
581
624
|
* After dropdown menu default options listener.
|
582
625
|
*
|
@@ -655,6 +698,7 @@ class Filters extends _base.BasePlugin {
|
|
655
698
|
this.components.forEach(component => component.saveState(physicalIndex));
|
656
699
|
this.filtersRowsMap.clear();
|
657
700
|
this.filter();
|
701
|
+
this.hot.selectCell(0, selectedColumn.visualIndex);
|
658
702
|
}
|
659
703
|
(_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 || _this$dropdownMenuPlu3.close();
|
660
704
|
}
|
@@ -668,7 +712,7 @@ class Filters extends _base.BasePlugin {
|
|
668
712
|
*/
|
669
713
|
onComponentChange(component, command) {
|
670
714
|
this.updateDependentComponentsVisibility();
|
671
|
-
if (component.constructor === _condition.
|
715
|
+
if (component.constructor === _condition.ConditionComponent && !command.inputsCount) {
|
672
716
|
this.setListeningDropdownMenu();
|
673
717
|
}
|
674
718
|
}
|
@@ -1,25 +1,39 @@
|
|
1
|
+
import "core-js/modules/es.array.unscopables.flat.js";
|
1
2
|
import "core-js/modules/es.array.push.js";
|
3
|
+
import "core-js/modules/es.error.cause.js";
|
4
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
5
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
6
|
+
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; }
|
7
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
8
|
+
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); }
|
9
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
10
|
+
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; } }
|
11
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
12
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
13
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
2
14
|
import { BasePlugin } from "../base/index.mjs";
|
3
15
|
import { arrayEach, arrayMap } from "../../helpers/array.mjs";
|
4
16
|
import { toSingleLine } from "../../helpers/templateLiteralTag.mjs";
|
5
17
|
import { warn } from "../../helpers/console.mjs";
|
6
18
|
import { rangeEach } from "../../helpers/number.mjs";
|
7
|
-
import EventManager from "../../eventManager.mjs";
|
8
19
|
import { addClass, removeClass } from "../../helpers/dom/element.mjs";
|
9
|
-
import {
|
20
|
+
import { isKey } from "../../helpers/unicode.mjs";
|
21
|
+
import { SEPARATOR } from "../contextMenu/predefinedItems/index.mjs";
|
10
22
|
import * as constants from "../../i18n/constants.mjs";
|
11
|
-
import ConditionComponent from "./component/condition.mjs";
|
12
|
-
import OperatorsComponent from "./component/operators.mjs";
|
13
|
-
import ValueComponent from "./component/value.mjs";
|
14
|
-
import ActionBarComponent from "./component/actionBar.mjs";
|
23
|
+
import { ConditionComponent } from "./component/condition.mjs";
|
24
|
+
import { OperatorsComponent } from "./component/operators.mjs";
|
25
|
+
import { ValueComponent } from "./component/value.mjs";
|
26
|
+
import { ActionBarComponent } from "./component/actionBar.mjs";
|
15
27
|
import ConditionCollection from "./conditionCollection.mjs";
|
16
28
|
import DataFilter from "./dataFilter.mjs";
|
17
29
|
import ConditionUpdateObserver from "./conditionUpdateObserver.mjs";
|
18
30
|
import { createArrayAssertion, toEmptyString, unifyColumnValues } from "./utils.mjs";
|
31
|
+
import { createMenuFocusController } from "./menu/focusController.mjs";
|
19
32
|
import { CONDITION_NONE, CONDITION_BY_VALUE, OPERATION_AND, OPERATION_OR, OPERATION_OR_THEN_VARIABLE } from "./constants.mjs";
|
20
33
|
import { TrimmingMap } from "../../translations/index.mjs";
|
21
34
|
export const PLUGIN_KEY = 'filters';
|
22
35
|
export const PLUGIN_PRIORITY = 250;
|
36
|
+
const SHORTCUTS_GROUP = PLUGIN_KEY;
|
23
37
|
|
24
38
|
/**
|
25
39
|
* @plugin Filters
|
@@ -56,6 +70,7 @@ export const PLUGIN_PRIORITY = 250;
|
|
56
70
|
* ```
|
57
71
|
* :::
|
58
72
|
*/
|
73
|
+
var _menuFocusNavigator = /*#__PURE__*/new WeakMap();
|
59
74
|
export class Filters extends BasePlugin {
|
60
75
|
static get PLUGIN_KEY() {
|
61
76
|
return PLUGIN_KEY;
|
@@ -66,52 +81,55 @@ export class Filters extends BasePlugin {
|
|
66
81
|
static get PLUGIN_DEPS() {
|
67
82
|
return ['plugin:DropdownMenu', 'plugin:HiddenRows', 'cell-type:checkbox'];
|
68
83
|
}
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Instance of {@link DropdownMenu}.
|
87
|
+
*
|
88
|
+
* @private
|
89
|
+
* @type {DropdownMenu}
|
90
|
+
*/
|
91
|
+
|
69
92
|
constructor(hotInstance) {
|
70
93
|
super(hotInstance);
|
71
|
-
|
72
|
-
|
73
|
-
*
|
74
|
-
* @private
|
75
|
-
* @type {EventManager}
|
76
|
-
*/
|
77
|
-
this.eventManager = new EventManager(this);
|
78
|
-
/**
|
79
|
-
* Instance of {@link DropdownMenu}.
|
80
|
-
*
|
81
|
-
* @private
|
82
|
-
* @type {DropdownMenu}
|
83
|
-
*/
|
84
|
-
this.dropdownMenuPlugin = null;
|
94
|
+
// One listener for the enable/disable functionality
|
95
|
+
_defineProperty(this, "dropdownMenuPlugin", null);
|
85
96
|
/**
|
86
97
|
* Instance of {@link ConditionCollection}.
|
87
98
|
*
|
88
99
|
* @private
|
89
100
|
* @type {ConditionCollection}
|
90
101
|
*/
|
91
|
-
this
|
102
|
+
_defineProperty(this, "conditionCollection", null);
|
92
103
|
/**
|
93
104
|
* Instance of {@link ConditionUpdateObserver}.
|
94
105
|
*
|
95
106
|
* @private
|
96
107
|
* @type {ConditionUpdateObserver}
|
97
108
|
*/
|
98
|
-
this
|
109
|
+
_defineProperty(this, "conditionUpdateObserver", null);
|
99
110
|
/**
|
100
111
|
* Map, where key is component identifier and value represent `BaseComponent` element or it derivatives.
|
101
112
|
*
|
102
113
|
* @private
|
103
114
|
* @type {Map}
|
104
115
|
*/
|
105
|
-
this
|
116
|
+
_defineProperty(this, "components", new Map([['filter_by_condition', null], ['filter_operators', null], ['filter_by_condition2', null], ['filter_by_value', null], ['filter_action_bar', null]]));
|
106
117
|
/**
|
107
118
|
* Map of skipped rows by plugin.
|
108
119
|
*
|
109
120
|
* @private
|
110
121
|
* @type {null|TrimmingMap}
|
111
122
|
*/
|
112
|
-
this
|
113
|
-
|
114
|
-
|
123
|
+
_defineProperty(this, "filtersRowsMap", null);
|
124
|
+
/**
|
125
|
+
* Menu focus navigator allows switching the focus position through Tab and Shift Tab keys.
|
126
|
+
*
|
127
|
+
* @type {MenuFocusNavigator|undefined}
|
128
|
+
*/
|
129
|
+
_classPrivateFieldInitSpec(this, _menuFocusNavigator, {
|
130
|
+
writable: true,
|
131
|
+
value: void 0
|
132
|
+
});
|
115
133
|
this.hot.addHook('afterGetColHeader', (col, TH) => this.onAfterGetColHeader(col, TH));
|
116
134
|
}
|
117
135
|
|
@@ -191,7 +209,6 @@ export class Filters extends BasePlugin {
|
|
191
209
|
this.conditionUpdateObserver.addLocalHook('update', conditionState => this.updateComponents(conditionState));
|
192
210
|
}
|
193
211
|
this.components.forEach(component => component.show());
|
194
|
-
this.addHook('beforeDropdownMenuSetItems', items => this.onBeforeDropdownMenuSetItems(items));
|
195
212
|
this.addHook('afterDropdownMenuDefaultOptions', defaultOptions => this.onAfterDropdownMenuDefaultOptions(defaultOptions));
|
196
213
|
this.addHook('afterDropdownMenuShow', () => this.onAfterDropdownMenuShow());
|
197
214
|
this.addHook('afterDropdownMenuHide', () => this.onAfterDropdownMenuHide());
|
@@ -202,6 +219,33 @@ export class Filters extends BasePlugin {
|
|
202
219
|
this.dropdownMenuPlugin.disablePlugin();
|
203
220
|
this.dropdownMenuPlugin.enablePlugin();
|
204
221
|
}
|
222
|
+
if (!_classPrivateFieldGet(this, _menuFocusNavigator) && this.dropdownMenuPlugin.enabled) {
|
223
|
+
const mainMenu = this.dropdownMenuPlugin.menu;
|
224
|
+
const focusableItems = [
|
225
|
+
// A fake menu item that once focused allows escaping from the focus navigation (using Tab keys)
|
226
|
+
// to the menu navigation using arrow keys.
|
227
|
+
{
|
228
|
+
focus: () => mainMenu.focus()
|
229
|
+
}, ...Array.from(this.components).map(_ref => {
|
230
|
+
let [, component] = _ref;
|
231
|
+
return component.getElements();
|
232
|
+
}).flat()];
|
233
|
+
_classPrivateFieldSet(this, _menuFocusNavigator, createMenuFocusController(mainMenu, focusableItems));
|
234
|
+
const forwardToFocusNavigation = event => {
|
235
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).listen();
|
236
|
+
event.preventDefault();
|
237
|
+
if (isKey(event.keyCode, 'TAB')) {
|
238
|
+
if (event.shiftKey) {
|
239
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).toPreviousItem();
|
240
|
+
} else {
|
241
|
+
_classPrivateFieldGet(this, _menuFocusNavigator).toNextItem();
|
242
|
+
}
|
243
|
+
}
|
244
|
+
};
|
245
|
+
this.components.get('filter_by_value').addLocalHook('listTabKeydown', forwardToFocusNavigation);
|
246
|
+
this.components.get('filter_by_condition').addLocalHook('selectTabKeydown', forwardToFocusNavigation);
|
247
|
+
}
|
248
|
+
this.registerShortcuts();
|
205
249
|
super.enablePlugin();
|
206
250
|
}
|
207
251
|
|
@@ -222,9 +266,36 @@ export class Filters extends BasePlugin {
|
|
222
266
|
this.conditionCollection = null;
|
223
267
|
this.hot.rowIndexMapper.unregisterMap(this.pluginName);
|
224
268
|
}
|
269
|
+
this.unregisterShortcuts();
|
225
270
|
super.disablePlugin();
|
226
271
|
}
|
227
272
|
|
273
|
+
/**
|
274
|
+
* Register shortcuts responsible for clearing the filters.
|
275
|
+
*
|
276
|
+
* @private
|
277
|
+
*/
|
278
|
+
registerShortcuts() {
|
279
|
+
this.hot.getShortcutManager().getContext('grid').addShortcut({
|
280
|
+
keys: [['Alt', 'A']],
|
281
|
+
stopPropagation: true,
|
282
|
+
callback: () => {
|
283
|
+
this.clearConditions();
|
284
|
+
this.filter();
|
285
|
+
},
|
286
|
+
group: SHORTCUTS_GROUP
|
287
|
+
});
|
288
|
+
}
|
289
|
+
|
290
|
+
/**
|
291
|
+
* Unregister shortcuts responsible for clearing the filters.
|
292
|
+
*
|
293
|
+
* @private
|
294
|
+
*/
|
295
|
+
unregisterShortcuts() {
|
296
|
+
this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
|
297
|
+
}
|
298
|
+
|
228
299
|
/* eslint-disable jsdoc/require-description-complete-sentence */
|
229
300
|
/**
|
230
301
|
* @memberof Filters#
|
@@ -414,7 +485,6 @@ export class Filters extends BasePlugin {
|
|
414
485
|
this.hot.runHooks('afterFilter', conditions);
|
415
486
|
this.hot.view.adjustElementsSize(true);
|
416
487
|
this.hot.render();
|
417
|
-
this.clearColumnSelection();
|
418
488
|
}
|
419
489
|
|
420
490
|
/**
|
@@ -436,18 +506,6 @@ export class Filters extends BasePlugin {
|
|
436
506
|
};
|
437
507
|
}
|
438
508
|
|
439
|
-
/**
|
440
|
-
* Clears column selection.
|
441
|
-
*
|
442
|
-
* @private
|
443
|
-
*/
|
444
|
-
clearColumnSelection() {
|
445
|
-
const selectedColumn = this.getSelectedColumn();
|
446
|
-
if (selectedColumn !== null) {
|
447
|
-
this.hot.selectCell(0, selectedColumn.visualIndex);
|
448
|
-
}
|
449
|
-
}
|
450
|
-
|
451
509
|
/**
|
452
510
|
* Returns handsontable source data with cell meta based on current selection.
|
453
511
|
*
|
@@ -554,21 +612,6 @@ export class Filters extends BasePlugin {
|
|
554
612
|
this.components.get('filter_by_condition2').getSelectElement().closeOptions();
|
555
613
|
}
|
556
614
|
|
557
|
-
/**
|
558
|
-
* Before dropdown menu set menu items listener.
|
559
|
-
*
|
560
|
-
* @private
|
561
|
-
*/
|
562
|
-
onBeforeDropdownMenuSetItems() {
|
563
|
-
if (this.dropdownMenuPlugin) {
|
564
|
-
this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', () => {
|
565
|
-
this.dropdownMenuPlugin.menu.hotMenu.updateSettings({
|
566
|
-
hiddenRows: true
|
567
|
-
});
|
568
|
-
});
|
569
|
-
}
|
570
|
-
}
|
571
|
-
|
572
615
|
/**
|
573
616
|
* After dropdown menu default options listener.
|
574
617
|
*
|
@@ -647,6 +690,7 @@ export class Filters extends BasePlugin {
|
|
647
690
|
this.components.forEach(component => component.saveState(physicalIndex));
|
648
691
|
this.filtersRowsMap.clear();
|
649
692
|
this.filter();
|
693
|
+
this.hot.selectCell(0, selectedColumn.visualIndex);
|
650
694
|
}
|
651
695
|
(_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 || _this$dropdownMenuPlu3.close();
|
652
696
|
}
|