Repository navigation
Update dependency Radzen.Blazor to 12.1.8 - #256
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/radzen.blazor-12.x
branch
4 times, most recently
from
October 8, 2026 13:31
cd6cc81 to
52f00c4
Compare
renovate
Bot
force-pushed
the
renovate/radzen.blazor-12.x
branch
6 times, most recently
from
October 16, 2026 13:54
222cf9a to
10fa28b
Compare
renovate
Bot
force-pushed
the
renovate/radzen.blazor-12.x
branch
2 times, most recently
from
October 22, 2026 12:05
dbb978e to
4032e48
Compare
GoetzGoerisch
force-pushed
the
upstream
branch
from
October 22, 2026 12:45
a92c52c to
4bba7c8
Compare
renovate
Bot
force-pushed
the
renovate/radzen.blazor-12.x
branch
2 times, most recently
from
October 26, 2026 18:38
489904b to
ee3b2e3
Compare
renovate
Bot
force-pushed
the
renovate/radzen.blazor-12.x
branch
from
October 28, 2026 08:48
ee3b2e3 to
096d582
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
12.0.7→12.1.8Release Notes
radzenhq/radzen-blazor (Radzen.Blazor)
v12.1.8: 12.1.812.1.8 - 2026-10-28
Improvements
AriaLabelandAriaLabelledByparameters, rendered on the element with thegridortreegridrole. The role element rendered no name andaria-labeloraria-labelledbysplatted onto the component landed on the role-less wrapper where assistive technology ignores them, so screen readers announced an unnamed grid and axe reported "ARIA grid must have an accessible name". When the parameters are not set a splattedaria-labeloraria-labelledbyis used instead and those two attributes no longer reach the wrapper, because ARIA 1.2 prohibits naming a generic element (#2780).Fixes
aria-pressedfor the dark theme. The button rendered no name, becauseRadzenToggleButtonwrote itsAriaLabelparameter after the splatted attributes and removed anaria-labelplaced on the component; the toggle button now falls back to the splattedaria-labeland omits the attribute when neither is given, andRadzenAppearanceTogglegains anAriaLabelparameter that defaults to the localized "Dark theme" text. The pressed state used to mean the light theme was active, so screen readers announced "Dark theme, pressed" in the light theme;aria-pressed, the active state and the toggled style now follow the dark theme while the icons and click behavior are unchanged. When the light and dark names resolve to the same theme the button is rendered disabled instead of flipping a pressed state that changed nothing (#2781).KeyPropertyregardless of where it appears in the markup. The key getter used to match selected, expanded and child-data items by key was created only whenDatachanged, so aKeyPropertyplaced afterDatawas ignored on the first render and aValueitem that was a different instance with the same key was not highlighted; a later change ofKeyPropertywas ignored as well. The getter is now created after the parameters are set and recreated whenKeyPropertychanges.Valueis bound beforeDataand both change in the same render.Reset, which runs wheneverDatachanges, emptied theValuebacking field without touching the selected items, so Blazor assignedValuefirst, theDatasetter wiped it and no row was highlighted until the next render whileValuereported no selection. The field is now cleared only together with the selected items whenResetis asked to reset row state.RowRenderwith the row class instead of replacing it. The consumer class was splatted after the computed row class and removedrz-data-rowand therz-state-highlightselection class, so styled rows lost their selection highlight; the classes are now combined, also when aRowClickhandler adds the row click to the same attributes.v12.1.7: 12.1.712.1.7 - 2026-10-26
Improvements
ShowColumnHeadersandShowRowHeadersparameters, bothtrueby default. Setting one tofalsehides the column letters or the row numbers together with the space they take, their resize handles and whole-row or whole-column selection, which suits presentation grids where the axis labels live in frozen rows and columns instead. The setting applies to every sheet of the workbook and can be toggled at runtime, and frozen pane splitters stay in place when the headers are hidden (#2728). Thanks to @panoskentros!LOOKUPandINDIRECTfunctions, which returned#NAME?before.LOOKUPcovers the vector and array forms with Excel's case-insensitive comparison, type skipping and vector extension rules.INDIRECTaccepts A1 text with or without a sheet name, a defined name and R1C1 text with offsets relative to the formula cell, returns#REF!and#VALUE!as Excel does, and is volatile so dependent formulas recalculate on every change. Both are shown in the Spreadsheet formulas demo (#2777).Worksheethas aDefinedNamesdictionary for names scoped to that sheet, a formula resolves a sheet-scoped name before a workbook name of the same name, renaming a sheet rewrites references in both, and xlsx files round-tripPrint_Area,Print_Titles,_FilterDatabaseand thehiddenattribute instead of dropping them (#2777).StackGroupparameter. Stacked series that share a group form one stack and different groups render side by side in the same category, each with its own value axis fit, so revenue and expense breakdowns can sit next to each other and next to a plain column series (#2776).Fixes
VLOOKUP,HLOOKUP,MATCHandXMATCHtreat a blank lookup value and blank cells as Excel does, so a blank lookup no longer matches the first blank cell of the lookup column and shows an empty string where Excel shows0. The approximate modes no longer fail on a column that mixes numbers and text (#2777).XLOOKUPandXMATCHmatch Excel for blank cells, empty strings and values of different types. A blank lookup value and an empty string are no longer treated as equal, and the approximate and binary search modes order values as Excel does, so the next-larger mode returns the smallest larger value instead of the first larger one it meets.MouseLeavethat reopened the tooltip in a loop. The fallback now picks the side with the most room, caps the popup at the viewport edge withmax-heightand inner scrolling, and keeps amax-heightfromTooltipOptions.Style(#2548).MinLength. Backspacing kept the previous matches on screen until the filter delay elapsed, and the next keystroke reopened the popup with the same stale items. The search text is cleared when the popup closes and the input listener keeps the popup closed while the value is shorter thanMinLength(#2775).v12.1.6: 12.1.612.1.6 - 2026-10-22
Improvements
RadzenStrings.pt.resxsatellite covers every resource key and uses the neutralptculture, so it applies topt,pt-BRandpt-PTapps without any setup. The wording follows common Brazilian usage in business software. Portuguese is also available in the localization demos (#2774).Fixes
preventDefaultflag was applied from the previous render, which blocked the first Tab after the menubar took focus and every Tab after a handled key. A static document listener now prevents the default per key in the browser for arrows, Home, End, Enter, Space, Escape and typeahead characters only (#2773).FilterMode.SimpleWithMenuno longer shows the filter value through the operator button on a narrow column. The compact layout cleared the button withtext-indent, which only offsets the first character, so a scrolled value was painted under the translucent button. The input now uses inline padding, which works in every theme and in RTL (#2771).Auto="false"no longer shows a broken image for non-image files. An object URL was created for every selected file and rendered as animg, so a PDF or text file displayed the browser's broken-image glyph. The preview is now rendered only forimage/*files, and other files show a document icon in the same slot so rows stay aligned.v12.1.5: 12.1.512.1.5 - 2026-10-19
Improvements
PopupPositionparameter that shows a popup validator above, below, to the left or to the right of its field.Bottomstays the default, so existing validators look the same. The popup stays next to its field when the layout changes, and a validator positioned while its field is hidden, for example on submit with the field in an inactive tab or a collapsed panel, is placed once the field is shown instead of off-screen (#640). Thanks to @panoskentros!Fixes
colspan, and the internalrz-html-editor-cell-selectedclass is no longer saved inValue. Thanks to @Radium001!FilterMode.Simplein trimmed Blazor WebAssembly apps instead of throwingArgumentException(NotAMemberOfType). The "No value" entry of the filter dropdown was an anonymous type whose properties the trimmer removed. It is now aDropDownItem<object>, like the enum entries.v12.1.4: 12.1.412.1.4 - 2026-10-16
Improvements
AllowDateSelectionparameter that turns the date title into a button opening a date picker, so users can jump straight to a date. Month and year views offer months instead of days, and changing only the year just browses (#626). Thanks to @panoskentros!CloseOnScrolloption inContextMenuOptionsthat closes the menu when the container of the clicked element is scrolled, also after the menu was reopened while open, for example by right-clicking one row after another. Thanks to @Radium001!Fixes
FilterTemplatebound toFilterValueandSecondFilterValueare cleared, instead of showing an empty grid or throwing "A second operation was started on this context instance".ClearFiltersreset the operator to the type default (Equalsfor dates) while the filter value fell back to the bound parameter, and changing both bound values started overlappingLoadDatacalls. The declared operator is now restored, cleared template values no longer fall back to the parameter, and both values changing together reload the grid once (#2768).SimpleWithMenufilter operator menu of a grid nested in another grid's row template open when clicked. The click bubbled to every ancestor grid's listener, so the popup was toggled once per nesting level and closed right after opening (#2767).v12.1.3: 12.1.312.1.3 - 2026-10-15
Improvements
Columnsparameter that sets how many columns fit on each line, so a layout with a fixed number of columns per line no longer needsSizeon everyRadzenColumn.ColumnsXS,ColumnsSM,ColumnsMD,ColumnsLG,ColumnsXLandColumnsXXchange it per breakpoint. Counts that do not divide 12, such as 5 or 7, work as well andGapis respected. A column with its ownSizefor the current breakpoint keeps it (#2760).Fixes
/xl/worksheets/sheet1.xmlwas prefixed withxl/so the sheet was not found, and a<c>or<row>without the optionalrattribute was dropped. Relationship targets are now resolved against their source part, for sheets as well as drawings, images, charts and tables, and a cell or row without a reference takes the position after the previous one (#2757).@, soif (!string.IsNullOrEmpty(tick.Value))was emitted as a text node in each tick, which screen readers read once per tick, and an empty tick label was rendered even withShowTickLabels="false".scrollLeft, so the index computed from the scroll position was negative, got clamped to 0 and reset the selection right afterNavigateor a pager click. The scroll handler now uses the absolute scroll offset.PersistentComponentState.TryTakeFromJson<T>orJsonSerializer.Deserialize<T>behind an unannotated helper. A trimmed Blazor WebAssembly app kept the type but lost its parameterless constructor and theCountandValuesetters, so System.Text.Json threwNotSupportedException. Radzen.Blazor now embeds a trimmer descriptor that keeps these members whenever an app keeps the type.v12.1.2: 12.1.212.1.2 - 2026-10-12
Improvements
v12.1.1: 12.1.112.1.1 - 2026-10-12
Improvements
QueueMessagesaccepts messages sent while an answer streams instead of ignoring them: the message shows right away marked as queued, is sent when the answer completes, andStopreturns its text to the box. A service can take such a message mid-response throughIAIChatService.TryQueueMessageAsyncor anIChatMessageQueueits chat client exposes viaGetService; a user-roleChatResponseUpdatewith the message id tells the chat the model read it, which moves the message under the answer so far and starts a new assistant message. The send button stays next to the stop button while streaming.HeaderTemplate,InputHeaderTemplateandInputFooterTemplateslots for a conversation switcher, status line, model picker or action buttons around the conversation and the input.@bind-Inputreads and sets the text in the box,FocusAsyncfocuses it.ChatToolCall.TextPositionandChatMessage.GetParts()expose it for custom templates.ChatMessage.KindwithStatus,ProgressandErrorentries rendered as a centered note, a spinner line and an alert;AddMessage(ChatMessage),RemoveMessageandRefreshmanage them.RenderMessagerenders a message the default way from insideMessageTemplate.ShowAvatars,SendButtonText,SendButtonIcon,StopButtonTextandStopButtonIcon.AttachmentAddingreceives every picked file and can cancel or replace it, for example with a scaled down image;MaxTotalAttachmentSizelimits the attachments of a message as a whole.UsageTemplateandMessageFooterTemplaterender usage and extra content per message;ChatMessage.AdditionalPropertiescollects theAdditionalPropertiesof the streamed updates, for example credits or changed files.Fixes
v12.1.0: 12.1.012.1.0 - 2026-10-12
Improvements
Microsoft.Extensions.AI.AIChatServicetalks to the model throughIChatClient: register the client of any provider (OpenAI, Azure OpenAI, Ollama and others) withAddChatClientand the chat picks it up, or keep the built-inOpenAICompatibleChatClient, which streams from any OpenAI-compatible chat completions endpoint and now parses tool calls.IAIChatService.GetChatClient()exposes the configured pipeline, with theModel,MaxTokensandTemperaturedefaults applied, to your own code.Toolstakes theAIFunctions created withAIFunctionFactory; calls run automatically and render as cards with the arguments, status and result,ToolCallTemplaterenders a result with Radzen components (generative UI),ApprovalRequiredAIFunctionmakes the chat ask the user before a tool runs (ApproveToolCall,RejectToolCall), andToolCallCompleted,ShowToolCallsandAllowMultipleToolCallscontrol the rest. Multiple approvals in one answer are batched and the answer continues once all of them are decided.ShowReasoning), lists the sources of an answer under it (ChatMessage.Citations,ShowCitations,CitationTemplate) from the citation annotations of providers such as OpenAI web search or Perplexity and from tools that returnChatCitation, and normalizes the citation markers of gpt-oss models to plain[n].AllowAttachmentsrenders a paperclip (AcceptedAttachmentTypes,MaxAttachmentSize,Error),AddAttachmentadds files from code and pending attachments show as thumbnails under the input. Images go to multimodal models as image content, text files (txt, csv, md, json, xml and similar) as text so any model can read them, PDF files as file parts for providers that support them. A stop button replaces the send button while an answer streams;Stop()keeps the text received so far.ShowUsageshows the tokens the provider reports for each answer.IConversationStore.InMemoryConversationStorekeeps them for the lifetime of the application andAddConversationStore<TStore>()plugs in a database store;ConversationSessionSerializerround-trips a session with its model history, tool calls, results and attachments as JSON. The service saves after every answer,UserIdtells whose conversation it is andGetOrCreateSessionAsync,GetSessionsAsync,ClearSessionAsyncandDeleteSessionAsyncmanage the saved ones; a chat with aSessionIdrestores its conversation on initialization.Contextapplies every prompt to a piece of text, for example the content or selection of an editor;Value,Output,GeneratedandOutputTemplatewire it into the page.Valueis the context and the output replaces it, is appended to it or is discarded. WithTargetIdset to the id of the input or textarea, the text selected in it becomes the context and only the selection is replaced.ShowButton="false"withOpenAsync(element)opens the popup from your own trigger andAppliedreports the new value.TModelto the model (DescriptionandDisplayattributes guide it), asks for a JSON object and assigns the converted values toData, including dates, numbers, enums and Guids, notifying theEditContext.FieldsandInstructionsnarrow the request andPaste(text)works without the clipboard.IAIChatService.GetEmbeddingGenerator():OpenAICompatibleEmbeddingGeneratorimplementsIEmbeddingGenerator<string, Embedding<float>>over any OpenAI-compatible embeddings endpoint (EmbeddingsEndpoint,EmbeddingsProxy,EmbeddingsModelinAIChatServiceOptions), or register the generator of your provider.ApiKeythere, through the options, the component parameter or a per-message override, throws with a message that says to keep the key on the server and setProxyto a server endpoint that adds it; Blazor Server applications keep working as before.v12.0.8: 12.0.812.0.8 - 2026-10-10
Improvements
AllowOverlapparameter. When it isfalsea move or resize that would place a tile over another visible tile is blocked: the tile first tries the free axis alone so a diagonal drag slides along the neighbor, otherwise it stays at its last valid cell. Tiles that already overlap when the drag starts are ignored so they can still be pulled apart. The default staystrue.Fixes
ReloadwhenKeyPropertyis set. The row toggler icon resolved the expanded state by key while the detail row andCollapseItemresolved it by object reference, so afterReloadreturned fresh objects with the same keys the icon stayed expanded, the detail disappeared and clicking the icon could not remove the stale entry. The row template now usesIsRowExpanded,CollapseItemremoves the stored key that matches byKeyProperty,Singleexpand mode compares withItemEqualsand the hierarchy view re-keys the child data to the fresh parent object so expanded children survive a reload (#2752).Valuewhen it is declared beforeDatain the markup. Blazor assigns parameters in markup order and theDatasetter resets the stored value wheneverDatachanges, so aValuedeclared beforeDatawas lost on the first render and again every timeDatawas replaced. TheValueparameter is now captured before the first await and re-applied after the base call when theDatasetter has reset it (#2754).Datais an EF CoreIQueryable. The null guard added aroundAny/AllandIsEmpty/IsNotEmptycollection filters protects in-memory data withnullcollections, but EF Core cannot translate anullcomparison of a projected collection such asc.Orders.Select(o => o.Number).ToList()and failed the whole query with "could not be translated". The guard is now emitted only for in-memory sources, so database providers get a plainAny/Allas in 11.1.6 (#2755).Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.