handsontable 13.1.0 → 14.0.0-next-d97b156-20231027
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3rdparty/walkontable/src/calculator/constants.js +3 -6
- package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
- package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
- package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
- package/3rdparty/walkontable/src/cell/coords.js +81 -13
- package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
- package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
- package/3rdparty/walkontable/src/cell/range.js +39 -9
- 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 +13 -12
- 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/filter/column.js +1 -2
- package/3rdparty/walkontable/src/filter/row.js +1 -2
- package/3rdparty/walkontable/src/index.js +12 -4
- 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/constants.js +7 -14
- 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/overlays.js +1 -2
- 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 +13 -0
- package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
- package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
- package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -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 +3 -2
- package/3rdparty/walkontable/src/scroll.mjs +2 -0
- package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
- package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
- package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
- package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
- package/3rdparty/walkontable/src/selection/constants.js +54 -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 +100 -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/bottom.js +1 -2
- package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
- package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
- package/3rdparty/walkontable/src/table/master.js +3 -6
- package/3rdparty/walkontable/src/table/master.mjs +2 -4
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
- package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
- package/3rdparty/walkontable/src/table/top.js +1 -2
- package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
- package/3rdparty/walkontable/src/table.js +20 -80
- package/3rdparty/walkontable/src/table.mjs +20 -79
- package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
- package/3rdparty/walkontable/src/viewport.js +1 -2
- package/CHANGELOG.md +51 -0
- package/base.js +3 -4
- package/base.mjs +2 -2
- package/cellTypes/autocompleteType/autocompleteType.js +3 -5
- package/cellTypes/checkboxType/checkboxType.js +3 -5
- package/cellTypes/dateType/dateType.d.ts +3 -3
- package/cellTypes/dateType/dateType.js +5 -7
- package/cellTypes/dateType/dateType.mjs +2 -2
- package/cellTypes/dropdownType/dropdownType.js +3 -5
- package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
- package/cellTypes/handsontableType/handsontableType.js +5 -7
- 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/numericType/numericType.js +3 -5
- package/cellTypes/passwordType/passwordType.js +3 -5
- 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 +11 -0
- package/cellTypes/selectType/selectType.mjs +8 -0
- package/cellTypes/textType/textType.js +3 -5
- package/cellTypes/timeType/timeType.js +3 -5
- package/common.d.ts +1 -1
- package/core/focusCatcher/focusDetector.js +63 -0
- package/core/focusCatcher/focusDetector.mjs +59 -0
- package/core/focusCatcher/index.js +148 -0
- package/core/focusCatcher/index.mjs +144 -0
- package/core/index.js +9 -0
- package/core/index.mjs +1 -0
- package/core.d.ts +10 -5
- package/core.js +327 -359
- package/core.mjs +327 -359
- package/dataMap/dataMap.js +1 -2
- package/dataMap/dataSource.js +1 -2
- 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 +94 -76
- package/dist/handsontable.full.css +94 -76
- package/dist/handsontable.full.js +21236 -14104
- package/dist/handsontable.full.min.css +8 -8
- package/dist/handsontable.full.min.js +170 -152
- package/dist/handsontable.js +22016 -15254
- package/dist/handsontable.min.css +7 -7
- package/dist/handsontable.min.js +31 -23
- package/dist/languages/all.js +47 -40
- package/dist/languages/all.min.js +1 -1
- package/dist/languages/ar-AR.js +1 -2
- package/dist/languages/cs-CZ.js +1 -2
- package/dist/languages/de-CH.js +1 -2
- package/dist/languages/de-DE.js +1 -2
- package/dist/languages/en-US.js +15 -3
- package/dist/languages/en-US.min.js +1 -1
- package/dist/languages/es-MX.js +1 -2
- package/dist/languages/fr-FR.js +1 -2
- package/dist/languages/it-IT.js +1 -2
- package/dist/languages/ja-JP.js +1 -2
- package/dist/languages/ko-KR.js +1 -2
- package/dist/languages/lv-LV.js +1 -2
- package/dist/languages/nb-NO.js +1 -2
- package/dist/languages/nl-NL.js +1 -2
- package/dist/languages/pl-PL.js +15 -3
- package/dist/languages/pl-PL.min.js +1 -1
- package/dist/languages/pt-BR.js +1 -2
- package/dist/languages/ru-RU.js +1 -2
- package/dist/languages/sr-SP.js +1 -2
- package/dist/languages/zh-CN.js +1 -2
- package/dist/languages/zh-TW.js +1 -2
- package/editorManager.js +17 -91
- package/editorManager.mjs +16 -87
- package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
- package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
- package/editors/baseEditor/baseEditor.js +19 -13
- package/editors/baseEditor/baseEditor.mjs +16 -7
- package/editors/checkboxEditor/checkboxEditor.js +1 -2
- package/editors/dateEditor/dateEditor.js +27 -9
- package/editors/dateEditor/dateEditor.mjs +27 -8
- package/editors/dropdownEditor/dropdownEditor.js +1 -2
- package/editors/handsontableEditor/handsontableEditor.js +14 -7
- package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
- package/editors/numericEditor/numericEditor.js +1 -2
- package/editors/passwordEditor/passwordEditor.js +1 -2
- package/editors/selectEditor/selectEditor.js +1 -2
- package/editors/textEditor/textEditor.js +20 -29
- package/editors/textEditor/textEditor.mjs +22 -30
- package/editors/timeEditor/timeEditor.js +1 -2
- package/eventManager.js +1 -2
- package/focusManager.d.ts +12 -0
- package/focusManager.js +265 -0
- package/focusManager.mjs +261 -0
- package/helpers/a11y.js +81 -0
- package/helpers/a11y.mjs +39 -0
- package/helpers/dom/element.js +224 -12
- package/helpers/dom/element.mjs +216 -10
- package/helpers/dom/event.d.ts +1 -0
- package/helpers/dom/event.js +25 -0
- package/helpers/dom/event.mjs +24 -0
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/helpers/number.d.ts +1 -0
- package/helpers/number.js +18 -0
- package/helpers/number.mjs +17 -0
- package/helpers/unicode.js +1 -2
- package/i18n/constants.js +97 -160
- package/i18n/constants.mjs +17 -1
- package/i18n/languages/ar-AR.js +3 -4
- package/i18n/languages/cs-CZ.js +3 -4
- package/i18n/languages/de-CH.js +3 -4
- package/i18n/languages/de-DE.js +3 -4
- package/i18n/languages/en-US.js +17 -5
- package/i18n/languages/en-US.mjs +14 -1
- package/i18n/languages/es-MX.js +3 -4
- package/i18n/languages/fr-FR.js +3 -4
- package/i18n/languages/it-IT.js +3 -4
- package/i18n/languages/ja-JP.js +3 -4
- package/i18n/languages/ko-KR.js +3 -4
- package/i18n/languages/lv-LV.js +3 -4
- package/i18n/languages/nb-NO.js +3 -4
- package/i18n/languages/nl-NL.js +3 -4
- package/i18n/languages/pl-PL.js +17 -5
- package/i18n/languages/pl-PL.mjs +14 -1
- package/i18n/languages/pt-BR.js +3 -4
- package/i18n/languages/ru-RU.js +3 -4
- package/i18n/languages/sr-SP.js +3 -4
- package/i18n/languages/zh-CN.js +3 -4
- package/i18n/languages/zh-TW.js +3 -4
- package/i18n/registry.js +4 -6
- package/index.js +3 -4
- package/languages/all.js +47 -40
- package/languages/ar-AR.js +1 -2
- package/languages/cs-CZ.js +1 -2
- package/languages/de-CH.js +1 -2
- package/languages/de-DE.js +1 -2
- package/languages/en-US.js +15 -3
- package/languages/en-US.mjs +14 -1
- package/languages/es-MX.js +1 -2
- package/languages/fr-FR.js +1 -2
- package/languages/index.js +47 -40
- package/languages/it-IT.js +1 -2
- package/languages/ja-JP.js +1 -2
- package/languages/ko-KR.js +1 -2
- package/languages/lv-LV.js +1 -2
- package/languages/nb-NO.js +1 -2
- package/languages/nl-NL.js +1 -2
- package/languages/pl-PL.js +15 -3
- package/languages/pl-PL.mjs +14 -1
- package/languages/pt-BR.js +1 -2
- package/languages/ru-RU.js +1 -2
- package/languages/sr-SP.js +1 -2
- package/languages/zh-CN.js +1 -2
- package/languages/zh-TW.js +1 -2
- package/mixins/hooksRefRegisterer.js +1 -2
- package/mixins/localHooks.js +1 -2
- package/package.json +119 -96
- package/pluginHooks.d.ts +42 -7
- package/pluginHooks.js +301 -65
- package/pluginHooks.mjs +300 -63
- package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
- package/plugins/autoColumnSize/autoColumnSize.js +2 -4
- package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
- package/plugins/autoRowSize/autoRowSize.js +15 -10
- package/plugins/autoRowSize/autoRowSize.mjs +13 -6
- package/plugins/autofill/autofill.js +2 -4
- package/plugins/autofill/utils.js +1 -2
- package/plugins/base/base.js +1 -2
- package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
- package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
- package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
- package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
- package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
- package/plugins/columnSorting/columnSorting.js +71 -6
- package/plugins/columnSorting/columnSorting.mjs +70 -3
- package/plugins/columnSorting/index.js +3 -1
- package/plugins/columnSorting/index.mjs +1 -1
- package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
- package/plugins/columnSorting/sortFunction/date.js +1 -2
- package/plugins/columnSorting/sortFunction/default.js +1 -2
- package/plugins/columnSorting/sortFunction/numeric.js +1 -2
- package/plugins/columnSorting/sortService/engine.js +3 -6
- package/plugins/columnSorting/utils.js +3 -6
- package/plugins/columnSummary/columnSummary.js +2 -4
- package/plugins/columnSummary/endpoints.js +1 -2
- package/plugins/comments/commentEditor.js +2 -2
- package/plugins/comments/commentEditor.mjs +1 -0
- package/plugins/comments/comments.js +254 -197
- 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/comments/displaySwitch.js +1 -2
- 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 +77 -40
- 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 +70 -0
- package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -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 +10 -4
- package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
- package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
- package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
- package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/index.js +75 -0
- package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
- package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
- package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
- package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
- package/plugins/contextMenu/predefinedItems/redo.js +3 -4
- package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
- package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
- package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
- package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
- package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
- package/plugins/contextMenu/predefinedItems/separator.js +1 -2
- package/plugins/contextMenu/predefinedItems/undo.js +3 -4
- package/plugins/contextMenu/utils.js +35 -151
- package/plugins/contextMenu/utils.mjs +35 -144
- package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
- package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
- package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
- package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
- package/plugins/copyPaste/clipboardData/index.js +9 -0
- package/plugins/copyPaste/clipboardData/index.mjs +4 -0
- package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
- package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
- 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 +9 -2
- package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
- package/plugins/copyPaste/copyPaste.js +160 -167
- package/plugins/copyPaste/copyPaste.mjs +161 -166
- package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
- package/plugins/customBorders/contextMenuItem/left.js +2 -2
- package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
- package/plugins/customBorders/contextMenuItem/right.js +2 -2
- package/plugins/customBorders/contextMenuItem/top.js +2 -2
- package/plugins/customBorders/customBorders.js +27 -26
- package/plugins/customBorders/customBorders.mjs +24 -21
- package/plugins/dragToScroll/dragToScroll.js +2 -4
- package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
- package/plugins/dropdownMenu/dropdownMenu.js +130 -44
- package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
- package/plugins/exportFile/dataProvider.js +1 -2
- package/plugins/exportFile/exportFile.js +4 -6
- package/plugins/exportFile/typeFactory.js +5 -8
- package/plugins/exportFile/types/_base.js +1 -2
- package/plugins/exportFile/types/csv.js +1 -2
- package/plugins/filters/component/_base.js +23 -8
- package/plugins/filters/component/_base.mjs +23 -8
- package/plugins/filters/component/actionBar.js +31 -29
- package/plugins/filters/component/actionBar.mjs +26 -23
- package/plugins/filters/component/condition.js +48 -61
- 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 +37 -28
- package/plugins/filters/component/value.mjs +32 -22
- package/plugins/filters/condition/beginsWith.js +3 -4
- package/plugins/filters/condition/between.js +3 -4
- package/plugins/filters/condition/byValue.js +1 -2
- package/plugins/filters/condition/contains.js +3 -4
- package/plugins/filters/condition/date/after.js +3 -4
- package/plugins/filters/condition/date/before.js +3 -4
- package/plugins/filters/condition/date/today.js +3 -4
- package/plugins/filters/condition/date/tomorrow.js +3 -4
- package/plugins/filters/condition/date/yesterday.js +3 -4
- package/plugins/filters/condition/empty.js +3 -4
- package/plugins/filters/condition/endsWith.js +3 -4
- package/plugins/filters/condition/equal.js +3 -4
- package/plugins/filters/condition/false.js +1 -2
- package/plugins/filters/condition/greaterThan.js +3 -4
- package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
- package/plugins/filters/condition/lessThan.js +3 -4
- package/plugins/filters/condition/lessThanOrEqual.js +3 -4
- package/plugins/filters/condition/none.js +3 -4
- package/plugins/filters/condition/notBetween.js +3 -4
- package/plugins/filters/condition/notContains.js +3 -4
- package/plugins/filters/condition/notEmpty.js +3 -4
- package/plugins/filters/condition/notEqual.js +3 -4
- package/plugins/filters/condition/true.js +1 -2
- package/plugins/filters/conditionCollection.d.ts +3 -2
- package/plugins/filters/conditionCollection.js +1 -2
- package/plugins/filters/conditionRegisterer.js +1 -2
- package/plugins/filters/conditionUpdateObserver.js +1 -2
- package/plugins/filters/constants.js +4 -8
- package/plugins/filters/constants.mjs +1 -1
- package/plugins/filters/dataFilter.js +1 -2
- package/plugins/filters/filters.d.ts +3 -5
- package/plugins/filters/filters.js +108 -66
- package/plugins/filters/filters.mjs +99 -55
- package/plugins/filters/logicalOperationRegisterer.js +1 -2
- package/plugins/filters/logicalOperations/conjunction.js +4 -6
- package/plugins/filters/logicalOperations/disjunction.js +4 -6
- package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
- 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 +37 -15
- package/plugins/filters/ui/_base.mjs +35 -13
- package/plugins/filters/ui/input.js +43 -35
- package/plugins/filters/ui/input.mjs +42 -33
- package/plugins/filters/ui/link.js +44 -12
- package/plugins/filters/ui/link.mjs +44 -11
- package/plugins/filters/ui/multipleSelect.js +237 -133
- 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 +152 -77
- package/plugins/filters/ui/select.mjs +148 -72
- package/plugins/formulas/engine/settings.js +2 -4
- package/plugins/formulas/formulas.js +3 -6
- package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
- package/plugins/formulas/indexSyncer/index.js +1 -2
- package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
- package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
- package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
- package/plugins/hiddenColumns/hiddenColumns.js +49 -6
- package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
- package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
- package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
- package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
- package/plugins/hiddenRows/hiddenRows.js +49 -6
- package/plugins/hiddenRows/hiddenRows.mjs +48 -3
- package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
- package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
- package/plugins/manualColumnMove/manualColumnMove.js +9 -17
- package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
- package/plugins/manualColumnMove/ui/_base.js +1 -2
- package/plugins/manualColumnMove/ui/backlight.js +1 -2
- package/plugins/manualColumnMove/ui/guideline.js +1 -2
- package/plugins/manualColumnResize/manualColumnResize.js +2 -4
- package/plugins/manualRowMove/manualRowMove.js +6 -23
- package/plugins/manualRowMove/manualRowMove.mjs +4 -19
- package/plugins/manualRowMove/ui/_base.js +1 -2
- package/plugins/manualRowMove/ui/backlight.js +1 -2
- package/plugins/manualRowMove/ui/guideline.js +1 -2
- package/plugins/manualRowResize/manualRowResize.js +2 -4
- package/plugins/mergeCells/calculations/autofill.js +1 -2
- package/plugins/mergeCells/calculations/selection.js +1 -2
- package/plugins/mergeCells/cellCoords.js +1 -2
- package/plugins/mergeCells/cellsCollection.js +1 -2
- package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
- package/plugins/mergeCells/mergeCells.js +7 -20
- package/plugins/mergeCells/mergeCells.mjs +5 -16
- package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
- package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
- package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
- package/plugins/nestedHeaders/nestedHeaders.js +263 -36
- package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
- package/plugins/nestedHeaders/stateManager/index.js +102 -3
- package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
- package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
- package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
- package/plugins/nestedRows/data/dataManager.js +1 -2
- package/plugins/nestedRows/nestedRows.js +47 -10
- package/plugins/nestedRows/nestedRows.mjs +45 -6
- package/plugins/nestedRows/ui/_base.js +1 -2
- package/plugins/nestedRows/ui/collapsing.js +1 -2
- package/plugins/nestedRows/ui/contextMenu.js +3 -4
- package/plugins/nestedRows/ui/headers.js +13 -3
- package/plugins/nestedRows/ui/headers.mjs +13 -2
- package/plugins/persistentState/persistentState.js +2 -4
- package/plugins/persistentState/storage.js +1 -2
- package/plugins/search/search.js +2 -4
- package/plugins/touchScroll/touchScroll.js +2 -4
- package/plugins/trimRows/trimRows.js +2 -4
- package/plugins/undoRedo/index.js +2 -2
- package/plugins/undoRedo/undoRedo.js +2 -4
- package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
- package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
- package/renderers/baseRenderer/baseRenderer.js +18 -2
- package/renderers/baseRenderer/baseRenderer.mjs +18 -1
- package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
- package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
- package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
- package/renderers/dateRenderer/dateRenderer.js +28 -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 +28 -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/htmlRenderer/htmlRenderer.js +1 -2
- package/renderers/index.d.ts +9 -0
- package/renderers/numericRenderer/numericRenderer.js +1 -2
- package/renderers/passwordRenderer/passwordRenderer.js +1 -2
- 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 +26 -0
- package/renderers/selectRenderer/selectRenderer.mjs +22 -0
- package/renderers/textRenderer/textRenderer.js +1 -2
- package/renderers/timeRenderer/timeRenderer.js +1 -2
- package/selection/highlight/highlight.js +257 -73
- 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 +32 -29
- 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 +9 -10
- package/selection/range.mjs +8 -8
- package/selection/selection.js +334 -154
- package/selection/selection.mjs +330 -151
- package/selection/transformation.js +233 -94
- package/selection/transformation.mjs +232 -92
- package/selection/utils.js +20 -31
- package/selection/utils.mjs +16 -21
- package/settings.d.ts +4 -0
- package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
- package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
- package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
- package/shortcutContexts/commands/editor/fastOpen.js +15 -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 +26 -0
- package/shortcutContexts/commands/editor/open.mjs +23 -0
- package/shortcutContexts/commands/emptySelectedCells.js +10 -0
- package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
- package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -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 +14 -0
- package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
- package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
- package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
- package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
- package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
- package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -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 +12 -0
- package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -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 +11 -0
- package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
- package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
- package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
- package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
- package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
- package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
- package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
- package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
- package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
- package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
- package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
- package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
- package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
- package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
- package/shortcutContexts/commands/selectAll.js +11 -0
- package/shortcutContexts/commands/selectAll.mjs +8 -0
- package/shortcutContexts/constants.js +11 -0
- package/shortcutContexts/constants.mjs +8 -0
- package/shortcutContexts/editor.js +25 -0
- package/shortcutContexts/editor.mjs +21 -0
- package/shortcutContexts/grid.js +167 -0
- package/shortcutContexts/grid.mjs +163 -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 +31 -7
- package/shortcuts/manager.mjs +32 -7
- package/shortcuts/recorder.js +30 -14
- package/shortcuts/recorder.mjs +30 -14
- package/shortcuts/utils.js +19 -5
- package/shortcuts/utils.mjs +18 -4
- package/tableView.js +113 -16
- package/tableView.mjs +113 -15
- package/utils/dataStructures/linkedList.js +1 -2
- package/utils/dataStructures/priorityMap.js +2 -4
- package/utils/dataStructures/queue.js +1 -2
- package/utils/dataStructures/stack.js +1 -2
- package/utils/dataStructures/tree.js +3 -6
- package/utils/ghostTable.js +32 -17
- package/utils/ghostTable.mjs +31 -15
- package/utils/interval.js +1 -2
- package/utils/paginator.js +151 -0
- package/utils/paginator.mjs +147 -0
- package/utils/parseTable.js +527 -83
- package/utils/parseTable.mjs +523 -82
- package/utils/rootInstance.js +2 -4
- package/utils/samplesGenerator.js +21 -13
- package/utils/samplesGenerator.mjs +20 -11
- package/utils/staticRegister.js +1 -2
- package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
- package/validators/dateValidator/dateValidator.js +1 -2
- package/validators/numericValidator/numericValidator.js +1 -2
- package/validators/timeValidator/timeValidator.js +1 -2
- package/3rdparty/walkontable/src/selection.js +0 -295
- package/3rdparty/walkontable/src/selection.mjs +0 -290
- package/plugins/contextMenu/predefinedItems.js +0 -76
- package/plugins/contextMenu/predefinedItems.mjs +0 -68
- package/plugins/copyPaste/clipboardData.js +0 -18
- package/plugins/copyPaste/clipboardData.mjs +0 -14
- package/plugins/copyPaste/focusableElement.js +0 -186
- package/plugins/copyPaste/focusableElement.mjs +0 -180
- package/plugins/copyPaste/pasteEvent.js +0 -14
- package/plugins/copyPaste/pasteEvent.mjs +0 -9
- 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
package/core.js
CHANGED
@@ -12,6 +12,7 @@ var _browser = require("./helpers/browser");
|
|
12
12
|
var _editorManager = _interopRequireDefault(require("./editorManager"));
|
13
13
|
var _eventManager = _interopRequireDefault(require("./eventManager"));
|
14
14
|
var _object = require("./helpers/object");
|
15
|
+
var _focusManager = require("./focusManager");
|
15
16
|
var _array = require("./helpers/array");
|
16
17
|
var _parseTable = require("./utils/parseTable");
|
17
18
|
var _registry = require("./plugins/registry");
|
@@ -31,12 +32,22 @@ var _registry5 = require("./i18n/registry");
|
|
31
32
|
var _utils = require("./i18n/utils");
|
32
33
|
var _selection = require("./selection");
|
33
34
|
var _dataMap = require("./dataMap");
|
35
|
+
var _index3 = require("./core/index");
|
34
36
|
var _uniqueMap = require("./utils/dataStructures/uniqueMap");
|
35
37
|
var _shortcuts = require("./shortcuts");
|
38
|
+
var _shortcutContexts = require("./shortcutContexts");
|
36
39
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
37
|
-
const SHORTCUTS_GROUP = 'gridDefault';
|
38
40
|
let activeGuid = null;
|
39
41
|
|
42
|
+
/**
|
43
|
+
* Keeps the collection of the all Handsontable instances created on the same page. The
|
44
|
+
* list is then used to trigger the "afterUnlisten" hook when the "listen()" method was
|
45
|
+
* called on another instance.
|
46
|
+
*
|
47
|
+
* @type {Map<string, Core>}
|
48
|
+
*/
|
49
|
+
const foreignHotInstances = new Map();
|
50
|
+
|
40
51
|
/**
|
41
52
|
* A set of deprecated feature names.
|
42
53
|
*
|
@@ -96,7 +107,8 @@ const deprecationWarns = new Set();
|
|
96
107
|
* @param {boolean} [rootInstanceSymbol=false] Indicates if the instance is root of all later instances created.
|
97
108
|
*/
|
98
109
|
function Core(rootElement, userSettings) {
|
99
|
-
var _userSettings$layoutD
|
110
|
+
var _userSettings$layoutD,
|
111
|
+
_this = this;
|
100
112
|
let rootInstanceSymbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
101
113
|
let preventScrollingToCell = false;
|
102
114
|
let instance = this;
|
@@ -105,6 +117,7 @@ function Core(rootElement, userSettings) {
|
|
105
117
|
let dataSource;
|
106
118
|
let grid;
|
107
119
|
let editorManager;
|
120
|
+
let focusManager;
|
108
121
|
let firstRun = true;
|
109
122
|
if ((0, _rootInstance.hasValidParameter)(rootInstanceSymbol)) {
|
110
123
|
(0, _rootInstance.registerAsRootInstance)(this);
|
@@ -213,6 +226,8 @@ function Core(rootElement, userSettings) {
|
|
213
226
|
}
|
214
227
|
this.guid = `ht_${(0, _string.randomString)()}`; // this is the namespace for global events
|
215
228
|
|
229
|
+
foreignHotInstances.set(this.guid, this);
|
230
|
+
|
216
231
|
/**
|
217
232
|
* Instance of index mapper which is responsible for managing the column indexes.
|
218
233
|
*
|
@@ -261,14 +276,16 @@ function Core(rootElement, userSettings) {
|
|
261
276
|
};
|
262
277
|
|
263
278
|
let selection = new _selection.Selection(tableMeta, {
|
264
|
-
rowIndexMapper:
|
265
|
-
columnIndexMapper:
|
279
|
+
rowIndexMapper: instance.rowIndexMapper,
|
280
|
+
columnIndexMapper: instance.columnIndexMapper,
|
266
281
|
countCols: () => instance.countCols(),
|
267
282
|
countRows: () => instance.countRows(),
|
268
283
|
propToCol: prop => datamap.propToCol(prop),
|
269
284
|
isEditorOpened: () => instance.getActiveEditor() ? instance.getActiveEditor().isOpened() : false,
|
270
|
-
|
271
|
-
|
285
|
+
countRenderableColumns: () => this.view.countRenderableColumns(),
|
286
|
+
countRenderableRows: () => this.view.countRenderableRows(),
|
287
|
+
countRowHeaders: () => this.countRowHeaders(),
|
288
|
+
countColHeaders: () => this.countColHeaders(),
|
272
289
|
getShortcutManager: () => instance.getShortcutManager(),
|
273
290
|
createCellCoords: (row, column) => instance._createCellCoords(row, column),
|
274
291
|
createCellRange: (highlight, from, to) => instance._createCellRange(highlight, from, to),
|
@@ -287,21 +304,6 @@ function Core(rootElement, userSettings) {
|
|
287
304
|
};
|
288
305
|
this.columnIndexMapper.addLocalHook('cacheUpdated', onIndexMapperCacheUpdate);
|
289
306
|
this.rowIndexMapper.addLocalHook('cacheUpdated', onIndexMapperCacheUpdate);
|
290
|
-
this.selection.addLocalHook('beforeSetRangeStart', cellCoords => {
|
291
|
-
this.runHooks('beforeSetRangeStart', cellCoords);
|
292
|
-
});
|
293
|
-
this.selection.addLocalHook('beforeSetRangeStartOnly', cellCoords => {
|
294
|
-
this.runHooks('beforeSetRangeStartOnly', cellCoords);
|
295
|
-
});
|
296
|
-
this.selection.addLocalHook('beforeSetRangeEnd', cellCoords => {
|
297
|
-
this.runHooks('beforeSetRangeEnd', cellCoords);
|
298
|
-
if (cellCoords.row < 0) {
|
299
|
-
cellCoords.row = this.view._wt.wtTable.getFirstVisibleRow();
|
300
|
-
}
|
301
|
-
if (cellCoords.col < 0) {
|
302
|
-
cellCoords.col = this.view._wt.wtTable.getFirstVisibleColumn();
|
303
|
-
}
|
304
|
-
});
|
305
307
|
this.selection.addLocalHook('afterSetRangeEnd', cellCoords => {
|
306
308
|
const preventScrolling = (0, _object.createObjectPropListener)(false);
|
307
309
|
const selectionRange = this.selection.getSelectedRange();
|
@@ -313,8 +315,6 @@ function Core(rootElement, userSettings) {
|
|
313
315
|
this.runHooks('afterSelection', from.row, from.col, to.row, to.col, preventScrolling, selectionLayerLevel);
|
314
316
|
this.runHooks('afterSelectionByProp', from.row, instance.colToProp(from.col), to.row, instance.colToProp(to.col), preventScrolling, selectionLayerLevel); // eslint-disable-line max-len
|
315
317
|
|
316
|
-
const isSelectedByAnyHeader = this.selection.isSelectedByAnyHeader();
|
317
|
-
const currentSelectedRange = this.selection.selectedRange.current();
|
318
318
|
let scrollToCell = true;
|
319
319
|
if (preventScrollingToCell) {
|
320
320
|
scrollToCell = false;
|
@@ -322,19 +322,42 @@ function Core(rootElement, userSettings) {
|
|
322
322
|
if (preventScrolling.isTouched()) {
|
323
323
|
scrollToCell = !preventScrolling.value;
|
324
324
|
}
|
325
|
+
const currentSelectedRange = this.selection.selectedRange.current();
|
326
|
+
const isSelectedByAnyHeader = this.selection.isSelectedByAnyHeader();
|
325
327
|
const isSelectedByRowHeader = this.selection.isSelectedByRowHeader();
|
326
328
|
const isSelectedByColumnHeader = this.selection.isSelectedByColumnHeader();
|
327
329
|
if (scrollToCell !== false) {
|
328
330
|
if (!isSelectedByAnyHeader) {
|
329
331
|
if (currentSelectedRange && !this.selection.isMultiple()) {
|
330
|
-
|
332
|
+
const {
|
333
|
+
row,
|
334
|
+
col
|
335
|
+
} = currentSelectedRange.from;
|
336
|
+
if (row < 0 && col >= 0) {
|
337
|
+
this.scrollViewportTo({
|
338
|
+
col
|
339
|
+
});
|
340
|
+
} else if (col < 0 && row >= 0) {
|
341
|
+
this.scrollViewportTo({
|
342
|
+
row
|
343
|
+
});
|
344
|
+
} else {
|
345
|
+
this.scrollViewportTo({
|
346
|
+
row,
|
347
|
+
col
|
348
|
+
});
|
349
|
+
}
|
331
350
|
} else {
|
332
|
-
this.
|
351
|
+
this.scrollViewportTo(cellCoords.toObject());
|
333
352
|
}
|
334
353
|
} else if (isSelectedByRowHeader) {
|
335
|
-
this.
|
354
|
+
this.scrollViewportTo({
|
355
|
+
row: cellCoords.row
|
356
|
+
});
|
336
357
|
} else if (isSelectedByColumnHeader) {
|
337
|
-
this.
|
358
|
+
this.scrollViewportTo({
|
359
|
+
col: cellCoords.col
|
360
|
+
});
|
338
361
|
}
|
339
362
|
}
|
340
363
|
|
@@ -369,30 +392,78 @@ function Core(rootElement, userSettings) {
|
|
369
392
|
isMultiple.value = changedIsMultiple;
|
370
393
|
}
|
371
394
|
});
|
372
|
-
this.selection.addLocalHook('beforeModifyTransformStart', cellCoordsDelta => {
|
373
|
-
this.runHooks('modifyTransformStart', cellCoordsDelta);
|
374
|
-
});
|
375
|
-
this.selection.addLocalHook('afterModifyTransformStart', (coords, rowTransformDir, colTransformDir) => {
|
376
|
-
this.runHooks('afterModifyTransformStart', coords, rowTransformDir, colTransformDir);
|
377
|
-
});
|
378
|
-
this.selection.addLocalHook('beforeModifyTransformEnd', cellCoordsDelta => {
|
379
|
-
this.runHooks('modifyTransformEnd', cellCoordsDelta);
|
380
|
-
});
|
381
|
-
this.selection.addLocalHook('afterModifyTransformEnd', (coords, rowTransformDir, colTransformDir) => {
|
382
|
-
this.runHooks('afterModifyTransformEnd', coords, rowTransformDir, colTransformDir);
|
383
|
-
});
|
384
395
|
this.selection.addLocalHook('afterDeselect', () => {
|
385
396
|
editorManager.destroyEditor();
|
386
397
|
this._refreshBorders();
|
387
398
|
(0, _element.removeClass)(this.rootElement, ['ht__selection--rows', 'ht__selection--columns']);
|
388
399
|
this.runHooks('afterDeselect');
|
389
400
|
});
|
390
|
-
this.selection.addLocalHook('
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
})
|
401
|
+
this.selection.addLocalHook('beforeHighlightSet', () => this.runHooks('beforeSelectionHighlightSet')).addLocalHook('beforeSetRangeStart', function () {
|
402
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
403
|
+
args[_key] = arguments[_key];
|
404
|
+
}
|
405
|
+
return _this.runHooks('beforeSetRangeStart', ...args);
|
406
|
+
}).addLocalHook('beforeSetRangeStartOnly', function () {
|
407
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
408
|
+
args[_key2] = arguments[_key2];
|
409
|
+
}
|
410
|
+
return _this.runHooks('beforeSetRangeStartOnly', ...args);
|
411
|
+
}).addLocalHook('beforeSetRangeEnd', function () {
|
412
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
413
|
+
args[_key3] = arguments[_key3];
|
414
|
+
}
|
415
|
+
return _this.runHooks('beforeSetRangeEnd', ...args);
|
416
|
+
}).addLocalHook('beforeSelectColumns', function () {
|
417
|
+
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
|
418
|
+
args[_key4] = arguments[_key4];
|
419
|
+
}
|
420
|
+
return _this.runHooks('beforeSelectColumns', ...args);
|
421
|
+
}).addLocalHook('afterSelectColumns', function () {
|
422
|
+
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
|
423
|
+
args[_key5] = arguments[_key5];
|
424
|
+
}
|
425
|
+
return _this.runHooks('afterSelectColumns', ...args);
|
426
|
+
}).addLocalHook('beforeSelectRows', function () {
|
427
|
+
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
|
428
|
+
args[_key6] = arguments[_key6];
|
429
|
+
}
|
430
|
+
return _this.runHooks('beforeSelectRows', ...args);
|
431
|
+
}).addLocalHook('afterSelectRows', function () {
|
432
|
+
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
|
433
|
+
args[_key7] = arguments[_key7];
|
434
|
+
}
|
435
|
+
return _this.runHooks('afterSelectRows', ...args);
|
436
|
+
}).addLocalHook('beforeModifyTransformStart', function () {
|
437
|
+
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
|
438
|
+
args[_key8] = arguments[_key8];
|
439
|
+
}
|
440
|
+
return _this.runHooks('modifyTransformStart', ...args);
|
441
|
+
}).addLocalHook('afterModifyTransformStart', function () {
|
442
|
+
for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
|
443
|
+
args[_key9] = arguments[_key9];
|
444
|
+
}
|
445
|
+
return _this.runHooks('afterModifyTransformStart', ...args);
|
446
|
+
}).addLocalHook('beforeModifyTransformEnd', function () {
|
447
|
+
for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
|
448
|
+
args[_key10] = arguments[_key10];
|
449
|
+
}
|
450
|
+
return _this.runHooks('modifyTransformEnd', ...args);
|
451
|
+
}).addLocalHook('afterModifyTransformEnd', function () {
|
452
|
+
for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
|
453
|
+
args[_key11] = arguments[_key11];
|
454
|
+
}
|
455
|
+
return _this.runHooks('afterModifyTransformEnd', ...args);
|
456
|
+
}).addLocalHook('beforeRowWrap', function () {
|
457
|
+
for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
|
458
|
+
args[_key12] = arguments[_key12];
|
459
|
+
}
|
460
|
+
return _this.runHooks('beforeRowWrap', ...args);
|
461
|
+
}).addLocalHook('beforeColumnWrap', function () {
|
462
|
+
for (var _len13 = arguments.length, args = new Array(_len13), _key13 = 0; _key13 < _len13; _key13++) {
|
463
|
+
args[_key13] = arguments[_key13];
|
464
|
+
}
|
465
|
+
return _this.runHooks('beforeColumnWrap', ...args);
|
466
|
+
}).addLocalHook('insertRowRequire', totalRows => this.alter('insert_row_above', totalRows, 1, 'auto')).addLocalHook('insertColRequire', totalCols => this.alter('insert_col_start', totalCols, 1, 'auto'));
|
396
467
|
grid = {
|
397
468
|
/**
|
398
469
|
* Inserts or removes rows and columns.
|
@@ -474,7 +545,9 @@ function Core(rootElement, userSettings) {
|
|
474
545
|
const currentFromRow = currentFromRange === null || currentFromRange === void 0 ? void 0 : currentFromRange.row;
|
475
546
|
const startVisualRowIndex = instance.toVisualRow(startRowPhysicalIndex);
|
476
547
|
if (selection.isSelectedByCorner()) {
|
477
|
-
|
548
|
+
selection.selectAll(true, true, {
|
549
|
+
disableHeadersHighlight: true
|
550
|
+
});
|
478
551
|
} else if ((0, _mixed.isDefined)(currentFromRow) && currentFromRow >= startVisualRowIndex) {
|
479
552
|
// Moving the selection (if it exists) downward – it should be applied to the "old" row.
|
480
553
|
// TODO: The logic here should be handled by selection module.
|
@@ -528,7 +601,9 @@ function Core(rootElement, userSettings) {
|
|
528
601
|
const currentFromColumn = currentFromRange === null || currentFromRange === void 0 ? void 0 : currentFromRange.col;
|
529
602
|
const startVisualColumnIndex = instance.toVisualColumn(startColumnPhysicalIndex);
|
530
603
|
if (selection.isSelectedByCorner()) {
|
531
|
-
|
604
|
+
selection.selectAll(true, true, {
|
605
|
+
disableHeadersHighlight: true
|
606
|
+
});
|
532
607
|
} else if ((0, _mixed.isDefined)(currentFromColumn) && currentFromColumn >= startVisualColumnIndex) {
|
533
608
|
// Moving the selection (if it exists) rightward – it should be applied to the "old" column.
|
534
609
|
// TODO: The logic here should be handled by selection module.
|
@@ -1018,6 +1093,10 @@ function Core(rootElement, userSettings) {
|
|
1018
1093
|
this.updateSettings(tableMeta, true);
|
1019
1094
|
this.view = new _tableView.default(this);
|
1020
1095
|
editorManager = _editorManager.default.getInstance(instance, tableMeta, selection);
|
1096
|
+
focusManager = new _focusManager.FocusManager(instance);
|
1097
|
+
if ((0, _rootInstance.isRootInstance)(this)) {
|
1098
|
+
(0, _index3.installFocusCatcher)(instance);
|
1099
|
+
}
|
1021
1100
|
instance.runHooks('init');
|
1022
1101
|
this.forceFullRender = true; // used when data was changed
|
1023
1102
|
this.view.render();
|
@@ -1431,6 +1510,11 @@ function Core(rootElement, userSettings) {
|
|
1431
1510
|
*/
|
1432
1511
|
this.listen = function () {
|
1433
1512
|
if (instance && !instance.isListening()) {
|
1513
|
+
foreignHotInstances.forEach(foreignHot => {
|
1514
|
+
if (instance !== foreignHot) {
|
1515
|
+
foreignHot.unlisten();
|
1516
|
+
}
|
1517
|
+
});
|
1434
1518
|
activeGuid = instance.guid;
|
1435
1519
|
instance.runHooks('afterListen');
|
1436
1520
|
}
|
@@ -1515,8 +1599,8 @@ function Core(rootElement, userSettings) {
|
|
1515
1599
|
* @returns {Array} Returns removed portion of columns.
|
1516
1600
|
*/
|
1517
1601
|
this.spliceCol = function (column, index, amount) {
|
1518
|
-
for (var
|
1519
|
-
elements[
|
1602
|
+
for (var _len14 = arguments.length, elements = new Array(_len14 > 3 ? _len14 - 3 : 0), _key14 = 3; _key14 < _len14; _key14++) {
|
1603
|
+
elements[_key14 - 3] = arguments[_key14];
|
1520
1604
|
}
|
1521
1605
|
return datamap.spliceCol(column, index, amount, ...elements);
|
1522
1606
|
};
|
@@ -1533,8 +1617,8 @@ function Core(rootElement, userSettings) {
|
|
1533
1617
|
* @returns {Array} Returns removed portion of rows.
|
1534
1618
|
*/
|
1535
1619
|
this.spliceRow = function (row, index, amount) {
|
1536
|
-
for (var
|
1537
|
-
elements[
|
1620
|
+
for (var _len15 = arguments.length, elements = new Array(_len15 > 3 ? _len15 - 3 : 0), _key15 = 3; _key15 < _len15; _key15++) {
|
1621
|
+
elements[_key15 - 3] = arguments[_key15];
|
1538
1622
|
}
|
1539
1623
|
return datamap.spliceRow(row, index, amount, ...elements);
|
1540
1624
|
};
|
@@ -1631,6 +1715,9 @@ function Core(rootElement, userSettings) {
|
|
1631
1715
|
}
|
1632
1716
|
const changes = [];
|
1633
1717
|
(0, _array.arrayEach)(selection.getSelectedRange(), cellRange => {
|
1718
|
+
if (cellRange.isSingleHeader()) {
|
1719
|
+
return;
|
1720
|
+
}
|
1634
1721
|
const topStart = cellRange.getTopStartCorner();
|
1635
1722
|
const bottomEnd = cellRange.getBottomEndCorner();
|
1636
1723
|
(0, _number.rangeEach)(topStart.row, bottomEnd.row, row => {
|
@@ -2928,8 +3015,8 @@ function Core(rootElement, userSettings) {
|
|
2928
3015
|
*/
|
2929
3016
|
this.spliceCellsMeta = function (visualIndex) {
|
2930
3017
|
let deleteAmount = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
2931
|
-
for (var
|
2932
|
-
cellMetaRows[
|
3018
|
+
for (var _len16 = arguments.length, cellMetaRows = new Array(_len16 > 2 ? _len16 - 2 : 0), _key16 = 2; _key16 < _len16; _key16++) {
|
3019
|
+
cellMetaRows[_key16 - 2] = arguments[_key16];
|
2933
3020
|
}
|
2934
3021
|
if (cellMetaRows.length > 0 && !Array.isArray(cellMetaRows[0])) {
|
2935
3022
|
throw new Error('The 3rd argument (cellMetaRows) has to be passed as an array of cell meta objects array.');
|
@@ -3620,6 +3707,30 @@ function Core(rootElement, userSettings) {
|
|
3620
3707
|
return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleColumnsCount() : -1;
|
3621
3708
|
};
|
3622
3709
|
|
3710
|
+
/**
|
3711
|
+
* Returns the number of rendered row headers.
|
3712
|
+
*
|
3713
|
+
* @since 14.0.0
|
3714
|
+
* @memberof Core#
|
3715
|
+
* @function countRowHeaders
|
3716
|
+
* @returns {number} Number of row headers.
|
3717
|
+
*/
|
3718
|
+
this.countRowHeaders = function () {
|
3719
|
+
return this.view.getRowHeadersCount();
|
3720
|
+
};
|
3721
|
+
|
3722
|
+
/**
|
3723
|
+
* Returns the number of rendered column headers.
|
3724
|
+
*
|
3725
|
+
* @since 14.0.0
|
3726
|
+
* @memberof Core#
|
3727
|
+
* @function countColHeaders
|
3728
|
+
* @returns {number} Number of column headers.
|
3729
|
+
*/
|
3730
|
+
this.countColHeaders = function () {
|
3731
|
+
return this.view.getColumnHeadersCount();
|
3732
|
+
};
|
3733
|
+
|
3623
3734
|
/**
|
3624
3735
|
* Returns the number of empty rows. If the optional ending parameter is `true`, returns the
|
3625
3736
|
* number of empty rows at the bottom of the table.
|
@@ -3824,6 +3935,10 @@ function Core(rootElement, userSettings) {
|
|
3824
3935
|
* hot.selectColumns('id');
|
3825
3936
|
* // Select range of columns using visual indexes.
|
3826
3937
|
* hot.selectColumns(1, 4);
|
3938
|
+
* // Select range of columns using visual indexes and mark the first header as highlighted.
|
3939
|
+
* hot.selectColumns(1, 2, -1);
|
3940
|
+
* // Select range of columns using visual indexes and mark the second cell as highlighted.
|
3941
|
+
* hot.selectColumns(2, 1, 1);
|
3827
3942
|
* // Select range of columns using column properties.
|
3828
3943
|
* hot.selectColumns('id', 'last_name');
|
3829
3944
|
* ```
|
@@ -3834,11 +3949,15 @@ function Core(rootElement, userSettings) {
|
|
3834
3949
|
* @param {number} startColumn The visual column index from which the selection starts.
|
3835
3950
|
* @param {number} [endColumn=startColumn] The visual column index to which the selection finishes. If `endColumn`
|
3836
3951
|
* is not defined the column defined by `startColumn` will be selected.
|
3952
|
+
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
|
3953
|
+
* The value can take visual row index from -N to N, where negative values
|
3954
|
+
* point to the headers and positive values point to the cell range.
|
3837
3955
|
* @returns {boolean} `true` if selection was successful, `false` otherwise.
|
3838
3956
|
*/
|
3839
3957
|
this.selectColumns = function (startColumn) {
|
3840
3958
|
let endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;
|
3841
|
-
|
3959
|
+
let focusPosition = arguments.length > 2 ? arguments[2] : undefined;
|
3960
|
+
return selection.selectColumns(startColumn, endColumn, focusPosition);
|
3842
3961
|
};
|
3843
3962
|
|
3844
3963
|
/**
|
@@ -3848,8 +3967,12 @@ function Core(rootElement, userSettings) {
|
|
3848
3967
|
* ```js
|
3849
3968
|
* // Select row using visual index.
|
3850
3969
|
* hot.selectRows(1);
|
3851
|
-
* //
|
3970
|
+
* // select a range of rows, using visual indexes.
|
3852
3971
|
* hot.selectRows(1, 4);
|
3972
|
+
* // select a range of rows, using visual indexes, and mark the header as highlighted.
|
3973
|
+
* hot.selectRows(1, 2, -1);
|
3974
|
+
* // Select range of rows using visual indexes and mark the second cell as highlighted.
|
3975
|
+
* hot.selectRows(2, 1, 1);
|
3853
3976
|
* ```
|
3854
3977
|
*
|
3855
3978
|
* @memberof Core#
|
@@ -3858,11 +3981,15 @@ function Core(rootElement, userSettings) {
|
|
3858
3981
|
* @param {number} startRow The visual row index from which the selection starts.
|
3859
3982
|
* @param {number} [endRow=startRow] The visual row index to which the selection finishes. If `endRow`
|
3860
3983
|
* is not defined the row defined by `startRow` will be selected.
|
3984
|
+
* @param {number} [focusPosition=0] The argument allows changing the cell/header focus position.
|
3985
|
+
* The value can take visual column index from -N to N, where negative values
|
3986
|
+
* point to the headers and positive values point to the cell range.
|
3861
3987
|
* @returns {boolean} `true` if selection was successful, `false` otherwise.
|
3862
3988
|
*/
|
3863
3989
|
this.selectRows = function (startRow) {
|
3864
3990
|
let endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;
|
3865
|
-
|
3991
|
+
let focusPosition = arguments.length > 2 ? arguments[2] : undefined;
|
3992
|
+
return selection.selectRows(startRow, endRow, focusPosition);
|
3866
3993
|
};
|
3867
3994
|
|
3868
3995
|
/**
|
@@ -3881,9 +4008,16 @@ function Core(rootElement, userSettings) {
|
|
3881
4008
|
* The previous selection is overwritten.
|
3882
4009
|
*
|
3883
4010
|
* ```js
|
3884
|
-
* // select all cells in the table, including all headers
|
4011
|
+
* // select all cells in the table, including all headers and the corner cell
|
3885
4012
|
* hot.selectAll();
|
3886
4013
|
*
|
4014
|
+
* // select all cells in the table, including row headers but excluding the corner cell
|
4015
|
+
* hot.selectAll(true, false);
|
4016
|
+
*
|
4017
|
+
* // select all cells in the table, including all headers and the corner cell, but move the focus
|
4018
|
+
* // highlight to position -2, -1
|
4019
|
+
* hot.selectAll(-2, -1);
|
4020
|
+
*
|
3887
4021
|
* // select all cells in the table, without headers
|
3888
4022
|
* hot.selectAll(false);
|
3889
4023
|
* ```
|
@@ -3891,15 +4025,25 @@ function Core(rootElement, userSettings) {
|
|
3891
4025
|
* @since 0.38.2
|
3892
4026
|
* @memberof Core#
|
3893
4027
|
* @function selectAll
|
3894
|
-
* @param {boolean} [
|
3895
|
-
* `false
|
4028
|
+
* @param {boolean} [includeRowHeaders=false] `true` If the selection should include the row headers,
|
4029
|
+
* `false` otherwise.
|
4030
|
+
* @param {boolean} [includeColumnHeaders=false] `true` If the selection should include the column
|
4031
|
+
* headers, `false` otherwise.
|
4032
|
+
*
|
4033
|
+
* @param {object} [options] Additional object with options.
|
4034
|
+
* @param {{row: number, col: number} | boolean} [options.focusPosition] The argument allows changing the cell/header
|
4035
|
+
* focus position. The value takes an object with a `row` and `col` properties from -N to N, where
|
4036
|
+
* negative values point to the headers and positive values point to the cell range. If `false`, the focus
|
4037
|
+
* position won't be changed.
|
4038
|
+
* @param {boolean} [options.disableHeadersHighlight] If `true`, disables highlighting the headers even when
|
4039
|
+
* the logical coordinates points on them.
|
3896
4040
|
*/
|
3897
4041
|
this.selectAll = function () {
|
3898
|
-
let
|
3899
|
-
|
3900
|
-
|
4042
|
+
let includeRowHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
4043
|
+
let includeColumnHeaders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : includeRowHeaders;
|
4044
|
+
let options = arguments.length > 2 ? arguments[2] : undefined;
|
3901
4045
|
preventScrollingToCell = true;
|
3902
|
-
selection.selectAll(includeRowHeaders, includeColumnHeaders);
|
4046
|
+
selection.selectAll(includeRowHeaders, includeColumnHeaders, options);
|
3903
4047
|
preventScrollingToCell = false;
|
3904
4048
|
};
|
3905
4049
|
const getIndexToScroll = (indexMapper, visualIndex) => {
|
@@ -3908,55 +4052,117 @@ function Core(rootElement, userSettings) {
|
|
3908
4052
|
};
|
3909
4053
|
|
3910
4054
|
/**
|
3911
|
-
* Scroll viewport to coordinates specified by the `row` and `
|
4055
|
+
* Scroll viewport to coordinates specified by the `row` and/or `col` object properties.
|
4056
|
+
*
|
4057
|
+
* ```js
|
4058
|
+
* // scroll the viewport to the visual row index (leave the horizontal scroll untouched)
|
4059
|
+
* hot.scrollViewportTo({ row: 50 });
|
4060
|
+
*
|
4061
|
+
* // scroll the viewport to the passed coordinates so that the cell at 50, 50 will be snapped to
|
4062
|
+
* // the bottom-end table's edge.
|
4063
|
+
* hot.scrollViewportTo({
|
4064
|
+
* row: 50,
|
4065
|
+
* col: 50,
|
4066
|
+
* verticalSnap: 'bottom',
|
4067
|
+
* horizontalSnap: 'end',
|
4068
|
+
* });
|
4069
|
+
* ```
|
3912
4070
|
*
|
3913
4071
|
* @memberof Core#
|
3914
4072
|
* @function scrollViewportTo
|
3915
|
-
* @param {
|
3916
|
-
*
|
3917
|
-
* @param {number} [
|
3918
|
-
*
|
3919
|
-
*
|
3920
|
-
*
|
3921
|
-
*
|
3922
|
-
*
|
3923
|
-
*
|
4073
|
+
* @param {object} options A dictionary containing the following parameters:
|
4074
|
+
* @param {number} [options.row] Specifies the number of visual rows along the Y axis to scroll the viewport.
|
4075
|
+
* @param {number} [options.col] Specifies the number of visual columns along the X axis to scroll the viewport.
|
4076
|
+
* @param {'top' | 'bottom'} [options.verticalSnap] Determines to which edge of the table the viewport will be scrolled based on the passed coordinates.
|
4077
|
+
* This option is a string which must take one of the following values:
|
4078
|
+
* - `top`: The viewport will be scrolled to a row in such a way that it will be positioned on the top of the viewport;
|
4079
|
+
* - `bottom`: The viewport will be scrolled to a row in such a way that it will be positioned on the bottom of the viewport;
|
4080
|
+
* - If the property is not defined the vertical auto-snapping is enabled. Depending on where the viewport is scrolled from, a row will
|
4081
|
+
* be positioned at the top or bottom of the viewport.
|
4082
|
+
* @param {'start' | 'end'} [options.horizontalSnap] Determines to which edge of the table the viewport will be scrolled based on the passed coordinates.
|
4083
|
+
* This option is a string which must take one of the following values:
|
4084
|
+
* - `start`: The viewport will be scrolled to a column in such a way that it will be positioned on the start (left edge or right, if the layout direction is set to `rtl`) of the viewport;
|
4085
|
+
* - `end`: The viewport will be scrolled to a column in such a way that it will be positioned on the end (right edge or left, if the layout direction is set to `rtl`) of the viewport;
|
4086
|
+
* - If the property is not defined the horizontal auto-snapping is enabled. Depending on where the viewport is scrolled from, a column will
|
4087
|
+
* be positioned at the start or end of the viewport.
|
4088
|
+
* @param {boolean} [options.considerHiddenIndexes=true] If `true`, we handle visual indexes, otherwise we handle only indexes which
|
3924
4089
|
* may be rendered when they are in the viewport (we don't consider hidden indexes as they aren't rendered).
|
3925
|
-
* @returns {boolean} `true` if
|
3926
|
-
*/
|
3927
|
-
this.scrollViewportTo = function (
|
3928
|
-
let
|
3929
|
-
|
3930
|
-
|
3931
|
-
|
3932
|
-
|
4090
|
+
* @returns {boolean} `true` if viewport was scrolled, `false` otherwise.
|
4091
|
+
*/
|
4092
|
+
this.scrollViewportTo = function () {
|
4093
|
+
let {
|
4094
|
+
row,
|
4095
|
+
col,
|
4096
|
+
verticalSnap,
|
4097
|
+
horizontalSnap,
|
4098
|
+
considerHiddenIndexes
|
4099
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
4100
|
+
let snapToTop;
|
4101
|
+
let snapToBottom;
|
4102
|
+
let snapToInlineStart;
|
4103
|
+
let snapToInlineEnd;
|
4104
|
+
if (verticalSnap !== undefined) {
|
4105
|
+
snapToTop = verticalSnap === 'top';
|
4106
|
+
snapToBottom = !snapToTop;
|
4107
|
+
}
|
4108
|
+
if (horizontalSnap !== undefined) {
|
4109
|
+
snapToInlineStart = horizontalSnap === 'start';
|
4110
|
+
snapToInlineEnd = !snapToInlineStart;
|
4111
|
+
}
|
3933
4112
|
let renderableRow = row;
|
3934
|
-
let renderableColumn =
|
3935
|
-
if (considerHiddenIndexes) {
|
3936
|
-
const
|
3937
|
-
const
|
3938
|
-
const visualRowToScroll =
|
3939
|
-
const visualColumnToScroll =
|
4113
|
+
let renderableColumn = col;
|
4114
|
+
if (considerHiddenIndexes === undefined || considerHiddenIndexes) {
|
4115
|
+
const isValidRowGrid = Number.isInteger(row) && row >= 0;
|
4116
|
+
const isValidColumnGrid = Number.isInteger(col) && col >= 0;
|
4117
|
+
const visualRowToScroll = isValidRowGrid ? getIndexToScroll(this.rowIndexMapper, row) : undefined;
|
4118
|
+
const visualColumnToScroll = isValidColumnGrid ? getIndexToScroll(this.columnIndexMapper, col) : undefined;
|
3940
4119
|
if (visualRowToScroll === null || visualColumnToScroll === null) {
|
3941
4120
|
return false;
|
3942
4121
|
}
|
3943
|
-
renderableRow =
|
3944
|
-
renderableColumn =
|
4122
|
+
renderableRow = isValidRowGrid ? instance.rowIndexMapper.getRenderableFromVisualIndex(visualRowToScroll) : row;
|
4123
|
+
renderableColumn = isValidColumnGrid ? instance.columnIndexMapper.getRenderableFromVisualIndex(visualColumnToScroll) : col;
|
3945
4124
|
}
|
3946
4125
|
const isRowInteger = Number.isInteger(renderableRow);
|
3947
4126
|
const isColumnInteger = Number.isInteger(renderableColumn);
|
3948
|
-
if (isRowInteger && isColumnInteger) {
|
3949
|
-
return instance.view.scrollViewport(instance._createCellCoords(renderableRow, renderableColumn), snapToTop,
|
4127
|
+
if (isRowInteger && renderableRow >= 0 && isColumnInteger && renderableColumn >= 0) {
|
4128
|
+
return instance.view.scrollViewport(instance._createCellCoords(renderableRow, renderableColumn), snapToTop, snapToInlineEnd, snapToBottom, snapToInlineStart);
|
3950
4129
|
}
|
3951
|
-
if (isRowInteger && isColumnInteger
|
4130
|
+
if (isRowInteger && renderableRow >= 0 && (isColumnInteger && renderableColumn < 0 || !isColumnInteger)) {
|
3952
4131
|
return instance.view.scrollViewportVertically(renderableRow, snapToTop, snapToBottom);
|
3953
4132
|
}
|
3954
|
-
if (isColumnInteger && isRowInteger
|
3955
|
-
return instance.view.scrollViewportHorizontally(renderableColumn,
|
4133
|
+
if (isColumnInteger && renderableColumn >= 0 && (isRowInteger && renderableRow < 0 || !isRowInteger)) {
|
4134
|
+
return instance.view.scrollViewportHorizontally(renderableColumn, snapToInlineEnd, snapToInlineStart);
|
3956
4135
|
}
|
3957
4136
|
return false;
|
3958
4137
|
};
|
3959
4138
|
|
4139
|
+
/**
|
4140
|
+
* Scrolls the viewport to coordinates specified by the currently focused cell.
|
4141
|
+
*
|
4142
|
+
* @since 14.0.0
|
4143
|
+
* @memberof Core#
|
4144
|
+
* @fires Hooks#afterScroll
|
4145
|
+
* @function scrollToFocusedCell
|
4146
|
+
* @param {Function} callback The callback function to call after the viewport is scrolled.
|
4147
|
+
*/
|
4148
|
+
this.scrollToFocusedCell = function () {
|
4149
|
+
let callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : () => {};
|
4150
|
+
if (!this.selection.isSelected()) {
|
4151
|
+
return;
|
4152
|
+
}
|
4153
|
+
this.addHookOnce('afterScroll', callback);
|
4154
|
+
const {
|
4155
|
+
highlight
|
4156
|
+
} = this.getSelectedRangeLast();
|
4157
|
+
const isScrolled = this.scrollViewportTo(highlight.toObject());
|
4158
|
+
if (isScrolled) {
|
4159
|
+
this.view.render();
|
4160
|
+
} else {
|
4161
|
+
this.removeHook('afterScroll', callback);
|
4162
|
+
this._registerImmediate(() => callback());
|
4163
|
+
}
|
4164
|
+
};
|
4165
|
+
|
3960
4166
|
/**
|
3961
4167
|
* Removes the table from the DOM and destroys the instance of the Handsontable.
|
3962
4168
|
*
|
@@ -3977,6 +4183,7 @@ function Core(rootElement, userSettings) {
|
|
3977
4183
|
dataSource = null;
|
3978
4184
|
this.getShortcutManager().destroy();
|
3979
4185
|
metaManager.clearCache();
|
4186
|
+
foreignHotInstances.delete(this.guid);
|
3980
4187
|
if ((0, _rootInstance.isRootInstance)(instance)) {
|
3981
4188
|
const licenseInfo = this.rootDocument.querySelector('.hot-display-license-info');
|
3982
4189
|
if (licenseInfo) {
|
@@ -4201,7 +4408,7 @@ function Core(rootElement, userSettings) {
|
|
4201
4408
|
* @function getTranslatedPhrase
|
4202
4409
|
* @since 0.35.0
|
4203
4410
|
* @param {string} dictionaryKey Constant which is dictionary key.
|
4204
|
-
* @param {*} extraArguments Arguments which will be handled by formatters.
|
4411
|
+
* @param {*} [extraArguments] Arguments which will be handled by formatters.
|
4205
4412
|
* @returns {string}
|
4206
4413
|
*/
|
4207
4414
|
this.getTranslatedPhrase = function (dictionaryKey, extraArguments) {
|
@@ -4300,6 +4507,16 @@ function Core(rootElement, userSettings) {
|
|
4300
4507
|
}
|
4301
4508
|
};
|
4302
4509
|
|
4510
|
+
/**
|
4511
|
+
* Gets the instance of the EditorManager.
|
4512
|
+
*
|
4513
|
+
* @private
|
4514
|
+
* @returns {EditorManager}
|
4515
|
+
*/
|
4516
|
+
this._getEditorManager = function () {
|
4517
|
+
return editorManager;
|
4518
|
+
};
|
4519
|
+
|
4303
4520
|
/**
|
4304
4521
|
* Check if currently it is RTL direction.
|
4305
4522
|
*
|
@@ -4336,10 +4553,8 @@ function Core(rootElement, userSettings) {
|
|
4336
4553
|
return instance.isLtr() ? 1 : -1;
|
4337
4554
|
};
|
4338
4555
|
const shortcutManager = (0, _shortcuts.createShortcutManager)({
|
4339
|
-
handleEvent(
|
4340
|
-
|
4341
|
-
const isKeyboardEventWithKey = (event === null || event === void 0 ? void 0 : event.key) !== void 0;
|
4342
|
-
return isListening && isKeyboardEventWithKey;
|
4556
|
+
handleEvent() {
|
4557
|
+
return instance.isListening();
|
4343
4558
|
},
|
4344
4559
|
beforeKeyDown: event => {
|
4345
4560
|
return this.runHooks('beforeKeyDown', event);
|
@@ -4372,270 +4587,23 @@ function Core(rootElement, userSettings) {
|
|
4372
4587
|
this.getShortcutManager = function () {
|
4373
4588
|
return shortcutManager;
|
4374
4589
|
};
|
4375
|
-
|
4376
|
-
|
4377
|
-
|
4378
|
-
|
4379
|
-
|
4380
|
-
|
4590
|
+
|
4591
|
+
/**
|
4592
|
+
* Return the Focus Manager responsible for managing the browser's focus in the table.
|
4593
|
+
*
|
4594
|
+
* @memberof Core#
|
4595
|
+
* @since 14.0.0
|
4596
|
+
* @function getFocusManager
|
4597
|
+
* @returns {FocusManager}
|
4598
|
+
*/
|
4599
|
+
this.getFocusManager = function () {
|
4600
|
+
return focusManager;
|
4381
4601
|
};
|
4382
|
-
shortcutManager.setActiveContextName('grid');
|
4383
|
-
gridContext.addShortcuts([{
|
4384
|
-
keys: [['Control/Meta', 'A']],
|
4385
|
-
callback: () => {
|
4386
|
-
instance.selectAll();
|
4387
|
-
}
|
4388
|
-
}, {
|
4389
|
-
keys: [['Control/Meta', 'Enter']],
|
4390
|
-
callback: () => {
|
4391
|
-
const selectedRange = instance.getSelectedRange();
|
4392
|
-
const {
|
4393
|
-
row: highlightRow,
|
4394
|
-
col: highlightColumn
|
4395
|
-
} = selectedRange[selectedRange.length - 1].highlight;
|
4396
|
-
const valueToPopulate = instance.getDataAtCell(highlightRow, highlightColumn);
|
4397
|
-
const cellValues = new Map();
|
4398
|
-
for (let i = 0; i < selectedRange.length; i++) {
|
4399
|
-
selectedRange[i].forAll((row, column) => {
|
4400
|
-
if (row >= 0 && column >= 0 && (row !== highlightRow || column !== highlightColumn)) {
|
4401
|
-
const {
|
4402
|
-
readOnly
|
4403
|
-
} = instance.getCellMeta(row, column);
|
4404
|
-
if (!readOnly) {
|
4405
|
-
cellValues.set(`${row}x${column}`, [row, column, valueToPopulate]);
|
4406
|
-
}
|
4407
|
-
}
|
4408
|
-
});
|
4409
|
-
}
|
4410
|
-
instance.setDataAtCell(Array.from(cellValues.values()));
|
4411
|
-
},
|
4412
|
-
runOnlyIf: () => instance.getSelectedRangeLast().getCellsCount() > 1
|
4413
|
-
}, {
|
4414
|
-
keys: [['ArrowUp']],
|
4415
|
-
callback: () => {
|
4416
|
-
selection.transformStart(-1, 0);
|
4417
|
-
}
|
4418
|
-
}, {
|
4419
|
-
keys: [['ArrowUp', 'Control/Meta']],
|
4420
|
-
captureCtrl: true,
|
4421
|
-
callback: () => {
|
4422
|
-
selection.setRangeStart(instance._createCellCoords(instance.rowIndexMapper.getNearestNotHiddenIndex(0, 1), instance.getSelectedRangeLast().highlight.col));
|
4423
|
-
}
|
4424
|
-
}, {
|
4425
|
-
keys: [['ArrowUp', 'Shift']],
|
4426
|
-
callback: () => {
|
4427
|
-
selection.transformEnd(-1, 0);
|
4428
|
-
}
|
4429
|
-
}, {
|
4430
|
-
keys: [['ArrowUp', 'Shift', 'Control/Meta']],
|
4431
|
-
captureCtrl: true,
|
4432
|
-
callback: () => {
|
4433
|
-
const {
|
4434
|
-
from,
|
4435
|
-
to
|
4436
|
-
} = instance.getSelectedRangeLast();
|
4437
|
-
const row = instance.rowIndexMapper.getNearestNotHiddenIndex(0, 1);
|
4438
|
-
selection.setRangeStart(from.clone());
|
4439
|
-
selection.setRangeEnd(instance._createCellCoords(row, to.col));
|
4440
|
-
},
|
4441
|
-
runOnlyIf: () => !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByColumnHeader())
|
4442
|
-
}, {
|
4443
|
-
keys: [['ArrowDown']],
|
4444
|
-
callback: () => {
|
4445
|
-
selection.transformStart(1, 0);
|
4446
|
-
}
|
4447
|
-
}, {
|
4448
|
-
keys: [['ArrowDown', 'Control/Meta']],
|
4449
|
-
captureCtrl: true,
|
4450
|
-
callback: () => {
|
4451
|
-
selection.setRangeStart(instance._createCellCoords(instance.rowIndexMapper.getNearestNotHiddenIndex(instance.countRows() - 1, -1), instance.getSelectedRangeLast().highlight.col));
|
4452
|
-
}
|
4453
|
-
}, {
|
4454
|
-
keys: [['ArrowDown', 'Shift']],
|
4455
|
-
callback: () => {
|
4456
|
-
selection.transformEnd(1, 0);
|
4457
|
-
}
|
4458
|
-
}, {
|
4459
|
-
keys: [['ArrowDown', 'Shift', 'Control/Meta']],
|
4460
|
-
captureCtrl: true,
|
4461
|
-
callback: () => {
|
4462
|
-
const {
|
4463
|
-
from,
|
4464
|
-
to
|
4465
|
-
} = instance.getSelectedRangeLast();
|
4466
|
-
const row = instance.rowIndexMapper.getNearestNotHiddenIndex(instance.countRows() - 1, -1);
|
4467
|
-
selection.setRangeStart(from.clone());
|
4468
|
-
selection.setRangeEnd(instance._createCellCoords(row, to.col));
|
4469
|
-
},
|
4470
|
-
runOnlyIf: () => !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByColumnHeader())
|
4471
|
-
}, {
|
4472
|
-
keys: [['ArrowLeft']],
|
4473
|
-
callback: () => {
|
4474
|
-
selection.transformStart(0, -1 * instance.getDirectionFactor());
|
4475
|
-
}
|
4476
|
-
}, {
|
4477
|
-
keys: [['ArrowLeft', 'Control/Meta']],
|
4478
|
-
captureCtrl: true,
|
4479
|
-
callback: () => {
|
4480
|
-
const row = instance.getSelectedRangeLast().highlight.row;
|
4481
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(...(instance.isRtl() ? [instance.countCols() - 1, -1] : [0, 1]));
|
4482
|
-
selection.setRangeStart(instance._createCellCoords(row, column));
|
4483
|
-
}
|
4484
|
-
}, {
|
4485
|
-
keys: [['ArrowLeft', 'Shift']],
|
4486
|
-
callback: () => {
|
4487
|
-
selection.transformEnd(0, -1 * instance.getDirectionFactor());
|
4488
|
-
}
|
4489
|
-
}, {
|
4490
|
-
keys: [['ArrowLeft', 'Shift', 'Control/Meta']],
|
4491
|
-
captureCtrl: true,
|
4492
|
-
callback: () => {
|
4493
|
-
const {
|
4494
|
-
from,
|
4495
|
-
to
|
4496
|
-
} = instance.getSelectedRangeLast();
|
4497
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(...(instance.isRtl() ? [instance.countCols() - 1, -1] : [0, 1]));
|
4498
|
-
selection.setRangeStart(from.clone());
|
4499
|
-
selection.setRangeEnd(instance._createCellCoords(to.row, column));
|
4500
|
-
},
|
4501
|
-
runOnlyIf: () => !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByRowHeader())
|
4502
|
-
}, {
|
4503
|
-
keys: [['ArrowRight']],
|
4504
|
-
callback: () => {
|
4505
|
-
selection.transformStart(0, instance.getDirectionFactor());
|
4506
|
-
}
|
4507
|
-
}, {
|
4508
|
-
keys: [['ArrowRight', 'Control/Meta']],
|
4509
|
-
captureCtrl: true,
|
4510
|
-
callback: () => {
|
4511
|
-
const row = instance.getSelectedRangeLast().highlight.row;
|
4512
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(...(instance.isRtl() ? [0, 1] : [instance.countCols() - 1, -1]));
|
4513
|
-
selection.setRangeStart(instance._createCellCoords(row, column));
|
4514
|
-
}
|
4515
|
-
}, {
|
4516
|
-
keys: [['ArrowRight', 'Shift']],
|
4517
|
-
callback: () => {
|
4518
|
-
selection.transformEnd(0, instance.getDirectionFactor());
|
4519
|
-
}
|
4520
|
-
}, {
|
4521
|
-
keys: [['ArrowRight', 'Shift', 'Control/Meta']],
|
4522
|
-
captureCtrl: true,
|
4523
|
-
callback: () => {
|
4524
|
-
const {
|
4525
|
-
from,
|
4526
|
-
to
|
4527
|
-
} = instance.getSelectedRangeLast();
|
4528
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(...(instance.isRtl() ? [0, 1] : [instance.countCols() - 1, -1]));
|
4529
|
-
selection.setRangeStart(from.clone());
|
4530
|
-
selection.setRangeEnd(instance._createCellCoords(to.row, column));
|
4531
|
-
},
|
4532
|
-
runOnlyIf: () => !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByRowHeader())
|
4533
|
-
}, {
|
4534
|
-
keys: [['Home']],
|
4535
|
-
captureCtrl: true,
|
4536
|
-
callback: () => {
|
4537
|
-
const fixedColumns = parseInt(instance.getSettings().fixedColumnsStart, 10);
|
4538
|
-
const row = instance.getSelectedRangeLast().highlight.row;
|
4539
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
|
4540
|
-
selection.setRangeStart(instance._createCellCoords(row, column));
|
4541
|
-
},
|
4542
|
-
runOnlyIf: () => instance.view.isMainTableNotFullyCoveredByOverlays()
|
4543
|
-
}, {
|
4544
|
-
keys: [['Home', 'Shift']],
|
4545
|
-
callback: () => {
|
4546
|
-
selection.setRangeEnd(instance._createCellCoords(selection.selectedRange.current().from.row, instance.columnIndexMapper.getNearestNotHiddenIndex(0, 1)));
|
4547
|
-
}
|
4548
|
-
}, {
|
4549
|
-
keys: [['Home', 'Control/Meta']],
|
4550
|
-
captureCtrl: true,
|
4551
|
-
callback: () => {
|
4552
|
-
const fixedRows = parseInt(instance.getSettings().fixedRowsTop, 10);
|
4553
|
-
const fixedColumns = parseInt(instance.getSettings().fixedColumnsStart, 10);
|
4554
|
-
const row = instance.rowIndexMapper.getNearestNotHiddenIndex(fixedRows, 1);
|
4555
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
|
4556
|
-
selection.setRangeStart(instance._createCellCoords(row, column));
|
4557
|
-
},
|
4558
|
-
runOnlyIf: () => instance.view.isMainTableNotFullyCoveredByOverlays()
|
4559
|
-
}, {
|
4560
|
-
keys: [['End']],
|
4561
|
-
captureCtrl: true,
|
4562
|
-
callback: () => {
|
4563
|
-
selection.setRangeStart(instance._createCellCoords(instance.getSelectedRangeLast().highlight.row, instance.columnIndexMapper.getNearestNotHiddenIndex(instance.countCols() - 1, -1)));
|
4564
|
-
},
|
4565
|
-
runOnlyIf: () => instance.view.isMainTableNotFullyCoveredByOverlays()
|
4566
|
-
}, {
|
4567
|
-
keys: [['End', 'Shift']],
|
4568
|
-
callback: () => {
|
4569
|
-
selection.setRangeEnd(instance._createCellCoords(selection.selectedRange.current().from.row, instance.columnIndexMapper.getNearestNotHiddenIndex(instance.countCols() - 1, -1)));
|
4570
|
-
}
|
4571
|
-
}, {
|
4572
|
-
keys: [['End', 'Control/Meta']],
|
4573
|
-
captureCtrl: true,
|
4574
|
-
callback: () => {
|
4575
|
-
const fixedRows = parseInt(instance.getSettings().fixedRowsBottom, 10);
|
4576
|
-
const row = instance.rowIndexMapper.getNearestNotHiddenIndex(instance.countRows() - fixedRows - 1, -1);
|
4577
|
-
const column = instance.columnIndexMapper.getNearestNotHiddenIndex(instance.countCols() - 1, -1);
|
4578
|
-
selection.setRangeStart(instance._createCellCoords(row, column));
|
4579
|
-
},
|
4580
|
-
runOnlyIf: () => instance.view.isMainTableNotFullyCoveredByOverlays()
|
4581
|
-
}, {
|
4582
|
-
keys: [['PageUp']],
|
4583
|
-
callback: () => {
|
4584
|
-
selection.transformStart(-instance.countVisibleRows(), 0);
|
4585
|
-
}
|
4586
|
-
}, {
|
4587
|
-
keys: [['PageUp', 'Shift']],
|
4588
|
-
callback: () => {
|
4589
|
-
const {
|
4590
|
-
to
|
4591
|
-
} = instance.getSelectedRangeLast();
|
4592
|
-
const nextRowIndexToSelect = Math.max(to.row - instance.countVisibleRows(), 0);
|
4593
|
-
const row = instance.rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, 1);
|
4594
|
-
if (row !== null) {
|
4595
|
-
const coords = instance._createCellCoords(row, to.col);
|
4596
|
-
const scrollPadding = to.row - instance.view.getFirstFullyVisibleRow();
|
4597
|
-
const nextVerticalScroll = Math.max(coords.row - scrollPadding, 0);
|
4598
|
-
selection.setRangeEnd(coords);
|
4599
|
-
instance.scrollViewportTo(nextVerticalScroll);
|
4600
|
-
}
|
4601
|
-
}
|
4602
|
-
}, {
|
4603
|
-
keys: [['PageDown']],
|
4604
|
-
callback: () => {
|
4605
|
-
selection.transformStart(instance.countVisibleRows(), 0);
|
4606
|
-
}
|
4607
|
-
}, {
|
4608
|
-
keys: [['PageDown', 'Shift']],
|
4609
|
-
callback: () => {
|
4610
|
-
const {
|
4611
|
-
to
|
4612
|
-
} = instance.getSelectedRangeLast();
|
4613
|
-
const nextRowIndexToSelect = Math.min(to.row + instance.countVisibleRows(), instance.countRows() - 1);
|
4614
|
-
const row = instance.rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, -1);
|
4615
|
-
if (row !== null) {
|
4616
|
-
const coords = instance._createCellCoords(row, to.col);
|
4617
|
-
const scrollPadding = to.row - instance.view.getFirstFullyVisibleRow();
|
4618
|
-
const nextVerticalScroll = Math.min(coords.row - scrollPadding, instance.countRows() - 1);
|
4619
|
-
selection.setRangeEnd(coords);
|
4620
|
-
instance.scrollViewportTo(nextVerticalScroll);
|
4621
|
-
}
|
4622
|
-
}
|
4623
|
-
}, {
|
4624
|
-
keys: [['Tab']],
|
4625
|
-
callback: event => {
|
4626
|
-
const tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
4627
|
-
selection.transformStart(tabMoves.row, tabMoves.col, true);
|
4628
|
-
}
|
4629
|
-
}, {
|
4630
|
-
keys: [['Shift', 'Tab']],
|
4631
|
-
callback: event => {
|
4632
|
-
const tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
|
4633
|
-
selection.transformStart(-tabMoves.row, -tabMoves.col);
|
4634
|
-
}
|
4635
|
-
}], gridConfig);
|
4636
4602
|
(0, _registry.getPluginsNames)().forEach(pluginName => {
|
4637
4603
|
const PluginClass = (0, _registry.getPlugin)(pluginName);
|
4638
4604
|
pluginsRegistry.addItem(pluginName, new PluginClass(this));
|
4639
4605
|
});
|
4606
|
+
(0, _shortcutContexts.registerAllShortcutContexts)(instance);
|
4607
|
+
shortcutManager.setActiveContextName('grid');
|
4640
4608
|
_pluginHooks.default.getSingleton().run(instance, 'construct');
|
4641
4609
|
}
|