Skip to main content

orbital_base_components/navigation/
item_config.rs

1use leptos::{ev, prelude::*};
2
3/// Configuration for [`BaseNavigationItem`](super::item::BaseNavigationItem).
4#[derive(Clone)]
5pub struct BaseNavigationItemConfig {
6    pub item_id: Signal<String>,
7    pub label: Signal<String>,
8    pub depth: usize,
9    pub item_class: Signal<String>,
10    pub item_style: Signal<Option<String>>,
11    pub disabled: Signal<bool>,
12    pub selected: Signal<bool>,
13    pub on_user_click: Callback<ev::MouseEvent>,
14}
15
16impl BaseNavigationItemConfig {
17    pub fn new(item_id: Signal<String>, on_user_click: Callback<ev::MouseEvent>) -> Self {
18        Self {
19            item_id,
20            label: item_id,
21            depth: 0,
22            item_class: Signal::from(String::new()),
23            item_style: Signal::from(None),
24            disabled: Signal::from(false),
25            selected: Signal::from(false),
26            on_user_click,
27        }
28    }
29
30    pub fn with_label(mut self, label: Signal<String>) -> Self {
31        self.label = label;
32        self
33    }
34
35    pub fn with_depth(mut self, depth: usize) -> Self {
36        self.depth = depth;
37        self
38    }
39
40    pub fn with_item_class(mut self, item_class: Signal<String>) -> Self {
41        self.item_class = item_class;
42        self
43    }
44
45    pub fn with_item_style(mut self, item_style: Signal<Option<String>>) -> Self {
46        self.item_style = item_style;
47        self
48    }
49
50    pub fn with_disabled(mut self, disabled: Signal<bool>) -> Self {
51        self.disabled = disabled;
52        self
53    }
54
55    pub fn with_selected(mut self, selected: Signal<bool>) -> Self {
56        self.selected = selected;
57        self
58    }
59}