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