Commit Graph

56 Commits

Author SHA1 Message Date
yordanov
fd643aea50 Fix clipped chart tooltip at the chart edge and make tooltip placement RTL-aware 2026-07-08 16:53:13 +03:00
Vladimir Enchev
4033a3c291 Fix additional value axis showing category labels when its series is hidden. Fixes #2607 2026-07-06 17:40:29 +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
yordanov
c6f7f75633 Fix chart crosshair label formatting and null handling at axis edges 2026-07-03 10:24:26 +03:00
yordanov
5cac28f5e8 Add RTL-aware Start/End legend positions and default to End 2026-06-22 12:24:03 +03:00
yordanov
1ba8529cb9 Style axis crosshair labels 2026-06-19 11:59:59 +03:00
yordanov
cdc0f410bc Add TickPlacement option to category axis for between/on tick positioning 2026-06-18 15:44:03 +03:00
yordanov
07510c0aa9 Prevent infinite loop in logarithmic axis tick measurement 2026-06-15 18:45:54 +03:00
yordanov
ce5f4c3beb Add initial render animations for part-to-whole and financial charts 2026-06-15 18:45:54 +03:00
yordanov
11dc51c41a Fix RTL layout of bar charts 2026-06-15 18:45:53 +03:00
yordanov
a53596fab2 Redesign chart data labels: positions, background chips, overlap hiding and formatting 2026-06-15 18:45:53 +03:00
Vladimir Enchev
0283a67892 fix(chart): reserve space for wrapped top/bottom legend rows
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
2026-06-15 18:45:53 +03:00
Vladimir Enchev
50ea7dbad0 Unify image export: ToSvg() returns markup, ToPng() downloads across Chart, QRCode, Barcode
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.
2026-06-15 18:45:53 +03:00
yordanov
01e9afabc0 Improve chart UI/UX: gradient fills, animations, synced charts, axis tooltips 2026-06-15 18:45:52 +03:00
Vladimir Enchev
308f4ddd51 fix(chart): match user subclasses of pie/donut/funnel/pyramid series
IsPolarSeries only matched generic concrete types, so a user subclass
like 'class MyPie : RadzenPieSeries<MyItem>' fell through and was
treated as a point series in FindClosestSeries (and would have rendered
axes from ShouldRenderAxes). Walk the base chain to find the generic
definition.
2026-06-15 18:45:17 +03:00
Maurycy Bartczak
eac7c02263 fix(chart): treat pie-family series as region hits in tooltip selection
Pie, donut, funnel and pyramid series return the cursor position from
DataAt (a hit anywhere inside the filled shape), so their distance is
always 0 and they would beat a line/scatter marker drawn on top - the
same problem already fixed for columns and bars.

Extend the region classification to cover the radial series and reuse
the shared IsPolarSeries helper in ShouldRenderAxes. Rename IsAreaSeries
to IsRegionSeries since it now covers pies as well as filled bars.
2026-06-15 18:45:17 +03:00
Maurycy Bartczak
f58aa45b28 fix(chart): correct tooltip hit-testing for line markers over columns
On a non-shared tooltip with overlapping column + line series, the column
won the hover because its DataAt reports the cursor position (distance 0),
and the tooltip popup did not refresh when switching between series that
share the same data objects.

Add FindClosestSeries with point-series priority (line/scatter/bubble win
over column/bar within tolerance) and include the series identity in the
tooltip de-duplication. Add a regression test.
2026-06-15 18:45:17 +03:00
Atanas Korchev
41e0f9944a Enforce csharp_prefer_braces at error severity
Adds braces to all single-statement if/else/for/foreach/while bodies in
Radzen.Blazor. Flipping the rule to error in .editorconfig and enabling
EnforceCodeStyleInBuild prevents future regressions.

Fixes generated mechanically via `dotnet format style --diagnostics IDE0011`.
The accompanying using-directive sort was reverted to keep this PR
braces-only.
2026-06-15 18:45:13 +03:00
Vladimir Enchev
cce4b2de9e Move chart crosshair to per-axis configuration with axis label
Replace the tooltip-level CrosshairMode/Color/LineType/StrokeWidth
parameters with a RadzenAxisCrosshair child component on
RadzenCategoryAxis / RadzenValueAxis. Each axis can independently
control Visible, Stroke, StrokeWidth, LineType, Snap, and Label.

