mirror of
https://github.com/romancm/gamebrary
synced 2024-12-18 23:33:15 +00:00
move board switcher to component
This commit is contained in:
parent
9b8f00a2da
commit
e9135691cb
2 changed files with 61 additions and 46 deletions
53
src/components/Board/BoardSwitcher.vue
Normal file
53
src/components/Board/BoardSwitcher.vue
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
<template lang="html">
|
||||||
|
<b-dropdown
|
||||||
|
v-if="hasMultipleBoards"
|
||||||
|
dropright
|
||||||
|
right
|
||||||
|
no-caret
|
||||||
|
boundary="viewport"
|
||||||
|
v-b-tooltip.hover.right
|
||||||
|
variant="transparent"
|
||||||
|
:title="$t('navMenu.changeBoard')"
|
||||||
|
:menu-class="nightMode ? 'bg-dark' : ''"
|
||||||
|
>
|
||||||
|
<template v-slot:button-content>
|
||||||
|
<icon name="arrow-switch" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<b-dropdown-item
|
||||||
|
:to="`/board/${id}`"
|
||||||
|
:key="id"
|
||||||
|
v-for="{ name, id } in sortedBoards"
|
||||||
|
:variant="nightMode ? 'white' : 'transparent'"
|
||||||
|
:active="board.id === id"
|
||||||
|
>
|
||||||
|
{{ name }}
|
||||||
|
</b-dropdown-item>
|
||||||
|
|
||||||
|
<b-dropdown-divider />
|
||||||
|
|
||||||
|
<b-dropdown-item-button>
|
||||||
|
<create-board />
|
||||||
|
</b-dropdown-item-button>
|
||||||
|
</b-dropdown>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CreateBoard from '@/components/Board/CreateBoard';
|
||||||
|
import { mapGetters, mapState } from 'vuex';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
CreateBoard,
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
...mapState(['board']),
|
||||||
|
...mapGetters(['sortedBoards', 'nightMode']),
|
||||||
|
|
||||||
|
hasMultipleBoards() {
|
||||||
|
return this.$route.name === 'board' && this.board.name && this.sortedBoards.length > 1;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
|
@ -10,37 +10,7 @@
|
||||||
/>
|
/>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<template v-if="hasMultipleBoards">
|
<board-switcher />
|
||||||
<b-dropdown
|
|
||||||
dropright
|
|
||||||
right
|
|
||||||
no-caret
|
|
||||||
boundary="viewport"
|
|
||||||
v-b-tooltip.hover.right
|
|
||||||
:title="$t('navMenu.changeBoard')"
|
|
||||||
:menu-class="nightMode ? 'bg-dark' : ''"
|
|
||||||
variant="transparent"
|
|
||||||
>
|
|
||||||
<template v-slot:button-content>
|
|
||||||
<icon name="arrow-switch" />
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<b-dropdown-item
|
|
||||||
:to="`/board/${id}`"
|
|
||||||
:key="id"
|
|
||||||
v-for="{ name, id } in sortedBoards"
|
|
||||||
variant="transparent"
|
|
||||||
:active="board.id === id"
|
|
||||||
>
|
|
||||||
{{ name }}
|
|
||||||
</b-dropdown-item>
|
|
||||||
|
|
||||||
<b-dropdown-divider />
|
|
||||||
<b-dropdown-item-button>
|
|
||||||
<create-board />
|
|
||||||
</b-dropdown-item-button>
|
|
||||||
</b-dropdown>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<div class="mt-auto">
|
<div class="mt-auto">
|
||||||
<b-button
|
<b-button
|
||||||
|
@ -104,12 +74,12 @@
|
||||||
>
|
>
|
||||||
<b-avatar
|
<b-avatar
|
||||||
v-if="user && user.photoURL"
|
v-if="user && user.photoURL"
|
||||||
variant="info"
|
|
||||||
small
|
|
||||||
:title="$t('navMenu.account')"
|
|
||||||
v-b-tooltip.hover.right
|
v-b-tooltip.hover.right
|
||||||
:badge="notification"
|
small
|
||||||
|
variant="info"
|
||||||
badge-variant="danger"
|
badge-variant="danger"
|
||||||
|
:title="$t('navMenu.account')"
|
||||||
|
:badge="notification"
|
||||||
:src="user.photoURL"
|
:src="user.photoURL"
|
||||||
/>
|
/>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
@ -119,24 +89,16 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapState, mapGetters } from 'vuex';
|
import { mapState, mapGetters } from 'vuex';
|
||||||
import CreateBoard from '@/components/Board/CreateBoard';
|
import BoardSwitcher from '@/components/Board/BoardSwitcher';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
CreateBoard,
|
BoardSwitcher,
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['board', 'user', 'notification', 'settings']),
|
...mapState(['board', 'user', 'notification', 'settings']),
|
||||||
...mapGetters(['sortedBoards', 'nightMode']),
|
...mapGetters(['nightMode']),
|
||||||
|
|
||||||
routeName() {
|
|
||||||
return this.$route.name;
|
|
||||||
},
|
|
||||||
|
|
||||||
hasMultipleBoards() {
|
|
||||||
return this.$route.name === 'board' && this.board.name && this.sortedBoards.length > 1;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
|
|
Loading…
Reference in a new issue