#[derive(Debug, Default, Clone, PartialEq, Eq, Hash)]
pub struct TableState {
pub offset: usize,
pub selected: Option<usize>,
pub selected_column: Option<usize>,
}
impl TableState {
#[must_use]
pub fn new(offset: usize) -> Self {
Self {
offset,
..Default::default()
}
}
pub fn with_selected<T>(selected: T) -> Self
where
T: Into<Option<usize>>,
{
Self {
selected: selected.into(),
..Default::default()
}
}
pub fn with_selected_column<T>(selected: T) -> Self
where
T: Into<Option<usize>>,
{
Self {
selected_column: selected.into(),
..Default::default()
}
}
#[must_use]
pub fn selected<T>(mut self, selected: T) -> Self
where
T: Into<Option<usize>>,
{
self.selected = selected.into();
self
}
#[must_use]
pub fn selected_column<T>(mut self, selected: T) -> Self
where
T: Into<Option<usize>>,
{
self.selected_column = selected.into();
self
}
}