123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <!-- Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/ -->
- <script setup lang="ts">
- import useViewTransition from './composable'
- const { viewTransition } = useViewTransition()
- </script>
- <template>
- <main class="grid flex-1 overflow-hidden">
- <transition class="z-10 flex-auto" :name="viewTransition">
- <slot></slot>
- </transition>
- </main>
- </template>
- <style scoped>
- /* TODO: Styles needs to be aligned/beautified. */
- /* Example 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>
|