Class: ChatSDK::Modals::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/chat_sdk/modals/builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(title:, submit_label: nil, callback_id: nil, &block) ⇒ Builder

Returns a new instance of Builder.



6
7
8
9
10
11
12
# File 'lib/chat_sdk/modals/builder.rb', line 6

def initialize(title:, submit_label: nil, callback_id: nil, &block)
  @title = title
  @submit_label = submit_label
  @callback_id = callback_id
  @children = []
  instance_eval(&block) if block
end

Instance Method Details

#buildObject



14
15
16
17
18
19
# File 'lib/chat_sdk/modals/builder.rb', line 14

def build
  attrs = {title: @title}
  attrs[:submit_label] = @submit_label if @submit_label
  attrs[:callback_id] = @callback_id if @callback_id
  ChatSDK::Cards::Node.new(:modal, attributes: attrs, children: @children)
end

#select_input(id:, label:, placeholder: nil, optional: false, &block) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/chat_sdk/modals/builder.rb', line 27

def select_input(id:, label:, placeholder: nil, optional: false, &block)
  ctx = ChatSDK::Cards::SelectContext.new
  ctx.instance_eval(&block)
  attrs = {id: id, label: label, input_type: :select, optional: optional}
  attrs[:placeholder] = placeholder if placeholder
  @children << ChatSDK::Cards::Node.new(:input, attributes: attrs, children: ctx.nodes)
end

#static_text(content) ⇒ Object



35
36
37
# File 'lib/chat_sdk/modals/builder.rb', line 35

def static_text(content)
  @children << ChatSDK::Cards::Node.new(:text, attributes: {content: content})
end

#text_input(id:, label:, placeholder: nil, multiline: false, optional: false) ⇒ Object



21
22
23
24
25
# File 'lib/chat_sdk/modals/builder.rb', line 21

def text_input(id:, label:, placeholder: nil, multiline: false, optional: false)
  attrs = {id: id, label: label, input_type: :text, multiline: multiline, optional: optional}
  attrs[:placeholder] = placeholder if placeholder
  @children << ChatSDK::Cards::Node.new(:input, attributes: attrs)
end