audiobookshelf/client/components/app/BookShelfToolbar.vue

51 lines
1.2 KiB
Vue
Raw Normal View History

<template>
<div class="w-full h-10 relative">
<div id="toolbar" class="absolute top-0 left-0 w-full h-full z-20 flex items-center px-8">
2021-08-19 03:18:44 +02:00
<p class="font-book">{{ numShowing }} Audiobooks</p>
<div class="flex-grow" />
<controls-filter-select v-model="settings.filterBy" class="w-40 h-7.5" @change="updateFilter" />
2021-08-19 03:18:44 +02:00
<span class="px-4 text-sm">by</span>
<controls-order-select v-model="settings.orderBy" :descending.sync="settings.orderDesc" class="w-40 h-7.5" @change="updateOrder" />
</div>
</div>
</template>
<script>
export default {
data() {
2021-08-19 03:18:44 +02:00
return {
settings: {}
}
},
computed: {
2021-08-19 03:18:44 +02:00
numShowing() {
return this.$store.getters['audiobooks/getFiltered']().length
}
},
methods: {
updateOrder() {
this.saveSettings()
},
updateFilter() {
this.saveSettings()
},
saveSettings() {
// Send to server
this.$store.commit('settings/setSettings', this.settings)
},
2021-08-19 03:18:44 +02:00
init() {
this.settings = { ...this.$store.state.settings.settings }
}
},
2021-08-19 03:18:44 +02:00
mounted() {
this.init()
}
}
</script>
<style>
#toolbar {
box-shadow: 0px 8px 8px #111111aa;
}
</style>