handsontable 17.1.0-rc1 → 17.1.0-rc11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/README.md +3 -0
  3. package/base.js +2 -2
  4. package/base.mjs +2 -2
  5. package/core.js +12 -5
  6. package/core.mjs +12 -5
  7. package/dist/handsontable.full.js +47 -23
  8. package/dist/handsontable.full.min.js +31 -31
  9. package/dist/handsontable.js +43 -20
  10. package/dist/handsontable.min.js +30 -30
  11. package/dist/languages/all.min.js +1 -1
  12. package/dist/themes/classic.js +3 -3
  13. package/dist/themes/classic.min.js +3 -3
  14. package/dist/themes/horizon.js +3 -3
  15. package/dist/themes/horizon.min.js +3 -3
  16. package/dist/themes/main.js +3 -3
  17. package/dist/themes/main.min.js +3 -3
  18. package/dist/themes/static/variables/colors/ant.js +2 -2
  19. package/dist/themes/static/variables/colors/ant.min.js +2 -2
  20. package/dist/themes/static/variables/colors/classic.js +2 -2
  21. package/dist/themes/static/variables/colors/classic.min.js +2 -2
  22. package/dist/themes/static/variables/colors/horizon.js +2 -2
  23. package/dist/themes/static/variables/colors/horizon.min.js +2 -2
  24. package/dist/themes/static/variables/colors/main.js +2 -2
  25. package/dist/themes/static/variables/colors/main.min.js +2 -2
  26. package/dist/themes/static/variables/colors/material.js +2 -2
  27. package/dist/themes/static/variables/colors/material.min.js +2 -2
  28. package/dist/themes/static/variables/colors/shadcn.js +2 -2
  29. package/dist/themes/static/variables/colors/shadcn.min.js +2 -2
  30. package/dist/themes/static/variables/density.js +2 -2
  31. package/dist/themes/static/variables/density.min.js +2 -2
  32. package/dist/themes/static/variables/helpers/iconsMap.js +2 -2
  33. package/dist/themes/static/variables/helpers/iconsMap.min.js +2 -2
  34. package/dist/themes/static/variables/icons/horizon.js +2 -2
  35. package/dist/themes/static/variables/icons/horizon.min.js +2 -2
  36. package/dist/themes/static/variables/icons/main.js +2 -2
  37. package/dist/themes/static/variables/icons/main.min.js +2 -2
  38. package/dist/themes/static/variables/sizing.js +2 -2
  39. package/dist/themes/static/variables/sizing.min.js +2 -2
  40. package/dist/themes/static/variables/tokens/classic.js +3 -3
  41. package/dist/themes/static/variables/tokens/classic.min.js +3 -3
  42. package/dist/themes/static/variables/tokens/horizon.js +3 -3
  43. package/dist/themes/static/variables/tokens/horizon.min.js +3 -3
  44. package/dist/themes/static/variables/tokens/main.js +3 -3
  45. package/dist/themes/static/variables/tokens/main.min.js +3 -3
  46. package/helpers/dom/element.js +2 -4
  47. package/helpers/dom/element.mjs +2 -4
  48. package/helpers/mixed.js +1 -1
  49. package/helpers/mixed.mjs +1 -1
  50. package/package.json +1 -1
  51. package/plugins/dialog/dialog.js +2 -1
  52. package/plugins/dialog/dialog.mjs +2 -1
  53. package/selection/mouseEventHandler.js +12 -2
  54. package/selection/mouseEventHandler.mjs +12 -2
  55. package/styles/handsontable.css +2 -2
  56. package/styles/handsontable.min.css +2 -2
  57. package/styles/handsontableStyles.js +1 -1
  58. package/styles/handsontableStyles.mjs +1 -1
  59. package/styles/ht-icons-horizon.min.css +2 -2
  60. package/styles/ht-icons-main.min.css +2 -2
  61. package/styles/ht-theme-classic-no-icons.css +1 -1
  62. package/styles/ht-theme-classic-no-icons.min.css +3 -3
  63. package/styles/ht-theme-classic.css +1 -1
  64. package/styles/ht-theme-classic.min.css +3 -3
  65. package/styles/ht-theme-horizon-no-icons.css +1 -1
  66. package/styles/ht-theme-horizon-no-icons.min.css +3 -3
  67. package/styles/ht-theme-horizon.css +1 -1
  68. package/styles/ht-theme-horizon.min.css +3 -3
  69. package/styles/ht-theme-main-no-icons.css +1 -1
  70. package/styles/ht-theme-main-no-icons.min.css +3 -3
  71. package/styles/ht-theme-main.css +1 -1
  72. package/styles/ht-theme-main.min.css +3 -3
  73. package/themes/engine/manager.js +50 -2
  74. package/themes/engine/manager.mjs +50 -2
  75. package/themes/static/variables/tokens/classic.js +1 -1
  76. package/themes/static/variables/tokens/classic.mjs +1 -1
  77. package/themes/static/variables/tokens/horizon.js +1 -1
  78. package/themes/static/variables/tokens/horizon.mjs +1 -1
  79. package/themes/static/variables/tokens/main.js +1 -1
  80. package/themes/static/variables/tokens/main.mjs +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,81 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
10
  <!-- UNVERSIONED -->
11
11
 
12
+ ## [17.1.0-rc10] - 2026-05-13
13
+
14
+ ### Added
15
+ - Added a hit area for dropdown menu and collapsible buttons [#12070](https://github.com/handsontable/handsontable/pull/12070)
16
+ - Added `rowspan` support to the NestedHeaders plugin, allowing column headers to span multiple header rows. [#191](https://github.com/handsontable/handsontable/issues/191)
17
+ - Added the DataProvider plugin and `dataProvider` table option for server-side row loading and mutations. [#12147](https://github.com/handsontable/handsontable/pull/12147)
18
+ - Added XLSX export support to the ExportFile plugin [#12166](https://github.com/handsontable/handsontable/pull/12166)
19
+ - Added build weight comparison tables to the Modules guide, showing the minified and gzip size added by each optional module when imported on top of `handsontable/base`. [#12262](https://github.com/handsontable/handsontable/issues/12262)
20
+ - Added Notification plugin for non-blocking toast notifications. [#12299](https://github.com/handsontable/handsontable/issues/12299)
21
+ - Added long-press gesture detection on touch devices to open the context menu. [#12306](https://github.com/handsontable/handsontable/issues/12306)
22
+ - Added dedicated `paginationButton*` theme tokens so pagination navigation button colors can be customized independently via the theme builder. [#12317](https://github.com/handsontable/handsontable/issues/12317)
23
+ - Added dedicated `paginationButton*` theme tokens so pagination navigation button colors can be customized independently for default, hover, focus, and disabled states via the theme builder. [#12404](https://github.com/handsontable/handsontable/issues/12404)
24
+ - Added `rowspan` support to the NestedHeaders plugin, allowing column headers to span multiple header rows. [#191](https://github.com/handsontable/handsontable/issues/191)
25
+
26
+ ### Changed
27
+ - Added a frame-based e2e test wait helper and replaced selected hook test sleeps. [#12161](https://github.com/handsontable/handsontable/pull/12161)
28
+ - Improve the rendering performance [#12189](https://github.com/handsontable/handsontable/pull/12189)
29
+ - Change the columnHeaders property name to colHeaders in the exportFile plugin [#12224](https://github.com/handsontable/handsontable/issues/12224)
30
+ - Improve rendering performance for fast scrollbar movements [#12235](https://github.com/handsontable/handsontable/pull/12235)
31
+ - Angular: Modernized the Angular wrapper to align with Angular 17–19, simplify setup, reduce dependencies, and clean up tooling. [#12451](https://github.com/handsontable/handsontable/issues/12451)
32
+
33
+ ### Fixed
34
+ - Fixed an issue where the Nested Rows plugin was disabled after calling updateSettings with an empty data array. [#10556](https://github.com/handsontable/handsontable/issues/10556)
35
+ - Fixed `setSourceDataAtCell()` updating parent rows instead of nested child rows when `nestedRows` is enabled. [#10657](https://github.com/handsontable/handsontable/issues/10657)
36
+ - Fixed an issue where the stretchH: 'last' option would ignore the defined column width when the viewport was too narrow, causing the last column to shrink to 0px. [#11761](https://github.com/handsontable/handsontable/issues/11761)
37
+ - Fixed a stack overflow error when pasting large datasets (50,000+ rows) by optimizing array operations in the HTML table parser. [#11784](https://github.com/handsontable/handsontable/issues/11784)
38
+ - Fixed incorrect JSDoc type annotations for the `modifyAutofillRange` hook parameters. The parameters `entireArea` and `startArea` are now correctly documented as `number[]` (a flat 4-element array) instead of the generic `Array` type, and the `@returns` type annotation has been added. [#11862](https://github.com/handsontable/handsontable/issues/11862)
39
+ - Fixed filter by value input performance degradation when searchMode: apply option is enabled. [#12104](https://github.com/handsontable/handsontable/issues/12104)
40
+ - Fixed `getCellMetaAtRow()` to always return cell metadata in physical column order. [#12109](https://github.com/handsontable/handsontable/pull/12109)
41
+ - Fixed the `modifyAutofillRange` hook type signature to match runtime tuple arguments and return value [#12113](https://github.com/handsontable/handsontable/issues/12113)
42
+ - Fixed incorrect parsing of comma-grouped values in numeric cells [#12114](https://github.com/handsontable/handsontable/issues/12114)
43
+ - Fixed comment editor positioning for merged cells [#12115](https://github.com/handsontable/handsontable/pull/12115)
44
+ - Fixed the Filters plugin incorrectly applying filter conditions after columns were moved with the ManualColumnMove plugin. [#11832](https://github.com/handsontable/handsontable/issues/11832)
45
+ - Fixed column resizing being misaligned and calculating incorrect widths when the grid container has a CSS `transform: scale()` applied. [#11838](https://github.com/handsontable/handsontable/issues/11838)
46
+ - Fixed the `stretchH: 'last'` option ignoring the defined column width and shrinking the last column to 0px when the viewport was too narrow. [#11761](https://github.com/handsontable/handsontable/issues/11761)
47
+ - Fixed HyperFormula errors when MultiSelect cells store array values. [#12135](https://github.com/handsontable/handsontable/pull/12135)
48
+ - Fixed `setSourceDataAtCell()` updating a parent row instead of the intended nested child row when the `nestedRows` option was enabled. [#10657](https://github.com/handsontable/handsontable/issues/10657)
49
+ - Fixed `setDataAtRowProp()` incorrectly canceling an active editor session when the programmatic update targeted a different cell in the same row. [#4305](https://github.com/handsontable/handsontable/issues/4305)
50
+ - Fix ThemeBuilder false unknown token warning on initialization [#12146](https://github.com/handsontable/handsontable/pull/12146)
51
+ - Prevent after scroll hooks from firing when axis position is unchanged [#12151](https://github.com/handsontable/handsontable/issues/12151)
52
+ - Fixed six regressions related to rowspans in nested column headers. [#12152](https://github.com/handsontable/handsontable/pull/12152)
53
+ - Fixed undo restore for mixed checkbox multi-selection delete. [#12153](https://github.com/handsontable/handsontable/issues/12153)
54
+ - Fixed Ctrl+A selecting the entire grid instead of the comment text when the comment textarea was focused. [#12193](https://github.com/handsontable/handsontable/issues/12193)
55
+ - Fixed `columnHeaderHeight` overriding the actual content height, causing overlay THEAD misalignment when header text wraps. [#12198](https://github.com/handsontable/handsontable/issues/12198)
56
+ - Fixed selected fixed-column header alignment with data cells for fixedColumnsStart [#12202](https://github.com/handsontable/handsontable/issues/12202)
57
+ - Fixed autofill over hidden columns when Formulas is enabled and hiddenColumns.copyPasteEnabled is false [#12203](https://github.com/handsontable/handsontable/issues/12203)
58
+ - Fixed a one-pixel horizontal misalignment of the left pagination caret in the Pagination plugin. [#2791](https://github.com/handsontable/handsontable/pull/2791)
59
+ - Fixed nested headers crash when sorting with disabled current highlight. [#12211](https://github.com/handsontable/handsontable/issues/12211)
60
+ - Improved server-side data documentation structure and fixed disjunctionWithExtraCondition guard fallback in server filter utility examples. [#12241](https://github.com/handsontable/handsontable/issues/12241)
61
+ - Fixed framework wrappers crashing when init-only settings (renderAllRows, renderAllColumns, layoutDirection, ariaTags) changed after initialization. [#12242](https://github.com/handsontable/handsontable/issues/12242)
62
+ - Fixed an issue where `currentRowClassName` and `currentColClassName` could not be changed dynamically using `updateSettings`. [#12247](https://github.com/handsontable/handsontable/issues/12247)
63
+ - Fixed column menu dropdown button styling when a filtered column header is also active [#12253](https://github.com/handsontable/handsontable/issues/12253)
64
+ - Fixed an issue where rows with dataSchema default values (e.g., false for checkbox columns) were not recognized as empty by isEmptyRow and isEmptyCol, causing minSpareRows and minSpareCols to add infinite rows. [#12254](https://github.com/handsontable/handsontable/issues/12254)
65
+ - Fixed autocomplete editor with strict mode and allowInvalid discarding typed value on click-away instead of saving it. [#12285](https://github.com/handsontable/handsontable/issues/12285)
66
+ - Fixed incorrect JSDoc type annotations for the `modifyAutofillRange` hook's `entireArea` and `startArea` parameters, and added the missing `@returns` annotation. [#11862](https://github.com/handsontable/handsontable/issues/11862)
67
+ - Fixed filter-by-value search by trimming leading and trailing spaces and treating whitespace-only input as an empty query. [#12290](https://github.com/handsontable/handsontable/issues/12290)
68
+ - Fixed portal-based popups (e.g., date picker) closing immediately on touch devices (Android) due to outside-click detection not accounting for rootPortalElement. [#12298](https://github.com/handsontable/handsontable/pull/12298)
69
+ - Fixed `setDataAtRowProp` ignoring the `source` parameter in array-form calls, causing `beforeChange` and `afterChange` hooks to always receive `'edit'` instead of the provided source string. [#12300](https://github.com/handsontable/handsontable/issues/12300)
70
+ - Fixed multiple Handsontable tables with shared HyperFormula engine and auto-sizing becoming unresponsive due to cross-table formula update interference. [#12305](https://github.com/handsontable/handsontable/issues/12305)
71
+ - Fixed `disableVisualSelection` treating `undefined` as `true` instead of falling back to the default (`false`). [#12307](https://github.com/handsontable/handsontable/issues/12307)
72
+ - Fixed incorrect return types for in some hooks [#12309](https://github.com/handsontable/handsontable/pull/12309)
73
+ - Fixed multiselect overflow indicator not responding to chip padding token changes [#12316](https://github.com/handsontable/handsontable/pull/12316)
74
+ - Fixed the `headerRowBackgroundColor` theme token having no visual effect on row headers. The `rowHeaderOddBackgroundColor` and `rowHeaderEvenBackgroundColor` tokens now derive from `headerRowBackgroundColor` by default, so customizing it properly cascades to all row headers. [#12322](https://github.com/handsontable/handsontable/issues/12322)
75
+ - Fixed an exception when showing the loading indicator from the `afterChange` hook during editor close. [#12348](https://github.com/handsontable/handsontable/issues/12348)
76
+ - Fixed TypeScript type for the `dateFormat` option to accept `Intl.DateTimeFormatOptions` objects required by the `intl-date` cell type. [#12395](https://github.com/handsontable/handsontable/issues/12395)
77
+ - Fixed an issue where minSpareRows and minSpareCols kept adding rows/columns when dataSchema defined non-null default values (e.g. false for checkbox columns). [#2409](https://github.com/handsontable/handsontable/issues/2409)
78
+ - Fixed one-pixel horizontal alignment for the left pagination caret [#2791](https://github.com/handsontable/handsontable/pull/2791)
79
+ - Fixed setDataAtRowProp interrupting edits in progress [#4305](https://github.com/handsontable/handsontable/issues/4305)
80
+ - React: Fixed the React wrapper skipping settings updates when `dataSchema` or `columns` contains non-plain objects such as `Date`, `Set`, or `Map`. [#12207](https://github.com/handsontable/handsontable/pull/12207)
81
+ - Fixed the loading overlay resetting the grid scroll position to the top when no cell was selected before showing the overlay. [#12514](https://github.com/handsontable/handsontable/issues/12514)
82
+ - Fixed a memory leak caused by ThemeManager not unsubscribing from the shared theme object on destroy. [#12570](https://github.com/handsontable/handsontable/issues/12570)
83
+
84
+ ### Security
85
+ - Patched critical and high dependency vulnerabilities across the monorepo and aligned Angular wrapper tooling for compatibility. [#12237](https://github.com/handsontable/handsontable/issues/12237)
86
+
12
87
  ## [17.0.1] - 2026-03-25
13
88
 
14
89
  ### Fixed
@@ -374,6 +449,11 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
374
449
  - Fixed the top overlay misalignment issue, visible after vertical scrollbar disappeared. [#11289](https://github.com/handsontable/handsontable/pull/11289)
375
450
  - React: Made the build scripts of `@handsontable/react-wrapper` place the TS type definitions in the configured directory. [#11296](https://github.com/handsontable/handsontable/pull/11296)
376
451
 
452
+ ## [14.6.2] - 2025-02-10
453
+
454
+ #### Fixed
455
+ - Fixed the copy/paste feature not working correctly in Chrome 133. [#11428](https://github.com/handsontable/handsontable/pull/11428)
456
+
377
457
  ## [14.6.1] - 2024-10-17
378
458
 
379
459
  ### Removed
package/README.md CHANGED
@@ -56,6 +56,9 @@
56
56
  &nbsp;&nbsp;✅&nbsp; [Frozen rows and columns](https://handsontable.com/docs/column-freezing/) <br>
57
57
  &nbsp;&nbsp;✅&nbsp; [Hiding rows and columns](https://handsontable.com/docs/column-hiding/) <br>
58
58
  &nbsp;&nbsp;✅&nbsp; [Right-click context menu](https://handsontable.com/docs/context-menu/) <br>
59
+ &nbsp;&nbsp;✅&nbsp; [Server-side data](https://handsontable.com/docs/server-side-data/) <br>
60
+ &nbsp;&nbsp;✅&nbsp; [Notifications](https://handsontable.com/docs/notification/) <br>
61
+ &nbsp;&nbsp;✅&nbsp; [Export to Excel](https://handsontable.com/docs/export-to-excel/) <br>
59
62
 
60
63
  <div id="installation">
61
64
 
package/base.js CHANGED
@@ -60,8 +60,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
60
60
  Handsontable.CellCoords = _src.CellCoords;
61
61
  Handsontable.CellRange = _src.CellRange;
62
62
  Handsontable.packageName = 'handsontable';
63
- Handsontable.buildDate = "22/04/2026 11:56:03";
64
- Handsontable.version = "17.1.0-rc1";
63
+ Handsontable.buildDate = "14/05/2026 07:06:52";
64
+ Handsontable.version = "17.1.0-rc11";
65
65
  Handsontable.languages = {
66
66
  dictionaryKeys: _registry.dictionaryKeys,
67
67
  getLanguageDictionary: _registry.getLanguageDictionary,
package/base.mjs CHANGED
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
35
35
  Handsontable.CellCoords = CellCoords;
36
36
  Handsontable.CellRange = CellRange;
37
37
  Handsontable.packageName = 'handsontable';
38
- Handsontable.buildDate = "22/04/2026 11:56:03";
39
- Handsontable.version = "17.1.0-rc1";
38
+ Handsontable.buildDate = "14/05/2026 07:06:52";
39
+ Handsontable.version = "17.1.0-rc11";
40
40
  Handsontable.languages = {
41
41
  dictionaryKeys,
42
42
  getLanguageDictionary,
package/core.js CHANGED
@@ -225,6 +225,7 @@ function Core(rootContainer, userSettings, rootInstanceSymbol = false) {
225
225
  this.rootGridElement.appendChild(this.rootElement);
226
226
  this.rootWrapperElement.appendChild(this.rootGridElement);
227
227
  this.rootContainer.appendChild(this.rootWrapperElement);
228
+ this.rootWrapperElement.__hotInstance = this;
228
229
  (0, _element.addClass)(this.rootPortalElement, 'ht-portal');
229
230
  this.rootDocument.body.appendChild(this.rootPortalElement);
230
231
  }
@@ -452,7 +453,8 @@ function Core(rootContainer, userSettings, rootInstanceSymbol = false) {
452
453
  const selectionSource = selection.getSelectionSource();
453
454
  const ignoreScrollSources = [
454
455
  'loadData',
455
- 'updateData'
456
+ 'updateData',
457
+ 'deselect'
456
458
  ];
457
459
  if (isLastSelectionLayer && !ignoreScrollSources.includes(selectionSource) && (!preventScrolling.isTouched() || preventScrolling.isTouched() && !preventScrolling.value)) {
458
460
  viewportScroller.scrollTo(cellCoords);
@@ -483,14 +485,16 @@ function Core(rootContainer, userSettings, rootInstanceSymbol = false) {
483
485
  'shift',
484
486
  'refresh',
485
487
  'loadData',
486
- 'updateData'
488
+ 'updateData',
489
+ 'deselect'
487
490
  ].includes(selectionSource)) {
488
491
  editorManager.closeEditor(null);
489
492
  }
490
493
  if (![
491
494
  'refresh',
492
495
  'loadData',
493
- 'updateData'
496
+ 'updateData',
497
+ 'deselect'
494
498
  ].includes(selectionSource)) {
495
499
  instance.view.render();
496
500
  editorManager.prepareEditor();
@@ -514,7 +518,10 @@ function Core(rootContainer, userSettings, rootInstanceSymbol = false) {
514
518
  const { from, to } = cellRanges[selectionLayerLevel];
515
519
  this.runHooks('afterSelectionEnd', from.row, from.col, to.row, to.col, selectionLayerLevel);
516
520
  this.runHooks('afterSelectionEndByProp', from.row, instance.colToProp(from.col), to.row, instance.colToProp(to.col), selectionLayerLevel);
517
- if (selection.getSelectionSource() === 'refresh') {
521
+ if ([
522
+ 'refresh',
523
+ 'deselect'
524
+ ].includes(selection.getSelectionSource())) {
518
525
  instance.view.render();
519
526
  editorManager.prepareEditor();
520
527
  }
@@ -1080,7 +1087,7 @@ function Core(rootContainer, userSettings, rootInstanceSymbol = false) {
1080
1087
  focusGridManager.init();
1081
1088
  if ((0, _rootInstance.isRootInstance)(this)) {
1082
1089
  (0, _a11yAnnouncer.install)(instance.rootPortalElement);
1083
- (0, _mixed._injectProductInfo)(mergedUserSettings.licenseKey, this.rootWrapperElement, "22/04/2026");
1090
+ (0, _mixed._injectProductInfo)(mergedUserSettings.licenseKey, this.rootWrapperElement, "14/05/2026");
1084
1091
  }
1085
1092
  instance.runHooks('init');
1086
1093
  this.render();
package/core.mjs CHANGED
@@ -210,6 +210,7 @@ const deprecationWarns = new Set();
210
210
  this.rootGridElement.appendChild(this.rootElement);
211
211
  this.rootWrapperElement.appendChild(this.rootGridElement);
212
212
  this.rootContainer.appendChild(this.rootWrapperElement);
213
+ this.rootWrapperElement.__hotInstance = this;
213
214
  addClass(this.rootPortalElement, 'ht-portal');
214
215
  this.rootDocument.body.appendChild(this.rootPortalElement);
215
216
  }
@@ -437,7 +438,8 @@ const deprecationWarns = new Set();
437
438
  const selectionSource = selection.getSelectionSource();
438
439
  const ignoreScrollSources = [
439
440
  'loadData',
440
- 'updateData'
441
+ 'updateData',
442
+ 'deselect'
441
443
  ];
442
444
  if (isLastSelectionLayer && !ignoreScrollSources.includes(selectionSource) && (!preventScrolling.isTouched() || preventScrolling.isTouched() && !preventScrolling.value)) {
443
445
  viewportScroller.scrollTo(cellCoords);
@@ -468,14 +470,16 @@ const deprecationWarns = new Set();
468
470
  'shift',
469
471
  'refresh',
470
472
  'loadData',
471
- 'updateData'
473
+ 'updateData',
474
+ 'deselect'
472
475
  ].includes(selectionSource)) {
473
476
  editorManager.closeEditor(null);
474
477
  }
475
478
  if (![
476
479
  'refresh',
477
480
  'loadData',
478
- 'updateData'
481
+ 'updateData',
482
+ 'deselect'
479
483
  ].includes(selectionSource)) {
480
484
  instance.view.render();
481
485
  editorManager.prepareEditor();
@@ -499,7 +503,10 @@ const deprecationWarns = new Set();
499
503
  const { from, to } = cellRanges[selectionLayerLevel];
500
504
  this.runHooks('afterSelectionEnd', from.row, from.col, to.row, to.col, selectionLayerLevel);
501
505
  this.runHooks('afterSelectionEndByProp', from.row, instance.colToProp(from.col), to.row, instance.colToProp(to.col), selectionLayerLevel);
502
- if (selection.getSelectionSource() === 'refresh') {
506
+ if ([
507
+ 'refresh',
508
+ 'deselect'
509
+ ].includes(selection.getSelectionSource())) {
503
510
  instance.view.render();
504
511
  editorManager.prepareEditor();
505
512
  }
@@ -1065,7 +1072,7 @@ const deprecationWarns = new Set();
1065
1072
  focusGridManager.init();
1066
1073
  if (isRootInstance(this)) {
1067
1074
  installAccessibilityAnnouncer(instance.rootPortalElement);
1068
- _injectProductInfo(mergedUserSettings.licenseKey, this.rootWrapperElement, "22/04/2026");
1075
+ _injectProductInfo(mergedUserSettings.licenseKey, this.rootWrapperElement, "14/05/2026");
1069
1076
  }
1070
1077
  instance.runHooks('init');
1071
1078
  this.render();