Skip to content

Commit 71d195f

Browse files
committed
Use behavior attribute in list view pagination
1 parent d36925a commit 71d195f

File tree

3 files changed

+54
-1
lines changed

3 files changed

+54
-1
lines changed

com.woltlab.wcf/templates/shared_listView.tpl

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

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

ts/WoltLabSuite/Core/Component/ListView/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/ListView/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)