12.1.9 - 2026-10-31
Improvements
- Spreadsheet formulas support the
^and%operators, which returned#NAME?before.^is left associative and binds looser than unary minus and%is a postfix operator, as in Excel, so=2^3^2is 64,=-2^2is 4 and=5%%is 0.0005.^andPOWERshare one calculation:0^0returns#NUM!,0^-1returns#DIV/0!, overflow returns#NUM!and odd roots of negative numbers such as(-8)^(1/3)work.POWERreturned#DIV/0!on overflow before, and arithmetic overflow such as=10^308*10now returns#NUM!instead of infinity. - Spreadsheet accepts a sheet qualified
#REF!such asSheet1!#REF!and'My Sheet'!#REF!, the form Excel writes when a referenced row or column is deleted. These formulas evaluated to#NAME?before. - Spreadsheet deletes several rows or columns in one pass. On a sheet with 60000 formulas, deleting 2000 rows drops from 61s to about 0.5s.
- DataGrid can expand or collapse all groups from the header of the group expand column. The new
ShowGroupExpandAllparameter renders a toggle button in the first group header cell and the publicToggleAllGroupsExpandmethod does the same from code. The title and aria-label come from the newExpandAllGroupsTitleandCollapseAllGroupsTitleparameters. - Tabs supports closable tabs.
RadzenTabsItemgets aClosableparameter that renders a close icon after the title, and clicking it or pressing Delete raises the newCloseevent with the tab and its index.RemoveItemkeeps the same tab selected when an earlier tab is removed and selects a neighbouring enabled tab when the selected tab is removed. - Menu can share a header row with other items on small screens through the new
rz-display-contentsutility on a responsive menu, andrz-display-sm-flexrestores it above 768px.
Fixes
- Spreadsheet row and column deletes update formula references the way Excel does. References after the deleted rows move, a range shrinks when its start or end is deleted, and a reference left with no cells becomes
#REF!. Before, remaining rows read the wrong cells, ranges returned#REF!and undo left shifted formulas behind. Undo and redo now restore every formula in the workbook, including validation formulas and chart series. - Spreadsheet defined names follow row and column inserts and deletes, and formulas using them keep tracking the moved cells. Names were never updated before, so a name kept pointing at its old address.
- Spreadsheet row and column inserts keep formulas the parser cannot represent. An insert used to rewrite the formula from a partial parse, which corrupted it.
- Spreadsheet formulas on other sheets recalculate when a row or column delete changes what a whole column or row reference covers.
- Spreadsheet context menus act on the whole selection. Right-clicking inside a selection keeps it, and Delete, Hide and Unhide apply to every selected row or column (#2782). Sort limits itself to a multi-cell selection outside tables and autofilters (#2784).
- Spreadsheet filter menu shows the active filter when it reopens. Every checkbox came back unchecked for text values, and OK then replaced the filter with one on blanks (#2783). Custom, top and above or below average filters reopened with every box ticked and OK cleared them; the checkboxes now show what the filter keeps and OK with no change leaves the filter alone.
- Steps no longer sends a Blazor Server process into a runaway render loop when an async
CanChangehandler is combined with aChangehandler and a boundSelectedIndex.CanChangeis raised for user-initiated changes only andSelectedIndexChangedis raised beforeChange(#2785). - Tabs raises
SelectedIndexChangedbeforeChange, so an asyncCanChangeno longer leaves the tab on the old index, and handled keys no longer swallow the next keystroke. - Scheduler aligns the all-day row with the time grid when the week view groups by resource.
- Themes replace
:root:has(.rz-layout)with depth-bounded selectors to reduce style recalculation cost.