UNPKG

fox-block-builder

Version:

Maintainable code for loop slack-block-kit-like modal builder

170 lines 6.78 kB
"use strict"; /* eslint-disable max-classes-per-file */ /* eslint-disable max-len */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Options = exports.OptionGroups = exports.InitialUsers = exports.InitialOptions = exports.InitialConversations = exports.InitialChannels = exports.Filter = exports.Fields = exports.Elements = exports.Blocks = exports.Attachments = void 0; const lib_1 = require("../lib"); const constants_1 = require("../constants"); class Attachments extends lib_1.Builder { /** * @description Adds attachments to your message. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ attachments(...attachments) { return this.append(attachments.flat(), constants_1.Prop.Attachments); } } exports.Attachments = Attachments; class Blocks extends lib_1.Builder { /** * @description Adds blocks to your view or message. * * **Slack Validation Rules and Tips:** * * **Required for modals, home tabs, and workflow steps** ⚠ * * Maximum of 100 blocks. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ blocks(...blocks) { return this.append(blocks.flat(), constants_1.Prop.Blocks); } } exports.Blocks = Blocks; class Elements extends lib_1.Builder { /** * @description Adds elements to the actions block. * * **Slack Validation Rules and Tips:** * * **Required** ⚠ * * Maximum of 5 elements. * * Supported elements are buttons, select and overflow menus, and date pickers. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ elements(...elements) { return this.append(elements.flat(), constants_1.Prop.Elements); } } exports.Elements = Elements; class Fields extends lib_1.Builder { /** * @description Adds text fields to the section block, in two columns, side-by-side. * * **Slack Validation Rules and Tips:** * * **Required if the text property is undefined** ⚠ * * Maximum of 10 items. * * Maximum of 2000 characters for each field. * * Markdown supported. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ fields(...fields) { return this.append(fields.flat(), constants_1.Prop.Fields); } } exports.Fields = Fields; class Filter extends lib_1.Builder { /** * @description Defines which conversations should be included in the list. * * **Slack Validation Rules and Tips:** * * Possible values are *im*, *impm*, *private*, and *public*. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ filter(...filters) { return this.append(filters.flat(), constants_1.Prop.Filter); } } exports.Filter = Filter; class InitialChannels extends lib_1.Builder { /** * @description Pre-populates the menu with selected, default channels. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ initialChannels(...channelIds) { return this.append(channelIds.flat(), constants_1.Prop.InitialChannels); } } exports.InitialChannels = InitialChannels; class InitialConversations extends lib_1.Builder { /** * @description Pre-populates the menu with selected, default conversations. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ initialConversations(...conversationIds) { return this.append(conversationIds.flat(), constants_1.Prop.InitialConversations); } } exports.InitialConversations = InitialConversations; class InitialOptions extends lib_1.Builder { /** * @description Pre-populates the menu or checkbox input with selected, default options. * * **Slack Validation Rules and Tips:** * * Must be exact matches to options in the menu. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ initialOptions(...options) { return this.append(options.flat(), constants_1.Prop.InitialOptions); } } exports.InitialOptions = InitialOptions; class InitialUsers extends lib_1.Builder { /** * @description Pre-populates the menu with selected, default users. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ initialUsers(...userIds) { return this.append(userIds.flat(), constants_1.Prop.InitialUsers); } } exports.InitialUsers = InitialUsers; class OptionGroups extends lib_1.Builder { /** * @description Adds organized groups of options to the select or multi-select menu, each with its own label or title. * * **Slack Validation Rules and Tips:** * * Maximum of 100 options. * * Both options and options groups cannot be defined at the same time for any element. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ optionGroups(...optionGroups) { return this.append(optionGroups.flat(), constants_1.Prop.OptionGroups); } } exports.OptionGroups = OptionGroups; class Options extends lib_1.Builder { /** * @description Adds options to the select or multi-select menu. * * **Slack Validation Rules and Tips:** * * **Required** ⚠ * * Maximum of 100 options. * * Both options and options groups cannot be defined at the same time for any element. * * {@link https://api.slack.com/block-kit|Open Official Slack Block Kit Documentation} * {@link https://www.blockbuilder.dev|Open Block Builder Documentation} */ options(...options) { return this.append(options.flat(), constants_1.Prop.Options); } } exports.Options = Options; //# sourceMappingURL=append-methods.js.map