Handsontable Versions Save

JavaScript data grid with a spreadsheet look & feel. Works with React, Angular, and Vue. Supported by the Handsontable team ⚡

12.3.0

1 year ago

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(), and copyColumnHeadersOnly(). #2288
  • Added missing TypeScript definitions of the CellCoords and CellRange classes, which are used in the arguments of some of the APIs. #9755
  • Added missing TypeScript definitions for the following Handsontable hooks: beforeColumnFreeze, afterColumnFreeze, beforeColumnUnfreeze, and afterColumnUnfreeze. #9859

Fixed

  • Fixed an issue where the UndoRedo plugin 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 type could 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, and afterCreateCol. #10136
  • Fixed an issue where comments added to fixed columns didn't display properly after scrolling. #9645
  • Fixed an issue where typing in a dropdown editor caused the IME to disappear, resulting in wrong characters being typed. #9672
  • React: Fixed an issue where dropdown cells weren't validated properly when using the HotColumn component. #10065

12.2.0

1 year ago

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, and insert_col_end. The insert_row and insert_col parameters are marked as deprecated. #9471

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 type through setCellMeta() didn't properly set the cell's editor and renderer. #9734
  • Fixed an issue where the dropdown menu didn't display when the NestedHeaders plugin was enabled and all rows were trimmed out. #9753

Removed

  • Removed a type definition for a non-existing method, translateRowsToColumns(). #9919

12.1.3

1 year ago

For more information on this release, see:

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 alter method. #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 trimWhitespace option 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

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 rowOffset and colOffset and a non-existing hook modifyRowSourceData. #8659, #7317

12.1.2

1 year ago

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

1 year ago

For more information on this release, see:

Fixed

  • Angular: Fixed an issue where the installation of @handsontable/angular package failed for versions of Angular other than 9 #9622

12.1.0

1 year ago

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, and afterColumnUnfreeze. #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/core dependency to peer dependencies. #9574

Fixed

  • Fixed an issue where dropdown and autocomplete cell editors rendered incorrectly if the preventOverflow option 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 ShortcutManager unnecessarily handled keyup events with no key defined. #9562

12.0.1

1 year ago

For more information on this release, see:

Fixed

  • Fixed an issue where checking or unchecking a checkbox in a row with autoRowSize: true and 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

2 years ago

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, 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
  • Breaking change: Changed how updatePlugin() reacts to updateSettings() calls, to improve performance and the consistency of user experience. Now, calls to updateSettings() update a plugin's state only when the options object contains a configuration option that's relevant to that particular plugin. #9021
  • Breaking change: Changed the order of execution for two hooks: now, beforeKeyDown is properly fired before afterDocumentKeyDown. #6236
  • 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
  • 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
  • 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
  • Changed two scripts of the main Handsontable workspace (./), to speed up the build process: now, the npm run build and npm run test scripts 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

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 the afterFilter hook 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 failed validation 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 BasePlugin class. #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 their package.json files. #9140

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
  • Breaking change: Removed the Shift + Page Up/Page Down keyboard shortcuts from the cell editing context. #9401
  • 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 enzyme dependency from the React wrapper. #9151

11.1.0

2 years ago

Added

  • Added updateData(), a new method that allows for replacing Handsontable's data without resetting the states of cells, rows and columns. #7263
  • Vue: Added Vue 3 support, by introducing a new wrapper. #7545

Changed

  • Updated the TypeScript definition of the setDataAtCell() method. #8601
  • Extended Handsontable's GitHub Actions workflow, to allow for deploying code examples to GitHub Pages. #9058

Fixed

  • Fixed an issue where the autocomplete editor's suggestion list didn't update properly. #7570
  • Fixed an issue where nested headers didn't render when data wasn't defined. #8589
  • Fixed some end-to-end tests that failed on mobile devices. #8749
  • Fixed an issue where the rendered selection could get shifted by 1px. #8756
  • Fixed an issue where the first column's border didn't display properly. #8767
  • Fixed an issue where the CollapsibleColumns plugin's expandAll() method didn't expand collapsed columns. #8900
  • Fixed end-to-end test scripts that occasionally crashed. #8961
  • Fixed a typo in the valueAccordingPercent() helper. #9006
  • Fixed an issue where the NestedRows plugin could throw a type error after calling the updateSettings() method. #9018
  • Fixed an issue where performance was affected by removing events. #9044
  • Fixed a wrong TypeScript definition of the MultiColumnSorting plugin's sort() method. #9067
  • Fixed an issue where the Comments plugin's editor disappeared after adding a comment. #9075 #6661
  • React: Fixed a wrong return type. #9000

11.0.1

2 years ago

Fixed

  • Fixed the UMD build of @handsontable/angular, which was not working properly in 11.0.0. #8946