Add table support to markdown widget

This commit is contained in:
Héctor Ramón Jiménez 2025-07-17 03:48:45 +02:00
parent 291e615c0b
commit dcea10f707
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
2 changed files with 240 additions and 52 deletions

View file

@ -10,8 +10,8 @@ use crate::core::{
Widget,
};
pub fn table<'a, T, Message, Theme, Renderer>(
columns: impl IntoIterator<Item = Column<'a, T, Message, Theme, Renderer>>,
pub fn table<'a, 'b, T, Message, Theme, Renderer>(
columns: impl IntoIterator<Item = Column<'a, 'b, T, Message, Theme, Renderer>>,
rows: impl IntoIterator<Item = T>,
) -> Table<'a, Message, Theme, Renderer>
where
@ -22,10 +22,10 @@ where
Table::new(columns, rows)
}
pub fn column<'a, T, E, Message, Theme, Renderer>(
pub fn column<'a, 'b, T, E, Message, Theme, Renderer>(
header: impl Into<Element<'a, Message, Theme, Renderer>>,
view: impl Fn(T) -> E + 'a,
) -> Column<'a, T, Message, Theme, Renderer>
view: impl Fn(T) -> E + 'b,
) -> Column<'a, 'b, T, Message, Theme, Renderer>
where
T: 'a,
E: Into<Element<'a, Message, Theme, Renderer>>,
@ -65,8 +65,10 @@ where
Theme: Catalog,
Renderer: core::Renderer,
{
pub fn new<T>(
columns: impl IntoIterator<Item = Column<'a, T, Message, Theme, Renderer>>,
pub fn new<'b, T>(
columns: impl IntoIterator<
Item = Column<'a, 'b, T, Message, Theme, Renderer>,
>,
rows: impl IntoIterator<Item = T>,
) -> Self
where
@ -122,7 +124,7 @@ where
width,
height,
padding_x: 10.0,
padding_y: 10.0,
padding_y: 5.0,
separator_x: 1.0,
separator_y: 1.0,
class: Theme::default(),
@ -526,19 +528,22 @@ where
pub struct Column<
'a,
'b,
T,
Message,
Theme = crate::Theme,
Renderer = crate::Renderer,
> {
header: Element<'a, Message, Theme, Renderer>,
view: Box<dyn Fn(T) -> Element<'a, Message, Theme, Renderer> + 'a>,
view: Box<dyn Fn(T) -> Element<'a, Message, Theme, Renderer> + 'b>,
width: Length,
align_x: alignment::Horizontal,
align_y: alignment::Vertical,
}
impl<'a, T, Message, Theme, Renderer> Column<'a, T, Message, Theme, Renderer> {
impl<'a, 'b, T, Message, Theme, Renderer>
Column<'a, 'b, T, Message, Theme, Renderer>
{
pub fn width(mut self, width: impl Into<Length>) -> Self {
self.width = width.into();
self