Struct patternfly_yew::components::table::Table

source ·
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).

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>
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> !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>
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.

source§

impl<T> Instrument for T

source§

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

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

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.
source§

impl<T> WithSubscriber for T

source§

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
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<Token, Builder, How> AllPropsFor<Builder, How> for Token
where Builder: Buildable<Token>, <Builder as Buildable<Token>>::WrappedToken: HasAllProps<<Builder as Buildable<Token>>::Output, How>,

source§

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