@jansiegel jansiegel released this Mar 20, 2018


  • Fixed a bug with duplicate fill handles on the edges of the table's overlays. (#4920)
  • Fixed a problem, where the MergeCells class was added under Core in the docs. (#4941)

The corresponding Handsontable Pro version is 1.18.1


@jansiegel jansiegel released this Mar 14, 2018 · 4 commits to master since this release

Breaking changes

  • We removed the mobile editor from the repository. After this version, a standard editor will be used when using mobile devices. (#4911)


  • Fixed a bug, where merged cells declared outside of the table were still partially rendered. (#4887)
  • Added tests for mobile devices. (#4868)
  • Fixed a bug, where rows were not being rendered, when scrolling the table on a mobile device. (#4856)
  • Added some missing API for the non-contiguous selection feature. (#4811)
  • Change the isObjectEquals function to isObjectEqual. (#4387)
  • Fixed a problem with scrolling on Microsoft Edge. (#4320)
  • Added a proper source argument value for removing data from the table using the Backspace and Delete keys. (#3916, #3539)
  • Added a cellProperties argument for the beforeValueRender hook. (#4543)

The corresponding Handsontable Pro version is 1.18.0


@jansiegel jansiegel released this Mar 1, 2018 · 17 commits to master since this release

Breaking changes

  • The Merge Cells plugin has been rewritten to ES6 and completely refactored. Before 0.37.0 (1.17.0 with Handsontable Pro) the plugin was accessible from the mergeCells property in the main instance. After the refactor, you can access it just like every other plugin, which is with hot.getPlugin('mergeCells'). (#4214, #4858, #4870)
Pre-0.37.0 Post-0.37.0
hot.mergeCells hot.getPlugin('mergeCells')
hot.mergeCells.mergedCellInfoCollection hot.getPlugin('mergeCells').mergedCellsCollection.mergedCells

This update introduces new API (more information in the documentation) and four new hooks:

  • beforeMergeCells
  • afterMergeCells
  • beforeUnmergeCells
  • afterUnmergeCells
  • The merged cells are now cleared (filled with nulls). The only value that remains, is the top-left corner cell's value, which is the visible one. (#2958)


  • Fixed a problem with opening the context menu on non-contiguous selections. (#4816)
  • Fixed a problem with removing rows using the non-contiguous selection feature. (#4815)
  • Fixed a problem with the cell background color being overwritten by the selection. (#4812)
  • Fixed an issue, where selection did not color the cells properly on IE. (#4806)
  • Added the Japanese (ja-JP) language pack. (#4756)
  • Added the Portuguese (for Brazil, pt-BR) language pack. (#4763)
  • Fixed a bug, where pressing the ENTER key inside the editor of a merged cell sometimes threw an error. (#3949)
  • Added the autofill functionality for merged cells (used to crash the table). (#4035)
  • Fixed a problem, where merging already merged cells was broken. (#4138, #1722)
  • Fixed a bug, where the fill handle was gone after merging cells. (#4040)
  • Fixed a problem, where there was no way to enter multiline content into a merged cell. (#2898)
  • Fixed a bug, where the validation was broken for merged cells. (#3903, #3342)
  • It is now possible to select an entire column, going "through" a merged cell. (#4022)
  • Fixed a problem, there was a possibility to declare overlapping merged cells, which caused multiple issues. (#2590)
  • Fixed multiple problems with keyboard selection of the merged cells. (#1635)

The corresponding Handsontable Pro version is 1.17.0


@jansiegel jansiegel released this Feb 16, 2018 · 38 commits to master since this release

Breaking changes:

  • Rewritten the PersistentState plugin to ES6. (#4618) From this version onward you can access the plugin like all regular plugins (hot.getPlugin('persistentState')), not from the main instance (the hot.storage object is now accesible from hot.getPlugin('persistentState').storage)
  • Added support for selecting non-contiguous cells or ranges (#4708). That required some changes - some of them are backward incompatible:


  • hot.getSelectedLast() Returns an array with coordinates of the last selected layer ([row, col, rowEnd, colEnd]). This method behaves as hot.getSelected() before the breaking change.
  • hot.getSelectedRangeLast() Returns a CellRange object containing the last selection coordinates applied to the table. This method behaves as hot.getSelectedRange() before the braking change.
  • hot.alter('remove_row', [[1, 4], [10, 1]]) Supports removing non-contiguous rows. Instead of passing the row index, we can pass an array of arrays, where the first item is the index of the row and at the second item is the amount of rows to be removed;
  • hot.alter('remove_col', [[1, 4], [10, 1]]) Same as above, but for the columns. Only "remove" actions support that new feature.

Breaking Changes:

  • hot.getSelected() Returns an array of arrays with the coordinates of all layers ([[row, col, rowEnd, colEnd], [row, col, rowEnd, colEnd] ...]);
  • hot.getSelectedRange() Returns an array of CellRange objects with the coordinates of all layers ([{CellRange}, {CellRange} ...]);
  • Previously hot.selection.empty(), now hot.emptySelectedCells();
  • Changed selection colors:
    • area borders, was #89aff9 -> is #4b89ff
    • area background, was #b5d1ff -> is #005eff
    • current selection border, was #5292f7 -> is #4b89ff
  • Removed the multiSelect setting and replaced it with selectionMode: 'single';
  • Added a new selectionMode option, which can be set either as 'single' (previously as multiSelect: false), 'range' (previously as multiSelect: true) or 'multiple' (new non-contiguous mode);

Compatible Changes:

  • afterSelection
    • previously: afterSelection(row, column, rowEnd, columnEnd, preventScrolling)
    • now: afterSelection(row, column, rowEnd, columnEnd, preventScrolling, selectionLayerLevel)
  • afterSelectionByProp
    • previously: afterSelectionByProp(row, prop, rowEnd, propEnd, preventScrolling)
    • now: afterSelectionByProp(row, prop, rowEnd, propEnd, preventScrolling, selectionLayerLevel)
  • afterSelectionEnd
    • previously: afterSelectionEnd(row, column, rowEnd, columnEnd)
    • now: afterSelectionEnd(row, column, rowEnd, columnEnd, selectionLayerLevel)
  • afterSelectionEndByProp
    • previously: afterSelectionEndByProp(row, prop, rowEnd, propEnd)
    • now: afterSelectionEndByProp(row, prop, rowEnd, propEnd, selectionLayerLevel)

We've added a selectionLayerLevel argument for all the hooks listed above. The selectionLayerLevel is a number indicating which selection layer is currently being modified. For the first selection, this value is 0, with the new added layers this number increases.


  • Added an option to prevent row creation using the beforeCreateRow hook. (#4749)
  • Fixed a bug, where freezing and unfreezing the last column crashed the browser. (#4642)
  • Added tests for the translation feature. (#4723)

The corresponding Handsontable Pro version is 1.16.0.


@jansiegel jansiegel released this Jan 25, 2018 · 58 commits to master since this release


  • Fixed an inconsistency with input formatting. The numericFormat should now be used only to format the output, not the input data. (#4706)
  • Fixed a bug, where the language property was not a part of the settings object prototype. #4686
  • Rewritten the DragToScroll plugin to ES6. (#4626)
  • The Context Menu was expanded horizontally by 15px. (#4657)
  • Fixed a bug, where pressing the ESC key did not close the Context Menu. (#4585)
  • Fixed a problem with the afterValidate hook's arguments with trimRows enabled. (#4568)
  • Added missing changes for the language support. (#4709)
  • Added a German language pack. Thanks goes to @buggythepirate, @madoar, @ckruhs (#4669)
  • Added the Code of Conduct file to the repo. (#4718)
  • Updated the moment version because of a ReDoS vulnerability. (#4677)

The corresponding Handsontable Pro version is 1.15.1.


@jansiegel jansiegel released this Dec 6, 2017 · 109 commits to master since this release

New feature:

From now on you will able to translate messages and elements of the UI to your specific language. Read more about this new feature.

Breaking changes:

  • We have renamed our locale and language-related configuration options to free the namespace required for multi-language support introduced within this release.

What used to be defined as:

  format: '0,0.00 $',
  language: 'de-DE'

will now look like this:

  numericFormat: {
    pattern: '0,0.00 $',
    culture: 'de-DE'

Take a look at our documentation for more insight:


  • Fixed a problem, where updating the contextMenu entries using updateSettings was not working properly. (#4614)
  • Fixed a bug, where copied checkbox-typed cells were no longer functional. (#4580)
  • Fixed a problem, where declaring a multi-leveled contextMenu with the name property declared as a function would crash. (#4550)
  • Added multi-language support for the table. Please, take a look at https://docs.handsontable.com/tutorial-internationalization.html for more information. (#4457)
  • Fixed a problem with scrolling the table using the keyboard, when renderAllRows: true was set. (#4205)
  • Fixed a problem with autocomplete and dropdown editors with languages using IME API. (#839)
  • Fixed a bug where afterScrollHorizontally hook was triggered after scrolling vertically. (#4512)
  • Fixed incorrect links in README. (#4636)
  • Updated the Typescript Definitions. (#4519)
  • Added validateRows and validateColumns functions. (#4583)
  • Added the default exports for UndoRedo and CustomBorders plugins. (#4572, #4571)

Corresponding Handsontable Pro version is 1.15.0


@jansiegel jansiegel released this Oct 12, 2017 · 278 commits to master since this release


  • Fixed the copy/paste functionality for older versions of Safari. (#4407)


@jansiegel jansiegel released this Sep 13, 2017 · 300 commits to master since this release


  • Added a missing moment import. (#4514)


@jansiegel jansiegel released this Sep 12, 2017 · 304 commits to master since this release


  • Patch for Handsontable Pro.
  • Fixed a problem with using wrong row/column indexes for validation. (#4304)

The corresponding Handsontable Pro version is 1.14.1.


@jansiegel jansiegel released this Sep 12, 2017 · 310 commits to master since this release


  • Fixed a problem with incorrect usage of the test method in the hasClass polyfill. (#4508)
  • Fixed a bug, where zoomed-out Chrome made the table impossible to scroll. (#4502)
  • Fixed a problem with misaligned shadow in the Manual Column Move plugin. (#4496)
  • Fixed an issue with Handsontable's default export property. (#4495)