use crate::{ChangeEvent, ColumnSort, EventHandler, TableClassesProvider, TableHeadEvent};
use leptos::*;
use std::collections::VecDeque;
pub trait TableRow: Clone {
type ClassesProvider: TableClassesProvider + Copy;
const COLUMN_COUNT: usize;
fn render_row(&self, index: usize, on_change: EventHandler<ChangeEvent<Self>>)
-> impl IntoView;
fn render_head_row<F>(
sorting: Signal<VecDeque<(usize, ColumnSort)>>,
on_head_click: F,
) -> impl IntoView
where
F: Fn(TableHeadEvent) + Clone + 'static;
}
pub fn get_sorting_for_column(
col_index: usize,
sorting: Signal<VecDeque<(usize, ColumnSort)>>,
) -> ColumnSort {
sorting.with(|sorting| {
sorting
.into_iter()
.find(|(col, _)| *col == col_index)
.map(|(_, sort)| *sort)
.unwrap_or(ColumnSort::None)
})
}