pub struct Table<'a, T: Copy, Selection = RowSelection> { /* private fields */ }Expand description
Table widget that renders data from an Iterator.
This will do minimal rendering of the visible rows/cells of the table.
Table::default()
.data(state.table_data.iter())
.widths([
Constraint::Length(6),
Constraint::Length(20),
Constraint::Length(15),
Constraint::Length(15),
Constraint::Length(3),
])
.render_cell(0, |_v, area, buf, ctx| {
row_fmt.fmt_u(ctx.row).render(area, buf)
})
.render_cell(1, |v, area, buf, _ctx| v.text.render(area, buf))
.render_cell(2, |v, area, buf, _ctx| {
num1_fmt.fmt_u(v.num1).render(area, buf)
})
.render_cell(3, |v, area, buf, _ctx| {
num2_fmt.fmt_u(v.num2).render(area, buf)
})
.render_cell(4, |v, area, buf, _ctx| {
let cc = if v.check { "\u{2622}" } else { "\u{2623}" };
cc.render(area, buf);
})
.column_spacing(1)
.header(vec!["Nr", "Text", "Val1", "Val2", "State"])
.footer(vec!["a", "b", "c", "d", "e"])
.block(
Block::bordered()
.border_type(BorderType::Rounded)
.title("tabledata-iter (no row-count)"),
)
.vscroll(Scroll::new())
.styles(table(&ctx.theme))
.render(l0[0], buf, &mut state.table);Implementations§
Source§impl<'a, T: Copy, Selection> Table<'a, T, Selection>
impl<'a, T: Copy, Selection> Table<'a, T, Selection>
pub fn data(self, data: impl IntoIterator<Item = T> + 'a) -> Self
Sourcepub fn row_height(
self,
row_height_fn: impl FnMut(T, &TableContext<'_>) -> u8 + 'a,
) -> Self
pub fn row_height( self, row_height_fn: impl FnMut(T, &TableContext<'_>) -> u8 + 'a, ) -> Self
Set the closure that calculates the row-height for a value.
Sourcepub fn render_row(
self,
render_row_fn: impl FnMut(T, Rect, &mut Buffer, &TableContext<'_>) -> bool + 'a,
) -> Self
pub fn render_row( self, render_row_fn: impl FnMut(T, Rect, &mut Buffer, &TableContext<'_>) -> bool + 'a, ) -> Self
Set a closure for row-level rendering.
Sourcepub fn render_cell(
self,
column: usize,
render_cell_fn: impl FnMut(T, Rect, &mut Buffer, &TableContext<'_>) + 'a,
) -> Self
pub fn render_cell( self, column: usize, render_cell_fn: impl FnMut(T, Rect, &mut Buffer, &TableContext<'_>) + 'a, ) -> Self
Set a closure for rendering one column.
Set the table-footer.
Sourcepub fn varying_heights(self, varying: bool) -> Self
pub fn varying_heights(self, varying: bool) -> Self
If your table uses varying row-heights for each row all page calculations will fail (somewhat). If you enable this flag, the row-heights for each row will be stored in the state to allow accurate page-calculations.
Sourcepub fn column_spacing(self, spacing: u16) -> Self
pub fn column_spacing(self, spacing: u16) -> Self
Spacing between columns.
Sourcepub fn layout_width(self, width: LayoutWidth) -> Self
pub fn layout_width(self, width: LayoutWidth) -> Self
Set the display width of the table. If this is not set, the width of the rendered area is used.
Sourcepub fn border_style(self, style: Style) -> Self
pub fn border_style(self, style: Style) -> Self
Sets the border-style for the Block, if any.
Sourcepub fn title_style(self, style: Style) -> Self
pub fn title_style(self, style: Style) -> Self
Sets the title-style for the Block, if any.
Sourcepub fn styles(self, styles: TableStyle) -> Self
pub fn styles(self, styles: TableStyle) -> Self
Set all styles as a bundle.
Sourcepub fn header_style(self, style: Option<Style>) -> Self
pub fn header_style(self, style: Option<Style>) -> Self
Base style for the table.
Base style for the table.
Sourcepub fn select_row_style(self, select_style: Option<Style>) -> Self
pub fn select_row_style(self, select_style: Option<Style>) -> Self
Style for a selected row. The chosen selection must support row-selection for this to take effect.
Sourcepub fn show_row_focus(self, show: bool) -> Self
pub fn show_row_focus(self, show: bool) -> Self
Add the focus-style to the row-style if the table is focused.
Sourcepub fn select_column_style(self, select_style: Option<Style>) -> Self
pub fn select_column_style(self, select_style: Option<Style>) -> Self
Style for a selected column. The chosen selection must support column-selection for this to take effect.
Sourcepub fn show_column_focus(self, show: bool) -> Self
pub fn show_column_focus(self, show: bool) -> Self
Add the focus-style to the column-style if the table is focused.
Sourcepub fn select_cell_style(self, select_style: Option<Style>) -> Self
pub fn select_cell_style(self, select_style: Option<Style>) -> Self
Style for a selected cell. The chosen selection must support cell-selection for this to take effect.
Sourcepub fn show_cell_focus(self, show: bool) -> Self
pub fn show_cell_focus(self, show: bool) -> Self
Add the focus-style to the cell-style if the table is focused.
Sourcepub fn select_header_style(self, select_style: Option<Style>) -> Self
pub fn select_header_style(self, select_style: Option<Style>) -> Self
Style for a selected header cell. The chosen selection must support column-selection for this to take effect.
Sourcepub fn show_header_focus(self, show: bool) -> Self
pub fn show_header_focus(self, show: bool) -> Self
Add the focus-style to the header-style if the table is focused.
Style for a selected footer cell. The chosen selection must support column-selection for this to take effect.
Add the footer-style to the table-style if the table is focused.
Sourcepub fn focus_style(self, focus_style: Option<Style>) -> Self
pub fn focus_style(self, focus_style: Option<Style>) -> Self
This style will be patched onto the selection to indicate that the widget has the input focus.
The selection must support some kind of selection for this to be effective.
Trait Implementations§
Source§impl<'a, T, Selection> StatefulWidget for Table<'a, T, Selection>
impl<'a, T, Selection> StatefulWidget for Table<'a, T, Selection>
Source§type State = TableState<Selection>
type State = TableState<Selection>
Auto Trait Implementations§
impl<'a, T, Selection = RowSelection> !RefUnwindSafe for Table<'a, T, Selection>
impl<'a, T, Selection = RowSelection> !Send for Table<'a, T, Selection>
impl<'a, T, Selection = RowSelection> !Sync for Table<'a, T, Selection>
impl<'a, T, Selection = RowSelection> !UnwindSafe for Table<'a, T, Selection>
impl<'a, T, Selection> Forget for Table<'a, T, Selection>
impl<'a, T, Selection> Freeze for Table<'a, T, Selection>where
Option<Box<dyn Iterator<Item = T> + 'a>>: Freeze,
Option<Box<dyn FnMut(T, &TableContext<'_>) -> u8 + 'a>>: Freeze,
Option<Box<dyn FnMut(T, Rect, &mut Buffer, &TableContext<'_>) -> bool + 'a>>: Freeze,
Vec<Option<Box<dyn FnMut(T, Rect, &mut Buffer, &TableContext<'_>) + 'a>>>: Freeze,
PhantomData<Selection>: Freeze,
impl<'a, T, Selection> Unpin for Table<'a, T, Selection>where
Option<Box<dyn Iterator<Item = T> + 'a>>: Unpin,
Option<Box<dyn FnMut(T, &TableContext<'_>) -> u8 + 'a>>: Unpin,
Option<Box<dyn FnMut(T, Rect, &mut Buffer, &TableContext<'_>) -> bool + 'a>>: Unpin,
Vec<Option<Box<dyn FnMut(T, Rect, &mut Buffer, &TableContext<'_>) + 'a>>>: Unpin,
PhantomData<Selection>: Unpin,
impl<'a, T, Selection> UnsafeUnpin for Table<'a, T, Selection>where
Option<Box<dyn Iterator<Item = T> + 'a>>: UnsafeUnpin,
Option<Box<dyn FnMut(T, &TableContext<'_>) -> u8 + 'a>>: UnsafeUnpin,
Option<Box<dyn FnMut(T, Rect, &mut Buffer, &TableContext<'_>) -> bool + 'a>>: UnsafeUnpin,
Vec<Option<Box<dyn FnMut(T, Rect, &mut Buffer, &TableContext<'_>) + 'a>>>: UnsafeUnpin,
PhantomData<Selection>: UnsafeUnpin,
Blanket Implementations§
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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more