Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions ts/WoltLabSuite/Core/Component/GridView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ export class GridView {
dropdown?.querySelectorAll<HTMLButtonElement>("[data-interaction]").forEach((element) => {
element.addEventListener("click", () => {
row.dispatchEvent(
new CustomEvent("interaction", {
new CustomEvent("interaction:execute", {
detail: element.dataset,
bubbles: true,
}),
Expand All @@ -98,25 +98,25 @@ export class GridView {
void this.#loadRows(StateChangeCause.Change);
});

this.#table.addEventListener("refresh", (event) => {
this.#table.addEventListener("interaction:invalidate", (event) => {
void this.#refreshRow(event.target as HTMLElement);
});

this.#table.addEventListener("remove", (event) => {
this.#table.addEventListener("interaction:remove", (event) => {
(event.target as HTMLElement).remove();
});

this.#table.addEventListener("reset-selection", () => {
this.#table.addEventListener("interaction:reset-selection", () => {
this.#state.resetSelection();
});
}

#setupState(gridId: string, pageNo: number, baseUrl: string, sortField: string, sortOrder: string): State {
const state = new State(gridId, this.#table, pageNo, baseUrl, sortField, sortOrder);
state.addEventListener("change", (event) => {
state.addEventListener("grid-view:change", (event) => {
void this.#loadRows(event.detail.source);
});
state.addEventListener("getBulkInteractions", (event) => {
state.addEventListener("grid-view:get-bulk-interactions", (event) => {
void this.#loadBulkInteractions(event.detail.objectIds);
});

Expand Down
6 changes: 3 additions & 3 deletions ts/WoltLabSuite/Core/Component/GridView/Filter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,19 +111,19 @@ export class Filter extends EventTarget {
if (ok) {
this.#filters = new Map(Object.entries(result as ArrayLike<string>));

this.dispatchEvent(new CustomEvent("change"));
this.dispatchEvent(new CustomEvent("grid-view:change"));
}
}

#removeFilter(filter: string): void {
this.#filters.delete(filter);

this.dispatchEvent(new CustomEvent("change"));
this.dispatchEvent(new CustomEvent("grid-view:change"));
}
}

interface FilterEventMap {
change: CustomEvent<void>;
"grid-view:change": CustomEvent<void>;
}

// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
Expand Down
6 changes: 4 additions & 2 deletions ts/WoltLabSuite/Core/Component/GridView/Selection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,9 @@ export class Selection extends EventTarget {
return;
}

this.dispatchEvent(new CustomEvent("getBulkInteractions", { detail: { objectIds: this.getSelectedIds() } }));
this.dispatchEvent(
new CustomEvent("grid-view:get-bulk-interactions", { detail: { objectIds: this.getSelectedIds() } }),
);

if (this.#bulkInteractionsLoadingDelay !== undefined) {
window.clearTimeout(this.#bulkInteractionsLoadingDelay);
Expand Down Expand Up @@ -281,7 +283,7 @@ export class Selection extends EventTarget {
}

interface SelectionEventMap {
getBulkInteractions: CustomEvent<{ objectIds: number[] }>;
"grid-view:get-bulk-interactions": CustomEvent<{ objectIds: number[] }>;
}

// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
Expand Down
4 changes: 2 additions & 2 deletions ts/WoltLabSuite/Core/Component/GridView/Sorting.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export class Sorting extends EventTarget {

this.#renderActiveSorting();

this.dispatchEvent(new CustomEvent("change"));
this.dispatchEvent(new CustomEvent("grid-view:change"));
}

#renderActiveSorting(): void {
Expand All @@ -93,7 +93,7 @@ export class Sorting extends EventTarget {
}

interface SortingEventMap {
change: CustomEvent<void>;
"grid-view:change": CustomEvent<void>;
}

// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
Expand Down
16 changes: 9 additions & 7 deletions ts/WoltLabSuite/Core/Component/GridView/State.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,18 +45,20 @@ export class State extends EventTarget {
});

this.#filter = new Filter(gridId);
this.#filter.addEventListener("change", () => {
this.#filter.addEventListener("grid-view:change", () => {
this.#switchPage(1, StateChangeCause.Change);
});

this.#sorting = new Sorting(table, sortField, sortOrder);
this.#sorting.addEventListener("change", () => {
this.#sorting.addEventListener("grid-view:change", () => {
this.#switchPage(1, StateChangeCause.Change);
});

this.#selection = new Selection(gridId, table);
this.#selection.addEventListener("getBulkInteractions", (event) => {
this.dispatchEvent(new CustomEvent("getBulkInteractions", { detail: { objectIds: event.detail.objectIds } }));
this.#selection.addEventListener("grid-view:get-bulk-interactions", (event) => {
this.dispatchEvent(
new CustomEvent("grid-view:get-bulk-interactions", { detail: { objectIds: event.detail.objectIds } }),
);
});

