Commit Graph

6209 Commits

Author SHA1 Message Date
yordanov
cabafcf4a0 Fix accessibility alerts on demos homepage 2026-07-06 15:29:07 +03:00
Atanas Korchev
40d0583987 Transfer the full cell state in spreadsheet paste, cut and autofill
Formats, quote prefixes and hyperlinks are now copied, empty source
cells blank their destinations and cut clears the source, matching
Excel. Entering a value over a formula cell replaces the formula, quote
prefixed entries store literal text and undo restores cells exactly as
captured, including after redo.

Breaking change: RangeSnapshotCommandBase snapshots cells as detached
clones (Dictionary<CellRef, Cell?>) instead of a value/formula/format
tuple.
v11.1.1
2026-07-06 12:21:20 +03:00
Vladimir Enchev
f188e48a88 RadzenRequiredValidator shows "required" for a filled field on blur, and does not block form submit
Fix #2605
2026-07-06 11:11:21 +03:00
panoskentros
0a44fb7815 update tile-pasting to match Excel's behavior 2026-07-06 10:44:26 +03:00
panoskentros
483e1c0901 Implement Excel-style tiled clipboard paste 2026-07-06 10:44:26 +03:00
yordanov
96d5e7469f Fix resx syntax 2026-07-06 10:08:00 +03:00
yordanov
5072dbd216 Adjust demos home page CTA button styles 2026-07-06 10:08:00 +03:00
yordanov
a3300b76e1 Replace YouTube subscribe iframe with a badge link 2026-07-06 10:08:00 +03:00
yordanov
4f28987d7a Use Caption instead of Overline text style in demos top menu 2026-07-06 10:08:00 +03:00
yordanov
7e31378bcf Add localizable screen reader text to anchor links in RadzenText via AnchorAriaLabel 2026-07-06 10:08:00 +03:00
Vladimir Enchev
198dcd7bbd Version updated 2026-07-06 09:45:10 +03:00
Vladimir Enchev
859909f5c4 RadzenPivotDataGrid Sum/Average aggregates fall back to Count for dynamic data
For IDictionary data the aggregate Property is a dynamic LINQ expression, so
reflection cannot resolve its type and isNumeric was always false, causing
Sum/Average/Min/Max to degrade to Count. Fall back to the configured Type when
reflection fails, mirroring RadzenPivotField.FilterPropertyType.
2026-07-06 07:58:44 +03:00
Vladimir Enchev
9e60b2322b Merge pull request #2600 from wimsoetens-cmd/fezt/Set_Width_YAxis
Set the width of theY-axis in pixels on a graph
2026-07-06 07:57:26 +03:00
Vladimir Enchev
0fa43adcd6 Exposed OpenPopup()/ClosePopup()//TogglePopup() for RadzenDropDown/RadzenDropDownDataGrid 2026-07-06 07:53:41 +03:00
Vladimir Enchev
0de027176e RadzenPieSeries do not display anything in certain scenarios 2026-07-06 07:45:40 +03:00
Atanas Korchev
8e42ac6d1a Use task-led titles for DataGrid and Chart config demos to reduce head-query cannibalization 2026-07-05 18:00:37 +03:00
Atanas Korchev
f03e442b5e Cache GitHub badges for 4 hours to avoid stuck shields.io rate-limit errors 2026-07-05 17:58:00 +03:00
Atanas Korchev
a1b56e07dc Account for East Asian wide glyphs when sizing auto fitted columns for export
CJK, kana, hangul, fullwidth forms and emoji render at roughly twice
the digit width (15.25px regular / 15.75px bold, measured against
Excel), so the ASCII fallback under-sized such columns by half. Runs
over runes so surrogate pairs count as one glyph.
2026-07-05 17:27:51 +03:00
Atanas Korchev
54a1c905f4 Size auto fitted columns for Excel's font metrics on export
A width that snugly fits content rendered with the browser theme font
can clip in Excel, which renders the Normal style font with different
character widths - most visibly currency values whose digits are wider
in Aptos Narrow than in typical UI fonts.

