charming_fork_zephyr/element/
tooltip.rs1use serde::Serialize;
2
3use crate::element::{AxisPointer, Color, Formatter, Padding};
4
5#[derive(Serialize)]
6#[serde(rename_all = "snake_case")]
7pub enum TriggerOn {
8 Mousemove,
9 Click,
10 #[serde(rename = "mousemove|click")]
11 MousemoveAndClick,
12 None,
13}
14
15#[derive(Serialize)]
17#[serde(rename_all = "snake_case")]
18pub enum Trigger {
19 Item,
20 Axis,
21 None,
22}
23
24#[derive(Serialize)]
25#[serde(rename_all = "camelCase")]
26pub struct Tooltip {
27 #[serde(skip_serializing_if = "Option::is_none")]
28 trigger: Option<Trigger>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
31 trigger_on: Option<TriggerOn>,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
34 axis_pointer: Option<AxisPointer>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
37 formatter: Option<Formatter>,
38
39 #[serde(skip_serializing_if = "Option::is_none")]
40 position: Option<String>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
43 padding: Option<Padding>,
44
45 #[serde(skip_serializing_if = "Option::is_none")]
46 background_color: Option<Color>,
47
48 #[serde(skip_serializing_if = "Option::is_none")]
49 border_color: Option<Color>,
50
51 #[serde(skip_serializing_if = "Option::is_none")]
52 border_width: Option<i64>,
53}
54
55impl Tooltip {
56 pub fn new() -> Self {
57 Self {
58 trigger: None,
59 trigger_on: None,
60 axis_pointer: None,
61 formatter: None,
62 position: None,
63 padding: None,
64 background_color: None,
65 border_color: None,
66 border_width: None,
67 }
68 }
69
70 pub fn trigger<T: Into<Trigger>>(mut self, trigger: T) -> Self {
71 self.trigger = Some(trigger.into());
72 self
73 }
74
75 pub fn trigger_on<T: Into<TriggerOn>>(mut self, trigger_on: T) -> Self {
76 self.trigger_on = Some(trigger_on.into());
77 self
78 }
79
80 pub fn axis_pointer<A: Into<AxisPointer>>(mut self, axis_pointer: A) -> Self {
81 self.axis_pointer = Some(axis_pointer.into());
82 self
83 }
84
85 pub fn formatter<F: Into<Formatter>>(mut self, formatter: F) -> Self {
86 self.formatter = Some(formatter.into());
87 self
88 }
89
90 pub fn position<S: Into<String>>(mut self, position: S) -> Self {
91 self.position = Some(position.into());
92 self
93 }
94
95 pub fn padding<P: Into<Padding>>(mut self, padding: P) -> Self {
96 self.padding = Some(padding.into());
97 self
98 }
99
100 pub fn background_color<C: Into<Color>>(mut self, background_color: C) -> Self {
101 self.background_color = Some(background_color.into());
102 self
103 }
104
105 pub fn border_color<C: Into<Color>>(mut self, border_color: C) -> Self {
106 self.border_color = Some(border_color.into());
107 self
108 }
109
110 pub fn border_width<F: Into<i64>>(mut self, border_width: F) -> Self {
111 self.border_width = Some(border_width.into());
112 self
113 }
114}