mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-13 13:37:31 -07:00
enhance(client): improve usability
This commit is contained in:
parent
ed6e80f7f9
commit
c15641f08a
2 changed files with 10 additions and 1 deletions
|
@ -61,6 +61,7 @@ export class Router extends EventEmitter<{
|
||||||
props: Map<string, string> | null;
|
props: Map<string, string> | null;
|
||||||
key: string;
|
key: string;
|
||||||
}) => void;
|
}) => void;
|
||||||
|
same: () => void;
|
||||||
}> {
|
}> {
|
||||||
private routes: RouteDef[];
|
private routes: RouteDef[];
|
||||||
private currentPath: string;
|
private currentPath: string;
|
||||||
|
@ -210,11 +211,15 @@ export class Router extends EventEmitter<{
|
||||||
}
|
}
|
||||||
|
|
||||||
public push(path: string) {
|
public push(path: string) {
|
||||||
|
const beforePath = this.currentPath;
|
||||||
|
if (path === beforePath) {
|
||||||
|
this.emit('same');
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this.navHook) {
|
if (this.navHook) {
|
||||||
const cancel = this.navHook(path);
|
const cancel = this.navHook(path);
|
||||||
if (cancel) return;
|
if (cancel) return;
|
||||||
}
|
}
|
||||||
const beforePath = this.currentPath;
|
|
||||||
this.navigate(path, null);
|
this.navigate(path, null);
|
||||||
this.emit('push', {
|
this.emit('push', {
|
||||||
beforePath,
|
beforePath,
|
||||||
|
|
|
@ -258,6 +258,10 @@ mainRouter.addListener('push', ctx => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mainRouter.addListener('same', () => {
|
||||||
|
window.scroll({ top: 0, behavior: 'smooth' });
|
||||||
|
});
|
||||||
|
|
||||||
window.addEventListener('popstate', (event) => {
|
window.addEventListener('popstate', (event) => {
|
||||||
mainRouter.change(location.pathname + location.search + location.hash, event.state?.key);
|
mainRouter.change(location.pathname + location.search + location.hash, event.state?.key);
|
||||||
const scrollPos = scrollPosStore.get(event.state?.key) ?? 0;
|
const scrollPos = scrollPosStore.get(event.state?.key) ?? 0;
|
||||||
|
|
Loading…
Reference in a new issue