use crate::TableSelection;
use crate::derive::derive_table_widget;
use crate::selection::RowSelection;
use crate::table::Table;
use crate::vec::TableVecState;
use ratatui_core::buffer::Buffer;
use ratatui_core::layout::Rect;
use ratatui_core::widgets::StatefulWidget;
pub struct TableVec<'a, T, Selection = RowSelection> {
core: Table<'a, &'a T, Selection>,
}
impl<'a, T, Selection> Default for TableVec<'a, T, Selection> {
fn default() -> Self {
Self {
core: Default::default(),
}
}
}
impl<'a, T, Selection> TableVec<'a, T, Selection> {
pub fn new() -> Self
where
Selection: Default,
{
Self::default()
}
derive_table_widget!(REF_T);
derive_table_widget!();
}
impl<'a, 'b, T, Selection> TableVec<'a, T, Selection>
where
Selection: TableSelection + Default,
'b: 'a,
{
pub fn render(
mut self,
area: Rect,
buf: &mut Buffer,
state: &'b mut TableVecState<T, Selection>,
) {
self.core = self.core.data(state.data.iter());
self.core.render(area, buf, &mut state.table);
}
}