fix: icon offset and color

This commit is contained in:
Dominik Pschenitschni 2022-11-18 13:59:38 +01:00 committed by Gitea
parent 3282f55c34
commit 74ad98de68
6 changed files with 53 additions and 23 deletions

View File

@ -52,7 +52,7 @@ describe('Lists', () => {
cy.get('.list-title h1') cy.get('.list-title h1')
.should('contain', 'First List') .should('contain', 'First List')
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-trigger') cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .menu-list-dropdown-trigger')
.click() .click()
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-content') cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-content')
.contains('Edit') .contains('Edit')
@ -80,7 +80,7 @@ describe('Lists', () => {
it('Should remove a list', () => { it('Should remove a list', () => {
cy.visit(`/lists/${lists[0].id}`) cy.visit(`/lists/${lists[0].id}`)
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-trigger') cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .menu-list-dropdown-trigger')
.click() .click()
cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-content') cy.get('.namespace-container .menu.namespaces-lists .menu-list li:first-child .dropdown .dropdown-content')
.contains('Delete') .contains('Delete')

View File

@ -7,7 +7,7 @@
<ul class="menu-list"> <ul class="menu-list">
<li> <li>
<router-link :to="{ name: 'home'}" v-shortcut="'g o'"> <router-link :to="{ name: 'home'}" v-shortcut="'g o'">
<span class="icon"> <span class="menu-item-icon icon">
<icon icon="calendar"/> <icon icon="calendar"/>
</span> </span>
{{ $t('navigation.overview') }} {{ $t('navigation.overview') }}
@ -15,7 +15,7 @@
</li> </li>
<li> <li>
<router-link :to="{ name: 'tasks.range'}" v-shortcut="'g u'"> <router-link :to="{ name: 'tasks.range'}" v-shortcut="'g u'">
<span class="icon"> <span class="menu-item-icon icon">
<icon :icon="['far', 'calendar-alt']"/> <icon :icon="['far', 'calendar-alt']"/>
</span> </span>
{{ $t('navigation.upcoming') }} {{ $t('navigation.upcoming') }}
@ -23,7 +23,7 @@
</li> </li>
<li> <li>
<router-link :to="{ name: 'namespaces.index'}" v-shortcut="'g n'"> <router-link :to="{ name: 'namespaces.index'}" v-shortcut="'g n'">
<span class="icon"> <span class="menu-item-icon icon">
<icon icon="layer-group"/> <icon icon="layer-group"/>
</span> </span>
{{ $t('namespace.title') }} {{ $t('namespace.title') }}
@ -31,7 +31,7 @@
</li> </li>
<li> <li>
<router-link :to="{ name: 'labels.index'}" v-shortcut="'g a'"> <router-link :to="{ name: 'labels.index'}" v-shortcut="'g a'">
<span class="icon"> <span class="menu-item-icon icon">
<icon icon="tags"/> <icon icon="tags"/>
</span> </span>
{{ $t('label.title') }} {{ $t('label.title') }}
@ -39,7 +39,7 @@
</li> </li>
<li> <li>
<router-link :to="{ name: 'teams.index'}" v-shortcut="'g m'"> <router-link :to="{ name: 'teams.index'}" v-shortcut="'g m'">
<span class="icon"> <span class="menu-item-icon icon">
<icon icon="users"/> <icon icon="users"/>
</span> </span>
{{ $t('team.title') }} {{ $t('team.title') }}
@ -63,7 +63,7 @@
/> />
<span class="name">{{ namespaceTitles[nk] }}</span> <span class="name">{{ namespaceTitles[nk] }}</span>
<div <div
class="icon is-small toggle-lists-icon pl-2" class="icon menu-item-icon is-small toggle-lists-icon pl-2"
:class="{'active': typeof listsVisible[n.id] !== 'undefined' ? listsVisible[n.id] : true}" :class="{'active': typeof listsVisible[n.id] !== 'undefined' ? listsVisible[n.id] : true}"
> >
<icon icon="chevron-down"/> <icon icon="chevron-down"/>
@ -111,7 +111,7 @@
class="list-menu-link" class="list-menu-link"
:class="{'router-link-exact-active': currentList.id === l.id}" :class="{'router-link-exact-active': currentList.id === l.id}"
> >
<span class="icon handle"> <span class="icon menu-item-icon handle">
<icon icon="grip-lines"/> <icon icon="grip-lines"/>
</span> </span>
<ColorBubble <ColorBubble
@ -128,7 +128,13 @@
> >
<icon :icon="l.isFavorite ? 'star' : ['far', 'star']"/> <icon :icon="l.isFavorite ? 'star' : ['far', 'star']"/>
</BaseButton> </BaseButton>
<list-settings-dropdown class="menu-list-dropdown" :list="l" v-if="l.id > 0" /> <list-settings-dropdown class="menu-list-dropdown" :list="l" v-if="l.id > 0">
<template #trigger="{toggleOpen}">
<BaseButton class="menu-list-dropdown-trigger" @click="toggleOpen">
<icon icon="ellipsis-h" class="icon"/>
</BaseButton>
</template>
</list-settings-dropdown>
<span class="list-setting-spacer" v-else></span> <span class="list-setting-spacer" v-else></span>
</li> </li>
</template> </template>
@ -354,6 +360,15 @@ $vikunja-nav-selected-width: 0.4rem;
} }
} }
.menu-item-icon {
color: var(--grey-400);
}
.menu-list-dropdown-trigger {
display: flex;
padding: 0.5rem;
}
.flip-list-move { .flip-list-move {
transition: transform $transition-duration; transition: transform $transition-duration;
} }
@ -398,25 +413,21 @@ $vikunja-nav-selected-width: 0.4rem;
padding-right: 0.5rem; padding-right: 0.5rem;
} }
&.router-link-exact-active .icon { &.router-link-exact-active .icon:not(.handle) {
color: var(--primary); color: var(--primary);
} }
.icon.handle { .handle {
opacity: 0; opacity: 0;
transition: opacity $transition; transition: opacity $transition;
margin-right: .25rem; margin-right: .25rem;
cursor: grab; cursor: grab;
} }
&:hover .icon.handle { &:hover .handle {
opacity: 1; opacity: 1;
} }
} }
} }
.icon {
color: var(--grey-400) !important;
}
} }
.top-menu { .top-menu {

View File

@ -1,5 +1,13 @@
<template> <template>
<dropdown> <dropdown>
<template #trigger="triggerProps">
<slot name="trigger" v-bind="triggerProps">
<BaseButton class="dropdown-trigger" @click="triggerProps.toggleOpen">
<icon icon="ellipsis-h" class="icon"/>
</BaseButton>
</slot>
</template>
<template v-if="isSavedFilter(list)"> <template v-if="isSavedFilter(list)">
<dropdown-item <dropdown-item
:to="{ name: 'filter.settings.edit', params: { listId: list.id } }" :to="{ name: 'filter.settings.edit', params: { listId: list.id } }"
@ -78,6 +86,7 @@
<script setup lang="ts"> <script setup lang="ts">
import {ref, computed, watchEffect, type PropType} from 'vue' import {ref, computed, watchEffect, type PropType} from 'vue'
import BaseButton from '@/components/base/BaseButton.vue'
import Dropdown from '@/components/misc/dropdown.vue' import Dropdown from '@/components/misc/dropdown.vue'
import DropdownItem from '@/components/misc/dropdown-item.vue' import DropdownItem from '@/components/misc/dropdown-item.vue'
import Subscription from '@/components/misc/subscription.vue' import Subscription from '@/components/misc/subscription.vue'
@ -115,4 +124,4 @@ function setSubscriptionInStore(sub: ISubscription) {
listStore.setList(updatedList) listStore.setList(updatedList)
namespaceStore.setListInNamespaceById(updatedList) namespaceStore.setListInNamespaceById(updatedList)
} }
</script> </script>

View File

@ -59,10 +59,6 @@ onClickOutside(dropdown, (e: Event) => {
vertical-align: top; vertical-align: top;
} }
.dropdown-trigger {
padding: .5rem;
}
.dropdown-menu { .dropdown-menu {
min-width: 12rem; min-width: 12rem;
padding-top: 4px; padding-top: 4px;

View File

@ -1,5 +1,13 @@
<template> <template>
<dropdown> <dropdown>
<template #trigger="triggerProps">
<slot name="trigger" v-bind="triggerProps">
<BaseButton class="dropdown-trigger" @click="triggerProps.toggleOpen">
<icon icon="ellipsis-h" class="icon"/>
</BaseButton>
</slot>
</template>
<template v-if="namespace.isArchived"> <template v-if="namespace.isArchived">
<dropdown-item <dropdown-item
:to="{ name: 'namespace.settings.archive', params: { id: namespace.id } }" :to="{ name: 'namespace.settings.archive', params: { id: namespace.id } }"
@ -56,6 +64,7 @@
<script setup lang="ts"> <script setup lang="ts">
import {ref, onMounted, type PropType} from 'vue' import {ref, onMounted, type PropType} from 'vue'
import BaseButton from '@/components/base/BaseButton.vue'
import Dropdown from '@/components/misc/dropdown.vue' import Dropdown from '@/components/misc/dropdown.vue'
import DropdownItem from '@/components/misc/dropdown-item.vue' import DropdownItem from '@/components/misc/dropdown-item.vue'
import Subscription from '@/components/misc/subscription.vue' import Subscription from '@/components/misc/subscription.vue'
@ -85,3 +94,9 @@ function setSubscriptionInStore(sub: ISubscription) {
}) })
} }
</script> </script>
<style scoped lang="scss">
.dropdown-trigger {
padding: 0.5rem;
}
</style>

View File

@ -750,7 +750,6 @@ $filter-container-height: '1rem - #{$switch-view-height}';
} }
:deep(.dropdown-trigger) { :deep(.dropdown-trigger) {
cursor: pointer;
padding: .5rem; padding: .5rem;
} }