DemoPage.vue 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <script setup lang="ts">
  2. import Text from '../basic/Text.vue';
  3. import CommonRoot from '../dialog/CommonRoot.vue';
  4. import FlexCol from '../layout/FlexCol.vue';
  5. import StatusBarSpace from '../layout/space/StatusBarSpace.vue';
  6. import NavBar from '../nav/NavBar.vue';
  7. const props = defineProps<{
  8. title?: string,
  9. desc?: string,
  10. isHome?: boolean,
  11. }>();
  12. </script>
  13. <template>
  14. <CommonRoot>
  15. <FlexCol innerClass="nana-demo-page" backgroundColor="background.page">
  16. <StatusBarSpace />
  17. <NavBar :title="title" leftButton="back" :showLeftButton="!isHome" />
  18. <view v-if="title || desc" class="header">
  19. <Text color="primary" fontConfig="h3" :text="title" />
  20. <Text v-if="desc" color="text.second" :text="desc" />
  21. </view>
  22. <slot />
  23. </FlexCol>
  24. </CommonRoot>
  25. </template>
  26. <style lang="scss">
  27. .nana-demo-page {
  28. /* #ifdef H5 */
  29. min-height: calc(100vh - 44px - env(safe-area-inset-top));
  30. /* #endif */
  31. /* #ifndef H5 */
  32. min-height: calc(100vh - 44px);
  33. /* #endif */
  34. & > .header {
  35. display: flex;
  36. flex-direction: column;
  37. margin: 40rpx 40rpx;
  38. flex-shrink: 0;
  39. }
  40. }
  41. </style>