mirror of
https://github.com/wassname/DefinitelyTyped.git
synced 2026-09-09 11:13:57 +08:00
91 lines
3.3 KiB
TypeScript
91 lines
3.3 KiB
TypeScript
/// <reference path="navigation.d.ts" />
|
|
|
|
namespace NavigationTests {
|
|
// History Manager
|
|
class LogHistoryManager extends Navigation.HashHistoryManager {
|
|
addHistory(url: string) {
|
|
console.log('add history');
|
|
super.addHistory(url, false);
|
|
}
|
|
}
|
|
|
|
// Configuration
|
|
var config = [
|
|
{ key: 'people', route: ['people/{page}', 'people/{page}/sort/{sort}'], defaults: { page: 1 }, help: 'people.htm' },
|
|
{ key: 'person', route: 'person/{id}', trackTypes: false, defaultTypes: { id: 'number' }, trackCrumbTrail: true }
|
|
];
|
|
var stateNavigator = new Navigation.StateNavigator(config);
|
|
stateNavigator.configure(config, new LogHistoryManager());
|
|
|
|
// States
|
|
var states = stateNavigator.states;
|
|
var people = states['people'];
|
|
var person = states['person'];
|
|
var help = people['help'];
|
|
var pageDefault = people.defaults.page;
|
|
var idDefaultType = person.defaultTypes.id;
|
|
|
|
// State Controller
|
|
people.dispose = () => {};
|
|
people.navigating = (data, url, navigate) => {
|
|
navigate([]);
|
|
};
|
|
people.navigated = (data, asyncData) => {};
|
|
person.navigating = (data, url, navigate) => {
|
|
navigate();
|
|
};
|
|
person.navigated = (data) => {};
|
|
person.urlEncode = function urlEncode(state: Navigation.State, key: string, val: string, queryString: boolean): string {
|
|
return queryString ? val.replace(/\s/g, '+') : encodeURIComponent(val);
|
|
}
|
|
person.urlDecode = function urlDecode(state: Navigation.State, key: string, val: string, queryString: boolean): string {
|
|
return queryString ? val.replace(/\+/g, ' ') : decodeURIComponent(val);
|
|
}
|
|
|
|
// Navigation Event
|
|
var navigationListener =
|
|
(oldState: Navigation.State, state: Navigation.State, data: any) => {
|
|
stateNavigator.offNavigate(navigationListener);
|
|
};
|
|
stateNavigator.onNavigate(navigationListener);
|
|
|
|
// Navigation
|
|
stateNavigator.navigate('people');
|
|
stateNavigator.navigate('people', null, 'add');
|
|
stateNavigator.refresh();
|
|
stateNavigator.refresh({ page: 3 });
|
|
stateNavigator.refresh({ page: 2 }, 'replace');
|
|
stateNavigator.navigate('person', { id: 10 });
|
|
var canGoBack: boolean = stateNavigator.canNavigateBack(1);
|
|
stateNavigator.navigateBack(1);
|
|
stateNavigator.stateContext.clear();
|
|
|
|
// Navigation Link
|
|
var link = stateNavigator.getNavigationLink('people');
|
|
link = stateNavigator.getRefreshLink();
|
|
link = stateNavigator.getRefreshLink({ page: 2 });
|
|
stateNavigator.navigateLink(link);
|
|
link = stateNavigator.getNavigationLink('person', { id: 10 });
|
|
stateNavigator.navigateLink(link, 'replace');
|
|
link = stateNavigator.getNavigationBackLink(1);
|
|
var crumb = stateNavigator.stateContext.crumbs[0];
|
|
link = crumb.url;
|
|
stateNavigator.navigateLink(link, 'none', true);
|
|
|
|
// State Context
|
|
var state: Navigation.State = stateNavigator.stateContext.state;
|
|
var url: string = stateNavigator.stateContext.url;
|
|
var title: string = stateNavigator.stateContext.title;
|
|
var page: number = stateNavigator.stateContext.data.page;
|
|
state = stateNavigator.stateContext.oldState;
|
|
page = stateNavigator.stateContext.oldData.page;
|
|
state = stateNavigator.stateContext.previousState;
|
|
page = stateNavigator.stateContext.previousData.page;
|
|
|
|
// Navigation Data
|
|
var data = stateNavigator.stateContext.includeCurrentData({ sort: 'name' }, ['page']);
|
|
stateNavigator.refresh(data);
|
|
var data = stateNavigator.stateContext.includeCurrentData({ pageSize: 10 });
|
|
stateNavigator.refresh(data);
|
|
}
|