handsontable 0.0.0-next-59715d3-20230523 → 0.0.0-next-93e34dc-20230601

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

Potentially problematic release.


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

Files changed (216) hide show
  1. package/3rdparty/walkontable/src/cell/coords.d.ts +6 -1
  2. package/3rdparty/walkontable/src/cell/coords.js +61 -12
  3. package/3rdparty/walkontable/src/cell/coords.mjs +61 -12
  4. package/3rdparty/walkontable/src/cell/range.d.ts +9 -2
  5. package/3rdparty/walkontable/src/cell/range.js +44 -7
  6. package/3rdparty/walkontable/src/cell/range.mjs +44 -7
  7. package/3rdparty/walkontable/src/core/_base.js +9 -3
  8. package/3rdparty/walkontable/src/core/_base.mjs +9 -3
  9. package/3rdparty/walkontable/src/core/clone.js +2 -2
  10. package/3rdparty/walkontable/src/core/clone.mjs +2 -2
  11. package/3rdparty/walkontable/src/core/core.js +3 -2
  12. package/3rdparty/walkontable/src/core/core.mjs +3 -2
  13. package/3rdparty/walkontable/src/event.js +7 -7
  14. package/3rdparty/walkontable/src/event.mjs +7 -7
  15. package/3rdparty/walkontable/src/facade/core.js +2 -2
  16. package/3rdparty/walkontable/src/facade/core.mjs +2 -2
  17. package/3rdparty/walkontable/src/index.js +10 -2
  18. package/3rdparty/walkontable/src/index.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/_base.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/_base.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/inlineStart.js +2 -4
  22. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +2 -4
  23. package/3rdparty/walkontable/src/overlay/top.js +2 -4
  24. package/3rdparty/walkontable/src/overlay/top.mjs +2 -4
  25. package/3rdparty/walkontable/src/{border.js → selection/border/border.js} +7 -12
  26. package/3rdparty/walkontable/src/{border.mjs → selection/border/border.mjs} +7 -12
  27. package/3rdparty/walkontable/src/selection/border/constants.js +18 -0
  28. package/3rdparty/walkontable/src/selection/border/constants.mjs +13 -0
  29. package/3rdparty/walkontable/src/selection/constants.js +63 -0
  30. package/3rdparty/walkontable/src/selection/constants.mjs +51 -0
  31. package/3rdparty/walkontable/src/selection/index.js +30 -0
  32. package/3rdparty/walkontable/src/selection/index.mjs +5 -0
  33. package/3rdparty/walkontable/src/selection/manager.js +328 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +322 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +363 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +359 -0
  37. package/3rdparty/walkontable/src/selection/selection.js +133 -0
  38. package/3rdparty/walkontable/src/selection/selection.mjs +127 -0
  39. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.js +9 -0
  40. package/3rdparty/walkontable/src/table/mixin/calculatedColumns.mjs +9 -0
  41. package/3rdparty/walkontable/src/table/mixin/calculatedRows.js +9 -0
  42. package/3rdparty/walkontable/src/table/mixin/calculatedRows.mjs +9 -0
  43. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.js +9 -0
  44. package/3rdparty/walkontable/src/table/mixin/stickyColumnsStart.mjs +9 -0
  45. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.js +9 -0
  46. package/3rdparty/walkontable/src/table/mixin/stickyRowsBottom.mjs +9 -0
  47. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.js +9 -0
  48. package/3rdparty/walkontable/src/table/mixin/stickyRowsTop.mjs +9 -0
  49. package/3rdparty/walkontable/src/table.js +7 -79
  50. package/3rdparty/walkontable/src/table.mjs +8 -80
  51. package/base.js +2 -2
  52. package/base.mjs +2 -2
  53. package/core.d.ts +5 -3
  54. package/core.js +82 -300
  55. package/core.mjs +82 -300
  56. package/dataMap/metaManager/metaSchema.js +15 -0
  57. package/dataMap/metaManager/metaSchema.mjs +15 -0
  58. package/dist/handsontable.css +8 -3
  59. package/dist/handsontable.full.css +8 -3
  60. package/dist/handsontable.full.js +12245 -9953
  61. package/dist/handsontable.full.min.css +3 -3
  62. package/dist/handsontable.full.min.js +120 -120
  63. package/dist/handsontable.js +15898 -13606
  64. package/dist/handsontable.min.css +3 -3
  65. package/dist/handsontable.min.js +4 -4
  66. package/editorManager.js +20 -82
  67. package/editorManager.mjs +25 -86
  68. package/editors/textEditor/textEditor.js +3 -11
  69. package/editors/textEditor/textEditor.mjs +4 -12
  70. package/helpers/mixed.js +1 -1
  71. package/helpers/mixed.mjs +1 -1
  72. package/helpers/number.d.ts +1 -0
  73. package/helpers/number.js +18 -0
  74. package/helpers/number.mjs +17 -0
  75. package/package.json +1 -1
  76. package/pluginHooks.js +1 -1
  77. package/pluginHooks.mjs +1 -1
  78. package/plugins/copyPaste/copyPaste.js +5 -1
  79. package/plugins/copyPaste/copyPaste.mjs +5 -1
  80. package/plugins/customBorders/customBorders.js +18 -52
  81. package/plugins/customBorders/customBorders.mjs +19 -53
  82. package/plugins/mergeCells/mergeCells.js +5 -18
  83. package/plugins/mergeCells/mergeCells.mjs +5 -18
  84. package/plugins/nestedHeaders/nestedHeaders.js +89 -9
  85. package/plugins/nestedHeaders/nestedHeaders.mjs +89 -9
  86. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  87. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  88. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  89. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  90. package/selection/highlight/highlight.js +311 -88
  91. package/selection/highlight/highlight.mjs +301 -84
  92. package/selection/highlight/types/activeHeader.js +10 -9
  93. package/selection/highlight/types/activeHeader.mjs +10 -8
  94. package/selection/highlight/types/area.js +12 -27
  95. package/selection/highlight/types/area.mjs +16 -30
  96. package/selection/highlight/types/areaLayered.js +54 -0
  97. package/selection/highlight/types/areaLayered.mjs +49 -0
  98. package/selection/highlight/types/column.js +50 -0
  99. package/selection/highlight/types/column.mjs +45 -0
  100. package/selection/highlight/types/customSelection.js +7 -10
  101. package/selection/highlight/types/customSelection.mjs +7 -9
  102. package/selection/highlight/types/fill.js +5 -8
  103. package/selection/highlight/types/fill.mjs +5 -7
  104. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  105. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  106. package/selection/highlight/types/header.js +10 -20
  107. package/selection/highlight/types/header.mjs +10 -19
  108. package/selection/highlight/types/{index.js → row.js} +27 -31
  109. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  110. package/selection/highlight/visualSelection.js +23 -28
  111. package/selection/highlight/visualSelection.mjs +23 -28
  112. package/selection/index.js +4 -7
  113. package/selection/index.mjs +2 -3
  114. package/selection/mouseEventHandler.js +1 -1
  115. package/selection/mouseEventHandler.mjs +1 -1
  116. package/selection/range.js +8 -8
  117. package/selection/range.mjs +8 -8
  118. package/selection/selection.js +296 -180
  119. package/selection/selection.mjs +291 -179
  120. package/selection/transformation.js +233 -96
  121. package/selection/transformation.mjs +230 -93
  122. package/selection/utils.js +12 -35
  123. package/selection/utils.mjs +13 -35
  124. package/settings.d.ts +1 -0
  125. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  126. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  127. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  128. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  129. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  130. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  131. package/shortcutContexts/commands/editor/index.js +16 -0
  132. package/shortcutContexts/commands/editor/index.mjs +12 -0
  133. package/shortcutContexts/commands/editor/open.js +29 -0
  134. package/shortcutContexts/commands/editor/open.mjs +24 -0
  135. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  136. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  137. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  138. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  139. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  140. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  141. package/shortcutContexts/commands/extendCellsSelection/index.js +24 -0
  142. package/shortcutContexts/commands/extendCellsSelection/index.mjs +20 -0
  143. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  144. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  145. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  146. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  147. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  148. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  149. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  150. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  151. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  152. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  153. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +39 -0
  154. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +34 -0
  155. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +39 -0
  156. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +34 -0
  157. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  158. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  159. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  160. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  161. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  162. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  163. package/shortcutContexts/commands/index.js +51 -0
  164. package/shortcutContexts/commands/index.mjs +47 -0
  165. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  166. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  167. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +11 -0
  168. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +6 -0
  169. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  170. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  171. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  172. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  173. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  174. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  175. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  176. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  177. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  178. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  179. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  180. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  181. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  182. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  183. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  184. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  185. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  186. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  187. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +35 -0
  188. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +30 -0
  189. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +35 -0
  190. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +30 -0
  191. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  192. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  193. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  194. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  195. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  196. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  197. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +11 -0
  198. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +6 -0
  199. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  200. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  201. package/shortcutContexts/commands/selectAll.js +11 -0
  202. package/shortcutContexts/commands/selectAll.mjs +6 -0
  203. package/shortcutContexts/constants.js +19 -0
  204. package/shortcutContexts/constants.mjs +12 -0
  205. package/shortcutContexts/editor.js +29 -0
  206. package/shortcutContexts/editor.mjs +25 -0
  207. package/shortcutContexts/grid.js +232 -0
  208. package/shortcutContexts/grid.mjs +228 -0
  209. package/shortcutContexts/index.js +29 -0
  210. package/shortcutContexts/index.mjs +15 -0
  211. package/tableView.js +58 -9
  212. package/tableView.mjs +58 -9
  213. package/3rdparty/walkontable/src/selection.js +0 -354
  214. package/3rdparty/walkontable/src/selection.mjs +0 -348
  215. package/selection/highlight/constants.js +0 -16
  216. package/selection/highlight/constants.mjs +0 -6
