Add new options in multiselect
This commit is contained in:
38
components/input/option.go
Normal file
38
components/input/option.go
Normal file
@ -0,0 +1,38 @@
|
||||
package input
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Option is an option for select fields.
|
||||
type Option[T comparable] struct {
|
||||
Key string
|
||||
Value T
|
||||
selected bool
|
||||
}
|
||||
|
||||
// NewOptions returns new options from a list of values.
|
||||
func NewOptions[T comparable](values ...T) []Option[T] {
|
||||
options := make([]Option[T], len(values))
|
||||
for i, o := range values {
|
||||
options[i] = Option[T]{
|
||||
Key: fmt.Sprint(o),
|
||||
Value: o,
|
||||
}
|
||||
}
|
||||
return options
|
||||
}
|
||||
|
||||
// NewOption returns a new select option.
|
||||
func NewOption[T comparable](key string, value T) Option[T] {
|
||||
return Option[T]{Key: key, Value: value}
|
||||
}
|
||||
|
||||
// Selected sets whether the option is currently selected.
|
||||
func (o Option[T]) Selected(selected bool) Option[T] {
|
||||
o.selected = selected
|
||||
return o
|
||||
}
|
||||
|
||||
// String returns the key of the option.
|
||||
func (o Option[T]) String() string {
|
||||
return o.Key
|
||||
}
|
||||
Reference in New Issue
Block a user