Quellcode durchsuchen

feat: paginate wp posts

pull/1/head
Rohan Verma vor 6 Jahren
Ursprung
Commit
34beaf2fae
5 geänderte Dateien mit 125 neuen und 13 gelöschten Zeilen
  1. +27
    -4
      components/ProjectList.vue
  2. +2
    -2
      components/TwitterEmbed.vue
  3. +4
    -1
      nuxt.config.js
  4. +2
    -1
      package.json
  5. +90
    -5
      yarn.lock

+ 27
- 4
components/ProjectList.vue Datei anzeigen

@@ -2,12 +2,19 @@
<div class="sm:flex items-center px-6 py-4">
<div class="text-center sm:text-left sm:flex-grow">
<div class="mb-4">
<p class="text-xl font-bold leading-tight border-b border-2px py-4">Recent Projects</p>
<p class="flex flex-col sm:flex-row border-b border-2px py-4">
<span class="flex-1 text-xl font-bold leading-tight ">Recent Projects</span>
<span class="flex-none text-sm leading-tight text-grey-dark">
<span @click="changePage(-1)" :class="{'line-through': is_first_page, 'cursor-pointer': !is_first_page}">prev</span>
/
<span @click="changePage(1)" :class="{'line-through': is_last_page, 'cursor-pointer': !is_last_page}">next</span>
</span>
</p>
</div>
<div>
<!-- {{posts}} -->
<div v-for="project in posts" v-bind:key="project.id" @click="redirect_href(project.link)" class="flex group cursor-pointer hover:text-white hover:bg-indigo p-4">
<p class="flex-1 pl-2 text-lg mb-1 group-hover:text-white " v-html="project.title.rendered"></p>
<p class="flex-1 text-lg mb-1 group-hover:text-white " v-html="project.title.rendered"></p>
<fa-layers full-width class="fa flex-none align-middle ml-2">
<fa :icon="fas.faArrowCircleRight"/>
</fa-layers>
@@ -26,15 +33,25 @@ export default {
},
methods: {
async fetchPosts() {
const posts = await this.$axios.$get('https://blog.rohanverma.net/wp-json/wp/v2/posts?categories=21')
const posts = await this.$wp.posts().categories(21).perPage(8).page(this.current_page)
this.posts = posts
this.total_pages = posts._paging.totalPages
},
redirect_href: function (url) {
window.open(url, '_blank');
}
},
changePage: function (p) {
var newPage = this.current_page + p
if (newPage >= 1 && newPage <= this.total_pages) {
this.current_page = newPage
this.fetchPosts()
}
},
},
data () {
return {
current_page: 1,
total_pages: 1,
posts: [
{
id: 0,
@@ -50,6 +67,12 @@ export default {
fas () {
return fas
},
is_first_page() {
return this.current_page == 1
},
is_last_page() {
return this.current_page == this.total_pages
}
}
}
</script>

+ 2
- 2
components/TwitterEmbed.vue Datei anzeigen

@@ -1,5 +1,5 @@
<template>
<div class="h-64 overflow-y-scroll">
<a class="twitter-timeline" data-link-color="#2B7BB9" data-chrome="nofooter noborders noheader transparent" href="https://twitter.com/rhnvrm?ref_src=twsrc%5Etfw">Tweets by rhnvrm</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<div class="h-64 p-1 overflow-y-scroll">
<a class="twitter-timeline" data-link-color="#2B7BB9" data-chrome="nofooter noborders noheader transparent" href="https://twitter.com/rhnvrm?ref_src=twsrc%5Etfw">Loading tweets...</a> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
</template>

+ 4
- 1
nuxt.config.js Datei anzeigen

@@ -33,7 +33,10 @@ module.exports = {
icons: ['fas']
}
]
}]
}],
['wp-nuxt', {
endpoint: 'https://blog.rohanverma.net/wp-json'
}],
],
/*
** PurgeCSS

+ 2
- 1
package.json Datei anzeigen

@@ -21,7 +21,8 @@
"nuxt": "^2.3.4",
"nuxt-fontawesome": "^0.4.0",
"nuxt-purgecss": "^0.2.1",
"tailwindcss": "^0.7.3"
"tailwindcss": "^0.7.3",
"wp-nuxt": "^1.0.3"
},
"devDependencies": {
"autoprefixer": "^9.4.6",

+ 90
- 5
yarn.lock Datei anzeigen

@@ -1410,6 +1410,11 @@ async@^2.3.0:
dependencies:
lodash "^4.17.10"

asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=

atob@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -2025,6 +2030,13 @@ colors@~1.1.2:
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=

combined-stream@^1.0.6:
version "1.0.7"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
dependencies:
delayed-stream "~1.0.0"

[email protected], commander@~2.17.1:
version "2.17.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
@@ -2045,7 +2057,7 @@ commondir@^1.0.1:
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=

component-emitter@^1.2.1:
component-emitter@^1.2.0, component-emitter@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
@@ -2167,6 +2179,11 @@ [email protected], cookie@^0.3.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=

cookiejar@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c"
integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==

copy-concurrently@^1.0.0:
version "1.0.5"
resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
@@ -2603,6 +2620,11 @@ defu@^0.0.1:
resolved "https://registry.yarnpkg.com/defu/-/defu-0.0.1.tgz#74dc4d64e401d7f95c6755fe98bc5cd688833a8f"
integrity sha512-Pz9yznbSzVTNA67lcfqVnktROx2BrrBBcmQqGrfe0zdiN5pl5GQogLA4uaP3U1pR1LHIZpEYTAh2sn+v4rH1dA==

delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=

delegates@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
@@ -3324,6 +3346,20 @@ for-in@^1.0.2:
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=

form-data@^2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.6"
mime-types "^2.1.12"

formidable@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.1.tgz#70fb7ca0290ee6ff961090415f4b3df3d2082659"
integrity sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==

forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
@@ -4263,6 +4299,11 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"

li@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/li/-/li-1.3.0.tgz#22c59bcaefaa9a8ef359cf759784e4bf106aea1b"
integrity sha1-IsWbyu+qmo7zWc91l4TkvxBq6hs=

loader-fs-cache@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc"
@@ -4459,7 +4500,7 @@ merge-source-map@^1.1.0:
dependencies:
source-map "^0.6.1"

methods@~1.1.2:
methods@^1.1.1, methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
@@ -4501,7 +4542,7 @@ mime-db@~1.37.0:
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==

mime-types@~2.1.18:
mime-types@^2.1.12, mime-types@~2.1.18:
version "2.1.21"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
@@ -4513,7 +4554,7 @@ [email protected]:
resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==

mime@^2.0.3, mime@^2.3.1:
mime@^2.0.3, mime@^2.3.1, mime@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.0.tgz#e051fd881358585f3279df333fe694da0bcffdd6"
integrity sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==
@@ -5094,6 +5135,13 @@ parse-json@^4.0.0:
error-ex "^1.3.1"
json-parse-better-errors "^1.0.1"

parse-link-header@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-1.0.1.tgz#bedfe0d2118aeb84be75e7b025419ec8a61140a7"
integrity sha1-vt/g0hGK64S+deewJUGeyKYRQKc=
dependencies:
xtend "~4.0.1"

parseurl@~1.3.2:
version "1.3.2"
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
@@ -6066,6 +6114,11 @@ [email protected]:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==

qs@^6.6.0:
version "6.6.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.6.0.tgz#a99c0f69a8d26bf7ef012f871cdabb0aee4424c2"
integrity sha512-KIJqT9jQJDQx5h5uAVPimw6yVg2SekOKu959OCtktD3FjzbpvaPr8i4zzg07DOMz+igA4W/aNM7OV8H37pFYfA==

querystring-es3@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
@@ -6153,7 +6206,7 @@ [email protected]:
isarray "0.0.1"
string_decoder "~0.10.x"

readable-stream@^3.1.1:
readable-stream@^3.0.6, readable-stream@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.1.1.tgz#ed6bbc6c5ba58b090039ff18ce670515795aeb06"
integrity sha512-DkN66hPyqDhnIQ6Jcsvx9bFjhw214O4poMBcIMgPVpQvNy9a0e0Uhg5SqySyDKAmUlwt8LonTBz1ezOnM8pUdA==
@@ -6860,6 +6913,21 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"

superagent@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/superagent/-/superagent-4.1.0.tgz#c465c2de41df2b8d05c165cbe403e280790cdfd5"
integrity sha512-FT3QLMasz0YyCd4uIi5HNe+3t/onxMyEho7C3PSqmti3Twgy2rXT4fmkTz6wRL6bTF4uzPcfkUCa8u4JWHw8Ag==
dependencies:
component-emitter "^1.2.0"
cookiejar "^2.1.2"
debug "^4.1.0"
form-data "^2.3.3"
formidable "^1.2.0"
methods "^1.1.1"
mime "^2.4.0"
qs "^6.6.0"
readable-stream "^3.0.6"

supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -7565,6 +7633,23 @@ worker-farm@^1.5.2:
dependencies:
errno "~0.1.7"

wp-nuxt@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/wp-nuxt/-/wp-nuxt-1.0.3.tgz#c21054d72f4bd9528ef51052e86fc9132e08a732"
integrity sha512-6DmwyxNsY4rEeXUaA5kgdgEO7mwMJcya8pZfhMR4GlrGFLo1AXhivz58KE04YY0Kdh0IuJcTcVHjveYTqO1Qyg==
dependencies:
wpapi "^1.1.2"

wpapi@^1.1.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/wpapi/-/wpapi-1.2.1.tgz#dd618cd9af129e293a7a95baf6062d27159b6960"
integrity sha512-Jt7KTotp+fYa8mI7SSfdE+4xHrH8g57CWs21LhCrgvVERPGGv4L/APjIqft07idpGspURfCyo0sHrTOm5rnPsA==
dependencies:
li "^1.3.0"
parse-link-header "^1.0.1"
qs "^6.6.0"
superagent "^4.0.0"

wrap-ansi@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"

Laden…
Abbrechen
Speichern