Skip to content

Migrating from 13.1 to 14.0

Migrate from Handsontable 13.1 to Handsontable 14.0, released on November 30th, 2023.

More information about this release can be found in the 14.0.0 release blog post.
For a detailed list of changes in this release, see the Changelog.

Changes to IME

Handsontable 14.0 changes how it manages browser focus. The focus now goes to the cell/header elements, not an underlying TEXTAREA element as in versions <=13.1.0. This change allows screen readers to recognize the table contents correctly. However, this makes the IME editor not compatible with our “fast edit” functionality (the ability to start editing a cell without opening the editor first).

To maintain the IME functionalities, Handsontable 14.0 introduces the imeFastEdit option that swaps the browser focus to the editor’s editable element after a small, configurable delay.

To utilize it in your implementation, set the imeFastEdit option to true in your settings object.

Adjust your application to the modified keyboard shortcuts

The new Handsontable version comes with an updated set of keyboard shortcuts. Most of them are new additions, but some existing shortcuts also change. Make sure to adjust your application to the current specification.

Ctrl/Cmd + A
BeforeAfter
Selects all cells and headersSelects all cells without headers
Selection highlight moves to the top-left cell of the selectionFocused cell does not move
TAB in the Filtering menu
BeforeAfter
Iterates through the content listIterates through the menu items. When focused on the search input, the arrow keys allow iterating through the content list

More information: Keyboard Shortcuts page in the documentation

Check if your template looks fine with the updated colors

To make the table more accessible, this release changes the color of the invalid cells and some of the cell icons. Make sure it looks good with your application template.

BeforeAfter
Cell background: #ff4c42Cell background: #ffbeba
Autocomplete-typed cells arrow: #eeeeeeAutocomplete-typed cells arrow: #bbbbbb
Invalid autocomplete-typed cells arrow: #eeeeeeInvalid autocomplete-typed cells arrow: #555555
Invalid autocomplete-typed cells arrow on hover: #777777Invalid autocomplete-typed cells arrow on hover: #1a1a1a

Update ContextMenu.open() and DropdownMenu.open() calls

Handsontable 14.0 changes the accepted position argument for ContextMenu.open() and DropdownMenu.open(). When you open the menu programmatically with a literal position, use an object with top and left properties instead of pageX and pageY. Passing a native browser Event instance still works the same as before.

const menu = hot.getPlugin('contextMenu');
// Before (13.x): menu.open({ pageX: 200, pageY: 300 });
// After (14.0+): use { top, left }:
menu.open({ top: 300, left: 200 });
// Native event -- works unchanged:
element.addEventListener('contextmenu', (event) => {
menu.open(event);
});

Result

Your application now runs on Handsontable 14.0.