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
@@ -6,13 +6,12 @@ var _element = require("../../helpers/dom/element");
|
|
6
6
|
var _object = require("../../helpers/object");
|
7
7
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
8
8
|
const SHORTCUTS_GROUP = 'selectEditor';
|
9
|
-
const EDITOR_TYPE = 'select';
|
9
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'select';
|
10
10
|
|
11
11
|
/**
|
12
12
|
* @private
|
13
13
|
* @class SelectEditor
|
14
14
|
*/
|
15
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
16
15
|
class SelectEditor extends _baseEditor.BaseEditor {
|
17
16
|
static get EDITOR_TYPE() {
|
18
17
|
return EDITOR_TYPE;
|
@@ -12,17 +12,17 @@ var _mixed = require("../../helpers/mixed");
|
|
12
12
|
var _editorManager = require("../../editorManager");
|
13
13
|
var _baseEditor2 = require("../baseEditor/baseEditor");
|
14
14
|
var _caretPositioner = require("./caretPositioner");
|
15
|
+
var _a11y = require("../../helpers/a11y");
|
15
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
16
17
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
17
18
|
const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
|
18
19
|
const SHORTCUTS_GROUP = 'textEditor';
|
19
|
-
const EDITOR_TYPE = 'text';
|
20
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'text';
|
20
21
|
|
21
22
|
/**
|
22
23
|
* @private
|
23
24
|
* @class TextEditor
|
24
25
|
*/
|
25
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
26
26
|
class TextEditor extends _baseEditor.BaseEditor {
|
27
27
|
static get EDITOR_TYPE() {
|
28
28
|
return EDITOR_TYPE;
|
@@ -122,7 +122,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
122
122
|
*/
|
123
123
|
close() {
|
124
124
|
this.autoResize.unObserve();
|
125
|
-
if (this.hot.rootDocument.activeElement
|
125
|
+
if ((0, _element.isThisHotChild)(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
|
126
126
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
127
127
|
}
|
128
128
|
|
@@ -147,8 +147,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
147
147
|
if (!cellProperties.readOnly) {
|
148
148
|
this.refreshDimensions(true);
|
149
149
|
const {
|
150
|
-
allowInvalid
|
151
|
-
fragmentSelection
|
150
|
+
allowInvalid
|
152
151
|
} = cellProperties;
|
153
152
|
if (allowInvalid) {
|
154
153
|
// Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
|
@@ -158,13 +157,6 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
158
157
|
if (previousState !== _baseEditor.EDITOR_STATE.FINISHED) {
|
159
158
|
this.hideEditableElement();
|
160
159
|
}
|
161
|
-
|
162
|
-
// @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
|
163
|
-
// refocus has to be disabled (to make IME working).
|
164
|
-
const restoreFocus = !fragmentSelection;
|
165
|
-
if (restoreFocus && !(0, _browser.isMobileBrowser)()) {
|
166
|
-
this.focus();
|
167
|
-
}
|
168
160
|
}
|
169
161
|
}
|
170
162
|
|
@@ -201,8 +193,13 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
201
193
|
rootDocument
|
202
194
|
} = this.hot;
|
203
195
|
this.TEXTAREA = rootDocument.createElement('TEXTAREA');
|
204
|
-
|
205
|
-
|
196
|
+
|
197
|
+
// Makes the element recognizable by Hot as its own
|
198
|
+
// component's element.
|
199
|
+
(0, _element.setAttribute)(this.TEXTAREA, [['data-hot-input', ''], (0, _a11y.A11Y_TABINDEX)(-1)]);
|
200
|
+
if (this.hot.getSettings().ariaTags) {
|
201
|
+
(0, _element.setAttribute)(this.TEXTAREA, [(0, _a11y.A11Y_HIDDEN)()]);
|
202
|
+
}
|
206
203
|
(0, _element.addClass)(this.TEXTAREA, 'handsontableInput');
|
207
204
|
this.textareaStyle = this.TEXTAREA.style;
|
208
205
|
this.textareaStyle.width = 0;
|
@@ -340,8 +337,6 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
340
337
|
* @private
|
341
338
|
*/
|
342
339
|
bindEvents() {
|
343
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'cut', event => event.stopPropagation());
|
344
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'paste', event => event.stopPropagation());
|
345
340
|
if ((0, _browser.isIOS)()) {
|
346
341
|
// on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
|
347
342
|
this.eventManager.addEventListener(this.TEXTAREA, 'focusout', () => this.finishEditing(false));
|
@@ -350,11 +345,15 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
350
345
|
this.addHook('afterScrollVertically', () => this.refreshDimensions());
|
351
346
|
this.addHook('afterColumnResize', () => {
|
352
347
|
this.refreshDimensions();
|
353
|
-
this.
|
348
|
+
if (this.state === _baseEditor.EDITOR_STATE.EDITING) {
|
349
|
+
this.focus();
|
350
|
+
}
|
354
351
|
});
|
355
352
|
this.addHook('afterRowResize', () => {
|
356
353
|
this.refreshDimensions();
|
357
|
-
this.
|
354
|
+
if (this.state === _baseEditor.EDITOR_STATE.EDITING) {
|
355
|
+
this.focus();
|
356
|
+
}
|
358
357
|
});
|
359
358
|
}
|
360
359
|
|
@@ -416,9 +415,7 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
416
415
|
runOnlyIf: event => !this.hot.selection.isMultiple() &&
|
417
416
|
// We trigger a data population for multiple selection.
|
418
417
|
// catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
|
419
|
-
!event.altKey
|
420
|
-
relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
|
421
|
-
position: 'before'
|
418
|
+
!event.altKey
|
422
419
|
}, {
|
423
420
|
keys: [['Meta', 'Enter']],
|
424
421
|
callback: () => {
|
@@ -426,19 +423,13 @@ class TextEditor extends _baseEditor.BaseEditor {
|
|
426
423
|
return false; // Will block closing editor.
|
427
424
|
},
|
428
425
|
|
429
|
-
runOnlyIf: () => !this.hot.selection.isMultiple()
|
430
|
-
// We trigger a data population for multiple selection.
|
431
|
-
relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
|
432
|
-
position: 'before'
|
426
|
+
runOnlyIf: () => !this.hot.selection.isMultiple() // We trigger a data population for multiple selection.
|
433
427
|
}, {
|
434
428
|
keys: [['Alt', 'Enter']],
|
435
429
|
callback: () => {
|
436
430
|
insertNewLine();
|
437
431
|
return false; // Will block closing editor.
|
438
|
-
}
|
439
|
-
|
440
|
-
relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
|
441
|
-
position: 'before'
|
432
|
+
}
|
442
433
|
}, {
|
443
434
|
// TODO: Duplicated part of code (callback to shortcut)
|
444
435
|
keys: [['PageUp']],
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import { BaseEditor, EDITOR_STATE } from "../baseEditor/index.mjs";
|
2
2
|
import EventManager from "../../eventManager.mjs";
|
3
|
-
import {
|
4
|
-
import { addClass, getComputedStyle, setCaretPosition, hasClass, removeClass } from "../../helpers/dom/element.mjs";
|
3
|
+
import { isEdge, isIOS } from "../../helpers/browser.mjs";
|
4
|
+
import { addClass, getComputedStyle, isThisHotChild, setCaretPosition, hasClass, removeClass, setAttribute } from "../../helpers/dom/element.mjs";
|
5
5
|
import { rangeEach } from "../../helpers/number.mjs";
|
6
6
|
import { KEY_CODES } from "../../helpers/unicode.mjs";
|
7
7
|
import { autoResize } from "../../3rdparty/autoResize/index.mjs";
|
8
8
|
import { isDefined } from "../../helpers/mixed.mjs";
|
9
|
-
import { SHORTCUTS_GROUP_NAVIGATION
|
9
|
+
import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
|
10
10
|
import { SHORTCUTS_GROUP_EDITOR } from "../baseEditor/baseEditor.mjs";
|
11
11
|
import { updateCaretPosition } from "./caretPositioner.mjs";
|
12
|
+
import { A11Y_HIDDEN, A11Y_TABINDEX } from "../../helpers/a11y.mjs";
|
12
13
|
const EDITOR_VISIBLE_CLASS_NAME = 'ht_editor_visible';
|
13
14
|
const EDITOR_HIDDEN_CLASS_NAME = 'ht_editor_hidden';
|
14
15
|
const SHORTCUTS_GROUP = 'textEditor';
|
@@ -117,7 +118,7 @@ export class TextEditor extends BaseEditor {
|
|
117
118
|
*/
|
118
119
|
close() {
|
119
120
|
this.autoResize.unObserve();
|
120
|
-
if (this.hot.rootDocument.activeElement
|
121
|
+
if (isThisHotChild(this.hot.rootDocument.activeElement, this.hot.rootElement)) {
|
121
122
|
this.hot.listen(); // don't refocus the table if user focused some cell outside of HT on purpose
|
122
123
|
}
|
123
124
|
|
@@ -142,8 +143,7 @@ export class TextEditor extends BaseEditor {
|
|
142
143
|
if (!cellProperties.readOnly) {
|
143
144
|
this.refreshDimensions(true);
|
144
145
|
const {
|
145
|
-
allowInvalid
|
146
|
-
fragmentSelection
|
146
|
+
allowInvalid
|
147
147
|
} = cellProperties;
|
148
148
|
if (allowInvalid) {
|
149
149
|
// Remove an empty space from textarea (added by copyPaste plugin to make copy/paste
|
@@ -153,13 +153,6 @@ export class TextEditor extends BaseEditor {
|
|
153
153
|
if (previousState !== EDITOR_STATE.FINISHED) {
|
154
154
|
this.hideEditableElement();
|
155
155
|
}
|
156
|
-
|
157
|
-
// @TODO: The fragmentSelection functionality is conflicted with IME. For this feature
|
158
|
-
// refocus has to be disabled (to make IME working).
|
159
|
-
const restoreFocus = !fragmentSelection;
|
160
|
-
if (restoreFocus && !isMobileBrowser()) {
|
161
|
-
this.focus();
|
162
|
-
}
|
163
156
|
}
|
164
157
|
}
|
165
158
|
|
@@ -196,8 +189,13 @@ export class TextEditor extends BaseEditor {
|
|
196
189
|
rootDocument
|
197
190
|
} = this.hot;
|
198
191
|
this.TEXTAREA = rootDocument.createElement('TEXTAREA');
|
199
|
-
|
200
|
-
|
192
|
+
|
193
|
+
// Makes the element recognizable by Hot as its own
|
194
|
+
// component's element.
|
195
|
+
setAttribute(this.TEXTAREA, [['data-hot-input', ''], A11Y_TABINDEX(-1)]);
|
196
|
+
if (this.hot.getSettings().ariaTags) {
|
197
|
+
setAttribute(this.TEXTAREA, [A11Y_HIDDEN()]);
|
198
|
+
}
|
201
199
|
addClass(this.TEXTAREA, 'handsontableInput');
|
202
200
|
this.textareaStyle = this.TEXTAREA.style;
|
203
201
|
this.textareaStyle.width = 0;
|
@@ -335,8 +333,6 @@ export class TextEditor extends BaseEditor {
|
|
335
333
|
* @private
|
336
334
|
*/
|
337
335
|
bindEvents() {
|
338
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'cut', event => event.stopPropagation());
|
339
|
-
this.eventManager.addEventListener(this.TEXTAREA, 'paste', event => event.stopPropagation());
|
340
336
|
if (isIOS()) {
|
341
337
|
// on iOS after click "Done" the edit isn't hidden by default, so we need to handle it manually.
|
342
338
|
this.eventManager.addEventListener(this.TEXTAREA, 'focusout', () => this.finishEditing(false));
|
@@ -345,11 +341,15 @@ export class TextEditor extends BaseEditor {
|
|
345
341
|
this.addHook('afterScrollVertically', () => this.refreshDimensions());
|
346
342
|
this.addHook('afterColumnResize', () => {
|
347
343
|
this.refreshDimensions();
|
348
|
-
this.
|
344
|
+
if (this.state === EDITOR_STATE.EDITING) {
|
345
|
+
this.focus();
|
346
|
+
}
|
349
347
|
});
|
350
348
|
this.addHook('afterRowResize', () => {
|
351
349
|
this.refreshDimensions();
|
352
|
-
this.
|
350
|
+
if (this.state === EDITOR_STATE.EDITING) {
|
351
|
+
this.focus();
|
352
|
+
}
|
353
353
|
});
|
354
354
|
}
|
355
355
|
|
@@ -411,9 +411,7 @@ export class TextEditor extends BaseEditor {
|
|
411
411
|
runOnlyIf: event => !this.hot.selection.isMultiple() &&
|
412
412
|
// We trigger a data population for multiple selection.
|
413
413
|
// catch CTRL but not right ALT (which in some systems triggers ALT+CTRL)
|
414
|
-
!event.altKey
|
415
|
-
relativeToGroup: EDITOR_MANAGER_GROUP,
|
416
|
-
position: 'before'
|
414
|
+
!event.altKey
|
417
415
|
}, {
|
418
416
|
keys: [['Meta', 'Enter']],
|
419
417
|
callback: () => {
|
@@ -421,19 +419,13 @@ export class TextEditor extends BaseEditor {
|
|
421
419
|
return false; // Will block closing editor.
|
422
420
|
},
|
423
421
|
|
424
|
-
runOnlyIf: () => !this.hot.selection.isMultiple()
|
425
|
-
// We trigger a data population for multiple selection.
|
426
|
-
relativeToGroup: EDITOR_MANAGER_GROUP,
|
427
|
-
position: 'before'
|
422
|
+
runOnlyIf: () => !this.hot.selection.isMultiple() // We trigger a data population for multiple selection.
|
428
423
|
}, {
|
429
424
|
keys: [['Alt', 'Enter']],
|
430
425
|
callback: () => {
|
431
426
|
insertNewLine();
|
432
427
|
return false; // Will block closing editor.
|
433
|
-
}
|
434
|
-
|
435
|
-
relativeToGroup: EDITOR_MANAGER_GROUP,
|
436
|
-
position: 'before'
|
428
|
+
}
|
437
429
|
}, {
|
438
430
|
// TODO: Duplicated part of code (callback to shortcut)
|
439
431
|
keys: [['PageUp']],
|
@@ -2,13 +2,12 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _textEditor = require("../textEditor");
|
5
|
-
const EDITOR_TYPE = 'time';
|
5
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'time';
|
6
6
|
|
7
7
|
/**
|
8
8
|
* @private
|
9
9
|
* @class TimeEditor
|
10
10
|
*/
|
11
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
12
11
|
class TimeEditor extends _textEditor.TextEditor {
|
13
12
|
static get EDITOR_TYPE() {
|
14
13
|
return EDITOR_TYPE;
|
package/eventManager.js
CHANGED
@@ -201,11 +201,10 @@ function extendEvent(event) {
|
|
201
201
|
};
|
202
202
|
return event;
|
203
203
|
}
|
204
|
-
var _default = EventManager;
|
204
|
+
var _default = exports.default = EventManager;
|
205
205
|
/**
|
206
206
|
* @returns {number}
|
207
207
|
*/
|
208
|
-
exports.default = _default;
|
209
208
|
function getListenersCounter() {
|
210
209
|
return listenersCounter;
|
211
210
|
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
type FocusMode = 'cell' | 'mixed';
|
2
|
+
|
3
|
+
export interface FocusManager {
|
4
|
+
getFocusMode(): FocusMode;
|
5
|
+
setFocusMode(focusMode: FocusMode): void;
|
6
|
+
getRefocusDelay(): number;
|
7
|
+
setRefocusDelay(delay: number): void;
|
8
|
+
setRefocusElementGetter(getterFn: () => HTMLElement): void;
|
9
|
+
getRefocusElement(): HTMLElement | void;
|
10
|
+
focusOnHighlightedCell(): void;
|
11
|
+
refocusToEditorTextarea(delay: number): void;
|
12
|
+
}
|
package/focusManager.js
ADDED
@@ -0,0 +1,265 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
exports.__esModule = true;
|
4
|
+
require("core-js/modules/es.error.cause.js");
|
5
|
+
var _console = require("./helpers/console");
|
6
|
+
var _element = require("./helpers/dom/element");
|
7
|
+
function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclaration(obj, privateSet); privateSet.add(obj); }
|
8
|
+
function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
|
9
|
+
function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
|
10
|
+
function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
|
11
|
+
function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
|
12
|
+
function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
|
13
|
+
function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
|
14
|
+
function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
|
15
|
+
function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
|
16
|
+
/**
|
17
|
+
* Possible focus modes.
|
18
|
+
* - CELL - The browser's focus stays on the lastly selected cell element.
|
19
|
+
* - MIXED - The browser's focus switches from the lastly selected cell element to the currently active editor's
|
20
|
+
* `TEXTAREA` element after a delay defined in the manager.
|
21
|
+
*
|
22
|
+
* @type {{CELL: string, MIXED: string}}
|
23
|
+
*/
|
24
|
+
const FOCUS_MODES = Object.freeze({
|
25
|
+
CELL: 'cell',
|
26
|
+
MIXED: 'mixed'
|
27
|
+
});
|
28
|
+
|
29
|
+
/**
|
30
|
+
* Manages the browser's focus in the table.
|
31
|
+
*/
|
32
|
+
var _hot = /*#__PURE__*/new WeakMap();
|
33
|
+
var _focusMode = /*#__PURE__*/new WeakMap();
|
34
|
+
var _refocusDelay = /*#__PURE__*/new WeakMap();
|
35
|
+
var _refocusElementGetter = /*#__PURE__*/new WeakMap();
|
36
|
+
var _getCurrentHighlightCoords = /*#__PURE__*/new WeakSet();
|
37
|
+
var _getSelectedCell = /*#__PURE__*/new WeakSet();
|
38
|
+
var _manageFocus = /*#__PURE__*/new WeakSet();
|
39
|
+
var _onUpdateSettings = /*#__PURE__*/new WeakSet();
|
40
|
+
class FocusManager {
|
41
|
+
constructor(hotInstance) {
|
42
|
+
var _this = this;
|
43
|
+
/**
|
44
|
+
* Update the manager configuration after calling `updateSettings`.
|
45
|
+
*
|
46
|
+
* @private
|
47
|
+
* @param {object} newSettings The new settings passed to the `updateSettings` method.
|
48
|
+
*/
|
49
|
+
_classPrivateMethodInitSpec(this, _onUpdateSettings);
|
50
|
+
/**
|
51
|
+
* Manage the browser's focus after cell selection.
|
52
|
+
*
|
53
|
+
* @private
|
54
|
+
*/
|
55
|
+
_classPrivateMethodInitSpec(this, _manageFocus);
|
56
|
+
/**
|
57
|
+
* Get and return the currently selected and highlighted cell/header element.
|
58
|
+
*
|
59
|
+
* @private
|
60
|
+
* @returns {HTMLTableCellElement}
|
61
|
+
*/
|
62
|
+
_classPrivateMethodInitSpec(this, _getSelectedCell);
|
63
|
+
/**
|
64
|
+
* Get the coordinates of the highlight of the currently selected cell/header.
|
65
|
+
*
|
66
|
+
* @returns {CellCoords}
|
67
|
+
*/
|
68
|
+
_classPrivateMethodInitSpec(this, _getCurrentHighlightCoords);
|
69
|
+
/**
|
70
|
+
* The Handsontable instance.
|
71
|
+
*/
|
72
|
+
_classPrivateFieldInitSpec(this, _hot, {
|
73
|
+
writable: true,
|
74
|
+
value: void 0
|
75
|
+
});
|
76
|
+
/**
|
77
|
+
* The currently enabled focus mode.
|
78
|
+
* Can be either:
|
79
|
+
*
|
80
|
+
* - 'cell' - The browser's focus stays on the lastly selected cell element.
|
81
|
+
* - 'mixed' - The browser's focus switches from the lastly selected cell element to the currently active editor's
|
82
|
+
* `TEXTAREA` element after a delay defined in the manager.
|
83
|
+
*
|
84
|
+
* @type {string}
|
85
|
+
*/
|
86
|
+
_classPrivateFieldInitSpec(this, _focusMode, {
|
87
|
+
writable: true,
|
88
|
+
value: void 0
|
89
|
+
});
|
90
|
+
/**
|
91
|
+
* The delay after which the focus switches from the lastly selected cell to the active editor's `TEXTAREA`
|
92
|
+
* element if the focus mode is set to 'mixed'.
|
93
|
+
*
|
94
|
+
* @type {number}
|
95
|
+
*/
|
96
|
+
_classPrivateFieldInitSpec(this, _refocusDelay, {
|
97
|
+
writable: true,
|
98
|
+
value: 50
|
99
|
+
});
|
100
|
+
/**
|
101
|
+
* Getter function for the element to be used when refocusing the browser after a delay. If `null`, the active
|
102
|
+
* editor's `TEXTAREA` element will be used.
|
103
|
+
*
|
104
|
+
* @type {null|Function}
|
105
|
+
*/
|
106
|
+
_classPrivateFieldInitSpec(this, _refocusElementGetter, {
|
107
|
+
writable: true,
|
108
|
+
value: null
|
109
|
+
});
|
110
|
+
const hotSettings = hotInstance.getSettings();
|
111
|
+
_classPrivateFieldSet(this, _hot, hotInstance);
|
112
|
+
_classPrivateFieldSet(this, _focusMode, hotSettings.imeFastEdit ? FOCUS_MODES.MIXED : FOCUS_MODES.CELL);
|
113
|
+
_classPrivateFieldGet(this, _hot).addHook('afterUpdateSettings', function () {
|
114
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
115
|
+
args[_key] = arguments[_key];
|
116
|
+
}
|
117
|
+
return _classPrivateMethodGet(_this, _onUpdateSettings, _onUpdateSettings2).call(_this, ...args);
|
118
|
+
});
|
119
|
+
_classPrivateFieldGet(this, _hot).addHook('afterSelection', function () {
|
120
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
121
|
+
args[_key2] = arguments[_key2];
|
122
|
+
}
|
123
|
+
return _classPrivateMethodGet(_this, _manageFocus, _manageFocus2).call(_this, ...args);
|
124
|
+
});
|
125
|
+
}
|
126
|
+
|
127
|
+
/**
|
128
|
+
* Get the current focus mode.
|
129
|
+
*
|
130
|
+
* @returns {'cell' | 'mixed'}
|
131
|
+
*/
|
132
|
+
getFocusMode() {
|
133
|
+
return _classPrivateFieldGet(this, _focusMode);
|
134
|
+
}
|
135
|
+
|
136
|
+
/**
|
137
|
+
* Set the focus mode.
|
138
|
+
*
|
139
|
+
* @param {'cell' | 'mixed'} focusMode The new focus mode.
|
140
|
+
*/
|
141
|
+
setFocusMode(focusMode) {
|
142
|
+
if (Object.values(FOCUS_MODES).includes(focusMode)) {
|
143
|
+
_classPrivateFieldSet(this, _focusMode, focusMode);
|
144
|
+
} else {
|
145
|
+
(0, _console.warn)(`"${focusMode}" is not a valid focus mode.`);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
149
|
+
/**
|
150
|
+
* Get the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
|
151
|
+
* element if the focus mode is set to 'mixed'.
|
152
|
+
*
|
153
|
+
* @returns {number} Delay in milliseconds.
|
154
|
+
*/
|
155
|
+
getRefocusDelay() {
|
156
|
+
return _classPrivateFieldGet(this, _refocusDelay);
|
157
|
+
}
|
158
|
+
|
159
|
+
/**
|
160
|
+
* Set the delay after which the focus will change from the cell elements to the active editor's `TEXTAREA`
|
161
|
+
* element if the focus mode is set to 'mixed'.
|
162
|
+
*
|
163
|
+
* @param {number} delay Delay in milliseconds.
|
164
|
+
*/
|
165
|
+
setRefocusDelay(delay) {
|
166
|
+
_classPrivateFieldSet(this, _refocusDelay, delay);
|
167
|
+
}
|
168
|
+
|
169
|
+
/**
|
170
|
+
* Set the function to be used as the "refocus element" getter. It should return a focusable HTML element.
|
171
|
+
*
|
172
|
+
* @param {Function} getRefocusElementFunction The refocus element getter.
|
173
|
+
*/
|
174
|
+
setRefocusElementGetter(getRefocusElementFunction) {
|
175
|
+
_classPrivateFieldSet(this, _refocusElementGetter, getRefocusElementFunction);
|
176
|
+
}
|
177
|
+
|
178
|
+
/**
|
179
|
+
* Get the element to be used when refocusing the browser after a delay in case of the focus mode being 'mixed'.
|
180
|
+
*
|
181
|
+
* @returns {HTMLTextAreaElement|HTMLElement|undefined}
|
182
|
+
*/
|
183
|
+
getRefocusElement() {
|
184
|
+
if (typeof _classPrivateFieldGet(this, _refocusElementGetter) === 'function') {
|
185
|
+
return _classPrivateFieldGet(this, _refocusElementGetter).call(this);
|
186
|
+
} else {
|
187
|
+
var _classPrivateFieldGet2;
|
188
|
+
return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _hot).getActiveEditor()) === null || _classPrivateFieldGet2 === void 0 ? void 0 : _classPrivateFieldGet2.TEXTAREA;
|
189
|
+
}
|
190
|
+
}
|
191
|
+
|
192
|
+
/**
|
193
|
+
* Set the browser's focus to the highlighted cell of the last selection.
|
194
|
+
*
|
195
|
+
* @param {HTMLTableCellElement} [selectedCell] The highlighted cell/header element.
|
196
|
+
*/
|
197
|
+
focusOnHighlightedCell(selectedCell) {
|
198
|
+
var _classPrivateFieldGet3;
|
199
|
+
const currentHighlightCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
|
200
|
+
const currentlySelectedHighlight = selectedCell || _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
|
201
|
+
let elementToBeFocused = _classPrivateFieldGet(this, _hot).runHooks('modifyFocusedElement', currentHighlightCoords.row, currentHighlightCoords.col, currentlySelectedHighlight);
|
202
|
+
if (!(elementToBeFocused instanceof HTMLElement)) {
|
203
|
+
elementToBeFocused = currentlySelectedHighlight;
|
204
|
+
}
|
205
|
+
if (elementToBeFocused && !((_classPrivateFieldGet3 = _classPrivateFieldGet(this, _hot).getActiveEditor()) !== null && _classPrivateFieldGet3 !== void 0 && _classPrivateFieldGet3.isOpened())) {
|
206
|
+
elementToBeFocused.focus({
|
207
|
+
preventScroll: true
|
208
|
+
});
|
209
|
+
}
|
210
|
+
}
|
211
|
+
|
212
|
+
/**
|
213
|
+
* Set the focus to the active editor's `TEXTAREA` element after the provided delay. If no delay is provided, it
|
214
|
+
* will be taken from the manager's configuration.
|
215
|
+
*
|
216
|
+
* @param {number} delay Delay in milliseconds.
|
217
|
+
*/
|
218
|
+
refocusToEditorTextarea() {
|
219
|
+
let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _classPrivateFieldGet(this, _refocusDelay);
|
220
|
+
const refocusElement = this.getRefocusElement();
|
221
|
+
|
222
|
+
// Re-focus on the editor's `TEXTAREA` element (or a predefined element) if the `imeFastEdit` option is enabled.
|
223
|
+
if (_classPrivateFieldGet(this, _hot).getSettings().imeFastEdit && !!refocusElement) {
|
224
|
+
_classPrivateFieldGet(this, _hot)._registerTimeout(() => {
|
225
|
+
refocusElement.select();
|
226
|
+
}, delay);
|
227
|
+
}
|
228
|
+
}
|
229
|
+
}
|
230
|
+
exports.FocusManager = FocusManager;
|
231
|
+
function _getCurrentHighlightCoords2() {
|
232
|
+
const lastSelectedRange = _classPrivateFieldGet(this, _hot).getSelectedRangeLast();
|
233
|
+
return lastSelectedRange.highlight;
|
234
|
+
}
|
235
|
+
function _getSelectedCell2() {
|
236
|
+
const selectedCellCoords = _classPrivateMethodGet(this, _getCurrentHighlightCoords, _getCurrentHighlightCoords2).call(this);
|
237
|
+
return _classPrivateFieldGet(this, _hot).getCell(selectedCellCoords.row, selectedCellCoords.col, true);
|
238
|
+
}
|
239
|
+
function _manageFocus2() {
|
240
|
+
const selectedCell = _classPrivateMethodGet(this, _getSelectedCell, _getSelectedCell2).call(this);
|
241
|
+
const {
|
242
|
+
activeElement
|
243
|
+
} = _classPrivateFieldGet(this, _hot).rootDocument;
|
244
|
+
|
245
|
+
// Blurring the `activeElement` removes the unwanted border around the focusable element (#6877)
|
246
|
+
// and resets the `document.activeElement` property. The blurring should happen only when the
|
247
|
+
// previously selected input element has not belonged to the Handsontable editor. If blurring is
|
248
|
+
// triggered for all elements, there is a problem with the disappearing IME editor (#9672).
|
249
|
+
if (activeElement && (0, _element.isOutsideInput)(activeElement)) {
|
250
|
+
activeElement.blur();
|
251
|
+
}
|
252
|
+
this.focusOnHighlightedCell(selectedCell);
|
253
|
+
if (this.getFocusMode() === FOCUS_MODES.MIXED && selectedCell.nodeName === 'TD') {
|
254
|
+
_classPrivateFieldGet(this, _hot).addHookOnce('afterSelectionEnd', () => {
|
255
|
+
this.refocusToEditorTextarea();
|
256
|
+
});
|
257
|
+
}
|
258
|
+
}
|
259
|
+
function _onUpdateSettings2(newSettings) {
|
260
|
+
if (newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.MIXED) {
|
261
|
+
this.setFocusMode(FOCUS_MODES.MIXED);
|
262
|
+
} else if (!newSettings.imeFastEdit && this.getFocusMode() !== FOCUS_MODES.CELL) {
|
263
|
+
this.setFocusMode(FOCUS_MODES.CELL);
|
264
|
+
}
|
265
|
+
}
|