40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
const m = require('mithril')
|
|
|
|
const Pages = {
|
|
oninit: function(vnode) {
|
|
this.onpage = vnode.attrs.onpage || function() {}
|
|
},
|
|
|
|
view: function(vnode) {
|
|
if (!vnode.attrs.links) return null
|
|
return m('pages', [
|
|
vnode.attrs.links.first
|
|
? m(m.route.Link, {
|
|
href: vnode.attrs.base + '?page=' + vnode.attrs.links.first.page,
|
|
onclick: function() { vnode.state.onpage(vnode.attrs.links.first.page) },
|
|
}, 'First')
|
|
: m('div'),
|
|
vnode.attrs.links.previous
|
|
? m(m.route.Link, {
|
|
href: vnode.attrs.base + '?page=' + vnode.attrs.links.previous.page,
|
|
onclick: function() { vnode.state.onpage(vnode.attrs.links.previous.page) },
|
|
}, vnode.attrs.links.previous.title)
|
|
: m('div'),
|
|
m('div', vnode.attrs.links.current && vnode.attrs.links.current.title || 'Current page'),
|
|
vnode.attrs.links.next
|
|
? m(m.route.Link, {
|
|
href: vnode.attrs.base + '?page=' + vnode.attrs.links.next.page,
|
|
onclick: function() { vnode.state.onpage(vnode.attrs.links.next.page) },
|
|
}, vnode.attrs.links.next.title)
|
|
: m('div'),
|
|
vnode.attrs.links.last
|
|
? m(m.route.Link, {
|
|
href: vnode.attrs.base + '?page=' + vnode.attrs.links.last.page,
|
|
onclick: function() { vnode.state.onpage(vnode.attrs.links.last.page) },
|
|
}, 'Last')
|
|
: m('div'),
|
|
])
|
|
},
|
|
}
|
|
|
|
module.exports = Pages
|