pub struct TableKeyMap {
pub row_up: Binding,
pub row_down: Binding,
pub page_up: Binding,
pub page_down: Binding,
pub half_page_up: Binding,
pub half_page_down: Binding,
pub go_to_start: Binding,
pub go_to_end: Binding,
}Expand description
Keyboard binding configuration for table navigation.
This struct defines all the key combinations that control table navigation, including row-by-row movement, page scrolling, and jumping to start/end positions. Each binding can accept multiple key combinations and includes help text for documentation.
§Key Binding Types
- Row Navigation: Single row up/down movement
- Page Navigation: Full page up/down scrolling
- Half Page Navigation: Half page up/down scrolling
- Jump Navigation: Instant movement to start/end
§Examples
use bubbletea_widgets::table::{TableKeyMap, Model, Column};
use bubbletea_widgets::key;
use crossterm::event::KeyCode;
// Create table with custom key bindings
let mut table = Model::new(vec![Column::new("Data", 20)]);
table.keymap.row_up = key::Binding::new(vec![KeyCode::Char('w')])
.with_help("w", "move up");
table.keymap.row_down = key::Binding::new(vec![KeyCode::Char('s')])
.with_help("s", "move down");Using with help system:
use bubbletea_widgets::table::Model;
use bubbletea_widgets::key::KeyMap as KeyMapTrait;
let table = Model::new(vec![]);
let help_bindings = table.keymap.short_help();
// Returns the most common navigation keys for display§Default Bindings
- Row Up:
↑(Up Arrow),k(Vim style) - Row Down:
↓(Down Arrow),j(Vim style) - Page Up:
PgUp,b(Vim style) - Page Down:
PgDn,f(Vim style) - Half Page Up:
u(Vim style) - Half Page Down:
d(Vim style) - Go to Start:
Home,g(Vim style) - Go to End:
End,G(Vim style)
Fields§
§row_up: BindingKey binding for moving selection up one row.
Default: Up arrow key (↑) and k key (Vim-style)
row_down: BindingKey binding for moving selection down one row.
Default: Down arrow key (↓) and j key (Vim-style)
page_up: BindingKey binding for moving up one full page of rows.
Default: Page Up key and b key (Vim-style)
page_down: BindingKey binding for moving down one full page of rows.
Default: Page Down key and f key (Vim-style)
half_page_up: BindingKey binding for moving up half a page of rows.
Default: u key (Vim-style)
half_page_down: BindingKey binding for moving down half a page of rows.
Default: d key (Vim-style)
go_to_start: BindingKey binding for jumping to the first row.
Default: Home key and g key (Vim-style)
go_to_end: BindingKey binding for jumping to the last row.
Default: End key and G key (Vim-style)
Trait Implementations§
Source§impl Clone for TableKeyMap
impl Clone for TableKeyMap
Source§fn clone(&self) -> TableKeyMap
fn clone(&self) -> TableKeyMap
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TableKeyMap
impl Debug for TableKeyMap
Source§impl Default for TableKeyMap
impl Default for TableKeyMap
Source§fn default() -> Self
fn default() -> Self
Creates default table key bindings with Vim-style navigation.
The default bindings provide both traditional arrow keys and Vim-style letter keys for maximum compatibility and user preference accommodation.
§Default Key Mappings
| Binding | Keys | Description |
|---|---|---|
row_up | ↑, k | Move selection up one row |
row_down | ↓, j | Move selection down one row |
page_up | PgUp, b | Move up one page of rows |
page_down | PgDn, f | Move down one page of rows |
half_page_up | u | Move up half a page |
half_page_down | d | Move down half a page |
go_to_start | Home, g | Jump to first row |
go_to_end | End, G | Jump to last row |
§Examples
use bubbletea_widgets::table::TableKeyMap;
// Using default key bindings
let keymap = TableKeyMap::default();
// Check if a binding includes specific help text
assert_eq!(keymap.row_up.help().key, "↑/k");
assert_eq!(keymap.row_up.help().desc, "up");§Design Philosophy
- Vim Compatibility: Letter keys follow Vim navigation patterns
- Arrow Key Support: Traditional navigation for all users
- Page Navigation: Efficient movement through large datasets
- Jump Commands: Quick access to start/end positions
Auto Trait Implementations§
impl Freeze for TableKeyMap
impl RefUnwindSafe for TableKeyMap
impl Send for TableKeyMap
impl Sync for TableKeyMap
impl Unpin for TableKeyMap
impl UnwindSafe for TableKeyMap
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