feat(form): expose global keybinds at form level #617
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.
Description
This pull request refactors the keymap instantiation process for the
Form
component:defaultKeyMap
to prevent redundant keymap creation.Form
to reuse thedefaultKeyMap
for efficiency.KeyBinds
, exposing what is currently the only "global" keybinding (theQuit
binding) at theForm
level.Quit
binding to theShortHelp()
method is only done where aForm
'sQuit
binding or help text differs from the default and one wishes to do so (see the attached example).The primary use-case for this update is to cater for scenarios where the
Quit
binding differs from the default and must therefore be exposed to the user (a common example of when one might do this is when using ahuh.Form
in abubbletea.Model
as in thehuh/bubbletea
example).Prerequisites
This PR relies upon charmbracelet/bubbles#773
Working Example
The following sample demonstrates this change, displaying both the
Form
's native help (Group
/Field
level) and that which is exposed at theForm
level:Below is what the above sample looks like at runtime (note again that both help texts are shown for the sake of contrast):