window.addEventListener("popstate", () => {
Expand Down Expand Up @@ -98,7 +100,7 @@ export class State extends EventTarget {
this.#pagination.page = pageNo;
this.#pageNo = pageNo;

this.dispatchEvent(new CustomEvent("change", { detail: { source } }));
this.dispatchEvent(new CustomEvent("grid-view:change", { detail: { source } }));
}

#updateQueryString(): void {
Expand Down Expand Up @@ -157,8 +159,8 @@ export class State extends EventTarget {
}

interface StateEventMap {
change: CustomEvent<{ source: StateChangeCause }>;
getBulkInteractions: CustomEvent<{ objectIds: number[] }>;
"grid-view:change": CustomEvent<{ source: StateChangeCause }>;
"grid-view:get-bulk-interactions": CustomEvent<{ objectIds: number[] }>;
}

// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ async function handleFormBuilderDialogAction(
}

element.dispatchEvent(
new CustomEvent("refresh", {
new CustomEvent("interaction:invalidate", {
bubbles: true,
}),
);
Expand All @@ -37,7 +37,7 @@ async function handleFormBuilderDialogAction(
// TODO: This shows a generic success message and should be replaced with a more specific message.
showNotification();

container.dispatchEvent(new CustomEvent("reset-selection"));
container.dispatchEvent(new CustomEvent("interaction:reset-selection"));
}

export function setup(identifier: string, container: HTMLElement): void {
Expand Down
6 changes: 3 additions & 3 deletions ts/WoltLabSuite/Core/Component/Interaction/Bulk/Rpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ async function handleRpcInteraction(
}

element.dispatchEvent(
new CustomEvent("remove", {
new CustomEvent("interaction:remove", {
bubbles: true,
}),
);
Expand All @@ -67,7 +67,7 @@ async function handleRpcInteraction(
}

element.dispatchEvent(
new CustomEvent("refresh", {
new CustomEvent("interaction:invalidate", {
bubbles: true,
}),
);
Expand All @@ -77,7 +77,7 @@ async function handleRpcInteraction(
showNotification();
}

container.dispatchEvent(new CustomEvent("reset-selection"));
container.dispatchEvent(new CustomEvent("interaction:reset-selection"));
}

export function setup(identifier: string, container: HTMLElement): void {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ async function handleFormBuilderDialogAction(element: HTMLElement, endpoint: str
}

element.dispatchEvent(
new CustomEvent("refresh", {
new CustomEvent("interaction:invalidate", {
bubbles: true,
}),
);
Expand All @@ -28,7 +28,7 @@ async function handleFormBuilderDialogAction(element: HTMLElement, endpoint: str
}

export function setup(identifier: string, container: HTMLElement): void {
container.addEventListener("interaction", (event: CustomEvent) => {
container.addEventListener("interaction:execute", (event: CustomEvent) => {
if (event.detail.interaction === identifier) {
void handleFormBuilderDialogAction(event.target as HTMLElement, event.detail.endpoint);
}
Expand Down
6 changes: 3 additions & 3 deletions ts/WoltLabSuite/Core/Component/Interaction/LegacyDboAction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@ async function handleDboAction(
// TODO: This shows a generic success message and should be replaced with a more specific message.
showNotification(undefined, () => {
element.dispatchEvent(
new CustomEvent("remove", {
new CustomEvent("interaction:remove", {
bubbles: true,
}),
);
});
} else {
element.dispatchEvent(
new CustomEvent("refresh", {
new CustomEvent("interaction:invalidate", {
bubbles: true,
}),
);
Expand All @@ -52,7 +52,7 @@ async function handleDboAction(
}

export function setup(identifier: string, container: HTMLElement): void {
container.addEventListener("interaction", (event: CustomEvent) => {
container.addEventListener("interaction:execute", (event: CustomEvent) => {
if (event.detail.interaction === identifier) {
void handleDboAction(
event.target as HTMLElement,
Expand Down
6 changes: 3 additions & 3 deletions ts/WoltLabSuite/Core/Component/Interaction/Rpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ async function handleRpcInteraction(
// TODO: This shows a generic success message and should be replaced with a more specific message.
showNotification(undefined, () => {
element.dispatchEvent(
new CustomEvent("remove", {
new CustomEvent("interaction:remove", {
bubbles: true,
}),
);
Expand All @@ -55,7 +55,7 @@ async function handleRpcInteraction(
container.dispatchEvent(new CustomEvent("interaction:invalidate-all"));
} else {
element.dispatchEvent(
new CustomEvent("refresh", {
new CustomEvent("interaction:invalidate", {
bubbles: true,
}),
);
Expand All @@ -67,7 +67,7 @@ async function handleRpcInteraction(
}

export function setup(identifier: string, container: HTMLElement): void {
container.addEventListener("interaction", (event: CustomEvent) => {
container.addEventListener("interaction:execute", (event: CustomEvent) => {
if (event.detail.interaction === identifier) {
void handleRpcInteraction(
container,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ export class StandaloneButton {
.forEach((element) => {
element.addEventListener("click", () => {
this.#container.dispatchEvent(
new CustomEvent("interaction", {
new CustomEvent("interaction:execute", {
detail: element.dataset,
bubbles: true,
}),
Expand All @@ -69,11 +69,11 @@ export class StandaloneButton {
}

#initEventListeners(): void {
this.#container.addEventListener("refresh", () => {
this.#container.addEventListener("interaction:invalidate", () => {
void this.#refreshContextMenu();
});

this.#container.addEventListener("remove", () => {
this.#container.addEventListener("interaction:remove", () => {
window.location.href = this.#redirectUrl;
});
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading