refactor(@vben/playground): type popup data consumers
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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="数据共享示例">
|
||||
|
||||
@@ -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: '正在提交中...',
|
||||
|
||||
@@ -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="数据共享示例">
|
||||
|
||||
Reference in New Issue
Block a user