charmbracelet / bubbles

TUI components for Bubble Tea 🫧
MIT License
5.28k stars 247 forks source link

textinput: add support for wrapping the prompt #483

Open twpayne opened 6 months ago

twpayne commented 6 months ago

Is your feature request related to a problem? Please describe.

My application uses textinputs with long prompts. The prompts are long because they contain multiple filenames from the user that can get quite long, for example:

$ chezmoi rm ~/.config/git/config
Remove /Users/twp/.config/git/config and /Users/twp/.local/share/chezmoi/home/private_dot_config/git/config.tmpl? yes/no/all/quit

textinput only displays the prompt up to the width of the terminal, which leads to the prompt being truncated and confusing, for example, with a terminal of width 80:

$ chezmoi rm ~/.config/git/config
Remove /Users/twp/.config/git/config and /Users/twp/.local/share/chezmoi/home/pr

Describe the solution you'd like

I'd like a boolean option to wrap the prompt over multiple lines, wrapping words (maybe using github.com/muesli/reflow) so you would get the following with a terminal width of 80:

$ chezmoi rm ~/.config/git/config
Remove /Users/twp/.config/git/config and /Users/twp/.local/share/chezmoi/home/
private_dot_config/git/config.tmpl? yes/no/all/quit

Describe alternatives you've considered

Forking textinput to add this functionality.

Additional context

417 talks about multiline text, this feature request is about a multiline prompt.

I would happily submit a PR for this if you are interested.

meowgorithm commented 6 months ago

This all makes sense to me; thanks for the well written writeup, Tom. If this is something you'd indeed like to work on, by all means go for it.

maaslalani commented 6 months ago

For what it's worth, textarea can support multiline prompts with this PR: