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