@oceanicjs/builders
Version:
Helpful builders for various Discord related things.
145 lines • 8.33 kB
JavaScript
"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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VsZWN0TWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9TdHJ1Y3R1cmVzL1NlbGVjdE1lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQW9DO0FBV3BDLE1BQXFCLFVBQVcsU0FBUSxtQkFBMEI7SUFDOUQsWUFBWSxDQUF1QjtJQUNuQyxRQUFRLENBQVM7SUFDUixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsT0FBTyxHQUF3QixFQUFFLENBQUM7SUFDbEMsV0FBVyxDQUFVO0lBQ3JCOzs7T0FHRztJQUNILFlBQVksSUFBcUIsRUFBRSxRQUFnQjtRQUMvQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsb0hBQW9IO0lBQzVHLElBQUksQ0FBQyxRQUFpQixFQUFFLE9BQTZCLEVBQUUsV0FBb0IsRUFBRSxTQUFrQixFQUFFLFNBQWtCLEVBQUUsUUFBa0I7UUFDM0ksSUFBSSxRQUFRLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxXQUFXLEVBQUU7WUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxTQUFTLEVBQUU7WUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUN4QztRQUNELElBQUksU0FBUyxF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