1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <script setup lang="ts">
- import { ref } from 'vue'
- import { useLockScreen } from '../composables/lock-screen'
- import VPFullScreenMenu from './full-screen/vp-menu.vue'
- import VPFullScreenTranslation from './full-screen/vp-translation.vue'
- import VPFullScreenThemeToggler from './full-screen/vp-theme-toggler.vue'
- defineProps<{
- fullScreen: boolean
- }>()
- const { lock, cleanup } = useLockScreen()
- const fullscreen = ref()
- </script>
- <template>
- <Transition name="el-fade-in" @enter="lock" @after-leave="cleanup">
- <div v-if="fullScreen" ref="fullscreen">
- <div class="full-screen-container">
- <VPFullScreenMenu @close="$emit('close')" />
- <VPFullScreenTranslation @close="$emit('close')" />
- <VPFullScreenThemeToggler />
- </div>
- </div>
- </Transition>
- </template>
- <style lang="scss" scoped>
- .full-screen {
- position: fixed;
- top: var(--nav-height);
- right: 0;
- bottom: 0;
- left: 0;
- padding: 0 32px;
- width: 100%;
- background-color: var(--bg-color);
- transition: background-color 0.5s;
- overflow-y: auto;
- &.el-fade-in-enter-active,
- &.el-fade-in-leave-active {
- .full-screen-container {
- transition: transform var(--el-transition-duration)
- var(--el-transition-function-ease-in-out-bezier);
- }
- }
- &.el-fade-in-enter-from,
- &.el-fade-in-leave-to {
- .full-screen-container {
- transform: translateY(-8px);
- }
- }
- .full-screen-container {
- margin: 0 auto;
- padding: 24px 0 96px;
- max-width: 18rem;
- }
- }
- </style>
|