handsontable 0.0.0-next-2b3d6d8-20230623 → 0.0.0-next-74a68c1-20230627

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 (279) 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 +329 -0
  34. package/3rdparty/walkontable/src/selection/manager.mjs +323 -0
  35. package/3rdparty/walkontable/src/selection/scanner.js +364 -0
  36. package/3rdparty/walkontable/src/selection/scanner.mjs +360 -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 +127 -309
  55. package/core.mjs +127 -309
  56. package/dataMap/metaManager/metaSchema.js +19 -0
  57. package/dataMap/metaManager/metaSchema.mjs +19 -0
  58. package/dist/handsontable.css +8 -3
  59. package/dist/handsontable.full.css +8 -3
  60. package/dist/handsontable.full.js +13762 -10716
  61. package/dist/handsontable.full.min.css +3 -3
  62. package/dist/handsontable.full.min.js +115 -115
  63. package/dist/handsontable.js +16626 -13580
  64. package/dist/handsontable.min.css +3 -3
  65. package/dist/handsontable.min.js +4 -4
  66. package/editorManager.js +21 -94
  67. package/editorManager.mjs +26 -98
  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.d.ts +5 -1
  77. package/pluginHooks.js +89 -1
  78. package/pluginHooks.mjs +89 -1
  79. package/plugins/collapsibleColumns/collapsibleColumns.js +81 -24
  80. package/plugins/collapsibleColumns/collapsibleColumns.mjs +81 -24
  81. package/plugins/columnSorting/columnSorting.js +50 -8
  82. package/plugins/columnSorting/columnSorting.mjs +49 -9
  83. package/plugins/columnSorting/index.js +4 -2
  84. package/plugins/columnSorting/index.mjs +1 -1
  85. package/plugins/comments/comments.js +11 -4
  86. package/plugins/comments/comments.mjs +11 -4
  87. package/plugins/contextMenu/contextMenu.d.ts +1 -1
  88. package/plugins/contextMenu/contextMenu.js +80 -29
  89. package/plugins/contextMenu/contextMenu.mjs +81 -30
  90. package/plugins/contextMenu/predefinedItems/alignment.js +7 -0
  91. package/plugins/contextMenu/predefinedItems/alignment.mjs +7 -0
  92. package/plugins/contextMenu/predefinedItems/clearColumn.js +5 -3
  93. package/plugins/contextMenu/predefinedItems/clearColumn.mjs +5 -3
  94. package/plugins/contextMenu/predefinedItems/columnLeft.js +5 -3
  95. package/plugins/contextMenu/predefinedItems/columnLeft.mjs +5 -3
  96. package/plugins/contextMenu/predefinedItems/columnRight.js +5 -3
  97. package/plugins/contextMenu/predefinedItems/columnRight.mjs +5 -3
  98. package/plugins/contextMenu/predefinedItems/readOnly.js +7 -0
  99. package/plugins/contextMenu/predefinedItems/readOnly.mjs +7 -0
  100. package/plugins/contextMenu/predefinedItems/removeColumn.js +7 -5
  101. package/plugins/contextMenu/predefinedItems/removeColumn.mjs +5 -3
  102. package/plugins/contextMenu/predefinedItems/removeRow.js +7 -5
  103. package/plugins/contextMenu/predefinedItems/removeRow.mjs +5 -3
  104. package/plugins/contextMenu/predefinedItems/rowAbove.js +5 -3
  105. package/plugins/contextMenu/predefinedItems/rowAbove.mjs +5 -3
  106. package/plugins/contextMenu/predefinedItems/rowBelow.js +5 -3
  107. package/plugins/contextMenu/predefinedItems/rowBelow.mjs +5 -3
  108. package/plugins/contextMenu/utils.js +25 -16
  109. package/plugins/contextMenu/utils.mjs +24 -15
  110. package/plugins/copyPaste/contextMenuItem/copy.js +7 -0
  111. package/plugins/copyPaste/contextMenuItem/copy.mjs +7 -0
  112. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.js +9 -1
  113. package/plugins/copyPaste/contextMenuItem/copyColumnHeadersOnly.mjs +9 -1
  114. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.js +9 -1
  115. package/plugins/copyPaste/contextMenuItem/copyWithColumnGroupHeaders.mjs +9 -1
  116. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.js +9 -1
  117. package/plugins/copyPaste/contextMenuItem/copyWithColumnHeaders.mjs +9 -1
  118. package/plugins/copyPaste/contextMenuItem/cut.js +7 -0
  119. package/plugins/copyPaste/contextMenuItem/cut.mjs +7 -0
  120. package/plugins/copyPaste/copyPaste.js +5 -1
  121. package/plugins/copyPaste/copyPaste.mjs +5 -1
  122. package/plugins/customBorders/customBorders.js +25 -53
  123. package/plugins/customBorders/customBorders.mjs +26 -54
  124. package/plugins/dropdownMenu/dropdownMenu.d.ts +1 -1
  125. package/plugins/dropdownMenu/dropdownMenu.js +94 -30
  126. package/plugins/dropdownMenu/dropdownMenu.mjs +94 -30
  127. package/plugins/filters/filters.js +62 -42
  128. package/plugins/filters/filters.mjs +61 -41
  129. package/plugins/mergeCells/mergeCells.js +5 -18
  130. package/plugins/mergeCells/mergeCells.mjs +5 -18
  131. package/plugins/multiColumnSorting/multiColumnSorting.js +42 -3
  132. package/plugins/multiColumnSorting/multiColumnSorting.mjs +42 -3
  133. package/plugins/nestedHeaders/nestedHeaders.js +132 -10
  134. package/plugins/nestedHeaders/nestedHeaders.mjs +132 -10
  135. package/plugins/nestedHeaders/stateManager/index.js +37 -0
  136. package/plugins/nestedHeaders/stateManager/index.mjs +37 -0
  137. package/plugins/nestedRows/nestedRows.js +52 -7
  138. package/plugins/nestedRows/nestedRows.mjs +52 -7
  139. package/renderers/checkboxRenderer/checkboxRenderer.js +2 -2
  140. package/renderers/checkboxRenderer/checkboxRenderer.mjs +1 -1
  141. package/selection/highlight/highlight.js +312 -89
  142. package/selection/highlight/highlight.mjs +302 -85
  143. package/selection/highlight/types/activeHeader.js +10 -9
  144. package/selection/highlight/types/activeHeader.mjs +10 -8
  145. package/selection/highlight/types/area.js +12 -27
  146. package/selection/highlight/types/area.mjs +16 -30
  147. package/selection/highlight/types/areaLayered.js +54 -0
  148. package/selection/highlight/types/areaLayered.mjs +49 -0
  149. package/selection/highlight/types/column.js +50 -0
  150. package/selection/highlight/types/column.mjs +45 -0
  151. package/selection/highlight/types/customSelection.js +7 -10
  152. package/selection/highlight/types/customSelection.mjs +7 -9
  153. package/selection/highlight/types/fill.js +5 -8
  154. package/selection/highlight/types/fill.mjs +5 -7
  155. package/selection/highlight/types/{cell.js → focus.js} +5 -8
  156. package/selection/highlight/types/{cell.mjs → focus.mjs} +5 -7
  157. package/selection/highlight/types/header.js +10 -20
  158. package/selection/highlight/types/header.mjs +10 -19
  159. package/selection/highlight/types/{index.js → row.js} +27 -31
  160. package/selection/highlight/types/{index.mjs → row.mjs} +24 -29
  161. package/selection/highlight/visualSelection.js +31 -27
  162. package/selection/highlight/visualSelection.mjs +31 -27
  163. package/selection/index.js +4 -7
  164. package/selection/index.mjs +2 -3
  165. package/selection/mouseEventHandler.js +1 -1
  166. package/selection/mouseEventHandler.mjs +1 -1
  167. package/selection/range.js +8 -8
  168. package/selection/range.mjs +8 -8
  169. package/selection/selection.js +315 -181
  170. package/selection/selection.mjs +310 -180
  171. package/selection/transformation.js +233 -96
  172. package/selection/transformation.mjs +230 -93
  173. package/selection/utils.js +12 -36
  174. package/selection/utils.mjs +13 -36
  175. package/settings.d.ts +1 -0
  176. package/shortcutContexts/commands/editor/closeAndSave.js +15 -0
  177. package/shortcutContexts/commands/editor/closeAndSave.mjs +10 -0
  178. package/shortcutContexts/commands/editor/closeWithoutSaving.js +13 -0
  179. package/shortcutContexts/commands/editor/closeWithoutSaving.mjs +8 -0
  180. package/shortcutContexts/commands/editor/fastOpen.js +16 -0
  181. package/shortcutContexts/commands/editor/fastOpen.mjs +11 -0
  182. package/shortcutContexts/commands/editor/index.js +16 -0
  183. package/shortcutContexts/commands/editor/index.mjs +12 -0
  184. package/shortcutContexts/commands/editor/open.js +29 -0
  185. package/shortcutContexts/commands/editor/open.mjs +24 -0
  186. package/shortcutContexts/commands/emptySelectedCells.js +12 -0
  187. package/shortcutContexts/commands/emptySelectedCells.mjs +7 -0
  188. package/shortcutContexts/commands/extendCellsSelection/down.js +15 -0
  189. package/shortcutContexts/commands/extendCellsSelection/down.mjs +10 -0
  190. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.js +21 -0
  191. package/shortcutContexts/commands/extendCellsSelection/downByViewportHeight.mjs +16 -0
  192. package/shortcutContexts/commands/extendCellsSelection/index.js +26 -0
  193. package/shortcutContexts/commands/extendCellsSelection/index.mjs +22 -0
  194. package/shortcutContexts/commands/extendCellsSelection/left.js +15 -0
  195. package/shortcutContexts/commands/extendCellsSelection/left.mjs +10 -0
  196. package/shortcutContexts/commands/extendCellsSelection/right.js +15 -0
  197. package/shortcutContexts/commands/extendCellsSelection/right.mjs +10 -0
  198. package/shortcutContexts/commands/extendCellsSelection/toColumns.js +19 -0
  199. package/shortcutContexts/commands/extendCellsSelection/toColumns.mjs +14 -0
  200. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.js +22 -0
  201. package/shortcutContexts/commands/extendCellsSelection/toMostBottom.mjs +17 -0
  202. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.js +17 -0
  203. package/shortcutContexts/commands/extendCellsSelection/toMostInlineEnd.mjs +12 -0
  204. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.js +17 -0
  205. package/shortcutContexts/commands/extendCellsSelection/toMostInlineStart.mjs +12 -0
  206. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.js +40 -0
  207. package/shortcutContexts/commands/extendCellsSelection/toMostLeft.mjs +35 -0
  208. package/shortcutContexts/commands/extendCellsSelection/toMostRight.js +40 -0
  209. package/shortcutContexts/commands/extendCellsSelection/toMostRight.mjs +35 -0
  210. package/shortcutContexts/commands/extendCellsSelection/toMostTop.js +22 -0
  211. package/shortcutContexts/commands/extendCellsSelection/toMostTop.mjs +17 -0
  212. package/shortcutContexts/commands/extendCellsSelection/toRows.js +19 -0
  213. package/shortcutContexts/commands/extendCellsSelection/toRows.mjs +14 -0
  214. package/shortcutContexts/commands/extendCellsSelection/up.js +15 -0
  215. package/shortcutContexts/commands/extendCellsSelection/up.mjs +10 -0
  216. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.js +21 -0
  217. package/shortcutContexts/commands/extendCellsSelection/upByViewportHeight.mjs +16 -0
  218. package/shortcutContexts/commands/index.js +53 -0
  219. package/shortcutContexts/commands/index.mjs +49 -0
  220. package/shortcutContexts/commands/moveCellSelection/down.js +12 -0
  221. package/shortcutContexts/commands/moveCellSelection/down.mjs +7 -0
  222. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.js +29 -0
  223. package/shortcutContexts/commands/moveCellSelection/downByViewportHeight.mjs +24 -0
  224. package/shortcutContexts/commands/moveCellSelection/index.js +28 -0
  225. package/shortcutContexts/commands/moveCellSelection/index.mjs +24 -0
  226. package/shortcutContexts/commands/moveCellSelection/inlineEnd.js +13 -0
  227. package/shortcutContexts/commands/moveCellSelection/inlineEnd.mjs +8 -0
  228. package/shortcutContexts/commands/moveCellSelection/inlineStart.js +13 -0
  229. package/shortcutContexts/commands/moveCellSelection/inlineStart.mjs +8 -0
  230. package/shortcutContexts/commands/moveCellSelection/left.js +11 -0
  231. package/shortcutContexts/commands/moveCellSelection/left.mjs +6 -0
  232. package/shortcutContexts/commands/moveCellSelection/right.js +11 -0
  233. package/shortcutContexts/commands/moveCellSelection/right.mjs +6 -0
  234. package/shortcutContexts/commands/moveCellSelection/toMostBottom.js +16 -0
  235. package/shortcutContexts/commands/moveCellSelection/toMostBottom.mjs +11 -0
  236. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.js +17 -0
  237. package/shortcutContexts/commands/moveCellSelection/toMostBottomInlineEnd.mjs +12 -0
  238. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.js +13 -0
  239. package/shortcutContexts/commands/moveCellSelection/toMostInlineEnd.mjs +8 -0
  240. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.js +16 -0
  241. package/shortcutContexts/commands/moveCellSelection/toMostInlineStart.mjs +11 -0
  242. package/shortcutContexts/commands/moveCellSelection/toMostLeft.js +36 -0
  243. package/shortcutContexts/commands/moveCellSelection/toMostLeft.mjs +31 -0
  244. package/shortcutContexts/commands/moveCellSelection/toMostRight.js +36 -0
  245. package/shortcutContexts/commands/moveCellSelection/toMostRight.mjs +31 -0
  246. package/shortcutContexts/commands/moveCellSelection/toMostTop.js +16 -0
  247. package/shortcutContexts/commands/moveCellSelection/toMostTop.mjs +11 -0
  248. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.js +18 -0
  249. package/shortcutContexts/commands/moveCellSelection/toMostTopInlineStart.mjs +13 -0
  250. package/shortcutContexts/commands/moveCellSelection/up.js +12 -0
  251. package/shortcutContexts/commands/moveCellSelection/up.mjs +7 -0
  252. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.js +29 -0
  253. package/shortcutContexts/commands/moveCellSelection/upByViewportHeight.mjs +24 -0
  254. package/shortcutContexts/commands/populateSelectedCellsData.js +35 -0
  255. package/shortcutContexts/commands/populateSelectedCellsData.mjs +30 -0
  256. package/shortcutContexts/commands/scrollToFocusedCell.js +38 -0
  257. package/shortcutContexts/commands/scrollToFocusedCell.mjs +33 -0
  258. package/shortcutContexts/commands/selectAll.js +11 -0
  259. package/shortcutContexts/commands/selectAll.mjs +6 -0
  260. package/shortcutContexts/constants.js +19 -0
  261. package/shortcutContexts/constants.mjs +12 -0
  262. package/shortcutContexts/editor.js +29 -0
  263. package/shortcutContexts/editor.mjs +25 -0
  264. package/shortcutContexts/grid.js +252 -0
  265. package/shortcutContexts/grid.mjs +248 -0
  266. package/shortcutContexts/index.js +29 -0
  267. package/shortcutContexts/index.mjs +15 -0
  268. package/shortcuts/manager.js +2 -0
  269. package/shortcuts/manager.mjs +2 -0
  270. package/shortcuts/recorder.js +2 -2
  271. package/shortcuts/recorder.mjs +2 -2
  272. package/shortcuts/utils.js +21 -5
  273. package/shortcuts/utils.mjs +20 -4
  274. package/tableView.js +58 -9
  275. package/tableView.mjs +58 -9
  276. package/3rdparty/walkontable/src/selection.js +0 -355
  277. package/3rdparty/walkontable/src/selection.mjs +0 -349
  278. package/selection/highlight/constants.js +0 -16
  279. package/selection/highlight/constants.mjs +0 -6
