1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
use crate::prelude::{Cell, CellContext, MenuChildVariant, Span};
/// Render table entries
pub trait TableEntryRenderer<C>
where
C: Clone + Eq + 'static,
{
/// Render the cell for the requested column.
fn render_cell(&self, context: CellContext<'_, C>) -> Cell;
/// Control if the details section spans the full width.
fn is_full_width_details(&self) -> Option<bool> {
None
}
/// Render the details section.
///
/// Used in combination with [`super::TableMode::Expandable`] or [`super::TableMode::CompactExpandable`].
///
/// Defaults to not having details.
fn render_details(&self) -> Vec<Span> {
vec![]
}
/// Render the details section for a specific column.
///
/// Used in combination with [`super::TableMode::Expandable`] or [`super::TableMode::CompactExpandable`] when one
/// or more headers is marked `expandable=true`.
///
/// Defaults to not having details.
fn render_column_details(&self, #[allow(unused)] column: &C) -> Vec<Span> {
vec![]
}
/// Render the row actions.
///
/// Defaults to no actions.
fn actions(&self) -> Vec<MenuChildVariant> {
vec![]
}
}