handsontable 0.0.0-next-9059914-20231025 → 0.0.0-next-21d91d0-20231025

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (446) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +50 -11
  3. package/3rdparty/walkontable/src/cell/coords.mjs +50 -11
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +38 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +12 -10
  14. package/3rdparty/walkontable/src/event.mjs +12 -10
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  25. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  26. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  27. package/3rdparty/walkontable/src/renderer/columnHeaders.js +10 -0
  28. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +11 -1
  29. package/3rdparty/walkontable/src/renderer/rowHeaders.js +5 -0
  30. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +5 -0
  31. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  32. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  33. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  34. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  35. package/3rdparty/walkontable/src/scroll.js +2 -0
  36. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  37. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  38. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  39. package/3rdparty/walkontable/src/selection/border/constants.js +16 -0
  40. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  41. package/3rdparty/walkontable/src/selection/constants.js +62 -0
  42. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  43. package/3rdparty/walkontable/src/selection/index.js +26 -0
  44. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  45. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  46. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  47. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  48. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  49. package/3rdparty/walkontable/src/selection/selection.js +101 -0
  50. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  51. package/3rdparty/walkontable/src/settings.js +13 -4
  52. package/3rdparty/walkontable/src/settings.mjs +13 -4
  53. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  54. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  55. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  56. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  57. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  58. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  59. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  60. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  61. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  62. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  63. package/3rdparty/walkontable/src/table.js +19 -78
  64. package/3rdparty/walkontable/src/table.mjs +20 -79
  65. package/base.js +2 -2
  66. package/base.mjs +2 -2
  67. package/cellTypes/dateType/dateType.d.ts +3 -3
  68. package/cellTypes/dateType/dateType.js +2 -2
  69. package/cellTypes/dateType/dateType.mjs +2 -2
  70. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  71. package/cellTypes/handsontableType/handsontableType.js +2 -2
  72. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  73. package/cellTypes/index.d.ts +3 -0
  74. package/cellTypes/index.js +4 -0
  75. package/cellTypes/index.mjs +3 -1
  76. package/cellTypes/selectType/index.d.ts +1 -0
  77. package/cellTypes/selectType/index.js +6 -0
  78. package/cellTypes/selectType/index.mjs +1 -0
  79. package/cellTypes/selectType/selectType.d.ts +14 -0
  80. package/cellTypes/selectType/selectType.js +13 -0
  81. package/cellTypes/selectType/selectType.mjs +8 -0
  82. package/core/focusCatcher/focusDetector.js +63 -0
  83. package/core/focusCatcher/focusDetector.mjs +59 -0
  84. package/core/focusCatcher/index.js +142 -0
  85. package/core/focusCatcher/index.mjs +138 -0
  86. package/core/index.js +9 -0
  87. package/core/index.mjs +1 -0
  88. package/core.d.ts +9 -4
  89. package/core.js +285 -327
  90. package/core.mjs +285 -327
  91. package/dataMap/metaManager/metaSchema.js +65 -0
  92. package/dataMap/metaManager/metaSchema.mjs +65 -0
  93. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  94. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  95. package/dataMap/replaceData.js +5 -0
  96. package/dataMap/replaceData.mjs +5 -0
  97. package/dist/handsontable.css +51 -15
  98. package/dist/handsontable.full.css +51 -15
  99. package/dist/handsontable.full.js +13360 -7840
  100. package/dist/handsontable.full.min.css +7 -7
  101. package/dist/handsontable.full.min.js +136 -136
  102. package/dist/handsontable.js +20955 -15435
  103. package/dist/handsontable.min.css +6 -6
  104. package/dist/handsontable.min.js +24 -24
  105. package/dist/languages/all.js +6 -2
  106. package/dist/languages/all.min.js +1 -1
  107. package/dist/languages/en-US.js +3 -1
  108. package/dist/languages/en-US.min.js +1 -1
  109. package/dist/languages/pl-PL.js +3 -1
  110. package/dist/languages/pl-PL.min.js +1 -1
  111. package/editorManager.js +15 -87
  112. package/editorManager.mjs +16 -87
  113. package/editors/autocompleteEditor/autocompleteEditor.js +53 -2
  114. package/editors/autocompleteEditor/autocompleteEditor.mjs +54 -3
  115. package/editors/dateEditor/dateEditor.js +26 -7
  116. package/editors/dateEditor/dateEditor.mjs +27 -8
  117. package/editors/handsontableEditor/handsontableEditor.js +9 -1
  118. package/editors/handsontableEditor/handsontableEditor.mjs +10 -2
  119. package/editors/textEditor/textEditor.js +19 -27
  120. package/editors/textEditor/textEditor.mjs +22 -30
  121. package/focusManager.d.ts +12 -0
  122. package/focusManager.js +265 -0
  123. package/focusManager.mjs +261 -0
  124. package/helpers/a11y.js +79 -0
  125. package/helpers/a11y.mjs +38 -0
  126. package/helpers/dom/element.js +188 -9
  127. package/helpers/dom/element.mjs +182 -9
  128. package/helpers/mixed.js +1 -1
  129. package/helpers/mixed.mjs +1 -1
  130. package/helpers/number.d.ts +1 -0
  131. package/helpers/number.js +18 -0
  132. package/helpers/number.mjs +17 -0
  133. package/i18n/constants.js +7 -1
  134. package/i18n/constants.mjs +4 -1
  135. package/i18n/languages/en-US.js +3 -1
  136. package/i18n/languages/en-US.mjs +3 -1
  137. package/i18n/languages/pl-PL.js +3 -1
  138. package/i18n/languages/pl-PL.mjs +3 -1
  139. package/languages/all.js +6 -2
  140. package/languages/en-US.js +3 -1
  141. package/languages/en-US.mjs +3 -1
  142. package/languages/index.js +6 -2
  143. package/languages/pl-PL.js +3 -1
  144. package/languages/pl-PL.mjs +3 -1
  145. package/package.json +21 -1
  146. package/pluginHooks.d.ts +12 -1
  147. package/pluginHooks.js +152 -1
  148. package/pluginHooks.mjs +152 -1
  149. package/plugins/collapsibleColumns/collapsibleColumns.js +74 -4
  150. package/plugins/collapsibleColumns/collapsibleColumns.mjs +75 -5
  151. package/plugins/columnSorting/columnSorting.js +43 -0
  152. package/plugins/columnSorting/columnSorting.mjs +44 -3
  153. package/plugins/columnSorting/index.js +3 -1
  154. package/plugins/columnSorting/index.mjs +1 -1
  155. package/plugins/comments/commentEditor.js +1 -0
  156. package/plugins/comments/commentEditor.mjs +1 -0
  157. package/plugins/comments/comments.js +252 -189
  158. package/plugins/comments/comments.mjs +251 -190
  159. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  160. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  161. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  162. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  163. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  164. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  165. package/plugins/contextMenu/commandExecutor.js +2 -3
  166. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  167. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  168. package/plugins/contextMenu/contextMenu.js +75 -36
  169. package/plugins/contextMenu/contextMenu.mjs +74 -35
  170. package/plugins/contextMenu/itemsFactory.js +2 -3
  171. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  172. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  173. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  174. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  175. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  176. package/plugins/contextMenu/menu/index.js +9 -0
  177. package/plugins/contextMenu/menu/index.mjs +1 -0
  178. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  179. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  180. package/plugins/contextMenu/menu/menuItemRenderer.js +58 -0
  181. package/plugins/contextMenu/menu/menuItemRenderer.mjs +54 -0
  182. package/plugins/contextMenu/menu/navigator.js +27 -0
  183. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  184. package/plugins/contextMenu/menu/positioner.js +213 -0
  185. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  186. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  187. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  188. package/plugins/contextMenu/menu/utils.js +177 -0
  189. package/plugins/contextMenu/menu/utils.mjs +163 -0
  190. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  191. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  192. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  193. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  194. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  195. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  196. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  197. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  198. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  199. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  200. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  201. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  202. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  203. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  204. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  205. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  206. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  207. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  208. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  209. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  210. package/plugins/contextMenu/utils.js +35 -151
  211. package/plugins/contextMenu/utils.mjs +35 -144
  212. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  213. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  214. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  215. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  216. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  217. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  218. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  219. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  220. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  221. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  222. package/plugins/copyPaste/copyPaste.js +127 -78
  223. package/plugins/copyPaste/copyPaste.mjs +128 -79
  224. package/plugins/customBorders/customBorders.js +23 -20
  225. package/plugins/customBorders/customBorders.mjs +24 -21
  226. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  227. package/plugins/dropdownMenu/dropdownMenu.js +127 -40
  228. package/plugins/dropdownMenu/dropdownMenu.mjs +126 -39
  229. package/plugins/filters/component/_base.js +23 -8
  230. package/plugins/filters/component/_base.mjs +23 -8
  231. package/plugins/filters/component/actionBar.js +29 -27
  232. package/plugins/filters/component/actionBar.mjs +26 -23
  233. package/plugins/filters/component/condition.js +46 -59
  234. package/plugins/filters/component/condition.mjs +40 -52
  235. package/plugins/filters/component/operators.js +21 -22
  236. package/plugins/filters/component/operators.mjs +18 -18
  237. package/plugins/filters/component/value.js +35 -26
  238. package/plugins/filters/component/value.mjs +32 -22
  239. package/plugins/filters/constants.mjs +1 -1
  240. package/plugins/filters/filters.js +106 -62
  241. package/plugins/filters/filters.mjs +99 -55
  242. package/plugins/filters/menu/focusController.js +123 -0
  243. package/plugins/filters/menu/focusController.mjs +119 -0
  244. package/plugins/filters/menu/focusNavigator.js +30 -0
  245. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  246. package/plugins/filters/ui/_base.js +35 -13
  247. package/plugins/filters/ui/_base.mjs +35 -13
  248. package/plugins/filters/ui/input.js +43 -32
  249. package/plugins/filters/ui/input.mjs +42 -30
  250. package/plugins/filters/ui/link.js +44 -12
  251. package/plugins/filters/ui/link.mjs +44 -11
  252. package/plugins/filters/ui/multipleSelect.js +234 -129
  253. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  254. package/plugins/filters/ui/radioInput.js +42 -18
  255. package/plugins/filters/ui/radioInput.mjs +42 -17
  256. package/plugins/filters/ui/select.js +144 -75
  257. package/plugins/filters/ui/select.mjs +142 -72
  258. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  259. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  260. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  261. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  262. package/plugins/mergeCells/mergeCells.js +5 -16
  263. package/plugins/mergeCells/mergeCells.mjs +5 -16
  264. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  265. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  266. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  267. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  268. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  269. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  270. package/plugins/nestedRows/nestedRows.js +41 -0
  271. package/plugins/nestedRows/nestedRows.mjs +41 -0
  272. package/plugins/nestedRows/ui/headers.js +11 -0
  273. package/plugins/nestedRows/ui/headers.mjs +12 -1
  274. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  275. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  276. package/renderers/baseRenderer/baseRenderer.js +17 -0
  277. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  278. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  279. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  280. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  281. package/renderers/dateRenderer/dateRenderer.js +29 -0
  282. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  283. package/renderers/dateRenderer/index.d.ts +1 -0
  284. package/renderers/dateRenderer/index.js +6 -0
  285. package/renderers/dateRenderer/index.mjs +1 -0
  286. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  287. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  288. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  289. package/renderers/handsontableRenderer/index.d.ts +1 -0
  290. package/renderers/handsontableRenderer/index.js +6 -0
  291. package/renderers/handsontableRenderer/index.mjs +1 -0
  292. package/renderers/index.d.ts +9 -0
  293. package/renderers/selectRenderer/index.d.ts +1 -0
  294. package/renderers/selectRenderer/index.js +6 -0
  295. package/renderers/selectRenderer/index.mjs +1 -0
  296. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  297. package/renderers/selectRenderer/selectRenderer.js +27 -0
  298. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  299. package/selection/highlight/highlight.js +256 -71
  300. package/selection/highlight/highlight.mjs +250 -71
  301. package/selection/highlight/types/activeHeader.js +10 -8
  302. package/selection/highlight/types/activeHeader.mjs +10 -8
  303. package/selection/highlight/types/area.js +6 -18
  304. package/selection/highlight/types/area.mjs +6 -18
  305. package/selection/highlight/types/areaLayered.js +31 -0
  306. package/selection/highlight/types/areaLayered.mjs +26 -0
  307. package/selection/highlight/types/column.js +27 -0
  308. package/selection/highlight/types/column.mjs +22 -0
  309. package/selection/highlight/types/customSelection.js +7 -9
  310. package/selection/highlight/types/customSelection.mjs +7 -9
  311. package/selection/highlight/types/fill.js +5 -7
  312. package/selection/highlight/types/fill.mjs +5 -7
  313. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  314. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  315. package/selection/highlight/types/header.js +9 -18
  316. package/selection/highlight/types/header.mjs +9 -18
  317. package/selection/highlight/types/row.js +27 -0
  318. package/selection/highlight/types/row.mjs +22 -0
  319. package/selection/highlight/visualSelection.js +31 -27
  320. package/selection/highlight/visualSelection.mjs +31 -27
  321. package/selection/index.js +4 -7
  322. package/selection/index.mjs +2 -3
  323. package/selection/mouseEventHandler.js +7 -1
  324. package/selection/mouseEventHandler.mjs +7 -1
  325. package/selection/range.js +8 -8
  326. package/selection/range.mjs +8 -8
  327. package/selection/selection.js +321 -152
  328. package/selection/selection.mjs +318 -151
  329. package/selection/transformation.js +232 -90
  330. package/selection/transformation.mjs +232 -90
  331. package/selection/utils.js +15 -21
  332. package/selection/utils.mjs +16 -21
  333. package/settings.d.ts +4 -0
  334. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  335. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  336. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  337. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  338. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  339. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  340. package/shortcutContexts/commands/editor/index.js +16 -0
  341. package/shortcutContexts/commands/editor/index.mjs +12 -0
  342. package/shortcutContexts/commands/editor/open.js +27 -0
  343. package/shortcutContexts/commands/editor/open.mjs +23 -0
  344. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  345. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  346. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  347. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  348. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  349. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  350. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  351. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  352. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  353. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  354. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  355. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  356. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  357. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  358. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  359. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  360. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  361. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  362. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  363. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  364. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  365. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  366. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  367. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  368. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  369. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  370. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  371. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  372. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  373. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  374. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  375. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  376. package/shortcutContexts/commands/index.js +35 -0
  377. package/shortcutContexts/commands/index.mjs +31 -0
  378. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  383. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  384. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  385. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  386. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  387. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  388. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  389. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  390. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  391. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  392. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  393. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  394. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  395. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  396. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  397. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  398. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  399. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  400. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  401. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  402. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  403. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  404. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  405. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  406. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  407. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  408. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  409. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  410. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  411. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  412. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  413. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  414. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  415. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  416. package/shortcutContexts/commands/selectAll.js +12 -0
  417. package/shortcutContexts/commands/selectAll.mjs +8 -0
  418. package/shortcutContexts/constants.js +13 -0
  419. package/shortcutContexts/constants.mjs +8 -0
  420. package/shortcutContexts/editor.js +25 -0
  421. package/shortcutContexts/editor.mjs +21 -0
  422. package/shortcutContexts/grid.js +163 -0
  423. package/shortcutContexts/grid.mjs +159 -0
  424. package/shortcutContexts/index.js +24 -0
  425. package/shortcutContexts/index.mjs +11 -0
  426. package/shortcuts/context.js +23 -4
  427. package/shortcuts/context.mjs +23 -5
  428. package/shortcuts/manager.js +25 -7
  429. package/shortcuts/manager.mjs +26 -7
  430. package/shortcuts/recorder.js +3 -3
  431. package/shortcuts/recorder.mjs +3 -3
  432. package/shortcuts/utils.js +19 -5
  433. package/shortcuts/utils.mjs +18 -4
  434. package/tableView.js +111 -13
  435. package/tableView.mjs +112 -14
  436. package/utils/paginator.js +151 -0
  437. package/utils/paginator.mjs +147 -0
  438. package/3rdparty/walkontable/src/selection.js +0 -295
  439. package/3rdparty/walkontable/src/selection.mjs +0 -290
  440. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  441. package/plugins/copyPaste/focusableElement.js +0 -186
  442. package/plugins/copyPaste/focusableElement.mjs +0 -180
  443. package/selection/highlight/constants.js +0 -15
  444. package/selection/highlight/constants.mjs +0 -6
  445. package/selection/highlight/types/index.js +0 -35
  446. package/selection/highlight/types/index.mjs +0 -31
