Skip to content

Commit

Permalink
mapped values to dropdown
Browse files Browse the repository at this point in the history
  • Loading branch information
donseba committed Aug 11, 2023
1 parent 35cc871 commit 96db431
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 10 deletions.
19 changes: 10 additions & 9 deletions fields.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ package form
type FieldType string

const (
FieldTypeGroup FieldType = "group"
FieldTypeCheckbox FieldType = "checkbox"
FieldTypeChecklist FieldType = "checklist"
FieldTypeInput FieldType = "input"
FieldTypeLabel FieldType = "label"
FieldTypeRadios FieldType = "radios"
FieldTypeDropdown FieldType = "dropdown"
FieldTypeSubmit FieldType = "submit"
FieldTypeTextArea FieldType = "textArea"
FieldTypeGroup FieldType = "group"
FieldTypeCheckbox FieldType = "checkbox"
FieldTypeChecklist FieldType = "checklist"
FieldTypeInput FieldType = "input"
FieldTypeLabel FieldType = "label"
FieldTypeRadios FieldType = "radios"
FieldTypeDropdown FieldType = "dropdown"
FieldTypeDropdownMapped FieldType = "dropdownmapped"
FieldTypeSubmit FieldType = "submit"
FieldTypeTextArea FieldType = "textArea"
)

type InputFieldType string
Expand Down
25 changes: 24 additions & 1 deletion transformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,15 @@ import (

type (
Enumerator interface{ Enum() []any }
Mapper interface {
Mapper() map[string]string
String() string
}
)

var (
enumType = reflect.TypeOf((*Enumerator)(nil)).Elem()
enumType = reflect.TypeOf((*Enumerator)(nil)).Elem()
mapperType = reflect.TypeOf((*Mapper)(nil)).Elem()
)

type Transformer struct {
Expand Down Expand Up @@ -94,6 +99,24 @@ func (t *Transformer) scanModel(rValue reflect.Value, rType reflect.Type, names
continue
}

if rType.Field(i).Type.Implements(mapperType) {
maps := rValue.Field(i).Interface().(Mapper).Mapper()
var fieldValue []FieldValue
for k, v := range maps {
fieldValue = append(fieldValue, FieldValue{
Value: k,
Name: v,
Disabled: false,
})
}

field.Type = FieldTypeDropdownMapped
field.Values = fieldValue

fields = append(fields, field)
continue
}

inputType := InputFieldType(tags.Get("inputType"))

fType := rType.Field(i).Type
Expand Down

0 comments on commit 96db431

Please sign in to comment.