123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package vuetifyx
- import (
- "context"
- "fmt"
- "github.com/qor5/ui/vuetify"
- h "github.com/theplant/htmlgo"
- )
- type VXReadonlyFieldBuilder struct {
- label string
- value interface{}
- children h.HTMLComponents
- checkbox bool
- }
- func VXReadonlyField(children ...h.HTMLComponent) *VXReadonlyFieldBuilder {
- b := &VXReadonlyFieldBuilder{}
- if len(children) > 0 {
- b.children = children
- }
- return b
- }
- func (b *VXReadonlyFieldBuilder) Label(v string) *VXReadonlyFieldBuilder {
- b.label = v
- return b
- }
- func (b *VXReadonlyFieldBuilder) Value(v interface{}) *VXReadonlyFieldBuilder {
- b.value = v
- return b
- }
- func (b *VXReadonlyFieldBuilder) Children(children ...h.HTMLComponent) *VXReadonlyFieldBuilder {
- b.children = children
- return b
- }
- func (b *VXReadonlyFieldBuilder) Checkbox(v bool) *VXReadonlyFieldBuilder {
- b.checkbox = v
- return b
- }
- func (b *VXReadonlyFieldBuilder) MarshalHTML(ctx context.Context) ([]byte, error) {
- var vComp h.HTMLComponent
- if b.children != nil {
- vComp = b.children
- } else {
- if b.checkbox {
- vComp = vuetify.VCheckbox().InputValue(b.value).
- Readonly(true).
- Ripple(false).
- HideDetails(true).
- Class("my-0 py-0")
- } else {
- vComp = h.Text(fmt.Sprint(b.value))
- }
- }
- return h.Div(
- h.Label(b.label).Class("v-label theme--light text-caption"),
- h.Div(vComp).Class("pt-1"),
- ).Class("mb-4").MarshalHTML(ctx)
- }
|