handsontable 0.0.0-next-5a535ed-20240403 → 0.0.0-next-c2810a1-20240403

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.

Potentially problematic release.


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

Files changed (284) hide show
  1. package/3rdparty/walkontable/src/calculator/viewportColumns.js +12 -17
  2. package/3rdparty/walkontable/src/calculator/viewportColumns.mjs +12 -17
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +10 -15
  4. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +10 -15
  5. package/3rdparty/walkontable/src/cell/coords.js +12 -17
  6. package/3rdparty/walkontable/src/cell/coords.mjs +12 -17
  7. package/3rdparty/walkontable/src/cell/range.d.ts +2 -1
  8. package/3rdparty/walkontable/src/cell/range.js +40 -28
  9. package/3rdparty/walkontable/src/cell/range.mjs +40 -28
  10. package/3rdparty/walkontable/src/core/_base.js +1 -1
  11. package/3rdparty/walkontable/src/core/_base.mjs +1 -1
  12. package/3rdparty/walkontable/src/event.js +72 -104
  13. package/3rdparty/walkontable/src/event.mjs +72 -104
  14. package/3rdparty/walkontable/src/overlay/inlineStart.js +15 -1
  15. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +16 -2
  16. package/3rdparty/walkontable/src/overlay/top.js +11 -0
  17. package/3rdparty/walkontable/src/overlay/top.mjs +12 -1
  18. package/3rdparty/walkontable/src/overlays.js +46 -4
  19. package/3rdparty/walkontable/src/overlays.mjs +46 -4
  20. package/3rdparty/walkontable/src/scroll.js +15 -17
  21. package/3rdparty/walkontable/src/scroll.mjs +15 -17
  22. package/3rdparty/walkontable/src/selection/manager.js +48 -69
  23. package/3rdparty/walkontable/src/selection/manager.mjs +48 -69
  24. package/3rdparty/walkontable/src/selection/scanner.js +33 -42
  25. package/3rdparty/walkontable/src/selection/scanner.mjs +33 -42
  26. package/3rdparty/walkontable/src/utils/columnStretching.js +27 -44
  27. package/3rdparty/walkontable/src/utils/columnStretching.mjs +27 -44
  28. package/3rdparty/walkontable/src/utils/orderView/view.js +1 -1
  29. package/3rdparty/walkontable/src/utils/orderView/view.mjs +1 -1
  30. package/base.js +2 -2
  31. package/base.mjs +2 -2
  32. package/core/viewportScroll/index.js +4 -1
  33. package/core/viewportScroll/index.mjs +4 -1
  34. package/core/viewportScroll/scrollStrategies/focusScroll.js +15 -0
  35. package/core/viewportScroll/scrollStrategies/focusScroll.mjs +11 -0
  36. package/core.d.ts +4 -3
  37. package/core.js +77 -22
  38. package/core.mjs +77 -22
  39. package/dataMap/dataSource.js +1 -1
  40. package/dataMap/dataSource.mjs +1 -1
  41. package/dataMap/metaManager/metaLayers/cellMeta.js +1 -1
  42. package/dataMap/metaManager/metaLayers/cellMeta.mjs +1 -1
  43. package/dataMap/metaManager/metaSchema.js +1 -1
  44. package/dataMap/metaManager/metaSchema.mjs +1 -1
  45. package/dataMap/replaceData.js +1 -1
  46. package/dataMap/replaceData.mjs +1 -1
  47. package/dist/handsontable.css +4 -4
  48. package/dist/handsontable.full.css +4 -4
  49. package/dist/handsontable.full.js +9063 -9122
  50. package/dist/handsontable.full.min.css +3 -3
  51. package/dist/handsontable.full.min.js +292 -292
  52. package/dist/handsontable.js +6968 -6574
  53. package/dist/handsontable.min.css +3 -3
  54. package/dist/handsontable.min.js +25 -25
  55. package/dist/languages/all.min.js +1 -1
  56. package/dist/languages/ar-AR.min.js +1 -1
  57. package/dist/languages/cs-CZ.min.js +1 -1
  58. package/dist/languages/de-CH.min.js +1 -1
  59. package/dist/languages/de-DE.min.js +1 -1
  60. package/dist/languages/en-US.min.js +1 -1
  61. package/dist/languages/es-MX.min.js +1 -1
  62. package/dist/languages/fr-FR.min.js +1 -1
  63. package/dist/languages/hr-HR.min.js +1 -1
  64. package/dist/languages/it-IT.min.js +1 -1
  65. package/dist/languages/ja-JP.min.js +1 -1
  66. package/dist/languages/ko-KR.min.js +1 -1
  67. package/dist/languages/lv-LV.min.js +1 -1
  68. package/dist/languages/nb-NO.min.js +1 -1
  69. package/dist/languages/nl-NL.min.js +1 -1
  70. package/dist/languages/pl-PL.min.js +1 -1
  71. package/dist/languages/pt-BR.min.js +1 -1
  72. package/dist/languages/ru-RU.min.js +1 -1
  73. package/dist/languages/sr-SP.min.js +1 -1
  74. package/dist/languages/zh-CN.min.js +1 -1
  75. package/dist/languages/zh-TW.min.js +1 -1
  76. package/editorManager.js +25 -23
  77. package/editorManager.mjs +25 -23
  78. package/editors/autocompleteEditor/autocompleteEditor.js +6 -10
  79. package/editors/autocompleteEditor/autocompleteEditor.mjs +6 -10
  80. package/editors/selectEditor/selectEditor.js +20 -19
  81. package/editors/selectEditor/selectEditor.mjs +20 -19
  82. package/eventManager.js +1 -1
  83. package/eventManager.mjs +1 -1
  84. package/focusManager.js +64 -82
  85. package/focusManager.mjs +64 -82
  86. package/helpers/dom/element.js +23 -1
  87. package/helpers/dom/element.mjs +21 -1
  88. package/helpers/mixed.js +1 -1
  89. package/helpers/mixed.mjs +1 -1
  90. package/helpers/object.js +2 -2
  91. package/helpers/object.mjs +2 -2
  92. package/i18n/languages/ar-AR.d.ts +5 -0
  93. package/i18n/languages/cs-CZ.d.ts +5 -0
  94. package/i18n/languages/hr-HR.d.ts +5 -0
  95. package/i18n/languages/sr-SP.d.ts +5 -0
  96. package/index.d.ts +10 -0
  97. package/package.json +7 -2
  98. package/pluginHooks.d.ts +4 -3
  99. package/pluginHooks.js +99 -38
  100. package/pluginHooks.mjs +99 -38
  101. package/plugins/autoColumnSize/autoColumnSize.js +49 -65
  102. package/plugins/autoColumnSize/autoColumnSize.mjs +49 -65
  103. package/plugins/autoRowSize/autoRowSize.js +28 -34
  104. package/plugins/autoRowSize/autoRowSize.mjs +28 -34
  105. package/plugins/autofill/autofill.js +30 -38
  106. package/plugins/autofill/autofill.mjs +30 -38
  107. package/plugins/base/base.js +12 -17
  108. package/plugins/base/base.mjs +12 -17
  109. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.js +5 -5
  110. package/plugins/bindRowsWithHeaders/bindRowsWithHeaders.mjs +5 -5
  111. package/plugins/collapsibleColumns/collapsibleColumns.js +59 -50
  112. package/plugins/collapsibleColumns/collapsibleColumns.mjs +59 -50
  113. package/plugins/columnSorting/columnSorting.js +49 -45
  114. package/plugins/columnSorting/columnSorting.mjs +49 -45
  115. package/plugins/columnSummary/columnSummary.js +22 -26
  116. package/plugins/columnSummary/columnSummary.mjs +22 -26
  117. package/plugins/comments/comments.js +116 -158
  118. package/plugins/comments/comments.mjs +116 -158
  119. package/plugins/contextMenu/contextMenu.js +20 -26
  120. package/plugins/contextMenu/contextMenu.mjs +20 -26
  121. package/plugins/contextMenu/itemsFactory.js +1 -1
  122. package/plugins/contextMenu/itemsFactory.mjs +1 -1
  123. package/plugins/contextMenu/menu/defaultShortcutsList.js +26 -10
  124. package/plugins/contextMenu/menu/defaultShortcutsList.mjs +26 -10
  125. package/plugins/contextMenu/menu/menu.js +13 -21
  126. package/plugins/contextMenu/menu/menu.mjs +13 -21
  127. package/plugins/contextMenu/menu/positioner.js +41 -58
  128. package/plugins/contextMenu/menu/positioner.mjs +41 -58
  129. package/plugins/copyPaste/copyPaste.js +116 -157
  130. package/plugins/copyPaste/copyPaste.mjs +116 -157
  131. package/plugins/copyPaste/copyableRanges.js +43 -66
  132. package/plugins/copyPaste/copyableRanges.mjs +43 -66
  133. package/plugins/customBorders/customBorders.js +11 -13
  134. package/plugins/customBorders/customBorders.mjs +11 -13
  135. package/plugins/dragToScroll/dragToScroll.js +6 -6
  136. package/plugins/dragToScroll/dragToScroll.mjs +6 -6
  137. package/plugins/dropdownMenu/dropdownMenu.js +81 -107
  138. package/plugins/dropdownMenu/dropdownMenu.mjs +81 -107
  139. package/plugins/exportFile/dataProvider.js +1 -1
  140. package/plugins/exportFile/dataProvider.mjs +1 -1
  141. package/plugins/filters/component/actionBar.js +9 -9
  142. package/plugins/filters/component/actionBar.mjs +8 -8
  143. package/plugins/filters/component/condition.js +13 -15
  144. package/plugins/filters/component/condition.mjs +13 -15
  145. package/plugins/filters/component/operators.js +6 -6
  146. package/plugins/filters/component/operators.mjs +6 -6
  147. package/plugins/filters/component/value.js +24 -28
  148. package/plugins/filters/component/value.mjs +24 -28
  149. package/plugins/filters/conditionUpdateObserver.js +22 -24
  150. package/plugins/filters/conditionUpdateObserver.mjs +22 -24
  151. package/plugins/filters/dataFilter.js +1 -1
  152. package/plugins/filters/dataFilter.mjs +1 -1
  153. package/plugins/filters/filters.js +81 -95
  154. package/plugins/filters/filters.mjs +81 -95
  155. package/plugins/filters/ui/input.js +13 -19
  156. package/plugins/filters/ui/input.mjs +13 -19
  157. package/plugins/filters/ui/link.js +8 -13
  158. package/plugins/filters/ui/link.mjs +8 -13
  159. package/plugins/filters/ui/multipleSelect.js +85 -112
  160. package/plugins/filters/ui/multipleSelect.mjs +85 -112
  161. package/plugins/filters/ui/radioInput.js +12 -20
  162. package/plugins/filters/ui/radioInput.mjs +12 -20
  163. package/plugins/filters/ui/select.js +50 -72
  164. package/plugins/filters/ui/select.mjs +49 -71
  165. package/plugins/formulas/formulas.js +268 -326
  166. package/plugins/formulas/formulas.mjs +269 -327
  167. package/plugins/formulas/indexSyncer/axisSyncer.js +38 -61
  168. package/plugins/formulas/indexSyncer/axisSyncer.mjs +38 -61
  169. package/plugins/formulas/indexSyncer/index.js +25 -48
  170. package/plugins/formulas/indexSyncer/index.mjs +25 -48
  171. package/plugins/hiddenColumns/hiddenColumns.js +64 -83
  172. package/plugins/hiddenColumns/hiddenColumns.mjs +64 -83
  173. package/plugins/hiddenRows/hiddenRows.js +63 -82
  174. package/plugins/hiddenRows/hiddenRows.mjs +63 -82
  175. package/plugins/manualColumnFreeze/manualColumnFreeze.js +24 -32
  176. package/plugins/manualColumnFreeze/manualColumnFreeze.mjs +25 -33
  177. package/plugins/manualColumnMove/manualColumnMove.js +126 -170
  178. package/plugins/manualColumnMove/manualColumnMove.mjs +126 -170
  179. package/plugins/manualColumnResize/manualColumnResize.js +169 -230
  180. package/plugins/manualColumnResize/manualColumnResize.mjs +169 -230
  181. package/plugins/manualRowMove/manualRowMove.js +99 -128
  182. package/plugins/manualRowMove/manualRowMove.mjs +99 -128
  183. package/plugins/manualRowResize/manualRowResize.js +150 -209
  184. package/plugins/manualRowResize/manualRowResize.mjs +150 -209
  185. package/plugins/mergeCells/calculations/selection.js +2 -71
  186. package/plugins/mergeCells/calculations/selection.mjs +2 -71
  187. package/plugins/mergeCells/cellsCollection.js +117 -1
  188. package/plugins/mergeCells/cellsCollection.mjs +117 -1
  189. package/plugins/mergeCells/contextMenuItem/toggleMerge.js +11 -1
  190. package/plugins/mergeCells/contextMenuItem/toggleMerge.mjs +11 -1
  191. package/plugins/mergeCells/focusOrder.js +305 -0
  192. package/plugins/mergeCells/focusOrder.mjs +300 -0
  193. package/plugins/mergeCells/mergeCells.js +499 -397
  194. package/plugins/mergeCells/mergeCells.mjs +499 -397
  195. package/plugins/multiColumnSorting/multiColumnSorting.js +8 -2
  196. package/plugins/multiColumnSorting/multiColumnSorting.mjs +8 -2
  197. package/plugins/multipleSelectionHandles/multipleSelectionHandles.js +1 -1
  198. package/plugins/multipleSelectionHandles/multipleSelectionHandles.mjs +1 -1
  199. package/plugins/nestedHeaders/nestedHeaders.js +205 -253
  200. package/plugins/nestedHeaders/nestedHeaders.mjs +206 -254
  201. package/plugins/nestedHeaders/stateManager/headersTree.js +21 -32
  202. package/plugins/nestedHeaders/stateManager/headersTree.mjs +21 -32
  203. package/plugins/nestedHeaders/stateManager/index.js +30 -41
  204. package/plugins/nestedHeaders/stateManager/index.mjs +30 -41
  205. package/plugins/nestedHeaders/stateManager/sourceSettings.js +19 -30
  206. package/plugins/nestedHeaders/stateManager/sourceSettings.mjs +19 -30
  207. package/plugins/nestedRows/data/dataManager.js +1 -1
  208. package/plugins/nestedRows/data/dataManager.mjs +1 -1
  209. package/plugins/nestedRows/nestedRows.js +151 -182
  210. package/plugins/nestedRows/nestedRows.mjs +152 -183
  211. package/plugins/nestedRows/ui/contextMenu.js +11 -15
  212. package/plugins/nestedRows/ui/contextMenu.mjs +10 -14
  213. package/plugins/nestedRows/utils/rowMoveController.js +1 -1
  214. package/plugins/nestedRows/utils/rowMoveController.mjs +1 -1
  215. package/plugins/persistentState/storage.js +2 -2
  216. package/plugins/persistentState/storage.mjs +2 -2
  217. package/plugins/search/search.js +7 -7
  218. package/plugins/search/search.mjs +7 -7
  219. package/plugins/touchScroll/touchScroll.js +15 -19
  220. package/plugins/touchScroll/touchScroll.mjs +16 -20
  221. package/plugins/trimRows/trimRows.js +6 -6
  222. package/plugins/trimRows/trimRows.mjs +6 -6
  223. package/renderers/checkboxRenderer/checkboxRenderer.js +8 -5
  224. package/renderers/checkboxRenderer/checkboxRenderer.mjs +8 -5
  225. package/selection/highlight/highlight.js +14 -14
  226. package/selection/highlight/highlight.mjs +13 -13
  227. package/selection/highlight/visualSelection.js +2 -0
  228. package/selection/highlight/visualSelection.mjs +2 -0
  229. package/selection/selection.js +225 -67
  230. package/selection/selection.mjs +224 -66
  231. package/selection/transformation.js +149 -118
  232. package/selection/transformation.mjs +149 -118
  233. package/shortcutContexts/commands/editor/closeAndSave.js +2 -2
  234. package/shortcutContexts/commands/editor/closeAndSave.mjs +2 -2
  235. package/shortcutContexts/commands/editor/open.js +18 -3
  236. package/shortcutContexts/commands/editor/open.mjs +18 -3
  237. package/shortcutContexts/commands/extendCellsSelection/down.js +1 -1
  238. package/shortcutContexts/commands/extendCellsSelection/down.mjs +1 -1
  239. package/shortcutContexts/commands/extendCellsSelection/left.js +1 -1
  240. package/shortcutContexts/commands/extendCellsSelection/left.mjs +1 -1
  241. package/shortcutContexts/commands/extendCellsSelection/right.js +1 -1
  242. package/shortcutContexts/commands/extendCellsSelection/right.mjs +1 -1
  243. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +1 -1
  244. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +1 -1
  245. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +3 -1
  246. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +3 -1
  247. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +9 -3
  248. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +9 -3
  249. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +10 -3
  250. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +10 -3
  251. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +3 -1
  252. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +3 -1
  253. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +3 -1
  254. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +3 -1
  255. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +3 -1
  256. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +3 -1
  257. package/shortcutContexts/commands/extendCellsSelection/toRows.js +1 -1
  258. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +1 -1
  259. package/shortcutContexts/commands/extendCellsSelection/up.js +1 -1
  260. package/shortcutContexts/commands/extendCellsSelection/up.mjs +1 -1
  261. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +6 -1
  262. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +6 -1
  263. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +6 -1
  264. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +6 -1
  265. package/shortcutContexts/grid.js +9 -3
  266. package/shortcutContexts/grid.mjs +9 -3
  267. package/shortcuts/context.js +2 -1
  268. package/shortcuts/context.mjs +2 -1
  269. package/tableView.js +52 -78
  270. package/tableView.mjs +52 -78
  271. package/translations/changesObservable/observable.js +21 -38
  272. package/translations/changesObservable/observable.mjs +21 -38
  273. package/translations/changesObservable/observer.js +7 -12
  274. package/translations/changesObservable/observer.mjs +6 -11
  275. package/translations/mapCollections/aggregatedCollection.js +1 -1
  276. package/translations/mapCollections/aggregatedCollection.mjs +1 -1
  277. package/translations/maps/indexMap.js +1 -1
  278. package/translations/maps/indexMap.mjs +1 -1
  279. package/utils/dataStructures/linkedList.js +6 -1
  280. package/utils/dataStructures/linkedList.mjs +6 -1
  281. package/utils/dataStructures/tree.js +1 -1
  282. package/utils/dataStructures/tree.mjs +1 -1
  283. package/utils/interval.js +26 -44
  284. package/utils/interval.mjs +26 -44