@@ -8,6 +8,7 @@ var _sourceSettings2 = _interopRequireDefault(require("./sourceSettings"));
8
8
  var _headersTree2 = _interopRequireDefault(require("./headersTree"));
9
9
  var _nodeModifiers = require("./nodeModifiers");
10
10
  var _matrixGenerator = require("./matrixGenerator");
11
+ var _tree = require("../../../utils/dataStructures/tree");
11
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
13
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
13
14
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -317,6 +318,23 @@ class StateManager {
317
318
  * @returns {object|null}
318
319
  */
319
320
  getHeaderTreeNodeData(headerLevel, columnIndex) {
321
+ const node = this.getHeaderTreeNode(headerLevel, columnIndex);
322
+ if (!node) {
323
+ return null;
324
+ }
325
+ return {
326
+ ...node.data
327
+ };
328
+ }
329
+
330
+ /**
331
+ * Gets tree node that is connected to the column header.
332
+ *
333
+ * @param {number} headerLevel Header level (there is support for negative and positive values).
334
+ * @param {number} columnIndex A visual column index.
335
+ * @returns {TreeNode|null}
336
+ */
337
+ getHeaderTreeNode(headerLevel, columnIndex) {
320
338
  if (headerLevel < 0) {
321
339
  headerLevel = this.rowCoordsToLevel(headerLevel);
322
340
  }
@@ -327,9 +345,53 @@ class StateManager {
327
345
  if (!node) {
328
346
  return null;
329
347
  }
330
- return {
331
- ...node.data
332
- };
348
+ return node;
349
+ }
350
+
351
+ /**
352
+ * Finds the most top header level of the column header that is rendered entirely within
353
+ * the passed visual columns range. If multiple columns headers are found within the range the
354
+ * most top header level value will be returned.
355
+ *
356
+ * @param {number} columnIndexFrom A visual column index.
357
+ * @param {number} [columnIndexTo] A visual column index.
358
+ * @returns {number} Returns a header level in format -1 to -N.
359
+ */
360
+ findTopMostEntireHeaderLevel(columnIndexFrom) {
361
+ var _headerLevel;
362
+ let columnIndexTo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : columnIndexFrom;
363
+ const columnsWidth = columnIndexTo - columnIndexFrom + 1;
364
+ let atLeastOneRootFound = false;
365
+ let headerLevel = null;
366
+ for (let columnIndex = columnIndexFrom; columnIndex <= columnIndexTo; columnIndex++) {
367
+ const rootNode = _classPrivateFieldGet(this, _headersTree).getRootByColumn(columnIndex);
368
+ if (!rootNode) {
369
+ break;
370
+ }
371
+ atLeastOneRootFound = true;
372
+
373
+ // eslint-disable-next-line
374
+ rootNode.walkDown(node => {
375
+ const {
376
+ columnIndex: nodeColumnIndex,
377
+ headerLevel: nodeHeaderLevel,
378
+ origColspan,
379
+ isHidden
380
+ } = node.data;
381
+ if (isHidden) {
382
+ return;
383
+ }
384
+
385
+ // if the header fits entirely within the columns range get and save the node header level
386
+ if (origColspan <= columnsWidth && nodeColumnIndex >= columnIndexFrom && nodeColumnIndex + origColspan - 1 <= columnIndexTo && (headerLevel === null || nodeHeaderLevel < headerLevel)) {
387
+ headerLevel = nodeHeaderLevel;
388
+ }
389
+ }, _tree.TRAVERSAL_DF_PRE);
390
+ }
391
+ if (atLeastOneRootFound && headerLevel === null) {
392
+ return -1;
393
+ }
394
+ return this.levelToRowCoords((_headerLevel = headerLevel) !== null && _headerLevel !== void 0 ? _headerLevel : 0);
333
395
  }
334
396
 
335
397
  /**
@@ -367,6 +429,43 @@ class StateManager {
367
429
  return stepBackColumn;
368
430
  }
369
431
 
432
+ /**
433
+ * The method is helpful in cases where the column index targets in-between currently
434
+ * collapsed column. In that case, the method returns the right-most column index
435
+ * where the nested header ends.
436
+ *
437
+ * @param {number} headerLevel Header level (there is support for negative and positive values).
438
+ * @param {number} columnIndex A visual column index.
439
+ * @returns {number}
440
+ */
441
+ findRightMostColumnIndex(headerLevel, columnIndex) {
442
+ var _this$getHeaderSettin3;
443
+ const {
444
+ isRoot,
445
+ origColspan
446
+ } = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
447
+ isRoot: true,
448
+ origColspan: 1
449
+ };
450
+ if (isRoot) {
451
+ return columnIndex + origColspan - 1;
452
+ }
453
+ let stepForthColumn = columnIndex + 1;
454
+ while (stepForthColumn < this.getColumnsCount()) {
455
+ var _this$getHeaderSettin4;
456
+ const {
457
+ isRoot: isRootNode
458
+ } = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
459
+ isRoot: true
460
+ };
461
+ if (isRootNode) {
462
+ break;
463
+ }
464
+ stepForthColumn += 1;
465
+ }
466
+ return stepForthColumn - 1;
467
+ }
468
+
370
469
  /**
371
470
  * Gets a total number of headers levels.
372
471
  *
@@ -12,6 +12,7 @@ import SourceSettings from "./sourceSettings.mjs";
12
12
  import HeadersTree from "./headersTree.mjs";
13
13
  import { triggerNodeModification } from "./nodeModifiers/index.mjs";
14
14
  import { generateMatrix } from "./matrixGenerator.mjs";
15
+ import { TRAVERSAL_DF_PRE } from "../../../utils/dataStructures/tree.mjs";
15
16
  /**
16
17
  * The state manager is a source of truth for nested headers configuration.
17
18
  * The state generation process is divided into three stages.
@@ -313,6 +314,23 @@ export default class StateManager {
313
314
  * @returns {object|null}
314
315
  */
