Essential Studio for Blazor - v32.1.19 Release Notes
Common
Features
- Syncfusion Blazor now support
.NET 10, enabling development with the latest.NET 10framework features and enhancements from v31.2.12.
Accumulation Chart
Features
Legend Template Support - This LegendItemTemplate feature ensures that support to customize legend item content. This feature allows rendering custom templates for each legend item via the LegendItemTemplate property in AccumulationChartSeries, enhancing clarity and readability especially for pie, doughnut, and other accumulation series. Refer to the documentation for details and examples here
Demo: Pie with Legend Template
Gradient Support - The features AccumulationChartLinearGradient and AccumulationChartRadialGradient enable users to specify gradient fills for series or their elements’ fill options via built-in support for AccumulationChartSeries, thereby enhancing the visual appeal and distinctiveness of chart components through gradient effects. Gradients can be applied to series, legend items, markers, tooltip markers, and individual data points, allowing for visually enriched presentations without the need for external styling. For further details, please refer to the documentation link.here
Demo: Donut with Gradient
AI AssistView
Features
-
Footer Toolbar - Now the AI Assistview supports footer toolbar can be fully customized using the
AssistViewFooterToolbartag directive. Alongside default actions likeSend,Attach, andClear, you can add custom items, reorder them, show or hide options, apply styles, set tooltips, icons, disabled states, and define click handlers for a personalized experience.Explore the demo here
Explore the documentation here
-
File Attachments - Enhanced the
AttachmentSettingsproperty by providing theMaximumCountto limit files addition andAttachmentClickevent which fires when an attachment is clicked.
Breaking Changes
-
The following event is deprecated and will be removed in an upcoming release. Use the recommended replacement.
Deprecated Event Replacement Event Status AttachmentUploadStart OnAttachmentUploadReady Deprecated (will be removed in future release) Migration Guidance: Update handlers from
AttachmentUploadStarttoOnAttachmentUploadReadyand change the handler parameter type toAttachmentUploadReadyEventArgs.
Block Editor preview
The Blazor Block Editor is a modern, block-based content editing solution for web applications. It provides an intuitive and flexible interface for creating rich, structured documents using interactive content blocks.
Explore the demo here
Explore the documentation here
Features
- Multiple block types: Includes Heading levels 1-4, Paragraph, Table, Lists, Checklist, Quote, Callout, Divider, and more.
-
Slash commands: Interactive
/commands to insert or transform content blocks, with filtering and keyboard shortcuts. - Inline content: Insert inline elements like Links, Labels and Mention directly within blocks.
- Rich text formatting: Apply styles such as Bold, Italic, Underline, Strikethrough, Uppercase and more.
- Action menu: Perform block-level operations such as Move, Delete, and Duplicate.
- Context menu: Right-click context menus for quick block actions.
- Undo/Redo operations: Undo and redo support for the user interactions.
- Events for Customization: The Block Editor includes a rich set of events such as block changes, focus, blur and pasteCleanup allowing developers to extend functionality easily.
- Accessibility & WCAG 2.0 Compliance: Accessibility support for assistive technologies and keyboard navigation.
- Keyboard Navigation: Navigate and manage blocks efficiently using intuitive keyboard shortcuts for a faster editing experience.
Calendar
Features
- Introduced the
CurrentViewproperty in the OnRenderDayCell event arguments, giving access to the active view (Month,Year, orDecade) when the event is triggered. This enhancement supports view-specific customization and simplifies conditional logic.
Code Example:
@using Syncfusion.Blazor.Calendars
<div class="control-wrapper">
<SfCalendar TValue="DateTime?" @bind-Value="@SelectedDate">
<CalendarEvents TValue="DateTime?" OnRenderDayCell="CustomDates"></CalendarEvents>
</SfCalendar>
</div>
@code {
public DateTime? SelectedDate { get; set; }
public void CustomDates(RenderDayCellEventArgs args)
{
if (args.CurrentView == "Month") {
// Here, you can customize your code.
}
}
}
Chart
Features
Legend Template Support - This LegendItemTemplate feature ensures that support to customize legend item content. This feature allows rendering custom templates for each legend item via the LegendItemTemplate property in ChartSeries, enhancing clarity and readability especially for all type of chart series. Refer to the documentation for details and examples here
Demo: Legend Template
Gradient Support - The features ChartLinearGradient and ChartRadialGradient enable users to specify gradient fills for series or their elements’ fill options via built-in support for ChartSeries, thereby enhancing the visual appeal and distinctiveness of chart components through gradient effects. Gradients can be applied to series, legend items, markers, tooltip markers, and individual data points, allowing for visually enriched presentations without the need for external styling. For further details, please refer to the documentation link.here
Demo: Bar with Gradient
Stripline Tooltip - This ChartStriplineTooltip feature offers contextual information upon hovering over or focusing on stripline regions, thereby facilitating the interpretation of threshold ranges and highlighted time intervals and it can be activated by assigning ChartStriplineTooltip to its parent ChartStripline, enabling the display of tooltips for the designated stripline. These tooltips adopt the global tooltip formatting by default but can be tailored with respect to both content and visual presentation. For further details and illustrative examples, please consult the documentation here.
Demo: StripLine
Chat UI
Features
-
File Attachments - Now the Chat UI supports attachment functionality, enabling users to upload and send files (images, documents, and more) directly within conversations. This capability is controlled using the
ChatUIAttachmenttag directive. Additionally, the following events have newly been added to provide control over attachments:Event Name Purpose OnAttachmentUploadReadyTriggered before the attached file upload begins. AttachmentUploadSuccessTriggered when the attached file is successfully uploaded. AttachmentUploadFailureTriggered when the attached file upload fails. AttachmentRemovedTriggered when an attached file is removed. AttachmentClickTriggered when an attached file is clicked. Explore the demo here
Explore the documentation here
CheckBox
Breaking Changes
- To improve performance, the CheckBox component now requires a standalone script. Beginning with this update, the CheckBox will not function unless its dedicated script is included. For more information, please refer to the documentation.
Data Grid
Bug Fixes
-
#I772675,FB70397- Resolved an issue where the select all checkbox in the DataGrid could not be clicked due to an overlaying element.
Features
-
#I413640,#I414443,#I414443,#I483050,#I611648,#I288108,#I611648,#I313467,#I315953,#I354431,#I326331,#FB12793- The Blazor DataGrid now supports automatic Cell merging for enhanced readability and presentation. Adjacent cells with identical values can be merged horizontally, vertically, or in both directions, creating a cleaner and more organized layout. Explore the demo here.
Code Example:
<SfGrid TValue="Order" DataSource="@Orders" AutoSpan="AutoSpanMode.HorizontalAndVertical" AllowPaging="true">
<GridColumns>
<GridColumn Field="@nameof(Order.OrderID)" HeaderText="Order ID" Width="120" />
<GridColumn Field="@nameof(Order.CustomerID)" HeaderText="Customer ID" Width="150" />
<GridColumn Field="@nameof(Order.Freight)" HeaderText="Freight" Format="C2" Width="120" />
</GridColumns>
</SfGrid>
Performance Benchmark
Initial rendering module:
-
The rendering process has been optimized to achieve quicker load times and seamless initialization, even with large datasets.
Metric Change Initial -22.9% (reduction)
Grouping with virtualization module:
-
The grouping mechanism in virtualized grids has been fine-tuned to handle extensive data more efficiently, delivering a faster and more responsive experience.
Metric Change Grouping -98.0% (reduction) Grouping (expand all) -97.4% (reduction)
Breaking Changes
-
Removed non-essential attributes such as
data-uidon td elements andaria-selected="false"to reduce DOM size and improve initial rendering performance.<tr class="e-row e-altrow" role="row" style="" aria-selected="true" data-uid="grid-row5" aria-rowindex="1"> <td class="e-rowcell e-selectionbackground e-active e-rightalign" tabindex="0" role="gridcell" aria-colindex="1" aria-selected="true" data-uid="gridcell-13">1</td> <td class="e-rowcell e-selectionbackground e-active e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2" aria-selected="true" data-uid="gridcell-14">ALFKI</td> </tr> <tr class="e-row" role="row" style="" aria-selected="false" data-uid="grid-row6" aria-rowindex="2"> <td class="e-rowcell e-rightalign" tabindex="-1" role="gridcell" aria-colindex="1" aria-selected="false" data-uid="gridcell-17">2</td> <td class="e-rowcell e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2" aria-selected="false" data-uid="gridcell-18">ANANTR</td> </tr><tr class="e-row e-altrow" role="row" style="" aria-selected="true" data-uid="grid-row5" aria-rowindex="1"> <td class="e-rowcell e-selectionbackground e-active e-rightalign" tabindex="0" role="gridcell" aria-colindex="1" aria-selected="true">1</td> <td class="e-rowcell e-selectionbackground e-active e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2" aria-selected="true">ALFKI</td> </tr> <tr class="e-row" role="row" data-uid="grid-row6" aria-rowindex="2"> <td class="e-rowcell e-rightalign" tabindex="-1" role="gridcell" aria-colindex="1">2</td> <td class="e-rowcell e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2">ANANTR</td> </tr> -
Removed
ej-mappingnameandej-mappingvalueattributes from grouped header and expand td elements to streamline DOM structure and improve rendering performance.<div ej-mappingname="CustomerID"> <span class="e-grouptext" tabindex="-1">Customer ID</span> <span class="e-groupsort e-icons e-ascending e-icon-ascending " role="button" title="sort the grouped column Customer ID" tabindex="0"></span> <span class="e-ungroupbutton e-icons e-icon-hide " role="button" title="Ungroup by this column" tabindex="0"> </span></div><div> <span class="e-grouptext" tabindex="-1">Customer ID</span> <span class="e-groupsort e-icons e-ascending e-icon-ascending " role="button" title="sort the grouped column Customer ID" tabindex="0"></span> <span class="e-ungroupbutton e-icons e-icon-hide " role="button" title="Ungroup by this column" tabindex="0"></span> </div><td class="e-recordplusexpand " style="Left: 0px" tabindex="0" data-uid="gridcell-175" ej-mappingname="CustomerID" ej-mappingvalue="ALFKI" aria-expanded="true"> <a class="e-icons e-gdiagonaldown e-icon-gdownarrow" href="javascript:void(0)" title="expanded"></a> </td><td class="e-recordplusexpand " style="Left: 0px" tabindex="0" data-uid="gridcell-132699" aria-expanded="true"> <a class="e-icons e-gdiagonaldown e-icon-gdownarrow" href="javascript:void(0)" title="expanded"></a> </td> -
Added an extra container in the DataGrid header to fix alignment issues with Filter, Sort, and menu icons when Textwrap is enabled.
<th class="e-headercell e-leftalign " data-uid="gridcell-12697" role="columnheader" tabindex="-1" aria-colindex="3" rowspan="1" colspan="1"> <div e-mappinguid="grid-column1436" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Title</span></div> <div class="e-sortfilterdiv e-icons "></div> </th><th class="e-headercell e-leftalign " data-uid="gridcell-159794" role="columnheader" tabindex="0" aria-colindex="2" rowspan="1" colspan="1"> <div class="e-headercell-container"> <div e-mappinguid="grid-column28700" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Last Name</span> <div class="e-sortfilterdiv e-icons "></div> </div> </div> </th> -
Removed the
e-sortfilterdivcontainer from the DataGrid when Sorting is disabled to simplify DOM structure and improve rendering performance.Previous:
Thee-sortfilterdivcontainer was added to the DOM in both sorting-enabled and sorting-disabled scenarios.<th class="e-headercell e-leftalign " data-uid="gridcell-12697" role="columnheader" tabindex="-1" aria-colindex="3" rowspan="1" colspan="1"> <div e-mappinguid="grid-column1436" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Text</span></div> <div class="e-sortfilterdiv e-icons "></div> </th>Now:
Thee-sortfilterdivcontainer is no longer rendered when sorting is disabled, reducing unnecessary DOM elements and improving performance.<th class="e-headercell e-leftalign " data-uid="gridcell-159794" role="columnheader" tabindex="0" aria-colindex="2" rowspan="1" colspan="1"> <div class="e-headercell-container"> <div e-mappinguid="grid-column28700" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Text</span> </div> </div> </th> -
Removed dynamic addition of
e-focusande-focusedclasses for focus handling. Focus states are now managed using native CSS selectors (:focus and :focus-visible) for better performance and cleaner DOM..e-grid.sf-grid .e-content .e-focused { box-shadow: 0 0 0 1px rgba(217, 119, 6, 0.75) inset; }.e-grid.sf-grid .e-content td.e-rowcell:focus { box-shadow: 0 0 0 1px rgba(217, 119, 6, 0.75) inset; }
Date Picker
Features
- Introduced the
CurrentViewproperty in the OnRenderDayCell event arguments, giving access to the active view (Month,Year, orDecade) when the event is triggered. This enhancement supports view-specific customization and simplifies conditional logic.
Code Example:
@using Syncfusion.Blazor.Calendars
<div class="control-wrapper">
<SfDatePicker TValue="DateTime?" Placeholder="Choose a Date" ShowClearButton="true" @bind-Value="@SelectedDate">
<DatePickerEvents TValue="DateTime?" OnRenderDayCell="CustomDates"></DatePickerEvents>
</SfDatePicker>
</div>
@code {
public DateTime? SelectedDate { get; set; }
public void CustomDates(RenderDayCellEventArgs args)
{
if (args.CurrentView == "Month") {
// Here, you can customize your code.
}
}
}
Diagram
Bug Fixes
-
#I788144,FB71484- Fixed an issue where text disappeared when selecting a node and starting text editing in Mobile view.
Features
-
Collaborative Editing
- Collaborative editing lets multiple users work on the same diagram simultaneously and remain perfectly synchronized. User actions—adding, moving, resizing, connecting, or modifying—are captured and broadcast to other participants in real time, enabling a seamless co-authoring experience without page refreshes.
- HistoryChange event fires on user interactions and captures the change details.
- GetDiagramUpdates serializes these changes into a compact JSON format.
- SignalR broadcasts the updates to all connected users.
- Other users apply updates using SetDiagramUpdatesAsync, ensuring instant synchronization.
For further details, please refer to the documentation link here.
- Collaborative editing lets multiple users work on the same diagram simultaneously and remain perfectly synchronized. User actions—adding, moving, resizing, connecting, or modifying—are captured and broadcast to other participants in real time, enabling a seamless co-authoring experience without page refreshes.
-
Force-Directed Tree Layout
- A physics-based layout uses virtual springs (attraction) and electrical repulsion to automatically position nodes, reducing edge crossings and visual clutter. It produces cleaner, intuitive visuals for complex trees and irregular hierarchies.
- AttractionStrength pulls connected nodes toward an ideal separation.
- RepulsionStrength pushes nodes apart to prevent overlaps.
- The simulation runs for MaximumIteration steps or until movements stabilize.
- ConnectorLength defines the ideal distance between connected nodes.
For further details, please refer to the documentation link here.
- A physics-based layout uses virtual springs (attraction) and electrical repulsion to automatically position nodes, reducing edge crossings and visual clutter. It produces cleaner, intuitive visuals for complex trees and irregular hierarchies.
-
Restrict Node Dragging Outside Swimlane
-
I757308,FB69480- The Blazor Diagram component now introduces the AllowDragWithinSwimlane constraint for nodes. When enabled, this feature ensures that nodes remain inside their assigned swim lane during drag-and-drop interactions. For further details, please refer to the documentation link here.
-
Dialog
Bug Fixes
-
#I788722- Fixed a dialog component of the close icon misalignment issue in the RTL mode of the Bootstrap theme.
File Manager
Features
-
#I710551- Added comprehensive template support to customize key UI surfaces in the File Manager:- Navigation Pane: Use
NavigationPaneTemplateto render custom folder nodes (icons, labels, badges, etc.). - Large Icons view: Use
LargeIconsTemplateto fully customize each item’s card (thumbnails, metadata, action menus).
Explore the sample here.
- Navigation Pane: Use
-
#I740319- Introduced theSequentialUploadoption inFileManagerUploadSettings. When enabled (true), files and folders are uploaded one at a time in the order queued, improving reliability and easing server load. The default isfalse(parallel uploads).
Explore the sample here. -
#I775420- Added theEnableMenuItemsmethod to programmatically re-enable previously disabled context menu items in the File Manager.Example: Re-enable specific menu items
@using Syncfusion.Blazor.FileManager <SfFileManager @ref="FileManager" TValue="FileManagerDirectoryContent"> <FileManagerEvents TValue="FileManagerDirectoryContent" MenuOpened="OnMenuOpened" /> </SfFileManager> <button class="e-btn" @onclick="EnableEditActions">Enable Edit Actions</button> @code { private SfFileManager<FileManagerDirectoryContent> FileManager; // Example: disable some menu items when the menu opens (for demo) private void OnMenuOpened(MenuOpenEventArgs<FileManagerDirectoryContent> args) { // Assume these were disabled elsewhere based on your logic. // For illustration, you could disable here: FileManager.DisableMenuItems(new[] { "Cut", "Copy", "Delete" }); } // Re-enable the previously disabled items private void EnableEditActions() { FileManager.EnableMenuItems(new[] { "Copy", "Delete" }); } }
Gantt Chart
Features
- Provided support for column level validation in the Blazor Gantt Chart to prevent saving tasks with incomplete or invalid details and ensure accurate data entry. Explore this feature in the demo.
-
#FB65596- Provided Undo and Redo support in the Blazor Gantt Chart to revert or restore recent changes for maintaining organized workflows and accurate timelines. Explore this feature in the demo.
Image Editor
Bug Fixes
-
#I787921- Resolved an issue where the Add Image annotation did not work when the Open toolbar was missing in Blazor MAUI.
MultiSelect
Bug Fixes
-
#I196346- Resolved an issue where the MultiSelect popup remained visible when scrolling and closing the dialog quickly.
Numeric TextBox
Features
- Introduced the
AllowMouseWheelproperty to provide control over mouse wheel-based value changes when the input is focused. This property allows users to enable or disable scroll interaction according to their requirements. The default value istrueto maintain existing behavior; set it tofalseto disable mouse wheel interaction while preserving other input methods.
Code Example:
<SfNumericTextBox TValue="int?" Value="10" AllowMouseWheel="false" />
Pivot Table
Features
-
#I760347- Added an option to suppress the save confirmation dialog for toolbar actions in the Blazor Pivot Table. The dialog appears by default; to disable it for a smoother experience, setConfirmOnDiscardto false in theActionBeginevent.
Progress Button
Bug Fixes
-
#I780628- Fixed an issue where the progress button clicks threw an exception in the Bootstrap theme.
Query Builder
Features
- Implemented the
Destroyedevent, which triggers during component disposal to ensure reliable cleanup and allow external handling when the component is disposed.
Code Example:
<SfQueryBuilder TValue="EmployeeData">
<QueryBuilderEvents TValue = "EmployeeData" Destroyed="@OnDestroyed" />
</SfQueryBuilder>
@code {
private void OnDestroyed(object args)
{
// Here, you can customize your code.
}
}
Rich Text Editor
Features
-
Authorization Header Support: The Rich Text Editor now supports adding custom authorization headers for secure Word and PDF export operations, making it ideal for authenticated or token-based workflows. Developers can dynamically configure these headers using the OnExport event, ensuring flexible and secure integration with protected APIs. Please find the demo link here.
-
Check List Insertion: The Rich Text Editor now supports interactive checklists, enabling users to create lists with checkable items for better task tracking and organization. A checklist can be applied to selected text using the
Ctrl + Shift + 9shortcut, and the state of selected items can be toggled usingCtrl + Enter. Please find the demo link here. -
Clipboard Cleanup: The Rich Text Editor now intercepts copy (
Ctrl + C) and cut (Ctrl + X) actions to automatically remove unwanted inline styles from the clipboard content. It preserves structural elements such as tables, lists, and images while removing unwanted inline styles. This feature is enabled by default through EnableClipboardCleanup. WhenEnableClipboardCleanupis set totrue, copy and cut operations are intercepted to remove unwanted inline styles. When set tofalsethe browser’s default copy and cut behavior applies. Please find the demo link here here. -
External Media Drag and Drop: The Rich Text Editor now supports external drag-and-drop functionality for video and audio files, allowing users to seamlessly integrate multimedia content. Users can simply drag media files from their file system and drop them into the editor to embed them instantly. Please find the demo link here.
-
HTTP Client Instance: The Rich Text Editor now supports the HttpClientInstance property, enabling developers to inject a custom HttpClient instance. This allows secure and configurable file uploads by leveraging custom authentication, headers, and other HTTP configurations directly within the Rich Text Editor. Please find the demo link here.
-
Line Height: The Rich Text Editor now supports line-height formatting through a dedicated dropdown in the toolbar. Add the
LineHeighttool to the toolbar items to display it in the toolbar. You can customize available line-height values using the RichTextEditorLineHeight class. Use Default to set the default value. Use Items to add custom items. Use SupportAllValues to see the custom line height applied to a text. Please find the demo link here. -
Markdown Auto-Formatting: The Rich Text Editor now supports real-time Markdown auto-formatting, where inline formats such as bold, italic, strikethrough, inline code are converted immediately after the closing marker is typed, and block format such as headings, lists, blockquotes, code blocks are converted only after a space is entered following the marker. This feature is enabled by default through EnableMarkdownAutoFormat. Please find the demo link here here.
-
Progress Indicator for Export: The Rich Text Editor now shows a spinner on the export button when exporting to Word or PDF. This spinner indicates the ongoing process and remains visible until the file download is complete, ensuring users are informed about the export status. Please find the demo link here.
Bug Fixes
-
#FB69539- Now, the Rich Text Editor provides support for retrieving both the image file data and its URL through the editor event, enabling developers to easily access and process image information for custom workflows.
Schedule
Feature
- Provided custom toolbar support in the Scheduler.
- Introduced a non-generic
ScheduleToolBarthat can be declared directly insideSfScheduleto fully customize the header without changing existing behavior. - Supports ordered, reusable built-in segments:
-
ScheduleToolBarPrevious- renders the built-in Previous navigation. -
ScheduleToolBarNext- renders the built-in Next navigation. -
ScheduleToolBarDateRange- renders the built-in Date navigation. -
ScheduleToolBarViews- renders the built-in view switcher (Day, Week, Month, Timeline, etc.). -
ScheduleToolBarToday- renders the built-in Today navigation.
-
- Supports custom content:
-
ScheduleToolBarCustom- adds a toolbar item with template content (supports built-in toolbar item types via theTypeproperty, such as Button, Separator, etc.).
-
- Introduced a non-generic
- Quick Start Example
<SfSchedule TValue="EventData" SelectedDate="new DateTime(2025, 12, 1)"> <ScheduleToolBar> <ScheduleToolBarPrevious></ScheduleToolBarPrevious> <ScheduleToolBarNext></ScheduleToolBarNext> <ScheduleToolBarDateRange></ScheduleToolBarDateRange> <ScheduleToolBarToday></ScheduleToolBarToday> <ScheduleToolBarViews></ScheduleToolBarViews> <ScheduleToolBarCustom> <button class="e-btn e-flat">Custom Action</button> </ScheduleToolBarCustom> </ScheduleToolBar> <ScheduleEventSettings DataSource="@Appointments"></ScheduleEventSettings> <ScheduleViews> <ScheduleView Option="View.Week"></ScheduleView> <ScheduleView Option="View.Month"></ScheduleView> </ScheduleViews> </SfSchedule>
Stock Chart
Features
Legend Template Support - This LegendItemTemplate feature ensures that support to customize legend item content. This feature allows rendering custom templates for each legend item via the LegendItemTemplate property in StockChartSeries, enhancing clarity and readability especially for all type of chart series. Refer to the documentation for details and examples here
Gradient Support - The features StockChartLinearGradient and StockChartRadialGradient enable users to specify gradient fills for series or their elements’ fill options via built-in support for StockChartSeries, thereby enhancing the visual appeal and distinctiveness of chart components through gradient effects. Gradients can be applied to stock chart series, legend items, markers, tooltip markers, and individual data points, allowing for visually enriched presentations without the need for external styling. For further details, please refer to the documentation link.here
Switch
Breaking Changes
- To improve performance, the Switch component now requires a standalone script. Beginning with this update, the Switch will not function unless its dedicated script is included. For more information, please refer to the documentation.
Tab
Bug Fixes
-
#I785195- NullReferenceException that occurred during rapid tab switching in the Tab component has been resolved.
TextBox
Bug Fixes
-
#I780767- Fixed an issue in .NET 10 where the search icon added via AddIconAsync was not displayed correctly until the input field received focus.
Tooltip
Breaking changes
- Going forward, the unused, non-functional title attribute will be removed from Tooltip targets when the tooltip initializes. If you used title as a selector, it will no longer work; use id or class selectors instead.
Tree Grid
Features
-
The Blazor Tree Grid now supports automatic Cell merging, improving readability and overall presentation. Identical adjacent values can be merged horizontally, vertically, or in both directions, resulting in a cleaner and more organized layout. Explore the demo here.
-
Enhanced sorting functionality with support for custom sorting, allowing column values to be ordered based on custom comparison logic instead of the default behavior. Explore the demo here.
-
Tree Grid now displays all hierarchical records when using page size all mode, ensuring the page size is calculated using the entire hierarchy instead of only root‑level records.
-
Enhanced filtering and search operations with support for ignoring accent letters and casing, enabling more flexible and consistent text matching.
-
Tree Grid component now supports data binding from GraphQL APIs, allowing queries and updates through GraphQL’s declarative model. This simplifies working with complex, hierarchical datasets and ensures efficient data retrieval tailored to the Tree Grid’s structure.
-
Improved alignment and text‑wrapping support in the column chooser template, enabling full replacement of the default layout with a custom design. This provides complete control over appearance and simplifies managing column visibility. Explore the demo here.
-
Improved
LoadChildOnDemandbehavior with virtualization, where records are initially collapsed and child data is retrieved only when expanded. Explore the demo here.
Breaking Changes
-
Removed non-essential attributes such as
data-uidon td elements andaria-selected="false"to reduce DOM size and improve initial rendering performance.<tr class="e-row e-altrow" role="row" style="" aria-selected="true" data-uid="grid-row5" aria-rowindex="1"> <td class="e-rowcell e-selectionbackground e-active e-rightalign" tabindex="0" role="gridcell" aria-colindex="1" aria-selected="true" data-uid="gridcell-13">1</td> <td class="e-rowcell e-selectionbackground e-active e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2" aria-selected="true" data-uid="gridcell-14">ALFKI</td> </tr> <tr class="e-row" role="row" style="" aria-selected="false" data-uid="grid-row6" aria-rowindex="2"> <td class="e-rowcell e-rightalign" tabindex="-1" role="gridcell" aria-colindex="1" aria-selected="false" data-uid="gridcell-17">2</td> <td class="e-rowcell e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2" aria-selected="false" data-uid="gridcell-18">ANANTR</td> </tr><tr class="e-row e-altrow" role="row" style="" aria-selected="true" data-uid="grid-row5" aria-rowindex="1"> <td class="e-rowcell e-selectionbackground e-active e-rightalign" tabindex="0" role="gridcell" aria-colindex="1" aria-selected="true">1</td> <td class="e-rowcell e-selectionbackground e-active e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2" aria-selected="true">ALFKI</td> </tr> <tr class="e-row" role="row" data-uid="grid-row6" aria-rowindex="2"> <td class="e-rowcell e-rightalign" tabindex="-1" role="gridcell" aria-colindex="1">2</td> <td class="e-rowcell e-leftalign" tabindex="-1" role="gridcell" aria-colindex="2">ANANTR</td> </tr> -
Added an extra container in the Tree Grid header to fix alignment issues with Filter, Sort, and menu icons when Textwrap is enabled.
<th class="e-headercell e-leftalign " data-uid="gridcell-12697" role="columnheader" tabindex="-1" aria-colindex="3" rowspan="1" colspan="1"> <div e-mappinguid="grid-column1436" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Title</span></div> <div class="e-sortfilterdiv e-icons "></div> </th><th class="e-headercell e-leftalign " data-uid="gridcell-159794" role="columnheader" tabindex="0" aria-colindex="2" rowspan="1" colspan="1"> <div class="e-headercell-container"> <div e-mappinguid="grid-column28700" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Last Name</span> <div class="e-sortfilterdiv e-icons "></div> </div> </div> </th> -
Removed the
e-sortfilterdivcontainer from the Tree Grid when Sorting is disabled to simplify DOM structure and improve rendering performance.Previous:
Thee-sortfilterdivcontainer was added to the DOM in both sorting-enabled and sorting-disabled scenarios.<th class="e-headercell e-leftalign " data-uid="gridcell-12697" role="columnheader" tabindex="-1" aria-colindex="3" rowspan="1" colspan="1"> <div e-mappinguid="grid-column1436" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Text</span></div> <div class="e-sortfilterdiv e-icons "></div> </th>Now:
Thee-sortfilterdivcontainer is no longer rendered when sorting is disabled, reducing unnecessary DOM elements and improving performance.<th class="e-headercell e-leftalign " data-uid="gridcell-159794" role="columnheader" tabindex="0" aria-colindex="2" rowspan="1" colspan="1"> <div class="e-headercell-container"> <div e-mappinguid="grid-column28700" class="e-headercelldiv e-leftalign"> <span class="e-headertext">Text</span> </div> </div> </th> -
Removed dynamic addition of
e-focusande-focusedclasses for focus handling. Focus states are now managed using native CSS selectors (:focus and :focus-visible) for better performance and cleaner DOM..e-treegrid.sf-treegrid .e-content .e-focused { box-shadow: 0 0 0 1px rgba(217, 119, 6, 0.75) inset; }.e-treegrid.sf-treegrid .e-content td.e-rowcell:focus { box-shadow: 0 0 0 1px rgba(217, 119, 6, 0.75) inset; }
Test Results
| Component Name | Test Cases | Passed | Failed | Remarks |
|---|---|---|---|---|
| 3DChart | 198 | 198 | 0 | All Passed |
| Accordion | 232 | 232 | 0 | All Passed |
| AiAssistView | 297 | 297 | 0 | All Passed |
| Appbar | 102 | 102 | 0 | All Passed |
| Autocomplete | 445 | 445 | 0 | All Passed |
| BarcodeGenerator | 440 | 440 | 0 | All Passed |
| Breadcrumb | 137 | 137 | 0 | All Passed |
| Bulletchart | 237 | 237 | 0 | All Passed |
| Button | 255 | 255 | 0 | All Passed |
| Calendar | 146 | 146 | 0 | All Passed |
| Carousel | 176 | 176 | 0 | All Passed |
| Charts | 5253 | 5253 | 0 | All Passed |
| ChatUI | 129 | 129 | 0 | All Passed |
| Chips | 214 | 214 | 0 | All Passed |
| CircularGauge | 1013 | 1013 | 0 | All Passed |
| ColorPicker | 113 | 113 | 0 | All Passed |
| ComboBox | 248 | 248 | 0 | All Passed |
| DashboardLayout | 253 | 253 | 0 | All Passed |
| DataForm | 547 | 547 | 0 | All Passed |
| DataGrid | 8394 | 8394 | 0 | All Passed |
| DatePicker | 576 | 576 | 0 | All Passed |
| DateRangePicker | 366 | 366 | 0 | All Passed |
| DateTimePicker | 474 | 474 | 0 | All Passed |
| Diagram | 15423 | 15423 | 0 | All Passed |
| Dialog | 483 | 483 | 0 | All Passed |
| DropdownList | 586 | 586 | 0 | All Passed |
| Dropdowntree | 164 | 164 | 0 | All Passed |
| FileManager | 3108 | 3108 | 0 | All Passed |
| FileUpload | 330 | 330 | 0 | All Passed |
| FloatingActionButton | 128 | 128 | 0 | All Passed |
| Gantt | 4831 | 4831 | 0 | All Passed |
| HeatMap | 401 | 401 | 0 | All Passed |
| ImageEditor | 3561 | 3561 | 0 | All Passed |
| InPlaceEditor | 765 | 765 | 0 | All Passed |
| InputMask | 168 | 168 | 0 | All Passed |
| Kanban | 379 | 379 | 0 | All Passed |
| LinearGauge | 797 | 797 | 0 | All Passed |
| ListBox | 138 | 138 | 0 | All Passed |
| ListView | 441 | 441 | 0 | All Passed |
| Maps | 1570 | 1570 | 0 | All Passed |
| Mention | 152 | 152 | 0 | All Passed |
| Menu | 398 | 398 | 0 | All Passed |
| Message | 211 | 211 | 0 | All Passed |
| MultiselectDropdown | 386 | 386 | 0 | All Passed |
| NumericTextbox | 462 | 462 | 0 | All Passed |
| OtpInput | 123 | 123 | 0 | All Passed |
| PivotTable | 1239 | 1239 | 0 | All Passed |
| ProgressBar | 198 | 198 | 0 | All Passed |
| progressbutton | 101 | 101 | 0 | All Passed |
| QueryBuilder | 584 | 584 | 0 | All Passed |
| RangeNavigator | 196 | 196 | 0 | All Passed |
| Rating | 106 | 106 | 0 | All Passed |
| Ribbon | 494 | 494 | 0 | All Passed |
| RichTextEditor | 2195 | 2195 | 0 | All Passed |
| SankeyChart | 17 | 17 | 0 | All Passed |
| Scheduler | 5713 | 5713 | 0 | All Passed |
| Sidebar | 144 | 144 | 0 | All Passed |
| Slider | 271 | 271 | 0 | All Passed |
| SmithChart | 259 | 259 | 0 | All Passed |
| Sparkline | 150 | 150 | 0 | All Passed |
| SparklineChart | 150 | 150 | 0 | All Passed |
| SpeedDial | 353 | 353 | 0 | All Passed |
| Splitter | 190 | 190 | 0 | All Passed |
| Stepper | 218 | 218 | 0 | All Passed |
| StockChart | 344 | 344 | 0 | All Passed |
| Tabs | 940 | 940 | 0 | All Passed |
| TextArea | 126 | 126 | 0 | All Passed |
| Textbox | 674 | 674 | 0 | All Passed |
| Timeline | 182 | 182 | 0 | All Passed |
| TimePicker | 419 | 419 | 0 | All Passed |
| Toast | 233 | 233 | 0 | All Passed |
| Toolbar | 231 | 231 | 0 | All Passed |
| TreeGrid | 4925 | 4925 | 0 | All Passed |
| TreeMap | 764 | 764 | 0 | All Passed |
| TreeView | 1361 | 1361 | 0 | All Passed |