handsontable 0.0.0-next-010265d-20231005 → 0.0.0-next-9379dd1-20231020

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 (414) 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 +40 -5
  98. package/dist/handsontable.full.css +40 -5
  99. package/dist/handsontable.full.js +11744 -6945
  100. package/dist/handsontable.full.min.css +4 -4
  101. package/dist/handsontable.full.min.js +141 -141
  102. package/dist/handsontable.js +14036 -9237
  103. package/dist/handsontable.min.css +3 -3
  104. package/dist/handsontable.min.js +21 -21
  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/index.js +9 -0
  175. package/plugins/contextMenu/menu/index.mjs +1 -0
  176. package/plugins/contextMenu/{menu.js → menu/menu.js} +96 -308
  177. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +97 -309
  178. package/plugins/contextMenu/menu/navigator.js +152 -0
  179. package/plugins/contextMenu/menu/navigator.mjs +148 -0
  180. package/plugins/contextMenu/menu/positioner.js +213 -0
  181. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  182. package/plugins/contextMenu/menu/utils.js +177 -0
  183. package/plugins/contextMenu/menu/utils.mjs +163 -0
  184. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  185. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  186. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  187. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  188. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  189. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  190. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  191. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  192. package/plugins/contextMenu/{predefinedItems.js → predefinedItems/index.js} +14 -14
  193. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  194. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  195. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  196. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  197. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  198. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  199. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  200. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  201. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  202. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  203. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  204. package/plugins/contextMenu/utils.js +35 -151
  205. package/plugins/contextMenu/utils.mjs +35 -144
  206. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  207. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  208. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  209. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  210. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  211. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  212. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  213. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  214. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  215. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  216. package/plugins/copyPaste/copyPaste.js +127 -78
  217. package/plugins/copyPaste/copyPaste.mjs +128 -79
  218. package/plugins/customBorders/customBorders.js +23 -20
  219. package/plugins/customBorders/customBorders.mjs +24 -21
  220. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  221. package/plugins/dropdownMenu/dropdownMenu.js +97 -38
  222. package/plugins/dropdownMenu/dropdownMenu.mjs +96 -37
  223. package/plugins/filters/constants.mjs +1 -1
  224. package/plugins/filters/filters.js +31 -14
  225. package/plugins/filters/filters.mjs +31 -14
  226. package/plugins/filters/ui/select.js +3 -3
  227. package/plugins/filters/ui/select.mjs +2 -2
  228. package/plugins/hiddenColumns/hiddenColumns.mjs +1 -1
  229. package/plugins/hiddenRows/hiddenRows.mjs +1 -1
  230. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  231. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  232. package/plugins/mergeCells/mergeCells.js +5 -16
  233. package/plugins/mergeCells/mergeCells.mjs +5 -16
  234. package/plugins/multiColumnSorting/multiColumnSorting.js +37 -2
  235. package/plugins/multiColumnSorting/multiColumnSorting.mjs +37 -2
  236. package/plugins/nestedHeaders/nestedHeaders.js +240 -10
  237. package/plugins/nestedHeaders/nestedHeaders.mjs +241 -11
  238. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  239. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  240. package/plugins/nestedRows/nestedRows.js +41 -0
  241. package/plugins/nestedRows/nestedRows.mjs +41 -0
  242. package/plugins/nestedRows/ui/headers.js +11 -0
  243. package/plugins/nestedRows/ui/headers.mjs +12 -1
  244. package/renderers/autocompleteRenderer/autocompleteRenderer.js +8 -0
  245. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  246. package/renderers/baseRenderer/baseRenderer.js +17 -0
  247. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  248. package/renderers/checkboxRenderer/checkboxRenderer.js +9 -4
  249. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  250. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  251. package/renderers/dateRenderer/dateRenderer.js +29 -0
  252. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  253. package/renderers/dateRenderer/index.d.ts +1 -0
  254. package/renderers/dateRenderer/index.js +6 -0
  255. package/renderers/dateRenderer/index.mjs +1 -0
  256. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  257. package/renderers/handsontableRenderer/handsontableRenderer.js +29 -0
  258. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  259. package/renderers/handsontableRenderer/index.d.ts +1 -0
  260. package/renderers/handsontableRenderer/index.js +6 -0
  261. package/renderers/handsontableRenderer/index.mjs +1 -0
  262. package/renderers/index.d.ts +9 -0
  263. package/renderers/selectRenderer/index.d.ts +1 -0
  264. package/renderers/selectRenderer/index.js +6 -0
  265. package/renderers/selectRenderer/index.mjs +1 -0
  266. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  267. package/renderers/selectRenderer/selectRenderer.js +27 -0
  268. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  269. package/selection/highlight/highlight.js +256 -71
  270. package/selection/highlight/highlight.mjs +250 -71
  271. package/selection/highlight/types/activeHeader.js +10 -8
  272. package/selection/highlight/types/activeHeader.mjs +10 -8
  273. package/selection/highlight/types/area.js +6 -18
  274. package/selection/highlight/types/area.mjs +6 -18
  275. package/selection/highlight/types/areaLayered.js +31 -0
  276. package/selection/highlight/types/areaLayered.mjs +26 -0
  277. package/selection/highlight/types/column.js +27 -0
  278. package/selection/highlight/types/column.mjs +22 -0
  279. package/selection/highlight/types/customSelection.js +7 -9
  280. package/selection/highlight/types/customSelection.mjs +7 -9
  281. package/selection/highlight/types/fill.js +5 -7
  282. package/selection/highlight/types/fill.mjs +5 -7
  283. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  284. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  285. package/selection/highlight/types/header.js +9 -18
  286. package/selection/highlight/types/header.mjs +9 -18
  287. package/selection/highlight/types/row.js +27 -0
  288. package/selection/highlight/types/row.mjs +22 -0
  289. package/selection/highlight/visualSelection.js +31 -27
  290. package/selection/highlight/visualSelection.mjs +31 -27
  291. package/selection/index.js +4 -7
  292. package/selection/index.mjs +2 -3
  293. package/selection/mouseEventHandler.js +7 -1
  294. package/selection/mouseEventHandler.mjs +7 -1
  295. package/selection/range.js +8 -8
  296. package/selection/range.mjs +8 -8
  297. package/selection/selection.js +321 -152
  298. package/selection/selection.mjs +318 -151
  299. package/selection/transformation.js +232 -90
  300. package/selection/transformation.mjs +232 -90
  301. package/selection/utils.js +15 -21
  302. package/selection/utils.mjs +16 -21
  303. package/settings.d.ts +4 -0
  304. package/shortcutContexts/commands/editor/closeAndSave.js +12 -0
  305. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  306. package/shortcutContexts/commands/editor/closeWithoutSaving.js +12 -0
  307. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  308. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  309. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  310. package/shortcutContexts/commands/editor/index.js +16 -0
  311. package/shortcutContexts/commands/editor/index.mjs +12 -0
  312. package/shortcutContexts/commands/editor/open.js +27 -0
  313. package/shortcutContexts/commands/editor/open.mjs +23 -0
  314. package/shortcutContexts/commands/emptySelectedCells.js +11 -0
  315. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  316. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  317. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  318. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +25 -0
  319. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  320. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  321. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  322. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  323. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  324. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  325. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  326. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  327. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  328. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +29 -0
  329. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  330. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +19 -0
  331. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  332. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +19 -0
  333. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  334. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +29 -0
  335. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  336. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +29 -0
  337. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  338. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +29 -0
  339. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  340. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  341. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  342. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  343. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  344. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +25 -0
  345. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  346. package/shortcutContexts/commands/index.js +35 -0
  347. package/shortcutContexts/commands/index.mjs +31 -0
  348. package/shortcutContexts/commands/moveCellSelection/down.js +13 -0
  349. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  350. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +33 -0
  351. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  352. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  353. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  354. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +12 -0
  355. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  356. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +12 -0
  357. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  358. package/shortcutContexts/commands/moveCellSelection/left.js +10 -0
  359. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  360. package/shortcutContexts/commands/moveCellSelection/right.js +10 -0
  361. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  362. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +17 -0
  363. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  364. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +18 -0
  365. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  366. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +14 -0
  367. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  368. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +17 -0
  369. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  370. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +19 -0
  371. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  372. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +21 -0
  373. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  374. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +17 -0
  375. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  376. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +19 -0
  377. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  378. package/shortcutContexts/commands/moveCellSelection/up.js +13 -0
  379. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  380. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +33 -0
  381. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  382. package/shortcutContexts/commands/populateSelectedCellsData.js +29 -0
  383. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  384. package/shortcutContexts/commands/scrollToFocusedCell.js +35 -0
  385. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  386. package/shortcutContexts/commands/selectAll.js +12 -0
  387. package/shortcutContexts/commands/selectAll.mjs +8 -0
  388. package/shortcutContexts/constants.js +13 -0
  389. package/shortcutContexts/constants.mjs +8 -0
  390. package/shortcutContexts/editor.js +25 -0
  391. package/shortcutContexts/editor.mjs +21 -0
  392. package/shortcutContexts/grid.js +163 -0
  393. package/shortcutContexts/grid.mjs +159 -0
  394. package/shortcutContexts/index.js +24 -0
  395. package/shortcutContexts/index.mjs +11 -0
  396. package/shortcuts/context.js +20 -2
  397. package/shortcuts/context.mjs +20 -3
  398. package/shortcuts/manager.js +25 -7
  399. package/shortcuts/manager.mjs +26 -7
  400. package/shortcuts/recorder.js +3 -3
  401. package/shortcuts/recorder.mjs +3 -3
  402. package/shortcuts/utils.js +19 -5
  403. package/shortcuts/utils.mjs +18 -4
  404. package/tableView.js +111 -13
  405. package/tableView.mjs +112 -14
  406. package/3rdparty/walkontable/src/selection.js +0 -295
  407. package/3rdparty/walkontable/src/selection.mjs +0 -290
  408. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  409. package/plugins/copyPaste/focusableElement.js +0 -186
  410. package/plugins/copyPaste/focusableElement.mjs +0 -180
  411. package/selection/highlight/constants.js +0 -15
  412. package/selection/highlight/constants.mjs +0 -6
  413. package/selection/highlight/types/index.js +0 -35
  414. package/selection/highlight/types/index.mjs +0 -31