315
316
  getHeaderTreeNodeData(headerLevel, columnIndex) {
317
+ const node = this.getHeaderTreeNode(headerLevel, columnIndex);
318
+ if (!node) {
319
+ return null;
320
+ }
321
+ return {
322
+ ...node.data
323
+ };
324
+ }
325
+
326
+ /**
327
+ * Gets tree node that is connected to the column header.
328
+ *
329
+ * @param {number} headerLevel Header level (there is support for negative and positive values).
330
+ * @param {number} columnIndex A visual column index.
331
+ * @returns {TreeNode|null}
332
+ */
333
+ getHeaderTreeNode(headerLevel, columnIndex) {
316
334
  if (headerLevel < 0) {
317
335
  headerLevel = this.rowCoordsToLevel(headerLevel);
318
336
  }
@@ -323,9 +341,53 @@ export default class StateManager {
323
341
  if (!node) {
324
342
  return null;
325
343
  }
326
- return {
327
- ...node.data
328
- };
344
+ return node;
345
+ }
346
+
347
+ /**
348
+ * Finds the most top header level of the column header that is rendered entirely within
349
+ * the passed visual columns range. If multiple columns headers are found within the range the
350
+ * most top header level value will be returned.
351
+ *
352
+ * @param {number} columnIndexFrom A visual column index.
353
+ * @param {number} [columnIndexTo] A visual column index.
354
+ * @returns {number} Returns a header level in format -1 to -N.
355
+ */
356
+ findTopMostEntireHeaderLevel(columnIndexFrom) {
357
+ var _headerLevel;
358
+ let columnIndexTo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : columnIndexFrom;
359
+ const columnsWidth = columnIndexTo - columnIndexFrom + 1;
360
+ let atLeastOneRootFound = false;
361
+ let headerLevel = null;
362
+ for (let columnIndex = columnIndexFrom; columnIndex <= columnIndexTo; columnIndex++) {
363
+ const rootNode = _classPrivateFieldGet(this, _headersTree).getRootByColumn(columnIndex);
364
+ if (!rootNode) {
365
+ break;
366
+ }
367
+ atLeastOneRootFound = true;
368
+
369
+ // eslint-disable-next-line
370
+ rootNode.walkDown(node => {
371
+ const {
372
+ columnIndex: nodeColumnIndex,
373
+ headerLevel: nodeHeaderLevel,
374
+ origColspan,
375
+ isHidden
376
+ } = node.data;
377
+ if (isHidden) {
378
+ return;
379
+ }
380
+
381
+ // if the header fits entirely within the columns range get and save the node header level
382
+ if (origColspan <= columnsWidth && nodeColumnIndex >= columnIndexFrom && nodeColumnIndex + origColspan - 1 <= columnIndexTo && (headerLevel === null || nodeHeaderLevel < headerLevel)) {
383
+ headerLevel = nodeHeaderLevel;
384
+ }
385
+ }, TRAVERSAL_DF_PRE);
386
+ }
387
+ if (atLeastOneRootFound && headerLevel === null) {
388
+ return -1;
389
+ }
390
+ return this.levelToRowCoords((_headerLevel = headerLevel) !== null && _headerLevel !== void 0 ? _headerLevel : 0);
329
391
  }
330
392
 
331
393
  /**
@@ -363,6 +425,43 @@ export default class StateManager {
363
425
  return stepBackColumn;
364
426
  }
365
427
 
428
+ /**
429
+ * The method is helpful in cases where the column index targets in-between currently
430
+ * collapsed column. In that case, the method returns the right-most column index
431
+ * where the nested header ends.
432
+ *
433
+ * @param {number} headerLevel Header level (there is support for negative and positive values).
434
+ * @param {number} columnIndex A visual column index.
435
+ * @returns {number}
436
+ */
437
+ findRightMostColumnIndex(headerLevel, columnIndex) {
438
+ var _this$getHeaderSettin3;
439
+ const {
440
+ isRoot,
441
+ origColspan
442
+ } = (_this$getHeaderSettin3 = this.getHeaderSettings(headerLevel, columnIndex)) !== null && _this$getHeaderSettin3 !== void 0 ? _this$getHeaderSettin3 : {
443
+ isRoot: true,
444
+ origColspan: 1
445
+ };
446
+ if (isRoot) {
447
+ return columnIndex + origColspan - 1;
448
+ }
449
+ let stepForthColumn = columnIndex + 1;
450
+ while (stepForthColumn < this.getColumnsCount()) {
451
+ var _this$getHeaderSettin4;
452
+ const {
453
+ isRoot: isRootNode
454
+ } = (_this$getHeaderSettin4 = this.getHeaderSettings(headerLevel, stepForthColumn)) !== null && _this$getHeaderSettin4 !== void 0 ? _this$getHeaderSettin4 : {
455
+ isRoot: true
456
+ };
457
+ if (isRootNode) {
458
+ break;
459
+ }
460
+ stepForthColumn += 1;
461
+ }
462
+ return stepForthColumn - 1;
463
+ }
464
+
366
465
  /**
367
466
  * Gets a total number of headers levels.
368
467
  *
@@ -16,6 +16,7 @@ const PLUGIN_KEY = 'nestedRows';
16
16
  exports.PLUGIN_KEY = PLUGIN_KEY;
17
17
  const PLUGIN_PRIORITY = 300;
18
18
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
19
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
19
20
  const privatePool = new WeakMap();
20
21
 
21
22
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -150,6 +151,7 @@ class NestedRows extends _base.BasePlugin {
150
151
  });
151
152
  this.addHook('beforeLoadData', data => this.onBeforeLoadData(data));
152
153
  this.addHook('beforeUpdateData', data => this.onBeforeLoadData(data));
154
+ this.registerShortcuts();
153
155
  super.enablePlugin();
154
156
  }
155
157
 
@@ -158,6 +160,7 @@ class NestedRows extends _base.BasePlugin {
158
160
  */
159
161
  disablePlugin() {
160
162
  this.hot.rowIndexMapper.unregisterMap('nestedRows');
163
+ this.unregisterShortcuts();
161
164
  super.disablePlugin();
162
165
  }
163
166
 
@@ -179,6 +182,44 @@ class NestedRows extends _base.BasePlugin {
179
182
  super.updatePlugin();
180
183
  }
181
184
 
185
+ /**
186
+ * Register shortcuts responsible for toggling collapsible columns.
187
+ *
188
+ * @private
189
+ */
190
+ registerShortcuts() {
191
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
192
+ keys: [['Enter']],
193
+ callback: () => {
194
+ const {
195
+ highlight
196
+ } = this.hot.getSelectedRangeLast();
197
+ if (highlight.col === -1 && highlight.row >= 0) {
198
+ const row = this.collapsingUI.translateTrimmedRow(highlight.row);
199
+ if (this.collapsingUI.areChildrenCollapsed(row)) {
200
+ this.collapsingUI.expandChildren(row);
201
+ } else {
202
+ this.collapsingUI.collapseChildren(row);
203
+ }
204
+ }
205
+ },
206
+ runOnlyIf: () => {
207
+ var _this$hot$getSelected;
208
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
209
+ },
210
+ group: SHORTCUTS_GROUP
211
+ });
212
+ }
213
+
214
+ /**
215
+ * Unregister shortcuts responsible for toggling collapsible columns.
216
+ *
217
+ * @private
218
+ */
219
+ unregisterShortcuts() {
220
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
221
+ }
222
+
182
223
  /**
183
224
  * `beforeRowMove` hook callback.
184
225
  *
@@ -10,6 +10,7 @@ import { TrimmingMap } from "../../translations/index.mjs";
10
10
  import RowMoveController from "./utils/rowMoveController.mjs";
11
11
  export const PLUGIN_KEY = 'nestedRows';
12
12
  export const PLUGIN_PRIORITY = 300;
13
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
13
14
  const privatePool = new WeakMap();
14
15
 
15
16
  /* eslint-disable jsdoc/require-description-complete-sentence */