On export, auto fitted columns recompute their width from the column
content using per-character advance widths of Aptos Narrow 11 measured
against Excel (regular and bold), keeping the larger of the model width
and the required width. The in-component width is unchanged.
2026-07-05 17:27:51 +03:00
Atanas Korchev
b5960d4dd6 Over-fit auto sized columns slightly to absorb renderer differences
Canvas metrics of the theme font differ from what other renderers use
for the same content (Excel renders exported columns with the Normal
style font), so an exact fit can clip after export. 3% covers the
observed drift while keeping the in-component fit tight.
2026-07-05 17:27:51 +03:00
Atanas Korchev
8c4d32eab4 Fix XLSX column widths rendering too narrow in Excel
Exported files write Aptos Narrow 11 as the Normal style font but column
widths were converted with Calibri 11's 7px maximum digit width, and
columns at the default width were not exported at all - Excel applied
its own 68px default and numeric cells overflowed as ####.

XLSX column widths are measured in characters of the Normal font's
maximum digit width (ISO/IEC 29500 18.3.1.13). Excel renders Aptos
Narrow 11 columns at 7.5px per character (measured empirically), so the
conversion now uses a per-font digit width - 7.5 for Aptos Narrow,
scaled by font size, 7 for Calibri and other fonts - selected from the
file's Normal font on read. The default column width is persisted as
sheetFormatPr defaultColWidth and restored on load, so default-width
columns render at the same pixel width in Excel as in the component.
2026-07-05 17:27:51 +03:00
Atanas Korchev
da70790c3e Measure auto fit column width against the rendered text
Replaces the character-count width estimate with Excel-faithful auto fit:
the displayed text (number format applied to the evaluated value) of the
column's populated cells is measured with canvas.measureText using the
active theme's cell font, so formulas, number formats, bold and
conditional formatting fit correctly in any theme. Empty columns keep
their width, merged cells are ignored, hidden rows are included and the
width is clamped to Excel's 255 character limit. The behavior was
verified against Excel via COM automation.

Auto fitted columns are tracked per column and persisted as bestFit in
XLSX; manual resize and undo clear the flag.
2026-07-05 17:27:51 +03:00
panoskentros
e306d13501 Readjust column width to fit longest cell by double clicking column edge (with a cap of 800px) 2026-07-05 17:27:51 +03:00
Wim Soetens
f842c049bc Add Tests 2026-07-03 23:18:33 +02:00
Wim Soetens
c0db20e241 Resolve pull request remarks
- Validate width < 24
- Added with to ShouldRefreshChart
- Added comment that width is only used for category axis in normal charts
- Did some cleanup
2026-07-03 18:49:52 +02:00
Vladimir Enchev
384e53315e Various localization fixes 2026-07-03 17:58:30 +03:00
Vladimir Enchev
141db10a89 QRCode, Barcode and Chart ToPng can return the PNG data and accept output size options 2026-07-03 16:52:59 +03:00
Vladimir Enchev
efd92eb051 Fix multiple value axes with RadzenBarSeries behaving like category axes. Fixes #2597 2026-07-03 16:51:53 +03:00
Wim Soetens
ae4ece82f2 Sets the width of the axis in pixels. If not specified, the width is calculated automatically. Setting a fixed width can help reduce unnecessary spacing when using multiple Y-axes. 2026-07-03 12:30:33 +02:00
Vladimir Enchev
233596fd69 Merge pull request #2599 from radzenhq/accessibility-fixes
Accessibility fixes
2026-07-03 12:42:54 +03:00
yordanov
f0133c231f Unify selectbar outlne color on focus 2026-07-03 12:40:27 +03:00
yordanov
9914b3904a Reorganize line chart demos 2026-07-03 10:24:26 +03:00
yordanov
397b649fb9 Chart legend line swatch should also use custom series stroke color 2026-07-03 10:24:26 +03:00
yordanov
c6f7f75633 Fix chart crosshair label formatting and null handling at axis edges 2026-07-03 10:24:26 +03:00
Vladimir Enchev
3092e88626 Demos: use semantically correct heading levels in examples
Add explicit TagName to RadzenText usages that rendered real heading
elements (H1-H6, DisplayH1-H6, Subtitle1/2) purely for visual styling,
and convert raw HTML headings in examples to RadzenText with proper
TextStyle and TagName. Visual labels now render as <p>, genuine
headings use correct levels without skips (WCAG 1.3.1).

