Class: Discordrb::Webhooks::Modal::LabelBuilder
- Inherits:
-
Object
- Object
- Discordrb::Webhooks::Modal::LabelBuilder
- Defined in:
- lib/discordrb/webhooks/modal.rb
Overview
This builder is used when adding a label component to a modal.
Constant Summary collapse
- TEXT_INPUT_STYLES =
A mapping of text input styles to symbol names.
shortis a single line whereparagraphis a block. { short: 1, paragraph: 2 }.freeze
Instance Method Summary collapse
-
#channel_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil, types: nil) ⇒ Object
Add a select channel to the label component.
-
#checkbox(custom_id:, id: nil, default: false) ⇒ Object
Add a standalone checkbox component to the label component.
-
#checkbox_group(custom_id:, id: nil, checkboxes: [], min_values: nil, max_values: nil, required: nil) {|builder| ... } ⇒ Object
Add a group of checkboxes to the label component.
-
#file_upload(custom_id:, id: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a file upload component to the label component.
-
#initialize(label: nil, id: nil, description: nil) {|builder| ... } ⇒ LabelBuilder
constructor
Create a label component.
-
#mentionable_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a select mentionable to the label component.
-
#radio_group(custom_id:, id: nil, buttons: [], required: nil) {|builder| ... } ⇒ Object
Add a group of radio buttons to the label component.
-
#role_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a select role to the label component.
-
#string_select(custom_id:, id: nil, options: [], placeholder: nil, min_values: nil, max_values: nil, required: nil) {|builder| ... } ⇒ Object
(also: #select_menu)
Add a string select menu to the label component.
-
#text_input(style:, custom_id:, id: nil, min_length: nil, max_length: nil, required: nil, value: nil, placeholder: nil, label: nil) ⇒ Object
Add a text input to the label component.
-
#user_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a select user to the label component.
Constructor Details
#initialize(label: nil, id: nil, description: nil) {|builder| ... } ⇒ LabelBuilder
Create a label component.
87 88 89 90 91 92 93 |
# File 'lib/discordrb/webhooks/modal.rb', line 87 def initialize(label: nil, id: nil, description: nil) @id = id @label = label @description = description yield self if block_given? end |
Instance Method Details
#channel_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil, types: nil) ⇒ Object
Add a select channel to the label component.
187 188 189 190 191 192 193 |
# File 'lib/discordrb/webhooks/modal.rb', line 187 def channel_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil, types: nil) builder = Discordrb::Webhooks::View::SelectMenuBuilder.new(custom_id, [], placeholder, min_values, max_values, nil, select_type: :channel_select, id: id, required: required).to_h builder[:channel_types] = types.map { |type| Discordrb::Channel::TYPES[type] || type } if types @component = builder end |
#checkbox(custom_id:, id: nil, default: false) ⇒ Object
Add a standalone checkbox component to the label component.
211 212 213 |
# File 'lib/discordrb/webhooks/modal.rb', line 211 def checkbox(custom_id:, id: nil, default: false) @component = { type: COMPONENT_TYPES[:checkbox], custom_id: custom_id, id: id, default: default }.compact end |
#checkbox_group(custom_id:, id: nil, checkboxes: [], min_values: nil, max_values: nil, required: nil) {|builder| ... } ⇒ Object
Add a group of checkboxes to the label component.
237 238 239 240 241 242 243 |
# File 'lib/discordrb/webhooks/modal.rb', line 237 def checkbox_group(custom_id:, id: nil, checkboxes: [], min_values: nil, max_values: nil, required: nil) builder = GroupBuilder.new(:checkbox_group, custom_id, id, checkboxes, required, min_values, max_values) yield builder if block_given? @component = builder.to_h end |
#file_upload(custom_id:, id: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a file upload component to the label component.
202 203 204 |
# File 'lib/discordrb/webhooks/modal.rb', line 202 def file_upload(custom_id:, id: nil, min_values: nil, max_values: nil, required: nil) @component = { type: COMPONENT_TYPES[:file_upload], custom_id: custom_id, id: id, min_values: min_values, max_values: max_values, required: required }.compact end |
#mentionable_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a select mentionable to the label component.
174 175 176 |
# File 'lib/discordrb/webhooks/modal.rb', line 174 def mentionable_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) @component = Discordrb::Webhooks::View::SelectMenuBuilder.new(custom_id, [], placeholder, min_values, max_values, nil, select_type: :mentionable_select, id: id, required: required).to_h end |
#radio_group(custom_id:, id: nil, buttons: [], required: nil) {|builder| ... } ⇒ Object
Add a group of radio buttons to the label component.
221 222 223 224 225 226 227 |
# File 'lib/discordrb/webhooks/modal.rb', line 221 def radio_group(custom_id:, id: nil, buttons: [], required: nil) builder = GroupBuilder.new(:radio_group, custom_id, id, , required) yield builder if block_given? @component = builder.to_h end |
#role_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a select role to the label component.
162 163 164 |
# File 'lib/discordrb/webhooks/modal.rb', line 162 def role_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) @component = Discordrb::Webhooks::View::SelectMenuBuilder.new(custom_id, [], placeholder, min_values, max_values, nil, select_type: :role_select, id: id, required: required).to_h end |
#string_select(custom_id:, id: nil, options: [], placeholder: nil, min_values: nil, max_values: nil, required: nil) {|builder| ... } ⇒ Object Also known as:
Add a string select menu to the label component.
132 133 134 135 136 137 138 |
# File 'lib/discordrb/webhooks/modal.rb', line 132 def string_select(custom_id:, id: nil, options: [], placeholder: nil, min_values: nil, max_values: nil, required: nil) builder = Discordrb::Webhooks::View::SelectMenuBuilder.new(custom_id, , placeholder, min_values, max_values, nil, select_type: :string_select, id: id, required: required) yield builder if block_given? @component = builder.to_h end |
#text_input(style:, custom_id:, id: nil, min_length: nil, max_length: nil, required: nil, value: nil, placeholder: nil, label: nil) ⇒ Object
Add a text input to the label component.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/discordrb/webhooks/modal.rb', line 106 def text_input(style:, custom_id:, id: nil, min_length: nil, max_length: nil, required: nil, value: nil, placeholder: nil, label: nil) @label = label unless label.nil? @component = { id: id, style: TEXT_INPUT_STYLES[style] || style, custom_id: custom_id, type: COMPONENT_TYPES[:text_input], min_length: min_length, max_length: max_length, required: required, value: value, placeholder: placeholder }.compact end |
#user_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) ⇒ Object
Add a select user to the label component.
150 151 152 |
# File 'lib/discordrb/webhooks/modal.rb', line 150 def user_select(custom_id:, id: nil, placeholder: nil, min_values: nil, max_values: nil, required: nil) @component = Discordrb::Webhooks::View::SelectMenuBuilder.new(custom_id, [], placeholder, min_values, max_values, nil, select_type: :user_select, id: id, required: required).to_h end |