handsontable 13.1.0 → 14.0.0-next-d97b156-20231027
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|