refactor(@vben/playground): type popup data consumers
This commit is contained in:
@@ -7,6 +7,10 @@ defineOptions({
|
|||||||
name: 'FormDrawerDemo',
|
name: 'FormDrawerDemo',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
interface FormDrawerData {
|
||||||
|
values?: Record<string, unknown>;
|
||||||
|
}
|
||||||
|
|
||||||
const [Form, formApi] = useVbenForm({
|
const [Form, formApi] = useVbenForm({
|
||||||
schema: [
|
schema: [
|
||||||
{
|
{
|
||||||
@@ -30,7 +34,7 @@ const [Form, formApi] = useVbenForm({
|
|||||||
],
|
],
|
||||||
showDefaultActions: false,
|
showDefaultActions: false,
|
||||||
});
|
});
|
||||||
const [Drawer, drawerApi] = useVbenDrawer({
|
const [Drawer, drawerApi] = useVbenDrawer<FormDrawerData>({
|
||||||
onCancel() {
|
onCancel() {
|
||||||
drawerApi.close();
|
drawerApi.close();
|
||||||
},
|
},
|
||||||
@@ -40,14 +44,16 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
},
|
},
|
||||||
onOpenChange(isOpen: boolean) {
|
onOpenChange(isOpen: boolean) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
const { values } = drawerApi.getData<Record<string, any>>();
|
const data = drawerApi.getData();
|
||||||
if (values) {
|
if (data?.values) {
|
||||||
formApi.setValues(values);
|
formApi.setValues(data.values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
title: '内嵌表单示例',
|
title: '内嵌表单示例',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ drawerApi });
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<Drawer>
|
<Drawer>
|
||||||
|
|||||||
@@ -5,9 +5,14 @@ import { useVbenDrawer } from '@vben/common-ui';
|
|||||||
|
|
||||||
import { message } from 'antdv-next';
|
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() {
|
onCancel() {
|
||||||
drawerApi.close();
|
drawerApi.close();
|
||||||
},
|
},
|
||||||
@@ -17,10 +22,12 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
},
|
},
|
||||||
onOpenChange(isOpen: boolean) {
|
onOpenChange(isOpen: boolean) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
data.value = drawerApi.getData<Record<string, any>>();
|
data.value = drawerApi.getData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ drawerApi });
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<Drawer title="数据共享示例">
|
<Drawer title="数据共享示例">
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ defineOptions({
|
|||||||
name: 'FormModelDemo',
|
name: 'FormModelDemo',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
interface FormModalData {
|
||||||
|
values?: Record<string, unknown>;
|
||||||
|
}
|
||||||
|
|
||||||
const [Form, formApi] = useVbenForm({
|
const [Form, formApi] = useVbenForm({
|
||||||
handleSubmit: onSubmit,
|
handleSubmit: onSubmit,
|
||||||
schema: [
|
schema: [
|
||||||
@@ -48,7 +52,7 @@ const [Form, formApi] = useVbenForm({
|
|||||||
showDefaultActions: false,
|
showDefaultActions: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal<FormModalData>({
|
||||||
fullscreenButton: false,
|
fullscreenButton: false,
|
||||||
onCancel() {
|
onCancel() {
|
||||||
modalApi.close();
|
modalApi.close();
|
||||||
@@ -59,15 +63,17 @@ const [Modal, modalApi] = useVbenModal({
|
|||||||
},
|
},
|
||||||
onOpenChange(isOpen: boolean) {
|
onOpenChange(isOpen: boolean) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
const { values } = modalApi.getData<Record<string, any>>();
|
const data = modalApi.getData();
|
||||||
if (values) {
|
if (data?.values) {
|
||||||
formApi.setValues(values);
|
formApi.setValues(data.values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
title: '内嵌表单示例',
|
title: '内嵌表单示例',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ modalApi });
|
||||||
|
|
||||||
function onSubmit(values: Record<string, any>) {
|
function onSubmit(values: Record<string, any>) {
|
||||||
message.loading({
|
message.loading({
|
||||||
content: '正在提交中...',
|
content: '正在提交中...',
|
||||||
|
|||||||
@@ -5,9 +5,14 @@ import { useVbenModal } from '@vben/common-ui';
|
|||||||
|
|
||||||
import { message } from 'antdv-next';
|
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() {
|
onCancel() {
|
||||||
modalApi.close();
|
modalApi.close();
|
||||||
},
|
},
|
||||||
@@ -17,10 +22,12 @@ const [Modal, modalApi] = useVbenModal({
|
|||||||
},
|
},
|
||||||
onOpenChange(isOpen: boolean) {
|
onOpenChange(isOpen: boolean) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
data.value = modalApi.getData<Record<string, any>>();
|
data.value = modalApi.getData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ modalApi });
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<Modal title="数据共享示例">
|
<Modal title="数据共享示例">
|
||||||
|
|||||||
@@ -15,6 +15,11 @@ import { useSchema } from '../data';
|
|||||||
|
|
||||||
const emit = defineEmits(['success']);
|
const emit = defineEmits(['success']);
|
||||||
const formData = ref<SystemDeptApi.SystemDept>();
|
const formData = ref<SystemDeptApi.SystemDept>();
|
||||||
|
type DeptModalData =
|
||||||
|
| null
|
||||||
|
| SystemDeptApi.SystemDept
|
||||||
|
| { pid: SystemDeptApi.SystemDept['pid'] };
|
||||||
|
|
||||||
const getTitle = computed(() => {
|
const getTitle = computed(() => {
|
||||||
return formData.value?.id
|
return formData.value?.id
|
||||||
? $t('ui.actionTitle.edit', [$t('system.dept.name')])
|
? $t('ui.actionTitle.edit', [$t('system.dept.name')])
|
||||||
@@ -32,7 +37,7 @@ function resetForm() {
|
|||||||
formApi.setValues(formData.value || {});
|
formApi.setValues(formData.value || {});
|
||||||
}
|
}
|
||||||
|
|
||||||
const [Modal, modalApi] = useVbenModal({
|
const [Modal, modalApi] = useVbenModal<DeptModalData>({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
if (valid) {
|
if (valid) {
|
||||||
@@ -51,17 +56,22 @@ const [Modal, modalApi] = useVbenModal({
|
|||||||
},
|
},
|
||||||
onOpenChange(isOpen) {
|
onOpenChange(isOpen) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
const data = modalApi.getData<SystemDeptApi.SystemDept>();
|
const data = modalApi.getData();
|
||||||
if (data) {
|
if (data) {
|
||||||
if (data.pid === 0) {
|
if (data.pid === 0) {
|
||||||
data.pid = undefined;
|
data.pid = undefined;
|
||||||
}
|
}
|
||||||
formData.value = data;
|
formData.value = 'id' in data ? data : undefined;
|
||||||
formApi.setValues(formData.value);
|
formApi.setValues(data);
|
||||||
|
} else {
|
||||||
|
formData.value = undefined;
|
||||||
|
formApi.reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ modalApi });
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -32,6 +32,9 @@ const emit = defineEmits<{
|
|||||||
const formData = ref<SystemMenuApi.SystemMenu>();
|
const formData = ref<SystemMenuApi.SystemMenu>();
|
||||||
const titleSuffix = ref<string>();
|
const titleSuffix = ref<string>();
|
||||||
|
|
||||||
|
type MenuDrawerData =
|
||||||
|
| SystemMenuApi.SystemMenu
|
||||||
|
| { pid?: SystemMenuApi.SystemMenu['pid'] };
|
||||||
type MenuSubmitValues = Omit<SystemMenuApi.SystemMenu, 'children' | 'id'>;
|
type MenuSubmitValues = Omit<SystemMenuApi.SystemMenu, 'children' | 'id'>;
|
||||||
type MenuFormValues = MenuSubmitValues & { linkSrc?: string };
|
type MenuFormValues = MenuSubmitValues & { linkSrc?: string };
|
||||||
|
|
||||||
@@ -479,25 +482,29 @@ const [Form, formApi] = useVbenForm({
|
|||||||
showDefaultActions: false,
|
showDefaultActions: false,
|
||||||
wrapperClass: 'grid-cols-2 gap-x-4',
|
wrapperClass: 'grid-cols-2 gap-x-4',
|
||||||
});
|
});
|
||||||
const [Drawer, drawerApi] = useVbenDrawer({
|
const [Drawer, drawerApi] = useVbenDrawer<MenuDrawerData>({
|
||||||
onConfirm: onSubmit,
|
onConfirm: onSubmit,
|
||||||
async onOpenChange(isOpen) {
|
async onOpenChange(isOpen) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
const data = drawerApi.getData<SystemMenuApi.SystemMenu>();
|
const data = drawerApi.getData();
|
||||||
if (data) {
|
if (data && 'id' in data) {
|
||||||
formData.value = data;
|
formData.value = data;
|
||||||
await formApi.setSubmitValues(data);
|
await formApi.setSubmitValues(data);
|
||||||
titleSuffix.value = formData.value.meta?.title
|
titleSuffix.value = formData.value.meta?.title
|
||||||
? $t(formData.value.meta.title)
|
? $t(formData.value.meta.title)
|
||||||
: '';
|
: '';
|
||||||
} else {
|
} else {
|
||||||
|
formData.value = undefined;
|
||||||
formApi.reset();
|
formApi.reset();
|
||||||
|
await formApi.setValues(data ?? {});
|
||||||
titleSuffix.value = '';
|
titleSuffix.value = '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ drawerApi });
|
||||||
|
|
||||||
async function onSubmit() {
|
async function onSubmit() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ function onRefresh() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onCreate() {
|
function onCreate() {
|
||||||
formDrawerApi.setData({}).open();
|
formDrawerApi.setData(null).open();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ const permissions = ref<DataNode[]>([]);
|
|||||||
const loadingPermissions = ref(false);
|
const loadingPermissions = ref(false);
|
||||||
|
|
||||||
const id = ref();
|
const id = ref();
|
||||||
const [Drawer, drawerApi] = useVbenDrawer({
|
const [Drawer, drawerApi] = useVbenDrawer<null | SystemRoleApi.SystemRole>({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
if (!valid) return;
|
if (!valid) return;
|
||||||
@@ -50,7 +50,7 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
|
|
||||||
async onOpenChange(isOpen) {
|
async onOpenChange(isOpen) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
const data = drawerApi.getData<SystemRoleApi.SystemRole>();
|
const data = drawerApi.getData();
|
||||||
formApi.reset();
|
formApi.reset();
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
@@ -72,6 +72,8 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ drawerApi });
|
||||||
|
|
||||||
async function loadPermissions() {
|
async function loadPermissions() {
|
||||||
loadingPermissions.value = true;
|
loadingPermissions.value = true;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ function onRefresh() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function onCreate() {
|
function onCreate() {
|
||||||
formDrawerApi.setData({}).open();
|
formDrawerApi.setData(null).open();
|
||||||
}
|
}
|
||||||
|
|
||||||
async function loadDeptList() {
|
async function loadDeptList() {
|
||||||
|
|||||||
@@ -13,13 +13,15 @@ const detailData = ref<SystemUserApi.SystemUser>();
|
|||||||
|
|
||||||
const items = computed(() => useDescriptionItems(detailData.value));
|
const items = computed(() => useDescriptionItems(detailData.value));
|
||||||
|
|
||||||
const [Drawer, drawerApi] = useVbenDrawer({
|
const [Drawer, drawerApi] = useVbenDrawer<SystemUserApi.SystemUser>({
|
||||||
onOpenChange(isOpen) {
|
onOpenChange(isOpen) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
detailData.value = drawerApi.getData<SystemUserApi.SystemUser>();
|
detailData.value = drawerApi.getData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ drawerApi });
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<Drawer :footer="false" :title="$t('common.detail')">
|
<Drawer :footer="false" :title="$t('common.detail')">
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const permissions = ref<DataNode[]>([]);
|
|||||||
const loadingPermissions = ref(false);
|
const loadingPermissions = ref(false);
|
||||||
|
|
||||||
const id = ref();
|
const id = ref();
|
||||||
const [Drawer, drawerApi] = useVbenDrawer({
|
const [Drawer, drawerApi] = useVbenDrawer<null | SystemUserApi.SystemUser>({
|
||||||
async onConfirm() {
|
async onConfirm() {
|
||||||
const { valid } = await formApi.validate();
|
const { valid } = await formApi.validate();
|
||||||
if (!valid) return;
|
if (!valid) return;
|
||||||
@@ -49,7 +49,7 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
|
|
||||||
async onOpenChange(isOpen) {
|
async onOpenChange(isOpen) {
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
const data = drawerApi.getData<SystemUserApi.SystemUser>();
|
const data = drawerApi.getData();
|
||||||
formApi.reset();
|
formApi.reset();
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
@@ -71,6 +71,8 @@ const [Drawer, drawerApi] = useVbenDrawer({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
defineExpose({ drawerApi });
|
||||||
|
|
||||||
async function loadPermissions() {
|
async function loadPermissions() {
|
||||||
loadingPermissions.value = true;
|
loadingPermissions.value = true;
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user