From 8c44ed83e6530f67cc923a5e6d1a26c14575884a Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Sat, 12 Nov 2022 19:24:02 +0100 Subject: [PATCH] feat: use transition component everywhere --- src/components/date/datepickerWithRange.vue | 2 +- src/components/home/contentAuth.vue | 4 +- src/components/input/datepicker.vue | 5 +- src/components/input/multiselect.vue | 6 +-- src/components/list/ListWrapper.vue | 5 +- src/components/list/partials/filter-popup.vue | 2 +- src/components/misc/CustomTransition.vue | 34 ++++++++++++- src/components/misc/dropdown.vue | 5 +- src/components/misc/modal.vue | 5 +- src/components/misc/ready.vue | 5 +- .../notifications/notifications.vue | 5 +- .../quick-actions/quick-actions.vue | 2 +- src/components/sharing/linkSharing.vue | 28 +++++----- src/components/sharing/userTeam.vue | 36 ++++++------- src/components/tasks/TaskForm.vue | 6 ++- src/components/tasks/partials/attachments.vue | 6 +-- .../tasks/partials/checklist-summary.vue | 2 - src/components/tasks/partials/comments.vue | 41 +++++++-------- src/components/tasks/partials/description.vue | 5 +- src/components/tasks/partials/heading.vue | 5 +- .../tasks/partials/quick-add-magic.vue | 2 +- .../tasks/partials/relatedTasks.vue | 9 ++-- .../tasks/partials/singleTaskInList.vue | 5 +- src/styles/common-imports.scss | 2 - src/styles/mixins.scss | 12 ----- src/views/labels/ListLabels.vue | 2 +- src/views/list/ListKanban.vue | 26 ++++------ src/views/list/settings/background.vue | 6 ++- src/views/tasks/TaskDetailView.vue | 4 +- src/views/teams/EditTeam.vue | 51 +++++++++---------- 30 files changed, 163 insertions(+), 165 deletions(-) delete mode 100644 src/styles/mixins.scss diff --git a/src/components/date/datepickerWithRange.vue b/src/components/date/datepickerWithRange.vue index 8546c143d..7f2bb740d 100644 --- a/src/components/date/datepickerWithRange.vue +++ b/src/components/date/datepickerWithRange.vue @@ -54,8 +54,8 @@

