pub struct Model {
pub show_all: bool,
pub width: usize,
pub short_separator: String,
pub full_separator: String,
pub ellipsis: String,
pub styles: Styles,
}Expand description
The help model that manages help view state and rendering.
This is the main component for displaying help information in terminal applications.
It can show either a compact single-line view or an expanded multi-column view
based on the show_all toggle.
§Examples
Basic usage:
use bubbletea_widgets::help::{Model, KeyMap};
use bubbletea_widgets::key;
// Create a new help model
let help = Model::new().with_width(80);
// Implement KeyMap for your application
struct AppKeyMap;
impl KeyMap for AppKeyMap {
fn short_help(&self) -> Vec<&key::Binding> {
vec![] // Your key bindings
}
fn full_help(&self) -> Vec<Vec<&key::Binding>> {
vec![vec![]] // Your grouped key bindings
}
}
let keymap = AppKeyMap;
let help_text = help.view(&keymap);Fields§
§show_all: boolToggles between short (single-line) and full (multi-column) help view.
When false, shows compact help; when true, shows detailed help.
width: usizeThe maximum width of the help view in characters. When set to 0, no width limit is enforced.
short_separator: StringThe separator string used between items in the short help view. Default is “ • “ (bullet with spaces).
full_separator: StringThe separator string used between columns in the full help view. Default is “ “ (four spaces).
ellipsis: StringThe character displayed when help content is truncated due to width constraints. Default is “…” (horizontal ellipsis).
styles: StylesThe styling configuration for all visual elements of the help view.
Implementations§
Source§impl Model
impl Model
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new help model with default settings.
This is equivalent to calling Model::default() but provides a more
conventional constructor-style API.
§Examples
use bubbletea_widgets::help::Model;
let help = Model::new();Sourcepub fn with_width(self, width: usize) -> Self
pub fn with_width(self, width: usize) -> Self
Sets the maximum width of the help view.
When a width is set, the help view will truncate content that exceeds this limit, showing an ellipsis to indicate truncation.
§Arguments
width- Maximum width in characters. Use 0 for no limit.
§Examples
use bubbletea_widgets::help::Model;
let help = Model::new().with_width(80);
assert_eq!(help.width, 80);Sourcepub fn update(self, _msg: Msg) -> (Self, Option<Cmd>)
pub fn update(self, _msg: Msg) -> (Self, Option<Cmd>)
Updates the help model in response to a message.
This method provides compatibility with the bubbletea-rs architecture, matching the Go implementation’s Update method. Since the help component is primarily a view component that doesn’t handle user input directly, this is a no-op method that simply returns the model unchanged.
§Arguments
_msg- The message to handle (unused for help component)
§Returns
A tuple containing:
- The unchanged model
Nonefor the command (no side effects needed)
§Examples
use bubbletea_widgets::help::Model;
use bubbletea_rs::Msg;
let help = Model::new();
// Any message can be passed, the help component ignores all messages
let msg = Box::new(42); // Example message
let (updated_help, cmd) = help.update(msg);
assert!(cmd.is_none()); // Help component doesn't generate commandsSourcepub fn view<K: KeyMap>(&self, keymap: &K) -> String
pub fn view<K: KeyMap>(&self, keymap: &K) -> String
Renders the help view based on the current model state.
This is the main rendering function that switches between short and full
help views based on the show_all flag.
§Arguments
keymap- An object implementing theKeyMaptrait that provides the key bindings to display.
§Returns
A formatted string ready for display in the terminal.
§Examples
use bubbletea_widgets::help::{Model, KeyMap};
use bubbletea_widgets::key;
struct MyKeyMap;
impl KeyMap for MyKeyMap {
fn short_help(&self) -> Vec<&key::Binding> { vec![] }
fn full_help(&self) -> Vec<Vec<&key::Binding>> { vec![] }
}
let help = Model::new();
let keymap = MyKeyMap;
let rendered = help.view(&keymap);Sourcepub fn short_help_view(&self, bindings: Vec<&Binding>) -> String
pub fn short_help_view(&self, bindings: Vec<&Binding>) -> String
Renders a compact single-line help view.
This view displays key bindings in a horizontal layout, separated by the configured separator. If the content exceeds the specified width, it will be truncated with an ellipsis.
§Arguments
bindings- A vector of key bindings to display.
§Returns
A single-line string containing the formatted help text.
§Examples
use bubbletea_widgets::help::Model;
use bubbletea_widgets::key;
let help = Model::new();
let bindings = vec![]; // Your key bindings
let short_help = help.short_help_view(bindings);Sourcepub fn full_help_view(&self, groups: Vec<Vec<&Binding>>) -> String
pub fn full_help_view(&self, groups: Vec<Vec<&Binding>>) -> String
Renders a detailed multi-column help view.
This view organizes key bindings into columns, with each group of bindings forming a separate column. Keys and descriptions are aligned vertically within each column.
§Arguments
groups- A vector of key binding groups, where each group becomes a column in the output.
§Returns
A multi-line string containing the formatted help text with proper column alignment.
§Examples
use bubbletea_widgets::help::Model;
use bubbletea_widgets::key;
let help = Model::new();
let groups = vec![vec![]]; // Your grouped key bindings
let full_help = help.full_help_view(groups);Sourcepub fn new_model() -> Self
👎Deprecated since 0.1.8: Use Model::new() instead
pub fn new_model() -> Self
Creates a new help model with default settings.
Deprecated: Use Model::new instead.
This function provides backwards compatibility with earlier versions
of the library and matches the Go implementation’s deprecated NewModel
variable.
§Examples
use bubbletea_widgets::help::Model;
let help = Model::new_model(); // Deprecated
let help = Model::new(); // PreferredTrait Implementations§
Source§impl Default for Model
impl Default for Model
Source§fn default() -> Self
fn default() -> Self
Creates a new help model with sensible defaults.
Default configuration:
show_all: false (shows short help)width: 0 (no width limit)short_separator: “ • “full_separator: “ “ (4 spaces)ellipsis: “…”styles: Default styles
§Examples
use bubbletea_widgets::help::Model;
let help = Model::default();
assert_eq!(help.show_all, false);
assert_eq!(help.width, 0);Auto Trait Implementations§
impl Freeze for Model
impl !RefUnwindSafe for Model
impl Send for Model
impl Sync for Model
impl Unpin for Model
impl !UnwindSafe for Model
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more