Fixes #2596
2026-07-03 10:19:56 +03:00
Vladimir Enchev
18190e7001 various CSS outline fixes 2026-07-03 09:05:31 +03:00
Vladimir Enchev
e15b3acab1 Various accessibility fixes 2026-07-03 08:34:20 +03:00
Vladimir Enchev
74af00b773 DataGrid: escape popup id in setPopupAriaExpanded selector to fix querySelector error with dynamic columns 2026-07-02 17:22:12 +03:00
Vladimir Enchev
0260a9edbc Version updated v11.1.0 2026-07-02 11:59:11 +03:00
Vladimir Enchev
86de56e796 Merge pull request #2589 from radzenhq/accessibility-improvements
Accessibility improvements across various components
2026-07-02 11:58:08 +03:00
Vladimir Enchev
6d66d0145f FormField: fix invalid/empty label for association
RadzenFormField rendered for="@Component" on the wrapping <div> (invalid - <div>
does not take for) and on the label even when Component was unset, producing for=""
which accessibility checkers flag as a label with no association. Removed the div
for and only emit the label for when Component is set. Updated the FormFieldTextBox
demo to give each input an id matching the FormField Component so the label resolves.
2026-07-02 11:57:47 +03:00
yordanov
26462e19d8 Update premium themes 2026-07-02 11:42:08 +03:00
Vladimir Enchev
1904f2e719 Chart: keep the chart tooltip from hiding on mouse over
The chart tooltip is driven by the chart's mousemove and closes on plot mouseleave,
so moving the pointer onto the tooltip (which overlays the plot) counted as leaving
the chart and dismissed it. Make the chart tooltip container pointer-events: none so
the pointer passes through to the chart, which keeps tracking and the tooltip stays
visible. Normal (non-chart) tooltips keep pointer-events: auto.
2026-07-02 08:35:09 +03:00
Vladimir Enchev
dae8e1c684 Switch: show focus outline on the wrapper when the inner input is focused
The .rz-switch focus styles targeted the wrapper, but the focusable element is the
visually hidden input, so :focus / :focus-visible never matched. Use :focus-within
and :has(:focus-visible) so the wrapper reflects the input's keyboard focus.
2026-07-02 08:35:09 +03:00
Vladimir Enchev
d22251d17b Tree: scroll focused item into view on keyboard navigation
RadzenTree only moved focusedIndex on Arrow/Home/End without scrolling, so the
focused node could end up off-screen below the scroll viewport. OnKeyPress now
scrolls the active item into view via a new Radzen.scrollIntoViewIfNeededById JS
helper. Also gate the TreeCheckBoxes demo ItemRender so it only forces the first
category to indeterminate before it has been expanded (the tree cannot know child
checked states until the branch is expanded).
2026-07-02 08:35:09 +03:00
Vladimir Enchev
508398e8fd Switch: render wrapper as span instead of label to avoid empty form label
RadzenSwitch wrapped its hidden input in a <label> used purely for styling, which
accessibility checkers flag as an empty form label (a label with no text content).
The wrapper is now a <span> with an onclick that toggles the switch, and the input
stops click propagation so Space does not double-toggle. External RadzenLabel/for
association to the input id is unchanged.
2026-07-02 08:35:09 +03:00
yordanov
5978aadd6f Update premium themes 2026-07-02 08:35:09 +03:00
Vladimir Enchev
48f1d1cf64 PanelMenu: do not render an empty submenu in Server mode
In Server RenderMode a collapsed expandable item rendered an empty <ul role="menu">,
which is invalid ARIA (a menu must contain at least one menuitem) and is flagged by
accessibility checkers. The submenu (Expander + ul) is now rendered only when it has
content, and aria-controls references it only when it exists.
2026-07-02 08:35:09 +03:00
Vladimir Enchev
b444af8553 Demos: use PanelMenu Server RenderMode for the navigation and pre-expand the active path 2026-07-02 08:35:09 +03:00
Vladimir Enchev
284d6db3dc PanelMenu: add Server RenderMode to render collapsed branches on demand
Adds PanelMenuRenderMode (Client default, Server) so large menus can keep the
DOM small by rendering child items only while their parent is expanded.

- RadzenPanelMenu.RenderMode parameter; child content gated on expanded in Server mode.
- Keyboard expand decisions (Enter/Space, ArrowRight) key off ChildContent instead of
  rendered items.Count so collapsed branches expand in Server mode.
- Fix focus/selection loss on collapse: RadzenPanelMenuItem.Dispose now routes nested
  items to ParentItem.RemoveItem (matching AddItem) instead of Parent.RemoveItem, which
  reset focusedIndex/currentItems.
- Keep the expand arrow visible for expandable items with no rendered children in Server
  mode via the rz-navigation-item-expandable class.
2026-07-02 08:35:09 +03:00