@@ -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
  }
@@ -1,10 +1,12 @@
1
1
  import "core-js/modules/es.array.push.js";
2
2
  import { baseRenderer } from "../baseRenderer/index.mjs";
3
3
  import EventManager from "../../eventManager.mjs";
4
- import { empty, addClass } from "../../helpers/dom/element.mjs";
4
+ import { empty, addClass, setAttribute } from "../../helpers/dom/element.mjs";
5
5
  import { isEmpty, stringify } from "../../helpers/mixed.mjs";
6
- import { SHORTCUTS_GROUP_EDITOR } from "../../editorManager.mjs";
6
+ import { EDITOR_EDIT_GROUP as SHORTCUTS_GROUP_EDITOR } from "../../shortcutContexts/index.mjs";
7
7
  import Hooks from "../../pluginHooks.mjs";
8
+ import { A11Y_CHECKBOX, A11Y_CHECKED, A11Y_LABEL } from "../../helpers/a11y.mjs";
9
+ import { CHECKBOX_CHECKED, CHECKBOX_UNCHECKED } from "../../i18n/constants.mjs";
8
10
  const isListeningKeyDownEvent = new WeakMap();
9
11
  const isCheckboxListenerAdded = new WeakMap();
10
12
  const BAD_VALUE_CLASS = 'htBadValue';
