Struct patternfly_yew::components::table::Table
source · pub struct Table<C, M>{ /* private fields */ }
Expand description
Table component
A table is used to display large data sets that can be easily laid out in a simple grid with column headers.
See: https://www.patternfly.org/components/table/html
§Properties
Defined by TableProperties
.
§Usage
The table component is a more complex component than most others. It is recommended to check out the more complete examples in the quickstart project: https://github.com/patternfly-yew/patternfly-yew-quickstart/tree/main/src/components/table.
Summarizing it, you will need:
- A type defining the column/index (this can be an enum or a numeric like
usize
). - A type defining an item/entry/row.
- Let the item type implement
TableEntryRenderer
. - Create a table state model (e.g. using
MemoizedTableModel
). - Wire up the table state model (e.g. using
use_table_data
).
If the table is too limiting (one example is wanting to save state per row) you may have to
use ComposableTable
.
However, it is recommended to use Table
where possible.
§Example
use yew::prelude::*;
use patternfly_yew::prelude::*;
#[derive(Copy, Clone, Eq, PartialEq)]
enum Column { First, Second };
#[derive(Clone)]
struct ExampleEntry { foo: String };
impl TableEntryRenderer<Column> for ExampleEntry {
fn render_cell(&self, context: CellContext<'_, Column>) -> Cell {
match context.column {
Column::First => html!(&self.foo).into(),
Column::Second => html!({self.foo.len()}).into(),
}
}
}
#[function_component(Example)]
fn example() -> Html {
let entries = use_memo((), |()| {
vec![
ExampleEntry { foo: "bar".into() },
ExampleEntry {
foo: "Much, much longer foo".into(),
},
]
});
let (entries, _) = use_table_data(MemoizedTableModel::new(entries));
let header = html_nested! {
<TableHeader<Column>>
<TableColumn<Column> label="foo" index={Column::First} />
<TableColumn<Column> label="bar" index={Column::Second} />
</TableHeader<Column>>
};
html! (
<Table<Column, UseTableData<Column, MemoizedTableModel<ExampleEntry>>>
{header}
{entries}
/>
)
}
Trait Implementations§
source§impl<C, M> BaseComponent for Table<C, M>
impl<C, M> BaseComponent for Table<C, M>
§type Properties = TableProperties<C, M>
type Properties = TableProperties<C, M>
The Component’s Properties.
source§fn update(&mut self, _ctx: &Context<Self>, _msg: Self::Message) -> bool
fn update(&mut self, _ctx: &Context<Self>, _msg: Self::Message) -> bool
Updates component’s internal state.
source§fn changed(
&mut self,
_ctx: &Context<Self>,
_old_props: &Self::Properties
) -> bool
fn changed( &mut self, _ctx: &Context<Self>, _old_props: &Self::Properties ) -> bool
React to changes of component properties.
source§fn view(&self, ctx: &Context<Self>) -> HtmlResult
fn view(&self, ctx: &Context<Self>) -> HtmlResult
Returns a component layout to be rendered.
source§fn rendered(&mut self, _ctx: &Context<Self>, _first_render: bool)
fn rendered(&mut self, _ctx: &Context<Self>, _first_render: bool)
Notified after a layout is rendered.
source§fn prepare_state(&self) -> Option<String>
fn prepare_state(&self) -> Option<String>
Prepares the server-side state.
source§impl<C, M> FunctionProvider for Table<C, M>
impl<C, M> FunctionProvider for Table<C, M>
§type Properties = TableProperties<C, M>
type Properties = TableProperties<C, M>
Properties for the Function Component.
source§fn run(ctx: &mut HookContext, props: &Self::Properties) -> HtmlResult
fn run(ctx: &mut HookContext, props: &Self::Properties) -> HtmlResult
Auto Trait Implementations§
impl<C, M> !Freeze for Table<C, M>
impl<C, M> !RefUnwindSafe for Table<C, M>
impl<C, M> !Send for Table<C, M>
impl<C, M> !Sync for Table<C, M>
impl<C, M> Unpin for Table<C, M>
impl<C, M> !UnwindSafe for Table<C, M>
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
Mutably borrows from an owned value. Read more
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoPropValue<Option<T>> for T
impl<T> IntoPropValue<Option<T>> for T
source§fn into_prop_value(self) -> Option<T>
fn into_prop_value(self) -> Option<T>
Convert
self
to a value of a Properties
struct.source§impl<T> IntoPropValue<T> for T
impl<T> IntoPropValue<T> for T
source§fn into_prop_value(self) -> T
fn into_prop_value(self) -> T
Convert
self
to a value of a Properties
struct.