yew_datatable_core/state/
data_table_state.rs1use crate::features::aggregation::aggregation_state::AggregationState;
7use crate::features::column_ordering::column_ordering_state::ColumnOrderingState;
8use crate::features::column_pinning::column_pinning_state::ColumnPinningState;
9use crate::features::column_sizing::column_sizing_state::ColumnSizingState;
10use crate::features::column_visibility::column_visibility_state::ColumnVisibilityState;
11use crate::features::expanding::expanding_state::ExpandingState;
12use crate::features::filtering::filter_state::FilterState;
13use crate::features::grouping::grouping_state::GroupingState;
14use crate::features::pagination::pagination_state::PaginationState;
15use crate::features::row_selection::row_selection_state::RowSelectionState;
16use crate::features::sorting::sorting_state::SortingState;
17
18#[derive(Debug, Clone, Default)]
23pub struct DataTableState {
24 pub sorting: SortingState,
26
27 pub filtering: FilterState,
29
30 pub pagination: PaginationState,
32
33 pub row_selection: RowSelectionState,
35
36 pub expanding: ExpandingState,
38
39 pub column_visibility: ColumnVisibilityState,
41
42 pub column_ordering: ColumnOrderingState,
44
45 pub column_pinning: ColumnPinningState,
47
48 pub column_sizing: ColumnSizingState,
50
51 pub grouping: GroupingState,
53
54 pub aggregation: AggregationState,
56}
57
58impl DataTableState {
59 pub fn new() -> Self {
65 Self::default()
66 }
67
68 pub fn builder() -> super::data_table_state_builder::DataTableStateBuilder {
74 super::data_table_state_builder::DataTableStateBuilder::new()
75 }
76
77 pub fn reset_all(&mut self) {
79 self.sorting.reset();
81 self.filtering.reset();
82 self.pagination.reset();
83 self.row_selection.reset();
84 self.expanding.reset();
85 self.column_visibility.reset();
86 self.column_ordering.reset();
87 self.column_pinning.reset();
88 self.column_sizing.reset();
89 self.grouping.reset();
90 self.aggregation.reset();
91 }
92
93 pub fn has_modifications(&self) -> bool {
99 self.sorting.is_sorted()
101 || self.filtering.is_filtered()
102 || self.row_selection.has_selection()
103 || self.expanding.has_expanded()
104 || self.grouping.is_grouped()
105 }
106}