@@ -6,10 +6,16 @@ export const command = {
6
6
  columnIndexMapper
7
7
  } = hot;
8
8
  const {
9
- highlight
9
+ highlight,
10
+ from,
11
+ to
10
12
  } = hot.getSelectedRangeLast();
11
- if (highlight.isCell()) {
12
- selection.setRangeEnd(hot._createCellCoords(selection.selectedRange.current().from.row, columnIndexMapper.getNearestNotHiddenIndex(hot.countCols() - 1, -1)));
13
+ if (!hot.selection.isSelectedByRowHeader() && !hot.selection.isSelectedByCorner() && highlight.isCell()) {
14
+ const column = columnIndexMapper.getNearestNotHiddenIndex(hot.countCols() - 1, -1);
15
+ const newFrom = from.clone();
16
+ newFrom.col = highlight.col;
17
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
18
+ selection.setRangeEnd(hot._createCellCoords(to.row, column));
13
19
  }
14
20
  }
15
21
  };
@@ -9,10 +9,17 @@ const command = exports.command = {
9
9
  columnIndexMapper
10
10
  } = hot;
11
11
  const {
12
- highlight
12
+ highlight,
13
+ from,
14
+ to
13
15
  } = hot.getSelectedRangeLast();
14
- if (highlight.isCell()) {
15
- selection.setRangeEnd(hot._createCellCoords(selection.selectedRange.current().from.row, columnIndexMapper.getNearestNotHiddenIndex(0, 1)));
16
+ if (!hot.selection.isSelectedByRowHeader() && !hot.selection.isSelectedByCorner() && highlight.isCell()) {
17
+ const fixedColumns = parseInt(hot.getSettings().fixedColumnsStart, 10);
18
+ const column = columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
19
+ const newFrom = from.clone();
20
+ newFrom.col = highlight.col;
21
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
22
+ selection.setRangeEnd(hot._createCellCoords(to.row, column));
16
23
  }
17
24
  }
