perf: improve modal and drawer component documentation and fix known problems (#4264)

* feat: improve modal and drawer component documentation and fix known problems

* chore: update ci
This commit is contained in:
Vben
2024-08-28 22:26:35 +08:00
committed by GitHub
parent 84816ef769
commit 36e7ca19a1
54 changed files with 882 additions and 176 deletions

View File

@@ -0,0 +1,16 @@
<script lang="ts" setup>
import { VBEN_DOC_URL } from '@vben/constants';
import { openWindow } from '@vben/utils';
import { Button } from 'ant-design-vue';
const props = defineProps<{ path: string }>();
function handleClick() {
openWindow(VBEN_DOC_URL + props.path);
}
</script>
<template>
<Button type="link" @click="handleClick">查看组件文档</Button>
</template>

View File

@@ -5,6 +5,8 @@ import { useVbenDrawer } from '@vben/common-ui';
import { Button, message } from 'ant-design-vue';
const list = ref<number[]>([]);
const [Drawer, drawerApi] = useVbenDrawer({
onCancel() {
drawerApi.close();
@@ -13,14 +15,19 @@ const [Drawer, drawerApi] = useVbenDrawer({
message.info('onConfirm');
// drawerApi.close();
},
onOpenChange(isOpen) {
if (isOpen) {
handleUpdate(10);
}
},
});
const list = ref<number[]>([]);
list.value = Array.from({ length: 10 }, (_v, k) => k + 1);
function handleUpdate() {
list.value = Array.from({ length: 6 }, (_v, k) => k + 1);
function handleUpdate(len: number) {
drawerApi.setState({ loading: true });
setTimeout(() => {
list.value = Array.from({ length: len }, (_v, k) => k + 1);
drawerApi.setState({ loading: false });
}, 2000);
}
</script>
<template>
@@ -34,7 +41,7 @@ function handleUpdate() {
</div>
<template #prepend-footer>
<Button type="link" @click="handleUpdate">点击更新数据</Button>
<Button type="link" @click="handleUpdate(6)">点击更新数据</Button>
</template>
</Drawer>
</template>

View File

@@ -11,14 +11,6 @@ const [Drawer, drawerApi] = useVbenDrawer({
message.info('onConfirm');
// drawerApi.close();
},
onOpenChange(isOpen) {
if (isOpen) {
drawerApi.setState({ loading: true });
setTimeout(() => {
drawerApi.setState({ loading: false });
}, 2000);
}
},
});
</script>
<template>

View File

@@ -3,18 +3,18 @@ import { Page, useVbenDrawer } from '@vben/common-ui';
import { Button, Card } from 'ant-design-vue';
import DocButton from '../doc-button.vue';
import AutoHeightDemo from './auto-height-demo.vue';
import BaseDemo from './base-demo.vue';
import DynamicDemo from './dynamic-demo.vue';
import SharedDataDemo from './shared-data-demo.vue';
const [BaseDrawer, baseDrawerApi] = useVbenDrawer({
// 接抽离的组件
// 接抽离的组件
connectedComponent: BaseDemo,
});
const [AutoHeightDrawer, autoHeightDrawerApi] = useVbenDrawer({
// 链接抽离的组件
connectedComponent: AutoHeightDemo,
});
@@ -57,6 +57,9 @@ function openSharedDrawer() {
description="抽屉组件通常用于在当前页面上显示一个覆盖层,用以展示重要信息或提供用户交互界面。"
title="抽屉组件示例"
>
<template #extra>
<DocButton path="/components/common-ui/vben-drawer" />
</template>
<BaseDrawer />
<AutoHeightDrawer />
<DynamicDrawer />

View File

@@ -5,24 +5,31 @@ import { useVbenModal } from '@vben/common-ui';
import { Button, message } from 'ant-design-vue';
const list = ref<number[]>([]);
const [Modal, modalApi] = useVbenModal({
onCancel() {
modalApi.close();
},
onConfirm() {
message.info('onConfirm');
// modalApi.close();
},
onOpenChange(isOpen) {
if (isOpen) {
handleUpdate(10);
}
},
});
const list = ref<number[]>([]);
list.value = Array.from({ length: 10 }, (_v, k) => k + 1);
function handleUpdate() {
list.value = Array.from({ length: 6 }, (_v, k) => k + 1);
function handleUpdate(len: number) {
modalApi.setState({ loading: true });
setTimeout(() => {
list.value = Array.from({ length: len }, (_v, k) => k + 1);
modalApi.setState({ loading: false });
}, 2000);
}
</script>
<template>
<Modal title="自动计算高度">
<div
@@ -32,9 +39,8 @@ function handleUpdate() {
>
{{ item }}
</div>
<template #prepend-footer>
<Button type="link" @click="handleUpdate">点击更新数据</Button>
<Button type="link" @click="handleUpdate(6)">点击更新数据</Button>
</template>
</Modal>
</template>

View File

@@ -11,14 +11,6 @@ const [Modal, modalApi] = useVbenModal({
message.info('onConfirm');
// modalApi.close();
},
onOpenChange(isOpen) {
if (isOpen) {
modalApi.setState({ loading: true });
setTimeout(() => {
modalApi.setState({ loading: false });
}, 2000);
}
},
});
</script>
<template>

View File

@@ -3,6 +3,7 @@ import { Page, useVbenModal } from '@vben/common-ui';
import { Button, Card } from 'ant-design-vue';
import DocButton from '../doc-button.vue';
import AutoHeightDemo from './auto-height-demo.vue';
import BaseDemo from './base-demo.vue';
import DragDemo from './drag-demo.vue';
@@ -10,7 +11,7 @@ import DynamicDemo from './dynamic-demo.vue';
import SharedDataDemo from './shared-data-demo.vue';
const [BaseModal, baseModalApi] = useVbenModal({
// 接抽离的组件
// 接抽离的组件
connectedComponent: BaseDemo,
});
@@ -62,9 +63,12 @@ function handleUpdateTitle() {
<template>
<Page
description="弹窗组件常用于在不离开当前页面的情况下,显示额外的信息、表单或操作提示。"
description="弹窗组件常用于在不离开当前页面的情况下,显示额外的信息、表单或操作提示更多api请查看组件文档。"
title="弹窗组件示例"
>
<template #extra>
<DocButton path="/components/common-ui/vben-modal" />
</template>
<BaseModal />
<AutoHeightModal />
<DragModal />