diff --git a/examples/mailbox/client.js b/examples/mailbox/client.js index 416a32d..db5b22a 100644 --- a/examples/mailbox/client.js +++ b/examples/mailbox/client.js @@ -4,9 +4,9 @@ const sf = require('sheetify') sf('css-wipe/dest/bundle') sf('tachyons') -const mainView = require('./views/main') -const mailbox = require('./elements/mailbox') -const nav = require('./elements/nav') +const mailboxView = require('./views/mailbox') +const emailView = require('./views/email') +const emptyView = require('./views/empty') const app = choo() @@ -15,10 +15,10 @@ app.model('spam', require('./models/spam')) app.model('sent', require('./models/sent')) app.router((route) => [ - route('/', mainView(nav, mailbox)), + route('/', emptyView()), route('/:mailbox', [ - route('/', mainView(nav, mailbox)), - route('/:message', mainView(nav, mailbox)) + route('/', mailboxView()), + route('/:message', emailView()) ]) ]) diff --git a/examples/mailbox/elements/email-list.js b/examples/mailbox/elements/email-list.js new file mode 100644 index 0000000..551e141 --- /dev/null +++ b/examples/mailbox/elements/email-list.js @@ -0,0 +1,40 @@ +const dateformat = require('dateformat') +const choo = require('../../../') + +module.exports = function (params, state, send) { + const mailbox = params.mailbox + return choo.view` +
+ ${createHeader()} + ${state[mailbox + ':messages'].map(function (msg) { + return createMessage(msg, mailbox) + })} +
+ ` +} + +function createHeader () { + return choo.view` +
+
Date +
Subject +
From +
To +
+ ` +} + +function createMessage (message, mailbox) { + return choo.view` + + ` +} diff --git a/examples/mailbox/elements/email.js b/examples/mailbox/elements/email.js new file mode 100644 index 0000000..361f37b --- /dev/null +++ b/examples/mailbox/elements/email.js @@ -0,0 +1,33 @@ +const choo = require('../../../') + +module.exports = function (params, state, send) { + const mailbox = params.mailbox + const message = params.message + + const email = state[mailbox + ':messages'].filter(function (msg) { + return String(msg.id) === message + })[0] + + return choo.view` +
+ ${email ? createEmail(email) : 'error: no email found'} +
+
+
From
+
${message.from}
+
To
+
${message.to}
+
Date
+
${message.date}
+
+

${message.subject}

+

${message.body}

+
+ ` +} diff --git a/examples/mailbox/elements/empty-mailbox.js b/examples/mailbox/elements/empty-mailbox.js new file mode 100644 index 0000000..4b8aa7f --- /dev/null +++ b/examples/mailbox/elements/empty-mailbox.js @@ -0,0 +1,9 @@ +const choo = require('../../../') + +module.exports = function (params, state, send) { + return choo.view` +
+

Select a mailbox

+
+ ` +} diff --git a/examples/mailbox/elements/mailbox.js b/examples/mailbox/elements/mailbox.js index b6e7b68..b1cf40a 100644 --- a/examples/mailbox/elements/mailbox.js +++ b/examples/mailbox/elements/mailbox.js @@ -1,11 +1,10 @@ -const dateformat = require('dateformat') const choo = require('../../../') -module.exports = function (params, state, send) { - const mailbox = params.mailbox - const message = params.message +module.exports = function () { + return function (params, state, send) { + const mailbox = params.mailbox + const message = params.message - if (mailbox) { if (message) { const email = state[mailbox + ':messages'].filter(function (msg) { return String(msg.id) === message @@ -13,11 +12,15 @@ module.exports = function (params, state, send) { return choo.view`
- ${createHeader()} - ${state[mailbox + ':messages'].map(function (msg) { - return createMessage(msg, mailbox) - })} - ${email ? createEmail(email) : 'error: no email found'} +
+ ${createHeader()} + ${state[mailbox + ':messages'].map(function (msg) { + return createMessage(msg, mailbox) + })} +
+
+ ${email ? createEmail(email) : 'error: no email found'} +
` } else { @@ -30,12 +33,6 @@ module.exports = function (params, state, send) {
` } - } else { - return choo.view` -
-

Select a mailbox

-
- ` } } diff --git a/examples/mailbox/elements/pathname.js b/examples/mailbox/elements/pathname.js new file mode 100644 index 0000000..d9eb157 --- /dev/null +++ b/examples/mailbox/elements/pathname.js @@ -0,0 +1,10 @@ +const pathname = require('pathname-match') +const choo = require('../../../') + +module.exports = function (params, state, send) { + return choo.view` + + URL: ${pathname(state.location) || '/'} + + ` +} diff --git a/examples/mailbox/views/email.js b/examples/mailbox/views/email.js new file mode 100644 index 0000000..c200804 --- /dev/null +++ b/examples/mailbox/views/email.js @@ -0,0 +1,21 @@ +const choo = require('../../../') + +const emailList = require('../elements/email-list') +const pathname = require('../elements/pathname') +const email = require('../elements/email') +const nav = require('../elements/nav') + +module.exports = function () { + return function (params, state, send) { + return choo.view` +
+ ${pathname(params, state, send)} + ${nav(params, state, send)} +
+ ${emailList(params, state, send)} + ${email(params, state, send)} +
+
+ ` + } +} diff --git a/examples/mailbox/views/empty.js b/examples/mailbox/views/empty.js new file mode 100644 index 0000000..d972ee4 --- /dev/null +++ b/examples/mailbox/views/empty.js @@ -0,0 +1,17 @@ +const choo = require('../../../') + +const empty = require('../elements/empty-mailbox') +const pathname = require('../elements/pathname') +const nav = require('../elements/nav') + +module.exports = function () { + return function (params, state, send) { + return choo.view` +
+ ${pathname(params, state, send)} + ${nav(params, state, send)} + ${empty(params, state, send)} +
+ ` + } +} diff --git a/examples/mailbox/views/mailbox.js b/examples/mailbox/views/mailbox.js new file mode 100644 index 0000000..c4747ec --- /dev/null +++ b/examples/mailbox/views/mailbox.js @@ -0,0 +1,19 @@ +const choo = require('../../../') + +const emailList = require('../elements/email-list') +const pathname = require('../elements/pathname') +const nav = require('../elements/nav') + +module.exports = function () { + return function (params, state, send) { + return choo.view` +
+ ${pathname(params, state, send)} + ${nav(params, state, send)} +
+ ${emailList(params, state, send)} +
+
+ ` + } +} diff --git a/examples/mailbox/views/main.js b/examples/mailbox/views/main.js deleted file mode 100644 index bed5c71..0000000 --- a/examples/mailbox/views/main.js +++ /dev/null @@ -1,16 +0,0 @@ -const pathname = require('pathname-match') -const choo = require('../../../') - -module.exports = function (nav, mailbox) { - return function (params, state, send) { - return choo.view` -
- - URL: ${pathname(state.location) || '/'} - - ${nav(params, state, send)} - ${mailbox(params, state, send)} -
- ` - } -} diff --git a/scripts/test-size b/scripts/test-size index 0690efe..279de9d 100755 --- a/scripts/test-size +++ b/scripts/test-size @@ -5,7 +5,7 @@ # -t uglifyify \ # | discify --open -browserify http.js --full-paths \ +browserify index.js --full-paths \ -g unassertify \ -g uglifyify \ | gzip-size \