18
25
  };
@@ -6,10 +6,17 @@ export const command = {
6
6
  columnIndexMapper
7
7
  } = hot;
8
8
  const {
9
- highlight
9
+ highlight,
10
+ from,
11
+ to
10
12
  } = hot.getSelectedRangeLast();
11
- if (highlight.isCell()) {
12
- selection.setRangeEnd(hot._createCellCoords(selection.selectedRange.current().from.row, columnIndexMapper.getNearestNotHiddenIndex(0, 1)));
13
+ if (!hot.selection.isSelectedByRowHeader() && !hot.selection.isSelectedByCorner() && highlight.isCell()) {
14
+ const fixedColumns = parseInt(hot.getSettings().fixedColumnsStart, 10);
15
+ const column = columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
16
+ const newFrom = from.clone();
17
+ newFrom.col = highlight.col;
18
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
19
+ selection.setRangeEnd(hot._createCellCoords(to.row, column));
13
20
  }
14
21
  }
15
22
  };
@@ -16,7 +16,9 @@ const command = exports.command = {
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && hot.selection.isSelectedByColumnHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [hot.countCols() - 1, -1] : [0, 1]));
19
- selection.setRangeStart(from.clone());
19
+ const newFrom = from.clone();
20
+ newFrom.col = highlight.col;
21
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
20
22
 