@@ -144,6 +145,7 @@ export class NestedRows extends BasePlugin {
144
145
  });
145
146
  this.addHook('beforeLoadData', data => this.onBeforeLoadData(data));
146
147
  this.addHook('beforeUpdateData', data => this.onBeforeLoadData(data));
148
+ this.registerShortcuts();
147
149
  super.enablePlugin();
148
150
  }
149
151
 
@@ -152,6 +154,7 @@ export class NestedRows extends BasePlugin {
152
154
  */
153
155
  disablePlugin() {
154
156
  this.hot.rowIndexMapper.unregisterMap('nestedRows');
157
+ this.unregisterShortcuts();
155
158
  super.disablePlugin();
156
159
  }
157
160
 
@@ -173,6 +176,44 @@ export class NestedRows extends BasePlugin {
173
176
  super.updatePlugin();
174
177
  }
175
178
 
179
+ /**
180
+ * Register shortcuts responsible for toggling collapsible columns.
181
+ *
182
+ * @private
183
+ */
184
+ registerShortcuts() {
185
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
186
+ keys: [['Enter']],
187
+ callback: () => {
188
+ const {
189
+ highlight
190
+ } = this.hot.getSelectedRangeLast();
191
+ if (highlight.col === -1 && highlight.row >= 0) {
192
+ const row = this.collapsingUI.translateTrimmedRow(highlight.row);
193
+ if (this.collapsingUI.areChildrenCollapsed(row)) {
194
+ this.collapsingUI.expandChildren(row);
195
+ } else {
196
+ this.collapsingUI.collapseChildren(row);
197
+ }
198
+ }
199
+ },
200
+ runOnlyIf: () => {
201
+ var _this$hot$getSelected;
202
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
203
+ },
204
+ group: SHORTCUTS_GROUP
205
+ });
206
+ }
207
+
208
+ /**
209
+ * Unregister shortcuts responsible for toggling collapsible columns.
210
+ *
211
+ * @private
212
+ */
213
+ unregisterShortcuts() {
214
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
215
+ }
216
+
176
217
  /**
177
218
  * `beforeRowMove` hook callback.
178
219
  *
@@ -5,6 +5,7 @@ var _array = require("../../../helpers/array");
5
5
  var _number = require("../../../helpers/number");
6
6
  var _element = require("../../../helpers/dom/element");
7
7
  var _base = _interopRequireDefault(require("./_base"));
8
+ var _a11y = require("../../../helpers/a11y");
8
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
10
  /**
10
11
  * Class responsible for the UI in the Nested Rows' row headers.
@@ -72,6 +73,7 @@ class HeadersUI extends _base.default {
72
73
  const innerDiv = TH.getElementsByTagName('DIV')[0];
73
74
  const innerSpan = innerDiv.querySelector('span.rowHeader');
74
75
  const previousIndicators = innerDiv.querySelectorAll('[class^="ht_nesting"]');
76
+ const ariaEnabled = this.hot.getSettings().ariaTags;
75
77
  (0, _array.arrayEach)(previousIndicators, elem => {
76
78
  if (elem) {
77
79
  innerDiv.removeChild(elem);
@@ -93,11 +95,20 @@ class HeadersUI extends _base.default {
93
95
  }
94
96
  if (this.dataManager.hasChildren(rowObject)) {
95
97
  const buttonsContainer = this.hot.rootDocument.createElement('DIV');
98
+ if (ariaEnabled) {
99
+ (0, _element.setAttribute)(buttonsContainer, [(0, _a11y.A11Y_HIDDEN)()]);
100
+ }
96
101
  (0, _element.addClass)(TH, HeadersUI.CSS_CLASSES.parent);
97
102
  if (this.collapsingUI.areChildrenCollapsed(rowIndex)) {
98
103
  (0, _element.addClass)(buttonsContainer, `${HeadersUI.CSS_CLASSES.button} ${HeadersUI.CSS_CLASSES.expandButton}`);
104
+ if (ariaEnabled) {
105
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(false)]);
106
+ }
99
107
  } else {
100
108
  (0, _element.addClass)(buttonsContainer, `${HeadersUI.CSS_CLASSES.button} ${HeadersUI.CSS_CLASSES.collapseButton}`);
109
+ if (ariaEnabled) {
110
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(true)]);
111
+ }
101
112
  }
102
113
  innerDiv.appendChild(buttonsContainer);
103
114
  }
@@ -1,7 +1,8 @@
1
1
  import { arrayEach } from "../../../helpers/array.mjs";
2
2
  import { rangeEach } from "../../../helpers/number.mjs";
3
- import { addClass } from "../../../helpers/dom/element.mjs";
3
+ import { addClass, setAttribute } from "../../../helpers/dom/element.mjs";
4
4
  import BaseUI from "./_base.mjs";
5
+ import { A11Y_EXPANDED, A11Y_HIDDEN } from "../../../helpers/a11y.mjs";
5
6
  /**
6
7
  * Class responsible for the UI in the Nested Rows' row headers.
7
8
  *
@@ -68,6 +69,7 @@ class HeadersUI extends BaseUI {
68
69
  const innerDiv = TH.getElementsByTagName('DIV')[0];
69
70
  const innerSpan = innerDiv.querySelector('span.rowHeader');
70
71
  const previousIndicators = innerDiv.querySelectorAll('[class^="ht_nesting"]');
72
+ const ariaEnabled = this.hot.getSettings().ariaTags;
71
73
  arrayEach(previousIndicators, elem => {
72
74
  if (elem) {
73
75
  innerDiv.removeChild(elem);
@@ -89,11 +91,20 @@ class HeadersUI extends BaseUI {
89
91
  }
90
92
  if (this.dataManager.hasChildren(rowObject)) {
91
93
  const buttonsContainer = this.hot.rootDocument.createElement('DIV');
94
+ if (ariaEnabled) {
95
+ setAttribute(buttonsContainer, [A11Y_HIDDEN()]);
96
+ }
92
97
  addClass(TH, HeadersUI.CSS_CLASSES.parent);
93
98
  if (this.collapsingUI.areChildrenCollapsed(rowIndex)) {
94
99
  addClass(buttonsContainer, `${HeadersUI.CSS_CLASSES.button} ${HeadersUI.CSS_CLASSES.expandButton}`);
100
+ if (ariaEnabled) {
101
+ setAttribute(TH, [A11Y_EXPANDED(false)]);
102
+ }
95
103
  } else {
96
104
  addClass(buttonsContainer, `${HeadersUI.CSS_CLASSES.button} ${HeadersUI.CSS_CLASSES.collapseButton}`);
105
+ if (ariaEnabled) {
106
+ setAttribute(TH, [A11Y_EXPANDED(true)]);
107
+ }
97
108
  }
98
109
  innerDiv.appendChild(buttonsContainer);
99
110
  }
@@ -6,6 +6,7 @@ var _htmlRenderer = require("../htmlRenderer");
6
6
  var _textRenderer = require("../textRenderer");
7
7
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
8
8
  var _element = require("../../helpers/dom/element");
9
+ var _a11y = require("../../helpers/a11y");
9
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
11
  const RENDERER_TYPE = 'autocomplete';
11
12
 
@@ -28,7 +29,11 @@ function autocompleteRenderer(instance, TD, row, col, prop, value, cellPropertie
28
29
  } = instance;
29
30
  const rendererFunc = cellProperties.allowHtml ? _htmlRenderer.htmlRenderer : _textRenderer.textRenderer;
30
31
  const ARROW = rootDocument.createElement('DIV');
32
+ const isAriaEnabled = instance.getSettings().ariaTags;
31
33
  ARROW.className = 'htAutocompleteArrow';
34
+ if (isAriaEnabled) {
35
+ ARROW.setAttribute(...(0, _a11y.A11Y_HIDDEN)());
36
+ }
32
37
  ARROW.appendChild(rootDocument.createTextNode(String.fromCharCode(9660)));
33
38
  rendererFunc.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
34
39
  if (!TD.firstChild) {
@@ -40,6 +45,9 @@ function autocompleteRenderer(instance, TD, row, col, prop, value, cellPropertie
40
45
 
41
46
  TD.insertBefore(ARROW, TD.firstChild);
42
47
  (0, _element.addClass)(TD, 'htAutocomplete');
48
+ if (isAriaEnabled) {
49
+ TD.setAttribute(...(0, _a11y.A11Y_HASPOPUP)('listbox'));
50
+ }
43
51
  if (!instance.acArrowListener) {
44
52
  const eventManager = new _eventManager.default(instance);
45
53
 
@@ -2,6 +2,7 @@ import { htmlRenderer } from "../htmlRenderer/index.mjs";
2
2
  import { textRenderer } from "../textRenderer/index.mjs";
3
3
  import EventManager from "../../eventManager.mjs";
4
4
  import { addClass, hasClass } from "../../helpers/dom/element.mjs";
5
+ import { A11Y_HASPOPUP, A11Y_HIDDEN } from "../../helpers/a11y.mjs";
5
6
  export const RENDERER_TYPE = 'autocomplete';
6
7
 
7
8
  /**
@@ -22,7 +23,11 @@ export function autocompleteRenderer(instance, TD, row, col, prop, value, cellPr
22
23
  } = instance;
23
24
  const rendererFunc = cellProperties.allowHtml ? htmlRenderer : textRenderer;
24
25
  const ARROW = rootDocument.createElement('DIV');
26
+ const isAriaEnabled = instance.getSettings().ariaTags;
25
27
  ARROW.className = 'htAutocompleteArrow';
28
+ if (isAriaEnabled) {
29
+ ARROW.setAttribute(...A11Y_HIDDEN());
30
+ }
26
31
  ARROW.appendChild(rootDocument.createTextNode(String.fromCharCode(9660)));
27
32
  rendererFunc.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
28
33
  if (!TD.firstChild) {
@@ -34,6 +39,9 @@ export function autocompleteRenderer(instance, TD, row, col, prop, value, cellPr
34
39
 
35
40
  TD.insertBefore(ARROW, TD.firstChild);
36
41
  addClass(TD, 'htAutocomplete');
42
+ if (isAriaEnabled) {
43
+ TD.setAttribute(...A11Y_HASPOPUP('listbox'));
44
+ }
37
45
  if (!instance.acArrowListener) {
38
46
  const eventManager = new EventManager(instance);
39
47
 
@@ -4,6 +4,7 @@ exports.__esModule = true;
4
4
  exports.baseRenderer = baseRenderer;
5
5
  require("core-js/modules/es.array.push.js");
6
6
  var _element = require("../../helpers/dom/element");
7
+ var _a11y = require("../../helpers/a11y");
7
8
  /**
8
9
  * Adds appropriate CSS class to table cell, based on cellProperties.
9
10
  */
