Set EmbedAllSources=false and DebugType=portable in the root
Directory.Build.props so the demo and API-reference assemblies no longer
carry an embedded PDB containing full source. The embedded source is
deflate-compressed, so Brotli cannot reclaim it - it was inflating
RadzenBlazorDemos.wasm from ~1.3MB to ~4.2MB Brotli (and the lazy API
bundle similarly).
The packable Radzen.Blazor library is unaffected: it is governed by
Radzen.Blazor/Directory.Build.props and still ships embedded sources in
its .snupkg for consumer step-into-source debugging.
- Turn /datagrid into a dedicated DataGrid overview: keyword-rich intro
(IQueryable, Entity Framework, OData, ...), flagship live grid, 12
feature cards linking to each demo, and an FAQ. Matches the overview
pattern Telerik/DevExpress/Infragistics/Syncfusion use for the head term.
- Move the IQueryable/EF demo to /datagrid-iqueryable (first under the
Data-binding nav group); /datagrid keeps its URL/authority.
- Generalize SeoSchema for multiple clusters; add GetDataGridPages so every
DataGrid page emits TechArticle + BreadcrumbList (Home > DataGrid > Page),
the overview also FAQPage.
- Fix TitleFor to honor an explicit Title on an "Overview"-named entry.
Extend the chart SEO work to the 15 chart configuration and feature
demo pages (axis, legend, tooltip, interpolation, data labels,
crosshair, etc.):
- GetChartConfigPages() + SeoSchema treats these pages as article-
eligible (TechArticle + BreadcrumbList + FAQPage), without adding
them to the /charts gallery ItemList
- Human-readable intros, "how do I..." FAQs, and related links per page
Enrich all 58 chart/dataviz demo pages on blazor.radzen.com for search
and AI discovery:
- JSON-LD via a new head-schemas section + SeoSchema/DemoSeo, emitted
once per page from MainLayout (CollectionPage+ItemList on /charts,
TechArticle+BreadcrumbList+FAQPage on each chart page)
- Human-readable intros, 1-3 FAQs, and related-chart links per page,
sourced once from ExampleService (rendered on-page and as FAQPage)
- Complete OG/Twitter tags; corrected gallery copy (30+ chart types /
40+ data-visualization components); dropped "native" wording
- Rename chart-spline/-histogram/-pareto to {type}-chart
Adds RadzenBlazorDemos/Services/SeoSchema.cs and Shared/DemoSeo.razor.
- Edited value cells now repaint: fire the changed cell's notification even
inside a command batch (only dependent recalc is deferred to EndUpdate).
- Table sort excludes the header (and totals) row by sorting DataBodyRange;
the cell-menu and context-menu sorts are now table/auto-filter aware.
- Re-apply active filters after a sort (and on sort undo) so filtered-out
rows stay hidden by value.
- Enable Merge, Borders, Conditional and Data Validation tools when a range
is selected by subscribing to Selection.Changed.
- Keep the worksheet prefix on cross-sheet references in the formula-bar
syntax highlighter (use the raw token text).
Adds regression tests for all of the above.
A Top or Bottom legend only reserved a single row of height regardless of
series count, so with many series the legend wrapped onto multiple rows and
overlapped the plot area. Measure now simulates the horizontal wrap across the
chart width and reserves height for every wrapped row.
Fixes#2573
Replace RadzenChart.ExportAsync with ToSvg() returning the baked, standalone
SVG string (matching QRCode/Barcode). Add ToPng(fileName) to all three, which
rasterizes the SVG to PNG and downloads it via the shared Radzen.downloadFile
helper. Fix copy-pasted RadzenBarcode.ToSvg doc that referenced a QR code.
The rebase combined master's ResizeObserver-teardown fix with branch 11's
own Dispose, leaving two overrides. Merge them so disposal both disconnects
the resize observer (Radzen.destroyResizable) and runs disposeElement.
Ship satellite resource files (RadzenStrings.{de,fr,es,it,ja}.resx) with all
535 strings translated, so components localize out of the box via the standard
.NET ResourceManager.
Make culture handling reactive everywhere:
- RadzenDatePicker rebuilds its month/year lists when Culture or the
DefaultCulture cascade changes (previously cached at init).
- Scheduler views, HtmlEditor tools and the spreadsheet ChartOverlay localize
through their parent component's UICulture instead of CurrentUICulture;
spreadsheet dialogs honor a DefaultUICulture cascade. UICulture is added to
IScheduler/ISpreadsheet as default interface members, so this is non-breaking.
Update the Localization demo with an interactive language switcher (cascading
DefaultUICulture + DefaultCulture) backed by an ILocalizer so it works in-place
on Blazor WebAssembly.