Support disabled items in SelectionPrompt<T> - #2181
Draft
thomas-mathers wants to merge 1 commit into
Draft
Conversation
Adds IDisableableSelectionItem<T>, a separate opt-in interface rather
than new members on ISelectionItem<T> directly, so it stays additive
on every target framework (including netstandard2.0, which can't
represent default interface implementations). ListPromptItem<T>
implements it alongside IMultiSelectionItem<T>, and a
SelectionItemExtensions.Disable() extension keeps the call site
unchanged: prompt.AddChoice("Fireball").Disable().
A disabled item is styled with DisabledStyle and skipped during
arrow-key navigation, search, and default-value selection, the same
way group headers already are in Mode.Leaf.
Closes spectreconsole#2180
Author
|
@microsoft-github-policy-service agree |
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.
Closes #2180.
Adds
IDisableableSelectionItem<T>, a separate opt-in interface rather than new members onISelectionItem<T>directly, so it stays additive on every target framework (includingnetstandard2.0, which can't represent default interface implementations).ListPromptItem<T>implements it alongsideIMultiSelectionItem<T>, and aSelectionItemExtensions.Disable()extension keeps the call site unchanged:A disabled item is styled with
DisabledStyleand skipped during arrow-key navigation, search, and default-value selection, the same way group headers already are inMode.Leaf.Opening as a draft since I haven't heard back on the issue write-up yet, happy to take feedback on the API shape before marking ready.
Test plan