Add dropdown menu for list settings options

This commit is contained in:
kolaente 2021-01-24 22:23:02 +01:00
parent e635f750b7
commit 8e05f6ed80
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
6 changed files with 53 additions and 14 deletions

View File

@ -31,13 +31,32 @@
class="title"> class="title">
{{ currentList.title === '' ? 'Loading...' : currentList.title }} {{ currentList.title === '' ? 'Loading...' : currentList.title }}
</h1> </h1>
<router-link
:to="{ name: 'list.list.settings.edit', params: { id: currentList.id } }" <div class="dropdown is-right is-active" v-if="canWriteCurrentList">
class="icon" <div class="dropdown-trigger">
v-if="canWriteCurrentList"> <icon icon="ellipsis-h" @click.stop="listSettingsOpen = !listSettingsOpen"/>
<icon icon="cog" size="2x"/> </div>
</router-link> <transition name="fade">
<div class="dropdown-menu" v-if="listSettingsOpen">
<div class="dropdown-content">
<router-link :to="{ name: 'list.list.settings.edit', params: { id: currentList.id } }" class="dropdown-item">
Edit this list
</router-link>
<router-link :to="{ name: 'list.list.settings.edit', params: { id: currentList.id } }" class="dropdown-item">
Set the background
</router-link>
<router-link :to="{ name: 'list.list.settings.edit', params: { id: currentList.id } }" class="dropdown-item">
Duplicate this list
</router-link>
<router-link :to="{ name: 'list.list.settings.edit', params: { id: currentList.id } }" class="dropdown-item">
Delete this list
</router-link>
</div>
</div>
</transition>
</div>
</div> </div>
<div class="navbar-end"> <div class="navbar-end">
<update/> <update/>
<div class="user"> <div class="user">
@ -99,6 +118,7 @@ export default {
data() { data() {
return { return {
userMenuActive: false, userMenuActive: false,
listSettingsOpen: false,
} }
}, },
components: { components: {
@ -107,6 +127,7 @@ export default {
created() { created() {
// This will hide the menu once clicked outside of it // This will hide the menu once clicked outside of it
this.$nextTick(() => document.addEventListener('click', () => this.userMenuActive = false)) this.$nextTick(() => document.addEventListener('click', () => this.userMenuActive = false))
this.$nextTick(() => document.addEventListener('click', () => this.listSettingsOpen = false))
}, },
computed: mapState({ computed: mapState({
userInfo: state => state.auth.info, userInfo: state => state.auth.info,

View File

@ -57,6 +57,7 @@ import {
faChessKnight, faChessKnight,
faCoffee, faCoffee,
faCocktail, faCocktail,
faEllipsisH,
} from '@fortawesome/free-solid-svg-icons' } from '@fortawesome/free-solid-svg-icons'
import {faCalendarAlt, faClock, faComments, faSave, faStar, faTimesCircle, faSun} from '@fortawesome/free-regular-svg-icons' import {faCalendarAlt, faClock, faComments, faSave, faStar, faTimesCircle, faSun} from '@fortawesome/free-regular-svg-icons'
import {FontAwesomeIcon} from '@fortawesome/vue-fontawesome' import {FontAwesomeIcon} from '@fortawesome/vue-fontawesome'
@ -144,6 +145,7 @@ library.add(faSun)
library.add(faChessKnight) library.add(faChessKnight)
library.add(faCoffee) library.add(faCoffee)
library.add(faCocktail) library.add(faCocktail)
library.add(faEllipsisH)
Vue.component('icon', FontAwesomeIcon) Vue.component('icon', FontAwesomeIcon)

View File

@ -211,7 +211,22 @@ export default new Router({
path: '/lists/:listId/settings/edit', path: '/lists/:listId/settings/edit',
name: 'list.list.settings.edit', name: 'list.list.settings.edit',
component: ListSettingEdit, component: ListSettingEdit,
} },
{
path: '/lists/:listId/settings/background',
name: 'list.list.settings.background',
component: ListSettingEdit,
},
{
path: '/lists/:listId/settings/duplicate',
name: 'list.list.settings.duplicate',
component: ListSettingEdit,
},
{
path: '/lists/:listId/settings/share',
name: 'list.list.settings.edit',
component: ListSettingEdit,
},
], ],
}, },
{ {

View File

@ -51,11 +51,12 @@
margin: 0; margin: 0;
} }
.icon { .dropdown-trigger {
color: $grey-400; color: $grey-400;
margin-left: 1rem; margin-left: 1rem;
height: 1rem; height: 1rem;
width: 1rem; width: 1rem;
cursor: pointer;
} }
} }

View File

@ -365,12 +365,6 @@
box-shadow: none !important; box-shadow: none !important;
} }
} }
.dropdown-menu {
.dropdown-content {
box-shadow: $shadow-md;
}
}
} }
.menu-hide-button, .menu-show-button { .menu-hide-button, .menu-show-button {

View File

@ -120,3 +120,9 @@ button.table {
border-radius: 100%; border-radius: 100%;
margin-right: 4px; margin-right: 4px;
} }
.dropdown-menu {
.dropdown-content {
box-shadow: $shadow-md;
}
}