class Slack::BlockKit::Layout::Input

A block that collects information from users - it can hold a plain-text input element, a checkbox element, a radio button element, a select menu element, a multi-select menu element, or a datepicker.

api.slack.com/reference/block-kit/blocks#input

Constants

TYPE

Attributes

block_id[RW]
element[RW]
emoji[RW]
hint[RW]
label[RW]
optional[RW]

Public Class Methods

new( label:, element: nil, block_id: nil, hint: nil, optional: nil, emoji: nil, dispatch_action: nil ) click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 16
def initialize(
  label:,
  element: nil,
  block_id: nil,
  hint: nil,
  optional: nil,
  emoji: nil,
  dispatch_action: nil
)
  @label = Composition::PlainText.new(text: label, emoji: emoji) if label
  @hint = Composition::PlainText.new(text: hint, emoji: emoji) if hint
  @block_id = block_id
  @optional = optional
  @element = element
  @dispatch_action = dispatch_action
end

Public Instance Methods

as_json(*) click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 226
def as_json(*)
  {
    type: TYPE,
    element: @element.as_json,
    label: @label&.as_json,
    hint: @hint&.as_json,
    block_id: @block_id,
    optional: optional,
    dispatch_action: @dispatch_action
  }.compact
end
channels_select(placeholder:, action_id:, initial: nil, emoji: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 60
def channels_select(placeholder:, action_id:, initial: nil, emoji: nil)
  @element = Element::ChannelsSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    emoji: emoji
  )

  yield(@element) if block_given?

  self
end
checkboxes(action_id:) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 73
def checkboxes(action_id:)
  @element = Element::Checkboxes.new(action_id: action_id)

  yield(@element) if block_given?

  self
end
conversation_select(placeholder:, action_id:, initial: nil, emoji: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 33
def conversation_select(placeholder:, action_id:, initial: nil, emoji: nil)
  @element = Element::ConversationsSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    emoji: emoji
  )

  yield(@element) if block_given?

  self
end
datepicker(action_id:, placeholder: nil, initial: nil, emoji: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 81
def datepicker(action_id:, placeholder: nil, initial: nil, emoji: nil)
  @element = Element::DatePicker.new(
    action_id: action_id,
    placeholder: placeholder,
    initial: initial,
    emoji: emoji
  )

  yield(@element) if block_given?

  self
end
external_select(placeholder:, action_id:, initial: nil, min_query_length: nil, emoji: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 133
def external_select(placeholder:, action_id:, initial: nil, min_query_length: nil, emoji: nil)
  @element = Element::ExternalSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    min_query_length: min_query_length,
    emoji: emoji
  )

  yield(@element) if block_given?

  self
end
multi_channels_select(placeholder:, action_id:, initial: nil, emoji: nil, max_selected_items: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 94
def multi_channels_select(placeholder:, action_id:, initial: nil, emoji: nil, max_selected_items: nil)
  @element = Element::MultiChannelsSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    emoji: emoji,
    max_selected_items: max_selected_items
  )

  yield(@element) if block_given?

  self
end
multi_conversations_select(placeholder:, action_id:, initial: nil, emoji: nil, max_selected_items: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 46
def multi_conversations_select(placeholder:, action_id:, initial: nil, emoji: nil, max_selected_items: nil)
  @element = Element::MultiConversationsSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    emoji: emoji,
    max_selected_items: max_selected_items
  )

  yield(@element) if block_given?

  self
end
multi_external_select( placeholder:, action_id:, initial: nil, min_query_length: nil, emoji: nil, max_selected_items: nil ) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 147
def multi_external_select(
  placeholder:,
  action_id:,
  initial: nil,
  min_query_length: nil,
  emoji: nil,
  max_selected_items: nil
)
  @element = Element::MultiExternalSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    min_query_length: min_query_length,
    emoji: emoji,
    max_selected_items: max_selected_items
  )

  yield(@element) if block_given?

  self
end
multi_static_select(placeholder:, action_id:, emoji: nil, max_selected_items: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 120
def multi_static_select(placeholder:, action_id:, emoji: nil, max_selected_items: nil)
  @element = Element::MultiStaticSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    emoji: emoji,
    max_selected_items: max_selected_items
  )

  yield(@element) if block_given?

  self
end
multi_users_select(placeholder:, action_id:, initial: nil, emoji: nil, max_selected_items: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 212
def multi_users_select(placeholder:, action_id:, initial: nil, emoji: nil, max_selected_items: nil)
  @element = Element::MultiUsersSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    emoji: emoji,
    max_selected_items: max_selected_items
  )

  yield(@element) if block_given?

  self
end
plain_text_input( action_id:, placeholder: nil, emoji: nil, initial_value: nil, multiline: nil, min_length: nil, max_length: nil ) click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 169
def plain_text_input(
  action_id:,
  placeholder: nil,
  emoji: nil,
  initial_value: nil,
  multiline: nil,
  min_length: nil,
  max_length: nil
)
  @element = Element::PlainTextInput.new(
    action_id: action_id,
    placeholder: placeholder,
    emoji: emoji,
    initial_value: initial_value,
    multiline: multiline,
    min_length: min_length,
    max_length: max_length
  )

  self
end
radio_buttons(action_id:) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 191
def radio_buttons(action_id:)
  @element = Element::RadioButtons.new(action_id: action_id)

  yield(@element) if block_given?

  self
end
static_select(placeholder:, action_id:, emoji: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 108
def static_select(placeholder:, action_id:, emoji: nil)
  @element = Element::StaticSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    emoji: emoji
  )

  yield(@element) if block_given?

  self
end
users_select(placeholder:, action_id:, initial: nil, emoji: nil) { |element| ... } click to toggle source
# File lib/slack/block_kit/layout/input.rb, line 199
def users_select(placeholder:, action_id:, initial: nil, emoji: nil)
  @element = Element::UsersSelect.new(
    placeholder: placeholder,
    action_id: action_id,
    initial: initial,
    emoji: emoji
  )

  yield(@element) if block_given?

  self
end