Skip to content

Commit df12bc1

Browse files
committed
chore: basic page
1 parent 3edc0b5 commit df12bc1

File tree

4 files changed

+46
-10
lines changed

4 files changed

+46
-10
lines changed

packages/effects/common-ui/src/page/page-footer.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,9 @@ defineOptions({
55
</script>
66

77
<template>
8-
<div>page-footer</div>
8+
<div
9+
class="bg-card align-center absolute bottom-0 left-0 right-0 flex px-6 py-4"
10+
>
11+
<slot></slot>
12+
</div>
913
</template>
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
<script setup lang="ts">
2+
import type { PageHeaderProps } from './page.ts';
3+
24
defineOptions({
35
name: 'PageHeader',
46
});
7+
8+
const props = defineProps<PageHeaderProps>();
59
</script>
610

711
<template>
8-
<div>page-header</div>
12+
<div class="bg-card px-6 py-4">
13+
<div class="flex justify-between text-lg font-bold">
14+
{{ props.title }}
15+
</div>
16+
<div class="pt-3">
17+
<slot></slot>
18+
</div>
19+
</div>
920
</template>
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1-
interface Props {
2-
title: string;
1+
interface PageHeaderProps {
2+
title?: string;
33
}
44

5-
export type { Props };
5+
interface Props extends PageHeaderProps {
6+
headerSticky?: boolean;
7+
showFooter?: boolean;
8+
showHeader?: boolean;
9+
}
10+
11+
export type { PageHeaderProps, Props };

packages/effects/common-ui/src/page/page.vue

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,28 @@ defineOptions({
88
name: 'Page',
99
});
1010
11-
const props = withDefaults(defineProps<Props>(), {});
11+
const props = withDefaults(defineProps<Props>(), {
12+
headerSticky: false,
13+
showFooter: false,
14+
showHeader: true,
15+
title: '',
16+
});
1217
</script>
1318

1419
<template>
15-
<div>
16-
<PageHeader />
17-
<slot>{{ props.title }}</slot>
18-
<PageFooter />
20+
<div class="relative h-full">
21+
<PageHeader v-if="props.showHeader" :title="props.title">
22+
<template #default>
23+
<slot name="headerContent"></slot>
24+
</template>
25+
</PageHeader>
26+
<div class="m-4 overflow-hidden">
27+
<slot></slot>
28+
</div>
29+
<PageFooter v-if="props.showFooter">
30+
<template #default>
31+
<slot name="footerContent"></slot>
32+
</template>
33+
</PageFooter>
1934
</div>
2035
</template>

0 commit comments

Comments
 (0)