Repository navigation
feat(ui): QueryaMenuButton, QueryaSplitButton and QueryaDialogActions - #1417
Merged
Merged
Conversation
Compositions of QueryaButton that the review found hand-assembled: a button that opens a menu, a primary action with a menu chevron as one control (one outline, equal height, divider instead of a gap), and the dialog footer with the standard order, spacing, lg size and a single main action enforced in debug. QueryaButton gets a public general constructor and a radius override. Closes #1335 (without QueryaButtonGroup).
…no scope QueryaButton asserted on a missing QueryaThemeScope, which dialogs built under a bare app (and their tests) do not have. workbenchOrDefault falls back to the defaults for the ambient brightness; the scheme comes from context.colors.
This was referenced Oct 11, 2026
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 #1335 / epic #1331. Builds on
QueryaButton(#1408, indev) and the control scale (#1404).What
The compositions the review found hand-assembled, all without a
shadcn_flutterimport:QueryaMenuButton<T>: aQueryaButtonwith a trailing chevron that opens a menu;isActivewhile open; the same popup surface asQueryaDropdown(shared inquerya_menu_surface.dart). Replaces the trigger ofQueryaActionMenu/ExportMenuButton.QueryaSplitButton<T>: a main action and a chevron half as one control: one clip and radius, equal height, a 1 px divider instead of a gap, a tooltip per half,loadingdisables both. A secondary variant draws one outline around both halves.QueryaDialogActions: the footer of the standard: cancel (ghost) first, secondary actions, then one main action (primaryordestructive),lg, 8 apart, right-aligned under a divider. Debug asserts: not both main actions, and each slot has its variant.Escruns cancel inside the footer;QueryaDialogActions.bindings(...)gives theEsc/Entermap for a dialog-levelCallbackShortcuts.QueryaButtongets what they need: a public general constructor (variant:as a parameter), aborderRadiusoverride (the halves of a split button square their inner corners), and anIconThemeso a trailing icon takes the button's colour and size.Not in this PR
QueryaButtonGroup(segmented non-tab actions) is left out: nothing in the app needs it until the toolbars are migrated.QueryaActionMenuitself is untouched (it still uses shadcn'sOutlineButton).Tests
querya_menu_and_split_button_test.dart: open and pick, same height as a button, disabled does not open, Enter on the focused trigger opens; split: main runs, chevron opens and picks (main not run), both halves have the control height, loading disables both, only a 1 px divider between halves.querya_dialog_actions_test.dart: order,lgheight and 8 px spacing, right alignment,Escruns cancel,bindingsfor Esc / Enter and not for a disabled or loading main action, both-main-actions assertion, wrong-variant cancel rejected in debug.Not run locally; CI is the check.