DefinitelyTyped/types/navigo/navigo-tests.ts
2018-01-15 12:22:28 +01:00

142 lines
3.0 KiB
TypeScript

import Navigo = require("navigo");
type Keys = string;
type State = {[k in Keys]: any};
type Params = State;
const root = null;
const useHash = false;
let router = new Navigo(root, useHash);
const before = (done: (suppress?: boolean) => void, params: Params) => done();
const after = (params: Params) => params;
router.hooks({
before,
after
});
router
.on('/products/list', () => {
// display all the products
})
.resolve();
router
.on(() => {
// show home page here
})
.resolve();
router
.on({
'/products/list': () => {
// do something
},
'/products': () => {
// do something
}
})
.resolve();
router
.on({
'products/:id': () => {
// do something
},
products: () => {
// do something
},
'*': () => {
// do something
}
})
.resolve();
router
.on('/user/:id/:action', (params: Params) => {
// If we have http://site.com/user/42/save as a url then
// params.id = 42
// params.action = save
})
.resolve();
router
.on('/user/:id/:action', (params: Params, query: string) => {
// If we have http://site.com/user/42/save?answer=42 as a url then
// params.id = 42
// params.action = save
// query = answer=42
})
.resolve();
router.notFound((query: string) => {
// ...
});
router
.on(/users\/(\d+)\/(\w+)\/?/, (id: string, action: string) => {
// If we have http://site.com/user/42/save as a url then
// id = 42
// action = save
})
.resolve();
router
.on('/user/*', () => {
// This function will be called on every
// URL that starts with /user
})
.resolve();
router.notFound(() => {
// called when there is path specified but
// there is no route matching
});
router.navigate('/products/list');
router.navigate('http://site.com/products/list', true);
router = new Navigo('http://site.com/', true);
const handler = () => {
// do something
};
router.on({
'/trip/:tripId/edit': { as: 'trip.edit', uses: handler },
'/trip/save': { as: 'trip.save', uses: handler },
'/trip/:action/:tripId': { as: 'trip.action', uses: handler }
});
let a: string = (router.generate('trip.edit', { tripId: 42 })); // --> /trip/42/edit
a = (router.generate('trip.action', { tripId: 42, action: 'save' })); // --> /trip/save/42
a = (router.generate('trip.save')); // --> /trip/save
router.pause();
router.navigate('/en/products');
router.resume(); // or .pause(false)
router.pause();
router.historyAPIUpdateMethod('replaceState');
router.disableIfAPINotAvailable();
router.off('/trip/:number', { as: 'trip', uses: (params, query) => {}});
router.resume();
router.on(
'/user/edit',
() => {
// show user edit page
},
{
before: (done) => {
// doing some async operation
done(false);
done();
},
after: () => {
// do something
}
}
);