TT#40352 See tabs nav sticky while scrolling down

What has been done:
- TT#44401, Implement back-to-top button
- TT#44402, Implement scroll-to-top when user clicks new tab
- TT#44403, Implement sticky tabs navigation

Change-Id: I46f23dc67466eb7a4fdec98d9030dc2fb193214c
changes/89/23589/2
raxelsen 7 years ago committed by Hans-Peter Herzog
parent 82a98ed539
commit a8e7df6385

@ -1,7 +1,7 @@
<template> <template>
<csc-page <csc-page
ref="page" ref="page"
class="csc-list-page" class="csc-list-page csc-page-conversations"
> >
<q-tabs <q-tabs
inverted inverted
@ -39,11 +39,14 @@
label="Voicemails" label="Voicemails"
@click="filterByType('voicemail')" @click="filterByType('voicemail')"
/> />
</q-tabs>
<q-list <q-list
v-if="!isNextPageRequesting && items.length > 0"
no-border no-border
inset-separator inset-separator
sparse sparse
multiline multiline
class="csc-conversation-list"
> >
<csc-conversation-item <csc-conversation-item
v-for="(item, index) in items" v-for="(item, index) in items"
@ -56,6 +59,12 @@
@play-voice-mail="playVoiceMail" @play-voice-mail="playVoiceMail"
/> />
</q-list> </q-list>
<div
v-else-if="!isNextPageRequesting && items.length === 0"
class="row justify-center csc-conversation-list-message"
>
{{ noResultsMessage }}
</div>
<div <div
v-if="isNextPageRequesting" v-if="isNextPageRequesting"
class="row justify-center" class="row justify-center"
@ -65,16 +74,17 @@
:size="40" :size="40"
/> />
</div> </div>
<div
v-if="!isNextPageRequesting && items.length === 0"
class="row justify-center"
>
{{ noResultsMessage }}
</div>
<q-scroll-observable <q-scroll-observable
@scroll="scroll" @scroll="scroll"
/> />
</q-tabs> <q-btn
v-back-to-top.animate="backToTopProps"
round
color="primary"
class="fixed-bottom-right animate-pop csc-back-to-top"
>
<q-icon name="keyboard_arrow_up" />
</q-btn>
</csc-page> </csc-page>
</template> </template>
@ -98,7 +108,10 @@
dom, dom,
QTabs, QTabs,
QTab, QTab,
QTabPane QTabPane,
BackToTop,
QBtn,
QIcon
} from 'quasar-framework' } from 'quasar-framework'
const { offset } = dom const { offset } = dom
export default { export default {
@ -134,7 +147,12 @@
QSpinnerDots, QSpinnerDots,
QTabs, QTabs,
QTab, QTab,
QTabPane QTabPane,
QBtn,
QIcon
},
directives: {
BackToTop
}, },
mounted() { mounted() {
this.$store.commit('conversations/resetList'); this.$store.commit('conversations/resetList');
@ -168,6 +186,9 @@
else if(this.selectedTab === 'voicemail') { else if(this.selectedTab === 'voicemail') {
return this.$t('pages.conversations.noVoicemailsMessage'); return this.$t('pages.conversations.noVoicemailsMessage');
} }
},
backToTopProps() {
return {offset: 100, duration: 200};
} }
}, },
methods: { methods: {
@ -278,9 +299,30 @@
</script> </script>
<style lang="stylus" rel="stylesheet/stylus"> <style lang="stylus" rel="stylesheet/stylus">
@import '../../../themes/app.variables.styl'
.page.csc-page-conversations
padding-top 0
.csc-conversation-list
padding 0
.csc-conversation-list-message
padding 16
padding 16px
.q-infinite-scroll-message .q-infinite-scroll-message
margin-bottom 50px margin-bottom 50px
.conversations-tabs
position sticky
top $toolbar-min-height
z-index 12
background white
padding-top 16px
padding-bottom 16px
.csc-voice-mail-item .csc-voice-mail-item
.csc-item-buttons .csc-item-buttons
position absolute position absolute
@ -288,7 +330,10 @@
.csc-item-buttons .csc-item-buttons
.q-btn .q-btn
padding-left 8px; padding-left 8px
padding-right 8px; padding-right 8px
.csc-back-to-top
margin 0 15px 15px 0
</style> </style>

Loading…
Cancel
Save