1package slack
2
3// HeaderBlock defines a new block of type header
4//
5// More Information: https://api.slack.com/reference/messaging/blocks#header
6type HeaderBlock struct {
7	Type    MessageBlockType `json:"type"`
8	Text    *TextBlockObject `json:"text,omitempty"`
9	BlockID string           `json:"block_id,omitempty"`
10}
11
12// BlockType returns the type of the block
13func (s HeaderBlock) BlockType() MessageBlockType {
14	return s.Type
15}
16
17// HeaderBlockOption allows configuration of options for a new header block
18type HeaderBlockOption func(*HeaderBlock)
19
20func HeaderBlockOptionBlockID(blockID string) HeaderBlockOption {
21	return func(block *HeaderBlock) {
22		block.BlockID = blockID
23	}
24}
25
26// NewHeaderBlock returns a new instance of a header block to be rendered
27func NewHeaderBlock(textObj *TextBlockObject, options ...HeaderBlockOption) *HeaderBlock {
28	block := HeaderBlock{
29		Type: MBTHeader,
30		Text: textObj,
31	}
32
33	for _, option := range options {
34		option(&block)
35	}
36
37	return &block
38}
39