canonrs-client 0.1.0

CanonRS client-side runtime
use leptos::prelude::*;
use super::types_pin::PinPosition;

pub(super) struct DataTableState<T: Clone + PartialEq + Send + Sync + 'static> {
    pub current_page:    RwSignal<usize>,
    pub sort_column:     RwSignal<Option<String>>,
    pub sort_ascending:  RwSignal<bool>,
    pub filter_query:    RwSignal<String>,
    pub loading:         RwSignal<bool>,
    pub error:           RwSignal<Option<String>>,
    pub data:            RwSignal<Vec<T>>,
    pub total:           RwSignal<usize>,
    pub column_widths:   RwSignal<std::collections::HashMap<String, u32>>,
    pub pinned_columns:  RwSignal<std::collections::HashMap<String, PinPosition>>,
}

impl<T: Clone + PartialEq + Send + Sync + 'static> DataTableState<T> {
    pub(super) fn new() -> Self {
        Self {
            current_page:   RwSignal::new(1usize),
            sort_column:    RwSignal::new(None::<String>),
            sort_ascending: RwSignal::new(true),
            filter_query:   RwSignal::new(String::new()),
            loading:        RwSignal::new(false),
            error:          RwSignal::new(None::<String>),
            data:           RwSignal::new(Vec::<T>::new()),
            total:          RwSignal::new(0usize),
            column_widths:  RwSignal::new(std::collections::HashMap::new()),
            pinned_columns: RwSignal::new(std::collections::HashMap::new()),
        }
    }
}