Skip to content

Commit 2b87e16

Browse files
committed
Use new attribute in grid view pagination
1 parent d06aefa commit 2b87e16

3 files changed

Lines changed: 54 additions & 1 deletion

File tree

com.woltlab.wcf/templates/shared_gridView.tpl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,13 @@
6868
{/if}
6969

7070
<div class="gridView__pagination">
71-
<woltlab-core-pagination id="{$view->getID()}_pagination" page="{$view->getPageNo()}" count="{$view->countPages()}"></woltlab-core-pagination>
71+
<woltlab-core-pagination
72+
id="{$view->getID()}_pagination"
73+
page="{$view->getPageNo()}"
74+
count="{$view->countPages()}"
75+
behavior="button"
76+
url="{$view->getBaseUrl()}"
77+
></woltlab-core-pagination>
7278
</div>
7379
</div>
7480

ts/WoltLabSuite/Core/Component/GridView/State.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ export class State extends EventTarget {
6464
window.addEventListener("popstate", () => {
6565
this.#handlePopState();
6666
});
67+
68+
this.#updatePaginationUrl();
6769
}
6870

6971
getPageNo(): number {
@@ -89,6 +91,7 @@ export class State extends EventTarget {
8991
updateFromResponse(cause: StateChangeCause, count: number, filterLabels: ArrayLike<string>): void {
9092
this.#filter.setFilterLabels(filterLabels);
9193
this.#pagination.count = count;
94+
this.#updatePaginationUrl();
9295
this.#selection.refresh();
9396

9497
if (cause === StateChangeCause.Change || cause === StateChangeCause.Pagination) {
@@ -131,6 +134,30 @@ export class State extends EventTarget {
131134
window.history.pushState({}, document.title, url.toString());
132135
}
133136

137+
#updatePaginationUrl(): void {
138+
if (!this.#baseUrl) {
139+
return;
140+
}
141+
142+
const url = new URL(this.#baseUrl);
143+
144+
const parameters: [string, string][] = [];
145+
for (const parameter of this.#sorting.getQueryParameters()) {
146+
parameters.push(parameter);
147+
}
148+
149+
for (const parameter of this.#filter.getQueryParameters()) {
150+
parameters.push(parameter);
151+
}
152+
153+
if (parameters.length > 0) {
154+
url.search += url.search !== "" ? "&" : "?";
155+
url.search += new URLSearchParams(parameters).toString();
156+
}
157+
158+
this.#pagination.url = url.toString();
159+
}
160+
134161
#handlePopState(): void {
135162
let pageNo = 1;
136163

wcfsetup/install/files/js/WoltLabSuite/Core/Component/GridView/State.js

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)