Tutorial: Release notes

Release notes

6.0.1

Released on 2nd of October, 2018

Changes
  • Fixed a bug where inserting new columns threw an error. (#5422)
  • Fixed a problem where the non-contiguous selection did not work properly in multiple scenarios. (#5427)
  • Fixed a bug where a newly edited cell had the background of the previously edited cell. (#5402)
  • Fixed a bug where an error was being thrown after clicking the top-left corner of the table. (#5434)
  • Fixed a bug where adding a new row cleared the data in the first row. (#5431)

The corresponding Handsontable Pro version is 6.0.1.

6.0.0

Released on 27th of September, 2018

This release contains changes to the ColumnSorting plugin exclusively. Detailed information about the changes can be found in the description of pull request #5411 and in our documentation.

Breaking changes
  • We refactored and rewrote parts of the ColumnSorting plugin in order for it to work seamlessly with the new MultiColumnSorting plugin for Handsontable Pro. This allowed us to fix multiple problems that the previous version of the plugin had.
    This introduced some backward-incompatible changes:
    • The configuration items (such as sortIndicator, sortEmptyCells, sortFunction) for the plugin were moved into the scope of the plugin config.
    • The initial plugin configuration is stored under the initialConfig property in the plugin configuration.
    • The sortFunction config item was renamed to compareFunctionFactory and converted to a factory returning a compare function (and moved into the plugin configuration scope, as mentioned above).
    • The sortIndicator config item was renamed to indicator (and moved into the plugin configuration scope, as mentioned above).
    • Comparator function structure changed: // Was: function numericSort(sortOrder, columnMeta) { return function ([, value], [, nextValue]) { // Is: function numericSort(sortOrder, columnMeta) { return function (value, nextValue) {
    • The sort method arguments were reorganized, so it accepts the sorting configuration as an object: hot.getPlugin('columnSorting').sort({ column: 0, sortOrder: 'asc' });
    • Some public methods were rewritten, renamed and set as private, namely:
      • getNextOrderState
      • loadSortingState
      • saveSortingState
    • The beforeColumnSort and afterColumnSort hooks receive a different set of arguments. For more information, check our documentation.
    • Calling the updateSettings method with columnSorting defined will set a fresh sort configuration.
Changes

Apart from the breaking changes above, this release introduces some additional changes to the sorting plugin:

  • Replaced the current sorting indicators with new ones, in the form of arrows.
  • The sorting indicators will be displayed by default.
  • Added a possibility to disable the action of sorting by clicking on the headers, using the headerAction option.

The corresponding Handsontable Pro version is 6.0.0.

5.0.2

Released on 12th of September, 2018

Changes
  • Fixed a bug where editor focusing caused the window to scroll. (#5220)
  • Fixed a problem where double-clicking the fill handle filled the cells towards the left instead of down. (#5023)
  • Fixed a bug where editing a cell showed improper values after sorting and using the setDataAtRowProp method. (#4289)
  • Fixed a problem with editing autocomplete-typed cells after using similar cells in a different Handsontable instance. (#3374)
  • Corrected a typo in AutoColumnSize typescript definition file. (#5364)
  • Fixed a bug with calculating how many rows/columns need to be rendered. (#5365)
  • Finished the ESLint warning correction task (#4536), which included resolving problems with:
    • no-param-reassign (#5368)
    • no-restricted-properties (#5361)
    • no-undef (#5363)
    • no-use-before-define (#5362)
    • no-plusplus (#5345)
    • prefer-const (#5348)
    • object-curly-spacing (#5347)
    • arrow-parens (#5358)
    • space-before-function-paren (#5357)
    • one-var (#5349)
    • no-constant-condition (#5343)
    • no-restricted-syntax (#5342)
    • newline-per-chained-call (#5341)

The corresponding Handsontable Pro version is 5.0.2.

5.0.1

Released on 16th of August, 2018

Changes
  • Fixed a bug, where the Cmd + F / Ctrl + F key combination enabled the multiple selection mode. (#5302)
  • Added the getRegistered method to the typescript definition file. (#5262)
  • Fixed a bug, where hiding the custom border through the setBorders method did not work. (#5240)
  • Fixed a problem with opening the handsontable-typed cell multiple times. (#5195)
  • Fixed a problem with inconsistent row height in certain situations. (#4888)
  • Fixed a bug with autofill border overlapping the selection border. (#4810)
  • Fixed a bug, where pressing the down arrow would not scroll the table, when the row header was selected. (#3560)
  • Fixed a problem with calculating the column with after selecting a in-cell checkbox. (#3437)
  • Corrected all ESLint warnings regarding the following rules:

The corresponding Handsontable Pro version is 5.0.1.

5.0.0

Released on 11th of July, 2018

Breaking changes
  • Refactored the Custom Borders plugin. The API method was changed - added new methods such as getBorders, setBorders and clearBorders. The initial object configuration has been intact, it is still compatible with the previous releases. (#5017)
  • Improved colors, cursor style and sizes of some parts of Handsontable. (#5170)

Changes
  • Fixed an issue related with a lack of afterSelectionEnd hook being fired when contextmenu event is called for a cell. This fix additionally introduces two new hooks (afterOnCellContextMenu, beforeOnCellContextMenu). (#5201, #5232)
  • Fixed an issue related with minifying CSS files where the z-index property was incorrectly modified by OptimizeCssAssetsPlugin webpack plugin. (#5230)
  • Cleaned up and improved the code readability of the ColumnSorting plugin. (#5228)
  • Fixed sort indicator which didn't update after moving columns. (#3900)
  • Fixed a problem with Autocomplete's arrow button being rendered in a wrong position. (#5124)
  • Updated TypeScript definition file. (#5211)

The corresponding Handsontable Pro version is 5.0.0.

4.0.0

Released on 13th of June, 2018

Breaking changes
  • Changed the default values for the following configuration options (#5135)
    • autoInsertRow (was: true, is: false)
    • autoWrapCol (was: false, is: true)
    • autoWrapRow (was: false, is: true)
  • Updated our number-handling dependency, Numbro to the latest version. (#5081)
    In order to keep your implementation working correctly, you'll need to update the Numbro 2.x-compatible language files.

    For more information on those, take a look at the Numbro documentation.

Changes
  • Updated the API documentation for the language settings. (#5099)
  • Added a Norwegian translation to Handsontable. (#4694)
  • Fixed a problem with the IME API, where an unwanted first character remained in the editor. (#4662)
  • Fixed a bug, where there was a way to break the allowInvalid option, by making two editors active. (#4551)
  • Fixed a problem with incomplete table rendering after sorting columns. (#4062)

The corresponding Handsontable Pro version is 4.0.0.

3.0.0

Released on 16th of May, 2018

Breaking changes

The Column Sorting plugin is over the first stage of refactoring. (#5014) This resulted in the following breaking changes:

  • The main instance's sort function was moved to the plugin
  • The sortIndex property was removed from Handsontable's main instance
  • Moved the sortColumn and sortOrder properties from the main instance to the plugin
  • The sortOrder property now accepts string values (asc, desc, none), instead of booleans (true, false, undefined)
Changes
  • Added missing type definitions for the Search Plugin. (#5039)
  • Added the Chinese (CN, TW) translations. (#5007, #4923)
  • Added the French translation. (#4777)
  • Added the Spanish (MX) translation. (#4900)
  • Fixed a problem, where an error was being thrown when using the updateSettings method. (#4988)
  • Fixed a problem, where using the TAB key removed some data, when minSpareCols was set to 1. (#4986)
  • Fixed a bug, where an infinite hook loop was being created, when the table was initialized at the bottom of the page. (#4961)
  • Fixed some issues with the CI stability. (#4925)

The corresponding Handsontable Pro version is 3.0.0.

2.0.0

Released on 11th of April, 2018

Breaking changes
  • Rewritten the Search and Custom Borders plugins to ES6. (#4892, #4621)

These plugins will no longer be available from the main Handsontable instance. They will be accessible analogously to other plugins, as hot.getPlugin('search') and hot.getPlugin('customBorders').

Changes
  • Added the beforeContextMenuShow hook, triggered within the Context Menu plugin. (#4973)
  • Fixed problems with disappearing selection handles on mobile devices. (#4943, #4936)
  • Fixed a problem, where clicking on links inside cells was not possible on mobile devices. (#4570)
  • Fixed a bug, where sorting didn't work when filtering was applied (#4170)
  • Fixed a problem with selecting entire columns, when multiple column header levels are declared. Mostly visible with Handsontable Pro's Nested Headers plugin. (#4951)
  • Fixed a problem, where the Context Menu was too narrow for its contents. (#4933)
  • Modified the look of the fill handle. (#4921)
  • Fixed a bug, where pressing ENTER multiple times on a merged cell at the bottom of the table was not working properly. (#4915)
  • Fixed a problem with highlighting headers, when selecting entire columns. (#4875)
  • Fixed a bug, where removing the first row of a merged cell sometimes caused an error. (#3473)
  • Added a Russian translation. (#4854)
  • Fixed a bug with handsontable editor headers overlapped the table cells. (#4787)
  • Fixed a problem, where the afterRowMove hook returned improper parameters. (#4444)
  • Fixed a bug, where the afterCreateCol hook returned a wrong amount parameter. (#4210)
  • Fixed problems with alignment and the undo/redo functionality. (#3319)
  • Fixed a problem, where selecting and entire merged cell with non-contiguous selections did not highlight that merged cell. (#4860)
  • Fixed a problem with the jsfiddle link in the issue templates. (#4983)
  • Updated the pull request templates. (#4957)
  • Added helpers for console.log, console.warn etc due to IE compatibility. (#4924)
  • Fixed a problem, where scrolling the table on Chrome on a retina display created empty spaces. (#4498)

The corresponding Handsontable Pro version is 2.0.0.

0.38.1

Released on 20th of March, 2018

Changes
  • 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.

0.38.0

Released on 14th of March, 2018

Breaking changes:
  • We removed the mobile editor from the repository. After this version, a standard editor will be used when using mobile devices. (#4911)
Changes
  • 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.

0.37.0

Released on 1st of March, 2018

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)
Changes
  • 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.

0.36.0

Released on 16th of February, 2018

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:

New API
  • 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.
Backward-incompatible 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);
Backward-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.

Changes
  • 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.

0.35.1

Released on 25th of January, 2018

Changes:
  • 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. (#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.

0.35.0

Released on 6th of December, 2017

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:

Other changes:
  • 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)

The corresponding Handsontable Pro version is 1.15.0.

0.34.5

Released on 12th of October, 2017

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

The corresponding Handsontable Pro version is 1.14.3.

0.34.4

Released on 13th of September, 2017

Changes:
  • Added a missing moment import. (#4514)

The corresponding Handsontable Pro version is 1.14.2.

0.34.3

Released on 12th of September, 2017

Changes:
  • 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.

0.34.2

Released on 12th of September, 2017

Changes:
  • 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)

The corresponding Handsontable Pro version is 1.14.0.

0.34.1

Released on 6th of September, 2017

Changes:
  • Fixed a problem with hot-table not being initialized properly. (#4494)
  • Fixed a problem with Handsontable throwing an error when moving the cursor outside the table. (#4443)
  • Updated the setDataAtCell TypeScript definition. (#4481)
  • Updated the Bootstrap css files. (#4337)

The corresponding Handsontable Pro version is 1.13.1.

0.34.0

Released on 2nd of August, 2017

Breaking changes:
  • We've unified the types of coordinates passed to these plugin hooks: beforeGetCellMeta, afterGetCellMeta, afterSetCellMeta. Now they'll be operating on visual table coordinates (so do the getCellMeta and setCellMeta methods). Please make sure you update your hook callbacks to use them properly. (#4409)
Changes:
  • Updated the typescript definitions to match changes in the Filters plugin. (#4429)
  • Added a parameter to the afterUpdateSettings hook, carrying information about the settings object passed to the updateSettings method. (#4413)
  • Fixed the removeCellMeta method. Previously it did not work properly with row and column order modifications. (#4410)
  • Fixed a problem where an error was thrown when using setCopyableText before selecting anything in the table. (#4390)
  • Updated the documentation for the Comments plugin. (#4379)
  • Fixed testing setup not working on Windows. (#4378)
  • Updated the Travis config to run hot-builder tests along with Handsontable tests. (#4372)

The corresponding Handsontable Pro version is 1.13.0.

0.33.0

Released on 11th of July, 2017

Breaking changes:
  • We've refactored the Copy/Paste plugin and removed the ZeroClipboard dependency. Please make sure it works as expected in your setup before updating to this version.
  • Some of the Filters plugin's API methods has changed. Please check #4358 for detailed information.
Changes:
  • Fixed a problem with a missing method import. (#4367)
  • Added a new config option for the Comments plugin (displayDelay), allowing to customize the delay for showing the comment box. (#4323)
  • Fixed a problem, where using the Autofill option upwards with a group of cells gave unexpected results. (#4298)
  • Updated the Handsontable dependencies. (#4280)
  • Fixed an issue with different gap sizes in the dropdown menu for Firefox and Chrome. (#2832)
  • Updated documentation for some methods in our API. (#4191, #4032, #3895, #3876, #3170, #3025, #2298, #2259)
  • Added a helper for template literals. (#4354)
  • Updated our ESlint rules list. (#4366)

The corresponding Handsontable Pro version is 1.12.0.

0.32.0

Released on 31th of May, 2017

Breaking changes:
  • Migration from Traceur to Babel. (#4070)

We're now using Babel to transpile our code. That means that we had to make breaking changes, please take a look if you have to make some adjustments in your implementation before moving to this version.

  • The Bootstrap CSS files were merged to Handsontable's default CSS.
  • The /plugins directory was deleted (with the "removeRow plugin" included)
  • Some global variables were reorganized and/or removed. Please take a look.


Validators
WasIs
Handsontable.AutocompleteValidatorHandsontable.validators.AutocompleteValidator
Handsontable.AutocompleteValidatorHandsontable.validators.AutocompleteValidator
Handsontable.DateValidatorHandsontable.validators.DateValidator
Handsontable.NumericValidatorHandsontable.validators.NumericValidator
Handsontable.TimeValidatorHandsontable.validators.TimeValidator
Renderers
WasIs
Handsontable.AutocompleteRendererHandsontable.renderers.AutocompleteRenderer
Handsontable.BaseRendererHandsontable.renderers.BaseRenderer
Handsontable.CheckboxRendererHandsontable.renderers.CheckboxRenderer
Handsontable.HtmlRendererHandsontable.renderers.HtmlRenderer
Handsontable.NumericRendererHandsontable.renderers.NumericRenderer
Handsontable.PasswordRendererHandsontable.renderers.PasswordRenderer
Handsontable.TextRendererHandsontable.renderers.TextRenderer
Cell types
WasIs
Handsontable.AutocompleteCellHandsontable.cellTypes.autocomplete
Handsontable.CheckboxCellHandsontable.cellTypes.checkbox
Handsontable.DateCellHandsontable.cellTypes.date
Handsontable.DropdownCellHandsontable.cellTypes.dropdown
Handsontable.HandsontableCellHandsontable.cellTypes.handsontable
Handsontable.NumericCellHandsontable.cellTypes.numeric
Handsontable.PasswordCellHandsontable.cellTypes.password
Handsontable.TextCellHandsontable.cellTypes.text
Handsontable.TimeCellHandsontable.cellTypes.time
Plugins
WasIs
Handsontable.CustomBordersHandsontable.plugins.CustomBorders
Handsontable.MergeCellsHandsontable.plugins.MergeCells
Handsontable.SearchHandsontable.plugins.Search
Handsontable.UndoRedoHandsontable.plugins.UndoRedo
Helpers
WasIs
Handsontable.DomHandsontable.dom
Other
WasIs
Handsontable.EditorManager(not available)
Handsontable.EditorState(not available)
Handsontable.SearchCellDecorator(not available)
Handsontable.TableView(not available)
Handsontable.cellLookup(not available)
Handsontable.eventManagerHandsontable.EventManager
Handsontable.utils(not available)
  • Changed the way in which custom cell types are being registered. (#4254)

We improved the public API to give developers an ability to register cell behaviors and types separately. We strongly recommend to use a registered alias in Handsontable settings to increase the code maintainability.

An example on how to add a custom editor/renderer/validator:

Handsontable.cellTypes.registerCellType('my-custom-select', {
  editor: MyCustomSelectEditor,
  renderer: MyCustomSelectRenderer,
  validator: MyCustomSelectValidator,
});

Handsontable.validators.registerValidator('credit-card', function(query, callback) {
  callback(/* passed `true` or `false` depending on a query value */);
});

new Handsontable(document.getElementById('element'), {
  data: data,
  columns: [{
    data: 'id',
    type: 'my-custom-select'
  }, {
    data: 'name',
    renderer: 'my-custom-select'
  }, {
    data: 'cardNumber',
    validator: 'credit-card'
  }]
})
Changes:
  • Fixed documentation for the autoRowSize config option. (#4267)
  • Fixed documentation for the cells config option. (#4185)
  • Fixed a problem with the maxRows functionality. (#4180)
  • Fixed a problem with the maxCols functionality. (#4156)
  • Fixed a bug, where passing integer values to a dropdown caused the cell to be marked as invalid. (#4143)
  • Added the TypeScript definitions to the repository. (#4112)
  • Fixed a bug with getCoords throwing an error when used on non-cell elements. (#4074)
  • Data copied from the table will no longer have a newline at the end. (#3801)
  • Fixed a problem with scrolling on IE9+. (#2350)
  • Fixed a wrong variable in a listener of the mouse wheel event. (#4255)
  • Fixed an issue related to defining a cell metadata for non-existing cells. (#4024)

The corresponding Handsontable Pro version is 1.11.0.

0.32.0-beta2

Released on 24th of May, 2017

Breaking changes:
  • Changed the way in which custom cell types are being registered. (#4254)

As you already know from beta1 release, we have migrated from Traceur to Babel. It required from us to standarize the code so we decided to stop using a Handsontable global variable in our internal projects. As a result, we changed the way of creating custom editors, validators, renderers and their combinations like 'cell types'. In this beta2 release we improved the public API to give developers an ability to register cell behaviors and types separately. We strongly recommend to use a registered alias in Handsontable settings to increase the code maintainability.

An example on how to add a custom editor/renderer/validator:

Handsontable.cellTypes.registerCellType('my-custom-select', {
  editor: MyCustomSelectEditor,
  renderer: MyCustomSelectRenderer,
  validator: MyCustomSelectValidator,
});

Handsontable.validators.registerValidator('credit-card', function(query, callback) {
  callback(/* passed `true` or `false` depending on a query value */);
});

new Handsontable(document.getElementById('element'), {
  data: data,
  columns: [{
    data: 'id',
    type: 'my-custom-select'
  }, {
    data: 'name',
    renderer: 'my-custom-select'
  }, {
    data: 'cardNumber',
    validator: 'credit-card'
  }]
})
Changes:
  • Fixed a wrong variable in a listener of the mouse wheel event. (#4255)
  • Fixed an issue related to defining a cell metadata for non-existing cells. (#4024)

The corresponding Handsontable Pro version is 1.11.0-beta2.

0.32.0-beta1

Released on 17th of May, 2017

Breaking changes:
  • Migration from Traceur to Babel. (#4070)

We're now using Babel to transpile our code. That means that we had to make breaking changes, please take a look if you have to make some adjustments in your implementation before moving to this version.

  • The Bootstrap CSS files were merged to Handsontable's default CSS.
  • The /plugins directory was deleted (with the "removeRow plugin" included)
  • Some global variables were reorganized and/or removed. Please take a look.


Validators
WasIs
Handsontable.AutocompleteValidatorHandsontable.validators.AutocompleteValidator
Handsontable.AutocompleteValidatorHandsontable.validators.AutocompleteValidator
Handsontable.DateValidatorHandsontable.validators.DateValidator
Handsontable.NumericValidatorHandsontable.validators.NumericValidator
Handsontable.TimeValidatorHandsontable.validators.TimeValidator
Renderers
WasIs
Handsontable.AutocompleteRendererHandsontable.renderers.AutocompleteRenderer
Handsontable.BaseRendererHandsontable.renderers.BaseRenderer
Handsontable.CheckboxRendererHandsontable.renderers.CheckboxRenderer
Handsontable.HtmlRendererHandsontable.renderers.HtmlRenderer
Handsontable.NumericRendererHandsontable.renderers.NumericRenderer
Handsontable.PasswordRendererHandsontable.renderers.PasswordRenderer
Handsontable.TextRendererHandsontable.renderers.TextRenderer
Cell types
WasIs
Handsontable.AutocompleteCellHandsontable.cellTypes.autocomplete
Handsontable.CheckboxCellHandsontable.cellTypes.checkbox
Handsontable.DateCellHandsontable.cellTypes.date
Handsontable.DropdownCellHandsontable.cellTypes.dropdown
Handsontable.HandsontableCellHandsontable.cellTypes.handsontable
Handsontable.NumericCellHandsontable.cellTypes.numeric
Handsontable.PasswordCellHandsontable.cellTypes.password
Handsontable.TextCellHandsontable.cellTypes.text
Handsontable.TimeCellHandsontable.cellTypes.time
Plugins
WasIs
Handsontable.CustomBordersHandsontable.plugins.CustomBorders
Handsontable.MergeCellsHandsontable.plugins.MergeCells
Handsontable.SearchHandsontable.plugins.Search
Handsontable.UndoRedoHandsontable.plugins.UndoRedo
Helpers
WasIs
Handsontable.DomHandsontable.dom
Other
WasIs
Handsontable.EditorManager(not available)
Handsontable.EditorState(not available)
Handsontable.SearchCellDecorator(not available)
Handsontable.TableView(not available)
Handsontable.cellLookup(not available)
Handsontable.eventManagerHandsontable.EventManager
Handsontable.utils(not available)
Changes:
  • Fixed documentation for the cells config option. (#4185)
  • Fixed a problem with the maxRows functionality. (#4180)
  • Fixed a problem with the maxCols functionality. (#4156)
  • Fixed a bug, where passing integer values to a dropdown caused the cell to be marked as invalid. (#4143)
  • Added the TypeScript definitions to the repository. (#4112)
  • Fixed a bug with getCoords throwing an error when used on non-cell elements. (#4074)
  • Data copied from the table will no longer have a newline at the end. (#3801)
  • Fixed a problem with scrolling on IE9+. (#2350)

The corresponding Handsontable Pro version is 1.11.0-beta1.

0.31.1

Released on 7th of March, 2017

Changes
  • Fixed a problem where clicking on the Context Menu scrolled the page. (#4092)
  • Added a preventScrolling argument to afterSelection and afterSelectionByProp plugin hooks. (#4091)
  • Fixed a problem with loadData and manualColumnMove. (#4073)
  • Fixed a problem where adding a new row near the top of the table, the page scrolled improperly. (#4071)
  • Added new plugin hooks for cut/copy/paste. (#4068)
  • Fixed a problem where the column properties were overwritten when using the updateSettings method. (#4029)
  • Fixed a problem with header highlighting after the selection was changed. (#4025)
  • Fixed a 1px misalignment of the cell selection. (#4011)
  • Fixed an issue where plugin hooks were not being overwritten when assigning them through the updateSettings method. (#3343)
  • Fixed a problem where changing the text alignment didn't call the afterSetCellMeta plugin hook. (#3087)
  • Added the beforeOnCellMouseOut and afterOnCellMouseOut plugin hooks. (#2744)
  • Fixed a memory leak in the editor class. (#2605)

The corresponding Handsontable Pro version is 1.10.1.

0.31.0

Released on 14th of February, 2017

Backward incompatible changes Changes
  • Fixed a problem where the manualRowMove option performed the move action even when the user clicked once on a header. (#4060)
  • Fixed a problem with improper behavior of compare functions passed to the columnSorting plugin. (#4042)
  • Fixed a bug where the column header with wasn't adjusting properly to the text within. (#4034)
  • Fixed a problem where calling updateSettings would misalign the table overlays. (#4015)
  • Fixed a bug where the scrollbar height was not calculated properly when the rows had different heights. (#4000)
  • Updated the comments plugin with the missing functions. (#3994)
  • Fixed a bug where using the checkbox-typed cells caused a problem with performance. (#3881)
  • Fixed a problem with the persistentState plugin which was broken since version 0.28.0. (#3858)
  • Fixed a problem with the manualRowMove inconsistencies when using the loadData method. (#3849)
  • Added a sortEmptyCells option to the columnSorting plugin. (#3764)
  • Fixed a memory leak in the Touch Scroll feature. (#3646)
  • Changed the default sorting algorithm from Array.sort to merge sort, as the former was unstable. (#3606)
  • Fixed a problem with removing the htInvalid css classname.

The corresponding Handsontable Pro version is 1.10.0.

0.30.1

Released on 17th of January, 2017

Changes
  • Fixed cell meta properties replication after inserting new row at the bottom of table. (#3989, #2114)

The corresponding Handsontable Pro version is 1.9.1.

0.30.0

Released on 11th of January, 2017

Breaking Changes
  • The AutoFill plugin was refactored, thus introducing some breaking changes into the API. If your implementation uses the previous autoFill structure, please check if it everything works as expected. (#3257)
  • The setCellMeta method was changed to work on visual row and column indexes, analogously to the getCellMeta method. If your implementation utilizes it, please check if you need to tweak it (it may cause issues especially when using it with the columnSorting, manualRowMove and manualColumnMove plugins).
Changes
  • Fixed an issue with Handsontable throwing errors after its instance was destroyed and recreated. (#3974)
  • Fixed a problem where the autocomplete editor validated text positively, regardless of the letter case. (#3962)
  • Fixed a problem where autocomplete didn't work when the user dragged the fill handle to the table headers. (#3956)
  • Fixed a bug where sorting a column made editing time-typed cells inconsistent. (#3953)
  • Fixed a problem where changing the readOnly status of a cell via the Context Menu didn't trigger the afterSetCellMeta hook. (#3907)
  • Fixed an issue where afterSetCellMeta was not triggered when using the Comments plugin. (#3899)
  • Fixed a bug, where the numeric-typed cells would delete the input text, when it was negatively validated. (#3880)
  • Fixed a bug where the Autocomplete plugin's fill handle was missing after editing numeric-typed cells. (#3877)
  • Fixed a problem where sometimes the dropdown editor used a previously assigned value. (#3759)
  • Fixed a bug where the afterChange hook used a wrong row number (#3573)
  • Fixed a problem where the Autofill plugin did not work properly while being used on multiple Handsontable instances. (#3257)
  • Added a helper with functionality corresponding to ES 2016's Array.includes. It's available at Handsontable.helper.arrayIncludes. (#3984)
  • Updated a misleading documentation entry concerning the recently refactored Comments plugin. (#3944)

The corresponding Handsontable Pro version is 1.9.0.

0.29.2

Released on 21st of December, 2016

Changes
  • Fix various maxRows option issues. (#3803)

The corresponding Handsontable Pro version is 1.8.2.

0.29.1

Released on 13th of December, 2016

Changes
  • Fixed a problem with Handsontable running in an iframe on IE. (#3938)
  • Fixed a problem with sorting triggered a highlight from the manualColumnMove plugin. (#3863)
  • Fixed a problem when Handsontable instance with data schema declared sometimes showed an empty editor while editing a cell. (#3840)
  • Fixed an header/fixed rows (or columns) alignment issue on IE9. (#2896)
  • Fixed a bug where cell borders disappeared after selection on IE9. (#2411)
  • Updated the issue reporting template. (#3874)

The corresponding Handsontable Pro version is 1.8.1.

0.29.0

Released on 8th of November, 2016

Breaking changes
  • We've added a new cell property: allowHtml. If you set it to true, the autocomplete and dropdown cells will be able to render HTML elements correctly (as it was before). However, if you set it to false, no HTML will be rendered. This change is meant to decrease Handsontable's XSS vulnerability. (#3761) The allowHtml property defaults to false, so please make sure if you have to specify it in your implementation!
  • We've refactored the Comments plugin, which caused some API and visual changes. Please see our documentation and check if you need to make some changes in your implementation.
Changes
  • Fixed a problem with inconsistent size of the "helper" in manualColumnMove. (#3830)
  • Fixed an issue with a flickering cursor over the Context Menu. (#3813)
  • Fixed problems with tests on macOS Sierra. (#3769)
  • Fixed a problem with exceptions being thrown on Internet Explorer. (#3623)
  • Fixed a problem with the select tag used in headers on Firefox and IE. (#3555)
  • Fixed a problem with some cases of wrong date recognition. (#3471)
  • Fixed a problem with the setDirection method of WalkontableCellRange. (#2467)
  • Fixed an issue with row header flickering while scrolling the table. (#3850)
  • Fixed a problem with sorting the DD/MM/YYYY date format. (#3588)
  • Fixed an issue with error being thrown after disabling the Context Menu plugin. (#3140)
  • Fixed a problem with malfunctioning dropdown editor on Internet Explorer. (#3380)
  • Fixed a problem with updating the fixedColumnsLeft and fixedRowsTop options. (#3857)
  • Fixed a problem with the z-index property in the Comments plugin. (#1792)
  • Fixed a problem with the Comments plugin and html-typed cells. (#2692)

The corresponding Handsontable Pro version is 1.8.0.

0.28.4

Released on 13th of October, 2016

Changes
  • Fixed a problem with pasting data when manualColumnMove was enabled. (#3811)
  • Fixed a problem with the manualColumnMove indicator snapping to the row headers. (#3806)
  • Fixed a problem where populating data sometimes caused an infinite loop. (#3802)
  • Fixed issues with updateSettings used with manualColumnMove. (#3800)
  • Fixed an issue with using dataSchema when no data was provided. (#3714)
  • Added a possibility to scroll the table on the "corner" overlays. (#3686)
  • Partially fixed the problem with afterScrollVertically triggering too many times - still needs further tweaking. (#3601)
  • Fixed a problem with editor being displayed a pixel too high, when there were no column headers defined. (#3185)
  • Fixed a problem with a missing fill handle after editing autocomplete-typed cells. (#2230)
  • Fixed an issue where copy-pasting values in numeric-typed cells between different currencies caused inconsistencies. (#2166)

The corresponding Handsontable Pro version is 1.7.4.

0.28.3

Released on 5th of October, 2016

Changes
  • Fixed a problem with data editing after using the manualRowMove feature. (#3791)

The corresponding Handsontable Pro version is 1.7.3.

0.28.2

Released on 4th of October, 2016

Changes
  • Fixed an issue with editing data when nested column mappings (e.g. name.first) was declared. (#3786)
  • Added issue and pull request templates.

The corresponding Handsontable Pro version is 1.7.2.

0.28.1

Released on 29th of September, 2016

Changes
  • Added a allowSampleDuplicates option for the autoRowSize and autoColumnSize plugins. It fixed a problem with wrong row height / column width calculation when the table contained duplicate data. (#3778)
  • Fixed a problem with updateSettings resetting manualColumnMove and manualRowMove plugin settings. (#3774)
  • Fixed an issue where the guide for the manualColumnMove plugin had improper size. (#3772)
  • Fixed a problem with multi-layered column header selection. (#3754)
  • Fixed the mobile cell editor. (#3750)
  • Introduced a slight change in the sorting mechanism - the sorting method is bound to a plugin hook instead of a event. (#1338)
  • Removed the information about empty being passed as a source argument in the afterChange hook from the documentation.

0.28.0

Released on 15th of September, 2016

Breaking changes
  • The afterCreateRow and afterCreateCol changes their argument types (the third argument used to be boolean, now it has to be string).
  • We've refactored the Manual Column Move plugin to allow the user to move multiple columns at once. This made some backward-incompatible changes. For example the beforeColumnMove and afterColumnMove hooks had their arguments changed.
  • When both manualColumnMove and manualColumnFreeze plugins are enabled, it's now impossible to move columns from, to and inside the fixed part.

After updating to this version, please check if any changes need to made in your implementation.

Changes
  • Fixed a problem where some of the plugin hooks were not declarable in the Handsontable initialization object. (#3158)
  • Fixed a problem with providing numeric values as the checked/unchecked templates for the checkbox renderer. (#1539)

0.27.0

Released on 2nd of September, 2016

Breaking changes
  • We've refactored the Manual Row Move plugin to allow the user to move multiple rows at once. This made some backward-incompatible changes. For example the beforeRowMove and afterRowMove hooks had their arguments changed. After updating to this version, please check if any changes need to made in your implementation.
  • We've added an additional default column/row header styling - now the column and row header corresponding to the selected cell will be rendered with a darker background. Please have that in mind when styling your Handsontable implementations.
Changes
  • Fixed a bug where column stretching wouldn't work properly in some specific cases. (#3732)
  • Fixed a bug, where the user was unable to check/unckeck all checkboxes in a column. (#3616)
  • Fixed a problem with closing the Context Menu by clicking under it. (#3469)
  • Disabled the custom Context Menu for Handsontable editors. (#3440)
  • Fixed a problem when the user was unable to close the menu by using the ESC key. (#3391)
  • Fixed a bug where Handsontable threw an error when its autocomplete editor used a numeric-typed suggestion list. (#2879)
  • Added the beforeUndo, afterUndo, beforeRedo and afterRedo plugin hooks. (#1587)

0.26.1

Released on 27th of July, 2016

Changes
  • Improved descriptions in the API reference at (https://docs.handsontable.com)
  • Added a support for defining columns dynamically. From now on it is possible to do that by using a function. (3643)
  • Fixed a bug in which after switching from Numeral.js to NumbroJS the old dependency still existed in the source code. (3620)
Help us improve this page

0.26.0

Released on 27th of June, 2016

Backward incompatible changes
  • Changed one of our core dependencies. We're using Numbro instead of Numeral.js. If you're including our dependencies independently, please update your setup. (3487)

Changes
  • Fixed a bug where using both columnSorting and autoRowSize crashed the table. (3580)
  • Fixed problems with selection on cells containing a TABLE element. (3565)
  • Fixed issues with setting the readOnly property on checkbox-typed columns. (3562)
  • Fixed an issue with propToCol returning wrong values when the manualColumnMove plugin was enabled. (3551)
  • Fixed an issue where the Remove Row option was disabled in the context menu when only one row was present. (3541)
  • Fixed a bug where columnSorting wasn't working properly with large mixed data sets. (2770)
  • Fixed a bug where hovering the cursor over Context Menu would scroll the page down. (3435)

0.25.1

Released on 6th of June, 2016

Changes
  • Fixed problem with the range selection after right-clicking the headers. (3543)
  • Fixed alignment issues for checkbox and numeric cell types. (3532)
  • Fixed an error thrown when using jQuery. (3403)

0.25.0

Released on 25th of May, 2016

Changes
  • Fixed a problem with text selection in an open editor. (3519)
  • Fixed a bug with a wrong context being passed in Autocomplete Editor. (3514)
  • Fixed a bug where right-clicking the column headers would not always select the entire columns. (3445)
  • Fixed a bug with the Text Editor size wasn't always appropriate for its contents. (3394)
  • Fixed a bug when clicking the column headers on a previously scrolled table caused an exception. (3354)
  • Fixed problems with handle and guide sizes in ManualRowMove, ManualColumnMove, ManualRowResize and ManualColumnResize. (3287 & 3480)
  • Fixed a problem with Handsontable overwriting the Object prototype. (3059)
  • Updated [moment](https://github.com/moment/moment) and [Pikaday](https://github.com/dbushell/Pikaday) to prevent issues with the date picker. (2812)
  • New feature: useHeaders option for the AutoColumnSize plugin, if set to true, takes the column header width into calculation. (3475)
  • New feature: the autoRowSize option resizes both rows and column headers. (3480)
  • New feature: the allowEmpty property can be used in the Autocomplete Editor. (3458)

0.24.3

Released on 28th of April, 2016

Changes
  • Fixed problems with checkbox templates. (#3426)
  • Fixed problem with an error being thrown when creating new columns in certain situations. (#3420)
  • Added a method to scroll the table without selecting cells. (#3419)
  • Fixed issues with cached data length, causing the table to render incorrectly. (#3416)
  • Fix problem with Context Menu's hidden method. (#3412)
  • Fix problems with time validator throwing a warning. (#3398)
  • Fixed a bug where removing all cells in a column when a whole column was selected crashed the table. (#3395)
  • Fixed a bug where the table crashed after pasting a large number of elements when manualColumnMove was enabled. (#3385)
  • Fixed tests for the ISO8601-compatible date formats. (#3375)
  • Moved the afterRender hook to fire after the whole rendering process ended. (#3306)
  • Removed some unneeded code for IE8 compatibility. (#3277)

0.24.2

Released on 11th of April, 2016

Changes
  • Added delegation for the checkbox listeners. (#3211)
  • New feature: if you select multiple columns/rows and resize one of them - each of them will get the new width/height. (#3371)
  • Fixed problem with date picker automatically changing the time to 12:00. (#3360)
  • Fixed problem with date cells, where the table would offset the specified date by the hour difference of the timezone, sometimes resulting in previous day being saved to the dataset. (#3338)
  • Moved the afterRender hook to fire after all the rendering-connected operations are finished. (#3306)
  • Modified the autocomplete/dropdown editor, so it opens upwards if there is not enough space below the edited cell. (#3210)
  • Fixed problem with object datasets containing keys reserved for the Array prototype (like length, for example).. (#3145)
  • Fixed problem with stopImmediatePropagation not blocking the CTRL+X action. (#3011)
  • Fixed problem with autofill writing data to row headers. (#3384)
  • Added the beforeRenderer hook. (#3389)
  • Added Handsontable to npm, jspm and NuGet.

0.24.1

Released on 16th of March, 2016

Changes
  • Fixed a bug from 0.24.0 where updateSettings broke the table's width and height. (#3329)

0.24.0

Released on 15th of March, 2016

Backward incompatible change
  • Moved the manualColumnPositions and manualRowPositions array from the main HOT instance object to the plugins (#3281), and renamed it to:
    hot.getPlugin('manualColumnMove').columnPositions;
    
    hot.getPlugin('manualRowMove').rowPositions;
    

Changes
  • Added a possibility to define a custom sorting function. For more details, see sortFunction in our docs. (#3308)
  • Fixed a problem with an error being thrown when updating the columns property via updateSettings. (#3297)
  • Fixed a problem with a wrong column being removed while using the manual column move plugin and undo/redo issues connected with it. (#3281)
  • Implemented a cache for getting a length of the dataset. (#3275)
  • Fixed a problem with updating the table height braking the table. (#3255)
  • Added the time cell type and time validator. (#3254)
  • Fixed a glitch when the column-moving handle was flickering. (#3134)
  • Fixed a bug with propToCol method returned wrong values after moving the columns. (#3091)
  • Fixed a problem with updating the stretchH property. (#2719)
  • Added a separate sorting algorithm for the numeric cell type. (#3318)

0.23.0

Released on 19th of February, 2016

Backward incompatible change
  • Refactored the observeChanges plugin. We have removed properties hot.observedData and hot.observeChangesActive. (#3213)
  • Added an allowEmpty option (true by default) which unifies the validators' behavior. Now both numeric and date cell types accept empty values. (#2662)
  • Fixed shifting cell meta when user wants to insert a new row or a column. (#1823)

Changes
  • Added a new functionality for the fillHandle option to prevent creating new rows when dragging down the fill handle. (#2874)
  • Fixed a problem with SampleGenerator class which was transforming every value into a string. Because of that the row's height and width were incorrectly calculated. (#3248)
  • Fixed calling the sort method not being reflected in the sort indicator. (#3245)
  • Fixed the maxDate property which specified in datePickerConfig didn't work in Pikaday. (#3225)
  • Fixed AutoColumnSize which wasn't adjusting the columns' width properly when data was pasted into them. (#3223)
  • Fixed the scrollbar that jumped back a few pixels causing a "flickering" effect. (#3204)
  • Fixed updating ContextMenu items by calling updateSettings. (#3191)
  • Fixed the dropdown/context menu issues that caused its wrong rendering when hovered or near the window's edge. (#3125)
  • Fixed an issue with two rows being pasted instead of just one inside the Angular 2 application. (#3123)
  • Fixed null document.activeElement that was causing an error in Internet Explorer. (#2705)
  • Fixed sort indicator showing an incorrect data order. (#2676)

0.22.0

Released on 3th of February, 2016

Backward incompatible change

We're changing the plugin disabling process. Right now it's not available to all plugins, but we'll gradually move towards full consistency.

  • ManualColumnMove
  • ManualColumnResize
  • ManualRowMove
  • ManualRowResize

Before changes:

var hot = new Handsontable(element, {
  manualRowResize: [100, 200]
});

hot.updateSettings({
  manualRowResize: true // This would reset the internal plugin settings, which would result in resetting the row heights.
});

After changes:

var hot = new Handsontable(element, {
  manualRowResize: [100, 200]
});

hot.updateSettings({
  manualRowResize: true // This will NOT reset any previously applied settings.
});

// To reset the plugin to its initial state, pass an empty array or disable plugin by passing `false`
hot.updateSettings({
  manualRowResize: []
});

Related issue: #3150

Before changes:

var hot = new Handsontable(element, {
  columnSorting: {
    column: 2,
    sortOrder: true
  }
});
hot.updateSettings({
  columnSorting: true // This would reset the internal plugin settings, which would result in resetting the sorting state.
});

After changes:

var hot = new Handsontable(element, {
  columnSorting: {
    column: 2,
    sortOrder: true
  }
});

hot.updateSettings({
  columnSorting: true // This will NOT reset any previously applied settings.
});

To reset the plugin to its initial state, you'll need to disable the plugin and enable it again (or simply set a different sorting using the sort method). Related issue: #3173

  • Added backend sorting support. To bind your custom sorting action to the Handsontable UI, you can return false from the beforeColumnSort hook. What it does, is stopping the default sorting process, thus allowing you to implement your own solution. (#3173)
  • Re-added the registerPlugin method, missing from version 0.20.1. (#3167)
  • Fixed issues with manual column resize not working properly when the `stretchH: 'all'` option was enabled. (#3166)
  • Fixed problem with misaligned border of the edited cell in the first row. (#3153)
  • Added rowHeaderWidth and columnHeaderHeight options, which allow resizing of the headers by either providing the width/height as a number, or an array of widths/heights. (#2868)
  • Fixed problem with editing cells with very long content. (#2855)
  • Fixed problem with resizing fixed rows/columns. (#2683)
  • Documentation updates. (#3169)

0.21.0

Released on 20th of January, 2016

  • Backward incompatible change
    The afterValidate hook will provide the visual row indexes, instead of the logical ones. For example, if the first row becomes the seventh row after sorting the table, the afterValidate hook will provide 6 as the row index. To translate the visual row to the logical row, you can use the translateRow method of the columnSorting plugin (#3132).
    var logicalRow = hotInstance.getPlugin('columnSorting').translateRow(row);
  • Added a slight delay to the Context Menu
  • now opening submenus happens after a little timeout. (#3126)
  • Fixed problem with the Context Menu's submenus opening beyond the document, when Context Menu was triggered near the right side of the page. (#3124)
  • Fixed problem with column sorting not working after horizontally scrolling the table. (#3014)
  • Fixed problem with the wrong property being passed to the renderer while rendering the ghost table. (#2830)
  • Fixed problem with null values being added to the spare rows, when using the HTML cell renderer. (#2816)
  • Fixed extremely slow scrolling in Firefox, happening when the Firefox's *smooth scrolling* feature was enabled. (#2520)
  • Made the callback argument for the validateCells method optional. (#933)

0.20.3

Released on 8th of January, 2016

  • Fixed problems with selecting columns between the table overlays. (#3092)
  • Added a preventOverflow config options, which allows a better control over placing Handsontable inside containers. See the issue thread for more details. (#3071)
  • Fixed issues with keyboard navigation, when the window controls the table's scrollbars. (#3070)
  • Fixed problems with column stretching, when Handsontable was placed inside a narrow container. (#3062)
  • Fixed problems with inserting and removing rows, while the maxRows parameter was defined. (#2928)
  • Fixed problems with overlays getting misaligned after removing rows.
  • Added a samplingRatio parameter for the autoColumnSize and autoRowSize options. It overrides the default number of column (row) entries being sampled to estimate the column widths (row heights). It can be used, when you encounter column width changing after sorting the data.

0.20.2

Released on 4th of December, 2015

  • Fixed a bug with the clone method, which did not allow to clone an object with properties with false values (#3030)
  • Fixed a problem with context menu not recognizing the proper direction to open (#3015)
  • Fixed a problem with the afterScrollVertically hook firing regardless of the scrolling direction
  • Updated the documentation for the Core methods, options and hooks