mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
94 lines
1.6 KiB
Vue
94 lines
1.6 KiB
Vue
<!-- Copyright (C) 2012-2026 Zammad Foundation, https://zammad-foundation.org/ -->
|
|
|
|
<script setup lang="ts">
|
|
import { useViewTransition } from './useViewTransition.ts'
|
|
|
|
const { viewTransition } = useViewTransition()
|
|
</script>
|
|
|
|
<template>
|
|
<main class="grid flex-1 overflow-hidden">
|
|
<Transition :name="viewTransition">
|
|
<slot></slot>
|
|
</Transition>
|
|
</main>
|
|
</template>
|
|
|
|
<style scoped>
|
|
/* First example idea from: https://codesandbox.io/s/zq5mw2zk9x */
|
|
main {
|
|
grid-template: 'main';
|
|
}
|
|
|
|
main > * {
|
|
grid-area: main; /* Transition: make sections overlap on same cell */
|
|
}
|
|
|
|
/* next */
|
|
|
|
.next-leave-to {
|
|
animation: leaveToLeft 300ms both cubic-bezier(0.19, 0.61, 0.44, 1);
|
|
z-index: 0;
|
|
}
|
|
|
|
.next-enter-to {
|
|
animation: enterFromRight 400ms both cubic-bezier(0.19, 0.61, 0.44, 1);
|
|
z-index: 1;
|
|
}
|
|
|
|
@keyframes leaveToLeft {
|
|
from {
|
|
transform: translateX(0);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(-25%);
|
|
filter: brightness(0.4);
|
|
}
|
|
}
|
|
|
|
@keyframes enterFromRight {
|
|
from {
|
|
transform: translateX(100%);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
/* prev */
|
|
|
|
.prev-leave-to {
|
|
animation: leaveToRight 400ms both cubic-bezier(0.19, 0.61, 0.44, 1);
|
|
z-index: 1;
|
|
}
|
|
|
|
.prev-enter-to {
|
|
animation: enterFromLeft 300ms both cubic-bezier(0.19, 0.61, 0.44, 1);
|
|
z-index: 0;
|
|
}
|
|
|
|
@keyframes enterFromLeft {
|
|
from {
|
|
transform: translateX(-25%);
|
|
filter: brightness(0.5);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(0);
|
|
}
|
|
}
|
|
|
|
@keyframes leaveToRight {
|
|
from {
|
|
transform: translateX(0);
|
|
filter: brightness(0.9);
|
|
}
|
|
|
|
to {
|
|
transform: translateX(100%);
|
|
filter: brightness(0.8);
|
|
}
|
|
}
|
|
</style>
|