refactor(@vben/playground): type popup data consumers

This commit is contained in:
Dream
2026-08-05 09:48:27 +08:00
parent 21d9132703
commit 3cbb1e8411
11 changed files with 78 additions and 29 deletions

View File

@@ -7,6 +7,10 @@ defineOptions({
name: 'FormDrawerDemo',
});
interface FormDrawerData {
values?: Record<string, unknown>;
}
const [Form, formApi] = useVbenForm({
schema: [
{
@@ -30,7 +34,7 @@ const [Form, formApi] = useVbenForm({
],
showDefaultActions: false,
});
const [Drawer, drawerApi] = useVbenDrawer({
const [Drawer, drawerApi] = useVbenDrawer<FormDrawerData>({
onCancel() {
drawerApi.close();
},
@@ -40,14 +44,16 @@ const [Drawer, drawerApi] = useVbenDrawer({
},
onOpenChange(isOpen: boolean) {
if (isOpen) {
const { values } = drawerApi.getData<Record<string, any>>();
if (values) {
formApi.setValues(values);
const data = drawerApi.getData();
if (data?.values) {
formApi.setValues(data.values);
}
}
},
title: '内嵌表单示例',
});
defineExpose({ drawerApi });
</script>
<template>
<Drawer>

View File

@@ -5,9 +5,14 @@ import { useVbenDrawer } from '@vben/common-ui';
import { message } from 'antdv-next';
const data = ref();
interface SharedData {
content: string;
payload: string;
}
const [Drawer, drawerApi] = useVbenDrawer({
const data = ref<SharedData>();
const [Drawer, drawerApi] = useVbenDrawer<SharedData>({
onCancel() {
drawerApi.close();
},
@@ -17,10 +22,12 @@ const [Drawer, drawerApi] = useVbenDrawer({
},
onOpenChange(isOpen: boolean) {
if (isOpen) {
data.value = drawerApi.getData<Record<string, any>>();
data.value = drawerApi.getData();
}
},
});
defineExpose({ drawerApi });
</script>
<template>
<Drawer title="数据共享示例">

View File

@@ -9,6 +9,10 @@ defineOptions({
name: 'FormModelDemo',
});
interface FormModalData {
values?: Record<string, unknown>;
}
const [Form, formApi] = useVbenForm({
handleSubmit: onSubmit,
schema: [
@@ -48,7 +52,7 @@ const [Form, formApi] = useVbenForm({
showDefaultActions: false,
});
const [Modal, modalApi] = useVbenModal({
const [Modal, modalApi] = useVbenModal<FormModalData>({
fullscreenButton: false,
onCancel() {
modalApi.close();
@@ -59,15 +63,17 @@ const [Modal, modalApi] = useVbenModal({
},
onOpenChange(isOpen: boolean) {
if (isOpen) {
const { values } = modalApi.getData<Record<string, any>>();
if (values) {
formApi.setValues(values);
const data = modalApi.getData();
if (data?.values) {
formApi.setValues(data.values);
}
}
},
title: '内嵌表单示例',
});
defineExpose({ modalApi });
function onSubmit(values: Record<string, any>) {
message.loading({
content: '正在提交中...',

View File

@@ -5,9 +5,14 @@ import { useVbenModal } from '@vben/common-ui';
import { message } from 'antdv-next';
const data = ref();
interface SharedData {
content: string;
payload: string;
}
const [Modal, modalApi] = useVbenModal({
const data = ref<SharedData>();
const [Modal, modalApi] = useVbenModal<SharedData>({
onCancel() {
modalApi.close();
},
@@ -17,10 +22,12 @@ const [Modal, modalApi] = useVbenModal({
},
onOpenChange(isOpen: boolean) {
if (isOpen) {
data.value = modalApi.getData<Record<string, any>>();
data.value = modalApi.getData();
}
},
});
defineExpose({ modalApi });
</script>
<template>
<Modal title="数据共享示例">