What's new
Before updating DHTMLX to the latest version, please check the Migration to Newer Versions guide to avoid possible breakdowns.
Version 9.4.2
Released on November 2, 2026
Updates
-
Calendar. Space selects a date, a month or a year, as Enter does (WCAG 2.1.1).
-
Combobox. While the list is open, the input tells a screen reader which option is highlighted, so the option is announced as the user moves through the list with the arrow keys (WCAG 4.1.2).
-
Form. Accessible names of the form and its controls:
- Every control is named by one rule: the new
ariaLabelproperty of the control, otherwise thelabel(also withhiddenLabel), otherwise the visible text of the control (WCAG 1.3.1, WCAG 2.5.3, WCAG 4.1.2). - The form is named by the new
ariaLabelproperty, otherwise by itstitle. - Generated names such as "type text" or "select color" are no longer used, and
helpMessageis announced as the description of a control, not as its name. - A checkbox group and a radio group are announced as named groups.
- Every control is named by one rule: the new
-
Form. States and errors:
- A toggle reports its pressed state (WCAG 4.1.2).
- A control in the error state is reported as invalid, and its error message is announced as its description (WCAG 3.3.1).
-
Form. Colorpicker, Datepicker and Timepicker:
- The colorpicker field reports that it opens a palette and whether the palette is open (WCAG 4.1.2).
- → moves focus to the selected color, the selected date or the hour input; after a choice focus returns to the field (WCAG 2.1.1, WCAG 2.4.3).
-
Form. Avatar:
- The upload and remove controls are reachable from the keyboard and are shown while the field has focus (WCAG 2.1.1).
- The remove button has a name that can be translated through the locale (WCAG 4.1.2).
-
List. Every option has an element id, so the option can be referenced from outside the list, for example, by the input of a combo box.
-
Toolbar/Sidebar. A
menuItemcontrol with nested items is announced as a button that opens a menu, and it reports whether its menu is open. The top-level items of the Menu bar keep the menu item role (WCAG 4.1.2). -
Toolbar/Sidebar/Ribbon/Menu. Enter and Space on a control that opens a menu move focus to the first item of the menu, and ↑ on a control whose menu opens below it moves focus to the last item (WCAG 2.1.1, WCAG 2.4.3).
Fixes
- Calendar. Fixed a script error (
Cannot read properties of undefined) that occurred when a calendar was destroyed right after its value had been set - Calendar. Fixed the arrow keys scrolling the page while moving between dates
- Colorpicker. Fixed a script error (
Cannot read properties of null) that occurred when a colorpicker was destroyed right after its value had been set - Combobox. Fixed a script error (
Cannot read properties of undefined) that occurred when theclear(),focus()orblur()method was called before the combobox was rendered - ContextMenu. Fixed an issue where the first menu item got stuck when selected using the mouse
- Form. Fixed a script error that occurred when a form with the Colorpicker, Datepicker or Timepicker control was destroyed or rebuilt right after the value of the control had been set
- Form. Fixed Enter not working on the buttons inside the popup of the Colorpicker, Datepicker and Timepicker fields
- Form. Fixed the keyboard focus being lost after a choice in the popup of the Colorpicker, Datepicker and Timepicker fields
- Form. Fixed Tab leaving the page with the popup of the Colorpicker, Datepicker or Timepicker field still open
- Form. Fixed Enter not applying the value typed in an editable Colorpicker, Datepicker or Timepicker field
- Layout. Fixed a script error (
Cannot set properties of null) that occurred when a layout attached to a popup or to another widget was destroyed before it had been rendered - Timepicker. Fixed a script error (
Cannot read properties of null) that occurred when a timepicker was destroyed right after its value had been set
Version 9.4.1
Released on October 26, 2026
Fixes
- Tabbar. Fixed the issue where hiding a nested Layout cell during a tab switch caused a TypeError (
Cannot set properties of null) and left the tab blank when reopened
Version 9.4
Released on October 22, 2026
New functionality
Calendar
- The ability to add a toolbar with the Clear, Today and Timepicker controls into the calendar
- new Calendar configuration property:
controls
- new Calendar configuration property:
Chart
- The ability to use two value scales in one chart, each with its own dimension, and to bind a series to the scale its values are measured against
- The ability to build several independent stacks in one chart, one per value scale or several named groups drawn side by side
- updated property of the Chart
seriesconfiguration object:stacked, which takes the name of a stack group besides a boolean
- updated property of the Chart
- The ability to display the total values of stacked bars at the end of each bar of a Bar or X-Bar chart and the total value of a Donut chart in its center
- new Chart configuration property:
total
- new Chart configuration property:
- The ability to set the color of each bar dynamically, based on its data item, in a Bar or X-Bar chart
- updated properties of the Chart
seriesconfiguration object:fillandcolor, which take a callback function besides a string
- updated properties of the Chart
DataCollection/TreeCollection
- The ability to get the position of an item among the visible ones
- new DataCollection method:
getVisibleIndex() - new TreeCollection method:
getVisibleIndex()
- new DataCollection method:
Grid
- The ability to set an individual height for each row of the header/footer, including the "auto" value that adjusts a row to its content (PRO version)
- updated Grid configuration properties:
headerRowHeightandfooterRowHeight
- updated Grid configuration properties:
- Group counters with the possibility to define the text rendered next to the group name and to keep the groups that are left with no rows after filtering (PRO version)
- The ability to define the options of a header/footer filter manually instead of building them from the column data
- new property of the
filterConfigobject of selectFilter and comboFilter:options
- new property of the
Layout
- The ability to render HTML content or a DHTMLX widget in the header of a cell
- updated Layout cell configuration property:
header, which takes a callback function besides a string
- updated Layout cell configuration property:
Tabbar
- The ability to render HTML content in the titles of tabs, for example, an icon or a badge next to the name of a tab
- new Tabbar configuration property:
tabTemplate
- new Tabbar configuration property:
Accessibility
- The ability to set the accessible name of a widget, which a screen reader announces to the user, with the new
ariaLabelconfiguration property of the following widgets:- Combobox - names the input of a combo box
- ContextMenu - names a context menu, since its root menu has no control to take a name from
- Grid - names a grid, so that several grids on one page can be told apart
- Menu - names a menu, so that several menus on one page can be told apart
- Ribbon - names a ribbon, so that several ribbons on one page can be told apart
- Sidebar - names a sidebar, so that several sidebars on one page can be told apart
- Toolbar - names a toolbar, so that several toolbars on one page can be told apart
- Window - names a window whose
titleis not descriptive enough or that has no title
For additional information, refer to the Accessibility support and Grid accessibility guides.
Updates
- DataCollection. The
changeId()method returns the new id of the item - DataCollection. The
changeId()method doesn't change the id of an item while the data is grouped. It returns the original id and shows a warning in the browser console - Grid. The
headerAutoHeightandfooterAutoHeightproperties, and the header/footer part ofautoHeight, are ignored for a zone whoseheaderRowHeight/footerRowHeightis set as an array
Accessibility updates
-
Colorpicker. The palette is a single tab stop browsed with the arrow keys, Home and End, and each swatch is named by its color name.
-
Colorpicker/Message/Toolbar/Window. The accessible names generated by the widgets are stored in the locale and can be translated.
-
Grid. Keyboard navigation:
- Tab and Shift + Tab move cell by cell through the header, the body and the footer and leave the grid at its ends, and the arrow keys move within and between these zones whether or not a selection module is enabled.
- In a grid without a footer, Tab from the last body cell leaves the grid.
- Tab in the header and the footer reaches the columns scrolled out of view instead of skipping them.
- Enter, Space and Shift + Enter on a footer cell don't sort the column.
- In the selection and block selection modes, the keyboard focus moves to the cells of the frozen columns.
-
Grid. Screen-reader announcements:
- The new
announce()method sends a message to the live region of the grid, so a screen reader announces a status change without moving focus. - Sorting, filtering, data loading and the range corrections of a numeric editor are announced through the same live region, and the announced texts are translated through the locale.
- The new
-
Toolbar/Menu/Sidebar/Ribbon. Keyboard navigation and accessible names:
- A bar is a single tab stop. The arrow keys, Home and End move between its controls, and menus open and close from the keyboard, returning focus to the control that opened them.
- →, Enter and Space on an entry move focus into its submenu, also when the submenu is already open, for example, after it was opened with the pointer. A context menu takes focus when it opens and returns it to where it was when it closes.
- Two-state and grouped buttons report their state, and a button without text, such as an icon button or a button built from custom HTML, takes its accessible name from its tooltip.
For additional information, refer to the Accessibility support and Grid accessibility guides, and to the Grid Accessibility Conformance Report.
Fixes
- Chart. Fixed the position of the tooltip and of the highlighted grid line for the first point of a Line/Spline/Area chart that has the
"right"scale - Chart. Fixed series being bound to the missing
"left"scale in a chart that declares the"right"value scale instead - Chart. Fixed the
targetValueproperty of the"top"and"right"scales being ignored, and the target lines of the"bottom"and"top"scales being hidden whengrid: falsewas set - Chart. Fixed the
baseLineproperty of a series being checked against theminvalue of another scale and being reset in the original series configuration - ContextMenu. Fixed a closed context menu reopening as an invisible copy and losing the keyboard focus when a handler of the hide event changed the menu entries
- DataCollection. Fixed removing a group row leaving its items behind and the counters of the groups above it short
- DataCollection. Fixed changing the id of an item between adding the item and saving the changes, which produced a second save request for the item
- DataCollection/TreeCollection. Fixed the
avg,minandmaxmethods of thedhx.methodshelper returningNaN,Infinityand-Infinityfor an empty set of items instead ofnull - DataCollection/TreeCollection. Fixed the counter and the aggregated values of a group staying at the values they had when the grouping was applied. They now follow filtering, adding, removing and updating of items, on every level of a nested grouping
- DataCollection/TreeCollection. Fixed the group summary rows (
summary: "top"/summary: "bottom") keeping the aggregates they had before filtering - DataCollection/TreeCollection. Fixed filtering breaking the group structure: a rule that did not match a group row dropped that row and its summary row, leaving the items of the group without a header
- DataCollection/TreeCollection. Fixed a group staying in the collection with a non-zero counter after all its items were filtered out
- DataCollection/TreeCollection. Fixed the group counters not returning to their original values after
resetFilter() - DataCollection/TreeCollection. Fixed a group staying in the collection after all its items were removed
- Grid. Fixed the summaries counting the group rows and the group summary rows as data, which doubled the column and common totals in a grouped grid
- Grid. Fixed the group counters not being recalculated together with the tree structure of the grid
- Grid. Fixed the spans, the CSS classes added with
addCellCss()and the selection of a row being lost after the id of the row was changed viachangeId() - Grid. Fixed the undo/redo actions of the History module referring to the old id of a row after the id was changed via
changeId() - Grid. Fixed the keyboard focus being moved back to the active cell after editing ended, when the focus had already gone to the header, the footer or outside the grid
- Grid. Fixed the
avg,minandmaxsummaries of a grid without rows being calculated asNaN,Infinityand-Infinityinstead ofnull - List/DataView. Fixed the keyboard focus and the selection of an item being lost after the id of the item was changed via
changeId() - List. Fixed the keyboard focus outline of the list and its items not being displayed
- Message. Fixed the alert being declared with the
alertrole instead of thealertdialogone, and an alert without a header having no accessible name - Tabbar. Fixed the back scroll arrow getting stuck in a horizontal or vertical tab bar with many tabs of different sizes, which made it impossible to scroll back to the first tabs
- Tabbar. Fixed the tab bar header collapsing when the
tabAutoWidthproperty was used in the"left"/"right"mode or thetabAutoHeightproperty in the"top"/"bottom"mode - Tabbar. Fixed a script error in the top and bottom modes when a tab had no
tabproperty - Tabbar. Added the missing
forEach()method to theITabbarTypeScript interface - Tree. Fixed the keyboard focus and the selection of an item being lost after the id of the item was changed via
changeId() - TreeCollection. Fixed filtering in an ungrouped tree: it skipped the items which carried a
$groupfield - TreeCollection. Fixed
changeId()detaching the child items of an item from it, also when a filter was applied
New samples
Calendar
Chart
- Chart. Dual axis. Stacked bars and a spline
- Chart. Dual axis. Two line series
- Chart. Dual axis. Grouped bars and a line
- Chart. Dual axis. Area and spline
- Chart. Dual axis. Horizontal bars (X-Bar)
- Chart. Dual axis. A stack on each axis
- Chart. Grouped stacks (plan vs fact)
- Chart. Stacked bar chart. Show total
- Chart. Donut chart. Show total
- Chart. Dynamic colors. Conditional fill by value
- Chart. Dynamic colors. Highlight highest and lowest
- Chart. Dynamic colors. Gradient fill
Grid
- Grid. Flexible header and footer row height
- Grid. Custom options for header filters
- Grid. Group counter after filtering
Layout
- Layout. Cell header with HTML template
- Layout. Cell header with widget
- Layout. Cell headers with widget and HTML template
Tabbar
Version 9.3.12
Released on September 24, 2026
Updates
-
Colorpicker. Palette accessibility:
- The palette is exposed as a list of options, and each swatch is announced by its color name and its selected state (WCAG 1.1.1, WCAG 1.4.1, WCAG 4.1.2).
- The palette is entered with a single Tab press and browsed with the arrow keys, Home and End; focus is kept when the user switches to the custom color view and back.
-
Colorpicker/Message/Toolbar/Window. Localization of accessible names:
- Color names, the palette and its HEX and opacity fields, the dialog buttons of a message, the default toolbar name and the default dialog name moved into the locale system.
- All of them can now be translated through the standard localization configuration.
-
Grid. Keyboard access to the cell surface:
- The grid is entered with a single Tab press, the arrow keys move between cells, and Tab leaves the grid, as the WAI-ARIA Grid pattern specifies (WCAG 2.1.1, WCAG 2.4.3).
- Cells can now be reached with the keyboard in a grid configured without a selection module.
-
Grid. Structure reported to assistive technology:
- The row number column is announced as a row header, and the sort state is reported only for columns that can be sorted (WCAG 1.3.1, WCAG 4.1.2).
- A merged cell reports how many rows and columns it spans.
-
Toolbar/Menu/Sidebar/Ribbon. Keyboard navigation:
- A navigation bar is entered with a single Tab press, and the arrow keys, Home and End move between its controls (WCAG 2.1.1, WCAG 2.4.3).
- Menus open, move and close from the keyboard, and focus returns to the control that opened them.
- Returning to a bar puts focus on the control that was used last.
-
Toolbar/Menu/Sidebar/Ribbon. Names and states of controls:
- Buttons built from custom HTML now expose an accessible name (WCAG 4.1.2, WCAG 2.5.3).
- Two-state buttons report whether they are pressed, both in the bar and in a menu, and mutually exclusive choices are announced as a group (WCAG 1.3.1, WCAG 3.2.4).
-
Window. Dialog focus order and the reported modal state now follow the ARIA dialog pattern.
Fixes
- Grid. Fixed Tab not leaving a grid that has frozen (
leftSplit/rightSplit) columns - Grid. Fixed the focused cell being scrolled one column short of the viewport edge during horizontal keyboard navigation
- Grid. Fixed the focused cell being scrolled behind the footer instead of above it
- Grid. Fixed the doubled focus indicator on a cell that is both focused and selected
- Grid. Fixed cells rendered with
htmlEnablebeing announced as buttons in columns without interactive content - Grid. Corrected the ARIA structure of the grid so that rows and columns are reported reliably, and the focus helpers are no longer exposed as controls
- Grid. Fixed a script error that occurred after closing an inline editor in a grid with column summaries
- Layout. Removed the placeholder accessible name from a layout cell outside
viewsmode - Menu. Fixed the accessible name of a menu popup and stopped menus from being announced as live regions every time they open
- Message. Fixed a misspelled accessible name on a dialog button
Version 9.3.11
Released on September 14, 2026
Updates
-
Grid/Message/Popup. Modal focus trapping and management:
- Implemented focus trapping for all modal windows, message dialogs, and popups compliant with WCAG 2.4.3.
- Opening a modal dialog moves keyboard focus to the first actionable element and keeps it within the dialog boundaries until the dialog closes.
- Closing a dialog restores focus to the previously active cell or trigger element.
-
Grid. Assistive technology support for block selection:
- The Grid exposes the block selection state to screen readers (WCAG 1.3.1, WCAG 4.1.2).
- Selected cell boundaries and multi-cell ranges reflect their
aria-selectedstatus in the accessibility tree, providing real-time feedback during keyboard and pointer selection.
-
Grid. Localization for ARIA labels:
- Moved all hardcoded English accessible names and labels into the locale system.
- Screen reader announcements, button descriptions, and status labels that developers can translate via the standard localization configuration.
-
Grid. Target size improvements for interactive controls:
- Enlarged hit areas for small interactive elements, including column resize handles and removal/action icons.
- Reduced accidental or missed clicks on touch-screen devices, accommodating users with motor precision needs.
For additional information, refer to the Grid accessibility and Grid localization guides.
Fixes
- Grid. Fixed a console error that occurred when starting block selection in numeric columns or number-formatted cell ranges
- Grid. Fixed broken
aria-labelledbyrelationships in sub-rows, eliminating orphaned ID references - Grid. Corrected invalid ARIA attributes and roles, and fixed the
aria-rowindexandaria-rowcountcalculations so that they reflect the overall grid structure, including header rows - Grid. Fixed an issue where inline cell editors lost or failed to expose their accessible names on the first paint and on subsequent data updates
Version 9.3.10
Released on August 19, 2026
Fixes
- Grid. Fixed a script error that occurred when the
markproperty was applied to a hidden column
Version 9.3.9
Released on August 13, 2026
Updates
- DataCollection/TreeCollection. The
parse()andload()methods now reset existing sorting and filtering. Only filters withpermanent: trueare retained and reapplied to the new dataset - Grid. Visual sorting indicators and header filter values are now automatically reset when data is reloaded via
parse()orload()
Fixes
- DataCollection. Fixed inconsistent results in
forEach()andmap()whenupdate()was called from within the callback while sorting was active - Grid. Fixed the duplication of selection overlays on spanned cells when using
selection: "complex" - Grid. Fixed a checkbox click in a sortable column header triggering a sort action
- Grid. Fixed a bug where an
undefinedCSS class was added to cells when using themarkproperty - Grid. Fixed removing a grouped column via its "close" icon starting a column drag action
- Grid. Resolved an issue where
removeAll()cleared header filter inputs but failed to reset the underlying filtering rules - Grid. Fixed multiselect filtering for columns with
editorType: "multiselect"; cells are now correctly matched if any of their values satisfy the filter - Grid. Fixed the export to Excel where Microsoft Excel formatted cells without prefixes incorrectly
- TreeCollection. Fixed an issue where the tree could appear empty after
parse()if a permanent filter was active - TreeCollection. Fixed a bug where items were added twice when inserted into a sorted tree
- TreeCollection. Fixed the
multiproperty of a filtering rule not being passed to thecomparecallback
Version 9.3.8
Released on August 3, 2026
Fixes
- Grid. Fixed the height calculation for rows with
rowspanwhenautoHeight: trueis enabled, ensuring the container expands to fit the entire spanned content - Grid. Resolved an initialization error that occurred when using
autoWidthwith grouped data and an externalTreeCollection
Version 9.3.7
Released on July 29, 2026
Updates
- Grid. Significant performance optimizations: improved FPS and scroll smoothness when handling large datasets due to optimized internal rendering and virtualization logic
Fixes
- Form/Grid. Fixed the issue where the
numberMaskwould reset the value to 0 if it started with a leading zero during editing
Version 9.3.6
Released on July 24, 2026
Fixes
- Form. Fixed the
show()method behavior to prevent overriding flexbox alignment styles with an inlinedisplay: blockproperty - Grid. Fixed the checkbox click interaction in columns with
type: "boolean", ensuring the state toggles correctly on user click
Version 9.3.5
Released on July 1, 2026
Updates
-
Grid. Full WAI-ARIA accessibility support:
- Implemented a comprehensive accessibility layer compliant with WCAG 2.2.
- Added support for
role="grid"androle="treegrid", including proper hierarchical attributes:aria-level,aria-expanded, andaria-rowindex/colindex. - Added descriptive
aria-labelattributes for inline editors, filter controls (input, select, combo), and sort triggers. - Implemented Roving Tabindex and focus sentinels for seamless navigation between the Grid and other page elements.
- Improved screen reader experience by hiding decorative elements (resizers, sort icons, drag ghosts) from the accessibility tree via
aria-hidden.
-
Grid. Advanced keyboard navigation:
- Zone navigation: Introduced three navigable focus zones: Header, Body, and Footer. Use Up/Down arrows or Tab to transition between zones.
- Global shortcuts: Added support for PageUp / PageDown (page-wise movement), Home / End (first/last cell in a row), and Ctrl+Home / Ctrl+End (start/end of the grid).
- Selection and range: Added Shift + navigation keys to extend selection in both
selectionandblockSelectionmodes. - Editing and interaction:
- Added F2 as an alternative to Enter for opening editors.
- Added Space / Enter to toggle boolean (checkbox) cells without opening a text editor.
- Added Delete to clear content in
blockSelectionmode (wheneditable: true).
- Header/Footer operations: Enabled column sorting via Enter / Space and multi-sorting via Shift+Enter. Filters can now be activated and navigated via keyboard.
-
Grid. TreeGrid keyboard patterns:
- Added standard tree navigation: ArrowRight to expand branches/move to children and ArrowLeft to collapse branches/move to parents.
-
Grid. Performance and internal optimization:
- Optimized selection state tracking by switching from $O(n)$ scans to $O(1)$ lookups.
- Implemented caching for derived accessibility properties to maintain high rendering speeds in large datasets.
- Improved focus restoration logic, ensuring focus returns to the correct cell after closing editors or switching zones.
For additional information, refer to Grid accessibility and Keyboard navigation guides.
Fixes
- Grid. Clipboard operations (
copy/paste) when working with frozen columns (leftSplit/rightSplit). - Grid. Row highlighting and dropdown positioning issues within the
bottomSplitarea. - Grid. Improved
:focus-visiblestyling to ensure focus outlines only appear during keyboard interaction. - Tree. A runtime error occurs when removing items in
autoloadmode. - Window. Positioning and calculation errors during drag-and-resize operations on scrolled pages.
Version 9.3.3
Released on June 2, 2026
Fixes
- Grid. Fixed the issue where
comboFilter/selectFilterdid not pull updated values during scrolling or pagination when usinglazyDataProxy - Grid. Fixed the behavior of fixed rows (
topSplit/bottomSplit) in TreeGrid mode: rows now expand/collapse correctly and no longer collapse automatically upon data loading or scrolling
Version 9.3.2
Released on May 12, 2026
Fixes
- Calendar. The calculation of the week number during the transition to summer time (DST) is fixed
- Grid. The issue with incorrect row height after row deletion when using pagination and lazy loading is fixed
- Grid. The styling issue of the
BlockSelectionmodule when using splits (left, right, top, or bottom) is fixed - Grid. The issue where export to XLSX or CSV failed if a configuration object was passed without a URL is fixed
Version 9.3.1
Released on March 26, 2026
Fixes
- Form. The validation issue in the
timePickercontrol with thetimeObjectvalue format when the minute part is less than 10 is fixed - Form. The issue where hiding and showing a form control caused the form title to be positioned incorrectly is fixed
Version 9.3
Released on February 17, 2026
New functionality
- Grid. The ability to specify a flexible configuration for export to the CSV, XLSX, PDF, and PNG formats (PRO version)
- new Grid configuration property:
exportConfig
- new Grid configuration property:
- Grid. A new
dateFiltertype of filter for the column header is added (PRO version) - Grid. The ability to define the position of the footer and frozen rows within the component container (PRO version)
- new Grid configuration property:
footerPosition
- new Grid configuration property:
- Grid. The ability to define the behaviour of a dragged item in the TreeGrid mode (PRO version)
- new Grid configuration property:
dropBehaviour
- new Grid configuration property:
- Tree. The ability to add tooltips for the items
- new Tree configuration property:
tooltip
- new Tree configuration property:
- Window. The ability to set a window to the active state
- new Window method:
setActive()
- new Window method:
Updates
- Chart. Export module. The
pdf()andpng()export functions return a promise of data export - Grid. Export module. The
pdf(),png(),xlsx()andcsv()export functions return a promise of data export - Grid. The functionality of column header filters is updated:
- the
setValue()method (of thegetHeaderFilter()API), can take a Date object or an array of Date[] objects as a parameter - the
valueparameter of the callback functions offilterChangeandbeforeFilterevents can be a Date object or an array of Date[] objects - the parameters of the
customFiltercallback function can be Date objects or arrays of Date[] objects
- the
Fixes
- Grid. The inability to set a single date in the range mode is fixed
- Grid. Performance issues that occurred while filtering large data sets via
inputFilter
New samples
Grid
- Grid. Custom export logic for PDF, PNG, XLSX, CSV
- Grid. Fixed rows positioned at the bottom
- Grid. Footer positioned at the bottom
- Grid (TreeGrid). Drop behaviour
Tree
Window
Version 9.2.8
Released on January 28, 2026
Fixes
- Grid. Enable the ability to use block selection when the editor is open
- Layout. Incorrect resizing of a cell with an attached iframe
Version 9.2.7
Released on January 15, 2026
Fixes
- Grid. Data isn't grouped via the group panel
Version 9.2.6
Released on January 13, 2026
Fixes
- Dataview, Grid, List. The issue with the functionality of the
beforeAddevent during drag-n-drop - Grid. The ability to enable grouping in Grid with
subrowis fixed - Grid. The ability to group a non-existent column without actual grouping is fixed
- Grid. The
comboFilternot updating the options on adding new items or editing the existing ones - Grid. Incorrect behavior of the
comboFilterwith enabled multiselection - Grid. The issue with the custom scroll being duplicated by the system scroll in Firefox on Windows 11
- Grid. On grouping by a column with options, export to CSV/XLSX outputs the option's id instead of the displayed option's value
- Sidebar. The functionality of the
navigationTypeconfiguration option is fixed
Version 9.2.5
Released on November 28, 2025
Updates
- DataCollection. The
beforeAdd,afterAdd,beforeRemove, andafterRemoveevents are updated to include thebatchandindexparameters for handling batch operations
Fixes
- Grid. Improved performance of adding and removing data via the
add()andremove()methods when theadjustconfiguration is enabled - Grid. The issue where the combo filter with enabled
multiselectiondisplayed all options ignoring other active filters is fixed - TreeCollection. The issue where the
itemsproperty of a parent object returned by thegetItem()andfind()methods included a removed child item is fixed
Version 9.2.4
Released on November 17, 2025
Fixes
- Form. The
getValue()method returns an empty string for a Combo option if its ID is specified as 0 (zero) - Grid.
comboFilterdisplays all the options even if itsfilterConfigconfiguration object is initialized without thefilterproperty - Grid. Incorrect date format in an exported Excel file
- Grid. The ability to specify a placeholder in the
inputFiltervia thefilterConfigconfiguration object is added - Tree. Incorrect dropping behavior when the
dropBehavior:siblingproperty is set in the Tree configuration
Version 9.2.3
Released on October 21, 2025
Fixes
- Grid. Performance issues caused by using
comboFilterin the Grid header while a large dataset is loaded - Grid. The issue with the "combobox" editor not closing on pressing the "Enter" button
Version 9.2.2
Released on October 1, 2025
Fixes
- Layout. The error that occurred on clicking the scrollbar in an attached List component
- Grid. Incorrect date format of exported columns with dates in some cases
- Tree. Performance issues in trees with deep nesting structure
Version 9.2.1
Released on September 1, 2025
Fixes
- DragManager. Incorrect determining of dragged items' ids while dragging multiple items
- Form. The
beforeChangeevent behavior in the Input and Textarea controls - Grid. The
BlockSelectionmodule behavior when using several Grids on a page - Grid. The issue with inserting data into inputFilter from the clipboard
- Grid. The parameter that defines the dragged item's drop position relative to the target item is added for the callback of drag-related events
- Grid. The problem with multiselection of rows outside the visible Grid area when the
dragModeoption is enabled - Grid. Displaying of boolean values in the grouped data
- Grid. Processing of invalid data for columns with the
numbertype - Grid. The processing of the grouped invalid data is improved
Version 9.2
Released on July 15, 2025
Review of the release on the blogBreaking changes
This version brings some updates in the use of the export module used for exporting Grid data to an Excel file. Check the Migration guide to keep in step with the latest updates.
New functionality
- Grid. The
RangeSelectionmodule is added to provide functionality for managing range selection in Grid (PRO version)- new Grid configuration property:
rangeSelection - new methods of the
rangeobject:disable(),enable(),getRange(),getRangedCells(),isDisabled(),isRanged(),resetRange(),setRange() - new events of the
rangeobject:afterResetRange,afterSetRange,beforeResetRange,beforeSetRange
- new Grid configuration property:
- Grid. The
BlockSelectionmodule is added to provide functionality for managing block selection in Grid (PRO version)- new Grid configuration property:
blockSelection - new methods of the
blockobject:disable(),enable(),isDisabled() - new events of the
blockobject:afterBlockHandleApply,afterBlockSelectionApply,afterBlockSelectionMove,beforeBlockHandleApply,beforeBlockSelectionApply,beforeBlockSelectionMove,blockHandleMouseDown,blockSelectionEnd,blockSelectionStart,blockSelectionValidate
- new Grid configuration property:
- Grid. The
Clipboardmodule is added to provide functionality for interacting with the clipboard in Grid (PRO version)- new Grid configuration property:
clipboard - new events of the
clipboardobject:afterCopy,afterPaste,beforeCopy,beforePaste,copyError,pasteError
- new Grid configuration property:
- Grid. The
DragPanelmodule is added to provide auxiliary functionality for moving rows in Grid and improve the drag-n-drop visualization (PRO version)- new Grid configuration property:
dragPanel - new events:
dragPanelItemClick,dragPanelItemMouseDown
- new Grid configuration property:
- Grid. The
Historymodule is added to provide functionality for managing the history of actions in Grid, including the Undo/Redo functionality (PRO version)- new Grid configuration property:
history - new methods of the
historyobject:add(),canRedo(),canUndo(),disable(),enable(),isDisabled(),getHistory(),redo(),remove(),removeAll(),undo() - new events of the
historyobject:afterAdd,afterRedo,afterUndo,beforeAdd,beforeRedo,beforeUndo,error
- new Grid configuration property:
- Grid. The
isSelected()method is added for theSelectionmodule to check whether the specified cell is selected
Updates
- Grid. The logic and appearance of the drag-n-drop functionality is improved. Check the related sample
- Grid. The export to Excel functionality is updated. The Json2Excel module is now used for exporting Grid data to Excel. Check the Migration guide for details
- Grid. The
xlsx()method of the Export module gets two new configuration settings:tableName- to set the name of a sheet with grid data in the Excel filedateFormatMask- to set the date format mask for Excel
- Grid. The possibility to use keyboard navigation for selecting ranges of cells. The following shortcut keys and their combinations are available:
| ArrowUp | resets the selected range and moves the focus to the previous vertical cell, setting the initially selected cell if no selection is active |
| ArrowDown | resets the selected range and moves the focus to the next vertical cell, setting the initially selected cell if no selection is active |
| ArrowLeft | resets the selected range and moves the focus to the previous horizontal cell, setting the initially selected cell if no selection is active |
| ArrowRight | resets the selected range and moves the focus to the next horizontal cell, setting the initially selected cell if no selection is active |
| Shift+ArrowUp | extends the selected range from the current initial cell to the previous vertical cell |
| Shift+ArrowDown | extends the selected range from the current initial cell to the next vertical cell |
| Shift+ArrowLeft | extends the selected range from the current initial cell to the previous horizontal cell |
| Shift+ArrowRight | extends the selected range from the current initial cell to the next horizontal cell |
| Ctrl+ArrowUp | resets the selected range and moves the focus to the first vertical cell |
| Ctrl+ArrowDown | resets the selected range and moves the focus to the last vertical cell |
| Ctrl+ArrowLeft | resets the selected range and moves the focus to the first horizontal cell |
| Ctrl+ArrowRight | resets the selected range and moves the focus to the last horizontal cell |
| Ctrl+Shift+ArrowUp | extends the selected range to the first vertical cell |
| Ctrl+Shift+ArrowDown | extends the selected range to the last vertical cell |
| Ctrl+Shift+ArrowLeft | extends the selected range to the first horizontal cell |
| Ctrl+Shift+ArrowRight | extends the selected range to the last horizontal cell |
The following shortcut key and mouse combination is available:
| Shift + click | sets the end cell of the range, extending the selection from the current initial cell |
The following shortcut key is available when the editable mode is set for the Grid component and the BlockSelection module is used in the "range" mode:
| Delete | allows clearing the selected cells |
Fixes
- DragManager. Incorrect determining the position for dropping an element during the Drag&Drop operation (child elements) in the TreeGrid mode
- DragManager. The issue with moving a line to the header/footer area
- DragManager. The problem with determining the position for dropping above the first element
- DragManager. The issue associated with the absence or incorrect definition of the drop position for the default mode
- DragManager. The issue with the
dragInevent (the previous reset state was transmitted) - DragManager. The
dragIn/dragOutevents are optimized (false positives are removed) - Grid. The issue with falsy selection of fixed cells while selecting unfrozen cells
- Grid. The issue with dragging unselected items
- Grid. Sorting of the Date string (ISO) values results in the invalid format error
- Grid. Export. Double quotes in the cell value are escaped in the exported Excel
- Grid. The issue with editor closing and saving the entered value on scrolling the grid
- Grid. The
draggable:falsesetting of a column affects the drag-n-drop of rows - Grid. The error that occurred when the value of the
parentproperty was set as a number
New samples
Grid
- Grid (TreeGrid). DragPanel. Initialization
- Grid. BlockSelection in the "range" mode. Selection with restricted columns
- Grid. BlockSelection. Work with the handle configuration
- Grid. BlockSelection. Styling (custom CSS)
- Grid. Clipboard with notifications (messages)
- Grid. Clipboard. Custom copy/cut/paste for number and date columns
- Grid. Clipboard. Copy/сut/paste between grids with validation
- Grid. Clipboard between two Grids with modifiers
- Grid. Clipboard between Grid and Spreadsheet
- Grid. History. Configuration
- Grid. History. Adding a custom action
Version 9.1.6
Released on June 23, 2025
Fixes
- Chart. The issue with displaying of the Treemap chart with groups
- Grid. The
cellValueparameter of the columntemplateproperty has different values depending on whether a column is editable - Grid. The issue with the tooltip showing in case of a custom HTML content taking the full cell's space
- Grid. The
textareaeditor saves changes made in a cell on closing instead of rendering the initial value
Version 9.1.5
Released on June 5, 2025
Fixes
- DataCollection/TreeCollection. Fixed the
sort()method in thesmartSortingmode when sorting by more than three parameters - Grid. The
multiselect/selecteditor passes the id instead of the value, while exporting data to an .xslx file - Grid. Sorting by the third column disregards the prior two-column sort order
Version 9.1.4
Released on June 3, 2025
Fixes
- Grid. A critical error during cell re-editing after unmounting the component
- Grid. The value is not saved during manual editing of DateEditor
- Grid. The issue with group headers rendering the ids instead of values
- Grid. The localization issue
- Grid. Incorrect displaying of a Japanese (Kanji/Kana) text without spaces in a single cell
- Grid. Issues in the functionality of the
autoHeightconfiguration property - Grid. Incorrect work of the
adjustproperty of a column - Layout. A console error on collapsing the first cell
- TreeCollection. Reloading data after component initialization
Version 9.1.3
Released on April 3, 2025
Fixes
- DataCollection. The issue with XMLDriver failing with string parameters
- Form. Updating the input properties will set the default input width, if a different width value hasn't been specified
- Grid. Incorrect export of values containing CRLF, double quotes and commas to CSV
- Grid. Resizing of columns with the enabled
rightSplitoption hides the resized column - Grid. A script error that occurs on hovering over a group element after going outside the component while dragging a group
- Grid. The column summary isn't calculated if the grid has been initialized in the collapsed mode
Version 9.1.2
Released on March 17, 2025
Fixes
- Chart. The default CSS classes aren't applied to the series of the
splineAreachart type - Combobox. Incorrect calculation of the popup position on filtering options
- Grid. Impossibility to set the left border for the first cells
- Grid. Incorrect displaying of a row dragged by the frozen part
- Grid. The script error that occurred while hovering over a span in the "tree" mode
- TreeCollection. The
movemethod doesn't move child elements of an item between collections - TreeCollection. After moving elements in
_orderthere are duplicates of moved elements
Version 9.1.1
Released on February 24, 2025
Fixes
- Combobox. Adding a new option in the "multiselection" mode opens the popup list
- Form. The problem with updating the value of the
preMessageproperty of the Textarea control - Grid. After editing grouped data with the
adjust:trueoption in the Grid configuration, the adjustable cell width is reset on ungrouping data - Grid. The issue with using a sub-row when the
dhx.scrollViewConfig.enableconfiguration option is set to true - Grid. An error caused by the use of options containing commas in the "combobox" editor
- Grid. Incorrect calculation of the row
autoHeight, if the length of a word in a cell exceeds the column width
Version 9.1
Released on February 18, 2025
Review of the release on the blogBreaking changes
This version brings some updates in the API methods. Check the Migration guide to keep in step with the latest updates.
New functionality
DataCollection/TreeCollection
- The new
getSortingStates()method to get the current state of data sorting (including sorting by multiple columns)
Grid
- Row expander with the possibility to insert any Suite widget or HTML content (PRO version)
- new Grid configuration property:
subRow - new Grid configuration property:
subRowConfig - new method:
getSubRow()
- new Grid configuration property:
- Multi-sorting functionality that allows sorting Grid by several columns (PRO version)
- new Grid configuration property:
multiSort
- new Grid configuration property:
Fixes
- DataCollection/TreeCollection. The
sort()method called without arguments doesn't reset the applied sorting - Grid. Falsy firing of data events on row drag-n-drop
- Grid. The issue with a gap appearing while calculating
autoHeightof a cell - Toolbar. Incorrect menu items positioning
- TreeCollection. The
restoreOrder()method doesn't reset the applied sorting
New demo on backend integration
New samples
Grid
- Row expander. Full config
- Row expander. Subgrid data loading
- Row expander. Subgrid events handling
- Row expander with Form (any Suite widget can be embedded)
- Row expander with Chart (any Suite widget can be embedded)
- Row expander. Subgrid with Pagination
- Row expander. Multi-level nested subgrids
- Row expander. Custom HTML and hiding toggle icon
- Row expander. Subgrid with rows expanded by criteria
- Row expander. Subgrid only in specific rows
- Sorting by multiple columns (multisorting)
- Grouping with sorting by multiple columns (multisorting)
- Grouping and template in group headers
- Search and highlight results
- Hiding columns using header context menu
- Empty state
- Row pinning with checkbox
- Dynamic calculations
- Dataview editor for second column
- Custom yes/no editor
- Additional details in second grid (linked grids)
- Readonly (disabled) rows
- Rotated (vertical) header
- Grid and Pivot. Integration
Version 9.0.4
Released on February 4, 2025
Fixes
- Core. Incorrect work of
numberMaskused with theallowNegativeproperty on initialization of components - Grid. An issue with ignoring the
maxWidthproperty specified for a column - Window. An issue with restoring of embedded views (Grid scroll)
Version 9.0.3
Released on January 13, 2025
Fixes
- Chart. Chart bars aren't displayed if the series have the same value
- Chart. A stacked bar isn't rendered if a data object for some series doesn't contain a value
- Grid. Sorting the header "selectFilter"/"comboFilter" options with numeric data in the "number" column type
- Grid. Dragging a child item to the parent item in the TreeGrid mode
Version 9.0.2
Released on December 23, 2024
Fixes
- Grid. The
inputeditor doesn't work whenselection:"row"is specified - Grid.
autoEmptyRowcreates an additional empty row on loading external data
Version 9.0.1
Released on December 10, 2024
Fixes
- Core. The issue with the local trial package during import to frameworks
- DataCollection. Adding multiple elements at index -1 will distribute the elements throughout the collection
- DataCollection. The
find()/findAll()method miss theindexandarrayarguments, when the parameter is set as a function - DataCollection. The
add()method mutates the added object - DataCollection. Data preparation in the config is removed (old realization)
- DataCollection. After parsing the grouped data, the old data is displayed
- Form. The issue with the destruction of items in Optimus
- Grid. Multiselection. Reselection of the first selected row doesn't work
- Grid. The export module typization is added
- Grid. The use of
footerAutoHeightwithsummarycauses an error - Message. Incorrect text wrapping
- Tree. Selection isn't applied after dragging an item to another Tree
- TreeCollection. The
smartSortingproperty is missed in the configuration of thesort()method - TreeCollection. The
filter()method allows specifying an invalid configuration - TreeCollection. The
move()method calculates the movements incorrectly when moving an array of elements - TreeCollection. The
move()method doesn't allow being called without additional arguments - TreeCollection. The ability to create a non-existent parent
Version 9.0
Released on November 25, 2024
Review of the release on the blogBreaking changes
In this version TreeGrid becomes a part of Grid. Check the Migration guide to keep in step with the latest updates.
New functionality
Common features
- The new helper method
dhx.methodsto define the default data calculation functions used by the library and redefine them to create custom functions
DataCollection
- The ability to group data items, aggregate data in a group, adjust the order and configuration of data grouping, render statistics in the summary rows
- new methods:
group(),ungroup(),isGrouped() - new events:
beforeGroup,afterGroup,beforeUnGroup,afterUnGroup
- new methods:
Form
- The ability to specify patternMask/numberMask for the Input and Textarea controls
- The new
getText()method for getting the text value of an input - The new
getText()method for getting the text value of a textarea
Grid
- The TreeGrid mode for Grid (PRO version)
- Row data grouping (PRO version) with the ability to aggregate data in a group, adjust the appearance, order and configuration of data grouping, render statistics in the summary rows
- new Grid properties:
group,groupable,closable - new column properties:
groupable,closable - new events:
groupPanelItemClick,groupPanelItemMouseDown
- new Grid properties:
- The ability to render custom statistics in the header/footer of columns and Grid spans
- the
textandtooltipTemplateproperties of a column and of the Gridspansconfiguration object can be set as callback functions to render calculated summary values - new Grid property:
summary - new method:
getSummary() - new column property:
summary
- the
- The ability to specify patternMask/numberMask for columns
- Localization for Grid labels is added
Updates
Grid
- The
asDateObjectproperty is added for theeditorConfigobject of the DatePicker column editor to provide the ability to work with a Date object as with a string - The
cellparameter is added for the callback function of the following events:headerCellClick,footerCellClick,headerCellMouseOver,footerCellMouseOver,headerCellMouseDown,footerCellMouseDown,headerCellDblClick,footerCellDblClick,headerCellRightClick,footerCellRightClick Ctrl+Entershortcut for expanding/collapsing the parent item in the TreeGrid mode
Fixes
- Grid. Rows layout break when the minimum column width is reached with more than one parent (
type: tree) - Grid. The TypeScript types issue of the constructor object
- Grid. The unrecognized format error that occurs when working with a Date object in string representation
New samples
- Grid. Grouping
- Grid. Grouping customization
- Grid. Grouping aggregated data via data collection
- Grid. Grouping missing data
- Grid. Grouping and totals in the summary row
- Grid. Grouping and totals in group headers
- Grid. Grouping and totals in group headers via data collection
- Grid. Grouping and totals in the summary row via data collection
- Grid. Custom totals for footer and columns
- Grid. Custom totals for footer and columns with dynamic updates on edit
- Grid. Pattern and number masks
- Form. Number mask
- Form. Pattern mask
Version 8.4.6
Released on October 15, 2024
Fixes
- Grid. The issue with opening the Combobox column editor without options
Version 8.4.4
Released on September 16, 2024
Fixes
- Grid. Data is not displayed in the non-PRO version
Version 8.4.3
Released on September 10, 2024
Fixes
- Grid/TreeGrid. Incorrect span editing
- Grid/TreeGrid. The callback of the
dragRowInevent is called with the source id instead of the target id - Grid/TreeGrid. Incorrect rendering of header/footer spans
- Grid/TreeGrid. Canceling editing of a cell in the enabled
autoHeightmode doesn't revert the value of a cell to the initial state - Grid/TreeGrid. The
beforeColumnDropevent fires after dragging rows - Grid/TreeGrid. The
heightproperty set as a string breaks rendering of the component
Version 8.4.2
Released on August 29, 2024
Fixes
- Core. Destruction of Layout in the Optimus framework causes an error
- Form. A number input with the predefined minimal value fails validation in case the input is empty
- Grid/TreeGrid. Incorrect work of the
comboFilterinput in case entering of HTML content is enabled - Grid/TreeGrid. Input of a number starting with a decimal point
- Grid/TreeGrid. The use of
autoHeightandautoEmptyRowconfigs prevents appearing of a new empty row - Grid/TreeGrid. The
adjust:dataconfig is applied incorrectly during drag-n-drop - Grid/TreeGrid. The
adjustconfig of the component takes priority over theadjustconfig of a column - Grid/TreeGrid. Parsing data with the
footerAutoHeight: trueconfig causes a console error - Grid/TreeGrid. Dragging adjacent cells from the same column changes their positions relative to each other
- Layout. Issue with cells resizing
- Tree. The intermediate state of three-state checkboxes isn't displayed when a dataset is specified in the Tree configuration
Version 8.4.1
Released on July 25, 2024