handsontable 13.1.0 → 14.0.0-next-d97b156-20231027

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/3rdparty/walkontable/src/calculator/constants.js +3 -6
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.js +1 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +1 -2
  4. package/3rdparty/walkontable/src/cell/coords.d.ts +8 -1
  5. package/3rdparty/walkontable/src/cell/coords.js +81 -13
  6. package/3rdparty/walkontable/src/cell/coords.mjs +80 -11
  7. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  8. package/3rdparty/walkontable/src/cell/range.js +39 -9
  9. package/3rdparty/walkontable/src/cell/range.mjs +38 -7
  10. package/3rdparty/walkontable/src/core/_base.js +9 -3
  11. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  12. package/3rdparty/walkontable/src/core/clone.js +2 -2
  13. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  14. package/3rdparty/walkontable/src/core/core.js +3 -2
  15. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  16. package/3rdparty/walkontable/src/event.js +13 -12
  17. package/3rdparty/walkontable/src/event.mjs +12 -10
  18. package/3rdparty/walkontable/src/facade/core.js +2 -2
  19. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  20. package/3rdparty/walkontable/src/filter/column.js +1 -2
  21. package/3rdparty/walkontable/src/filter/row.js +1 -2
  22. package/3rdparty/walkontable/src/index.js +12 -4
  23. package/3rdparty/walkontable/src/index.mjs +2 -2
  24. package/3rdparty/walkontable/src/overlay/_base.js +13 -2
  25. package/3rdparty/walkontable/src/overlay/_base.mjs +14 -3
  26. package/3rdparty/walkontable/src/overlay/constants.js +7 -14
  27. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -6
  28. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -6
  29. package/3rdparty/walkontable/src/overlay/top.js +2 -6
  30. package/3rdparty/walkontable/src/overlay/top.mjs +2 -6
  31. package/3rdparty/walkontable/src/overlays.js +1 -2
  32. package/3rdparty/walkontable/src/renderer/cells.js +10 -0
  33. package/3rdparty/walkontable/src/renderer/cells.mjs +11 -1
  34. package/3rdparty/walkontable/src/renderer/columnHeaders.js +13 -0
  35. package/3rdparty/walkontable/src/renderer/columnHeaders.mjs +14 -1
  36. package/3rdparty/walkontable/src/renderer/rowHeaders.js +8 -0
  37. package/3rdparty/walkontable/src/renderer/rowHeaders.mjs +8 -0
  38. package/3rdparty/walkontable/src/renderer/rows.js +13 -0
  39. package/3rdparty/walkontable/src/renderer/rows.mjs +13 -0
  40. package/3rdparty/walkontable/src/renderer/table.js +9 -0
  41. package/3rdparty/walkontable/src/renderer/table.mjs +9 -0
  42. package/3rdparty/walkontable/src/scroll.js +3 -2
  43. package/3rdparty/walkontable/src/scroll.mjs +2 -0
  44. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +8 -14
  45. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  46. package/3rdparty/walkontable/src/selection/border/constants.js +15 -0
  47. package/3rdparty/walkontable/src/selection/border/constants.mjs +12 -0
  48. package/3rdparty/walkontable/src/selection/constants.js +54 -0
  49. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  50. package/3rdparty/walkontable/src/selection/index.js +26 -0
  51. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  52. package/3rdparty/walkontable/src/selection/manager.js +274 -0
  53. package/3rdparty/walkontable/src/selection/manager.mjs +269 -0
  54. package/3rdparty/walkontable/src/selection/scanner.js +270 -0
  55. package/3rdparty/walkontable/src/selection/scanner.mjs +267 -0
  56. package/3rdparty/walkontable/src/selection/selection.js +100 -0
  57. package/3rdparty/walkontable/src/selection/selection.mjs +96 -0
  58. package/3rdparty/walkontable/src/settings.js +13 -4
  59. package/3rdparty/walkontable/src/settings.mjs +13 -4
  60. package/3rdparty/walkontable/src/table/bottom.js +1 -2
  61. package/3rdparty/walkontable/src/table/bottomInlineStartCorner.js +1 -2
  62. package/3rdparty/walkontable/src/table/inlineStart.js +1 -2
  63. package/3rdparty/walkontable/src/table/master.js +3 -6
  64. package/3rdparty/walkontable/src/table/master.mjs +2 -4
  65. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +10 -2
  66. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  67. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +10 -2
  68. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  69. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +10 -2
  70. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  71. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +10 -2
  72. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  73. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +10 -2
  74. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  75. package/3rdparty/walkontable/src/table/top.js +1 -2
  76. package/3rdparty/walkontable/src/table/topInlineStartCorner.js +1 -2
  77. package/3rdparty/walkontable/src/table.js +20 -80
  78. package/3rdparty/walkontable/src/table.mjs +20 -79
  79. package/3rdparty/walkontable/src/utils/orderView/constants.js +3 -6
  80. package/3rdparty/walkontable/src/viewport.js +1 -2
  81. package/CHANGELOG.md +51 -0
  82. package/base.js +3 -4
  83. package/base.mjs +2 -2
  84. package/cellTypes/autocompleteType/autocompleteType.js +3 -5
  85. package/cellTypes/checkboxType/checkboxType.js +3 -5
  86. package/cellTypes/dateType/dateType.d.ts +3 -3
  87. package/cellTypes/dateType/dateType.js +5 -7
  88. package/cellTypes/dateType/dateType.mjs +2 -2
  89. package/cellTypes/dropdownType/dropdownType.js +3 -5
  90. package/cellTypes/handsontableType/handsontableType.d.ts +3 -3
  91. package/cellTypes/handsontableType/handsontableType.js +5 -7
  92. package/cellTypes/handsontableType/handsontableType.mjs +2 -2
  93. package/cellTypes/index.d.ts +3 -0
  94. package/cellTypes/index.js +4 -0
  95. package/cellTypes/index.mjs +3 -1
  96. package/cellTypes/numericType/numericType.js +3 -5
  97. package/cellTypes/passwordType/passwordType.js +3 -5
  98. package/cellTypes/selectType/index.d.ts +1 -0
  99. package/cellTypes/selectType/index.js +6 -0
  100. package/cellTypes/selectType/index.mjs +1 -0
  101. package/cellTypes/selectType/selectType.d.ts +14 -0
  102. package/cellTypes/selectType/selectType.js +11 -0
  103. package/cellTypes/selectType/selectType.mjs +8 -0
  104. package/cellTypes/textType/textType.js +3 -5
  105. package/cellTypes/timeType/timeType.js +3 -5
  106. package/common.d.ts +1 -1
  107. package/core/focusCatcher/focusDetector.js +63 -0
  108. package/core/focusCatcher/focusDetector.mjs +59 -0
  109. package/core/focusCatcher/index.js +148 -0
  110. package/core/focusCatcher/index.mjs +144 -0
  111. package/core/index.js +9 -0
  112. package/core/index.mjs +1 -0
  113. package/core.d.ts +10 -5
  114. package/core.js +327 -359
  115. package/core.mjs +327 -359
  116. package/dataMap/dataMap.js +1 -2
  117. package/dataMap/dataSource.js +1 -2
  118. package/dataMap/metaManager/metaSchema.js +65 -0
  119. package/dataMap/metaManager/metaSchema.mjs +65 -0
  120. package/dataMap/metaManager/mods/extendMetaProperties.js +7 -1
  121. package/dataMap/metaManager/mods/extendMetaProperties.mjs +7 -1
  122. package/dataMap/replaceData.js +5 -0
  123. package/dataMap/replaceData.mjs +5 -0
  124. package/dist/handsontable.css +94 -76
  125. package/dist/handsontable.full.css +94 -76
  126. package/dist/handsontable.full.js +21236 -14104
  127. package/dist/handsontable.full.min.css +8 -8
  128. package/dist/handsontable.full.min.js +170 -152
  129. package/dist/handsontable.js +22016 -15254
  130. package/dist/handsontable.min.css +7 -7
  131. package/dist/handsontable.min.js +31 -23
  132. package/dist/languages/all.js +47 -40
  133. package/dist/languages/all.min.js +1 -1
  134. package/dist/languages/ar-AR.js +1 -2
  135. package/dist/languages/cs-CZ.js +1 -2
  136. package/dist/languages/de-CH.js +1 -2
  137. package/dist/languages/de-DE.js +1 -2
  138. package/dist/languages/en-US.js +15 -3
  139. package/dist/languages/en-US.min.js +1 -1
  140. package/dist/languages/es-MX.js +1 -2
  141. package/dist/languages/fr-FR.js +1 -2
  142. package/dist/languages/it-IT.js +1 -2
  143. package/dist/languages/ja-JP.js +1 -2
  144. package/dist/languages/ko-KR.js +1 -2
  145. package/dist/languages/lv-LV.js +1 -2
  146. package/dist/languages/nb-NO.js +1 -2
  147. package/dist/languages/nl-NL.js +1 -2
  148. package/dist/languages/pl-PL.js +15 -3
  149. package/dist/languages/pl-PL.min.js +1 -1
  150. package/dist/languages/pt-BR.js +1 -2
  151. package/dist/languages/ru-RU.js +1 -2
  152. package/dist/languages/sr-SP.js +1 -2
  153. package/dist/languages/zh-CN.js +1 -2
  154. package/dist/languages/zh-TW.js +1 -2
  155. package/editorManager.js +17 -91
  156. package/editorManager.mjs +16 -87
  157. package/editors/autocompleteEditor/autocompleteEditor.js +65 -11
  158. package/editors/autocompleteEditor/autocompleteEditor.mjs +65 -10
  159. package/editors/baseEditor/baseEditor.js +19 -13
  160. package/editors/baseEditor/baseEditor.mjs +16 -7
  161. package/editors/checkboxEditor/checkboxEditor.js +1 -2
  162. package/editors/dateEditor/dateEditor.js +27 -9
  163. package/editors/dateEditor/dateEditor.mjs +27 -8
  164. package/editors/dropdownEditor/dropdownEditor.js +1 -2
  165. package/editors/handsontableEditor/handsontableEditor.js +14 -7
  166. package/editors/handsontableEditor/handsontableEditor.mjs +14 -6
  167. package/editors/numericEditor/numericEditor.js +1 -2
  168. package/editors/passwordEditor/passwordEditor.js +1 -2
  169. package/editors/selectEditor/selectEditor.js +1 -2
  170. package/editors/textEditor/textEditor.js +20 -29
  171. package/editors/textEditor/textEditor.mjs +22 -30
  172. package/editors/timeEditor/timeEditor.js +1 -2
  173. package/eventManager.js +1 -2
  174. package/focusManager.d.ts +12 -0
  175. package/focusManager.js +265 -0
  176. package/focusManager.mjs +261 -0
  177. package/helpers/a11y.js +81 -0
  178. package/helpers/a11y.mjs +39 -0
  179. package/helpers/dom/element.js +224 -12
  180. package/helpers/dom/element.mjs +216 -10
  181. package/helpers/dom/event.d.ts +1 -0
  182. package/helpers/dom/event.js +25 -0
  183. package/helpers/dom/event.mjs +24 -0
  184. package/helpers/mixed.js +2 -2
  185. package/helpers/mixed.mjs +2 -2
  186. package/helpers/number.d.ts +1 -0
  187. package/helpers/number.js +18 -0
  188. package/helpers/number.mjs +17 -0
  189. package/helpers/unicode.js +1 -2
  190. package/i18n/constants.js +97 -160
  191. package/i18n/constants.mjs +17 -1
  192. package/i18n/languages/ar-AR.js +3 -4
  193. package/i18n/languages/cs-CZ.js +3 -4
  194. package/i18n/languages/de-CH.js +3 -4
  195. package/i18n/languages/de-DE.js +3 -4
  196. package/i18n/languages/en-US.js +17 -5
  197. package/i18n/languages/en-US.mjs +14 -1
  198. package/i18n/languages/es-MX.js +3 -4
  199. package/i18n/languages/fr-FR.js +3 -4
  200. package/i18n/languages/it-IT.js +3 -4
  201. package/i18n/languages/ja-JP.js +3 -4
  202. package/i18n/languages/ko-KR.js +3 -4
  203. package/i18n/languages/lv-LV.js +3 -4
  204. package/i18n/languages/nb-NO.js +3 -4
  205. package/i18n/languages/nl-NL.js +3 -4
  206. package/i18n/languages/pl-PL.js +17 -5
  207. package/i18n/languages/pl-PL.mjs +14 -1
  208. package/i18n/languages/pt-BR.js +3 -4
  209. package/i18n/languages/ru-RU.js +3 -4
  210. package/i18n/languages/sr-SP.js +3 -4
  211. package/i18n/languages/zh-CN.js +3 -4
  212. package/i18n/languages/zh-TW.js +3 -4
  213. package/i18n/registry.js +4 -6
  214. package/index.js +3 -4
  215. package/languages/all.js +47 -40
  216. package/languages/ar-AR.js +1 -2
  217. package/languages/cs-CZ.js +1 -2
  218. package/languages/de-CH.js +1 -2
  219. package/languages/de-DE.js +1 -2
  220. package/languages/en-US.js +15 -3
  221. package/languages/en-US.mjs +14 -1
  222. package/languages/es-MX.js +1 -2
  223. package/languages/fr-FR.js +1 -2
  224. package/languages/index.js +47 -40
  225. package/languages/it-IT.js +1 -2
  226. package/languages/ja-JP.js +1 -2
  227. package/languages/ko-KR.js +1 -2
  228. package/languages/lv-LV.js +1 -2
  229. package/languages/nb-NO.js +1 -2
  230. package/languages/nl-NL.js +1 -2
  231. package/languages/pl-PL.js +15 -3
  232. package/languages/pl-PL.mjs +14 -1
  233. package/languages/pt-BR.js +1 -2
  234. package/languages/ru-RU.js +1 -2
  235. package/languages/sr-SP.js +1 -2
  236. package/languages/zh-CN.js +1 -2
  237. package/languages/zh-TW.js +1 -2
  238. package/mixins/hooksRefRegisterer.js +1 -2
  239. package/mixins/localHooks.js +1 -2
  240. package/package.json +119 -96
  241. package/pluginHooks.d.ts +42 -7
  242. package/pluginHooks.js +301 -65
  243. package/pluginHooks.mjs +300 -63
  244. package/plugins/autoColumnSize/autoColumnSize.d.ts +2 -0
  245. package/plugins/autoColumnSize/autoColumnSize.js +2 -4
  246. package/plugins/autoRowSize/autoRowSize.d.ts +2 -0
  247. package/plugins/autoRowSize/autoRowSize.js +15 -10
  248. package/plugins/autoRowSize/autoRowSize.mjs +13 -6
  249. package/plugins/autofill/autofill.js +2 -4
  250. package/plugins/autofill/utils.js +1 -2
  251. package/plugins/base/base.js +1 -2
  252. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +2 -4
  253. package/plugins/bindRowsWithHeaders/maps/looseBindsMap.js +1 -2
  254. package/plugins/bindRowsWithHeaders/maps/strictBindsMap.js +1 -2
  255. package/plugins/collapsibleColumns/collapsibleColumns.js +77 -8
  256. package/plugins/collapsibleColumns/collapsibleColumns.mjs +76 -5
  257. package/plugins/columnSorting/columnSorting.js +71 -6
  258. package/plugins/columnSorting/columnSorting.mjs +70 -3
  259. package/plugins/columnSorting/index.js +3 -1
  260. package/plugins/columnSorting/index.mjs +1 -1
  261. package/plugins/columnSorting/sortFunction/checkbox.js +1 -2
  262. package/plugins/columnSorting/sortFunction/date.js +1 -2
  263. package/plugins/columnSorting/sortFunction/default.js +1 -2
  264. package/plugins/columnSorting/sortFunction/numeric.js +1 -2
  265. package/plugins/columnSorting/sortService/engine.js +3 -6
  266. package/plugins/columnSorting/utils.js +3 -6
  267. package/plugins/columnSummary/columnSummary.js +2 -4
  268. package/plugins/columnSummary/endpoints.js +1 -2
  269. package/plugins/comments/commentEditor.js +2 -2
  270. package/plugins/comments/commentEditor.mjs +1 -0
  271. package/plugins/comments/comments.js +254 -197
  272. package/plugins/comments/comments.mjs +251 -190
  273. package/plugins/comments/contextMenuItem/addEditComment.js +41 -0
  274. package/plugins/comments/contextMenuItem/addEditComment.mjs +35 -0
  275. package/plugins/comments/contextMenuItem/readOnlyComment.js +49 -0
  276. package/plugins/comments/contextMenuItem/readOnlyComment.mjs +43 -0
  277. package/plugins/comments/contextMenuItem/removeComment.js +38 -0
  278. package/plugins/comments/contextMenuItem/removeComment.mjs +32 -0
  279. package/plugins/comments/displaySwitch.js +1 -2
  280. package/plugins/contextMenu/commandExecutor.js +2 -3
  281. package/plugins/contextMenu/commandExecutor.mjs +2 -3
  282. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  283. package/plugins/contextMenu/contextMenu.js +77 -40
  284. package/plugins/contextMenu/contextMenu.mjs +74 -35
  285. package/plugins/contextMenu/itemsFactory.js +2 -3
  286. package/plugins/contextMenu/itemsFactory.mjs +3 -4
  287. package/plugins/contextMenu/{cursor.mjs → menu/cursor.js} +6 -4
  288. package/plugins/contextMenu/{cursor.js → menu/cursor.mjs} +4 -10
  289. package/plugins/contextMenu/menu/defaultShortcutsList.js +88 -0
  290. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +84 -0
  291. package/plugins/contextMenu/menu/index.js +9 -0
  292. package/plugins/contextMenu/menu/index.mjs +1 -0
  293. package/plugins/contextMenu/{menu.js → menu/menu.js} +145 -421
  294. package/plugins/contextMenu/{menu.mjs → menu/menu.mjs} +146 -422
  295. package/plugins/contextMenu/menu/menuItemRenderer.js +70 -0
  296. package/plugins/contextMenu/menu/menuItemRenderer.mjs +66 -0
  297. package/plugins/contextMenu/menu/navigator.js +27 -0
  298. package/plugins/contextMenu/menu/navigator.mjs +23 -0
  299. package/plugins/contextMenu/menu/positioner.js +213 -0
  300. package/plugins/contextMenu/menu/positioner.mjs +209 -0
  301. package/plugins/contextMenu/menu/shortcuts.js +114 -0
  302. package/plugins/contextMenu/menu/shortcuts.mjs +110 -0
  303. package/plugins/contextMenu/menu/utils.js +177 -0
  304. package/plugins/contextMenu/menu/utils.mjs +163 -0
  305. package/plugins/contextMenu/predefinedItems/alignment.js +10 -4
  306. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  307. package/plugins/contextMenu/predefinedItems/clearColumn.js +8 -7
  308. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  309. package/plugins/contextMenu/predefinedItems/columnLeft.js +8 -7
  310. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  311. package/plugins/contextMenu/predefinedItems/columnRight.js +8 -7
  312. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  313. package/plugins/contextMenu/predefinedItems/index.js +75 -0
  314. package/plugins/contextMenu/predefinedItems/index.mjs +68 -0
  315. package/plugins/contextMenu/predefinedItems/noItems.js +1 -2
  316. package/plugins/contextMenu/predefinedItems/readOnly.js +10 -4
  317. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  318. package/plugins/contextMenu/predefinedItems/redo.js +3 -4
  319. package/plugins/contextMenu/predefinedItems/removeColumn.js +10 -9
  320. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  321. package/plugins/contextMenu/predefinedItems/removeRow.js +10 -9
  322. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  323. package/plugins/contextMenu/predefinedItems/rowAbove.js +8 -7
  324. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  325. package/plugins/contextMenu/predefinedItems/rowBelow.js +8 -7
  326. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  327. package/plugins/contextMenu/predefinedItems/separator.js +1 -2
  328. package/plugins/contextMenu/predefinedItems/undo.js +3 -4
  329. package/plugins/contextMenu/utils.js +35 -151
  330. package/plugins/contextMenu/utils.mjs +35 -144
  331. package/plugins/copyPaste/clipboardData/clipboardData.js +516 -0
  332. package/plugins/copyPaste/clipboardData/clipboardData.mjs +512 -0
  333. package/plugins/copyPaste/clipboardData/copyClipboardData.js +69 -0
  334. package/plugins/copyPaste/clipboardData/copyClipboardData.mjs +65 -0
  335. package/plugins/copyPaste/clipboardData/index.js +9 -0
  336. package/plugins/copyPaste/clipboardData/index.mjs +4 -0
  337. package/plugins/copyPaste/clipboardData/pasteClipboardData.js +81 -0
  338. package/plugins/copyPaste/clipboardData/pasteClipboardData.mjs +77 -0
  339. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  340. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  341. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  342. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  343. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  344. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  345. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  346. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  347. package/plugins/copyPaste/contextMenuItem/cut.js +9 -2
  348. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  349. package/plugins/copyPaste/copyPaste.js +160 -167
  350. package/plugins/copyPaste/copyPaste.mjs +161 -166
  351. package/plugins/customBorders/contextMenuItem/bottom.js +2 -2
  352. package/plugins/customBorders/contextMenuItem/left.js +2 -2
  353. package/plugins/customBorders/contextMenuItem/noBorders.js +2 -2
  354. package/plugins/customBorders/contextMenuItem/right.js +2 -2
  355. package/plugins/customBorders/contextMenuItem/top.js +2 -2
  356. package/plugins/customBorders/customBorders.js +27 -26
  357. package/plugins/customBorders/customBorders.mjs +24 -21
  358. package/plugins/dragToScroll/dragToScroll.js +2 -4
  359. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  360. package/plugins/dropdownMenu/dropdownMenu.js +130 -44
  361. package/plugins/dropdownMenu/dropdownMenu.mjs +127 -39
  362. package/plugins/exportFile/dataProvider.js +1 -2
  363. package/plugins/exportFile/exportFile.js +4 -6
  364. package/plugins/exportFile/typeFactory.js +5 -8
  365. package/plugins/exportFile/types/_base.js +1 -2
  366. package/plugins/exportFile/types/csv.js +1 -2
  367. package/plugins/filters/component/_base.js +23 -8
  368. package/plugins/filters/component/_base.mjs +23 -8
  369. package/plugins/filters/component/actionBar.js +31 -29
  370. package/plugins/filters/component/actionBar.mjs +26 -23
  371. package/plugins/filters/component/condition.js +48 -61
  372. package/plugins/filters/component/condition.mjs +40 -52
  373. package/plugins/filters/component/operators.js +21 -22
  374. package/plugins/filters/component/operators.mjs +18 -18
  375. package/plugins/filters/component/value.js +37 -28
  376. package/plugins/filters/component/value.mjs +32 -22
  377. package/plugins/filters/condition/beginsWith.js +3 -4
  378. package/plugins/filters/condition/between.js +3 -4
  379. package/plugins/filters/condition/byValue.js +1 -2
  380. package/plugins/filters/condition/contains.js +3 -4
  381. package/plugins/filters/condition/date/after.js +3 -4
  382. package/plugins/filters/condition/date/before.js +3 -4
  383. package/plugins/filters/condition/date/today.js +3 -4
  384. package/plugins/filters/condition/date/tomorrow.js +3 -4
  385. package/plugins/filters/condition/date/yesterday.js +3 -4
  386. package/plugins/filters/condition/empty.js +3 -4
  387. package/plugins/filters/condition/endsWith.js +3 -4
  388. package/plugins/filters/condition/equal.js +3 -4
  389. package/plugins/filters/condition/false.js +1 -2
  390. package/plugins/filters/condition/greaterThan.js +3 -4
  391. package/plugins/filters/condition/greaterThanOrEqual.js +3 -4
  392. package/plugins/filters/condition/lessThan.js +3 -4
  393. package/plugins/filters/condition/lessThanOrEqual.js +3 -4
  394. package/plugins/filters/condition/none.js +3 -4
  395. package/plugins/filters/condition/notBetween.js +3 -4
  396. package/plugins/filters/condition/notContains.js +3 -4
  397. package/plugins/filters/condition/notEmpty.js +3 -4
  398. package/plugins/filters/condition/notEqual.js +3 -4
  399. package/plugins/filters/condition/true.js +1 -2
  400. package/plugins/filters/conditionCollection.d.ts +3 -2
  401. package/plugins/filters/conditionCollection.js +1 -2
  402. package/plugins/filters/conditionRegisterer.js +1 -2
  403. package/plugins/filters/conditionUpdateObserver.js +1 -2
  404. package/plugins/filters/constants.js +4 -8
  405. package/plugins/filters/constants.mjs +1 -1
  406. package/plugins/filters/dataFilter.js +1 -2
  407. package/plugins/filters/filters.d.ts +3 -5
  408. package/plugins/filters/filters.js +108 -66
  409. package/plugins/filters/filters.mjs +99 -55
  410. package/plugins/filters/logicalOperationRegisterer.js +1 -2
  411. package/plugins/filters/logicalOperations/conjunction.js +4 -6
  412. package/plugins/filters/logicalOperations/disjunction.js +4 -6
  413. package/plugins/filters/logicalOperations/disjunctionWithExtraCondition.js +4 -6
  414. package/plugins/filters/menu/focusController.js +123 -0
  415. package/plugins/filters/menu/focusController.mjs +119 -0
  416. package/plugins/filters/menu/focusNavigator.js +30 -0
  417. package/plugins/filters/menu/focusNavigator.mjs +26 -0
  418. package/plugins/filters/ui/_base.js +37 -15
  419. package/plugins/filters/ui/_base.mjs +35 -13
  420. package/plugins/filters/ui/input.js +43 -35
  421. package/plugins/filters/ui/input.mjs +42 -33
  422. package/plugins/filters/ui/link.js +44 -12
  423. package/plugins/filters/ui/link.mjs +44 -11
  424. package/plugins/filters/ui/multipleSelect.js +237 -133
  425. package/plugins/filters/ui/multipleSelect.mjs +232 -127
  426. package/plugins/filters/ui/radioInput.js +42 -18
  427. package/plugins/filters/ui/radioInput.mjs +42 -17
  428. package/plugins/filters/ui/select.js +152 -77
  429. package/plugins/filters/ui/select.mjs +148 -72
  430. package/plugins/formulas/engine/settings.js +2 -4
  431. package/plugins/formulas/formulas.js +3 -6
  432. package/plugins/formulas/indexSyncer/axisSyncer.js +1 -2
  433. package/plugins/formulas/indexSyncer/index.js +1 -2
  434. package/plugins/hiddenColumns/contextMenuItem/hideColumn.js +2 -2
  435. package/plugins/hiddenColumns/contextMenuItem/showColumn.js +2 -2
  436. package/plugins/hiddenColumns/hiddenColumns.d.ts +1 -0
  437. package/plugins/hiddenColumns/hiddenColumns.js +49 -6
  438. package/plugins/hiddenColumns/hiddenColumns.mjs +48 -3
  439. package/plugins/hiddenRows/contextMenuItem/hideRow.js +2 -2
  440. package/plugins/hiddenRows/contextMenuItem/showRow.js +2 -2
  441. package/plugins/hiddenRows/hiddenRows.d.ts +1 -0
  442. package/plugins/hiddenRows/hiddenRows.js +49 -6
  443. package/plugins/hiddenRows/hiddenRows.mjs +48 -3
  444. package/plugins/manualColumnFreeze/contextMenuItem/freezeColumn.js +2 -2
  445. package/plugins/manualColumnFreeze/contextMenuItem/unfreezeColumn.js +2 -2
  446. package/plugins/manualColumnFreeze/manualColumnFreeze.js +2 -4
  447. package/plugins/manualColumnMove/manualColumnMove.js +9 -17
  448. package/plugins/manualColumnMove/manualColumnMove.mjs +7 -13
  449. package/plugins/manualColumnMove/ui/_base.js +1 -2
  450. package/plugins/manualColumnMove/ui/backlight.js +1 -2
  451. package/plugins/manualColumnMove/ui/guideline.js +1 -2
  452. package/plugins/manualColumnResize/manualColumnResize.js +2 -4
  453. package/plugins/manualRowMove/manualRowMove.js +6 -23
  454. package/plugins/manualRowMove/manualRowMove.mjs +4 -19
  455. package/plugins/manualRowMove/ui/_base.js +1 -2
  456. package/plugins/manualRowMove/ui/backlight.js +1 -2
  457. package/plugins/manualRowMove/ui/guideline.js +1 -2
  458. package/plugins/manualRowResize/manualRowResize.js +2 -4
  459. package/plugins/mergeCells/calculations/autofill.js +1 -2
  460. package/plugins/mergeCells/calculations/selection.js +1 -2
  461. package/plugins/mergeCells/cellCoords.js +1 -2
  462. package/plugins/mergeCells/cellsCollection.js +1 -2
  463. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +2 -2
  464. package/plugins/mergeCells/mergeCells.js +7 -20
  465. package/plugins/mergeCells/mergeCells.mjs +5 -16
  466. package/plugins/multiColumnSorting/multiColumnSorting.js +60 -6
  467. package/plugins/multiColumnSorting/multiColumnSorting.mjs +59 -3
  468. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +2 -4
  469. package/plugins/nestedHeaders/nestedHeaders.js +263 -36
  470. package/plugins/nestedHeaders/nestedHeaders.mjs +262 -33
  471. package/plugins/nestedHeaders/stateManager/index.js +102 -3
  472. package/plugins/nestedHeaders/stateManager/index.mjs +102 -3
  473. package/plugins/nestedHeaders/stateManager/sourceSettings.js +1 -2
  474. package/plugins/nestedHeaders/utils/ghostTable.js +1 -2
  475. package/plugins/nestedRows/data/dataManager.js +1 -2
  476. package/plugins/nestedRows/nestedRows.js +47 -10
  477. package/plugins/nestedRows/nestedRows.mjs +45 -6
  478. package/plugins/nestedRows/ui/_base.js +1 -2
  479. package/plugins/nestedRows/ui/collapsing.js +1 -2
  480. package/plugins/nestedRows/ui/contextMenu.js +3 -4
  481. package/plugins/nestedRows/ui/headers.js +13 -3
  482. package/plugins/nestedRows/ui/headers.mjs +13 -2
  483. package/plugins/persistentState/persistentState.js +2 -4
  484. package/plugins/persistentState/storage.js +1 -2
  485. package/plugins/search/search.js +2 -4
  486. package/plugins/touchScroll/touchScroll.js +2 -4
  487. package/plugins/trimRows/trimRows.js +2 -4
  488. package/plugins/undoRedo/index.js +2 -2
  489. package/plugins/undoRedo/undoRedo.js +2 -4
  490. package/renderers/autocompleteRenderer/autocompleteRenderer.js +9 -2
  491. package/renderers/autocompleteRenderer/autocompleteRenderer.mjs +8 -0
  492. package/renderers/baseRenderer/baseRenderer.js +18 -2
  493. package/renderers/baseRenderer/baseRenderer.mjs +18 -1
  494. package/renderers/checkboxRenderer/checkboxRenderer.js +10 -6
  495. package/renderers/checkboxRenderer/checkboxRenderer.mjs +9 -4
  496. package/renderers/dateRenderer/dateRenderer.d.ts +5 -0
  497. package/renderers/dateRenderer/dateRenderer.js +28 -0
  498. package/renderers/dateRenderer/dateRenderer.mjs +24 -0
  499. package/renderers/dateRenderer/index.d.ts +1 -0
  500. package/renderers/dateRenderer/index.js +6 -0
  501. package/renderers/dateRenderer/index.mjs +1 -0
  502. package/renderers/handsontableRenderer/handsontableRenderer.d.ts +5 -0
  503. package/renderers/handsontableRenderer/handsontableRenderer.js +28 -0
  504. package/renderers/handsontableRenderer/handsontableRenderer.mjs +24 -0
  505. package/renderers/handsontableRenderer/index.d.ts +1 -0
  506. package/renderers/handsontableRenderer/index.js +6 -0
  507. package/renderers/handsontableRenderer/index.mjs +1 -0
  508. package/renderers/htmlRenderer/htmlRenderer.js +1 -2
  509. package/renderers/index.d.ts +9 -0
  510. package/renderers/numericRenderer/numericRenderer.js +1 -2
  511. package/renderers/passwordRenderer/passwordRenderer.js +1 -2
  512. package/renderers/selectRenderer/index.d.ts +1 -0
  513. package/renderers/selectRenderer/index.js +6 -0
  514. package/renderers/selectRenderer/index.mjs +1 -0
  515. package/renderers/selectRenderer/selectRenderer.d.ts +5 -0
  516. package/renderers/selectRenderer/selectRenderer.js +26 -0
  517. package/renderers/selectRenderer/selectRenderer.mjs +22 -0
  518. package/renderers/textRenderer/textRenderer.js +1 -2
  519. package/renderers/timeRenderer/timeRenderer.js +1 -2
  520. package/selection/highlight/highlight.js +257 -73
  521. package/selection/highlight/highlight.mjs +250 -71
  522. package/selection/highlight/types/activeHeader.js +10 -8
  523. package/selection/highlight/types/activeHeader.mjs +10 -8
  524. package/selection/highlight/types/area.js +6 -18
  525. package/selection/highlight/types/area.mjs +6 -18
  526. package/selection/highlight/types/areaLayered.js +31 -0
  527. package/selection/highlight/types/areaLayered.mjs +26 -0
  528. package/selection/highlight/types/column.js +27 -0
  529. package/selection/highlight/types/column.mjs +22 -0
  530. package/selection/highlight/types/customSelection.js +7 -9
  531. package/selection/highlight/types/customSelection.mjs +7 -9
  532. package/selection/highlight/types/fill.js +5 -7
  533. package/selection/highlight/types/fill.mjs +5 -7
  534. package/selection/highlight/types/{cell.js → focus.js} +5 -7
  535. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  536. package/selection/highlight/types/header.js +9 -18
  537. package/selection/highlight/types/header.mjs +9 -18
  538. package/selection/highlight/types/row.js +27 -0
  539. package/selection/highlight/types/row.mjs +22 -0
  540. package/selection/highlight/visualSelection.js +32 -29
  541. package/selection/highlight/visualSelection.mjs +31 -27
  542. package/selection/index.js +4 -7
  543. package/selection/index.mjs +2 -3
  544. package/selection/mouseEventHandler.js +7 -1
  545. package/selection/mouseEventHandler.mjs +7 -1
  546. package/selection/range.js +9 -10
  547. package/selection/range.mjs +8 -8
  548. package/selection/selection.js +334 -154
  549. package/selection/selection.mjs +330 -151
  550. package/selection/transformation.js +233 -94
  551. package/selection/transformation.mjs +232 -92
  552. package/selection/utils.js +20 -31
  553. package/selection/utils.mjs +16 -21
  554. package/settings.d.ts +4 -0
  555. package/shortcutContexts/commands/editor/closeAndSave.js +11 -0
  556. package/shortcutContexts/commands/editor/closeAndSave.mjs +8 -0
  557. package/shortcutContexts/commands/editor/closeWithoutSaving.js +11 -0
  558. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  559. package/shortcutContexts/commands/editor/fastOpen.js +15 -0
  560. package/shortcutContexts/commands/editor/fastOpen.mjs +12 -0
  561. package/shortcutContexts/commands/editor/index.js +16 -0
  562. package/shortcutContexts/commands/editor/index.mjs +12 -0
  563. package/shortcutContexts/commands/editor/open.js +26 -0
  564. package/shortcutContexts/commands/editor/open.mjs +23 -0
  565. package/shortcutContexts/commands/emptySelectedCells.js +10 -0
  566. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  567. package/shortcutContexts/commands/extendCellsSelection/down.js +14 -0
  568. package/shortcutContexts/commands/extendCellsSelection/down.mjs +11 -0
  569. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +24 -0
  570. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +21 -0
  571. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  572. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  573. package/shortcutContexts/commands/extendCellsSelection/left.js +14 -0
  574. package/shortcutContexts/commands/extendCellsSelection/left.mjs +11 -0
  575. package/shortcutContexts/commands/extendCellsSelection/right.js +14 -0
  576. package/shortcutContexts/commands/extendCellsSelection/right.mjs +11 -0
  577. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +18 -0
  578. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +15 -0
  579. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +28 -0
  580. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +25 -0
  581. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +18 -0
  582. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +15 -0
  583. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +18 -0
  584. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +15 -0
  585. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +28 -0
  586. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +25 -0
  587. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +28 -0
  588. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +25 -0
  589. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +28 -0
  590. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +25 -0
  591. package/shortcutContexts/commands/extendCellsSelection/toRows.js +18 -0
  592. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +15 -0
  593. package/shortcutContexts/commands/extendCellsSelection/up.js +14 -0
  594. package/shortcutContexts/commands/extendCellsSelection/up.mjs +11 -0
  595. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +24 -0
  596. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +21 -0
  597. package/shortcutContexts/commands/index.js +35 -0
  598. package/shortcutContexts/commands/index.mjs +31 -0
  599. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  600. package/shortcutContexts/commands/moveCellSelection/down.mjs +9 -0
  601. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +32 -0
  602. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +29 -0
  603. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  604. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  605. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +11 -0
  606. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  607. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +11 -0
  608. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  609. package/shortcutContexts/commands/moveCellSelection/left.js +9 -0
  610. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  611. package/shortcutContexts/commands/moveCellSelection/right.js +9 -0
  612. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  613. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  614. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +13 -0
  615. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  616. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +14 -0
  617. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  618. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +10 -0
  619. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  620. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +13 -0
  621. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +18 -0
  622. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +15 -0
  623. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +20 -0
  624. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +17 -0
  625. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  626. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +13 -0
  627. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  628. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +15 -0
  629. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  630. package/shortcutContexts/commands/moveCellSelection/up.mjs +9 -0
  631. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +32 -0
  632. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +29 -0
  633. package/shortcutContexts/commands/populateSelectedCellsData.js +28 -0
  634. package/shortcutContexts/commands/populateSelectedCellsData.mjs +25 -0
  635. package/shortcutContexts/commands/scrollToFocusedCell.js +34 -0
  636. package/shortcutContexts/commands/scrollToFocusedCell.mjs +31 -0
  637. package/shortcutContexts/commands/selectAll.js +11 -0
  638. package/shortcutContexts/commands/selectAll.mjs +8 -0
  639. package/shortcutContexts/constants.js +11 -0
  640. package/shortcutContexts/constants.mjs +8 -0
  641. package/shortcutContexts/editor.js +25 -0
  642. package/shortcutContexts/editor.mjs +21 -0
  643. package/shortcutContexts/grid.js +167 -0
  644. package/shortcutContexts/grid.mjs +163 -0
  645. package/shortcutContexts/index.js +24 -0
  646. package/shortcutContexts/index.mjs +11 -0
  647. package/shortcuts/context.d.ts +1 -0
  648. package/shortcuts/context.js +23 -4
  649. package/shortcuts/context.mjs +23 -5
  650. package/shortcuts/manager.js +31 -7
  651. package/shortcuts/manager.mjs +32 -7
  652. package/shortcuts/recorder.js +30 -14
  653. package/shortcuts/recorder.mjs +30 -14
  654. package/shortcuts/utils.js +19 -5
  655. package/shortcuts/utils.mjs +18 -4
  656. package/tableView.js +113 -16
  657. package/tableView.mjs +113 -15
  658. package/utils/dataStructures/linkedList.js +1 -2
  659. package/utils/dataStructures/priorityMap.js +2 -4
  660. package/utils/dataStructures/queue.js +1 -2
  661. package/utils/dataStructures/stack.js +1 -2
  662. package/utils/dataStructures/tree.js +3 -6
  663. package/utils/ghostTable.js +32 -17
  664. package/utils/ghostTable.mjs +31 -15
  665. package/utils/interval.js +1 -2
  666. package/utils/paginator.js +151 -0
  667. package/utils/paginator.mjs +147 -0
  668. package/utils/parseTable.js +527 -83
  669. package/utils/parseTable.mjs +523 -82
  670. package/utils/rootInstance.js +2 -4
  671. package/utils/samplesGenerator.js +21 -13
  672. package/utils/samplesGenerator.mjs +20 -11
  673. package/utils/staticRegister.js +1 -2
  674. package/validators/autocompleteValidator/autocompleteValidator.js +1 -2
  675. package/validators/dateValidator/dateValidator.js +1 -2
  676. package/validators/numericValidator/numericValidator.js +1 -2
  677. package/validators/timeValidator/timeValidator.js +1 -2
  678. package/3rdparty/walkontable/src/selection.js +0 -295
  679. package/3rdparty/walkontable/src/selection.mjs +0 -290
  680. package/plugins/contextMenu/predefinedItems.js +0 -76
  681. package/plugins/contextMenu/predefinedItems.mjs +0 -68
  682. package/plugins/copyPaste/clipboardData.js +0 -18
  683. package/plugins/copyPaste/clipboardData.mjs +0 -14
  684. package/plugins/copyPaste/focusableElement.js +0 -186
  685. package/plugins/copyPaste/focusableElement.mjs +0 -180
  686. package/plugins/copyPaste/pasteEvent.js +0 -14
  687. package/plugins/copyPaste/pasteEvent.mjs +0 -9
  688. package/selection/highlight/constants.js +0 -15
  689. package/selection/highlight/constants.mjs +0 -6
  690. package/selection/highlight/types/index.js +0 -35
  691. package/selection/highlight/types/index.mjs +0 -31
