Class: Slack::BlockKit::Element::OverflowMenu

Inherits:
Object
  • Object
show all
Includes:
Composition::ConfirmationDialog::Confirmable
Defined in:
lib/slack/block_kit/element/overflow_menu.rb

Overview

This is like a cross between a button and a select menu - when a user clicks on this overflow button, they will be presented with a list of options to choose from. Unlike the select menu, there is no typeahead field, and the button always appears with an ellipsis (“…”) rather than customisable text.

As such, it is usually used if you want a more compact layout than a select menu, or to supply a list of less visually important actions after a row of buttons.

api.slack.com/reference/messaging/block-elements#overflow

Constant Summary collapse

TYPE =
'overflow'

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Composition::ConfirmationDialog::Confirmable

#confirmation_dialog, included

Constructor Details

#initialize(action_id:) {|_self| ... } ⇒ OverflowMenu

Returns a new instance of OverflowMenu.

Yields:

  • (_self)

Yield Parameters:



24
25
26
27
28
29
# File 'lib/slack/block_kit/element/overflow_menu.rb', line 24

def initialize(action_id:)
  @action_id = action_id
  @options = []

  yield(self) if block_given?
end

Instance Attribute Details

#optionsObject

Returns the value of attribute options.



22
23
24
# File 'lib/slack/block_kit/element/overflow_menu.rb', line 22

def options
  @options
end

Instance Method Details

#as_jsonObject



42
43
44
45
46
47
48
49
# File 'lib/slack/block_kit/element/overflow_menu.rb', line 42

def as_json(*)
  {
    type: TYPE,
    action_id: @action_id,
    options: @options.map(&:as_json),
    confirm: confirm&.as_json
  }.compact
end

#option(value:, text:, emoji: nil, url: nil) ⇒ Object



31
32
33
34
35
36
37
38
39
40
# File 'lib/slack/block_kit/element/overflow_menu.rb', line 31

def option(value:, text:, emoji: nil, url: nil)
  @options << Composition::Option.new(
    value: value,
    text: text,
    emoji: emoji,
    url: url
  )

  self
end