forked from lug/matterbridge
		
	
		
			
				
	
	
		
			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,
 | 
						|
	}
 | 
						|
}
 |