pub struct Table<C, M>
where C: Clone + Eq + 'static, M: PartialEq + TableModel<C> + 'static,
{ /* 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).

Example

use yew::prelude::*;
use patternfly_yew::prelude::*;

#[derive(Copy, Clone, Eq, PartialEq)]
enum Column { First, Second };
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>
where C: Clone + Eq + 'static, M: PartialEq + TableModel<C> + 'static, Self: 'static,

§

type Message = ()

The Component’s Message.
§

type Properties = TableProperties<C, M>

The Component’s Properties.
source§

fn create(ctx: &Context<Self>) -> Self

Creates a component.
source§

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

React to changes of component properties.
source§

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)

Notified after a layout is rendered.
source§

fn destroy(&mut self, _ctx: &Context<Self>)

Notified before a component is destroyed.
source§

fn prepare_state(&self) -> Option<String>

Prepares the server-side state.
source§

impl<C, M> Debug for Table<C, M>
where C: Clone + Eq + 'static, M: PartialEq + TableModel<C> + 'static,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<C, M> FunctionProvider for Table<C, M>
where C: Clone + Eq + 'static, M: PartialEq + TableModel<C> + 'static,

§

type Properties = TableProperties<C, M>

Properties for the Function Component.
source§

fn run(ctx: &mut HookContext, props: &Self::Properties) -> HtmlResult

Render the component. This function returns the Html to be rendered for the component. Read more

Auto Trait Implementations§

§

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>
where C: Unpin, M: Unpin,

§

impl<C, M> !UnwindSafe for Table<C, M>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoPropValue<Option<T>> for T

source§

fn into_prop_value(self) -> Option<T>

Convert self to a value of a Properties struct.
source§

impl<T> IntoPropValue<T> for T

source§

fn into_prop_value(self) -> T

Convert self to a value of a Properties struct.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> HasAllProps<(), T> for T