@@ -55,6 +57,7 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
55
57
  const {
56
58
  rootDocument
57
59
  } = instance;
60
+ const ariaEnabled = instance.getSettings().ariaTags;
58
61
  baseRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
59
62
  registerEvents(instance);
60
63
  let input = createInput(rootDocument);
@@ -80,8 +83,10 @@ export function checkboxRenderer(instance, TD, row, col, prop, value, cellProper
80
83
  addClass(input, BAD_VALUE_CLASS);
81
84
  badValue = true;
82
85
  }
83
- input.setAttribute(ATTR_ROW, row);
84
- input.setAttribute(ATTR_COLUMN, col);
86
+ setAttribute(input, [[ATTR_ROW, row], [ATTR_COLUMN, col]]);
87
+ if (ariaEnabled) {
88
+ setAttribute(input, [A11Y_LABEL(input.checked ? instance.getTranslatedPhrase(CHECKBOX_CHECKED) : instance.getTranslatedPhrase(CHECKBOX_UNCHECKED)), A11Y_CHECKED(input.checked), A11Y_CHECKBOX()]);
89
+ }
85
90
  if (!badValue && labelOptions) {
86
91
  let labelText = '';
87
92
  if (labelOptions.value) {
@@ -0,0 +1,5 @@
1
+ import Core from '../../core';
2
+ import { CellProperties } from '../../settings';
3
+
4
+ export const RENDERER_TYPE: 'date';
5
+ export function dateRenderer(instance: Core, TD: HTMLTableCellElement, row: number, col: number, prop: string | number, value: any, cellProperties: CellProperties): void;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.dateRenderer = dateRenderer;
5
+ var _autocompleteRenderer = require("../autocompleteRenderer");
6
+ var _a11y = require("../../helpers/a11y");
7
+ var _element = require("../../helpers/dom/element");
8
+ const RENDERER_TYPE = 'date';
9
+
10
+ /**
11
+ * Handsontable renderer.
12
+ *
13
+ * @private
14
+ * @param {Core} instance The Handsontable instance.
15
+ * @param {HTMLTableCellElement} TD The rendered cell element.
16
+ * @param {number} row The visual row index.
17
+ * @param {number} col The visual column index.
18
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
19
+ * @param {*} value The rendered value.
20
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
21
+ */
22
+ exports.RENDERER_TYPE = RENDERER_TYPE;
23
+ function dateRenderer(instance, TD, row, col, prop, value, cellProperties) {
24
+ _autocompleteRenderer.autocompleteRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
25
+ if (instance.getSettings().ariaTags) {
26
+ (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('dialog'), (0, _a11y.A11Y_EXPANDED)('false')]);
27
+ }
28
+ }
29
+ dateRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1,24 @@
1
+ import { autocompleteRenderer } from "../autocompleteRenderer/index.mjs";
2
+ import { A11Y_EXPANDED, A11Y_HASPOPUP } from "../../helpers/a11y.mjs";
3
+ import { setAttribute } from "../../helpers/dom/element.mjs";
4
+ export const RENDERER_TYPE = 'date';
5
+
6
+ /**
7
+ * Handsontable renderer.
8
+ *
9
+ * @private
10
+ * @param {Core} instance The Handsontable instance.
11
+ * @param {HTMLTableCellElement} TD The rendered cell element.
12
+ * @param {number} row The visual row index.
13
+ * @param {number} col The visual column index.
14
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
15
+ * @param {*} value The rendered value.
16
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
17
+ */
18
+ export function dateRenderer(instance, TD, row, col, prop, value, cellProperties) {
19
+ autocompleteRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
20
+ if (instance.getSettings().ariaTags) {
21
+ setAttribute(TD, [A11Y_HASPOPUP('dialog'), A11Y_EXPANDED('false')]);
22
+ }
23
+ }
24
+ dateRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, dateRenderer } from './dateRenderer';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _dateRenderer = require("./dateRenderer");
5
+ exports.RENDERER_TYPE = _dateRenderer.RENDERER_TYPE;
6
+ exports.dateRenderer = _dateRenderer.dateRenderer;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, dateRenderer } from "./dateRenderer.mjs";
@@ -0,0 +1,5 @@
1
+ import Core from '../../core';
2
+ import { CellProperties } from '../../settings';
3
+
4
+ export const RENDERER_TYPE: 'handsontable';
5
+ export function handsontableRenderer(instance: Core, TD: HTMLTableCellElement, row: number, col: number, prop: string | number, value: any, cellProperties: CellProperties): void;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.handsontableRenderer = handsontableRenderer;
5
+ var _autocompleteRenderer = require("../autocompleteRenderer");
6
+ var _a11y = require("../../helpers/a11y");
7
+ var _element = require("../../helpers/dom/element");
8
+ const RENDERER_TYPE = 'handsontable';
9
+
10
+ /**
11
+ * Handsontable renderer.
12
+ *
13
+ * @private
14
+ * @param {Core} instance The Handsontable instance.
15
+ * @param {HTMLTableCellElement} TD The rendered cell element.
16
+ * @param {number} row The visual row index.
17
+ * @param {number} col The visual column index.
18
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
19
+ * @param {*} value The rendered value.
20
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
21
+ */
22
+ exports.RENDERER_TYPE = RENDERER_TYPE;
23
+ function handsontableRenderer(instance, TD, row, col, prop, value, cellProperties) {
24
+ _autocompleteRenderer.autocompleteRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
25
+ if (instance.getSettings().ariaTags) {
26
+ (0, _element.setAttribute)(TD, [(0, _a11y.A11Y_HASPOPUP)('true'), (0, _a11y.A11Y_EXPANDED)('false')]);
27
+ }
28
+ }
29
+ handsontableRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1,24 @@
1
+ import { autocompleteRenderer } from "../autocompleteRenderer/index.mjs";
2
+ import { A11Y_EXPANDED, A11Y_HASPOPUP } from "../../helpers/a11y.mjs";
3
+ import { setAttribute } from "../../helpers/dom/element.mjs";
4
+ export const RENDERER_TYPE = 'handsontable';
5
+
6
+ /**
7
+ * Handsontable renderer.
8
+ *
9
+ * @private
10
+ * @param {Core} instance The Handsontable instance.
11
+ * @param {HTMLTableCellElement} TD The rendered cell element.
12
+ * @param {number} row The visual row index.
13
+ * @param {number} col The visual column index.
14
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
15
+ * @param {*} value The rendered value.
16
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
17
+ */
18
+ export function handsontableRenderer(instance, TD, row, col, prop, value, cellProperties) {
19
+ autocompleteRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
20
+ if (instance.getSettings().ariaTags) {
21
+ setAttribute(TD, [A11Y_HASPOPUP('true'), A11Y_EXPANDED('false')]);
22
+ }
23
+ }
24
+ handsontableRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, handsontableRenderer } from './handsontableRenderer';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _handsontableRenderer = require("./handsontableRenderer");
5
+ exports.RENDERER_TYPE = _handsontableRenderer.RENDERER_TYPE;
6
+ exports.handsontableRenderer = _handsontableRenderer.handsontableRenderer;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, handsontableRenderer } from "./handsontableRenderer.mjs";
@@ -1,9 +1,12 @@
1
1
  import { autocompleteRenderer, RENDERER_TYPE as AUTOCOMPLETE_RENDERER } from './autocompleteRenderer';
