-
Notifications
You must be signed in to change notification settings - Fork 1
/
toggle.go
144 lines (136 loc) · 3.56 KB
/
toggle.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package forms
import htmx "github.com/zeiss/fiber-htmx"
// ToggleProps represents the properties for a toggle element.
type ToggleProps struct {
ClassNames htmx.ClassNames // The class names for the toggle element.
Name string // The name of the toggle element.
Value string // The value of the toggle element.
Disabled bool // Whether the toggle element is disabled.
Checked bool // Whether the toggle element is checked.
}
// Toggle returns a toggle element based on the provided properties.
func Toggle(p ToggleProps, children ...htmx.Node) htmx.Node {
return htmx.Input(
htmx.Merge(
htmx.ClassNames{
"toggle": true,
},
p.ClassNames,
),
htmx.Attribute("type", "checkbox"),
htmx.Attribute("name", p.Name),
htmx.Attribute("value", p.Value),
htmx.If(p.Disabled, htmx.Disabled()),
htmx.If(p.Checked, htmx.Checked()),
htmx.Group(children...),
)
}
// ToggleSuccess is a component that displays a success toggle.
func ToggleSuccess(p ToggleProps, children ...htmx.Node) htmx.Node {
return htmx.Input(
htmx.Merge(
htmx.ClassNames{
"toggle": true,
"toggle-success": true,
},
p.ClassNames,
),
htmx.Attribute("type", "checkbox"),
htmx.Attribute("name", p.Name),
htmx.Attribute("value", p.Value),
htmx.If(p.Disabled, htmx.Disabled()),
htmx.If(p.Checked, htmx.Checked()),
htmx.Group(children...),
)
}
// ToggleWarning is a component that displays a warning toggle.
func ToggleWarning(p ToggleProps, children ...htmx.Node) htmx.Node {
return htmx.Input(
htmx.Merge(
htmx.ClassNames{
"toggle": true,
"toggle-warning": true,
},
p.ClassNames,
),
htmx.Attribute("type", "checkbox"),
htmx.Attribute("name", p.Name),
htmx.Attribute("value", p.Value),
htmx.If(p.Disabled, htmx.Disabled()),
htmx.If(p.Checked, htmx.Checked()),
htmx.Group(children...),
)
}
// ToggleInfo is a component that displays an info toggle.
func ToggleInfo(p ToggleProps, children ...htmx.Node) htmx.Node {
return htmx.Input(
htmx.Merge(
htmx.ClassNames{
"toggle": true,
"toggle-info": true,
},
p.ClassNames,
),
htmx.Attribute("type", "checkbox"),
htmx.Attribute("name", p.Name),
htmx.Attribute("value", p.Value),
htmx.If(p.Disabled, htmx.Disabled()),
htmx.If(p.Checked, htmx.Checked()),
htmx.Group(children...),
)
}
// ToggleError is a component that displays an error toggle.
func ToggleError(p ToggleProps, children ...htmx.Node) htmx.Node {
return htmx.Input(
htmx.Merge(
htmx.ClassNames{
"toggle": true,
"toggle-error": true,
},
p.ClassNames,
),
htmx.Attribute("type", "checkbox"),
htmx.Attribute("name", p.Name),
htmx.Attribute("value", p.Value),
htmx.If(p.Disabled, htmx.Disabled()),
htmx.If(p.Checked, htmx.Checked()),
htmx.Group(children...),
)
}
// ToggleLabel is a component that displays a label for a toggle.
func ToggleLabel(p ToggleProps, children ...htmx.Node) htmx.Node {
return htmx.Div(
htmx.Merge(
htmx.ClassNames{
"form-control": true,
},
),
htmx.Label(
htmx.Merge(
htmx.ClassNames{
"label": true,
"cursor-pointer": true,
},
),
htmx.Span(
htmx.ClassNames{
"label-text": true,
},
htmx.Group(children...),
),
htmx.Input(
htmx.Merge(
htmx.ClassNames{
"toggle": true,
},
p.ClassNames,
),
htmx.Attribute("type", "checkbox"),
htmx.Attribute("name", p.Name),
htmx.Attribute("value", p.Value),
htmx.If(p.Disabled, htmx.Disabled()),
htmx.If(p.Checked, htmx.Checked()),
),
),
)
}