class Slack::Surfaces::Modal

Modals provide focused spaces ideal for requesting and collecting data from users, or temporarily displaying dynamic and interactive information.

api.slack.com/surfaces#modals api.slack.com/reference/surfaces/views

@param title [String] title is required. Must be set as an initial argument

or using #title for detail setup

Constants

TYPE

Attributes

blocks[R]

Public Class Methods

new( title: nil, blocks: nil, private_metadata: nil, callback_id: nil, external_id: nil, clear_on_close: nil, notify_on_close: nil ) click to toggle source
# File lib/slack/surfaces/modal.rb, line 17
def initialize(
  title: nil,
  blocks: nil,
  private_metadata: nil,
  callback_id: nil,
  external_id: nil,
  clear_on_close: nil,
  notify_on_close: nil
)
  @blocks = blocks || Slack::BlockKit::Blocks.new

  @private_metadata = private_metadata
  @callback_id = callback_id
  @external_id = external_id

  @clear_on_close = clear_on_close
  @notify_on_close = notify_on_close

  @title = Slack::BlockKit::Composition::PlainText.new(text: title) if title

  @close, @submit = nil
end

Public Instance Methods

as_json(*) click to toggle source
# File lib/slack/surfaces/modal.rb, line 60
def as_json(*) # rubocop:disable Metrics/MethodLength
  {
    type: TYPE,
    blocks: @blocks.as_json,
    title: @title&.as_json,
    close: @close&.as_json,
    submit: @submit&.as_json,
    clear_on_close: @clear_on_close,
    notify_on_close: @notify_on_close,
    private_metadata: @private_metadata,
    callback_id: @callback_id,
    external_id: @external_id
  }.compact
end
close(text:, emoji: nil) click to toggle source
# File lib/slack/surfaces/modal.rb, line 48
def close(text:, emoji: nil)
  @close = Slack::BlockKit::Composition::PlainText.new(text: text, emoji: emoji)

  self
end
submit(text:, emoji: nil) click to toggle source
# File lib/slack/surfaces/modal.rb, line 54
def submit(text:, emoji: nil)
  @submit = Slack::BlockKit::Composition::PlainText.new(text: text, emoji: emoji)

  self
end
title(text:, emoji: nil) click to toggle source
# File lib/slack/surfaces/modal.rb, line 42
def title(text:, emoji: nil)
  @title = Slack::BlockKit::Composition::PlainText.new(text: text, emoji: emoji)

  self
end