\ No newline at end of file diff --git a/src/components/input/datepicker.vue b/src/components/input/datepicker.vue index f8b55eabb..bc72ee73b 100644 --- a/src/components/input/datepicker.vue +++ b/src/components/input/datepicker.vue @@ -4,7 +4,7 @@ {{ date === null ? chooseDateLabel : formatDateShort(date) }} - +
-
+ @@ -94,6 +94,7 @@ import flatPickr from 'vue-flatpickr-component' import 'flatpickr/dist/flatpickr.css' import BaseButton from '@/components/base/BaseButton.vue' +import CustomTransition from '@/components/misc/CustomTransition.vue' import {formatDate, formatDateShort} from '@/helpers/time/formatDate' import {calculateDayInterval} from '@/helpers/time/calculateDayInterval' diff --git a/src/components/input/multiselect.vue b/src/components/input/multiselect.vue index 28759b5b2..b3b0c291d 100644 --- a/src/components/input/multiselect.vue +++ b/src/components/input/multiselect.vue @@ -36,7 +36,7 @@ - +
-
- + @@ -90,6 +89,7 @@ import {useI18n} from 'vue-i18n' import {closeWhenClickedOutside} from '@/helpers/closeWhenClickedOutside' import BaseButton from '@/components/base/BaseButton.vue' +import CustomTransition from '@/components/misc/CustomTransition.vue' function elementInResults(elem: string | any, label: string, query: string): boolean { // Don't make create available if we have an exact match in our search results. diff --git a/src/components/list/ListWrapper.vue b/src/components/list/ListWrapper.vue index 8f81b4360..f91ec4560 100644 --- a/src/components/list/ListWrapper.vue +++ b/src/components/list/ListWrapper.vue @@ -44,11 +44,11 @@ - + {{ $t('list.archived') }} - + @@ -60,6 +60,7 @@ import {useRoute} from 'vue-router' import BaseButton from '@/components/base/BaseButton.vue' import Message from '@/components/misc/message.vue' +import CustomTransition from '@/components/misc/CustomTransition.vue' import ListModel from '@/models/list' import ListService from '@/services/list' diff --git a/src/components/list/partials/filter-popup.vue b/src/components/list/partials/filter-popup.vue index 30cc98cab..66e130149 100644 --- a/src/components/list/partials/filter-popup.vue +++ b/src/components/list/partials/filter-popup.vue @@ -14,11 +14,11 @@ {{ $t('filters.title') }} - + @@ -34,4 +34,34 @@ $flash-background-duration: 750ms; } } } + +.fade-enter-active, +.fade-leave-active { + transition: opacity $transition-duration; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + +.width-enter-active, +.width-leave-active { + transition: width $transition-duration; +} + +.width-enter-from, +.width-leave-to { + width: 0; +} + +.modal-enter, +.modal-leave-active { + opacity: 0; +} + +.modal-enter .modal-container, +.modal-leave-active .modal-container { + transform: scale(0.9); +} \ No newline at end of file diff --git a/src/components/misc/dropdown.vue b/src/components/misc/dropdown.vue index f44465de6..5b0fcdd69 100644 --- a/src/components/misc/dropdown.vue +++ b/src/components/misc/dropdown.vue @@ -6,13 +6,13 @@ - + - + @@ -21,6 +21,7 @@ import {ref, type PropType} from 'vue' import {onClickOutside} from '@vueuse/core' import type {IconProp} from '@fortawesome/fontawesome-svg-core' +import CustomTransition from '@/components/misc/CustomTransition.vue' import BaseButton from '@/components/base/BaseButton.vue' defineProps({ diff --git a/src/components/misc/modal.vue b/src/components/misc/modal.vue index 18eec52a4..5c1365e96 100644 --- a/src/components/misc/modal.vue +++ b/src/components/misc/modal.vue @@ -1,7 +1,7 @@ @@ -70,6 +70,7 @@ export default { - - \ No newline at end of file + \ No newline at end of file diff --git a/src/components/tasks/TaskForm.vue b/src/components/tasks/TaskForm.vue index 972fc1500..1dbe340cb 100644 --- a/src/components/tasks/TaskForm.vue +++ b/src/components/tasks/TaskForm.vue @@ -3,7 +3,7 @@ @submit.prevent="createTask" class="add-new-task" > - + - + {{ $t('task.new') }} @@ -24,6 +24,8 @@ import {nextTick, ref} from 'vue' import type {ITask} from '@/modelTypes/ITask' +import CustomTransition from '@/components/misc/CustomTransition.vue' + const emit = defineEmits<{ (e: 'create-task', title: string): Promise }>() diff --git a/src/components/tasks/partials/attachments.vue b/src/components/tasks/partials/attachments.vue index 181b5e3bc..94ca4975a 100644 --- a/src/components/tasks/partials/attachments.vue +++ b/src/components/tasks/partials/attachments.vue @@ -130,7 +130,7 @@ @@ -148,7 +148,7 @@ @@ -432,6 +432,4 @@ async function setCoverImage(attachment: IAttachment | null) { border-radius: 4px; font-size: .75rem; } - -@include modal-transition(); \ No newline at end of file diff --git a/src/components/tasks/partials/checklist-summary.vue b/src/components/tasks/partials/checklist-summary.vue index 69f1dd2e9..625c5480b 100644 --- a/src/components/tasks/partials/checklist-summary.vue +++ b/src/components/tasks/partials/checklist-summary.vue @@ -49,14 +49,12 @@ const label = computed(() => { align-items: center; padding-left: .5rem; font-size: .9rem; - } svg { transform: rotate(-90deg); transition: stroke-dashoffset 0.35s; margin-right: .25rem; - } circle { diff --git a/src/components/tasks/partials/comments.vue b/src/components/tasks/partials/comments.vue index dd07f5b88..f3180c7b4 100644 --- a/src/components/tasks/partials/comments.vue +++ b/src/components/tasks/partials/comments.vue @@ -43,7 +43,7 @@ > ยท {{ $t('task.comment.edited', {date: formatDateSince(c.updated)}) }} - +
- + {{ $t('task.comment.creating') }} - +
- - + + - - - + +
@@ -155,6 +153,7 @@ import {ref, reactive, computed, shallowReactive, watch, nextTick} from 'vue' import {useI18n} from 'vue-i18n' +import CustomTransition from '@/components/misc/CustomTransition.vue' import Editor from '@/components/input/AsyncEditor' import TaskCommentService from '@/services/taskComment' @@ -351,6 +350,4 @@ async function deleteComment(commentToDelete: ITaskComment) { .media-content { width: calc(100% - 48px - 2rem); } - -@include modal-transition(); \ No newline at end of file diff --git a/src/components/tasks/partials/description.vue b/src/components/tasks/partials/description.vue index d443d2380..00aab22ec 100644 --- a/src/components/tasks/partials/description.vue +++ b/src/components/tasks/partials/description.vue @@ -5,7 +5,7 @@ {{ $t('task.attributes.description') }} - + {{ $t('misc.saving') }} @@ -14,7 +14,7 @@ {{ $t('misc.saved') }} - + import {ref,computed, watch, type PropType} from 'vue' +import CustomTransition from '@/components/misc/CustomTransition.vue' import Editor from '@/components/input/AsyncEditor' import type {ITask} from '@/modelTypes/ITask' diff --git a/src/components/tasks/partials/heading.vue b/src/components/tasks/partials/heading.vue index 5fab34b74..4ee2639ab 100644 --- a/src/components/tasks/partials/heading.vue +++ b/src/components/tasks/partials/heading.vue @@ -17,7 +17,7 @@ > {{ task.title.trim() }} - + {{ $t('misc.saved') }} - +
@@ -41,6 +41,7 @@ import {ref, computed, type PropType} from 'vue' import {useRouter} from 'vue-router' import BaseButton from '@/components/base/BaseButton.vue' +import CustomTransition from '@/components/misc/CustomTransition.vue' import ColorBubble from '@/components/misc/colorBubble.vue' import Done from '@/components/misc/Done.vue' diff --git a/src/components/tasks/partials/quick-add-magic.vue b/src/components/tasks/partials/quick-add-magic.vue index a93db2fc3..187acd67b 100644 --- a/src/components/tasks/partials/quick-add-magic.vue +++ b/src/components/tasks/partials/quick-add-magic.vue @@ -5,8 +5,8 @@ {{ $t('task.quickAddMagic.what') }}

@@ -163,6 +163,7 @@ import {RELATION_KINDS, RELATION_KIND, type IRelationKind} from '@/types/IRelati import TaskRelationService from '@/services/taskRelation' import TaskRelationModel from '@/models/taskRelation' +import CustomTransition from '@/components/misc/CustomTransition.vue' import BaseButton from '@/components/base/BaseButton.vue' import Multiselect from '@/components/input/multiselect.vue' import Fancycheckbox from '@/components/input/fancycheckbox.vue' @@ -442,6 +443,4 @@ async function toggleTaskDone(task: ITask) { padding: 0; height: 18px; // The exact height of the checkbox in the container } - -@include modal-transition(); \ No newline at end of file diff --git a/src/components/tasks/partials/singleTaskInList.vue b/src/components/tasks/partials/singleTaskInList.vue index 7d2a4d581..844017ec8 100644 --- a/src/components/tasks/partials/singleTaskInList.vue +++ b/src/components/tasks/partials/singleTaskInList.vue @@ -74,9 +74,9 @@ - {{ $t('task.detail.due', {at: formatDateSince(task.dueDate)}) }} - + - + @@ -140,6 +140,7 @@ import User from '@/components/misc/user.vue' import BaseButton from '@/components/base/BaseButton.vue' import Fancycheckbox from '@/components/input/fancycheckbox.vue' import ColorBubble from '@/components/misc/colorBubble.vue' +import CustomTransition from '@/components/misc/CustomTransition.vue' import TaskService from '@/services/task' diff --git a/src/styles/common-imports.scss b/src/styles/common-imports.scss index c4e18cfec..002745792 100644 --- a/src/styles/common-imports.scss +++ b/src/styles/common-imports.scss @@ -16,8 +16,6 @@ // since $tablet is defined by bulma we can just define it after importing the utilities $mobile: math.div($tablet, 2); -@import "mixins"; - $family-sans-serif: 'Open Sans', Helvetica, Arial, sans-serif; $vikunja-font: 'Quicksand', sans-serif; diff --git a/src/styles/mixins.scss b/src/styles/mixins.scss deleted file mode 100644 index 687355e73..000000000 --- a/src/styles/mixins.scss +++ /dev/null @@ -1,12 +0,0 @@ -/* Transitions */ -@mixin modal-transition() { - .modal-enter, - .modal-leave-active { - opacity: 0; - } - - .modal-enter .modal-container, - .modal-leave-active .modal-container { - transform: scale(0.9); - } -} \ No newline at end of file diff --git a/src/views/labels/ListLabels.vue b/src/views/labels/ListLabels.vue index 7a8957625..07fccae1d 100644 --- a/src/views/labels/ListLabels.vue +++ b/src/views/labels/ListLabels.vue @@ -94,9 +94,9 @@
diff --git a/src/views/list/ListKanban.vue b/src/views/list/ListKanban.vue index c59411a53..979c26ad0 100644 --- a/src/views/list/ListKanban.vue +++ b/src/views/list/ListKanban.vue @@ -206,20 +206,18 @@
- - - + + - - - + +
@@ -792,6 +790,4 @@ $filter-container-height: '1rem - #{$switch-view-height}'; .move-card-leave-active { display: none; } - -@include modal-transition(); \ No newline at end of file diff --git a/src/views/list/settings/background.vue b/src/views/list/settings/background.vue index 0a9c89f4f..b74e037fb 100644 --- a/src/views/list/settings/background.vue +++ b/src/views/list/settings/background.vue @@ -43,7 +43,7 @@ :key="im.id" :style="{'background-image': `url(${backgroundBlurHashes[im.id]})`}" > - + - + @@ -1007,8 +1007,6 @@ line-height: 1; padding-left: .25rem; } -@include modal-transition(); - .detail-content { @media print { width: 100% !important; diff --git a/src/views/teams/EditTeam.vue b/src/views/teams/EditTeam.vue index 247812f63..94072afae 100644 --- a/src/views/teams/EditTeam.vue +++ b/src/views/teams/EditTeam.vue @@ -149,35 +149,32 @@ - - - + + + + + - - - - - - + + - - - + +
@@ -339,6 +336,4 @@ async function leave() { padding: 0; } } - -@include modal-transition(); \ No newline at end of file