Commit b04ea0c4 authored by Limon Monte's avatar Limon Monte Committed by Evan You

Improve UI by adding 2nd paginator and making 1st one movable (#54)

* Make NewsListNav standalone component * UI improvement: add 2nd NewsListNav to the bottom, make 1st movable * Use kebab-case
parent f5ca53ac
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</div> </div>
</div> </div>
<transition name="fade" mode="out-in"> <transition name="fade" mode="out-in">
<router-view class="view"></router-view> <router-view></router-view>
</transition> </transition>
</div> </div>
</template> </template>
...@@ -76,11 +76,6 @@ a ...@@ -76,11 +76,6 @@ a
display inline-block display inline-block
vertical-align middle vertical-align middle
.view
max-width 800px
margin 0 auto
position relative
.fade-enter-active, .fade-leave-active .fade-enter-active, .fade-leave-active
transition all .2s ease transition all .2s ease
......
<template> <template>
<div class="news-view"> <div>
<spinner :show="loading"></spinner> <spinner :show="loading"></spinner>
<div class="news-list-nav"> <news-list-nav :page="page" :maxPage="maxPage" :type="type" v-if="displayedPage > 0"></news-list-nav>
<router-link v-if="page > 1" :to="'/' + type + '/' + (page - 1)">&lt; prev</router-link>
<a v-else class="disabled">&lt; prev</a>
<span>{{ page }}/{{ maxPage }}</span>
<router-link v-if="hasMore" :to="'/' + type + '/' + (page + 1)">more &gt;</router-link>
<a v-else class="disabled">more &gt;</a>
</div>
<transition :name="transition"> <transition :name="transition">
<div class="news-list" :key="displayedPage" v-if="displayedPage > 0"> <div class="news-list" :key="displayedPage" v-if="displayedPage > 0">
<transition-group tag="ul" name="item"> <transition-group tag="ul" name="item">
...@@ -16,11 +10,13 @@ ...@@ -16,11 +10,13 @@
</transition-group> </transition-group>
</div> </div>
</transition> </transition>
<news-list-nav :page="page" :maxPage="maxPage" :type="type" v-if="displayedPage > 0"></news-list-nav>
</div> </div>
</template> </template>
<script> <script>
import Spinner from './Spinner.vue' import Spinner from './Spinner.vue'
import NewsListNav from './NewsListNav.vue'
import Item from './Item.vue' import Item from './Item.vue'
import { watchList } from '../store/api' import { watchList } from '../store/api'
...@@ -31,6 +27,7 @@ export default { ...@@ -31,6 +27,7 @@ export default {
components: { components: {
Spinner, Spinner,
NewsListNav,
Item Item
}, },
...@@ -60,9 +57,6 @@ export default { ...@@ -60,9 +57,6 @@ export default {
maxPage () { maxPage () {
const { itemsPerPage, lists } = this.$store.state const { itemsPerPage, lists } = this.$store.state
return Math.ceil(lists[this.type].length / itemsPerPage) return Math.ceil(lists[this.type].length / itemsPerPage)
},
hasMore () {
return this.page < this.maxPage
} }
}, },
...@@ -112,31 +106,10 @@ export default { ...@@ -112,31 +106,10 @@ export default {
</script> </script>
<style lang="stylus"> <style lang="stylus">
.news-view
padding-top 45px
.news-list-nav, .news-list
background-color #fff
border-radius 2px
.news-list-nav
padding 15px 30px
position fixed
text-align center
top 55px
left 0
right 0
z-index 998
box-shadow 0 1px 2px rgba(0,0,0,.1)
a
margin 0 1em
.disabled
color #ccc
.news-list .news-list
position absolute
margin 30px 0
width 100% width 100%
max-width 800px
margin 30px auto
transition all .5s cubic-bezier(.55,0,.1,1) transition all .5s cubic-bezier(.55,0,.1,1)
ul ul
list-style-type none list-style-type none
......
<template>
<div class="news-list-nav">
<router-link v-if="page > 1" :to="'/' + type + '/' + (page - 1)">&lt; prev</router-link>
<a v-else class="disabled">&lt; prev</a>
<span>{{ page }}/{{ maxPage }}</span>
<router-link v-if="hasMore" :to="'/' + type + '/' + (page + 1)">more &gt;</router-link>
<a v-else class="disabled">more &gt;</a>
</div>
</template>
<script>
export default {
name: 'news-list-nav',
props: ['page', 'maxPage', 'type'],
computed: {
hasMore () {
return this.page < this.maxPage
}
}
}
</script>
<style lang="stylus">
.news-list-nav, .news-list
background-color #fff
border-radius 2px
.news-list-nav
padding 15px 30px
text-align center
z-index 998
box-shadow 0 1px 2px rgba(0,0,0,.1)
a
margin 0 1em
.disabled
color #ccc
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment