Changelog 12.0
12.4.0
Released on May 23, 2023.
For more information on this release, see:
Added
- Added two new Handsontable hooks,
afterColumnSequenceChangeandafterRowSequenceChange, which are fired after changing the order of columns or rows, respectively. #10215
Fixed
- Fixed numerous issues related to syncing Handsontable with HyperFormula. Now, formulas work properly with all the Handsontable features. #10215
- Fixed na issue where formulas didn’t recalculate after rows or columns were moved. #4668
- Fixed an issue where Handsontable’s dates didn’t sync correctly with HyperFormula’s dates. #10085
- Fixed an issue where calling
updateSettings()would reset HyperFormula’s undo/redo actions stack. #10326 - Fixed an issue where the
Autofill,TrimRowsandFormulasplugins didn’t work properly together. #10200 - Fixed an issue where the
modifySourceDatahook used the wrong type of indexes. #10215 - Fixed an issue where text copied from Handsontable to Excel included wrong types of spaces. #10017
- Fixed an issue where mousing over the same cell twice didn’t trigger the
beforeOnCellMouseOverandafterOnCellMouseOverhooks. #10321 - Updated TypeScript definition files related to the
CustomBordersplugin. #10360 - Fixed an issue where moving rows manually to the bottom was difficult due the misalignment between the backlight and guideline elements. #9556
12.3.3
Released on March 28, 2023.
For more information on this release, see:
Added
- Added a Chinese (zh-CN) translation of the “Copy with headers” feature. #10273
- Added a new guide: Rows sorting. #10183
Fixed
- Fixed an issue where column-filter checkboxes got reset when the table was scrolled out of view. We solved this by preventing the table from triggering a complete render each time it leaves the viewport. #10206
- Fixed an issue where clicking on a cell scrolled the table sideways in certain RTL configurations. #10206
- Fixed an issue where calling
getDataAtCol()orgetDataAtProp()caused an error when the data set had more than 125 000 rows. #10226 - React: Fixed React 18 warnings about deprecated lifecycle methods. We removed
componentWillMount()andcomponentWillUpdate()from Handsontable’s codebase and recreated their functionality by using React’s portals. #10263
12.3.2
Released on March 23, 2023.
Handsontable 12.3.2 may not work properly with React’s functional components. If you’re using React, you should upgrade to 12.3.3.
12.3.1
Released on February 6, 2023.
For more information on this release, see:
Added
- Added a Japanese translation of the “Copy with headers” feature. #10201
Removed
- Removed the two-week delay in showing the console warning about license expiration. #10175
Fixed
- Fixed an issue where
updateData()didn’t work with nested data structures (NestedRows). #10178 - Fixed an issue of unwanted pixels in the “Filter by condition” menu by removing a superfluous overlay. #10174
- Fixed an issue where merged cells could lack right and bottom borders due to a Chrome bug. #10212
- Fixed an issue where using some browser and system shortcuts could cause Handsontable to behave as if Cmd/Ctrl was being held down. #10210
12.3.0
Released on December 14, 2022.
For more information on this release, see:
Added
- Added a new feature that lets you copy the contents of column headers by using 3 new context menu options: “Copy with headers”, “Copy with group headers”, and “Copy headers only”. #2288
- Added 4 new API methods for copying column headers programmatically:
copyCellsOnly(),copyWithColumnHeaders(),copyWithAllColumnHeaders(), andcopyColumnHeadersOnly(). #2288 - Added missing TypeScript definitions of the
CellCoordsandCellRangeclasses, which are used in the arguments of some of the APIs. #9755 - Added missing TypeScript definitions for the following Handsontable hooks:
beforeColumnFreeze,afterColumnFreeze,beforeColumnUnfreeze, andafterColumnUnfreeze. #9859
Fixed
- Fixed an issue where the
UndoRedoplugin didn’t work properly with preconfigured columns. #10108 - Fixed an issue where formulas inserted programmatically by using
updateData()were not evaluated. #10011 - Fixed a regression where setting a column’s
typecould overwrite other custom-defined settings. #10128 - Fixed an issue where Handsontable didn’t render properly when initialized inside of a hidden container. #5322
- Fixed an issue of desynchronization between configuration options (cell meta) and Handsontable’s
data. The issue occurred when Handsontable’s options were modified through the following hooks:
beforeCreateRow,afterCreateRow,beforeCreateCol, andafterCreateCol. #10136 - Fixed an issue where comments added to fixed columns didn’t display properly after scrolling. #9645
- Fixed an issue where typing in a
dropdowneditor caused the IME to disappear, resulting in wrong characters being typed. #9672 - React: Fixed an issue where
dropdowncells weren’t validated properly when using theHotColumncomponent. #10065
12.2.0
Released on October 25, 2022.
For more information on this release, see:
Added
- Added a new feature that lets you add rows and columns at a specified position. Now, the
alter()method takes 4 new parameter values:insert_row_above,insert_row_below,insert_col_start, andinsert_col_end. Theinsert_rowandinsert_colparameters are marked as deprecated. #9471
Deprecated
- Deprecated the
insert_rowparameter of thealter()method. Instead, useinsert_row_aboveorinsert_row_below. #9471 - Deprecated the
insert_colparameter of thealter()method. Instead, useinsert_col_startorinsert_col_end. #9471
Removed
- Removed a type definition for a non-existing method,
translateRowsToColumns(). #9919
Fixed
- Fixed an issue where the width of the cell editor was calculated incorrectly. #3815
- Fixed an issue where formulas surrounded by merged cells were converted to values by mistake. #6359
- Fixed an issue where Handsontable could disappear on Firefox 93 (and later) in a specific use case. #9545
- Fixed an issue where changing a cell’s
typethroughsetCellMeta()didn’t properly set the cell’seditorandrenderer. #9734 - Fixed an issue where the dropdown menu didn’t display when the
NestedHeadersplugin was enabled and all rows were trimmed out. #9753
12.1.3
Released on September 22, 2022.
For more information on this release, see:
Removed
- Removed a custom stable sorting implementation in favor of the stable sorting algorithm guaranteed by ECMAScript 2019. #6091
- Removed type definitions for non-existing methods
rowOffsetandcolOffsetand a non-existing hookmodifyRowSourceData. #8659, #7317
Fixed
- Fixed incorrect date format conversion on input in the date editor. #9681
- Fixed an error when adding a large number of rows using the
altermethod. #7840 - Fixed IME text input in the editors. #9586
- Fixed an issue where the editor did not open on key events when the cell was outside the viewport. #9022
- Fixed an issue with “0” values being ignored by the Column Summary plugin. #6385
- Fixed an error when opening the column dropdown menu with the Filters plugin enabled. #9561
- Fixed an issue where the
trimWhitespaceoption could not be used in the column and cell levels of the cascading configuration. #7387 - Fixed the flickering of the selection area at the edge of the table while scrolling. #8317
- Fixed misalignment on mobile devices when the edge cells were selected. #9621
- Fixed type definitions for the method
setSourceDataAtCell. #8599
12.1.2
Released on July 8, 2022.
For more information on this release, see:
Changed
- Changed the version of the Moment.js dependency from 2.29.3 to 2.29.4, in reaction to a recently-found Moment.js security vulnerability. The vulnerability did not affect a correct configuration of Handsontable. #9638
- Vue: Freezed the version of the Vue framework that is used in our build chain to ~2.6. This shouldn’t affect apps that use Vue 2.7+. #9624
12.1.1
Released on July 5, 2022.
For more information on this release, see:
Fixed
- Angular: Fixed an issue where the installation of
@handsontable/angularpackage failed for versions of Angular other than 9 #9622
12.1.0
Released on June 28, 2022.
For more information on this release, see:
Added
- Added smoother row and column moving when some row or columns are hidden. #7613
- Added
getNearestNotHiddenIndex(), a new method that finds the visual index of the nearest not-hidden row or column and works even with large numbers of hidden rows or columns. The previous method,getFirstNotHiddenIndex(), still works, but is marked as deprecated. #9064 - Added a Czech translation. #9343
- Added a Serbian translation. #9469
- Added new hooks:
beforeColumnFreeze,afterColumnFreeze,beforeColumnUnfreeze, andafterColumnUnfreeze. #9248
Changed
- Replaced HTML entities appearing in Handsontable’s license texts with canonical counterparts. #9487
- Updated the Pikaday optional dependency to 1.8.2, to let Handsontable work with Parcel 2 without errors. #9410
- React: Changed the wrapper’s lifecycle methods, to let Handsontable work with React 17+ without warnings. #8748
- Angular: Moved the
@angular/coredependency to peer dependencies. #9574
Deprecated
- Deprecated the
getFirstNotHiddenIndex()method. UsegetNearestNotHiddenIndex()instead. #9064
Fixed
- Fixed an issue where dropdown and autocomplete cell editors rendered incorrectly if the
preventOverflowoption was set to'horizontal'. #3828 - Fixed an issue where frozen rows were getting duplicated. #4454
- Fixed an issue where comments rendered outside the viewport. #4785
- Fixed an issue where comments got positioned incorrectly when Handsontable ran within a scrollable element. #6744
- Fixed an issue that occurred when Handsontable ran within an HTML
<form>: pressing Enter inside another form’s<input>could open Handsontable’s dropdown menu. #9295 - Fixed an issue where it was impossible to unmerge cells in the RTL layout direction. #9362
- Fixed an issue where columns wider than the viewport’s width and rows higher than the viewport’s height didn’t render correctly. #9473
- Fixed an issue where dragging-to-scroll on mobile didn’t work properly in the RTL layout direction. #9475
- Fixed an issue where hiding columns with nested headers caused incorrect column width calculation
(for the
stretchH: 'all'option). #9496 - Fixed an issue where
ShortcutManagerunnecessarily handledkeyupevents with nokeydefined. #9562
12.0.1
Released on May 16, 2022.
For more information on this release, see:
Fixed
- Fixed an issue where checking or unchecking a checkbox in a row with
autoRowSize: trueand multi-line cell values caused rows to align incorrectly. #7102 - Fixed an issue where checking or unchecking a checkbox changed the cell width. #8211
- Fixed an issue where using a single Handsontable instance with multiple HyperFormula sheets could
lead to an uncaught
TypeError. #8268 - Fixed an issue where nested column headers didn’t expand properly. #9099
- Fixed an issue where updating custom borders could lead to uncaught error exceptions. #9455
12.0.0
Released on April 28, 2022.
For more information on this release, see:
Added
- Added
ShortcutManager, a new API for customizing keyboard shortcuts. #8942 - Added support for right-to-left (RTL) languages, by introducing a new configuration option:
layoutDirection. #8760 - Added an Arabic translation. #9208
- Added a new configuration option:
fixedColumnsStart. #8760 - Added a new keyboard shortcut (Ctrl/Cmd+Enter) for filling the selected range of cells with the value of the active cell. #9366
- Added support for the Home and End keys inside cell editors, for moving the cursor to the beginning or end of the text. #9367
- Added support for the latest Node LTS version. #9149
Changed
- Breaking change: Changed how
updateSettings()handles data updates, to improve performance and the consistency of user experience. Now, when provided with a new data object,updateSettings()updates the data without resetting any states. #7263 [migration guide] - Breaking change (React, Angular, Vue 2, Vue 3): Updating your data through a component property no longer resets your index mapper information and configuration options. #7263 [migration guide]
- Breaking change: Changed how
updatePlugin()reacts toupdateSettings()calls, to improve performance and the consistency of user experience. Now, calls toupdateSettings()update a plugin’s state only when the options object contains a configuration option that’s relevant to that particular plugin. #9021 [migration guide] - Breaking change: Changed the order of execution for two hooks: now,
beforeKeyDownis properly fired beforeafterDocumentKeyDown. #6236 [migration guide] - Breaking change: Changed how default keyboard shortcuts are defined, to improve keyboard navigation consistency. Most of the shortcuts did not change and are now properly documented in the keyboard shortcuts guide. However, some shortcuts that were not defined explicitly, and were not listed in the documentation, don’t work anymore (e.g., Enter opens a cell’s editor, but Ctrl+Enter doesn’t). This change doesn’t affect custom keyboard shortcuts. #8942 [migration guide]
- Breaking change: Split a cross-platform modifier key (Ctrl/Cmd) into two separate keys, to improve keyboard navigation consistency. Now, the Cmd key triggers actions on macOS where the Ctrl key triggers actions on Windows. For example, on macOS, Ctrl+A doesn’t work anymore: Cmd+A is used instead. #9369 [migration guide]
- Breaking change: Changed the actions of the following keyboard shortcuts, to match the usual spreadsheet software behavior, and provide a more intuitive user experience: Ctrl/Cmd+↑, Ctrl/Cmd+Shift+↑, Ctrl/Cmd+↓, Ctrl/Cmd+Shift+↓, Ctrl/Cmd+←, Ctrl/Cmd+Shift+←, Ctrl/Cmd+→, Ctrl/Cmd+Shift+→, Home, Ctrl/Cmd+Home, End, Ctrl/Cmd+End, Shift+Page Up, and Shift+Page Down. #9363 #9364 #9365 [migration guide]
- Changed two scripts of the main Handsontable workspace (
/), to speed up the build process: now, thenpm run buildandnpm run testscripts don’t build or test the Handsontable examples (/examples). #9412 - Changed the version of the Moment.js dependency from 2.24.0 to 2.29.3, in reaction to a recently-found Moment.js security vulnerability that did not directly affect Handsontable. #9381
- Changed the version of the HyperFormula optional dependency from ^1.2.0 to ^2.0.0. #9411
- Changed an internal property name, from
handsontableInstance.view.wttohandsontableInstance.view._wt, to make it clear that Walkontable (Handsontable’s rendering engine) is not a part of Handsontable’s public API. #8760
Removed
- Breaking change: Removed the Cmd+M keyboard shortcut (used for cell merging), as it conflicted with window minimizing on macOS. The Ctrl + M keyboard shortcut works the same as before. #9368 [migration guide]
- Breaking change: Removed the Shift+Page Up/Page Down keyboard shortcuts from the cell editing context. #9401 [migration guide]
- Dropped support for Internet Explorer 11 and Edge Legacy (the non-Chromium version of Edge). Handsontable 11.x becomes the long-term support (LTS) version for Internet Explorer 11 and Edge Legacy, until the end of 2023. #7026
- React: Removed the
enzymedependency from the React wrapper. #9151
Fixed
- React, Angular, Vue 2, Vue 3: Fixed an issue where using
updateSettings()caused problems for state managers. #8372 - Fixed an issue where using
updateSettings()caused hidden columns to reappear. #7165 - Fixed an issue where using
updateSettings()caused merged cells to unmerge. #3315 - Fixed an issue where using
updateSettings()caused the state of nested rows to reset. #8838 - Fixed an issue where using
updateSettings()caused problems with column sorting. #7688 - React: Fixed an issue where using React’s
setState()within theafterFilterhook broke filtering. #7567 - Vue 2: Fixed an issue where repeatedly changing Handsontable’s height through
updateSettings()caused Handsontable to crash. #7546 - Vue 2: Fixed an issue where the
failedvalidation status got erased when editing a new row. #7541 - Fixed an issue where cell filtering did not use formula results. #5455
- Fixed a wrong TypeScript definition in the
BasePluginclass. #9175 - Fixed an issue where the Ctrl/Cmd+Z and Ctrl/Cmd+Shift+Z keyboard shortcuts didn’t behave properly inside cell editors. #9367
- Fixed an issue where the dropdown menu contained unwanted rectangle elements. #9240
- React, Vue 2, Vue 3: Fixed an issue with registering modules for the React, Vue 2, and Vue 3
wrappers, by adding an
"exports"field to theirpackage.jsonfiles. #9140