mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
142 lines
3.0 KiB
TypeScript
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
|
|
}
|
|
}
|
|
);
|