Repository navigation
fix: reconcile package and CLI template drift (batch 3) - #66
Merged
Merged
Conversation
The package gains the template's responsive Previous/Next labels and padding; the template gains CurrentPageChanged (for @bind-CurrentPage) with OnPageChange kept as a deprecated alias. Both now ignore clicks on the current page or outside the range. Part of #52
Both take Variant ("default", "circle", "text") and ChildContent, and
merge classes with Shell.Cn.
Part of #52
The template put max-height on the outer overflow-hidden element, so long content was clipped instead of scrolling. Height and MaxHeight now size the inner overflow-auto element in both copies. The scrollbar-* classes needed a Tailwind plugin nobody ships, so they are gone. Part of #52
Both get the success and warning variants, Position, Duration-based auto-dismiss (0 keeps the toast open) and a labelled close button. Part of #52
Value/ValueChanged is the binding in both, with SelectedTime kept as a deprecated alias. Step now filters the minute list (it was unused), the picker opens on the current value, and Cancel or an outside click closes it. Part of #52
The package always drew day 1 under Sunday. Leading blank cells now offset it, the picker opens on the selected month, and SelectedDate is kept as a deprecated alias of Value so template users don't break. Part of #52
Set Title for a dropdown item (the package's behaviour); leave it empty for a plain item that renders a link when Href is set (with aria-current when IsActive) or a button otherwise (the template's). Part of #52
Covers Pagination, Skeleton, ScrollArea, Toast, TimePicker, DatePicker and NavigationMenuItem in both sync theories, and records CopyButton, SidebarProvider, AppSidebar and Resizable as allowed drift. Adds behaviour tests for the Pagination guard and callbacks, the DatePicker weekday offset and ScrollArea sizing. Part of #52
Contributor
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
This was referenced Oct 18, 2026
Shewart
added a commit
that referenced
this pull request
Oct 20, 2026
Release notes and version references for 0.4.0-alpha.3. The first release published with NuGet Trusted Publishing (#71). **In this release** (already on main) - #69: a component's `Class` overrides its own conflicting classes (`Shell.Cn` merges like tailwind-merge) - #64: Dialog, AlertDialog, Sheet and Drawer keep keyboard focus inside and return it on close - #70: `add` never downgrades a NuGet package the project already references - #71: `init` supports Razor class libraries, plus a guide; release workflow on Trusted Publishing - #63, #65, #66, #68: CLI templates reconciled with the package (RadioGroup, ScrollArea, DatePicker, TimePicker, Pagination, Toast, Skeleton, Sheet/Drawer and more) **Breaking for CLI template users** (after `shellui update`, all in the notes with upgrade steps): `Input.InputVariant` becomes `InputVariant` (new `input-variants` template); Stepper parts read `ActiveStep` instead of taking `CurrentStep`; `ScrollArea` drops its `scrollbar-*` classes. `update` installs the new templates automatically. **This PR** - `Directory.Build.props` suffix `alpha.3`; README, VERSIONING_STRATEGY, CLI_INSTALLATION, CLI_SYNTAX, FAQ, QUICKSTART and the version fallbacks move to `0.4.0-alpha.3` - `docs/RELEASE_NOTES.md`: the 0.4.0-alpha.3 section; `scripts/extract-release-notes.sh 0.4.0-alpha.3` extracts it **Release checks** - Release build has 0 warnings, and all 484 tests pass - An app set up with the released 0.4.0-alpha.2 CLI, updated with the packed alpha.3 CLI: 36 components updated, `input-variants`, `textarea-variants` and `stepper-models` installed, builds 0/0 - CLI templates in a browser: RadioGroup selects (disabled items ignored), ScrollArea scrolls, Pagination `@bind-CurrentPage`, Stepper Next, DatePicker puts 1 October 2026 under Thursday, TimePicker `Step="15"` lists 00/15/30/45, `Class="px-8 bg-destructive"` replaces the button's own `px-4 bg-primary`, `InputVariant.Error` applies - Focus trap with real key presses (templates and package): Tab cycles inside the dialog and wraps, Shift+Tab goes back, Escape closes and returns focus to the trigger - All 93 direct targets together in `my-app` build 0/0 on net8.0, net9.0 and net10.0 (244 registry entries) - The packed `ShellUI.Components` in a browser: the class override, TimePicker, dark mode with `color-scheme`, Popover Escape, Command `Action`, the dialog focus trap; no console errors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #52. Brings the package and CLI template copies of seven components together, and records the drift that's there by design.
Merged (each copy got what the other was missing):
CurrentPageChangedfor@bind-CurrentPage, withOnPageChangekept as a deprecated alias; clicks on the current page or out of range are ignored.Variant(default/circle/text) andChildContentin both.overflow-hiddenelement).Height/MaxHeightnow size the inner scrolling element. Removed thescrollbar-*classes, which need a plugin nobody ships.Position,Durationauto-dismiss, a labelled close button.Value/ValueChanged, withSelectedTimekept as a deprecated alias;Stepnow filters the minute list (it wasn't used before); Cancel and outside click close it.SelectedDatekept as a deprecated alias.Titleit's a dropdown (the package's behaviour); without one it's a link whenHrefis set, otherwise a button (the template's).Recorded as allowed drift: CopyButton and SidebarProvider (they reach JS differently; the template can't dynamic-import from a consumer's class library), AppSidebar (the template is the dashboard block
initrewrites), and Resizable (neither copy actually resizes; a real panel group gets its own issue).Drift is now 14 of 217, down from 21. What's left is the by-design list above plus Sheet, Drawer, Input, Textarea and Stepper, which come in the next PR.
Tests: 408 passing, 0 warnings. Added behaviour tests for the Pagination guard and callbacks, the DatePicker weekday offset and ScrollArea sizing. The safelist was regenerated.