Skip to content

feat(avalonia): P2 form controls : textarea, select, slider, radio group, calendar, date and time pickers - #9

Merged
Shewart merged 3 commits into
mainfrom
feat/avalonia-p2-forms
Oct 8, 2026
Merged

Shewart merged 3 commits into
mainfrom
feat/avalonia-p2-forms

Conversation

@Shewart

@Shewart Shewart commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Third Avalonia slice of Phase 2: the P2 form controls.

shell

  • ShellAnchoredPopup: the floating-panel logic the popover host had (overlay-layer Popup under an anchor, click outside and Escape close it, one open at a time, open/close motion), now shared; ShellPopoverHost delegates to it
  • ShellPlatform.StripNativeChrome(TextBox): the Fluent chrome clearing Input did inline, shared with Textarea (as on MAUI)

Components

  • textarea, select, slider, radio-group (+ item), calendar, date-picker, time-picker, with the MAUI names, properties and sizes
  • Select, DatePicker and TimePicker float their panel with ShellAnchoredPopup; the select list matches the trigger's width
  • Slider is custom-drawn in shadcn's style (Fluent's thumb can't be made to match) and adds Step for the arrow keys

Verification

  • dotnet build ShellUI.Native.slnx: 0 warnings; tests 705/705; each commit builds the Avalonia demo and passes the tests
  • Each P2 component installs alone into a fresh dotnet new avalonia.app and builds with 0 warnings; all 46 Avalonia entries together build
  • Demo: values apply from code; the select list matches its trigger and flips above it; the date picker opens on today; the time picker scrolls to the current hour; dropdown pick and popover Escape still work on the shared popup
  • Not verified: real pointer/keyboard input (slider drag included), Linux

Differences from MAUI

  • Slider ValueChanged passes the new double; DatePicker DateChanged passes the new DateTime

Shewatipa Tseisi added 3 commits October 8, 2026 10:00
…g in shell

ShellAnchoredPopup is the floating-panel logic the popover host had (overlay-layer Popup under an anchor, click outside and Escape close it, one open at a time, open/close motion), now usable by the P2 pickers too; ShellPopoverHost delegates to it. ShellPlatform.StripNativeChrome(TextBox) is the Fluent chrome clearing Input did inline, shared with Textarea, as MAUI shares its StripNativeChrome.
textarea, select, slider, radio-group (+ item), calendar, date-picker and time-picker, with the MAUI names, properties and sizes. Select, DatePicker and TimePicker float their panel with ShellAnchoredPopup; the select list matches the trigger's width.

The slider is custom-drawn in shadcn's style (track, range, ring thumb) instead of a re-tinted Fluent slider, whose thumb can't be made to match; it adds Step for the arrow keys.

Checked: each P2 component installs alone into a fresh 'dotnet new avalonia.app' and builds with 0 warnings; all Avalonia components together build; in the demo the values apply from code, the select list matches its trigger and flips above it, the date picker opens on today, the time picker scrolls to the current hour; dropdown pick and popover Escape still work on the shared popup.
@github-actions github-actions Bot added documentation Improvements or additions to documentation templates examples labels Oct 8, 2026
@Shewart
Shewart merged commit 70c7b6b into main Oct 8, 2026
7 checks passed
@Shewart
Shewart deleted the feat/avalonia-p2-forms branch October 8, 2026 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation examples templates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant