mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-13 18:13:29 +01:00
feat: components v2 in builders (#10788)
* feat: thumbnail component * chore: just a temp file to track remaining components * feat: file component * feat: section component * feat: text display component * chore: bump alpha version of dtypes * chore: simplify ComponentBuilder base type * feat: MediaGallery * feat: Section builder * chore: tests for sections * chore: forgot you * chore: docs * fix: missing comma * fix: my bad * feat: container builder * chore: requested changes * chore: missed u * chore: type tests * chore: setId/clearId * chore: apply suggestions from code review * chore: unify pick * chore: some requested changes * chore: tests and small fixes * chore: added tests that need fixing * fix: tests * chore: cleanup on isle protected * docs: remove locale * chore: types for new message builder * chore: fix tests * chore: attempt 1 at message builder assertions * chore: apply suggestions * Update packages/builders/src/messages/Assertions.ts Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> * Update packages/builders/src/components/v2/Thumbnail.ts Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> * fix: tests * chore: fmt * Apply suggestions from code review Co-authored-by: Denis-Adrian Cristea <didinele.dev@gmail.com> * chore: fix pnpm lockfile revert --------- Co-authored-by: Qjuh <76154676+Qjuh@users.noreply.github.com> Co-authored-by: Jiralite <33201955+Jiralite@users.noreply.github.com> Co-authored-by: Denis-Adrian Cristea <didinele.dev@gmail.com>
This commit is contained in:
@@ -1,17 +1,38 @@
|
||||
import type { JSONEncodable } from '@discordjs/util';
|
||||
import type { APIActionRowComponent, APIComponentInActionRow } from 'discord-api-types/v10';
|
||||
import type { APIBaseComponent, ComponentType } from 'discord-api-types/v10';
|
||||
|
||||
/**
|
||||
* Any action row component data represented as an object.
|
||||
*/
|
||||
export type AnyAPIActionRowComponent = APIActionRowComponent<APIComponentInActionRow> | APIComponentInActionRow;
|
||||
export interface ComponentBuilderBaseData {
|
||||
id?: number | undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* The base component builder that contains common symbols for all sorts of components.
|
||||
*
|
||||
* @typeParam Component - The type of API data that is stored within the builder
|
||||
*/
|
||||
export abstract class ComponentBuilder<Component extends AnyAPIActionRowComponent> implements JSONEncodable<Component> {
|
||||
export abstract class ComponentBuilder<Component extends APIBaseComponent<ComponentType>>
|
||||
implements JSONEncodable<Component>
|
||||
{
|
||||
protected abstract readonly data: ComponentBuilderBaseData;
|
||||
|
||||
/**
|
||||
* Sets the id of this component.
|
||||
*
|
||||
* @param id - The id to use
|
||||
*/
|
||||
public setId(id: number) {
|
||||
this.data.id = id;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the id of this component, defaulting to a default incremented id.
|
||||
*/
|
||||
public clearId() {
|
||||
this.data.id = undefined;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Serializes this builder to API-compatible JSON data.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user