Marvin Preuss
1d4ae27878
All checks were successful
continuous-integration/drone/push Build is passing
60 lines
1.6 KiB
Go
60 lines
1.6 KiB
Go
package slack
|
|
|
|
// TextInputSubtype Accepts email, number, tel, or url. In some form factors, optimized input is provided for this subtype.
|
|
type TextInputSubtype string
|
|
|
|
// TextInputOption handle to extra inputs options.
|
|
type TextInputOption func(*TextInputElement)
|
|
|
|
const (
|
|
// InputSubtypeEmail email keyboard
|
|
InputSubtypeEmail TextInputSubtype = "email"
|
|
// InputSubtypeNumber numeric keyboard
|
|
InputSubtypeNumber TextInputSubtype = "number"
|
|
// InputSubtypeTel Phone keyboard
|
|
InputSubtypeTel TextInputSubtype = "tel"
|
|
// InputSubtypeURL Phone keyboard
|
|
InputSubtypeURL TextInputSubtype = "url"
|
|
)
|
|
|
|
// TextInputElement subtype of DialogInput
|
|
// https://api.slack.com/dialogs#option_element_attributes#text_element_attributes
|
|
type TextInputElement struct {
|
|
DialogInput
|
|
MaxLength int `json:"max_length,omitempty"`
|
|
MinLength int `json:"min_length,omitempty"`
|
|
Hint string `json:"hint,omitempty"`
|
|
Subtype TextInputSubtype `json:"subtype"`
|
|
Value string `json:"value"`
|
|
}
|
|
|
|
// NewTextInput constructor for a `text` input
|
|
func NewTextInput(name, label, text string, options ...TextInputOption) *TextInputElement {
|
|
t := &TextInputElement{
|
|
DialogInput: DialogInput{
|
|
Type: InputTypeText,
|
|
Name: name,
|
|
Label: label,
|
|
},
|
|
Value: text,
|
|
}
|
|
|
|
for _, opt := range options {
|
|
opt(t)
|
|
}
|
|
|
|
return t
|
|
}
|
|
|
|
// NewTextAreaInput constructor for a `textarea` input
|
|
func NewTextAreaInput(name, label, text string) *TextInputElement {
|
|
return &TextInputElement{
|
|
DialogInput: DialogInput{
|
|
Type: InputTypeTextArea,
|
|
Name: name,
|
|
Label: label,
|
|
},
|
|
Value: text,
|
|
}
|
|
}
|