default.vue 862 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <script setup lang="ts">
  2. import { ref } from 'vue';
  3. import { NModal } from 'naive-ui';
  4. import { useScroll } from '@/composables/useScroll';
  5. const { scrollY } = useScroll();
  6. const { locale } = useI18n();
  7. const drawerState = ref(false);
  8. const showModal = ref(false);
  9. const type = computed(() => scrollY.value > 100 ? 'down' : 'up');
  10. const changeDrawerState = () => {
  11. drawerState.value = !drawerState.value;
  12. }
  13. const changeModalState = () => {
  14. showModal.value = true;
  15. }
  16. </script>
  17. <template>
  18. <section :class="['layout-viewport', locale]">
  19. <TheHeader @onDrawer="changeDrawerState" @onModal="changeModalState" :state="type" />
  20. <slot />
  21. <TheFooter />
  22. <TheDrawer v-model="drawerState" />
  23. <BaseDialog v-model="showModal"></BaseDialog>
  24. </section>
  25. </template>
  26. <style scoped lang="scss">
  27. .layout-viewport {
  28. position: relative;
  29. }
  30. </style>