mirror of
https://github.com/discordjs/discord.js.git
synced 2026-05-30 23:50:07 +00:00
* feat(builders): new select menus * chore: better re-exporting of deprecated classes * feat: new select menus * chore: typings * chore: add missing todo comment * chore: finish updating tests * chore: add runtime deprecation warnings * chore: format deprecation warning * feat(BaseInteraction): isAnySelectMenu * chore: requested changes * fix: deprecation comments * chore: update @deprecated comments in typings * chore: add tests for select menu type narrowing * fix: bad auto imports Co-authored-by: Julian Vennen <julian@aternos.org> * fix: properly handle resolved members * fix: collectors * chore: suggested changes Co-authored-by: Almeida <almeidx@pm.me> * fix(typings): bad class extends * feat(ChannelSelectMenuBuilder): validation * chore: update todo comment * refactor(ChannelSelectMenu): better handling of channel_types state * chore: style nit * chore: suggested nits Co-authored-by: Aura Román <kyradiscord@gmail.com> Co-authored-by: Julian Vennen <julian@aternos.org> Co-authored-by: Almeida <almeidx@pm.me> Co-authored-by: Aura Román <kyradiscord@gmail.com> Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import type { APISelectMenuComponent } from 'discord-api-types/v10';
|
|
import { customIdValidator, disabledValidator, minMaxValidator, placeholderValidator } from '../Assertions.js';
|
|
import { ComponentBuilder } from '../Component.js';
|
|
|
|
export class BaseSelectMenuBuilder<
|
|
SelectMenuType extends APISelectMenuComponent,
|
|
> extends ComponentBuilder<SelectMenuType> {
|
|
/**
|
|
* Sets the placeholder for this select menu
|
|
*
|
|
* @param placeholder - The placeholder to use for this select menu
|
|
*/
|
|
public setPlaceholder(placeholder: string) {
|
|
this.data.placeholder = placeholderValidator.parse(placeholder);
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Sets the minimum values that must be selected in the select menu
|
|
*
|
|
* @param minValues - The minimum values that must be selected
|
|
*/
|
|
public setMinValues(minValues: number) {
|
|
this.data.min_values = minMaxValidator.parse(minValues);
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Sets the maximum values that must be selected in the select menu
|
|
*
|
|
* @param maxValues - The maximum values that must be selected
|
|
*/
|
|
public setMaxValues(maxValues: number) {
|
|
this.data.max_values = minMaxValidator.parse(maxValues);
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Sets the custom id for this select menu
|
|
*
|
|
* @param customId - The custom id to use for this select menu
|
|
*/
|
|
public setCustomId(customId: string) {
|
|
this.data.custom_id = customIdValidator.parse(customId);
|
|
return this;
|
|
}
|
|
|
|
/**
|
|
* Sets whether this select menu is disabled
|
|
*
|
|
* @param disabled - Whether this select menu is disabled
|
|
*/
|
|
public setDisabled(disabled = true) {
|
|
this.data.disabled = disabledValidator.parse(disabled);
|
|
return this;
|
|
}
|
|
|
|
public toJSON(): SelectMenuType {
|
|
customIdValidator.parse(this.data.custom_id);
|
|
return {
|
|
...this.data,
|
|
} as SelectMenuType;
|
|
}
|
|
}
|