21
23
  // Restore the column highlight by header flag after setting up a new selection.
22
24
  if (isFocusHighlightedByHeader) {
@@ -13,7 +13,9 @@ export const command = {
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && hot.selection.isSelectedByColumnHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [hot.countCols() - 1, -1] : [0, 1]));
16
- selection.setRangeStart(from.clone());
16
+ const newFrom = from.clone();
17
+ newFrom.col = highlight.col;
18
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
17
19
 
18
20
  // Restore the column highlight by header flag after setting up a new selection.
19
21
  if (isFocusHighlightedByHeader) {
@@ -16,7 +16,9 @@ const command = exports.command = {
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && hot.selection.isSelectedByColumnHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [0, 1] : [hot.countCols() - 1, -1]));
19
- selection.setRangeStart(from.clone());
19
+ const newFrom = from.clone();
20
+ newFrom.col = highlight.col;
21
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
20
22
 
21
23
  // Restore the column highlight by header flag after setting up a new selection.
22
24
  if (isFocusHighlightedByHeader) {
@@ -13,7 +13,9 @@ export const command = {
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && hot.selection.isSelectedByColumnHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const column = columnIndexMapper.getNearestNotHiddenIndex(...(hot.isRtl() ? [0, 1] : [hot.countCols() - 1, -1]));
16
- selection.setRangeStart(from.clone());
16
+ const newFrom = from.clone();
17
+ newFrom.col = highlight.col;
18
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
17
19
 
18
20
  // Restore the column highlight by header flag after setting up a new selection.
19
21
  if (isFocusHighlightedByHeader) {
@@ -16,7 +16,9 @@ const command = exports.command = {
16
16
  const isFocusHighlightedByHeader = highlight.isHeader() && hot.selection.isSelectedByRowHeader();
17
17
  if (highlight.isCell() || isFocusHighlightedByHeader) {
18
18
  const row = rowIndexMapper.getNearestNotHiddenIndex(0, 1);
19
- selection.setRangeStart(from.clone());
19
+ const newFrom = from.clone();
20
+ newFrom.row = highlight.row;
21
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
20
22
 
21
23
  // Restore the row highlight by header flag after setting up a new selection.
22
24
  if (isFocusHighlightedByHeader) {
@@ -13,7 +13,9 @@ export const command = {
13
13
  const isFocusHighlightedByHeader = highlight.isHeader() && hot.selection.isSelectedByRowHeader();
14
14
  if (highlight.isCell() || isFocusHighlightedByHeader) {
15
15
  const row = rowIndexMapper.getNearestNotHiddenIndex(0, 1);
16
- selection.setRangeStart(from.clone());
16
+ const newFrom = from.clone();
17
+ newFrom.row = highlight.row;
18
+ selection.setRangeStart(newFrom, undefined, false, highlight.clone());
17
19
 
18
20
  // Restore the row highlight by header flag after setting up a new selection.
19
21
  if (isFocusHighlightedByHeader) {
@@ -12,7 +12,7 @@ const command = exports.command = {
12
12
  if (hot.selection.isSelectedByColumnHeader()) {
13
13
  hot.selection.selectAll(true, true);
14
14
  } else {
15
- hot.selectRows(from.row, to.row, highlight.col);
15
+ hot.selectRows(from.row, to.row, highlight);
16
16
  }
17
17
  }
18
18
  };
@@ -9,7 +9,7 @@ export const command = {
9
9
  if (hot.selection.isSelectedByColumnHeader()) {
10
10
  hot.selection.selectAll(true, true);
11
11
  } else {
12
- hot.selectRows(from.row, to.row, highlight.col);
12
+ hot.selectRows(from.row, to.row, highlight);
13
13
  }
14
14
  }
15
15
  };
@@ -7,7 +7,7 @@ const command = exports.command = {
7
7
  const {
8
8
  highlight
9
9
  } = hot.getSelectedRangeLast();
10
- if (highlight.isCell() || highlight.isHeader() && hot.selection.isSelectedByRowHeader()) {
10
+ if (!hot.selection.isSelectedByColumnHeader() && !hot.selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && hot.selection.isSelectedByRowHeader())) {
11
11
  hot.selection.transformEnd(-1, 0);
12
12
  }
13
13
  }
@@ -4,7 +4,7 @@ export const command = {
4
4
  const {
5
5
  highlight
6
6
  } = hot.getSelectedRangeLast();
7
- if (highlight.isCell() || highlight.isHeader() && hot.selection.isSelectedByRowHeader()) {
7
+ if (!hot.selection.isSelectedByColumnHeader() && !hot.selection.isSelectedByCorner() && (highlight.isCell() || highlight.isHeader() && hot.selection.isSelectedByRowHeader())) {
8
8
  hot.selection.transformEnd(-1, 0);
9
9
  }
10
10
  }
@@ -5,7 +5,12 @@ const command = exports.command = {
5
5
  name: 'moveCellSelectionInlineEnd',
6
6
  callback(hot, event) {
7
7
  const settings = hot.getSettings();
8
+ const selectedRange = hot.getSelectedRangeLast();
8
9
  const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
9
- hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
10
+ if (hot.selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
11
+ hot.selection.transformFocus(-tabMoves.row, -tabMoves.col);
12
+ } else {
13
+ hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
14
+ }
10
15
  }
11
16
  };
@@ -2,7 +2,12 @@ export const command = {
2
2
  name: 'moveCellSelectionInlineEnd',
3
3
  callback(hot, event) {
4
4
  const settings = hot.getSettings();
5
+ const selectedRange = hot.getSelectedRangeLast();
5
6
  const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
6
- hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
7
+ if (hot.selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
8
+ hot.selection.transformFocus(-tabMoves.row, -tabMoves.col);
9
+ } else {
10
+ hot.selection.transformStart(-tabMoves.row, -tabMoves.col);
11
+ }
7
12
  }
8
13
  };
@@ -5,7 +5,12 @@ const command = exports.command = {
5
5
  name: 'moveCellSelectionInlineStart',
6
6
  callback(hot, event) {
7
7
  const settings = hot.getSettings();
8
+ const selectedRange = hot.getSelectedRangeLast();
8
9
  const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
9
- hot.selection.transformStart(tabMoves.row, tabMoves.col);
10
+ if (hot.selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
11
+ hot.selection.transformFocus(tabMoves.row, tabMoves.col);
12
+ } else {
13
+ hot.selection.transformStart(tabMoves.row, tabMoves.col);
14
+ }
10
15
  }
11
16
  };
@@ -2,7 +2,12 @@ export const command = {
2
2
  name: 'moveCellSelectionInlineStart',
3
3
  callback(hot, event) {
4
4
  const settings = hot.getSettings();
5
+ const selectedRange = hot.getSelectedRangeLast();
5
6
  const tabMoves = typeof settings.tabMoves === 'function' ? settings.tabMoves(event) : settings.tabMoves;
6
- hot.selection.transformStart(tabMoves.row, tabMoves.col);
7
+ if (hot.selection.isMultiple() && !selectedRange.isHeader() && hot.countRenderedCols() > 0 && hot.countRenderedRows() > 0) {
8
+ hot.selection.transformFocus(tabMoves.row, tabMoves.col);
9
+ } else {
10
+ hot.selection.transformStart(tabMoves.row, tabMoves.col);
11
+ }
7
12
  }
8
13
  };
@@ -37,7 +37,13 @@ function shortcutsGridContext(hot) {
37
37
  });
38
38
  context.addShortcuts([{
39
39
  keys: [['Control/Meta', 'A']],
40
- callback: () => commandsPool.selectAllCells()
40
+ callback: () => commandsPool.selectAllCells(),
41
+ runOnlyIf: () => !hot.getSelectedRangeLast().highlight.isHeader()
42
+ }, {
43
+ keys: [['Control/Meta', 'A']],
44
+ callback: () => {},
45
+ runOnlyIf: () => hot.getSelectedRangeLast().highlight.isHeader(),
46
+ preventDefault: true
41
47
  }, {
42
48
  keys: [['Control/Meta', 'Shift', 'Space']],
43
49
  callback: () => commandsPool.selectAllCellsAndHeaders()
@@ -157,12 +163,12 @@ function shortcutsGridContext(hot) {
157
163
  keys: [['Tab']],
158
164
  // The property value is controlled by focusCatcher module (https://github.com/handsontable/handsontable/blob/master/handsontable/src/core/focusCatcher/index.js)
159
165
  preventDefault: false,
160
- callback: () => commandsPool.moveCellSelectionInlineStart()
166
+ callback: event => commandsPool.moveCellSelectionInlineStart(event)
161
167
  }, {
162
168
  keys: [['Shift', 'Tab']],
163
169
  // The property value is controlled by focusCatcher module (https://github.com/handsontable/handsontable/blob/master/handsontable/src/core/focusCatcher/index.js)
164
170
  preventDefault: false,
165
- callback: () => commandsPool.moveCellSelectionInlineEnd()
171
+ callback: event => commandsPool.moveCellSelectionInlineEnd(event)
166
172
  }, {
167
173
  keys: [['Control/Meta', 'Backspace']],
168
174
  callback: () => commandsPool.scrollToFocusedCell()
@@ -33,7 +33,13 @@ export function shortcutsGridContext(hot) {
33
33
  });
34
34
  context.addShortcuts([{
35
35
  keys: [['Control/Meta', 'A']],
36
- callback: () => commandsPool.selectAllCells()
36
+ callback: () => commandsPool.selectAllCells(),
37
+ runOnlyIf: () => !hot.getSelectedRangeLast().highlight.isHeader()
38
+ }, {
39
+ keys: [['Control/Meta', 'A']],
40
+ callback: () => {},
41
+ runOnlyIf: () => hot.getSelectedRangeLast().highlight.isHeader(),
42
+ preventDefault: true
37
43
  }, {
38
44
  keys: [['Control/Meta', 'Shift', 'Space']],
39
45
  callback: () => commandsPool.selectAllCellsAndHeaders()
@@ -153,12 +159,12 @@ export function shortcutsGridContext(hot) {
153
159
  keys: [['Tab']],
154
160
  // The property value is controlled by focusCatcher module (https://github.com/handsontable/handsontable/blob/master/handsontable/src/core/focusCatcher/index.js)
155
161
  preventDefault: false,
156
- callback: () => commandsPool.moveCellSelectionInlineStart()
162
+ callback: event => commandsPool.moveCellSelectionInlineStart(event)
157
163
  }, {
158
164
  keys: [['Shift', 'Tab']],
159
165
  // The property value is controlled by focusCatcher module (https://github.com/handsontable/handsontable/blob/master/handsontable/src/core/focusCatcher/index.js)
160
166
  preventDefault: false,
161
- callback: () => commandsPool.moveCellSelectionInlineEnd()
167
+ callback: event => commandsPool.moveCellSelectionInlineEnd(event)
162
168
  }, {
163
169
  keys: [['Control/Meta', 'Backspace']],
164
170
  callback: () => commandsPool.scrollToFocusedCell()
@@ -90,7 +90,8 @@ const createContext = name => {
90
90
  stopPropagation
91
91
  };
92
92
  if ((0, _mixed.isDefined)(relativeToGroup)) {
93
- [newShortcut.relativeToGroup, newShortcut.position] = [relativeToGroup, position];
93
+ newShortcut.relativeToGroup = relativeToGroup;
94
+ newShortcut.position = position;
94
95
  }
95
96
  if (isContextObject(forwardToContext)) {
96
97
  newShortcut.forwardToContext = forwardToContext;
@@ -86,7 +86,8 @@ export const createContext = name => {
86
86
  stopPropagation
87
87
  };
88
88
  if (isDefined(relativeToGroup)) {
89
- [newShortcut.relativeToGroup, newShortcut.position] = [relativeToGroup, position];
89
+ newShortcut.relativeToGroup = relativeToGroup;
90
+ newShortcut.position = position;
90
91
  }
91
92
  if (isContextObject(forwardToContext)) {
92
93
  newShortcut.forwardToContext = forwardToContext;