package/core.mjs CHANGED
@@ -38,7 +38,6 @@ import "core-js/modules/es.array.reverse.js";
38
38
  import "core-js/modules/web.dom-collections.for-each.js";
39
39
  import "core-js/modules/web.timers.js";
40
40
  import "core-js/modules/web.immediate.js";
41
- import "core-js/modules/es.map.js";
42
41
  import { addClass, empty, observeVisibilityChangeOnce, removeClass } from "./helpers/dom/element.mjs";
43
42
  import { isFunction } from "./helpers/function.mjs";
44
43
  import { isDefined, isUndefined, isRegExp, _injectProductInfo, isEmpty } from "./helpers/mixed.mjs";
@@ -69,7 +68,7 @@ import { Selection } from "./selection/index.mjs";
69
68
  import { MetaManager, DynamicCellMetaMod, ExtendMetaPropertiesMod, replaceData } from "./dataMap/index.mjs";
70
69
  import { createUniqueMap } from "./utils/dataStructures/uniqueMap.mjs";
71
70
  import { createShortcutManager } from "./shortcuts/index.mjs";
72
- var SHORTCUTS_GROUP = 'gridDefault';
71
+ import { registerAllShortcutContexts } from "./shortcutContexts/index.mjs";
73
72
  var activeGuid = null;
