1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package vuetifyx
- import (
- "context"
- v "github.com/qor5/ui/vuetify"
- h "github.com/theplant/htmlgo"
- )
- type CardBuilder struct {
- children []h.HTMLComponent
- systemBar []h.HTMLComponent
- header []h.HTMLComponent
- actions []h.HTMLComponent
- classNames []string
- outlined bool
- }
- func Card(children ...h.HTMLComponent) (r *CardBuilder) {
- r = &CardBuilder{}
- r.Children(children...)
- return
- }
- func (b *CardBuilder) Children(comps ...h.HTMLComponent) (r *CardBuilder) {
- b.children = comps
- return b
- }
- func (b *CardBuilder) Actions(actions ...h.HTMLComponent) (r *CardBuilder) {
- b.actions = actions
- return b
- }
- func (b *CardBuilder) Header(header ...h.HTMLComponent) (r *CardBuilder) {
- b.header = header
- return b
- }
- func (b *CardBuilder) HeaderTitle(title string) (r *CardBuilder) {
- b.header = []h.HTMLComponent{h.Text(title)}
- return b
- }
- func (b *CardBuilder) SystemBar(systemBar ...h.HTMLComponent) (r *CardBuilder) {
- b.systemBar = systemBar
- return b
- }
- func (b *CardBuilder) Class(names ...string) (r *CardBuilder) {
- b.classNames = names
- return b
- }
- func (b *CardBuilder) Outlined(v bool) (r *CardBuilder) {
- b.outlined = v
- return b
- }
- func (b *CardBuilder) MarshalHTML(ctx context.Context) (r []byte, err error) {
- var sb h.HTMLComponent
- var hr h.HTMLComponent
- if len(b.systemBar) > 0 {
- sb = v.VSystemBar(b.systemBar...).Class("mx-2 pt-4").Color("white").Height(32)
- }
- if len(b.children) > 0 {
- empty := true
- for _, c := range b.children {
- if c != nil {
- empty = false
- }
- }
- if !empty {
- hr = v.VDivider()
- }
- }
- return v.VCard(
- sb,
- v.VToolbar(
- v.VToolbarTitle("").Children(b.header...),
- v.VSpacer(),
- ).Flat(true).AppendChildren(b.actions...),
- hr,
- ).Outlined(b.outlined).Class(b.classNames...).AppendChildren(b.children...).MarshalHTML(ctx)
- }
|