2
2
  import { baseRenderer, RENDERER_TYPE as BASE_RENDERER } from './baseRenderer';
3
+ import { dateRenderer, RENDERER_TYPE as DATE_RENDERER } from './dateRenderer';
3
4
  import { checkboxRenderer, RENDERER_TYPE as CHECKBOX_RENDERER } from './checkboxRenderer';
5
+ import { handsontableRenderer, RENDERER_TYPE as HANDSONTABLE_RENDERER } from "./handsontableRenderer";
4
6
  import { htmlRenderer, RENDERER_TYPE as HTML_RENDERER } from './htmlRenderer';
5
7
  import { numericRenderer, RENDERER_TYPE as NUMERIC_RENDERER } from './numericRenderer';
6
8
  import { passwordRenderer, RENDERER_TYPE as PASSWORD_RENDERER } from './passwordRenderer';
9
+ import { selectRenderer, RENDERER_TYPE as SELECT_RENDERER } from './selectRenderer';
7
10
  import { textRenderer, RENDERER_TYPE as TEXT_RENDERER } from './textRenderer';
8
11
  import { timeRenderer, RENDERER_TYPE as TIME_RENDERER } from './timeRenderer';
9
12
 
@@ -13,9 +16,12 @@ export interface Renderers {
13
16
  autocomplete: typeof autocompleteRenderer;
14
17
  base: typeof baseRenderer;
15
18
  checkbox: typeof checkboxRenderer;
19
+ date: typeof dateRenderer;
20
+ handsontable: typeof handsontableRenderer;
16
21
  html: typeof htmlRenderer;
17
22
  numeric: typeof numericRenderer;
18
23
  password: typeof passwordRenderer;
24
+ select: typeof selectRenderer;
19
25
  text: typeof textRenderer;
20
26
  time: typeof timeRenderer;
21
27
  }