@@ -21,18 +22,32 @@ const RENDERER_TYPE = 'base';
21
22
  */
22
23
  exports.RENDERER_TYPE = RENDERER_TYPE;
23
24
  function baseRenderer(instance, TD, row, col, prop, value, cellProperties) {
25
+ const ariaEnabled = cellProperties.ariaTags;
24
26
  const classesToAdd = [];
25
27
  const classesToRemove = [];
28
+ const attributesToRemove = [];
29
+ const attributesToAdd = [];
26
30
  if (cellProperties.className) {
27
31
  (0, _element.addClass)(TD, cellProperties.className);
28
32
  }
29
33
  if (cellProperties.readOnly) {
30
34
  classesToAdd.push(cellProperties.readOnlyCellClassName);
35
+ if (ariaEnabled) {
36
+ attributesToAdd.push((0, _a11y.A11Y_READONLY)());
37
+ }
38
+ } else if (ariaEnabled) {
39
+ attributesToRemove.push((0, _a11y.A11Y_READONLY)()[0]);
31
40
  }
32
41
  if (cellProperties.valid === false && cellProperties.invalidCellClassName) {
33
42
  classesToAdd.push(cellProperties.invalidCellClassName);
43
+ if (ariaEnabled) {
44
+ attributesToAdd.push((0, _a11y.A11Y_INVALID)());
45
+ }
34
46
  } else {
35
47
  classesToRemove.push(cellProperties.invalidCellClassName);
48
+ if (ariaEnabled) {
49
+ attributesToRemove.push((0, _a11y.A11Y_INVALID)()[0]);
50
+ }
36
51
  }
37
52
  if (cellProperties.wordWrap === false && cellProperties.noWordWrapClassName) {
38
53
  classesToAdd.push(cellProperties.noWordWrapClassName);
@@ -42,5 +57,7 @@ function baseRenderer(instance, TD, row, col, prop, value, cellProperties) {
42
57
  }
43
58
  (0, _element.removeClass)(TD, classesToRemove);
44
59
  (0, _element.addClass)(TD, classesToAdd);
60
+ (0, _element.removeAttribute)(TD, attributesToRemove);
61
+ (0, _element.setAttribute)(TD, attributesToAdd);
45
62
  }
46
63
  baseRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -2,7 +2,8 @@ import "core-js/modules/es.array.push.js";
2
2
  /**
3
3
  * Adds appropriate CSS class to table cell, based on cellProperties.
4
4
  */
5
- import { addClass, removeClass } from "../../helpers/dom/element.mjs";
5
+ import { addClass, removeAttribute, removeClass, setAttribute } from "../../helpers/dom/element.mjs";
6
+ import { A11Y_INVALID, A11Y_READONLY } from "../../helpers/a11y.mjs";
6
7
  export const RENDERER_TYPE = 'base';
7
8
 
8
9
  /**
@@ -15,18 +16,32 @@ export const RENDERER_TYPE = 'base';
15
16
  * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
16
17
  */
17
18
  export function baseRenderer(instance, TD, row, col, prop, value, cellProperties) {
19
+ const ariaEnabled = cellProperties.ariaTags;
18
20
  const classesToAdd = [];
19
21
  const classesToRemove = [];
22
+ const attributesToRemove = [];
23
+ const attributesToAdd = [];
20
24
  if (cellProperties.className) {
21
25
  addClass(TD, cellProperties.className);
22
26
  }
23
27
  if (cellProperties.readOnly) {
24
28
  classesToAdd.push(cellProperties.readOnlyCellClassName);
29
+ if (ariaEnabled) {
30
+ attributesToAdd.push(A11Y_READONLY());
31
+ }
32
+ } else if (ariaEnabled) {
33
+ attributesToRemove.push(A11Y_READONLY()[0]);
25
34
  }
26
35
  if (cellProperties.valid === false && cellProperties.invalidCellClassName) {
27
36
  classesToAdd.push(cellProperties.invalidCellClassName);
37
+ if (ariaEnabled) {
38
+ attributesToAdd.push(A11Y_INVALID());
39
+ }
28
40
  } else {
29
41
  classesToRemove.push(cellProperties.invalidCellClassName);
42
+ if (ariaEnabled) {
43
+ attributesToRemove.push(A11Y_INVALID()[0]);
44
+ }
30
45
  }
31
46
  if (cellProperties.wordWrap === false && cellProperties.noWordWrapClassName) {
32
47
  classesToAdd.push(cellProperties.noWordWrapClassName);
@@ -36,5 +51,7 @@ export function baseRenderer(instance, TD, row, col, prop, value, cellProperties
36
51
  }
37
52
  removeClass(TD, classesToRemove);
38
53
  addClass(TD, classesToAdd);
54
+ removeAttribute(TD, attributesToRemove);
55
+ setAttribute(TD, attributesToAdd);
39
56
  }
40
57
  baseRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -7,8 +7,10 @@ var _baseRenderer = require("../baseRenderer");
7
7
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
8
8
  var _element = require("../../helpers/dom/element");
9
9
  var _mixed = require("../../helpers/mixed");
10
- var _editorManager = require("../../editorManager");
10
+ var _shortcutContexts = require("../../shortcutContexts");
11
11
  var _pluginHooks = _interopRequireDefault(require("../../pluginHooks"));
12
+ var _a11y = require("../../helpers/a11y");
13
+ var _constants = require("../../i18n/constants");
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
15
  const isListeningKeyDownEvent = new WeakMap();
14
16
  const isCheckboxListenerAdded = new WeakMap();
@@ -61,6 +63,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
61
63
  const {
62
64
  rootDocument
63
65
  } = instance;
66
+ const ariaEnabled = instance.getSettings().ariaTags;
64
67
  _baseRenderer.baseRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
65
68
  registerEvents(instance);
66
69
  let input = createInput(rootDocument);
@@ -86,8 +89,10 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
86
89
  (0, _element.addClass)(input, BAD_VALUE_CLASS);
87
90
  badValue = true;
88
91
  }
89
- input.setAttribute(ATTR_ROW, row);
90
- input.setAttribute(ATTR_COLUMN, col);
92
+ (0, _element.setAttribute)(input, [[ATTR_ROW, row], [ATTR_COLUMN, col]]);
93
+ if (ariaEnabled) {
94
+ (0, _element.setAttribute)(input, [(0, _a11y.A11Y_LABEL)(input.checked ? instance.getTranslatedPhrase(_constants.CHECKBOX_CHECKED) : instance.getTranslatedPhrase(_constants.CHECKBOX_UNCHECKED)), (0, _a11y.A11Y_CHECKED)(input.checked), (0, _a11y.A11Y_CHECKBOX)()]);
95
+ }
91
96
  if (!badValue && labelOptions) {
92
97
  let labelText = '';
93
98
  if (labelOptions.value) {
@@ -158,7 +163,7 @@ function checkboxRenderer(instance, TD, row, col, prop, value, cellProperties) {
158
163
  return !areSelectedCheckboxCells(); // False blocks next action associated with the keyboard shortcut.
159
164
  },
160
165
 
161
- relativeToGroup: _editorManager.SHORTCUTS_GROUP_EDITOR,
166
+ relativeToGroup: _shortcutContexts.EDITOR_EDIT_GROUP,
162
167
  position: 'before'
163
168
  }], config);
164
169
  }