@@ -3,37 +3,24 @@ import { ListLike, Mutation } from "../List";
33import { RouterMatcher } from "./RouterMatcher" ;
44import { RouterHistory , HistoryItem } from "./RouterHistory" ;
55import { Route } from "./Route" ;
6- import { Constructor } from "../../internals/utils" ;
7-
8- export type RouterConfig = {
9- name : string ;
10- route : Constructor < Route >
11- } ;
126
137export type RouterProperties = {
148 navigationView : NavigationView ,
15- routers ?: ListLike < RouterConfig > ,
169 defaultRoute ?: HistoryItem ,
1710 history ?: ListLike < HistoryItem >
1811} ;
1912
2013export class Router < ItemType extends HistoryItem = HistoryItem > {
2114
2215 private _navigationView : NavigationView ;
23- private _routes : ListLike < RouterConfig > ;
24-
2516 private _routerHistoryObserver : RouterHistory ;
2617 private _routerMatcher : RouterMatcher ;
2718
28- constructor ( { navigationView, routers , defaultRoute , history} : RouterProperties ) {
19+ constructor ( { navigationView, history} : RouterProperties ) {
2920 this . _navigationView = navigationView ;
30- this . routes = routers || [ ] ;
3121 this . _routerHistoryObserver = new RouterHistory ( this . _handleHistoryChange ) ;
22+ this . _routerMatcher = new RouterMatcher ( ) ;
3223 this . history = history || [ ] ;
33- this . _routerMatcher = new RouterMatcher ( this ) ;
34- if ( defaultRoute ) {
35- this . goTo ( defaultRoute as ItemType ) ;
36- }
3724 this . _navigationView . onRemoveChild ( this . _syncHistoryWithNavigationView . bind ( this ) ) ;
3825 }
3926
@@ -42,33 +29,18 @@ export class Router<ItemType extends HistoryItem = HistoryItem> {
4229 }
4330
4431 back ( ) {
45- if ( this . _routerHistoryObserver . source . length === 0 ) {
32+ if ( this . _routerHistoryObserver . history . length === 0 ) {
4633 throw new Error ( "Could not call back on empty history stack" ) ;
4734 }
4835 this . _routerHistoryObserver . pop ( ) ;
4936 }
5037
5138 set history ( value : ListLike < HistoryItem > ) {
52- if ( this . _routerHistoryObserver . source === value ) {
53- return ;
54- }
55- this . _routerHistoryObserver . source = value ;
39+ this . _routerHistoryObserver . history = value ;
5640 }
5741
5842 get history ( ) {
59- return this . _routerHistoryObserver . source ;
60- }
61-
62- set routes ( value : ListLike < RouterConfig > ) {
63- if ( this . _routes === value ) {
64- return ;
65- }
66- this . _routes = value ;
67- this . _routerMatcher = new RouterMatcher ( this ) ;
68- }
69-
70- get routes ( ) {
71- return this . _routes ;
43+ return this . _routerHistoryObserver . history ;
7244 }
7345
7446 protected _handleHistoryChange = ( { deleteCount, items} : Mutation < ItemType > ) => {
@@ -97,13 +69,15 @@ export class Router<ItemType extends HistoryItem = HistoryItem> {
9769 } ) ;
9870 }
9971
100- private _appendRoute ( route : Route , payload ?: any ) {
101- if ( route . page . onPayload && typeof route . page . onPayload === 'function' ) {
102- route . page . onPayload ( payload ) ;
72+ private _appendRoute ( route : Route , payload ?: object ) {
73+ if ( payload ) {
74+ for ( const key of Object . keys ( payload ) ) {
75+ if ( key in route . page ) {
76+ route . page [ key ] = payload [ key ] ;
77+ }
78+ }
10379 }
10480 this . _navigationView . append ( route . page ) ;
105- this . _navigationView . drawerActionVisible = route . options . enableDrawer ;
106- this . _navigationView . toolbarVisible = route . options . toolbarVisible ;
10781 }
10882
10983 private _syncHistoryWithNavigationView ( ) {
0 commit comments