orbital_base_components/navigation/
item_config.rs1use leptos::{ev, prelude::*};
2
3#[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}