fox-block-builder
Version:
Maintainable code for loop slack-block-kit-like modal builder
170 lines • 6.78 kB
JavaScript
;
/* 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