Closed ProjektGopher closed 7 months ago
Thanks for submitting a PR!
In order to review and merge PRs most efficiently, we require that all PRs grant maintainer edit access before we review them. For information on how to do this, see the relevant GitHub documentation. Additionally, GitHub doesn't allow maintainer permissions from organization accounts. Please resubmit this PR from a personal GitHub account with maintainer permissions enabled.
This PR includes all work to implement a new
TabbedScrollableSelectPrompt
.https://github.com/laravel/prompts/assets/1688608/89f08a04-49bb-4d2d-bbcc-021f7cc3e91b
If you'd like me to extract these into separate PRs, I can do that
The first three commits are structured such that they can be
cherry-picked
and merged as separate work beforehand. They involve the following changes:ESCAPE
,SHIFT_UP
, andSHIFT_DOWN
Keys.DrawsBoxes::pad()
, maintaining backwards compatibility by setting a default of' '
.DrawsBoxes
trait into another dedicatedHandlesStrings
trait which is then consumed by theDrawsTabs
trait to avoid duplicate method name collisions.The new
DrawsTabs
trait could then be merged on it's own. It's built in a similar way to theDrawsScrollbars
trait. It can be used in any new prompts in the same way. This is the feature that ultimately enables the prompt in the example. It will also automatically scroll horizontally based on the selected tab in order to prevent overflowing and ruining the output.Finally, the final 5 commits put all of this together to create our new component. I built this component because I wanted to include some readable context for the items from which I'm selecting. I'm thrilled with this solution, and I'd like to provide it for others to use as well.