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") }