@@ -29,9 +35,12 @@ export {
29
35
  autocompleteRenderer, AUTOCOMPLETE_RENDERER,
30
36
  baseRenderer, BASE_RENDERER,
31
37
  checkboxRenderer, CHECKBOX_RENDERER,
38
+ dateRenderer, DATE_RENDERER,
39
+ handsontableRenderer, HANDSONTABLE_RENDERER,
32
40
  htmlRenderer, HTML_RENDERER,
33
41
  numericRenderer, NUMERIC_RENDERER,
34
42
  passwordRenderer, PASSWORD_RENDERER,
43
+ selectRenderer, SELECT_RENDERER,
35
44
  textRenderer, TEXT_RENDERER,
36
45
  timeRenderer, TIME_RENDERER
37
46
  };
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, selectRenderer } from './selectRenderer';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ var _selectRenderer = require("./selectRenderer");
5
+ exports.RENDERER_TYPE = _selectRenderer.RENDERER_TYPE;
6
+ exports.selectRenderer = _selectRenderer.selectRenderer;
@@ -0,0 +1 @@
1
+ export { RENDERER_TYPE, selectRenderer } from "./selectRenderer.mjs";
@@ -0,0 +1,5 @@
1
+ import Core from '../../core';
2
+ import { CellProperties } from '../../settings';
3
+
4
+ export const RENDERER_TYPE: 'select';
5
+ export function selectRenderer(instance: Core, TD: HTMLTableCellElement, row: number, col: number, prop: string | number, value: any, cellProperties: CellProperties): void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.selectRenderer = selectRenderer;
5
+ var _textRenderer = require("../textRenderer");
6
+ var _a11y = require("../../helpers/a11y");
7
+ var _element = require("../../helpers/dom/element");
8
+ const RENDERER_TYPE = 'select';
9
+
10
+ /**
11
+ * @private
12
+ * @param {Core} instance The Handsontable instance.
13
+ * @param {HTMLTableCellElement} TD The rendered cell element.
14
+ * @param {number} row The visual row index.
15
+ * @param {number} col The visual column index.
16
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
17
+ * @param {*} value The rendered value.
18
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
19
+ */
20
+ exports.RENDERER_TYPE = RENDERER_TYPE;
21
+ function selectRenderer(instance, TD, row, col, prop, value, cellProperties) {
22
+ _textRenderer.textRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
23
+ if (instance.getSettings().ariaTags) {
24
+ (0, _element.setAttribute)(TD, ...(0, _a11y.A11Y_HASPOPUP)('listbox'));
25
+ }
26
+ }
27
+ selectRenderer.RENDERER_TYPE = RENDERER_TYPE;
@@ -0,0 +1,22 @@
1
+ import { textRenderer } from "../textRenderer/index.mjs";
2
+ import { A11Y_HASPOPUP } from "../../helpers/a11y.mjs";
3
+ import { setAttribute } from "../../helpers/dom/element.mjs";
4
+ export const RENDERER_TYPE = 'select';
5
+
6
+ /**
7
+ * @private
8
+ * @param {Core} instance The Handsontable instance.
9
+ * @param {HTMLTableCellElement} TD The rendered cell element.
10
+ * @param {number} row The visual row index.
11
+ * @param {number} col The visual column index.
12
+ * @param {number|string} prop The column property (passed when datasource is an array of objects).
13
+ * @param {*} value The rendered value.
14
+ * @param {object} cellProperties The cell meta object ({@see Core#getCellMeta}).
15
+ */
16
+ export function selectRenderer(instance, TD, row, col, prop, value, cellProperties) {
17
+ textRenderer.apply(this, [instance, TD, row, col, prop, value, cellProperties]);
18
+ if (instance.getSettings().ariaTags) {
19
+ setAttribute(TD, ...A11Y_HASPOPUP('listbox'));
20
+ }
21
+ }
22
+ selectRenderer.RENDERER_TYPE = RENDERER_TYPE;