@@ -141,12 +141,19 @@ export class AutoRowSize extends BasePlugin {
141
141
  * @private
142
142
  * @type {SamplesGenerator}
143
143
  */
144
- this.samplesGenerator = new SamplesGenerator((row, col) => {
144
+ this.samplesGenerator = new SamplesGenerator((row, column) => {
145
+ if (row >= 0 && column >= 0) {
146
+ const cellMeta = this.hot.getCellMeta(row, column);
147
+ if (cellMeta.hidden) {
148
+ // do not generate samples for cells that are covered by merged cell (null values)
149
+ return false;
150
+ }
151
+ }
145
152
  let cellValue;
146
153
  if (row >= 0) {
147
- cellValue = this.hot.getDataAtCell(row, col);
154
+ cellValue = this.hot.getDataAtCell(row, column);
148
155
  } else if (row === -1) {
149
- cellValue = this.hot.getColHeader(col);
156
+ cellValue = this.hot.getColHeader(column);
150
157
  }
151
158
  return {
152
159
  value: cellValue
@@ -181,7 +188,7 @@ export class AutoRowSize extends BasePlugin {
181
188
  this.hot.rowIndexMapper.registerMap(ROW_WIDTHS_MAP_NAME, this.rowHeightsMap);
182
189
 
183
190
  // Leave the listener active to allow auto-sizing the rows when the plugin is disabled.
184
- // This is necesseary for height recalculation for resize handler doubleclick (ManualRowResize).
191
+ // This is necessary for height recalculation for resize handler doubleclick (ManualRowResize).
185
192
  this.addHook('beforeRowResize', (size, row, isDblClick) => this.onBeforeRowResize(size, row, isDblClick));
186
193
  }
187
194
 
@@ -571,11 +578,11 @@ export class AutoRowSize extends BasePlugin {
571
578
  this.recalculateAllRowsHeight();
572
579
  } else {
573
580
  // first load - initialization
574
- setTimeout(() => {
581
+ this.hot._registerTimeout(() => {
575
582
  if (this.hot) {
576
583
  this.recalculateAllRowsHeight();
577
584
  }
578
- }, 0);
585
+ });
579
586
  }
580
587
  }
581
588
 
@@ -12,10 +12,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
12
12
  _pluginHooks.default.getSingleton().register('modifyAutofillRange');
13
13
  _pluginHooks.default.getSingleton().register('beforeAutofill');
14
14
  _pluginHooks.default.getSingleton().register('afterAutofill');
15
- const PLUGIN_KEY = 'autofill';
16
- exports.PLUGIN_KEY = PLUGIN_KEY;
17
- const PLUGIN_PRIORITY = 20;
18
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
15
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'autofill';
16
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 20;
19
17
  const SETTING_KEYS = ['fillHandle'];
20
18
  const INSERT_ROW_ALTER_ACTION_NAME = 'insert_row_below';
21
19
  const INTERVAL_FOR_ADDING_ROW = 200;
@@ -5,7 +5,7 @@ exports.getDragDirectionAndRange = getDragDirectionAndRange;
5
5
  exports.getMappedFillHandleSetting = getMappedFillHandleSetting;
6
6
  var _object = require("../../helpers/object");
7
7
  var _mixed = require("../../helpers/mixed");
8
- const DIRECTIONS = {
8
+ const DIRECTIONS = exports.DIRECTIONS = {
9
9
  horizontal: 'horizontal',
10
10
  vertical: 'vertical'
11
11
  };
@@ -18,7 +18,6 @@ const DIRECTIONS = {
18
18
  * @param {Function} cellCoordsFactory The function factory for CellCoords objects.
19
19
  * @returns {{direction: string, start: CellCoords, end: CellCoords}}
20
20
  */
21
- exports.DIRECTIONS = DIRECTIONS;
22
21
  function getDragDirectionAndRange(startSelection, endSelection, cellCoordsFactory) {
23
22
  let startOfDragCoords;
24
23
  let endOfDragCoords;
@@ -14,8 +14,7 @@ function _classPrivateMethodInitSpec(obj, privateSet) { _checkPrivateRedeclarati
14
14
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
15
15
  function _classPrivateMethodGet(receiver, privateSet, fn) { if (!privateSet.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return fn; }
16
16
  const DEPS_TYPE_CHECKERS = new Map([['plugin', _registry.hasPlugin], ['cell-type', _registry2.hasCellType], ['editor', _registry3.hasEditor], ['renderer', _registry4.hasRenderer], ['validator', _registry5.hasValidator]]);
17
- const PLUGIN_KEY = 'base';
18
- exports.PLUGIN_KEY = PLUGIN_KEY;
17
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'base';
19
18
  const privatePool = new WeakMap();
20
19
  const missingDependeciesMsgs = [];
21
20
  let initializedPlugins = null;
@@ -5,10 +5,8 @@ var _base = require("../base");
5
5
  var _looseBindsMap = _interopRequireDefault(require("./maps/looseBindsMap"));
6
6
  var _strictBindsMap = _interopRequireDefault(require("./maps/strictBindsMap"));
7
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
- const PLUGIN_KEY = 'bindRowsWithHeaders';
9
- exports.PLUGIN_KEY = PLUGIN_KEY;
10
- const PLUGIN_PRIORITY = 210;
11
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
8
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'bindRowsWithHeaders';
9
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 210;
12
10
  const DEFAULT_BIND = 'loose';
13
11
  const bindTypeToMapStrategy = new Map([['loose', _looseBindsMap.default], ['strict', _strictBindsMap.default]]);
14
12
 
@@ -40,5 +40,4 @@ class LooseBindsMap extends _translations.IndexMap {
40
40
  super.remove(removedIndexes);
41
41
  }
42
42
  }
43
- var _default = LooseBindsMap;
44
- exports.default = _default;
43
+ var _default = exports.default = LooseBindsMap;
@@ -48,5 +48,4 @@ class StrictBindsMap extends _translations.IndexMap {
48
48
  return Math.max(...this.getValues()) + 1 + ordinalNumber;
49
49
  }
50
50
  }
51
- var _default = StrictBindsMap;
52
- exports.default = _default;
51
+ var _default = exports.default = StrictBindsMap;
@@ -10,6 +10,8 @@ var _console = require("../../helpers/console");
10
10
  var _element = require("../../helpers/dom/element");
11
11
  var _eventManager = _interopRequireDefault(require("../../eventManager"));
12
12
  var _event = require("../../helpers/dom/event");
13
+ var _a11y = require("../../helpers/a11y");
14
+ var _constants = require("../../i18n/constants");
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
15
17
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
@@ -21,12 +23,11 @@ function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) {
21
23
  function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
22
24
  function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
23
25
  function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
24
- const PLUGIN_KEY = 'collapsibleColumns';
25
- exports.PLUGIN_KEY = PLUGIN_KEY;
26
- const PLUGIN_PRIORITY = 290;
27
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
26
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'collapsibleColumns';
27
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 290;
28
28
  const SETTING_KEYS = ['nestedHeaders'];
29
29
  const COLLAPSIBLE_ELEMENT_CLASS = 'collapsibleIndicator';
30
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
30
31
  const actionDictionary = new Map([['collapse', {
31
32
  hideColumn: true,
32
33
  beforeHook: 'beforeColumnCollapse',
@@ -191,6 +192,7 @@ class CollapsibleColumns extends _base.BasePlugin {
191
192
  return _this.onAfterGetColHeader(...arguments);
192
193
  });
193
194
  this.addHook('beforeOnCellMouseDown', (event, coords, TD) => this.onBeforeOnCellMouseDown(event, coords, TD));
195
+ this.registerShortcuts();
194
196
  super.enablePlugin();
195
197
  // @TODO: Workaround for broken plugin initialization abstraction (#6806).
196
198
  this.updatePlugin();
@@ -238,10 +240,62 @@ class CollapsibleColumns extends _base.BasePlugin {
238
240
  this.hot.columnIndexMapper.unregisterMap(this.pluginName);
239
241
  _classPrivateFieldSet(this, _collapsedColumnsMap, null);
240
242
  this.nestedHeadersPlugin = null;
243
+ this.unregisterShortcuts();
241
244
  this.clearButtons();
242
245
  super.disablePlugin();
243
246
  }
244
247
 
248
+ /**
249
+ * Register shortcuts responsible for toggling collapsible columns.
250
+ *
251
+ * @private
252
+ */
253
+ registerShortcuts() {
254
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
255
+ keys: [['Enter']],
256
+ callback: () => {
257
+ var _this$headerStateMana;
258
+ const {
259
+ row,
260
+ col
261
+ } = this.hot.getSelectedRangeLast().highlight;
262
+ const {
263
+ collapsible,
264
+ isCollapsed,
265
+ columnIndex
266
+ } = (_this$headerStateMana = this.headerStateManager.getHeaderTreeNodeData(row, col)) !== null && _this$headerStateMana !== void 0 ? _this$headerStateMana : {};
267
+ if (!collapsible) {
268
+ return;
269
+ }
270
+ if (isCollapsed) {
271
+ this.expandSection({
272
+ row,
273
+ col: columnIndex
274
+ });
275
+ } else {
276
+ this.collapseSection({
277
+ row,
278
+ col: columnIndex
279
+ });
280
+ }
281
+ },
282
+ runOnlyIf: () => {
283
+ var _this$hot$getSelected;
284
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
285
+ },
286
+ group: SHORTCUTS_GROUP
287
+ });
288
+ }
289
+
290
+ /**
291
+ * Unregister shortcuts responsible for toggling collapsible columns.
292
+ *
293
+ * @private
294
+ */
295
+ unregisterShortcuts() {
296
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
297
+ }
298
+
245
299
  /**
246
300
  * Clears the expand/collapse buttons.
247
301
  *
@@ -362,7 +416,7 @@ class CollapsibleColumns extends _base.BasePlugin {
362
416
  });
363
417
  let isActionPossible = filteredCoords.length > 0;
364
418
  (0, _array.arrayEach)(filteredCoords, _ref2 => {
365
- var _this$headerStateMana;
419
+ var _this$headerStateMana2;
366
420
  let {
367
421
  row,
368
422
  col: column
@@ -370,7 +424,7 @@ class CollapsibleColumns extends _base.BasePlugin {
370
424
  const {
371
425
  collapsible,
372
426
  isCollapsed
373
- } = (_this$headerStateMana = this.headerStateManager.getHeaderSettings(row, column)) !== null && _this$headerStateMana !== void 0 ? _this$headerStateMana : {};
427
+ } = (_this$headerStateMana2 = this.headerStateManager.getHeaderSettings(row, column)) !== null && _this$headerStateMana2 !== void 0 ? _this$headerStateMana2 : {};
374
428
  if (!collapsible || isCollapsed && action === 'collapse' || !isCollapsed && action === 'expand') {
375
429
  isActionPossible = false;
376
430
  return false;
@@ -442,14 +496,16 @@ class CollapsibleColumns extends _base.BasePlugin {
442
496
  * values counting from 0 to N).
443
497
  */
444
498
  onAfterGetColHeader(column, TH, headerLevel) {
445
- var _this$headerStateMana2;
499
+ var _this$headerStateMana3;
446
500
  const {
447
501
  collapsible,
448
502
  origColspan,
449
503
  isCollapsed
450
- } = (_this$headerStateMana2 = this.headerStateManager.getHeaderSettings(headerLevel, column)) !== null && _this$headerStateMana2 !== void 0 ? _this$headerStateMana2 : {};
504
+ } = (_this$headerStateMana3 = this.headerStateManager.getHeaderSettings(headerLevel, column)) !== null && _this$headerStateMana3 !== void 0 ? _this$headerStateMana3 : {};
451
505
  const isNodeCollapsible = collapsible && origColspan > 1 && column >= this.hot.getSettings().fixedColumnsStart;
506
+ const isAriaTagsEnabled = this.hot.getSettings().ariaTags;
452
507
  let collapsibleElement = TH.querySelector(`.${COLLAPSIBLE_ELEMENT_CLASS}`);
508
+ (0, _element.removeAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)('')[0]]);
453
509
  if (isNodeCollapsible) {
454
510
  if (!collapsibleElement) {
455
511
  collapsibleElement = this.hot.rootDocument.createElement('div');
@@ -460,9 +516,22 @@ class CollapsibleColumns extends _base.BasePlugin {
460
516
  if (isCollapsed) {
461
517
  (0, _element.addClass)(collapsibleElement, 'collapsed');
462
518
  (0, _element.fastInnerText)(collapsibleElement, '+');
519
+
520
+ // Add ARIA tags
521
+ if (isAriaTagsEnabled) {
522
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(false), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN))]);
523
+ }
463
524
  } else {
464
525
  (0, _element.addClass)(collapsibleElement, 'expanded');
465
526
  (0, _element.fastInnerText)(collapsibleElement, '-');
527
+
528
+ // Add ARIA tags
529
+ if (isAriaTagsEnabled) {
530
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_EXPANDED)(true), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN))]);
531
+ }
532
+ }
533
+ if (isAriaTagsEnabled) {
534
+ (0, _element.setAttribute)(collapsibleElement, ...(0, _a11y.A11Y_HIDDEN)());
466
535
  }
467
536
  } else {
468
537
  var _collapsibleElement;
@@ -14,13 +14,16 @@ import { BasePlugin } from "../base/index.mjs";
14
14
  import { arrayEach, arrayFilter, arrayUnique } from "../../helpers/array.mjs";
15
15
  import { rangeEach } from "../../helpers/number.mjs";
16
16
  import { warn } from "../../helpers/console.mjs";
17
- import { addClass, hasClass, removeClass, fastInnerText } from "../../helpers/dom/element.mjs";
17
+ import { addClass, hasClass, removeClass, fastInnerText, removeAttribute, setAttribute } from "../../helpers/dom/element.mjs";
18
18
  import EventManager from "../../eventManager.mjs";
19
19
  import { stopImmediatePropagation } from "../../helpers/dom/event.mjs";
20
+ import { A11Y_DESCRIPTION, A11Y_EXPANDED, A11Y_HIDDEN } from "../../helpers/a11y.mjs";
21
+ import { COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN, COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN } from "../../i18n/constants.mjs";
20
22
  export const PLUGIN_KEY = 'collapsibleColumns';
21
23
  export const PLUGIN_PRIORITY = 290;
22
24
  const SETTING_KEYS = ['nestedHeaders'];
23
25
  const COLLAPSIBLE_ELEMENT_CLASS = 'collapsibleIndicator';
26
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
24
27
  const actionDictionary = new Map([['collapse', {
25
28
  hideColumn: true,
26
29
  beforeHook: 'beforeColumnCollapse',
@@ -185,6 +188,7 @@ export class CollapsibleColumns extends BasePlugin {
185
188
  return _this.onAfterGetColHeader(...arguments);
186
189
  });
187
190
  this.addHook('beforeOnCellMouseDown', (event, coords, TD) => this.onBeforeOnCellMouseDown(event, coords, TD));
191
+ this.registerShortcuts();
188
192
  super.enablePlugin();
189
193
  // @TODO: Workaround for broken plugin initialization abstraction (#6806).
190
194
  this.updatePlugin();
@@ -232,10 +236,62 @@ export class CollapsibleColumns extends BasePlugin {
232
236
  this.hot.columnIndexMapper.unregisterMap(this.pluginName);
233
237
  _classPrivateFieldSet(this, _collapsedColumnsMap, null);
234
238
  this.nestedHeadersPlugin = null;
239
+ this.unregisterShortcuts();
235
240
  this.clearButtons();
236
241
  super.disablePlugin();
237
242
  }
238
243
 
244
+ /**
245
+ * Register shortcuts responsible for toggling collapsible columns.
246
+ *
247
+ * @private
248
+ */
249
+ registerShortcuts() {
250
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
251
+ keys: [['Enter']],
252
+ callback: () => {
253
+ var _this$headerStateMana;
254
+ const {
255
+ row,
256
+ col
257
+ } = this.hot.getSelectedRangeLast().highlight;
258
+ const {
259
+ collapsible,
260
+ isCollapsed,
261
+ columnIndex
262
+ } = (_this$headerStateMana = this.headerStateManager.getHeaderTreeNodeData(row, col)) !== null && _this$headerStateMana !== void 0 ? _this$headerStateMana : {};
263
+ if (!collapsible) {
264
+ return;
265
+ }
266
+ if (isCollapsed) {
267
+ this.expandSection({
268
+ row,
269
+ col: columnIndex
270
+ });
271
+ } else {
272
+ this.collapseSection({
273
+ row,
274
+ col: columnIndex
275
+ });
276
+ }
277
+ },
278
+ runOnlyIf: () => {
279
+ var _this$hot$getSelected;
280
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
281
+ },
282
+ group: SHORTCUTS_GROUP
283
+ });
284
+ }
285
+
286
+ /**
287
+ * Unregister shortcuts responsible for toggling collapsible columns.
288
+ *
289
+ * @private
290
+ */
291
+ unregisterShortcuts() {
292
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
293
+ }
294
+
239
295
  /**
240
296
  * Clears the expand/collapse buttons.
241
297
  *
@@ -356,7 +412,7 @@ export class CollapsibleColumns extends BasePlugin {
356
412
  });
357
413
  let isActionPossible = filteredCoords.length > 0;
358
414
  arrayEach(filteredCoords, _ref2 => {
359
- var _this$headerStateMana;
415
+ var _this$headerStateMana2;
360
416
  let {
361
417
  row,
362
418
  col: column
@@ -364,7 +420,7 @@ export class CollapsibleColumns extends BasePlugin {
364
420
  const {
365
421
  collapsible,
366
422
  isCollapsed
367
- } = (_this$headerStateMana = this.headerStateManager.getHeaderSettings(row, column)) !== null && _this$headerStateMana !== void 0 ? _this$headerStateMana : {};
423
+ } = (_this$headerStateMana2 = this.headerStateManager.getHeaderSettings(row, column)) !== null && _this$headerStateMana2 !== void 0 ? _this$headerStateMana2 : {};
368
424
  if (!collapsible || isCollapsed && action === 'collapse' || !isCollapsed && action === 'expand') {
369
425
  isActionPossible = false;
370
426
  return false;
@@ -436,14 +492,16 @@ export class CollapsibleColumns extends BasePlugin {
436
492
  * values counting from 0 to N).
437
493
  */
438
494
  onAfterGetColHeader(column, TH, headerLevel) {
439
- var _this$headerStateMana2;
495
+ var _this$headerStateMana3;
440
496
  const {
441
497
  collapsible,
442
498
  origColspan,
443
499
  isCollapsed
444
- } = (_this$headerStateMana2 = this.headerStateManager.getHeaderSettings(headerLevel, column)) !== null && _this$headerStateMana2 !== void 0 ? _this$headerStateMana2 : {};
500
+ } = (_this$headerStateMana3 = this.headerStateManager.getHeaderSettings(headerLevel, column)) !== null && _this$headerStateMana3 !== void 0 ? _this$headerStateMana3 : {};
445
501
  const isNodeCollapsible = collapsible && origColspan > 1 && column >= this.hot.getSettings().fixedColumnsStart;
502
+ const isAriaTagsEnabled = this.hot.getSettings().ariaTags;
446
503
  let collapsibleElement = TH.querySelector(`.${COLLAPSIBLE_ELEMENT_CLASS}`);
504
+ removeAttribute(TH, [A11Y_EXPANDED('')[0]]);
447
505
  if (isNodeCollapsible) {
448
506
  if (!collapsibleElement) {
449
507
  collapsibleElement = this.hot.rootDocument.createElement('div');
@@ -454,9 +512,22 @@ export class CollapsibleColumns extends BasePlugin {
454
512
  if (isCollapsed) {
455
513
  addClass(collapsibleElement, 'collapsed');
456
514
  fastInnerText(collapsibleElement, '+');
515
+
516
+ // Add ARIA tags
517
+ if (isAriaTagsEnabled) {
518
+ setAttribute(TH, [A11Y_EXPANDED(false), A11Y_DESCRIPTION(this.hot.getTranslatedPhrase(COLUMN_HEADER_DESCRIPTION_EXPAND_COLUMN))]);
519
+ }
457
520
  } else {
458
521
  addClass(collapsibleElement, 'expanded');
459
522
  fastInnerText(collapsibleElement, '-');
523
+
524
+ // Add ARIA tags
525
+ if (isAriaTagsEnabled) {
526
+ setAttribute(TH, [A11Y_EXPANDED(true), A11Y_DESCRIPTION(this.hot.getTranslatedPhrase(COLUMN_HEADER_DESCRIPTION_COLLAPSE_COLUMN))]);
527
+ }
528
+ }
529
+ if (isAriaTagsEnabled) {
530
+ setAttribute(collapsibleElement, ...A11Y_HIDDEN());
460
531
  }
461
532
  } else {
462
533
  var _collapsibleElement;
@@ -15,13 +15,15 @@ var _utils = require("./utils");
15
15
  var _domHelpers = require("./domHelpers");
16
16
  var _rootComparator = require("./rootComparator");
17
17
  var _sortService = require("./sortService");
18
+ var _a11y = require("../../helpers/a11y");
19
+ var _constants = require("../../i18n/constants");
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
- const PLUGIN_KEY = 'columnSorting';
20
- exports.PLUGIN_KEY = PLUGIN_KEY;
21
- const PLUGIN_PRIORITY = 50;
22
- exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
23
- const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
24
- const REPLACE_COLUMN_CONFIG_STRATEGY = 'replace';
21
+ const PLUGIN_KEY = exports.PLUGIN_KEY = 'columnSorting';
22
+ const PLUGIN_PRIORITY = exports.PLUGIN_PRIORITY = 50;
23
+ const APPEND_COLUMN_CONFIG_STRATEGY = exports.APPEND_COLUMN_CONFIG_STRATEGY = 'append';
24
+ const REPLACE_COLUMN_CONFIG_STRATEGY = exports.REPLACE_COLUMN_CONFIG_STRATEGY = 'replace';
25
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
26
+ const SORTING_INDICATOR_CLASS = 'columnSortingIndicator';
25
27
  (0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
26
28
  _pluginHooks.default.getSingleton().register('beforeColumnSort');
27
29
  _pluginHooks.default.getSingleton().register('afterColumnSort');
@@ -156,6 +158,7 @@ class ColumnSorting extends _base.BasePlugin {
156
158
  if (this.hot.view) {
157
159
  this.loadOrSortBySettings();
158
160
  }
161
+ this.registerShortcuts();
159
162
  super.enablePlugin();
160
163
  }
161
164
 
@@ -186,9 +189,43 @@ class ColumnSorting extends _base.BasePlugin {
186
189
  this.columnStatesManager.destroy();
187
190
  this.columnMetaCache = null;
188
191
  this.columnStatesManager = null;
192
+ this.unregisterShortcuts();
189
193
  super.disablePlugin();
190
194
  }
191
195
 
196
+ /**
197
+ * Register shortcuts responsible for toggling column sorting functionality.
198
+ *
199
+ * @private
200
+ */
201
+ registerShortcuts() {
202
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
203
+ keys: [['Enter']],
204
+ callback: () => {
205
+ const {
206
+ highlight
207
+ } = this.hot.getSelectedRangeLast();
208
+ if (highlight.row === -1 && highlight.col >= 0) {
209
+ this.sort(this.getColumnNextConfig(highlight.col));
210
+ }
211
+ },
212
+ runOnlyIf: () => {
213
+ var _this$hot$getSelected;
214
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
215
+ },
216
+ group: SHORTCUTS_GROUP
217
+ });
218
+ }
219
+
220
+ /**
221
+ * Unregister shortcuts responsible for toggling column sorting functionality.
222
+ *
223
+ * @private
224
+ */
225
+ unregisterShortcuts() {
226
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
227
+ }
228
+
192
229
  // DIFF - MultiColumnSorting & ColumnSorting: changed function documentation.
193
230
  /**
194
231
  * Sorts the table by chosen columns and orders.
@@ -605,9 +642,15 @@ class ColumnSorting extends _base.BasePlugin {
605
642
  return;
606
643
  }
607
644
  const pluginSettingsForColumn = this.getFirstCellSettings(column)[this.pluginKey];
645
+ const ariaTags = this.hot.getSettings().ariaTags;
608
646
  const showSortIndicator = pluginSettingsForColumn.indicator;
609
647
  const headerActionEnabled = pluginSettingsForColumn.headerAction;
648
+ const currentSortState = this.columnStatesManager.getSortOrderOfColumn(column);
610
649
  this.updateHeaderClasses(headerSpanElement, this.columnStatesManager, column, showSortIndicator, headerActionEnabled);
650
+ this.updateSortingIndicator(column, headerSpanElement);
651
+ if (ariaTags) {
652
+ (0, _element.setAttribute)(TH, [(0, _a11y.A11Y_SORT)(currentSortState ? `${currentSortState}ending` : 'none'), (0, _a11y.A11Y_DESCRIPTION)(this.hot.getTranslatedPhrase(_constants.COLUMN_HEADER_DESCRIPTION_SORT_ROWS))]);
653
+ }
611
654
  }
612
655
 
613
656
  /**
@@ -627,6 +670,28 @@ class ColumnSorting extends _base.BasePlugin {
627
670
  }
628
671
  }
629
672
 
673
+ /**
674
+ * Update sorting indicator.
675
+ *
676
+ * @private
677
+ * @param {number} column Visual column index.
678
+ * @param {HTMLElement} headerSpanElement Header span element.
679
+ */
680
+ updateSortingIndicator(column, headerSpanElement) {
681
+ const pluginSettingsForColumn = this.getFirstCellSettings(column)[this.pluginKey];
682
+ const ariaTags = this.hot.getSettings().ariaTags;
683
+ const showSortIndicator = pluginSettingsForColumn.indicator;
684
+ const isColumnSorted = this.columnStatesManager.isColumnSorted(column);
685
+ const indicatorElement = headerSpanElement.querySelector(`.${SORTING_INDICATOR_CLASS}`);
686
+ if (showSortIndicator && isColumnSorted && !indicatorElement) {
687
+ (0, _element.appendElement)(headerSpanElement, {
688
+ tagName: 'div',
689
+ className: SORTING_INDICATOR_CLASS,
690
+ attributes: ariaTags ? [(0, _a11y.A11Y_HIDDEN)()] : []
691
+ });
692
+ }
693
+ }
694
+
630
695
  /**
631
696
  * Overwriting base plugin's `onUpdateSettings` method. Please keep in mind that `onAfterUpdateSettings` isn't called
632
697
  * for `updateSettings` in specific situations.
@@ -1,5 +1,5 @@
1
1
  import "core-js/modules/es.array.push.js";
2
- import { addClass, removeClass } from "../../helpers/dom/element.mjs";
2
+ import { addClass, appendElement, removeClass, setAttribute } from "../../helpers/dom/element.mjs";
3
3
  import { isUndefined, isDefined } from "../../helpers/mixed.mjs";
4
4
  import { isObject } from "../../helpers/object.mjs";
5
5
  import { isFunction } from "../../helpers/function.mjs";
@@ -12,10 +12,14 @@ import { getNextSortOrder, areValidSortStates, getHeaderSpanElement, isFirstLeve
12
12
  import { getClassesToRemove, getClassesToAdd } from "./domHelpers.mjs";
13
13
  import { rootComparator } from "./rootComparator.mjs";
14
14
  import { registerRootComparator, sort } from "./sortService/index.mjs";
15
+ import { A11Y_DESCRIPTION, A11Y_HIDDEN, A11Y_SORT } from "../../helpers/a11y.mjs";
16
+ import { COLUMN_HEADER_DESCRIPTION_SORT_ROWS } from "../../i18n/constants.mjs";
15
17
  export const PLUGIN_KEY = 'columnSorting';
16
18
  export const PLUGIN_PRIORITY = 50;
17
- const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
18
- const REPLACE_COLUMN_CONFIG_STRATEGY = 'replace';
19
+ export const APPEND_COLUMN_CONFIG_STRATEGY = 'append';
20
+ export const REPLACE_COLUMN_CONFIG_STRATEGY = 'replace';
21
+ const SHORTCUTS_GROUP = PLUGIN_KEY;
22
+ const SORTING_INDICATOR_CLASS = 'columnSortingIndicator';
19
23
  registerRootComparator(PLUGIN_KEY, rootComparator);
20
24
  Hooks.getSingleton().register('beforeColumnSort');
21
25
  Hooks.getSingleton().register('afterColumnSort');
@@ -150,6 +154,7 @@ export class ColumnSorting extends BasePlugin {
150
154
  if (this.hot.view) {
151
155
  this.loadOrSortBySettings();
152
156
  }
157
+ this.registerShortcuts();
153
158
  super.enablePlugin();
154
159
  }
155
160
 
@@ -180,9 +185,43 @@ export class ColumnSorting extends BasePlugin {
180
185
  this.columnStatesManager.destroy();
181
186
  this.columnMetaCache = null;
182
187
  this.columnStatesManager = null;
188
+ this.unregisterShortcuts();
183
189
  super.disablePlugin();
184
190
  }
185
191
 
192
+ /**
193
+ * Register shortcuts responsible for toggling column sorting functionality.
194
+ *
195
+ * @private
196
+ */
197
+ registerShortcuts() {
198
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
199
+ keys: [['Enter']],
200
+ callback: () => {
201
+ const {
202
+ highlight
203
+ } = this.hot.getSelectedRangeLast();
204
+ if (highlight.row === -1 && highlight.col >= 0) {
205
+ this.sort(this.getColumnNextConfig(highlight.col));
206
+ }
207
+ },
208
+ runOnlyIf: () => {
209
+ var _this$hot$getSelected;
210
+ return (_this$hot$getSelected = this.hot.getSelectedRangeLast()) === null || _this$hot$getSelected === void 0 ? void 0 : _this$hot$getSelected.highlight.isHeader();
211
+ },
212
+ group: SHORTCUTS_GROUP
213
+ });
214
+ }
215
+
216
+ /**
217
+ * Unregister shortcuts responsible for toggling column sorting functionality.
218
+ *
219
+ * @private
220
+ */
221
+ unregisterShortcuts() {
222
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
223
+ }
224
+
186
225
  // DIFF - MultiColumnSorting & ColumnSorting: changed function documentation.
187
226
  /**
188
227
  * Sorts the table by chosen columns and orders.
@@ -599,9 +638,15 @@ export class ColumnSorting extends BasePlugin {
599
638
  return;
600
639
  }
601
640
  const pluginSettingsForColumn = this.getFirstCellSettings(column)[this.pluginKey];
641
+ const ariaTags = this.hot.getSettings().ariaTags;
602
642
  const showSortIndicator = pluginSettingsForColumn.indicator;
603
643
  const headerActionEnabled = pluginSettingsForColumn.headerAction;
644
+ const currentSortState = this.columnStatesManager.getSortOrderOfColumn(column);
604
645
  this.updateHeaderClasses(headerSpanElement, this.columnStatesManager, column, showSortIndicator, headerActionEnabled);
646
+ this.updateSortingIndicator(column, headerSpanElement);
647
+ if (ariaTags) {
648
+ setAttribute(TH, [A11Y_SORT(currentSortState ? `${currentSortState}ending` : 'none'), A11Y_DESCRIPTION(this.hot.getTranslatedPhrase(COLUMN_HEADER_DESCRIPTION_SORT_ROWS))]);
649
+ }
605
650
  }
606
651
 
607
652
  /**
@@ -621,6 +666,28 @@ export class ColumnSorting extends BasePlugin {
621
666
  }
622
667
  }
623
668
 
669
+ /**
670
+ * Update sorting indicator.
671
+ *
672
+ * @private
673
+ * @param {number} column Visual column index.
674
+ * @param {HTMLElement} headerSpanElement Header span element.
675
+ */
676
+ updateSortingIndicator(column, headerSpanElement) {
677
+ const pluginSettingsForColumn = this.getFirstCellSettings(column)[this.pluginKey];
678
+ const ariaTags = this.hot.getSettings().ariaTags;
679
+ const showSortIndicator = pluginSettingsForColumn.indicator;
680
+ const isColumnSorted = this.columnStatesManager.isColumnSorted(column);
681
+ const indicatorElement = headerSpanElement.querySelector(`.${SORTING_INDICATOR_CLASS}`);
682
+ if (showSortIndicator && isColumnSorted && !indicatorElement) {
683
+ appendElement(headerSpanElement, {
684
+ tagName: 'div',
685
+ className: SORTING_INDICATOR_CLASS,
686
+ attributes: ariaTags ? [A11Y_HIDDEN()] : []
687
+ });
688
+ }
689
+ }
690
+
624
691
  /**
625
692
  * Overwriting base plugin's `onUpdateSettings` method. Please keep in mind that `onAfterUpdateSettings` isn't called
626
693
  * for `updateSettings` in specific situations.
@@ -4,4 +4,6 @@ exports.__esModule = true;
4
4
  var _columnSorting = require("./columnSorting");
5
5
  exports.PLUGIN_KEY = _columnSorting.PLUGIN_KEY;
6
6
  exports.PLUGIN_PRIORITY = _columnSorting.PLUGIN_PRIORITY;
7
- exports.ColumnSorting = _columnSorting.ColumnSorting;
7
+ exports.ColumnSorting = _columnSorting.ColumnSorting;
8
+ exports.APPEND_COLUMN_CONFIG_STRATEGY = _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY;
9
+ exports.REPLACE_COLUMN_CONFIG_STRATEGY = _columnSorting.REPLACE_COLUMN_CONFIG_STRATEGY;
@@ -1 +1 @@
1
- export { PLUGIN_KEY, PLUGIN_PRIORITY, ColumnSorting } from "./columnSorting.mjs";
1
+ export { PLUGIN_KEY, PLUGIN_PRIORITY, ColumnSorting, APPEND_COLUMN_CONFIG_STRATEGY, REPLACE_COLUMN_CONFIG_STRATEGY } from "./columnSorting.mjs";