Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature: TabbedScrollableSelectPrompt #136

Closed

Conversation

ProjektGopher
Copy link
Contributor

This PR includes all work to implement a new TabbedScrollableSelectPrompt.

TabbedScrollableSelectPrompt-edit.mov

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:

  • Adds support for ESCAPE, SHIFT_UP, and SHIFT_DOWN Keys.
  • Adds the ability to specify the character to be used in DrawsBoxes::pad(), maintaining backwards compatibility by setting a default of ' '.
  • Moves three methods for working with strings from the DrawsBoxes trait into another dedicated HandlesStrings trait which is then consumed by the DrawsTabs 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 the DrawsScrollbars 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.

@edgrosvenor
Copy link

I think this would fit nicely in lots of places. The first one that comes to mind is the Laravel installer. Being able to add some context around choices like what auth scaffolding to use so we don't have to assume the user has already read the docs on all the options would make for a nice improvement.

Full disclosure, we are already using this (an early proof of concept version of it) in one of our apps and it makes for a really great user experience when asking someone to make a choice where a little more context than just a name is helpful.

@taylorotwell taylorotwell marked this pull request as draft April 15, 2024 15:10
@ProjektGopher
Copy link
Contributor Author

Closing for now to add modifications to existing code separately. Will rebase and resubmit afterwards.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants