-
Notifications
You must be signed in to change notification settings - Fork 1
/
elements_button.go
96 lines (80 loc) · 2.3 KB
/
elements_button.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
package bulma
import (
e "github.com/willoma/gomplements"
"maragu.dev/gomponents"
"maragu.dev/gomponents/html"
)
func newButton(fn func(...gomponents.Node) gomponents.Node, children ...any) e.Element {
b := &spanAroundNonIconsIfHasIcons{elemFn: fn}
b.With(e.Class("button")).With(children...)
return b
}
type button struct {
e.Element
}
func (b *button) Clone() e.Element {
return &button{b.Element.Clone()}
}
// Button creates a button.
//
// https://willoma.github.io/bulma-gomponents/button.html
func Button(children ...any) e.Element {
return newButton(html.Button, children...)
}
// ButtonA creates a button-looking link.
//
// https://willoma.github.io/bulma-gomponents/button.html
func ButtonA(children ...any) e.Element {
return newButton(html.A, children...)
}
// ButtonAHref creates a button-looking link, with the provided href.
//
// https://willoma.github.io/bulma-gomponents/button.html
func ButtonAHref(href string, children ...any) e.Element {
return newButton(html.A, html.Href(href), children)
}
// ButtonSubmit creates a submit button.
//
// https://willoma.github.io/bulma-gomponents/button.html
func ButtonSubmit(children ...any) e.Element {
return newButton(html.Button, html.Type("submit"), children)
}
// ButtonInputSubmit creates an input of type submit.
//
// https://willoma.github.io/bulma-gomponents/button.html
func ButtonInputSubmit(value string, children ...any) e.Element {
return newButton(html.Input, html.Type("submit"), html.Value(value), children)
}
// ButtonInputReset creates an input of type reset.
//
// https://willoma.github.io/bulma-gomponents/button.html
func ButtonInputReset(value string, children ...any) e.Element {
return newButton(html.Input, html.Type("reset"), html.Value(value), children)
}
// Buttons creates a list of buttons.
//
// https://willoma.github.io/bulma-gomponents/button.html
func Buttons(children ...any) e.Element {
b := &buttons{e.Div(e.Class("buttons"))}
b.With(children...)
return b
}
type buttons struct {
e.Element
}
func (b *buttons) With(children ...any) e.Element {
for _, c := range children {
switch c := c.(type) {
case e.Class:
b.Element.With(changeSizePrefix("are-", c))
case []any:
b.With(c...)
default:
b.Element.With(c)
}
}
return b
}
func (b *buttons) Clone() e.Element {
return &buttons{b.Element.Clone()}
}