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
@@ -5,11 +5,12 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
5
5
|
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
6
6
|
import { HandsontableEditor } from "../handsontableEditor/index.mjs";
|
7
7
|
import { arrayMap, pivot } from "../../helpers/array.mjs";
|
8
|
-
import { addClass, getCaretPosition, getScrollbarWidth, getSelectionEndPosition, getTrimmingContainer, offset, outerHeight, outerWidth, setCaretPosition } from "../../helpers/dom/element.mjs";
|
8
|
+
import { addClass, getCaretPosition, getScrollbarWidth, getSelectionEndPosition, getTrimmingContainer, offset, outerHeight, outerWidth, setAttribute, setCaretPosition } from "../../helpers/dom/element.mjs";
|
9
9
|
import { isDefined, stringify } from "../../helpers/mixed.mjs";
|
10
10
|
import { stripTags } from "../../helpers/string.mjs";
|
11
11
|
import { KEY_CODES, isPrintableChar } from "../../helpers/unicode.mjs";
|
12
12
|
import { textRenderer } from "../../renderers/textRenderer/index.mjs";
|
13
|
+
import { A11Y_ACTIVEDESCENDANT, A11Y_AUTOCOMPLETE, A11Y_COMBOBOX, A11Y_CONTROLS, A11Y_EXPANDED, A11Y_HASPOPUP, A11Y_LISTBOX, A11Y_LIVE, A11Y_OPTION, A11Y_POSINSET, A11Y_PRESENTATION, A11Y_RELEVANT, A11Y_SELECTED, A11Y_SETSIZE, A11Y_TEXT } from "../../helpers/a11y.mjs";
|
13
14
|
const privatePool = new WeakMap();
|
14
15
|
export const EDITOR_TYPE = 'autocomplete';
|
15
16
|
|
@@ -109,7 +110,8 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
109
110
|
this.rawChoices = [];
|
110
111
|
privatePool.set(this, {
|
111
112
|
skipOne: false,
|
112
|
-
isMacOS: this.hot.rootWindow.navigator.platform.indexOf('Mac') > -1
|
113
|
+
isMacOS: this.hot.rootWindow.navigator.platform.indexOf('Mac') > -1,
|
114
|
+
idPrefix: instance.guid.slice(0, 9)
|
113
115
|
});
|
114
116
|
}
|
115
117
|
|
@@ -136,6 +138,27 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
136
138
|
super.createElements();
|
137
139
|
addClass(this.htContainer, 'autocompleteEditor');
|
138
140
|
addClass(this.htContainer, this.hot.rootWindow.navigator.platform.indexOf('Mac') === -1 ? '' : 'htMacScroll');
|
141
|
+
if (this.hot.getSettings().ariaTags) {
|
142
|
+
setAttribute(this.TEXTAREA, [A11Y_TEXT(), A11Y_COMBOBOX(), A11Y_HASPOPUP('listbox'), A11Y_AUTOCOMPLETE()]);
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
/**
|
147
|
+
* Prepares editor's metadata and configuration of the internal Handsontable's instance.
|
148
|
+
*
|
149
|
+
* @param {number} row The visual row index.
|
150
|
+
* @param {number} col The visual column index.
|
151
|
+
* @param {number|string} prop The column property (passed when datasource is an array of objects).
|
152
|
+
* @param {HTMLTableCellElement} td The rendered cell element.
|
153
|
+
* @param {*} value The rendered value.
|
154
|
+
* @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
|
155
|
+
*/
|
156
|
+
prepare(row, col, prop, td, value, cellProperties) {
|
157
|
+
const priv = privatePool.get(this);
|
158
|
+
super.prepare(row, col, prop, td, value, cellProperties);
|
159
|
+
if (this.hot.getSettings().ariaTags) {
|
160
|
+
setAttribute(this.TEXTAREA, [A11Y_EXPANDED('false'), A11Y_CONTROLS(`${priv.idPrefix}-listbox-${row}-${col}`)]);
|
161
|
+
}
|
139
162
|
}
|
140
163
|
|
141
164
|
/**
|
@@ -144,8 +167,14 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
144
167
|
open() {
|
145
168
|
const priv = privatePool.get(this);
|
146
169
|
super.open();
|
147
|
-
const choicesListHot = this.htEditor.getInstance();
|
148
170
|
const trimDropdown = this.cellProperties.trimDropdown === void 0 ? true : this.cellProperties.trimDropdown;
|
171
|
+
const rootInstanceAriaTagsEnabled = this.hot.getSettings().ariaTags;
|
172
|
+
const sourceArray = Array.isArray(this.cellProperties.source) ? this.cellProperties.source : null;
|
173
|
+
const sourceSize = sourceArray === null || sourceArray === void 0 ? void 0 : sourceArray.length;
|
174
|
+
const {
|
175
|
+
row: rowIndex,
|
176
|
+
col: colIndex
|
177
|
+
} = this;
|
149
178
|
this.showEditableElement();
|
150
179
|
this.focus();
|
151
180
|
let scrollbarWidth = getScrollbarWidth();
|
@@ -154,9 +183,10 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
154
183
|
}
|
155
184
|
|
156
185
|
this.addHook('beforeKeyDown', event => this.onBeforeKeyDown(event));
|
157
|
-
|
186
|
+
this.htEditor.updateSettings({
|
158
187
|
colWidths: trimDropdown ? [outerWidth(this.TEXTAREA) - 2] : void 0,
|
159
188
|
width: trimDropdown ? outerWidth(this.TEXTAREA) + scrollbarWidth : void 0,
|
189
|
+
autoColumnSize: true,
|
160
190
|
renderer: (instance, TD, row, col, prop, value, cellProperties) => {
|
161
191
|
textRenderer(instance, TD, row, col, prop, value, cellProperties);
|
162
192
|
const {
|
@@ -175,10 +205,27 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
175
205
|
cellValue = cellValue.replace(match, `<strong>${match}</strong>`);
|
176
206
|
}
|
177
207
|
}
|
208
|
+
if (rootInstanceAriaTagsEnabled) {
|
209
|
+
setAttribute(TD, [A11Y_OPTION(),
|
210
|
+
// Add `setsize` and `posinset` only if the source is an array.
|
211
|
+
...(sourceArray ? [A11Y_SETSIZE(sourceSize)] : []), ...(sourceArray ? [A11Y_POSINSET(sourceArray.indexOf(value) + 1)] : []), ['id', `${this.htEditor.rootElement.id}_${row}-${col}`]]);
|
212
|
+
}
|
178
213
|
TD.innerHTML = cellValue;
|
179
214
|
},
|
180
|
-
|
215
|
+
afterSelection: (startRow, startCol) => {
|
216
|
+
if (rootInstanceAriaTagsEnabled) {
|
217
|
+
const TD = this.htEditor.getCell(startRow, startCol, true);
|
218
|
+
setAttribute(TD, [A11Y_SELECTED()]);
|
219
|
+
setAttribute(this.TEXTAREA, ...A11Y_ACTIVEDESCENDANT(TD.id));
|
220
|
+
}
|
221
|
+
}
|
181
222
|
});
|
223
|
+
if (rootInstanceAriaTagsEnabled) {
|
224
|
+
// Add `role=presentation` to the main table to prevent the readers from treating the option list as a table.
|
225
|
+
setAttribute(this.htEditor.view._wt.wtOverlays.wtTable.TABLE, ...A11Y_PRESENTATION());
|
226
|
+
setAttribute(this.htEditor.rootElement, [A11Y_LISTBOX(), A11Y_LIVE('polite'), A11Y_RELEVANT('text'), ['id', `${priv.idPrefix}-listbox-${rowIndex}-${colIndex}`]]);
|
227
|
+
setAttribute(this.TEXTAREA, ...A11Y_EXPANDED('true'));
|
228
|
+
}
|
182
229
|
if (priv.skipOne) {
|
183
230
|
priv.skipOne = false;
|
184
231
|
}
|
@@ -193,6 +240,9 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
193
240
|
close() {
|
194
241
|
this.removeHooksByKey('beforeKeyDown');
|
195
242
|
super.close();
|
243
|
+
if (this.hot.getSettings().ariaTags) {
|
244
|
+
setAttribute(this.TEXTAREA, [A11Y_EXPANDED('false')]);
|
245
|
+
}
|
196
246
|
}
|
197
247
|
|
198
248
|
/**
|
@@ -267,10 +317,15 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
267
317
|
}
|
268
318
|
this.strippedChoices = choices;
|
269
319
|
this.htEditor.loadData(pivot([choices]));
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
this.
|
320
|
+
if (choices.length === 0) {
|
321
|
+
this.htEditor.rootElement.style.display = 'none';
|
322
|
+
} else {
|
323
|
+
this.htEditor.rootElement.style.display = '';
|
324
|
+
this.updateDropdownHeight();
|
325
|
+
this.flipDropdownIfNeeded();
|
326
|
+
if (this.cellProperties.strict === true) {
|
327
|
+
this.highlightBestMatchingChoice(highlightIndex);
|
328
|
+
}
|
274
329
|
}
|
275
330
|
this.hot.listen();
|
276
331
|
setCaretPosition(this.TEXTAREA, pos, pos === endPos ? void 0 : endPos);
|
@@ -407,7 +462,7 @@ export class AutocompleteEditor extends HandsontableEditor {
|
|
407
462
|
* @returns {number}
|
408
463
|
*/
|
409
464
|
getDropdownHeight() {
|
410
|
-
const firstRowHeight = this.htEditor.
|
465
|
+
const firstRowHeight = this.htEditor.getRowHeight(0) || 23;
|
411
466
|
const visibleRows = this.cellProperties.visibleRows;
|
412
467
|
return this.strippedChoices.length >= visibleRows ? visibleRows * firstRowHeight : this.strippedChoices.length * firstRowHeight + 8; // eslint-disable-line max-len
|
413
468
|
}
|
@@ -8,9 +8,8 @@ var _editorManager = require("../../editorManager");
|
|
8
8
|
var _hooksRefRegisterer = _interopRequireDefault(require("../../mixins/hooksRefRegisterer"));
|
9
9
|
var _element = require("../../helpers/dom/element");
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
|
-
const EDITOR_TYPE = 'base';
|
12
|
-
exports.
|
13
|
-
const EDITOR_STATE = Object.freeze({
|
11
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'base';
|
12
|
+
const EDITOR_STATE = exports.EDITOR_STATE = Object.freeze({
|
14
13
|
VIRGIN: 'STATE_VIRGIN',
|
15
14
|
// before editing
|
16
15
|
EDITING: 'STATE_EDITING',
|
@@ -18,13 +17,11 @@ const EDITOR_STATE = Object.freeze({
|
|
18
17
|
// waiting for async validation
|
19
18
|
FINISHED: 'STATE_FINISHED'
|
20
19
|
});
|
21
|
-
exports.
|
22
|
-
const SHORTCUTS_GROUP_EDITOR = 'baseEditor';
|
20
|
+
const SHORTCUTS_GROUP_EDITOR = exports.SHORTCUTS_GROUP_EDITOR = 'baseEditor';
|
23
21
|
|
24
22
|
/**
|
25
23
|
* @class BaseEditor
|
26
24
|
*/
|
27
|
-
exports.SHORTCUTS_GROUP_EDITOR = SHORTCUTS_GROUP_EDITOR;
|
28
25
|
class BaseEditor {
|
29
26
|
static get EDITOR_TYPE() {
|
30
27
|
return EDITOR_TYPE;
|
@@ -492,21 +489,30 @@ class BaseEditor {
|
|
492
489
|
const horizontalScrollPosition = Math.abs(wtOverlays.inlineStartOverlay.getScrollPosition());
|
493
490
|
const verticalScrollPosition = wtOverlays.topOverlay.getScrollPosition();
|
494
491
|
const scrollbarWidth = (0, _element.getScrollbarWidth)(this.hot.rootDocument);
|
495
|
-
|
496
|
-
|
492
|
+
let cellTopOffset = TD.offsetTop;
|
493
|
+
if (['inline_start', 'master'].includes(overlayName)) {
|
494
|
+
cellTopOffset += firstRowOffset - verticalScrollPosition;
|
495
|
+
}
|
496
|
+
if (['bottom', 'bottom_inline_start_corner'].includes(overlayName)) {
|
497
|
+
const {
|
498
|
+
wtViewport: bottomWtViewport,
|
499
|
+
wtTable: bottomWtTable
|
500
|
+
} = wtOverlays.bottomOverlay.clone;
|
501
|
+
cellTopOffset += bottomWtViewport.getWorkspaceHeight() - bottomWtTable.getHeight() - scrollbarWidth;
|
502
|
+
}
|
503
|
+
let cellStartOffset = TD.offsetLeft;
|
497
504
|
if (this.hot.isRtl()) {
|
498
|
-
|
499
|
-
if (cellOffset >= 0) {
|
505
|
+
if (cellStartOffset >= 0) {
|
500
506
|
cellStartOffset = overlayTable.getWidth() - TD.offsetLeft;
|
501
507
|
} else {
|
502
508
|
// The `offsetLeft` returns negative values when the parent offset element has position relative
|
503
509
|
// (it happens when on the cell the selection is applied - the `area` CSS class).
|
504
510
|
// When it happens the `offsetLeft` value is calculated from the right edge of the parent element.
|
505
|
-
cellStartOffset = Math.abs(
|
511
|
+
cellStartOffset = Math.abs(cellStartOffset);
|
506
512
|
}
|
507
513
|
cellStartOffset += firstColumnOffset - horizontalScrollPosition - cellWidth;
|
508
|
-
} else {
|
509
|
-
cellStartOffset
|
514
|
+
} else if (['top', 'master', 'bottom'].includes(overlayName)) {
|
515
|
+
cellStartOffset += firstColumnOffset - horizontalScrollPosition;
|
510
516
|
}
|
511
517
|
const cellComputedStyle = (0, _element.getComputedStyle)(this.TD, this.hot.rootWindow);
|
512
518
|
const borderPhysicalWidthProp = this.hot.isRtl() ? 'borderRightWidth' : 'borderLeftWidth';
|
@@ -485,21 +485,30 @@ export class BaseEditor {
|
|
485
485
|
const horizontalScrollPosition = Math.abs(wtOverlays.inlineStartOverlay.getScrollPosition());
|
486
486
|
const verticalScrollPosition = wtOverlays.topOverlay.getScrollPosition();
|
487
487
|
const scrollbarWidth = getScrollbarWidth(this.hot.rootDocument);
|
488
|
-
|
489
|
-
|
488
|
+
let cellTopOffset = TD.offsetTop;
|
489
|
+
if (['inline_start', 'master'].includes(overlayName)) {
|
490
|
+
cellTopOffset += firstRowOffset - verticalScrollPosition;
|
491
|
+
}
|
492
|
+
if (['bottom', 'bottom_inline_start_corner'].includes(overlayName)) {
|
493
|
+
const {
|
494
|
+
wtViewport: bottomWtViewport,
|
495
|
+
wtTable: bottomWtTable
|
496
|
+
} = wtOverlays.bottomOverlay.clone;
|
497
|
+
cellTopOffset += bottomWtViewport.getWorkspaceHeight() - bottomWtTable.getHeight() - scrollbarWidth;
|
498
|
+
}
|
499
|
+
let cellStartOffset = TD.offsetLeft;
|
490
500
|
if (this.hot.isRtl()) {
|
491
|
-
|
492
|
-
if (cellOffset >= 0) {
|
501
|
+
if (cellStartOffset >= 0) {
|
493
502
|
cellStartOffset = overlayTable.getWidth() - TD.offsetLeft;
|
494
503
|
} else {
|
495
504
|
// The `offsetLeft` returns negative values when the parent offset element has position relative
|
496
505
|
// (it happens when on the cell the selection is applied - the `area` CSS class).
|
497
506
|
// When it happens the `offsetLeft` value is calculated from the right edge of the parent element.
|
498
|
-
cellStartOffset = Math.abs(
|
507
|
+
cellStartOffset = Math.abs(cellStartOffset);
|
499
508
|
}
|
500
509
|
cellStartOffset += firstColumnOffset - horizontalScrollPosition - cellWidth;
|
501
|
-
} else {
|
502
|
-
cellStartOffset
|
510
|
+
} else if (['top', 'master', 'bottom'].includes(overlayName)) {
|
511
|
+
cellStartOffset += firstColumnOffset - horizontalScrollPosition;
|
503
512
|
}
|
504
513
|
const cellComputedStyle = getComputedStyle(this.TD, this.hot.rootWindow);
|
505
514
|
const borderPhysicalWidthProp = this.hot.isRtl() ? 'borderRightWidth' : 'borderLeftWidth';
|
@@ -3,13 +3,12 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _baseEditor = require("../baseEditor");
|
5
5
|
var _element = require("../../helpers/dom/element");
|
6
|
-
const EDITOR_TYPE = 'checkbox';
|
6
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'checkbox';
|
7
7
|
|
8
8
|
/**
|
9
9
|
* @private
|
10
10
|
* @class CheckboxEditor
|
11
11
|
*/
|
12
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
13
12
|
class CheckboxEditor extends _baseEditor.BaseEditor {
|
14
13
|
static get EDITOR_TYPE() {
|
15
14
|
return EDITOR_TYPE;
|
@@ -7,11 +7,11 @@ var _pikaday = _interopRequireDefault(require("pikaday"));
|
|
7
7
|
var _textEditor = require("../textEditor");
|
8
8
|
var _eventManager = _interopRequireDefault(require("../../eventManager"));
|
9
9
|
var _element = require("../../helpers/dom/element");
|
10
|
+
var _a11y = require("../../helpers/a11y");
|
10
11
|
var _object = require("../../helpers/object");
|
11
12
|
var _unicode = require("../../helpers/unicode");
|
12
13
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
-
const EDITOR_TYPE = 'date';
|
14
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
14
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'date';
|
15
15
|
const SHORTCUTS_GROUP_EDITOR = 'dateEditor';
|
16
16
|
|
17
17
|
/**
|
@@ -44,7 +44,7 @@ class DateEditor extends _textEditor.TextEditor {
|
|
44
44
|
throw new Error('You need to include Pikaday to your project.');
|
45
45
|
}
|
46
46
|
super.init();
|
47
|
-
this.
|
47
|
+
this.hot.addHook('afterDestroy', () => {
|
48
48
|
this.parentDestroyed = true;
|
49
49
|
this.destroyElements();
|
50
50
|
});
|
@@ -69,7 +69,21 @@ class DateEditor extends _textEditor.TextEditor {
|
|
69
69
|
/**
|
70
70
|
* Prevent recognizing clicking on datepicker as clicking outside of table.
|
71
71
|
*/
|
72
|
-
eventManager.addEventListener(this.datePicker, 'mousedown', event =>
|
72
|
+
eventManager.addEventListener(this.datePicker, 'mousedown', event => {
|
73
|
+
if ((0, _element.hasClass)(event.target, 'pika-day')) {
|
74
|
+
this.hideDatepicker();
|
75
|
+
}
|
76
|
+
event.stopPropagation();
|
77
|
+
});
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Prevent caret movement in the TEXTAREA when navigating over the date picker.
|
81
|
+
*/
|
82
|
+
eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
|
83
|
+
if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
|
84
|
+
event.preventDefault();
|
85
|
+
}
|
86
|
+
});
|
73
87
|
}
|
74
88
|
|
75
89
|
/**
|
@@ -110,6 +124,9 @@ class DateEditor extends _textEditor.TextEditor {
|
|
110
124
|
const editorContext = shortcutManager.getContext('editor');
|
111
125
|
super.open();
|
112
126
|
this.showDatepicker(event);
|
127
|
+
if (this.hot.getSettings().ariaTags) {
|
128
|
+
(0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
|
129
|
+
}
|
113
130
|
editorContext.addShortcut({
|
114
131
|
keys: [['Enter']],
|
115
132
|
callback: keyboardEvent => {
|
@@ -132,9 +149,12 @@ class DateEditor extends _textEditor.TextEditor {
|
|
132
149
|
if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
|
133
150
|
this.$datePicker.destroy();
|
134
151
|
}
|
135
|
-
this.
|
136
|
-
this.
|
152
|
+
this.hot._registerTimeout(() => {
|
153
|
+
this.hot._refreshBorders();
|
137
154
|
});
|
155
|
+
if (this.TD && this.hot.getSettings().ariaTags) {
|
156
|
+
(0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
|
157
|
+
}
|
138
158
|
const shortcutManager = this.hot.getShortcutManager();
|
139
159
|
const editorContext = shortcutManager.getContext('editor');
|
140
160
|
editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
|
@@ -152,7 +172,6 @@ class DateEditor extends _textEditor.TextEditor {
|
|
152
172
|
let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
153
173
|
if (restoreOriginalValue) {
|
154
174
|
// pressed ESC, restore original value
|
155
|
-
// var value = this.instance.getDataAtCell(this.row, this.col);
|
156
175
|
const value = this.originalValue;
|
157
176
|
if (value !== void 0) {
|
158
177
|
this.setValue(value);
|
@@ -169,7 +188,7 @@ class DateEditor extends _textEditor.TextEditor {
|
|
169
188
|
showDatepicker(event) {
|
170
189
|
const offset = this.TD.getBoundingClientRect();
|
171
190
|
const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
|
172
|
-
const isMouseDown = this.
|
191
|
+
const isMouseDown = this.hot.view.isMouseDown();
|
173
192
|
const isMeta = event ? (0, _unicode.isFunctionKey)(event.keyCode) : false;
|
174
193
|
let dateStr;
|
175
194
|
this.datePicker.style.display = 'block';
|
@@ -248,7 +267,6 @@ class DateEditor extends _textEditor.TextEditor {
|
|
248
267
|
dateStr = (0, _moment.default)(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
|
249
268
|
}
|
250
269
|
this.setValue(dateStr);
|
251
|
-
this.hideDatepicker();
|
252
270
|
if (origOnSelect) {
|
253
271
|
origOnSelect();
|
254
272
|
}
|
@@ -3,7 +3,8 @@ import moment from 'moment';
|
|
3
3
|
import Pikaday from 'pikaday';
|
4
4
|
import { TextEditor } from "../textEditor/index.mjs";
|
5
5
|
import EventManager from "../../eventManager.mjs";
|
6
|
-
import { addClass, outerHeight, outerWidth } from "../../helpers/dom/element.mjs";
|
6
|
+
import { addClass, hasClass, outerHeight, outerWidth, setAttribute } from "../../helpers/dom/element.mjs";
|
7
|
+
import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
|
7
8
|
import { deepExtend } from "../../helpers/object.mjs";
|
8
9
|
import { isFunctionKey } from "../../helpers/unicode.mjs";
|
9
10
|
export const EDITOR_TYPE = 'date';
|
@@ -39,7 +40,7 @@ export class DateEditor extends TextEditor {
|
|
39
40
|
throw new Error('You need to include Pikaday to your project.');
|
40
41
|
}
|
41
42
|
super.init();
|
42
|
-
this.
|
43
|
+
this.hot.addHook('afterDestroy', () => {
|
43
44
|
this.parentDestroyed = true;
|
44
45
|
this.destroyElements();
|
45
46
|
});
|
@@ -64,7 +65,21 @@ export class DateEditor extends TextEditor {
|
|
64
65
|
/**
|
65
66
|
* Prevent recognizing clicking on datepicker as clicking outside of table.
|
66
67
|
*/
|
67
|
-
eventManager.addEventListener(this.datePicker, 'mousedown', event =>
|
68
|
+
eventManager.addEventListener(this.datePicker, 'mousedown', event => {
|
69
|
+
if (hasClass(event.target, 'pika-day')) {
|
70
|
+
this.hideDatepicker();
|
71
|
+
}
|
72
|
+
event.stopPropagation();
|
73
|
+
});
|
74
|
+
|
75
|
+
/**
|
76
|
+
* Prevent caret movement in the TEXTAREA when navigating over the date picker.
|
77
|
+
*/
|
78
|
+
eventManager.addEventListener(this.TEXTAREA, 'keydown', event => {
|
79
|
+
if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.code)) {
|
80
|
+
event.preventDefault();
|
81
|
+
}
|
82
|
+
});
|
68
83
|
}
|
69
84
|
|
70
85
|
/**
|
@@ -105,6 +120,9 @@ export class DateEditor extends TextEditor {
|
|
105
120
|
const editorContext = shortcutManager.getContext('editor');
|
106
121
|
super.open();
|
107
122
|
this.showDatepicker(event);
|
123
|
+
if (this.hot.getSettings().ariaTags) {
|
124
|
+
setAttribute(this.TD, [A11Y_EXPANDED('true')]);
|
125
|
+
}
|
108
126
|
editorContext.addShortcut({
|
109
127
|
keys: [['Enter']],
|
110
128
|
callback: keyboardEvent => {
|
@@ -127,9 +145,12 @@ export class DateEditor extends TextEditor {
|
|
127
145
|
if ((_this$$datePicker = this.$datePicker) !== null && _this$$datePicker !== void 0 && _this$$datePicker.destroy) {
|
128
146
|
this.$datePicker.destroy();
|
129
147
|
}
|
130
|
-
this.
|
131
|
-
this.
|
148
|
+
this.hot._registerTimeout(() => {
|
149
|
+
this.hot._refreshBorders();
|
132
150
|
});
|
151
|
+
if (this.TD && this.hot.getSettings().ariaTags) {
|
152
|
+
setAttribute(this.TD, [A11Y_EXPANDED('false')]);
|
153
|
+
}
|
133
154
|
const shortcutManager = this.hot.getShortcutManager();
|
134
155
|
const editorContext = shortcutManager.getContext('editor');
|
135
156
|
editorContext.removeShortcutsByGroup(SHORTCUTS_GROUP_EDITOR);
|
@@ -147,7 +168,6 @@ export class DateEditor extends TextEditor {
|
|
147
168
|
let ctrlDown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
148
169
|
if (restoreOriginalValue) {
|
149
170
|
// pressed ESC, restore original value
|
150
|
-
// var value = this.instance.getDataAtCell(this.row, this.col);
|
151
171
|
const value = this.originalValue;
|
152
172
|
if (value !== void 0) {
|
153
173
|
this.setValue(value);
|
@@ -164,7 +184,7 @@ export class DateEditor extends TextEditor {
|
|
164
184
|
showDatepicker(event) {
|
165
185
|
const offset = this.TD.getBoundingClientRect();
|
166
186
|
const dateFormat = this.cellProperties.dateFormat || this.defaultDateFormat;
|
167
|
-
const isMouseDown = this.
|
187
|
+
const isMouseDown = this.hot.view.isMouseDown();
|
168
188
|
const isMeta = event ? isFunctionKey(event.keyCode) : false;
|
169
189
|
let dateStr;
|
170
190
|
this.datePicker.style.display = 'block';
|
@@ -243,7 +263,6 @@ export class DateEditor extends TextEditor {
|
|
243
263
|
dateStr = moment(dateStr).format(this.cellProperties.dateFormat || this.defaultDateFormat);
|
244
264
|
}
|
245
265
|
this.setValue(dateStr);
|
246
|
-
this.hideDatepicker();
|
247
266
|
if (origOnSelect) {
|
248
267
|
origOnSelect();
|
249
268
|
}
|
@@ -4,13 +4,12 @@ exports.__esModule = true;
|
|
4
4
|
var _autocompleteEditor = require("../autocompleteEditor");
|
5
5
|
var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
|
6
6
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
7
|
-
const EDITOR_TYPE = 'dropdown';
|
7
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'dropdown';
|
8
8
|
|
9
9
|
/**
|
10
10
|
* @private
|
11
11
|
* @class DropdownEditor
|
12
12
|
*/
|
13
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
14
13
|
class DropdownEditor extends _autocompleteEditor.AutocompleteEditor {
|
15
14
|
static get EDITOR_TYPE() {
|
16
15
|
return EDITOR_TYPE;
|
@@ -6,14 +6,14 @@ var _element = require("../../helpers/dom/element");
|
|
6
6
|
var _event = require("../../helpers/dom/event");
|
7
7
|
var _object = require("../../helpers/object");
|
8
8
|
var _editorManager = require("../../editorManager");
|
9
|
+
var _a11y = require("../../helpers/a11y");
|
9
10
|
const SHORTCUTS_GROUP = 'handsontableEditor';
|
10
|
-
const EDITOR_TYPE = 'handsontable';
|
11
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'handsontable';
|
11
12
|
|
12
13
|
/**
|
13
14
|
* @private
|
14
15
|
* @class HandsontableEditor
|
15
16
|
*/
|
16
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
17
17
|
class HandsontableEditor extends _textEditor.TextEditor {
|
18
18
|
static get EDITOR_TYPE() {
|
19
19
|
return EDITOR_TYPE;
|
@@ -42,6 +42,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
42
42
|
}
|
43
43
|
(0, _element.setCaretPosition)(this.TEXTAREA, 0, this.TEXTAREA.value.length);
|
44
44
|
this.refreshDimensions();
|
45
|
+
if (this.hot.getSettings().ariaTags) {
|
46
|
+
(0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('true')]);
|
47
|
+
}
|
45
48
|
}
|
46
49
|
|
47
50
|
/**
|
@@ -53,6 +56,9 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
53
56
|
}
|
54
57
|
this.removeHooksByKey('beforeKeyDown');
|
55
58
|
super.close();
|
59
|
+
if (this.hot.getSettings().ariaTags) {
|
60
|
+
(0, _element.setAttribute)(this.TD, [(0, _a11y.A11Y_EXPANDED)('false')]);
|
61
|
+
}
|
56
62
|
}
|
57
63
|
|
58
64
|
/**
|
@@ -81,6 +87,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
81
87
|
fillHandle: false,
|
82
88
|
autoWrapCol: false,
|
83
89
|
autoWrapRow: false,
|
90
|
+
ariaTags: false,
|
84
91
|
afterOnCellMouseDown(_, coords) {
|
85
92
|
const sourceValue = this.getSourceData(coords.row, coords.col);
|
86
93
|
|
@@ -139,7 +146,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
139
146
|
}
|
140
147
|
|
141
148
|
if (this.htEditor && this.htEditor.getSelectedLast()) {
|
142
|
-
const value = this.htEditor.
|
149
|
+
const value = this.htEditor.getValue();
|
143
150
|
if (value !== void 0) {
|
144
151
|
// if the value is undefined then it means we don't want to set the value
|
145
152
|
this.setValue(value);
|
@@ -149,7 +156,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
149
156
|
}
|
150
157
|
|
151
158
|
/**
|
152
|
-
*
|
159
|
+
* Assigns afterDestroy callback to prevent memory leaks.
|
153
160
|
*
|
154
161
|
* @private
|
155
162
|
*/
|
@@ -176,7 +183,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
176
183
|
position: 'before'
|
177
184
|
};
|
178
185
|
const action = (rowToSelect, event) => {
|
179
|
-
const innerHOT = this.htEditor
|
186
|
+
const innerHOT = this.htEditor;
|
180
187
|
if (rowToSelect !== void 0) {
|
181
188
|
if (rowToSelect < 0 || innerHOT.flipped && rowToSelect > innerHOT.countRows() - 1) {
|
182
189
|
innerHOT.deselectCell();
|
@@ -195,7 +202,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
195
202
|
editorContext.addShortcuts([{
|
196
203
|
keys: [['ArrowUp']],
|
197
204
|
callback: event => {
|
198
|
-
const innerHOT = this.htEditor
|
205
|
+
const innerHOT = this.htEditor;
|
199
206
|
let rowToSelect;
|
200
207
|
let selectedRow;
|
201
208
|
if (!innerHOT.getSelectedLast() && innerHOT.flipped) {
|
@@ -215,7 +222,7 @@ class HandsontableEditor extends _textEditor.TextEditor {
|
|
215
222
|
}, {
|
216
223
|
keys: [['ArrowDown']],
|
217
224
|
callback: event => {
|
218
|
-
const innerHOT = this.htEditor
|
225
|
+
const innerHOT = this.htEditor;
|
219
226
|
let rowToSelect;
|
220
227
|
let selectedRow;
|
221
228
|
if (!innerHOT.getSelectedLast() && !innerHOT.flipped) {
|
@@ -1,8 +1,9 @@
|
|
1
1
|
import { TextEditor } from "../textEditor/index.mjs";
|
2
|
-
import { setCaretPosition } from "../../helpers/dom/element.mjs";
|
2
|
+
import { setAttribute, setCaretPosition } from "../../helpers/dom/element.mjs";
|
3
3
|
import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
|
4
4
|
import { extend } from "../../helpers/object.mjs";
|
5
5
|
import { SHORTCUTS_GROUP_NAVIGATION } from "../../editorManager.mjs";
|
6
|
+
import { A11Y_EXPANDED } from "../../helpers/a11y.mjs";
|
6
7
|
const SHORTCUTS_GROUP = 'handsontableEditor';
|
7
8
|
export const EDITOR_TYPE = 'handsontable';
|
8
9
|
|
@@ -38,6 +39,9 @@ export class HandsontableEditor extends TextEditor {
|
|
38
39
|
}
|
39
40
|
setCaretPosition(this.TEXTAREA, 0, this.TEXTAREA.value.length);
|
40
41
|
this.refreshDimensions();
|
42
|
+
if (this.hot.getSettings().ariaTags) {
|
43
|
+
setAttribute(this.TD, [A11Y_EXPANDED('true')]);
|
44
|
+
}
|
41
45
|
}
|
42
46
|
|
43
47
|
/**
|
@@ -49,6 +53,9 @@ export class HandsontableEditor extends TextEditor {
|
|
49
53
|
}
|
50
54
|
this.removeHooksByKey('beforeKeyDown');
|
51
55
|
super.close();
|
56
|
+
if (this.hot.getSettings().ariaTags) {
|
57
|
+
setAttribute(this.TD, [A11Y_EXPANDED('false')]);
|
58
|
+
}
|
52
59
|
}
|
53
60
|
|
54
61
|
/**
|
@@ -77,6 +84,7 @@ export class HandsontableEditor extends TextEditor {
|
|
77
84
|
fillHandle: false,
|
78
85
|
autoWrapCol: false,
|
79
86
|
autoWrapRow: false,
|
87
|
+
ariaTags: false,
|
80
88
|
afterOnCellMouseDown(_, coords) {
|
81
89
|
const sourceValue = this.getSourceData(coords.row, coords.col);
|
82
90
|
|
@@ -135,7 +143,7 @@ export class HandsontableEditor extends TextEditor {
|
|
135
143
|
}
|
136
144
|
|
137
145
|
if (this.htEditor && this.htEditor.getSelectedLast()) {
|
138
|
-
const value = this.htEditor.
|
146
|
+
const value = this.htEditor.getValue();
|
139
147
|
if (value !== void 0) {
|
140
148
|
// if the value is undefined then it means we don't want to set the value
|
141
149
|
this.setValue(value);
|
@@ -145,7 +153,7 @@ export class HandsontableEditor extends TextEditor {
|
|
145
153
|
}
|
146
154
|
|
147
155
|
/**
|
148
|
-
*
|
156
|
+
* Assigns afterDestroy callback to prevent memory leaks.
|
149
157
|
*
|
150
158
|
* @private
|
151
159
|
*/
|
@@ -172,7 +180,7 @@ export class HandsontableEditor extends TextEditor {
|
|
172
180
|
position: 'before'
|
173
181
|
};
|
174
182
|
const action = (rowToSelect, event) => {
|
175
|
-
const innerHOT = this.htEditor
|
183
|
+
const innerHOT = this.htEditor;
|
176
184
|
if (rowToSelect !== void 0) {
|
177
185
|
if (rowToSelect < 0 || innerHOT.flipped && rowToSelect > innerHOT.countRows() - 1) {
|
178
186
|
innerHOT.deselectCell();
|
@@ -191,7 +199,7 @@ export class HandsontableEditor extends TextEditor {
|
|
191
199
|
editorContext.addShortcuts([{
|
192
200
|
keys: [['ArrowUp']],
|
193
201
|
callback: event => {
|
194
|
-
const innerHOT = this.htEditor
|
202
|
+
const innerHOT = this.htEditor;
|
195
203
|
let rowToSelect;
|
196
204
|
let selectedRow;
|
197
205
|
if (!innerHOT.getSelectedLast() && innerHOT.flipped) {
|
@@ -211,7 +219,7 @@ export class HandsontableEditor extends TextEditor {
|
|
211
219
|
}, {
|
212
220
|
keys: [['ArrowDown']],
|
213
221
|
callback: event => {
|
214
|
-
const innerHOT = this.htEditor
|
222
|
+
const innerHOT = this.htEditor;
|
215
223
|
let rowToSelect;
|
216
224
|
let selectedRow;
|
217
225
|
if (!innerHOT.getSelectedLast() && !innerHOT.flipped) {
|
@@ -2,13 +2,12 @@
|
|
2
2
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _textEditor = require("../textEditor");
|
5
|
-
const EDITOR_TYPE = 'numeric';
|
5
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'numeric';
|
6
6
|
|
7
7
|
/**
|
8
8
|
* @private
|
9
9
|
* @class NumericEditor
|
10
10
|
*/
|
11
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
12
11
|
class NumericEditor extends _textEditor.TextEditor {
|
13
12
|
static get EDITOR_TYPE() {
|
14
13
|
return EDITOR_TYPE;
|
@@ -3,13 +3,12 @@
|
|
3
3
|
exports.__esModule = true;
|
4
4
|
var _textEditor = require("../textEditor");
|
5
5
|
var _element = require("../../helpers/dom/element");
|
6
|
-
const EDITOR_TYPE = 'password';
|
6
|
+
const EDITOR_TYPE = exports.EDITOR_TYPE = 'password';
|
7
7
|
|
8
8
|
/**
|
9
9
|
* @private
|
10
10
|
* @class PasswordEditor
|
11
11
|
*/
|
12
|
-
exports.EDITOR_TYPE = EDITOR_TYPE;
|
13
12
|
class PasswordEditor extends _textEditor.TextEditor {
|
14
13
|
static get EDITOR_TYPE() {
|
15
14
|
return EDITOR_TYPE;
|