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,
|
||
|
}
|
||
|
}
|