The X line snaps to the nearest data point regardless of
TooltipTolerance, and the optional Label renders a small SVG box at
the axis edge with the formatted axis value, reusing the axis's
Formatter/FormatString and styled via the existing tooltip CSS
variables.

Move the split tooltip example out of the crosshair demo into the
chart-tooltip page where it conceptually belongs.
2026-06-15 18:45:09 +03:00
Atanas Korchev
9709375d9e Refresh chart when a series is removed
Removing a series from the chart only dropped it from the Series list
without rebuilding the category/value scales. When a RadzenChart
instance was reused across a render that replaced its series, new
series' Data callbacks would refresh the scale while the outgoing
series were still present, and after they were finally disposed the
scale kept the stale categories. Triggering a refresh on removal
rebuilds the scales from the live series set.
2026-06-15 18:45:09 +03:00
Vladimir Enchev
a39645c414 various fixes 2026-06-15 18:45:08 +03:00
Vladimir Enchev
ac062a2fa3 IJSObjectReference pattern used in the rest of the components with JS functionality 2026-06-15 18:44:02 +03:00
Vladimir Enchev
79bfb46c15 RangeNavigator added
Fix #2322
2026-06-15 18:43:33 +03:00
Vladimir Enchev
883d1f3f31 Chart RTL support added 2026-06-15 18:43:33 +03:00
Vladimir Enchev
1038c6661c Chart series and legend hover added 2026-06-15 18:43:33 +03:00
Vladimir Enchev
966fea9d37 Chart pan and zoom support added 2026-06-15 18:43:33 +03:00
Vladimir Enchev
08fd5eba46 Indexed and Logarithmic axes added 2026-06-15 18:43:32 +03:00
Vladimir Enchev
4456e22ef6 Inverted axis support added and chart demos grouped 2026-06-15 18:43:32 +03:00
Vladimir Enchev
ad96b8dd74 Multiple axes support added 2026-06-15 18:43:32 +03:00
Vladimir Enchev
3facb1c80e RadzenPyramidSeries added 2026-06-15 18:43:32 +03:00
Vladimir Enchev
bf9763bbd6 Heatmap, Treemap and Funnel added 2026-06-15 18:43:32 +03:00
Atanas Korchev
e34ebab4a6 Add ShowTooltipOnLegend for pie and donut series
Hovering or clicking a legend item now displays the tooltip for the
corresponding segment. This helps when small slices are difficult to
hover over directly on the chart. The feature is enabled by default
and inherited by RadzenDonutSeries via RadzenPieSeries.
2026-03-02 13:15:49 +02:00
Atanas Korchev
126b2d1efa RadzenSpiderChart (#2417)
* spider chart added

* code improved

* EventConsole added

* Pastel is the default color scheme

* Fix color schemes in Spider chart

* Update SpiderChart styles

---------

Co-authored-by: Ehab Hussein <me@ehabhussein.com>
Co-authored-by: Vladimir Enchev <vladimir.enchev@gmail.com>
Co-authored-by: yordanov <vasil@yordanov.info>
2026-01-22 14:27:01 +02:00
Vladimir Enchev
0696cd20d5 Various warnings resolved and TreatWarningsAsErrors enabled (#2409) 2026-01-07 09:29:58 +02:00
Vladimir Enchev
d73dce8804 Components API remarks moved to summary 2025-10-27 09:22:20 +02:00
Vladimir Enchev
d5c870eb9d XML API improved 2025-10-24 16:28:11 +03:00
Vladimir Enchev
c7db9394c8 V7 (#2144)
* Remove Microsoft.CodeAnalysis. Add own C# expression parser.

* Popup dialog animations (#2118)

* Experiment with popup and dialog animations.

* Move animations to a separate _animations.scss

* Remove dialog closing animation.

* Support side dialog positions. Prefix keyframes.

* Use --rz-transition for animation function and duration

* Reset site.css.

* PanelMenu animations.

* Display none is toggled a bit late.

* RadzenPanel animations.

* More animations.

* Use transitions for panel menu.

* Remove old code.

* Accordion uses transitions.

* Panel uses transitions.

* Extract expand and collapse implementation in a separate component.

* Set initial expand state earlier to prevent two renders.

* Add open animation to notifications.

* Handle onanimationend before toggling the animation classes.

* Add menu animation.

* Experiment with tree animation.

* Add animations to fieldset.

---------

Co-authored-by: yordanov <vasil@yordanov.info>

* ExpressionSerializer and tests added (#2119)

* Fix failing tests.

* various components RequiresUnreferencedCode attribute added (#2120)

* RequiresUnreferencedCode added to ExpressionSerializer

* Update premium themes

* RequiresUnreferencedCode added to ExpressionParser

* FormComponentWithAutoComplete RequiresUnreferencedCode removed

* Revert "FormComponentWithAutoComplete RequiresUnreferencedCode removed"

This reverts commit ec900a4df8.

* Revert "RequiresUnreferencedCode added to ExpressionParser"

This reverts commit f93b3b159b.

* Revert "RequiresUnreferencedCode added to ExpressionSerializer"

This reverts commit 06fecec9a6.

* Revert "various components RequiresUnreferencedCode attribute added (#2120)"

This reverts commit 2ed1a6cac1.

* Remove RadzenHtml.

* ExpressionSerializer FormatValue updated to use InvariantCulture

* Catch potential JS interop exceptions that could occur during disposing.

* Revert "Remove RadzenHtml."

This reverts commit 319085bf49.

* SelectBar made single tab stop

* RadioButtonList and CheckBoxList made single tab stop

* SelectBar accessibility improved

* RadioButtonList accessibility improved

* CheckBoxList accessibility improved

* Update radio button focus styles

* Update checkbox list focus styles

* Update Checkbox Radio and SelectBar focus styles

* SelectBar, CheckBoxList and RadioButtonList focus state improved

* Check for Multiple added

* Use non-rendering event handlers for transitionend.

* Rename css class rz-selectbutton to rz-selectbar and improve focus states

* Fix selectbar focus outline offset

* Update premium themes

* Selectbar item focus styles should not be visible if the item is disabled.

* CheckBoxList and RadioButtonList item focus should be visible only on keyboard input

* SelectBar, CheckBoxList and RadioButtonList focus logic improved

* Update animations

* RadzenText margin-block should be 0 if it is in RadzenStack. Resolves #2134

* RadzenText margin-block should be 0 if it is first level child in RadzenStack

* CheckBoxList focused fixed

* Add toggle state classes to panel menu icon.

* Update accordion styles to reflect expander changes

* Add animation styles to expand arrow in Menu and ProfileMenu

* Use a instead of NavLink as it seems to cause performance issues.

* Set @bind-Expanded.

* Revert "Set @bind-Expanded."

This reverts commit 994107367bdf09043950f8bbe701eb9edefec676.

* Revert "Use a instead of NavLink as it seems to cause performance issues."

This reverts commit 05d5bef8f421bbeb5828ba1e9c5af6793ea3d32a.

* Reduce rendering of panel menu items.

* Add panel menu component.

* Use ChildContent to render the toggle icon of the panel menu item.

* Sync panel menu item selection in the item itself.

* Rename ExpandedInternal to expanded.

* Move filtering to the panel menu component.

* Remove the transitionend handler to avoid a second rendering pass.

* Build the assets for the net9.0 framework.

* Do not trigger render when Click is used.

* Panel menu keyboard navigation renders only when needed.

* Focus reworked to use AsNonRenderingEventHandler

* Focus the first item.

* Update Panel demo

* Use a more robust algorithm for month view event rendering that handles overlapping of events across a week.

* Use RadzenStack in RadioButtonList

* Add parsing support for `&` and `|`.

* Add parsing support for `^`, `>>` and `<<`.

* Simplify expression parsing tests.

* Use RadzenStack in RadioButtonList and CheckBoxList

* Change defaults for AlignItems and JustifyContent in RadioButtonList and CheckBoxList

* Update RadioButtonList and CheckBoxList demos

* Add --rz-input-border-block-end css variables to improve Fluent theme styles

* Removed AsNonRenderingEventHandler from RadioButtonList and HtmlEditor focus and blur

* Removed AsNonRenderingEventHandler from CheckBoxList

* Simplify RadzenTable rendering.

* Optimize memory usage of the ClassList utility.

* Refactor RadzenButton to use ClassList.

* RadzenSelectBar and RadzenSplitButton use ClassList.

* Refactor RadzenBadge and RadzenAlert to use ClassList.

* Refactor RadzenCard and RadzenFormField to use ClassList.

* Refactor RadzenCardGroup and progress components to use ClassList.

* Refactor RadzenMenu to use ClassList.

* Use ClassList in RadzenBody, RadzenLayout and editor rendering components.

* RadzenDialog uses ClassList.

* RadzenDataGrid uses ClassList.

* RadzenPager uses ClassList.

* RadzenColumn uses ClassList.

* Fix RadzenSplitButtonItem focused state.

---------

Co-authored-by: Atanas Korchev <akorchev@gmail.com>
Co-authored-by: Atanas Korchev <454726+akorchev@users.noreply.github.com>
Co-authored-by: yordanov <vasil@yordanov.info>
Co-authored-by: Quentin H <67709967+quintushr@users.noreply.github.com>
2025-05-07 13:11:30 +03:00
Quasmo
1ab7059830 Added DisplayToolTipFor Method to RadzenChart.razor.cs. (#2115)
* Added DisplayToolTipFor Method to RadzenChart.razor.cs. Made Series property public.

* Chnaged Series public accessor back to internal. Added GetSeries Method that returns an IReadOnlyList of the Series. Added XML documentation. Made changes to DisplayTooltipFor Method. Removed null checks and try/catch block.

* removed unnessecary usings.

---------

Co-authored-by: John Tolliver <jtolliver@wbrsllc.com>
2025-04-23 07:44:50 +03:00
Maxim Becker
13326879f0 Render chart tooltips in the same way as standard tooltips (#1745)
* Render chart tooltips in the same way as standard tooltips

* Move OpenChartTooltip method to TooltipService to avoid code duplications

* Avoid partially hiding of chart tooltip near top of page

* Make some of the types internal.

---------

Co-authored-by: Atanas Korchev <akorchev@gmail.com>
2024-10-28 10:01:13 +02:00
Vasil Yordanov
54fe2f260f New Shared chart tooltips and Sparkline component (#1651)
* Implement shared tooltips.

* Style Chart tooltips.

* Initial Sparkline implementation.

* Support axes in the Sparkline.

* Add Sparkline demo.

---------

Co-authored-by: Atanas Korchev <akorchev@gmail.com>
2024-08-14 12:20:06 +03:00
stlufred
c547f50dc8 Fixed Chart Click method (#991)
* Fixed chart Click method

- Was not using x and y parameters
- Use the same maximum distance as the tooltip (so that click and tooltip returns the same thing)
- Fixed xDelta and yDelta that were not considering MarginLeft and MarginTop

* Add ClickTolerance and TooltipTolerance.

---------

Co-authored-by: Atanas Korchev <akorchev@gmail.com>
2023-05-30 09:51:49 +03:00
stlufred
b4f4b10332 Improved chart tooltips (#976)
* Improved chart tooltips

- Show closest tooltip in line chart (instead of the first close enough)
- Improved speed
- Show it over or under to greatly reduce chances of tooltip being offscreen

* Moved caching into the Category method

* Reset categoryPropertyCache in SetParametersAsync.

* Revert tooltips to always show above

* Update _chart.scss

---------

Co-authored-by: Atanas Korchev <akorchev@gmail.com>
2023-05-23 16:05:54 +03:00
Atanas Korchev
2a9a115c31 Stacked bar and column charts (#837)
* Initial stack column series.

* Better maximum. Rounded corners only on the last series.

* Tooltips.

* Fix the offset of the first series.

* Actually make it correct.

* Optimizations.

* Update the demo.

* Add stacked bar files.

* Stacked bar tooltip.

* Data labels.

* Update the headings.
2023-03-01 13:54:33 +02:00
Maxim Becker
dc11242b77 Optimize rendering of chart tooltip (#745)
* Optimize rendering of chart tooltip

* Add performance test
2022-12-12 17:22:48 +02:00
glutio
122b07b757 Do not show trend tooltip if the line is not visible and fix line names (#531)
* Do not show trend tooltip if the line is not visible and fix line names
Revert accidental removal of commit 6b9d2c19a7 (FilterCleared event)

* Fixed trend lines length and contains() method
2022-07-15 14:32:01 +03:00
glutio
200fb9d9ee Chart overlays - data labels, trends and annotations. 2022-07-13 17:31:48 +03:00
Paul Ruston
a172caba24 LegendClick after fork recreate 202206181900 2022-06-21 11:54:18 +03:00
Atanas Korchev
6cb5f738d4 Certain component styles (info) do not work in tr-TR culture. 2022-04-25 11:21:29 +03:00
Atanas Korchev
962c2db587 RadzenChart sometimes displays a tooltip for the wrong series. 2022-04-06 18:19:31 +03:00
Atanas Korchev
4987cc92a1 Add missing await. 2021-11-02 18:45:58 +02:00