UNPKG

@oceanicjs/builders

Version:

Helpful builders for various Discord related things.

145 lines 8.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const Component_1 = tslib_1.__importDefault(require("./Component")); class SelectMenu extends Component_1.default { channelTypes; customID; disabled = false; maxValues; minValues; options = []; placeholder; /** * Create a new SelectMenu. * @param customID The custom ID of this select menu. */ constructor(type, customID) { super(type); this.customID = customID; } /** this method is meant to be for internal use only, don't use it, as it may break or change at a moments notice */ load(customID, options, placeholder, minValues, maxValues, disabled) { if (customID) { this.setCustomID(customID); } if (options && Array.isArray(options) && options.length > 0) { this.clearOptions(); this.addOptions(...options); } if (placeholder) { this.setPlaceholder(placeholder); } if (minValues) { this.setValues(minValues, undefined); } if (maxValues) { this.setValues(undefined, maxValues); } if (typeof disabled !== "undefined") { if (disabled) { this.disable(); } else { this.enable(); } } return this; } /** * Add an option to this select menu. * @param label The label for this option. * @param value The value of this option. * @param description The description of this option. * @param emoji The emoji to displayed with this option. */ addOption(label, value, description, emoji, defaultSelection) { this.options.push({ label, value, description, emoji, default: defaultSelection }); return this; } /** * Add options to this select menu in bulk. * @param options The options to add. */ addOptions(...options) { options.map(o => this.addOption(o.label, o.value, o.description, o.emoji, o.default)); return this; } /** Clear all currently present options on this select menu. */ clearOptions() { this.options = []; return this; } /** Set the valid channel types for a channel select menu. */ setChannelTypes(...types) { if (types.length === 1 && Array.isArray(types[0])) { types = types[0]; } this.channelTypes = types; return this; } /** * Set the custom ID of this select menu. * @param customID A developer-defined identifier for the button, max 100 characters. */ setCustomID(customID) { this.customID = customID; return this; } /** * Set the placeholder of this select menu. * @param placeholder Custom placeholder text if nothing is selected, max 100 characters. */ setPlaceholder(placeholder) { this.placeholder = placeholder; return this; } /** * Set the minimum/maximum values of this select menu. * @param min The minimum selected values. * @param max The maximum selected values. */ setValues(min, max) { if (min) { this.minValues = min; } if (max) { this.maxValues = max; } return this; } /** converts this SelectMenu instance to json. */ toJSON() { return { type: this.type, customID: this.customID, options: this.options, placeholder: this.placeholder, minValues: this.minValues, maxValues: this.maxValues, disabled: this.disabled, channelTypes: this.channelTypes }; } /** converts this SelectMenu instance to json. */ toJSONRaw() { return { type: this.type, custom_id: this.customID, options: this.options, placeholder: this.placeholder, min_values: this.minValues, max_values: this.maxValues, disabled: this.disabled, channel_types: this.channelTypes }; } } exports.default = SelectMenu; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0TWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9TdHJ1Y3R1cmVzL1NlbGVjdE1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQW9DO0FBV3BDLE1BQXFCLFVBQVcsU0FBUSxtQkFBMEI7SUFDOUQsWUFBWSxDQUF1QjtJQUNuQyxRQUFRLENBQVM7SUFDUixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsT0FBTyxHQUF3QixFQUFFLENBQUM7SUFDbEMsV0FBVyxDQUFVO0lBQ3JCOzs7T0FHRztJQUNILFlBQVksSUFBcUIsRUFBRSxRQUFnQjtRQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0hBQW9IO0lBQzVHLElBQUksQ0FBQyxRQUFpQixFQUFFLE9BQTZCLEVBQUUsV0FBb0IsRUFBRSxTQUFrQixFQUFFLFNBQWtCLEVBQUUsUUFBa0I7UUFDM0ksSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksU0FBUyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDeEM7UUFDRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUNqQyxJQUFJLFFBQVEsRUFBRTtnQkFDVixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2pCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsU0FBUyxDQUFDLEtBQWEsRUFBRSxLQUFhLEVBQUUsV0FBb0IsRUFBRSxLQUE0QixFQUFFLGdCQUEwQjtRQUNsSCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNkLEtBQUs7WUFDTCxLQUFLO1lBQ0wsV0FBVztZQUNYLEtBQUs7WUFDTCxPQUFPLEVBQUUsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsR0FBRyxPQUE0QjtRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsWUFBWTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw2REFBNkQ7SUFDN0QsZUFBZSxDQUFDLEdBQUcsS0FBeUQ7UUFDeEUsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQy9DLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQTRCLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLFdBQW1CO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEdBQVksRUFBRSxHQUFZO1FBQ2hDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7U0FDeEI7UUFDRCxJQUFJLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGlEQUFpRDtJQUN4QyxNQUFNO1FBQ1gsT0FBTztZQUNILElBQUksRUFBVSxJQUFJLENBQUMsSUFBSTtZQUN2QixRQUFRLEVBQU0sSUFBSSxDQUFDLFFBQVE7WUFDM0IsT0FBTyxFQUFPLElBQUksQ0FBQyxPQUFPO1lBQzFCLFdBQVcsRUFBRyxJQUFJLENBQUMsV0FBVztZQUM5QixTQUFTLEVBQUssSUFBSSxDQUFDLFNBQVM7WUFDNUIsU0FBUyxFQUFLLElBQUksQ0FBQyxTQUFTO1lBQzVCLFFBQVEsRUFBTSxJQUFJLENBQUMsUUFBUTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDWCxDQUFDO0lBQzdCLENBQUM7SUFFRCxpREFBaUQ7SUFDeEMsU0FBUztRQUNkLE9BQU87WUFDSCxJQUFJLEVBQVcsSUFBSSxDQUFDLElBQUk7WUFDeEIsU0FBUyxFQUFNLElBQUksQ0FBQyxRQUFRO1lBQzVCLE9BQU8sRUFBUSxJQUFJLENBQUMsT0FBTztZQUMzQixXQUFXLEVBQUksSUFBSSxDQUFDLFdBQVc7WUFDL0IsVUFBVSxFQUFLLElBQUksQ0FBQyxTQUFTO1lBQzdCLFVBQVUsRUFBSyxJQUFJLENBQUMsU0FBUztZQUM3QixRQUFRLEVBQU8sSUFBSSxDQUFDLFFBQVE7WUFDNUIsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ1QsQ0FBQztJQUNoQyxDQUFDO0NBQ0o7QUFuSkQsNkJBbUpDIn0=