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>
Source§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>
Source§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§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§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.