@discord-additions/components
Version:
Some helpful additions to make creating components easier.
152 lines • 8.15 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const Component_1 = __importDefault(require("./Component"));
const Constants_1 = require("../util/Constants");
class TextInput extends Component_1.default {
customID;
style;
label;
minLength;
maxLength;
required;
value;
placeholder;
constructor(style, label, customID) {
super(Constants_1.ComponentTypes.TEXT_INPUT);
this.style = style;
this.label = label;
this.customID = customID;
}
/**
* Set the style of this text input
*
* * 1 - short
* * 2 - paragraph
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-styles
* @param {TextInputStyle} style - the style of this text input
* @returns {TextInput}
*/
setStyle(style) {
this.style = style;
return this;
}
/**
* Set the custom id of this text input
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @param {string} customID - a developer-defined identifier for the input, max 100 characters
* @returns {TextInput}
*/
setCustomID(customID) {
this.customID = customID;
return this;
}
/**
* Set the label of this text input
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @param {string} label - the label to display on this text input
* @returns {TextInput}
*/
setLabel(label) {
this.label = label;
return this;
}
/**
* Set the placeholder of this text input
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @param {string} placeholder - custom placeholder text if nothing is selected, max 100 characters
* @returns {TextInput}
*/
setPlaceholder(placeholder) {
this.placeholder = placeholder;
return this;
}
/**
* Set the minimum/maximum length of this text input.
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @param {number} [min] - the minimum length
* @param {number} [max] - the maximum length
* @returns {TextInput}
*/
setLength(min, max) {
if (min)
this.minLength = min;
if (max)
this.maxLength = max;
return this;
}
/**
* Make this text input required.
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @param {boolean} [required=true] - if this text input should be required or not - default true, setOptional also exists.
* @returns {TextInput}
*/
setRequired(required = true) {
this.required = required;
return this;
}
/**
* Make this text input optional.
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @returns {TextInput}
*/
setOptional() {
this.required = false;
return this;
}
/**
* Set the initial value of this text input
*
* @see https://discord.com/developers/docs/interactions/message-components#text-inputs-text-input-structure
* @param {string} value - a pre-filled value for this component, max 4000 characters
* @returns {TextInput}
*/
setValue(value) {
this.value = value;
return this;
}
/** 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(style, label, customID, placeholder, value, minLength, maxLength, required) {
if (style)
this.setStyle(style);
if (label)
this.setLabel(label);
if (customID)
this.setCustomID(customID);
if (placeholder)
this.setPlaceholder(placeholder);
if (value)
this.setValue(value);
if (minLength)
this.setLength(minLength, undefined);
if (maxLength)
this.setLength(undefined, maxLength);
if (typeof required !== "undefined")
this.setRequired(required);
return this;
}
toJSON() {
return {
type: this.type,
customID: this.customID,
style: this.style,
label: this.label,
minLength: this.minLength,
maxLength: this.maxLength,
required: this.required,
value: this.value,
placeholder: this.placeholder
};
}
}
exports.default = TextInput;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dElucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0cnVjdHVyZXMvVGV4dElucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW9DO0FBRXBDLGlEQUFtRDtBQUluRCxNQUFxQixTQUFVLFNBQVEsbUJBQThDO0lBQ3BGLFFBQVEsQ0FBUztJQUNqQixLQUFLLENBQWlCO0lBQ3RCLEtBQUssQ0FBUztJQUNkLFNBQVMsQ0FBVTtJQUNuQixTQUFTLENBQVU7SUFDbkIsUUFBUSxDQUFXO0lBQ25CLEtBQUssQ0FBVTtJQUNmLFdBQVcsQ0FBVTtJQUNyQixZQUFZLEtBQXFCLEVBQUUsS0FBYSxFQUFFLFFBQWdCO1FBQ2pFLEtBQUssQ0FBQywwQkFBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxRQUFRLENBQUMsS0FBcUI7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsV0FBVyxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsQ0FBQyxXQUFtQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLEdBQVksRUFBRSxHQUFZO1FBQ25DLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzlCLElBQUksR0FBRztZQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVc7UUFDVixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQUMsS0FBYTtRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxvSEFBb0g7SUFDcEgsSUFBSSxDQUFDLEtBQXNCLEVBQUUsS0FBYyxFQUFFLFFBQWlCLEVBQUUsV0FBb0IsRUFBRSxLQUFjLEVBQUUsU0FBa0IsRUFBRSxTQUFrQixFQUFFLFFBQWtCO1FBQy9KLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksV0FBVztZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEQsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLFNBQVM7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRCxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVc7WUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVRLE1BQU07UUFDZCxPQUFPO1lBQ04sSUFBSSxFQUFTLElBQUksQ0FBQyxJQUFJO1lBQ3RCLFFBQVEsRUFBSSxJQUFJLENBQUMsUUFBUTtZQUN6QixLQUFLLEVBQVEsSUFBSSxDQUFDLEtBQUs7WUFDdkIsS0FBSyxFQUFRLElBQUksQ0FBQyxLQUFLO1lBQ3ZCLFNBQVMsRUFBRyxJQUFJLENBQUMsU0FBUztZQUMxQixTQUFTLEVBQUcsSUFBSSxDQUFDLFNBQVM7WUFDMUIsUUFBUSxFQUFLLElBQUksQ0FBQyxRQUFRO1lBQzFCLEtBQUssRUFBUSxJQUFJLENBQUMsS0FBSztZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDN0IsQ0FBQztJQUNILENBQUM7Q0FDRDtBQTlJRCw0QkE4SUMifQ==