All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.slack.api.model.kotlin_extension.block.composition.OptionGroupObjectBuilder.kt Maven / Gradle / Ivy

package com.slack.api.model.kotlin_extension.block.composition

import com.slack.api.model.block.composition.OptionGroupObject
import com.slack.api.model.block.composition.PlainTextObject
import com.slack.api.model.kotlin_extension.block.BlockLayoutBuilder
import com.slack.api.model.kotlin_extension.block.Builder
import com.slack.api.model.kotlin_extension.block.composition.container.MultiOptionContainer
import com.slack.api.model.kotlin_extension.block.composition.dsl.OptionObjectDsl

@BlockLayoutBuilder
class OptionGroupObjectBuilder private constructor(
    private val optionContainer: MultiOptionContainer
) : Builder, OptionObjectDsl by optionContainer {
    private var label: PlainTextObject? = null

    constructor() : this(MultiOptionContainer())

    /**
     * Fills the label field of the option group object with a plain text object.
     *
     * The label shown above this group of options. Maximum length for the text in this field is 75 characters.
     *
     * @see Option group object documentation
     */
    fun label(text: String, emoji: Boolean? = null) {
        label = PlainTextObject(text, emoji)
    }

    /**
     * An array of option objects that belong to this specific group. Maximum of 100 items.
     *
     * @see Option group object documentation
     */
    fun options(builder: OptionObjectDsl.() -> Unit) {
        this.optionContainer.apply(builder)
    }

    override fun build(): OptionGroupObject {
        return OptionGroupObject.builder()
            .label(label)
            .options(optionContainer.underlying)
            .build()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy