forked from GoAdminGroup/go-admin
/
button.go
129 lines (104 loc) · 2.96 KB
/
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
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
package components
import (
"fmt"
"html/template"
"github.com/GoAdminGroup/go-admin/modules/language"
"github.com/GoAdminGroup/go-admin/modules/utils"
"github.com/GoAdminGroup/go-admin/template/icon"
"github.com/GoAdminGroup/go-admin/template/types"
)
type ButtonAttribute struct {
Name string
Content template.HTML
Orientation string
LoadingText template.HTML
Theme string
Type string
Size string
Href string
Class string
ID string
Style template.HTMLAttr
MarginLeft int
MarginRight int
types.Attribute
}
func (compo *ButtonAttribute) SetContent(value template.HTML) types.ButtonAttribute {
compo.Content = value
return compo
}
func (compo *ButtonAttribute) SetOrientationRight() types.ButtonAttribute {
compo.Orientation = "pull-right"
return compo
}
func (compo *ButtonAttribute) SetOrientationLeft() types.ButtonAttribute {
compo.Orientation = "pull-left"
return compo
}
func (compo *ButtonAttribute) SetMarginLeft(px int) types.ButtonAttribute {
compo.MarginLeft = px
return compo
}
func (compo *ButtonAttribute) SetSmallSize() types.ButtonAttribute {
compo.Size = "btn-sm"
return compo
}
func (compo *ButtonAttribute) SetMiddleSize() types.ButtonAttribute {
compo.Size = "btn-md"
return compo
}
func (compo *ButtonAttribute) SetMarginRight(px int) types.ButtonAttribute {
compo.MarginRight = px
return compo
}
func (compo *ButtonAttribute) SetLoadingText(value template.HTML) types.ButtonAttribute {
compo.LoadingText = value
return compo
}
func (compo *ButtonAttribute) SetThemePrimary() types.ButtonAttribute {
compo.Theme = "primary"
return compo
}
func (compo *ButtonAttribute) SetThemeDefault() types.ButtonAttribute {
compo.Theme = "default"
return compo
}
func (compo *ButtonAttribute) SetThemeWarning() types.ButtonAttribute {
compo.Theme = "warning"
return compo
}
func (compo *ButtonAttribute) SetHref(href string) types.ButtonAttribute {
compo.Href = href
return compo
}
func (compo *ButtonAttribute) AddClass(class string) types.ButtonAttribute {
compo.Class += " " + class
return compo
}
func (compo *ButtonAttribute) SetID(id string) types.ButtonAttribute {
compo.ID = id
return compo
}
func (compo *ButtonAttribute) SetTheme(value string) types.ButtonAttribute {
compo.Theme = value
return compo
}
func (compo *ButtonAttribute) SetType(value string) types.ButtonAttribute {
compo.Type = value
return compo
}
func (compo *ButtonAttribute) GetContent() template.HTML {
if compo.MarginLeft != 0 {
compo.Style = template.HTMLAttr(fmt.Sprintf(`style="margin-left:%dpx;"`, compo.MarginLeft))
}
if compo.MarginRight != 0 {
compo.Style = template.HTMLAttr(fmt.Sprintf(`style="margin-right:%dpx;"`, compo.MarginRight))
}
if compo.LoadingText == "" {
compo.LoadingText = icon.Icon(icon.Spinner, 1) + language.GetFromHtml(`Save`)
}
if compo.ID == "" {
compo.ID = utils.Uuid(15) + "_btn"
}
return ComposeHtml(compo.TemplateList, compo.Separation, *compo, "button")
}