From be069ba2722648e35f844a4c31bba8410f236552 Mon Sep 17 00:00:00 2001 From: Ned Zimmerman Date: Mon, 28 Aug 2017 13:30:38 -0300 Subject: [PATCH] Add JS catalog navigation. --- package.json | 3 +- resources/assets/scripts/main.js | 3 - resources/assets/scripts/routes/common.js | 1 + resources/assets/scripts/routes/home.js | 31 +++++++ .../partials/front-page-catalog.blade.php | 10 +-- yarn.lock | 88 +++++++++++++++++-- 6 files changed, 119 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 618abfd..16d6fc5 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,7 @@ }, "dependencies": { "jquery": "1.12.4 - 3", - "tachyons-sass": "~4.7" + "tachyons-sass": "~4.7", + "wpapi": "^1.1.2" } } diff --git a/resources/assets/scripts/main.js b/resources/assets/scripts/main.js index bcbfcf8..db67e15 100644 --- a/resources/assets/scripts/main.js +++ b/resources/assets/scripts/main.js @@ -1,9 +1,6 @@ // import external dependencies import 'jquery'; -// Import everything from autoload -import "./autoload/**/*" - // import local dependencies import Router from './util/Router'; import common from './routes/common'; diff --git a/resources/assets/scripts/routes/common.js b/resources/assets/scripts/routes/common.js index bbb00c7..6a5a86e 100644 --- a/resources/assets/scripts/routes/common.js +++ b/resources/assets/scripts/routes/common.js @@ -1,6 +1,7 @@ export default { init() { // JavaScript to be fired on all pages + $('body').removeClass('no-js').addClass('js'); $('.toggle-menu').click((event) => { event.preventDefault(); $(event.currentTarget).toggleClass('is-active'); diff --git a/resources/assets/scripts/routes/home.js b/resources/assets/scripts/routes/home.js index c37d80b..0c2305c 100644 --- a/resources/assets/scripts/routes/home.js +++ b/resources/assets/scripts/routes/home.js @@ -1,6 +1,37 @@ +const WPAPI = require( 'wpapi' ); + export default { init() { // JavaScript to be fired on the home page + let pb = new WPAPI({ endpoint: 'http://pressbooks.dev/wp-json' }); + pb.books = pb.registerRoute( 'pressbooks/v2', '/books/' ); + const total = parseInt($('.navigation').attr('data-total')); + $('.latest-books .navigation .next, .latest-books .navigation .previous').live('click', (event) => { + event.preventDefault(); + const page = parseInt($(event.currentTarget).attr('data-page')); + pb.books().perPage(3).page(page).then(function(data) { + let books = '', nav = ''; + data.forEach((book) => { + books = books + `
+ Fiction + ${book.metadata.name} + About this book → +
`; + }); + $('.books').html(books); + if (page > 1 && page < total) { + nav = nav + ` + `; + } else if (page > 1 && page === total) { + nav = nav + ``; + } else { + nav = nav + ``; + } + $('.latest-books .navigation').html(nav); + }).catch(function(err) { + console.error(err); // eslint-disable-line + }); + }); }, finalize() { // JavaScript to be fired on the home page, after the init JS diff --git a/resources/views/partials/front-page-catalog.blade.php b/resources/views/partials/front-page-catalog.blade.php index c4302a0..6009773 100644 --- a/resources/views/partials/front-page-catalog.blade.php +++ b/resources/views/partials/front-page-catalog.blade.php @@ -4,19 +4,19 @@
@foreach( FrontPage::latestBooks( $current_page ) as $book ) @endforeach
- + diff --git a/yarn.lock b/yarn.lock index b5d79dc..82a70ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -980,7 +980,7 @@ component-emitter@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" -component-emitter@1.2.1: +component-emitter@1.2.1, component-emitter@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -1055,6 +1055,10 @@ cookie@0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +cookiejar@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.1.tgz#41ad57b1b555951ec171412a81942b1e8200d34a" + copy-globs-webpack-plugin@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/copy-globs-webpack-plugin/-/copy-globs-webpack-plugin-0.2.0.tgz#f946cd0ec2e0d366baa1e66a6062f261c2cc87a9" @@ -1800,6 +1804,10 @@ es6-map@^0.1.3: es6-symbol "~3.1.1" event-emitter "~0.3.5" +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + es6-set@~0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" @@ -2244,10 +2252,6 @@ flatten@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782" -font-awesome@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133" - for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -2272,6 +2276,14 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +form-data@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + form-data@~2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" @@ -2284,6 +2296,10 @@ formidable@1.0.x: version "1.0.17" resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.17.tgz#ef5491490f9433b705faa77249c99029ae348559" +formidable@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.1.1.tgz#96b8886f7c3c3508b932d6bd70c4d3a88f35f1a9" + fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" @@ -3167,6 +3183,10 @@ is-zip@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-zip/-/is-zip-1.0.0.tgz#47b0a8ff4d38a76431ccfd99a8e15a4c86ba2325" +is@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is/-/is-3.2.1.tgz#d0ac2ad55eb7b0bec926a5266f6c662aaa83dca5" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -3382,6 +3402,10 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +li@^1.0.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/li/-/li-1.2.1.tgz#37bd3d8d6f4ad520fa5e3c118106591093c2fb2b" + limiter@^1.0.5: version "1.1.2" resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.2.tgz#229d8055891c8b11af9e0ee5200e8e09bb3dcbeb" @@ -3634,7 +3658,7 @@ lodash.templatesettings@^3.0.0: lodash._reinterpolate "^3.0.0" lodash.escape "^3.0.0" -lodash.uniq@^4.5.0: +lodash.uniq@^4.3.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -3752,6 +3776,10 @@ merge-stream@^1.0.0: dependencies: readable-stream "^2.0.1" +methods@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -3795,7 +3823,7 @@ mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" -mime@1.3.x, "mime@>= 0.0.1", mime@^1.3.4: +mime@1.3.x, "mime@>= 0.0.1", mime@^1.3.4, mime@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.6.tgz#591d84d3653a6b0b4a3b9df8de5aa8108e72e5e0" @@ -3988,6 +4016,12 @@ node-status-codes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-status-codes/-/node-status-codes-1.0.0.tgz#5ae5541d024645d32a58fcddc9ceecea7ae3ac2f" +node.extend@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/node.extend/-/node.extend-1.1.6.tgz#a7b882c82d6c93a4863a5504bd5de8ec86258b96" + dependencies: + is "^3.1.0" + "nopt@2 || 3", nopt@3.0.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -4250,6 +4284,12 @@ parse-json@^2.1.0, parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-link-header@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-0.4.1.tgz#f6bd615dc6713fd40935ce97945e4d3f522edf14" + dependencies: + xtend "~4.0.0" + parse5@^1.4.2: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" @@ -5008,7 +5048,7 @@ qs@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" -"qs@>= 0.4.0": +"qs@>= 0.4.0", qs@^6.2.0, qs@^6.4.0: version "6.5.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.0.tgz#8d04954d364def3efc55b5a0793e1e2c8b1e6e49" @@ -5374,6 +5414,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^2.0.0" inherits "^2.0.1" +route-parser@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/route-parser/-/route-parser-0.0.4.tgz#eb873c7cc460d1124220479ed909af312e86149c" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -6021,6 +6065,21 @@ sum-up@^1.0.1: dependencies: chalk "^1.0.0" +superagent@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.6.0.tgz#eb679651057c3462199c7b902b696c25350e1b87" + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.1.0" + debug "^2.6.0" + extend "^3.0.0" + form-data "^2.1.1" + formidable "^1.1.1" + methods "^1.1.1" + mime "^1.3.6" + qs "^6.4.0" + readable-stream "^2.0.5" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6653,6 +6712,19 @@ wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +wpapi@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wpapi/-/wpapi-1.1.2.tgz#c633651d3990a5ab63a7704b39573a1e8d4c2f1e" + dependencies: + es6-promise "^3.2.1" + li "^1.0.1" + lodash.uniq "^4.3.0" + node.extend "^1.1.5" + parse-link-header "^0.4.1" + qs "^6.2.0" + route-parser "0.0.4" + superagent "^3.3.1" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"