fix: Adjust UI to be more consistent with new Nextcloud compact UI

Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
Julius Härtl
2024-08-23 20:13:09 +02:00
parent 5c3098afa1
commit 5416a2b3a1
7 changed files with 60 additions and 33 deletions

View File

@@ -47,8 +47,11 @@
id="stack-add" id="stack-add"
v-click-outside="hideAddStack"> v-click-outside="hideAddStack">
<NcActions v-if="!isAddStackVisible"> <NcActions v-if="!isAddStackVisible">
<NcActionButton icon="icon-add" @click.stop="showAddStack"> <NcActionButton @click.stop="showAddStack">
{{ t('deck', 'Add list') }} {{ t('deck', 'Add list') }}
<template #icon>
<TableColumnPlusAfter :size="20" />
</template>
</NcActionButton> </NcActionButton>
</NcActions> </NcActions>
<form v-else @submit.prevent="addNewStack()"> <form v-else @submit.prevent="addNewStack()">
@@ -264,6 +267,7 @@ import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import ImageIcon from 'vue-material-design-icons/ImageMultiple.vue' import ImageIcon from 'vue-material-design-icons/ImageMultiple.vue'
import FilterIcon from 'vue-material-design-icons/Filter.vue' import FilterIcon from 'vue-material-design-icons/Filter.vue'
import FilterOffIcon from 'vue-material-design-icons/FilterOff.vue' import FilterOffIcon from 'vue-material-design-icons/FilterOff.vue'
import TableColumnPlusAfter from 'vue-material-design-icons/TableColumnPlusAfter.vue'
import ArrowCollapseVerticalIcon from 'vue-material-design-icons/ArrowCollapseVertical.vue' import ArrowCollapseVerticalIcon from 'vue-material-design-icons/ArrowCollapseVertical.vue'
import ArrowExpandVerticalIcon from 'vue-material-design-icons/ArrowExpandVertical.vue' import ArrowExpandVerticalIcon from 'vue-material-design-icons/ArrowExpandVertical.vue'
import SessionList from './SessionList.vue' import SessionList from './SessionList.vue'
@@ -287,6 +291,7 @@ export default {
FilterOffIcon, FilterOffIcon,
ArrowCollapseVerticalIcon, ArrowCollapseVerticalIcon,
ArrowExpandVerticalIcon, ArrowExpandVerticalIcon,
TableColumnPlusAfter,
SessionList, SessionList,
}, },
mixins: [labelStyle], mixins: [labelStyle],
@@ -476,7 +481,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.controls { .controls {
display: flex; display: flex;
margin: 5px; margin: calc(var(--default-grid-baseline) * 2);
height: var(--default-clickable-area); height: var(--default-clickable-area);
padding-left: var(--default-clickable-area); padding-left: var(--default-clickable-area);
@@ -487,17 +492,17 @@ export default {
h2 { h2 {
margin: 0; margin: 0;
margin-right: 10px; margin-right: 10px;
font-size: 18px;
} }
.board-bullet { .board-bullet {
display: inline-block; display: inline-block;
width: 20px; width: 16px;
height: 20px; height: 16px;
border: none; border: none;
border-radius: 50%; border-radius: 50%;
background-color: transparent; background-color: transparent;
margin: 12px; margin: var(--default-grid-baseline);
margin-left: -4px;
} }
} }

View File

@@ -57,8 +57,11 @@
</NcActionButton> </NcActionButton>
</NcActions> </NcActions>
<NcActions v-if="canEdit && !showArchived && !isArchived"> <NcActions v-if="canEdit && !showArchived && !isArchived">
<NcActionButton icon="icon-add" data-cy="action:add-card" @click.stop="showAddCard=true"> <NcActionButton data-cy="action:add-card" @click.stop="showAddCard=true">
{{ t('deck', 'Add card') }} {{ t('deck', 'Add card') }}
<template #icon>
<CardPlusOutline :size="20" />
</template>
</NcActionButton> </NcActionButton>
</NcActions> </NcActions>
</div> </div>
@@ -136,6 +139,7 @@ import ClickOutside from 'vue-click-outside'
import { mapGetters, mapState } from 'vuex' import { mapGetters, mapState } from 'vuex'
import { Container, Draggable } from 'vue-smooth-dnd' import { Container, Draggable } from 'vue-smooth-dnd'
import ArchiveIcon from 'vue-material-design-icons/Archive.vue' import ArchiveIcon from 'vue-material-design-icons/Archive.vue'
import CardPlusOutline from 'vue-material-design-icons/CardPlusOutline.vue'
import { NcActions, NcActionButton, NcModal } from '@nextcloud/vue' import { NcActions, NcActionButton, NcModal } from '@nextcloud/vue'
import { showError, showUndo } from '@nextcloud/dialogs' import { showError, showUndo } from '@nextcloud/dialogs'
@@ -153,6 +157,7 @@ export default {
Draggable, Draggable,
NcModal, NcModal,
ArchiveIcon, ArchiveIcon,
CardPlusOutline,
}, },
directives: { directives: {
ClickOutside, ClickOutside,
@@ -332,8 +337,9 @@ export default {
z-index: 100; z-index: 100;
padding-left: $card-spacing; padding-left: $card-spacing;
padding-right: $card-spacing; padding-right: $card-spacing;
margin: 6px;
cursor: grab; cursor: grab;
min-height: var(--default-clickable-area); background-color: var(--color-main-background);
// Smooth fade out of the cards at the top // Smooth fade out of the cards at the top
&:before { &:before {
@@ -354,7 +360,7 @@ export default {
} }
&--add:before { &--add:before {
height: 80px; height: 78px;
background-image: linear-gradient(180deg, var(--color-main-background) 68px, rgba(255, 255, 255, 0) 100%); background-image: linear-gradient(180deg, var(--color-main-background) 68px, rgba(255, 255, 255, 0) 100%);
body.theme--dark & { body.theme--dark & {
background-image: linear-gradient(180deg, var(--color-main-background) 68px, rgba(0, 0, 0, 0) 100%); background-image: linear-gradient(180deg, var(--color-main-background) 68px, rgba(0, 0, 0, 0) 100%);
@@ -383,9 +389,8 @@ export default {
text-overflow: ellipsis; text-overflow: ellipsis;
max-width: calc($stack-width - 60px); max-width: calc($stack-width - 60px);
border-radius: 3px; border-radius: 3px;
margin: 6px;
padding: 4px 4px; padding: 4px 4px;
font-size: 120%; font-size: var(--default-font-size);
&:focus-visible { &:focus-visible {
outline: 2px solid var(--color-border-dark); outline: 2px solid var(--color-border-dark);
@@ -394,7 +399,15 @@ export default {
} }
form { form {
margin: 2px 0; margin: -4px;
input {
font-weight: bold;
padding: 0 6px;
}
input[type="submit"] {
border-style: solid;
border-left-style: none;
}
} }
:deep { :deep {
@@ -406,20 +419,18 @@ export default {
} }
.stack__card-add { .stack__card-add {
height: var(--default-clickable-area);
flex-shrink: 0; flex-shrink: 0;
z-index: 100; z-index: 100;
display: flex; display: flex;
margin-top: 5px; margin-top: 5px;
margin-bottom: 8px;
background-color: var(--color-main-background); background-color: var(--color-main-background);
form { form {
display: flex; display: flex;
margin-left: 12px; margin-left: $stack-spacing;
margin-right: 12px; margin-right: $card-spacing + $stack-spacing + 4px;
width: 100%; width: 100%;
border: 2px solid var(--color-border); border: 2px solid var(--color-border-maxcontrast);
border-radius: var(--border-radius-large); border-radius: var(--border-radius-large);
overflow: hidden; overflow: hidden;
padding: 2px; padding: 2px;
@@ -436,6 +447,8 @@ export default {
input { input {
border: none; border: none;
margin: 0;
padding: 4px;
} }
} }

View File

@@ -247,7 +247,6 @@ export default defineComponent({
.done-info--duedate, .done-info--duedate,
.done-info--done { .done-info--done {
display: flex; display: flex;
padding-top: 10px;
&.dimmed { &.dimmed {
color: var(--color-text-maxcontrast); color: var(--color-text-maxcontrast);
} }

View File

@@ -168,13 +168,13 @@ export default {
} }
.badge-left { .badge-left {
align-self: end;
margin-bottom: 8px;
flex-basis: auto; flex-basis: auto;
flex-grow: 1; flex-grow: 1;
flex-shrink: 1; flex-shrink: 1;
flex-wrap: wrap; flex-wrap: wrap;
align-content: flex-end; align-content: flex-end;
align-items: center;
align-self: center;
gap: 3px; gap: 3px;
} }
@@ -196,6 +196,10 @@ export default {
opacity: 0; opacity: 0;
} }
.avatars:deep(button) {
margin: 0;
}
@media print { @media print {
.badges { .badges {
align-items: flex-start; align-items: flex-start;

View File

@@ -19,10 +19,10 @@
</div> </div>
<CardCover v-if="showCardCover" :card-id="card.id" /> <CardCover v-if="showCardCover" :card-id="card.id" />
<div class="card-upper"> <div class="card-upper">
<h3 v-if="inlineEditingBlocked" dir="auto"> <h4 v-if="inlineEditingBlocked" dir="auto">
{{ card.title }} {{ card.title }}
</h3> </h4>
<h3 v-else <h4 v-else
dir="auto" dir="auto"
class="editable" class="editable"
:aria-label="t('deck', 'Edit card title')"> :aria-label="t('deck', 'Edit card title')">
@@ -35,7 +35,7 @@
@click.stop @click.stop
@keyup.esc="cancelEdit" @keyup.esc="cancelEdit"
@keyup.stop>{{ card.title }}</span> @keyup.stop>{{ card.title }}</span>
</h3> </h4>
<DueDate v-if="compactMode" :card="card" /> <DueDate v-if="compactMode" :card="card" />
<CardMenu v-if="showMenuAtTitle" :card="card" class="right card-menu" /> <CardMenu v-if="showMenuAtTitle" :card="card" class="right card-menu" />
@@ -294,7 +294,7 @@ export default {
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 6px; gap: var(--default-grid-baseline);
&:deep(*) { &:deep(*) {
cursor: pointer; cursor: pointer;
@@ -314,7 +314,8 @@ export default {
.card-upper { .card-upper {
display: flex; display: flex;
h3 { h4 {
font-weight: normal;
margin: 0; margin: 0;
padding: 6px; padding: 6px;
flex-grow: 1; flex-grow: 1;

View File

@@ -9,9 +9,13 @@
margin-top: 10px; margin-top: 10px;
&--icon { &--icon {
width: 38px; width: var(--default-clickable-area);
padding-top: 12px; height: var(--default-clickable-area);
flex-shrink: 0; flex-shrink: 0;
display: flex;
align-items: center;
align-content: center;
justify-content: center;
} }
&--selector { &--selector {
@@ -21,5 +25,6 @@
&--content { &--content {
display: flex; display: flex;
flex-grow: 1; flex-grow: 1;
align-items: center;
} }
} }

View File

@@ -2,8 +2,8 @@
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later * SPDX-License-Identifier: AGPL-3.0-or-later
*/ */
$card-spacing: 16px; $card-spacing: 8px;
$card-padding: 8px; $card-padding: 4px;
$stack-spacing: 12px; $stack-spacing: 12px;
$stack-width: 280px; $stack-width: 280px;
$board-spacing: 16px; $board-spacing: 16px;