@@ -67,6 +67,7 @@ import { CONDITION_NONE, CONDITION_BY_VALUE, OPERATION_AND, OPERATION_OR, OPERAT
67
67
  import { TrimmingMap } from "../../translations/index.mjs";
68
68
  export var PLUGIN_KEY = 'filters';
69
69
  export var PLUGIN_PRIORITY = 250;
70
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
70
71
 
71
72
  /**
72
73
  * @plugin Filters
@@ -282,6 +283,7 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
282
283
  this.dropdownMenuPlugin.disablePlugin();
283
284
  this.dropdownMenuPlugin.enablePlugin();
284
285
  }
286
+ this.registerShortcuts();
285
287
  _get(_getPrototypeOf(Filters.prototype), "enablePlugin", this).call(this);
286
288
  }
287
289
 
@@ -305,9 +307,41 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
305
307
  this.conditionCollection = null;
306
308
  this.hot.rowIndexMapper.unregisterMap(this.pluginName);
307
309
  }
310
+ this.unregisterShortcuts();
308
311
  _get(_getPrototypeOf(Filters.prototype), "disablePlugin", this).call(this);
309
312
  }
310
313
 
314
+ /**
315
+ * Register shortcuts responsible for clearing the filters.
316
+ *
317
+ * @private
318
+ */
319
+ }, {
320
+ key: "registerShortcuts",
321
+ value: function registerShortcuts() {
322
+ var _this4 = this;
323
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
324
+ keys: [['Alt', 'A']],
325
+ stopPropagation: true,
326
+ callback: function callback() {
327
+ _this4.clearConditions();
328
+ _this4.filter();
329
+ },
330
+ group: SHORTCUTS_GROUP
331
+ });
332
+ }
333
+
334
+ /**
335
+ * Unregister shortcuts responsible for clearing the filters.
336
+ *
337
+ * @private
338
+ */
339
+ }, {
340
+ key: "unregisterShortcuts",
341
+ value: function unregisterShortcuts() {
342
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
343
+ }
344
+
311
345
  /* eslint-disable jsdoc/require-description-complete-sentence */
312
346
  /**
313
347
  * @memberof Filters#
@@ -474,7 +508,7 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
474
508
  }, {
475
509
  key: "filter",
476
510
  value: function filter() {
477
- var _this4 = this;
511
+ var _this5 = this;
478
512
  var dataFilter = this._createDataFilter();
479
513
  var needToFilter = !this.conditionCollection.isEmpty();
480
514
  var visibleVisualRows = [];
@@ -484,18 +518,18 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
484
518
  if (needToFilter) {
485
519
  var trimmedRows = [];
486
520
  this.hot.batchExecution(function () {
487
- _this4.filtersRowsMap.clear();
521
+ _this5.filtersRowsMap.clear();
488
522
  visibleVisualRows = arrayMap(dataFilter.filter(), function (rowData) {
489
523
  return rowData.meta.visualRow;
490
524
  });
491
525
  var visibleVisualRowsAssertion = createArrayAssertion(visibleVisualRows);
492
- rangeEach(_this4.hot.countSourceRows() - 1, function (row) {
526
+ rangeEach(_this5.hot.countSourceRows() - 1, function (row) {
493
527
  if (!visibleVisualRowsAssertion(row)) {
494
528
  trimmedRows.push(row);
495
529
  }
496
530
  });
497
531
  arrayEach(trimmedRows, function (physicalRow) {
498
- _this4.filtersRowsMap.setValueAtIndex(physicalRow, true);
532
+ _this5.filtersRowsMap.setValueAtIndex(physicalRow, true);
499
533
  });
500
534
  }, true);
501
535
  if (!visibleVisualRows.length) {
@@ -508,7 +542,6 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
508
542
  this.hot.runHooks('afterFilter', conditions);
509
543
  this.hot.view.adjustElementsSize(true);
510
544
  this.hot.render();
511
- this.clearColumnSelection();
512
545
  }
513
546
 
514
547
  /**
@@ -532,20 +565,6 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
532
565
  };
533
566
  }
534
567
 
535
- /**
536
- * Clears column selection.
537
- *
538
- * @private
539
- */
540
- }, {
541
- key: "clearColumnSelection",
542
- value: function clearColumnSelection() {
543
- var selectedColumn = this.getSelectedColumn();
544
- if (selectedColumn !== null) {
545
- this.hot.selectCell(0, selectedColumn.visualIndex);
546
- }
547
- }
548
-
549
568
  /**
550
569
  * Returns handsontable source data with cell meta based on current selection.
551
570
  *
@@ -555,21 +574,21 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
555
574
  }, {
556
575
  key: "getDataMapAtColumn",
557
576
  value: function getDataMapAtColumn(column) {
558
- var _this5 = this;
577
+ var _this6 = this;
559
578
  var visualColumn = this.hot.toVisualColumn(column);
560
579
  var data = [];
561
580
  arrayEach(this.hot.getSourceDataAtCol(visualColumn), function (value, rowIndex) {
562
- var _this5$hot$getDataAtC;
563
- var _this5$hot$getCellMet = _this5.hot.getCellMeta(rowIndex, visualColumn),
564
- row = _this5$hot$getCellMet.row,
565
- col = _this5$hot$getCellMet.col,
566
- visualCol = _this5$hot$getCellMet.visualCol,
567
- visualRow = _this5$hot$getCellMet.visualRow,
568
- type = _this5$hot$getCellMet.type,
569
- instance = _this5$hot$getCellMet.instance,
570
- dateFormat = _this5$hot$getCellMet.dateFormat,
571
- locale = _this5$hot$getCellMet.locale;
572
- var dataValue = (_this5$hot$getDataAtC = _this5.hot.getDataAtCell(_this5.hot.toVisualRow(rowIndex), visualColumn)) !== null && _this5$hot$getDataAtC !== void 0 ? _this5$hot$getDataAtC : value;
581
+ var _this6$hot$getDataAtC;
582
+ var _this6$hot$getCellMet = _this6.hot.getCellMeta(rowIndex, visualColumn),
583
+ row = _this6$hot$getCellMet.row,
584
+ col = _this6$hot$getCellMet.col,
585
+ visualCol = _this6$hot$getCellMet.visualCol,
586
+ visualRow = _this6$hot$getCellMet.visualRow,
587
+ type = _this6$hot$getCellMet.type,
588
+ instance = _this6$hot$getCellMet.instance,
589
+ dateFormat = _this6$hot$getCellMet.dateFormat,
590
+ locale = _this6$hot$getCellMet.locale;
591
+ var dataValue = (_this6$hot$getDataAtC = _this6.hot.getDataAtCell(_this6.hot.toVisualRow(rowIndex), visualColumn)) !== null && _this6$hot$getDataAtC !== void 0 ? _this6$hot$getDataAtC : value;
573
592
  data.push({
574
593
  meta: {
575
594
  row: row,
@@ -596,14 +615,14 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
596
615
  }, {
597
616
  key: "onAfterChange",
598
617
  value: function onAfterChange(changes) {
599
- var _this6 = this;
618
+ var _this7 = this;
600
619
  if (changes) {
601
620
  arrayEach(changes, function (change) {
602
621
  var _change = _slicedToArray(change, 2),
603
622
  prop = _change[1];
604
- var columnIndex = _this6.hot.propToCol(prop);
605
- if (_this6.conditionCollection.hasConditions(columnIndex)) {
606
- _this6.updateValueComponentCondition(columnIndex);
623
+ var columnIndex = _this7.hot.propToCol(prop);
624
+ if (_this7.conditionCollection.hasConditions(columnIndex)) {
625
+ _this7.updateValueComponentCondition(columnIndex);
607
626
  }
608
627
  });
609
628
  }
@@ -674,10 +693,10 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
674
693
  }, {
675
694
  key: "onBeforeDropdownMenuSetItems",
676
695
  value: function onBeforeDropdownMenuSetItems() {
677
- var _this7 = this;
696
+ var _this8 = this;
678
697
  if (this.dropdownMenuPlugin) {
679
698
  this.dropdownMenuPlugin.menu.addLocalHook('afterOpen', function () {
680
- _this7.dropdownMenuPlugin.menu.hotMenu.updateSettings({
699
+ _this8.dropdownMenuPlugin.menu.hotMenu.updateSettings({
681
700
  hiddenRows: true
682
701
  });
683
702
  });
@@ -768,6 +787,7 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
768
787
  });
769
788
  this.filtersRowsMap.clear();
770
789
  this.filter();
790
+ this.hot.selectCell(0, selectedColumn.visualIndex);
771
791
  }
772
792
  (_this$dropdownMenuPlu3 = this.dropdownMenuPlugin) === null || _this$dropdownMenuPlu3 === void 0 ? void 0 : _this$dropdownMenuPlu3.close();
773
793
  }
@@ -860,10 +880,10 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
860
880
  }, {
861
881
  key: "_createDataFilter",
862
882
  value: function _createDataFilter() {
863
- var _this8 = this;
883
+ var _this9 = this;
864
884
  var conditionCollection = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.conditionCollection;
865
885
  return new DataFilter(conditionCollection, function (physicalColumn) {
866
- return _this8.getDataMapAtColumn(physicalColumn);
886
+ return _this9.getDataMapAtColumn(physicalColumn);
867
887
  });
868
888
  }
869
889
 
@@ -995,12 +1015,12 @@ export var Filters = /*#__PURE__*/function (_BasePlugin) {
995
1015
  }, {
996
1016
  key: "destroy",
997
1017
  value: function destroy() {
998
- var _this9 = this;
1018
+ var _this10 = this;
999
1019
  if (this.enabled) {
1000
1020
  this.components.forEach(function (component, key) {
1001
1021
  if (component !== null) {
1002
1022
  component.destroy();
1003
- _this9.components.set(key, null);
1023
+ _this10.components.set(key, null);
1004
1024
  }
1005
1025
  });
1006
1026
  this.conditionCollection.destroy();
@@ -243,9 +243,6 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
243
243
  this.addHook('afterDrawSelection', function () {
244
244
  return _this2.onAfterDrawSelection.apply(_this2, arguments);
245
245
  });
246
- this.addHook('beforeRemoveCellClassNames', function () {
247
- return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
248
- });
249
246
  this.addHook('beforeUndoStackChange', function (action, source) {
250
247
  if (source === 'MergeCells') {
251
248
  return false;
@@ -662,8 +659,11 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
662
659
  gridContext.addShortcut({
663
660
  keys: [['Control', 'm']],
664
661
  callback: function callback() {
665
- _this7.toggleMerge(_this7.hot.getSelectedRangeLast());
666
- _this7.hot.render();
662
+ var range = _this7.hot.getSelectedRangeLast();
663
+ if (range && !range.isSingleHeader()) {
664
+ _this7.toggleMerge(range);
665
+ _this7.hot.render();
666
+ }
667
667
  },
668
668
  runOnlyIf: function runOnlyIf(event) {
669
669
  return !event.altKey;
@@ -1340,19 +1340,6 @@ var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1340
1340
  }
1341
1341
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1342
1342
  }
1343
-
1344
- /**
1345
- * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1346
- *
1347
- * @private
1348
- * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1349
- * all the cells in the table.
1350
- */
1351
- }, {
1352
- key: "onBeforeRemoveCellClassNames",
1353
- value: function onBeforeRemoveCellClassNames() {
1354
- return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1355
- }
1356
1343
  }], [{
1357
1344
  key: "PLUGIN_KEY",
1358
1345
  get: function get() {
@@ -236,9 +236,6 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
236
236
  this.addHook('afterDrawSelection', function () {
237
237
  return _this2.onAfterDrawSelection.apply(_this2, arguments);
238
238
  });
239
- this.addHook('beforeRemoveCellClassNames', function () {
240
- return _this2.onBeforeRemoveCellClassNames.apply(_this2, arguments);
241
- });
242
239
  this.addHook('beforeUndoStackChange', function (action, source) {
243
240
  if (source === 'MergeCells') {
244
241
  return false;
@@ -655,8 +652,11 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
655
652
  gridContext.addShortcut({
656
653
  keys: [['Control', 'm']],
657
654
  callback: function callback() {
658
- _this7.toggleMerge(_this7.hot.getSelectedRangeLast());
659
- _this7.hot.render();
655
+ var range = _this7.hot.getSelectedRangeLast();
656
+ if (range && !range.isSingleHeader()) {
657
+ _this7.toggleMerge(range);
658
+ _this7.hot.render();
659
+ }
660
660
  },
661
661
  runOnlyIf: function runOnlyIf(event) {
662
662
  return !event.altKey;
@@ -1333,19 +1333,6 @@ export var MergeCells = /*#__PURE__*/function (_BasePlugin) {
1333
1333
  }
1334
1334
  return this.selectionCalculations.getSelectedMergedCellClassName(currentRow, currentColumn, cornersOfSelection, layerLevel);
1335
1335
  }
1336
-
1337
- /**
1338
- * `beforeRemoveCellClassNames` hook callback. Used to remove additional class name from all cells in the table.
1339
- *
1340
- * @private
1341
- * @returns {string[]} An `Array` of `String`s. Each of these strings will act like class names to be removed from
1342
- * all the cells in the table.
1343
- */
1344
- }, {
1345
- key: "onBeforeRemoveCellClassNames",
1346
- value: function onBeforeRemoveCellClassNames() {
1347
- return this.selectionCalculations.getSelectedMergedCellClassNameToRemove();
1348
- }
1349
1336
  }], [{
1350
1337
  key: "PLUGIN_KEY",
1351
1338
  get: function get() {
@@ -16,8 +16,8 @@ require("core-js/modules/es.string.iterator.js");
16
16
  require("core-js/modules/web.dom-collections.iterator.js");
17
17
  exports.__esModule = true;
18
18
  exports.PLUGIN_PRIORITY = exports.PLUGIN_KEY = exports.MultiColumnSorting = void 0;
19
- require("core-js/modules/es.array.concat.js");
20
19
  require("core-js/modules/es.array.sort.js");
20
+ require("core-js/modules/es.array.concat.js");
21
21
  require("core-js/modules/es.object.set-prototype-of.js");
22
22
  require("core-js/modules/es.object.get-prototype-of.js");
23
23
  var _columnSorting = require("../columnSorting");
@@ -45,8 +45,8 @@ var PLUGIN_KEY = 'multiColumnSorting';
45
45
  exports.PLUGIN_KEY = PLUGIN_KEY;
46
46
  var PLUGIN_PRIORITY = 170;
47
47
  exports.PLUGIN_PRIORITY = PLUGIN_PRIORITY;
48
- var APPEND_COLUMN_CONFIG_STRATEGY = 'append';
49
48
  var CONFLICTED_PLUGIN_KEY = 'columnSorting';
49
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
50
50
  (0, _sortService.registerRootComparator)(PLUGIN_KEY, _rootComparator.rootComparator);
51
51
 
52
52
  /**
@@ -151,6 +151,45 @@ var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
151
151
  _get(_getPrototypeOf(MultiColumnSorting.prototype), "disablePlugin", this).call(this);
152
152
  }
153
153
 
154
+ /**
155
+ * Register shortcuts responsible for toggling column sorting functionality.
156
+ *
157
+ * @private
158
+ */
159
+ }, {
160
+ key: "registerShortcuts",
161
+ value: function registerShortcuts() {
162
+ var _this2 = this;
163
+ _get(_getPrototypeOf(MultiColumnSorting.prototype), "registerShortcuts", this).call(this);
164
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
165
+ keys: [['Control/Meta', 'Enter']],
166
+ callback: function callback() {
167
+ var _this2$hot$getSelecte = _this2.hot.getSelectedRangeLast(),
168
+ highlight = _this2$hot$getSelecte.highlight;
169
+ if (highlight.row === -1 && highlight.col >= 0) {
170
+ _this2.sort(_this2.getNextSortConfig(highlight.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
171
+ }
172
+ },
173
+ runOnlyIf: function runOnlyIf() {
174
+ var _this2$hot$getSelecte2;
175
+ return (_this2$hot$getSelecte2 = _this2.hot.getSelectedRangeLast()) === null || _this2$hot$getSelecte2 === void 0 ? void 0 : _this2$hot$getSelecte2.highlight.isHeader();
176
+ },
177
+ group: SHORTCUTS_GROUP
178
+ });
179
+ }
180
+
181
+ /**
182
+ * Unregister shortcuts responsible for toggling column sorting functionality.
183
+ *
184
+ * @private
185
+ */
186
+ }, {
187
+ key: "unregisterShortcuts",
188
+ value: function unregisterShortcuts() {
189
+ _get(_getPrototypeOf(MultiColumnSorting.prototype), "unregisterShortcuts", this).call(this);
190
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
191
+ }
192
+
154
193
  /**
155
194
  * Sorts the table by chosen columns and orders.
156
195
  *
@@ -319,7 +358,7 @@ var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
319
358
  if (this.hot.getShortcutManager().isCtrlPressed()) {
320
359
  this.hot.deselectCell();
321
360
  this.hot.selectColumns(coords.col);
322
- this.sort(this.getNextSortConfig(coords.col, APPEND_COLUMN_CONFIG_STRATEGY));
361
+ this.sort(this.getNextSortConfig(coords.col, _columnSorting.APPEND_COLUMN_CONFIG_STRATEGY));
323
362
  } else {
324
363
  this.sort(this.getColumnNextConfig(coords.col));
325
364
  }
@@ -1,6 +1,6 @@
1
1
  function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- import "core-js/modules/es.array.concat.js";
3
2
  import "core-js/modules/es.array.sort.js";
3
+ import "core-js/modules/es.array.concat.js";
4
4
  import "core-js/modules/es.object.set-prototype-of.js";
5
5
  import "core-js/modules/es.object.get-prototype-of.js";
6
6
  import "core-js/modules/es.object.to-string.js";
@@ -30,7 +30,7 @@ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) ===
30
30
  function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
31
31
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
32
32
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
33
- import { ColumnSorting } from "../columnSorting/index.mjs";
33
+ import { APPEND_COLUMN_CONFIG_STRATEGY, ColumnSorting } from "../columnSorting/index.mjs";
34
34
  import { registerRootComparator } from "../columnSorting/sortService/index.mjs";
35
35
  import { wasHeaderClickedProperly } from "../columnSorting/utils.mjs";
36
36
  import { addClass, removeClass } from "../../helpers/dom/element.mjs";
@@ -39,8 +39,8 @@ import { warnAboutPluginsConflict } from "./utils.mjs";
39
39
  import { getClassesToAdd, getClassesToRemove } from "./domHelpers.mjs";
40
40
  export var PLUGIN_KEY = 'multiColumnSorting';
41
41
  export var PLUGIN_PRIORITY = 170;
42
- var APPEND_COLUMN_CONFIG_STRATEGY = 'append';
43
42
  var CONFLICTED_PLUGIN_KEY = 'columnSorting';
43
+ var SHORTCUTS_GROUP = PLUGIN_KEY;
44
44
  registerRootComparator(PLUGIN_KEY, rootComparator);
45
45
 
46
46
  /**
@@ -145,6 +145,45 @@ export var MultiColumnSorting = /*#__PURE__*/function (_ColumnSorting) {
145
145
  _get(_getPrototypeOf(MultiColumnSorting.prototype), "disablePlugin", this).call(this);
146
146
  }
147
147
 
148
+ /**
149
+ * Register shortcuts responsible for toggling column sorting functionality.
150
+ *
151
+ * @private
152
+ */
153
+ }, {
154
+ key: "registerShortcuts",
155
+ value: function registerShortcuts() {
156
+ var _this2 = this;
157
+ _get(_getPrototypeOf(MultiColumnSorting.prototype), "registerShortcuts", this).call(this);
158
+ this.hot.getShortcutManager().getContext('grid').addShortcut({
159
+ keys: [['Control/Meta', 'Enter']],
160
+ callback: function callback() {
161
+ var _this2$hot$getSelecte = _this2.hot.getSelectedRangeLast(),
162
+ highlight = _this2$hot$getSelecte.highlight;
163
+ if (highlight.row === -1 && highlight.col >= 0) {
164
+ _this2.sort(_this2.getNextSortConfig(highlight.col, APPEND_COLUMN_CONFIG_STRATEGY));
165
+ }
166
+ },
167
+ runOnlyIf: function runOnlyIf() {
168
+ var _this2$hot$getSelecte2;
169
+ return (_this2$hot$getSelecte2 = _this2.hot.getSelectedRangeLast()) === null || _this2$hot$getSelecte2 === void 0 ? void 0 : _this2$hot$getSelecte2.highlight.isHeader();
170
+ },
171
+ group: SHORTCUTS_GROUP
172
+ });
173
+ }
174
+
175
+ /**
176
+ * Unregister shortcuts responsible for toggling column sorting functionality.
177
+ *
178
+ * @private
179
+ */
180
+ }, {
181
+ key: "unregisterShortcuts",
182
+ value: function unregisterShortcuts() {
183
+ _get(_getPrototypeOf(MultiColumnSorting.prototype), "unregisterShortcuts", this).call(this);
184
+ this.hot.getShortcutManager().getContext('grid').removeShortcutsByGroup(SHORTCUTS_GROUP);
185
+ }
186
+
148
187
  /**
149
188
  * Sorts the table by chosen columns and orders.
150
189
  *
@@ -25,8 +25,8 @@ require("core-js/modules/es.weak-map.js");
25
25
  require("core-js/modules/web.dom-collections.iterator.js");
26
26
  var _element = require("../../helpers/dom/element");
27
27
  var _number = require("../../helpers/number");
28
- var _event = require("../../helpers/dom/event");
29
28
  var _templateLiteralTag = require("../../helpers/templateLiteralTag");
29
+ var _event = require("../../helpers/dom/event");
30
30
  var _console = require("../../helpers/console");
31
31
  var _selection = require("../../selection");
32
32
  var _base = require("../base");
@@ -201,6 +201,12 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
201
201
  this.addHook('beforeOnCellMouseOver', function () {
202
202
  return _this2.onBeforeOnCellMouseOver.apply(_this2, arguments);
203
203
  });
204
+ this.addHook('modifyTransformStart', function () {
205
+ return _this2.onModifyTransformStart.apply(_this2, arguments);
206
+ });
207
+ this.addHook('afterSelection', function () {
208
+ return _this2.updateFocusHighlightPosition();
209
+ });
204
210
  this.addHook('afterGetColumnHeaderRenderers', function (array) {
205
211
  return _this2.onAfterGetColumnHeaderRenderers(array);
206
212
  });
@@ -216,9 +222,18 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
216
222
  this.addHook('beforeCopy', function () {
217
223
  return _this2.onBeforeCopy.apply(_this2, arguments);
218
224
  });
225
+ this.addHook('beforeSelectColumns', function () {
226
+ return _this2.onBeforeSelectColumns.apply(_this2, arguments);
227
+ });
219
228
  this.addHook('afterViewportColumnCalculatorOverride', function () {
220
229
  return _this2.onAfterViewportColumnCalculatorOverride.apply(_this2, arguments);
221
230
  });
231
+ this.hot.columnIndexMapper.addLocalHook('cacheUpdated', function () {
232
+ return _this2.updateFocusHighlightPosition();
233
+ });
234
+ this.hot.rowIndexMapper.addLocalHook('cacheUpdated', function () {
235
+ return _this2.updateFocusHighlightPosition();
236
+ });
222
237
  _get(_getPrototypeOf(NestedHeaders.prototype), "enablePlugin", this).call(this);
223
238
  this.updatePlugin(); // @TODO: Workaround for broken plugin initialization abstraction.
224
239
  }
@@ -440,6 +455,34 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
440
455
  return this.hot.getColHeader(visualColumnIndex, headerLevel);
441
456
  }
442
457
 
458
+ /**
459
+ * Updates the selection focus highlight position to point to the nested header root element (TH)
460
+ * even when the logical coordinates point in-between the header.
461
+ *
462
+ * @private
463
+ */
464
+ }, {
465
+ key: "updateFocusHighlightPosition",
466
+ value: function updateFocusHighlightPosition() {
467
+ var _this$hot;
468
+ var selection = (_this$hot = this.hot) === null || _this$hot === void 0 ? void 0 : _this$hot.getSelectedRangeLast();
469
+ if (!selection) {
470
+ return;
471
+ }
472
+ var highlight = selection.highlight;
473
+ var isNestedHeadersRange = highlight.isHeader() && highlight.col >= 0;
474
+ if (isNestedHeadersRange) {
475
+ var columnIndex = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(highlight.row, highlight.col);
476
+ var focusHighlight = this.hot.selection.highlight.getFocus();
477
+
478
+ // Correct the highlight/focus selection to highlight the correct TH element
479
+ focusHighlight.visualCellRange.highlight.col = columnIndex;
480
+ focusHighlight.visualCellRange.from.col = columnIndex;
481
+ focusHighlight.visualCellRange.to.col = columnIndex;
482
+ focusHighlight.commit();
483
+ }
484
+ }
485
+
443
486
  /**
444
487
  * Allows to control which header DOM element will be used to highlight.
445
488
  *
@@ -456,8 +499,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
456
499
  if (!headerNodeData) {
457
500
  return visualColumn;
458
501
  }
459
- var classNames = highlightMeta.classNames,
460
- columnCursor = highlightMeta.columnCursor,
502
+ var columnCursor = highlightMeta.columnCursor,
461
503
  selectionType = highlightMeta.selectionType,
462
504
  selectionWidth = highlightMeta.selectionWidth;
463
505
  var _classPrivateFieldGet4 = _classPrivateFieldGet(this, _stateManager).getHeaderSettings(headerLevel, visualColumn),
@@ -469,8 +511,8 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
469
511
  }
470
512
  } else if (selectionType === _selection.ACTIVE_HEADER_TYPE) {
471
513
  if (colspan > selectionWidth - columnCursor || !isRoot) {
472
- // Reset the class names array so the generated TH element won't be modified.
473
- classNames.length = 0;
514
+ // Prevents adding any CSS class names to the TH element
515
+ return null;
474
516
  }
475
517
  }
476
518
  return visualColumn;
@@ -601,7 +643,7 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
601
643
  }, {
602
644
  key: "onBeforeOnCellMouseOver",
603
645
  value: function onBeforeOnCellMouseOver(event, coords, TD, controller) {
604
- var _this$hot;
646
+ var _this$hot$selection;
605
647
  if (!this.hot.view.isMouseDown()) {
606
648
  return;
607
649
  }
@@ -622,13 +664,93 @@ var NestedHeaders = /*#__PURE__*/function (_BasePlugin) {
622
664
  controller.cell = true;
623
665
  var columnsToSelect = [];
624
666
  if (coords.col < from.col) {
625
- columnsToSelect.push(bottomEndCoords.col, columnIndex);
667
+ columnsToSelect.push(bottomEndCoords.col, columnIndex, coords.row);
626
668
  } else if (coords.col > from.col) {
627
- columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1);
669
+ columnsToSelect.push(topStartCoords.col, columnIndex + origColspan - 1, coords.row);
628
670
  } else {
629
- columnsToSelect.push(columnIndex, columnIndex + origColspan - 1);
671
+ columnsToSelect.push(columnIndex, columnIndex + origColspan - 1, coords.row);
672
+ }
673
+ (_this$hot$selection = this.hot.selection).selectColumns.apply(_this$hot$selection, columnsToSelect);
674
+ }
675
+
676
+ /**
677
+ * `modifyTransformStart` hook is called every time the keyboard navigation is used.
678
+ *
679
+ * @private
680
+ * @param {object} delta The transformation delta.
681
+ */
682
+ }, {
683
+ key: "onModifyTransformStart",
684
+ value: function onModifyTransformStart(delta) {
685
+ var _this$hot$getSelected = this.hot.getSelectedRangeLast(),
686
+ highlight = _this$hot$getSelected.highlight;
687
+ var nextCoords = this.hot._createCellCoords(highlight.row + delta.row, highlight.col + delta.col);
688
+ var isNestedHeadersRange = nextCoords.isHeader() && nextCoords.col >= 0;
689
+ if (!isNestedHeadersRange) {
690
+ return;
691
+ }
692
+ var visualColumnIndexStart = _classPrivateFieldGet(this, _stateManager).findLeftMostColumnIndex(nextCoords.row, nextCoords.col);
693
+ var visualColumnIndexEnd = _classPrivateFieldGet(this, _stateManager).findRightMostColumnIndex(nextCoords.row, nextCoords.col);
694
+ if (delta.col < 0) {
695
+ var nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexStart - 1 : visualColumnIndexEnd;
696
+ var notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(nextColumn, -1);
697
+ if (notHiddenColumnIndex === null) {
698
+ // There are no visible columns anymore, so move the selection out of the table edge. This will
699
+ // be processed by the selection Transformer class as a move selection to the previous row (if autoWrapRow is enabled).
700
+ delta.col = -this.hot.view.countRenderableColumnsInRange(0, highlight.col);
701
+ } else {
702
+ delta.col = -Math.max(this.hot.view.countRenderableColumnsInRange(notHiddenColumnIndex, highlight.col) - 1, 1);
703
+ }
704
+ } else if (delta.col > 0) {
705
+ var _nextColumn = highlight.col >= visualColumnIndexStart && highlight.col <= visualColumnIndexEnd ? visualColumnIndexEnd + 1 : visualColumnIndexStart;
706
+ var _notHiddenColumnIndex = this.hot.columnIndexMapper.getNearestNotHiddenIndex(_nextColumn, 1);
707
+ if (_notHiddenColumnIndex === null) {
708
+ // There are no visible columns anymore, so move the selection out of the table edge. This will
709
+ // be processed by the selection Transformer class as a move selection to the next row (if autoWrapRow is enabled).
710
+ delta.col = this.hot.view.countRenderableColumnsInRange(highlight.col, this.hot.countCols());
711
+ } else {
712
+ delta.col = Math.max(this.hot.view.countRenderableColumnsInRange(highlight.col, _notHiddenColumnIndex) - 1, 1);
713
+ }
714
+ }
715
+ }
716
+
717
+ /**
718
+ * The hook observes the column selection from the Selection API and modifies the column range to
719
+ * ensure that the whole nested column will be covered.
720
+ *
721
+ * @private
722
+ * @param {*} from The coords object where the selection starts.
723
+ * @param {*} to The coords object where the selection ends.
724
+ */
725
+ }, {
726
+ key: "onBeforeSelectColumns",
727
+ value: function onBeforeSelectColumns(from, to) {
728
+ var headerLevel = from.row;
729
+ var startNodeData = this._getHeaderTreeNodeDataByCoords({
730
+ row: headerLevel,
731
+ col: from.col
732
+ });
733
+ var endNodeData = this._getHeaderTreeNodeDataByCoords({
734
+ row: headerLevel,
735
+ col: to.col
736
+ });
737
+ if (to.col < from.col) {
738
+ // Column selection from right to left
739
+ if (startNodeData) {
740
+ from.col = startNodeData.columnIndex + startNodeData.origColspan - 1;
741
+ }
742
+ if (endNodeData) {
743
+ to.col = endNodeData.columnIndex;
744
+ }
745
+ } else if (to.col >= from.col) {
746
+ // Column selection from left to right or a single column selection
747
+ if (startNodeData) {
748
+ from.col = startNodeData.columnIndex;
749
+ }
750
+ if (endNodeData) {
751
+ to.col = endNodeData.columnIndex + endNodeData.origColspan - 1;
752
+ }
630
753
  }
631
- (_this$hot = this.hot).selectColumns.apply(_this$hot, columnsToSelect);
632
754
  }
633
755
 
634
756
  /**