74
73
  var deprecationWarns = new Set();
75
74
 
@@ -286,12 +285,8 @@ export default function Core(rootElement, userSettings) {
286
285
  };
287
286
 
288
287
  var selection = new Selection(tableMeta, {
289
- rowIndexMapper: function rowIndexMapper() {
290
- return instance.rowIndexMapper;
291
- },
292
- columnIndexMapper: function columnIndexMapper() {
293
- return instance.columnIndexMapper;
294
- },
288
+ rowIndexMapper: instance.rowIndexMapper,
289
+ columnIndexMapper: instance.columnIndexMapper,
295
290
  countCols: function countCols() {
296
291
  return instance.countCols();
297
292
  },
@@ -304,12 +299,18 @@ export default function Core(rootElement, userSettings) {
304
299
  isEditorOpened: function isEditorOpened() {
305
300
  return instance.getActiveEditor() ? instance.getActiveEditor().isOpened() : false;
306
301
  },
307
- countColsTranslated: function countColsTranslated() {
302
+ countRenderableColumns: function countRenderableColumns() {
308
303
  return _this.view.countRenderableColumns();
309
304
  },
310
- countRowsTranslated: function countRowsTranslated() {
305
+ countRenderableRows: function countRenderableRows() {
311
306
  return _this.view.countRenderableRows();
312
307
  },
308
+ countRowHeaders: function countRowHeaders() {
309
+ return _this.countRowHeaders();
310
+ },
311
+ countColHeaders: function countColHeaders() {
312
+ return _this.countColHeaders();
313
+ },
313
314
  getShortcutManager: function getShortcutManager() {
314
315
  return instance.getShortcutManager();
315
316
  },
@@ -342,12 +343,6 @@ export default function Core(rootElement, userSettings) {
342
343
  });
343
344
  this.selection.addLocalHook('beforeSetRangeEnd', function (cellCoords) {
344
345
  _this.runHooks('beforeSetRangeEnd', cellCoords);
345
- if (cellCoords.row < 0) {
346
- cellCoords.row = _this.view._wt.wtTable.getFirstVisibleRow();
347
- }
348
- if (cellCoords.col < 0) {
349
- cellCoords.col = _this.view._wt.wtTable.getFirstVisibleColumn();
350
- }
351
346
  });
352
347
  this.selection.addLocalHook('afterSetRangeEnd', function (cellCoords) {
353
348
  var preventScrolling = createObjectPropListener(false);
@@ -373,7 +368,14 @@ export default function Core(rootElement, userSettings) {
373
368
  if (scrollToCell !== false) {
374
369
  if (!isSelectedByAnyHeader) {
375
370
  if (currentSelectedRange && !_this.selection.isMultiple()) {
376
- _this.view.scrollViewport(visualToRenderableCoords(currentSelectedRange.from));
371
+ var renderableCoords = visualToRenderableCoords(currentSelectedRange.from);
372
+ if (renderableCoords.row < 0 && renderableCoords.col >= 0) {
373
+ _this.view.scrollViewportHorizontally(renderableCoords.col);
374
+ } else if (renderableCoords.col < 0 && renderableCoords.row >= 0) {
375
+ _this.view.scrollViewportVertically(renderableCoords.row);
376
+ } else {
377
+ _this.view.scrollViewport(renderableCoords);
378
+ }
377
379
  } else {
378
380
  _this.view.scrollViewport(visualToRenderableCoords(cellCoords));
379
381
  }
@@ -3727,6 +3729,30 @@ export default function Core(rootElement, userSettings) {
3727
3729
  return instance.view._wt.drawn ? instance.view._wt.wtTable.getVisibleColumnsCount() : -1;
3728
3730
  };
3729
3731
 
3732
+ /**
3733
+ * Returns the number of rendered row headers.
3734
+ *
3735
+ * @since 13.0.0
3736
+ * @memberof Core#
3737
+ * @function countRowHeaders
3738
+ * @returns {number} Number of row headers.
3739
+ */
3740
+ this.countRowHeaders = function () {
3741
+ return this.view.getRowHeadersCount();
3742
+ };
3743
+
3744
+ /**
3745
+ * Returns the number of rendered column headers.
3746
+ *
3747
+ * @since 13.0.0
3748
+ * @memberof Core#
3749
+ * @function countColHeaders
3750
+ * @returns {number} Number of column headers.
3751
+ */
3752
+ this.countColHeaders = function () {
3753
+ return this.view.getColumnHeadersCount();
3754
+ };
3755
+
3730
3756
  /**
3731
3757
  * Returns the number of empty rows. If the optional ending parameter is `true`, returns the
3732
3758
  * number of empty rows at the bottom of the table.
@@ -3931,6 +3957,8 @@ export default function Core(rootElement, userSettings) {
3931
3957
  * hot.selectColumns('id');
3932
3958
  * // Select range of columns using visual indexes.
3933
3959
  * hot.selectColumns(1, 4);
3960
+ * // Select range of columns using visual indexes and mark the header as highlighted.
3961
+ * hot.selectColumns(1, 2, -1);
3934
3962
  * // Select range of columns using column properties.
3935
3963
  * hot.selectColumns('id', 'last_name');
3936
3964
  * ```
@@ -3941,11 +3969,15 @@ export default function Core(rootElement, userSettings) {
3941
3969
  * @param {number} startColumn The visual column index from which the selection starts.
3942
3970
  * @param {number} [endColumn=startColumn] The visual column index to which the selection finishes. If `endColumn`
3943
3971
  * is not defined the column defined by `startColumn` will be selected.
3972
+ * @param {number} [headerLevel=0] The header level allows changing the cell/header highlight position. The value can
3973
+ * take 0 to -N, where 0 means highlighting the cell nearest the column header, -1
3974
+ * means the highlighting header starting from the header closest to the cells.
3944
3975
  * @returns {boolean} `true` if selection was successful, `false` otherwise.
3945
3976
  */
3946
3977
  this.selectColumns = function (startColumn) {
3947
3978
  var endColumn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startColumn;
3948
- return selection.selectColumns(startColumn, endColumn);
3979
+ var headerLevel = arguments.length > 2 ? arguments[2] : undefined;
3980
+ return selection.selectColumns(startColumn, endColumn, headerLevel);
3949
3981
  };
3950
3982
 
3951
3983
  /**
@@ -3957,6 +3989,8 @@ export default function Core(rootElement, userSettings) {
3957
3989
  * hot.selectRows(1);
3958
3990
  * // Select range of rows using visual indexes.
3959
3991
  * hot.selectRows(1, 4);
3992
+ * // Select range of rows using visual indexes and mark the header as highlighted.
3993
+ * hot.selectRows(1, 2, -1);
3960
3994
  * ```
3961
3995
  *
3962
3996
  * @memberof Core#
@@ -3965,11 +3999,15 @@ export default function Core(rootElement, userSettings) {
3965
3999
  * @param {number} startRow The visual row index from which the selection starts.
3966
4000
  * @param {number} [endRow=startRow] The visual row index to which the selection finishes. If `endRow`
3967
4001
  * is not defined the row defined by `startRow` will be selected.
4002
+ * @param {number} [headerLevel=0] The header level allows changing the cell/header highlight position. The value can
4003
+ * take 0 to -N, where 0 means highlighting the cell nearest the row header, -1
4004
+ * means the highlighting header starting from the header closest to the cells.
3968
4005
  * @returns {boolean} `true` if selection was successful, `false` otherwise.
3969
4006
  */
3970
4007
  this.selectRows = function (startRow) {
3971
4008
  var endRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : startRow;
3972
- return selection.selectRows(startRow, endRow);
4009
+ var headerLevel = arguments.length > 2 ? arguments[2] : undefined;
4010
+ return selection.selectRows(startRow, endRow, headerLevel);
3973
4011
  };
3974
4012
 
3975
4013
  /**
@@ -3988,9 +4026,16 @@ export default function Core(rootElement, userSettings) {
3988
4026
  * The previous selection is overwritten.
3989
4027
  *
3990
4028
  * ```js
3991
- * // select all cells in the table, including all headers
4029
+ * // select all cells in the table, including all headers with corner
3992
4030
  * hot.selectAll();
3993
4031
  *
4032
+ * // select all cells in the table, including row headers without corner
4033
+ * hot.selectAll(true, false);
4034
+ *
4035
+ * // select all cells in the table, including all headers with corner but move the focus
4036
+ * // highlight to position -2,-1
4037
+ * hot.selectAll(-2, -1);
4038
+ *
3994
4039
  * // select all cells in the table, without headers
3995
4040
  * hot.selectAll(false);
3996
4041
  * ```
@@ -3998,15 +4043,15 @@ export default function Core(rootElement, userSettings) {
3998
4043
  * @since 0.38.2
3999
4044
  * @memberof Core#
4000
4045
  * @function selectAll
4001
- * @param {boolean} [includeHeaders=true] `true`: include all row, column and corner headers.
4046
+ * @param {boolean|number} [rowHeaderLevel=true] `true`: include all row headers.
4047
+ * @param {boolean|number} [columnHeaderLevel=true] `true`: include all column headers.
4002
4048
  * `false`: don't include any headers.
4003
4049
  */
4004
4050
  this.selectAll = function () {
4005
- var includeHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
4006
- var includeRowHeaders = includeHeaders && this.hasRowHeaders();
4007
- var includeColumnHeaders = includeHeaders && this.hasColHeaders();
4051
+ var rowHeaderLevel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
4052
+ var columnHeaderLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : rowHeaderLevel;
4008
4053
  preventScrollingToCell = true;
4009
- selection.selectAll(includeRowHeaders, includeColumnHeaders);
4054
+ selection.selectAll(rowHeaderLevel, columnHeaderLevel);
4010
4055
  preventScrollingToCell = false;
4011
4056
  };
4012
4057
  var getIndexToScroll = function getIndexToScroll(indexMapper, visualIndex) {
@@ -4410,6 +4455,16 @@ export default function Core(rootElement, userSettings) {
4410
4455
  }
4411
4456
  };
4412
4457
 
4458
+ /**
4459
+ * Gets the instance of the EditorManager.
4460
+ *
4461
+ * @private
4462
+ * @returns {EditorManager}
4463
+ */
4464
+ this._getEditorManager = function () {
4465
+ return editorManager;
4466
+ };
4467
+
4413
4468
  /**
4414
4469
  * Check if currently it is RTL direction.
4415
4470
  *
@@ -4482,284 +4537,11 @@ export default function Core(rootElement, userSettings) {
4482
4537
  this.getShortcutManager = function () {
4483
4538
  return shortcutManager;
4484
4539
  };
4485
- var gridContext = shortcutManager.addContext('grid');
4486
- var gridConfig = {
4487
- runOnlyIf: function runOnlyIf() {
4488
- return isDefined(instance.getSelected()) && instance.countRenderedRows() > 0 && instance.countRenderedCols() > 0;
4489
- },
4490
- group: SHORTCUTS_GROUP
4491
- };
4492
- shortcutManager.setActiveContextName('grid');
4493
- gridContext.addShortcuts([{
4494
- keys: [['Control/Meta', 'A']],
4495
- callback: function callback() {
4496
- instance.selectAll();
4497
- }
4498
- }, {
4499
- keys: [['Control/Meta', 'Enter']],
4500
- callback: function callback() {
4501
- var selectedRange = instance.getSelectedRange();
4502
- var _selectedRange$highli = selectedRange[selectedRange.length - 1].highlight,
4503
- highlightRow = _selectedRange$highli.row,
4504
- highlightColumn = _selectedRange$highli.col;
4505
- var valueToPopulate = instance.getDataAtCell(highlightRow, highlightColumn);
4506
- var cellValues = new Map();
4507
- for (var i = 0; i < selectedRange.length; i++) {
4508
- selectedRange[i].forAll(function (row, column) {
4509
- if (row >= 0 && column >= 0 && (row !== highlightRow || column !== highlightColumn)) {
4510
- var _instance$getCellMeta = instance.getCellMeta(row, column),
4511
- readOnly = _instance$getCellMeta.readOnly;
4512
- if (!readOnly) {
4513
- cellValues.set("".concat(row, "x").concat(column), [row, column, valueToPopulate]);
4514
- }
4515
- }
4516
- });
4517
- }
4518
- instance.setDataAtCell(Array.from(cellValues.values()));
4519
- },
4520
- runOnlyIf: function runOnlyIf() {
4521
- return instance.getSelectedRangeLast().getCellsCount() > 1;
4522
- }
4523
- }, {
4524
- keys: [['ArrowUp']],
4525
- callback: function callback() {
4526
- selection.transformStart(-1, 0);
4527
- }
4528
- }, {
4529
- keys: [['ArrowUp', 'Control/Meta']],
4530
- captureCtrl: true,
4531
- callback: function callback() {
4532
- selection.setRangeStart(instance._createCellCoords(instance.rowIndexMapper.getNearestNotHiddenIndex(0, 1), instance.getSelectedRangeLast().highlight.col));
4533
- }
4534
- }, {
4535
- keys: [['ArrowUp', 'Shift']],
4536
- callback: function callback() {
4537
- selection.transformEnd(-1, 0);
4538
- }
4539
- }, {
4540
- keys: [['ArrowUp', 'Shift', 'Control/Meta']],
4541
- captureCtrl: true,
4542
- callback: function callback() {
4543
- var _instance$getSelected = instance.getSelectedRangeLast(),
4544
- from = _instance$getSelected.from,
4545
- to = _instance$getSelected.to;
4546
- var row = instance.rowIndexMapper.getNearestNotHiddenIndex(0, 1);
4547
- selection.setRangeStart(from.clone());
4548
- selection.setRangeEnd(instance._createCellCoords(row, to.col));
4549
- },
4550
- runOnlyIf: function runOnlyIf() {
4551
- return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByColumnHeader());
4552
- }
4553
- }, {
4554
- keys: [['ArrowDown']],
4555
- callback: function callback() {
4556
- selection.transformStart(1, 0);
4557
- }
4558
- }, {
4559
- keys: [['ArrowDown', 'Control/Meta']],
4560
- captureCtrl: true,
4561
- callback: function callback() {
4562
- selection.setRangeStart(instance._createCellCoords(instance.rowIndexMapper.getNearestNotHiddenIndex(instance.countRows() - 1, -1), instance.getSelectedRangeLast().highlight.col));
4563
- }
4564
- }, {
4565
- keys: [['ArrowDown', 'Shift']],
4566
- callback: function callback() {
4567
- selection.transformEnd(1, 0);
4568
- }
4569
- }, {
4570
- keys: [['ArrowDown', 'Shift', 'Control/Meta']],
4571
- captureCtrl: true,
4572
- callback: function callback() {
4573
- var _instance$getSelected2 = instance.getSelectedRangeLast(),
4574
- from = _instance$getSelected2.from,
4575
- to = _instance$getSelected2.to;
4576
- var row = instance.rowIndexMapper.getNearestNotHiddenIndex(instance.countRows() - 1, -1);
4577
- selection.setRangeStart(from.clone());
4578
- selection.setRangeEnd(instance._createCellCoords(row, to.col));
4579
- },
4580
- runOnlyIf: function runOnlyIf() {
4581
- return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByColumnHeader());
4582
- }
4583
- }, {
4584
- keys: [['ArrowLeft']],
4585
- callback: function callback() {
4586
- selection.transformStart(0, -1 * instance.getDirectionFactor());
4587
- }
4588
- }, {
4589
- keys: [['ArrowLeft', 'Control/Meta']],
4590
- captureCtrl: true,
4591
- callback: function callback() {
4592
- var _instance$columnIndex;
4593
- var row = instance.getSelectedRangeLast().highlight.row;
4594
- var column = (_instance$columnIndex = instance.columnIndexMapper).getNearestNotHiddenIndex.apply(_instance$columnIndex, _toConsumableArray(instance.isRtl() ? [instance.countCols() - 1, -1] : [0, 1]));
4595
- selection.setRangeStart(instance._createCellCoords(row, column));
4596
- }
4597
- }, {
4598
- keys: [['ArrowLeft', 'Shift']],
4599
- callback: function callback() {
4600
- selection.transformEnd(0, -1 * instance.getDirectionFactor());
4601
- }
4602
- }, {
4603
- keys: [['ArrowLeft', 'Shift', 'Control/Meta']],
4604
- captureCtrl: true,
4605
- callback: function callback() {
4606
- var _instance$columnIndex2;
4607
- var _instance$getSelected3 = instance.getSelectedRangeLast(),
4608
- from = _instance$getSelected3.from,
4609
- to = _instance$getSelected3.to;
4610
- var column = (_instance$columnIndex2 = instance.columnIndexMapper).getNearestNotHiddenIndex.apply(_instance$columnIndex2, _toConsumableArray(instance.isRtl() ? [instance.countCols() - 1, -1] : [0, 1]));
4611
- selection.setRangeStart(from.clone());
4612
- selection.setRangeEnd(instance._createCellCoords(to.row, column));
4613
- },
4614
- runOnlyIf: function runOnlyIf() {
4615
- return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByRowHeader());
4616
- }
4617
- }, {
4618
- keys: [['ArrowRight']],
4619
- callback: function callback() {
4620
- selection.transformStart(0, instance.getDirectionFactor());
4621
- }
4622
- }, {
4623
- keys: [['ArrowRight', 'Control/Meta']],
4624
- captureCtrl: true,
4625
- callback: function callback() {
4626
- var _instance$columnIndex3;
4627
- var row = instance.getSelectedRangeLast().highlight.row;
4628
- var column = (_instance$columnIndex3 = instance.columnIndexMapper).getNearestNotHiddenIndex.apply(_instance$columnIndex3, _toConsumableArray(instance.isRtl() ? [0, 1] : [instance.countCols() - 1, -1]));
4629
- selection.setRangeStart(instance._createCellCoords(row, column));
4630
- }
4631
- }, {
4632
- keys: [['ArrowRight', 'Shift']],
4633
- callback: function callback() {
4634
- selection.transformEnd(0, instance.getDirectionFactor());
4635
- }
4636
- }, {
4637
- keys: [['ArrowRight', 'Shift', 'Control/Meta']],
4638
- captureCtrl: true,
4639
- callback: function callback() {
4640
- var _instance$columnIndex4;
4641
- var _instance$getSelected4 = instance.getSelectedRangeLast(),
4642
- from = _instance$getSelected4.from,
4643
- to = _instance$getSelected4.to;
4644
- var column = (_instance$columnIndex4 = instance.columnIndexMapper).getNearestNotHiddenIndex.apply(_instance$columnIndex4, _toConsumableArray(instance.isRtl() ? [0, 1] : [instance.countCols() - 1, -1]));
4645
- selection.setRangeStart(from.clone());
4646
- selection.setRangeEnd(instance._createCellCoords(to.row, column));
4647
- },
4648
- runOnlyIf: function runOnlyIf() {
4649
- return !(instance.selection.isSelectedByCorner() || instance.selection.isSelectedByRowHeader());
4650
- }
4651
- }, {
4652
- keys: [['Home']],
4653
- captureCtrl: true,
4654
- callback: function callback() {
4655
- var fixedColumns = parseInt(instance.getSettings().fixedColumnsStart, 10);
4656
- var row = instance.getSelectedRangeLast().highlight.row;
4657
- var column = instance.columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
4658
- selection.setRangeStart(instance._createCellCoords(row, column));
4659
- },
4660
- runOnlyIf: function runOnlyIf() {
4661
- return instance.view.isMainTableNotFullyCoveredByOverlays();
4662
- }
4663
- }, {
4664
- keys: [['Home', 'Shift']],
4665
- callback: function callback() {
4666
- selection.setRangeEnd(instance._createCellCoords(selection.selectedRange.current().from.row, instance.columnIndexMapper.getNearestNotHiddenIndex(0, 1)));
4667
- }
4668
- }, {
4669
- keys: [['Home', 'Control/Meta']],
4670
- captureCtrl: true,
4671
- callback: function callback() {
4672
- var fixedRows = parseInt(instance.getSettings().fixedRowsTop, 10);
4673
- var fixedColumns = parseInt(instance.getSettings().fixedColumnsStart, 10);
4674
- var row = instance.rowIndexMapper.getNearestNotHiddenIndex(fixedRows, 1);
4675
- var column = instance.columnIndexMapper.getNearestNotHiddenIndex(fixedColumns, 1);
4676
- selection.setRangeStart(instance._createCellCoords(row, column));
4677
- },
4678
- runOnlyIf: function runOnlyIf() {
4679
- return instance.view.isMainTableNotFullyCoveredByOverlays();
4680
- }
4681
- }, {
4682
- keys: [['End']],
4683
- captureCtrl: true,
4684
- callback: function callback() {
4685
- selection.setRangeStart(instance._createCellCoords(instance.getSelectedRangeLast().highlight.row, instance.columnIndexMapper.getNearestNotHiddenIndex(instance.countCols() - 1, -1)));
4686
- },
4687
- runOnlyIf: function runOnlyIf() {
4688
- return instance.view.isMainTableNotFullyCoveredByOverlays();
4689
- }
4690
- }, {
4691
- keys: [['End', 'Shift']],
4692
- callback: function callback() {
4693
- selection.setRangeEnd(instance._createCellCoords(selection.selectedRange.current().from.row, instance.columnIndexMapper.getNearestNotHiddenIndex(instance.countCols() - 1, -1)));
4694
- }
4695
- }, {
4696
- keys: [['End', 'Control/Meta']],
4697
- captureCtrl: true,
4698
- callback: function callback() {
4699
- var fixedRows = parseInt(instance.getSettings().fixedRowsBottom, 10);
4700
- var row = instance.rowIndexMapper.getNearestNotHiddenIndex(instance.countRows() - fixedRows - 1, -1);
4701
- var column = instance.columnIndexMapper.getNearestNotHiddenIndex(instance.countCols() - 1, -1);
4702
- selection.setRangeStart(instance._createCellCoords(row, column));
4703
- },
4704
- runOnlyIf: function runOnlyIf() {
4705
- return instance.view.isMainTableNotFullyCoveredByOverlays();
4706
- }
4707
- }, {
4708
- keys: [['PageUp']],
4709
- callback: function callback() {
4710
- selection.transformStart(-instance.countVisibleRows(), 0);
4711
- }
4712
- }, {
4713
- keys: [['PageUp', 'Shift']],
4714
- callback: function callback() {
4715
- var _instance$getSelected5 = instance.getSelectedRangeLast(),
4716
- to = _instance$getSelected5.to;
4717
- var nextRowIndexToSelect = Math.max(to.row - instance.countVisibleRows(), 0);
4718
- var row = instance.rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, 1);
4719
- if (row !== null) {
4720
- var coords = instance._createCellCoords(row, to.col);
4721
- var scrollPadding = to.row - instance.view.getFirstFullyVisibleRow();
4722
- var nextVerticalScroll = Math.max(coords.row - scrollPadding, 0);
4723
- selection.setRangeEnd(coords);
4724
- instance.scrollViewportTo(nextVerticalScroll);
4725
- }
4726
- }
4727
- }, {
4728
- keys: [['PageDown']],
4729
- callback: function callback() {
4730
- selection.transformStart(instance.countVisibleRows(), 0);
4731
- }
4732
- }, {
4733
- keys: [['PageDown', 'Shift']],
4734
- callback: function callback() {
4735
- var _instance$getSelected6 = instance.getSelectedRangeLast(),
4736
- to = _instance$getSelected6.to;
4737
- var nextRowIndexToSelect = Math.min(to.row + instance.countVisibleRows(), instance.countRows() - 1);
4738
- var row = instance.rowIndexMapper.getNearestNotHiddenIndex(nextRowIndexToSelect, -1);
4739
- if (row !== null) {
4740
- var coords = instance._createCellCoords(row, to.col);
4741
- var scrollPadding = to.row - instance.view.getFirstFullyVisibleRow();
4742
- var nextVerticalScroll = Math.min(coords.row - scrollPadding, instance.countRows() - 1);
4743
- selection.setRangeEnd(coords);
4744
- instance.scrollViewportTo(nextVerticalScroll);
4745
- }
4746
- }
4747
- }, {
4748
- keys: [['Tab']],
4749
- callback: function callback(event) {
4750
- var tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
4751
- selection.transformStart(tabMoves.row, tabMoves.col, true);
4752
- }
4753
- }, {
4754
- keys: [['Shift', 'Tab']],
4755
- callback: function callback(event) {
4756
- var tabMoves = typeof tableMeta.tabMoves === 'function' ? tableMeta.tabMoves(event) : tableMeta.tabMoves;
4757
- selection.transformStart(-tabMoves.row, -tabMoves.col);
4758
- }
4759
- }], gridConfig);
4760
4540
  getPluginsNames().forEach(function (pluginName) {
4761
4541
  var PluginClass = getPlugin(pluginName);
4762
4542
  pluginsRegistry.addItem(pluginName, new PluginClass(_this));
4763
4543
  });
4544
+ registerAllShortcutContexts(instance);
4545
+ shortcutManager.setActiveContextName('grid');
4764
4546
  Hooks.getSingleton().run(instance, 'construct');
4765
4547
  }
@@ -3112,6 +3112,21 @@ var _default = function _default() {
3112
3112
  * ```
3113
3113
  */
3114
3114
  multiColumnSorting: void 0,
3115
+ /**
3116
+ * The `navigableHeaders` option enables or disables the ability to navigate in headers.
3117
+ *
3118
+ * @since 13.0.0
3119
+ * @memberof Options#
3120
+ * @type {boolean}
3121
+ * @default false
3122
+ * @category Core
3123
+ *
3124
+ * @example
3125
+ * ```js
3126
+ * navigableHeaders: true,
3127
+ * ```
3128
+ */
3129
+ navigableHeaders: false,
3115
3130
  /**
3116
3131
  * @description
3117
3132
  * The `nestedHeaders` option configures the [`NestedHeaders`](@/api/nestedHeaders.md) plugin.
@@ -3108,6 +3108,21 @@ export default (function () {
3108
3108
  * ```
3109
3109
  */
3110
3110
  multiColumnSorting: void 0,
3111
+ /**
3112
+ * The `navigableHeaders` option enables or disables the ability to navigate in headers.
3113
+ *
3114
+ * @since 13.0.0
3115
+ * @memberof Options#
3116
+ * @type {boolean}
3117
+ * @default false
3118
+ * @category Core
3119
+ *
3120
+ * @example
3121
+ * ```js
3122
+ * navigableHeaders: true,
3123
+ * ```
3124
+ */
3125
+ navigableHeaders: false,
3111
3126
  /**
3112
3127
  * @description
3113
3128
  * The `nestedHeaders` option configures the [`NestedHeaders`](@/api/nestedHeaders.md) plugin.
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-59715d3-20230523
29
- * Release date: 23/05/2023 (built at 23/05/2023 09:17:25)
28
+ * Version: 0.0.0-next-93e34dc-20230601
29
+ * Release date: 23/05/2023 (built at 01/06/2023 11:45:41)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -607,6 +607,11 @@ innerBorderBottom - Property controlled by bottom overlay
607
607
  opacity: 0.58;
608
608
  }
609
609
 
610
+ .handsontable tbody th.current,
611
+ .handsontable thead th.current {
612
+ box-shadow: inset 0 0 0 2px #5292f7;
613
+ }
614
+
610
615
  .handsontable tbody th.ht__highlight,
611
616
  .handsontable thead th.ht__highlight {
612
617
  background-color: #dcdcdc;
@@ -799,7 +804,7 @@ TextRenderer placeholder value
799
804
  cursor: pointer;
800
805
  -webkit-box-shadow: 0 0 0 6px rgb(238, 238, 238);
801
806
  -moz-box-shadow: 0 0 0 6px rgb(238, 238, 238);
802
- box-shadow: 0 0 0 6px rgb(238, 238, 238);
807
+ box-shadow: 0 0 0 3px rgb(238, 238, 238);
803
808
  background: #eee;
804
809
  text-align: center;
805
810
  }
@@ -25,8 +25,8 @@
25
25
  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
26
  * USE OR INABILITY TO USE THIS SOFTWARE.
27
27
  *
28
- * Version: 0.0.0-next-59715d3-20230523
29
- * Release date: 23/05/2023 (built at 23/05/2023 09:17:25)
28
+ * Version: 0.0.0-next-93e34dc-20230601
29
+ * Release date: 23/05/2023 (built at 01/06/2023 11:45:41)
30
30
  */
31
31
  /**
32
32
  * Fix for bootstrap styles
@@ -607,6 +607,11 @@ innerBorderBottom - Property controlled by bottom overlay
607
607
  opacity: 0.58;
608
608
  }
609
609
 
610
+ .handsontable tbody th.current,
611
+ .handsontable thead th.current {
612
+ box-shadow: inset 0 0 0 2px #5292f7;
613
+ }
614
+
610
615
  .handsontable tbody th.ht__highlight,
611
616
  .handsontable thead th.ht__highlight {
612
617
  background-color: #dcdcdc;
@@ -799,7 +804,7 @@ TextRenderer placeholder value
799
804
  cursor: pointer;
800
805
  -webkit-box-shadow: 0 0 0 6px rgb(238, 238, 238);
801
806
  -moz-box-shadow: 0 0 0 6px rgb(238, 238, 238);
802
- box-shadow: 0 0 0 6px rgb(238, 238, 238);
807
+ box-shadow: 0 0 0 3px rgb(238, 238, 238);
803
808
  background: #eee;
804
809
  text-align: center;
805
810
  }