Skip to content

fix: pre-release issues for 0.2.0 (user-input-only change events, sheet width, label alignment, Blazor Hybrid, chart names) - #31

Merged
Shewart merged 11 commits into
mainfrom
fix/pre-release-issues
Oct 15, 2026
Merged

Shewart merged 11 commits into
mainfrom
fix/pre-release-issues

Conversation

@Shewart

@Shewart Shewart commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Fixes the issues found by FDMS, the first real consumer, before the 0.2.0 release.

Changes

  • Change events report user input only (Change events fire when the value is set from code #24, breaking). Toggled, CheckedChanged, ValueChanged, SelectedIndexChanged, SelectedValueChanged, PageChanged, DateChanged, TimeChanged, ItemToggled and the other value and selection events fire only for clicks, taps, swipes and keys, like Radix's onValueChange. Setting the value from code or a binding no longer raises them; watch the property to see every change. 30 components on MAUI and Avalonia. Unchanged: text fields' TextChanged, overlay open events, ThemeChanged, FileUpload.FilesChanged, Sidebar.IsCollapsedChanged
  • Sheet width (Sheet width can't be changed #26): SheetContent.MaxPanelWidth (default 384, never more than 75% of the window), MAUI and Avalonia
  • ShellLabel (ShellLabel: add HorizontalTextAlignment and LineBreakMode #27): HorizontalTextAlignment and LineBreakMode on MAUI (Avalonia's ShellLabel is a TextBlock and already has them)
  • Next to ShellUI Blazor (Blazor Hybrid guide: both CLIs default to the same components folder #28): init uses Components/Native when it finds shellui.json, and the components namespace follows the folder (Components/UI gives the same code as before). The Blazor Hybrid guide covers the order of the two inits, and its examples build
  • Blazor Hybrid build fix: MAUI Shell.cs names Microsoft.Maui.Controls.Layout in full; a hybrid app's <App>.Components.Layout namespace made the bare name fail (CS0118). A test keeps bare Layout out of the MAUI templates
  • Charts named as in ShellUI: donut-chart is its own component (DonutChart.cs, depends on pie-chart), so add donut-chart, add radial-chart, add bar-chart work and list shows them like ShellUI (Blazor). Unknown names in add / remove / update get "Did you mean …?"
  • Dependency audit test: every type a component uses from another component must come from its declared dependencies, its family or shell, on both platforms (230 cases), so a component added on its own always builds
  • Docs: "Change events" section in COMPONENTS.md, label / sheet / chart notes, QUICKSTART, CLI README, plan

Verification

  • Every commit builds and passes its tests on its own; head: solution 0 warnings / 0 errors on all MAUI targets, 1462 tests (CI green), dotnet format clean
  • A fresh dotnet new maui-blazor app with shellui init + add button and shellui-native init + add button builds 0/0 (fails with 0.1.0-alpha.2), and so does the guide's MainPage example
  • add donut-chart in fresh MAUI and Avalonia apps installs chart → pie-chart → donut-chart and builds 0/0; switch, select, multi-select, data-table, carousel and sidebar each in a fresh Avalonia app build 0/0
  • Templates match the demo components exactly (the sync writes nothing)
  • Event behaviour checked at run time on both platforms: values set from code raised no events on switch, checkbox, toggle, slider (including new Minimum / Maximum), tabs, pagination, accordion, collapsible and select; key presses (Avalonia) and the controls' own tap handlers (MAUI, Windows) raised one each

Not included

Closes #24, #26, #27, #28

Shewatipa Tseisi added 10 commits October 15, 2026 10:54
HorizontalTextAlignment and LineBreakMode pass through to the inner Label, so centred or truncated text no longer needs a plain Label. Avalonia's ShellLabel is a TextBlock and already has TextAlignment and TextWrapping. Closes #27.
SheetContent.MaxPanelWidth (default 384, shadcn's sm:max-w-sm) sets how wide a left or right sheet gets; it still never covers more than 75% of the window. Closes #26.
A MAUI Blazor Hybrid app has a <App>.Components.Layout namespace for MainLayout.razor, and a bare Layout inside <App>.Components.* resolved to it (CS0118). Shell.cs names Microsoft.Maui.Controls.Layout in full, and a test keeps bare Layout out of the MAUI templates.
When init finds shellui.json, components go to Components/Native, and the namespace now follows the components folder (Components/UI stays <App>.Components.UI, so existing projects get the same code). Before, both libraries wrote <App>.Components.UI.Button and a hybrid app didn't build. The Blazor Hybrid guide covers the order of the two inits and has examples that build. Closes #28.
add / remove / update accept donut-chart, which lives in the pie-chart template, and suggest up to three close names when a name isn't found (a typo, or a shared word such as chart-04).
Toggled, CheckedChanged, ValueChanged, SelectedIndexChanged, SelectedValueChanged, PageChanged, DateChanged, TimeChanged and the other value and selection events now fire only for clicks, taps, swipes and keys, like Radix's onValueChange. Setting the value from code or a binding updates the control without raising them, so filling a form or syncing a sidebar with the router no longer looks like user input. Watch the property to see every change.

Covers 30 components on MAUI and Avalonia. Unchanged: text fields' TextChanged, overlay open events, ThemeChanged, FileUpload.FilesChanged and Sidebar.IsCollapsedChanged. Closes #24.
DonutChart moves from PieChart.cs into DonutChart.cs on MAUI and Avalonia, registered as donut-chart with a dependency on pie-chart, so 'add donut-chart' works and 'list' shows it like ShellUI (Blazor). The chart names now match ShellUI's. The donut-chart alias is gone; unknown names still get suggestions.
For each component and platform, types from other templates (in type positions: new, declarations, generics, casts, base types) must come from its declared dependencies, its family or shell, so a component added on its own builds. 230 cases; removing a real dependency fails them.
@github-actions github-actions Bot added documentation Improvements or additions to documentation cli templates examples labels Oct 15, 2026
Filling the samples from code no longer raises change events, so the MAUI demo doesn't need to reset its status line afterwards; the XAML sets the same text.
@Shewart
Shewart merged commit 6c4de34 into main Oct 15, 2026
7 checks passed
@Shewart
Shewart deleted the fix/pre-release-issues branch October 15, 2026 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli documentation Improvements or additions to documentation examples templates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Change events fire when the value is set from code

1 participant