diff --git a/packages/form/src/FormBox.vue b/packages/form/src/FormBox.vue
index 629a1267..e9439d30 100644
--- a/packages/form/src/FormBox.vue
+++ b/packages/form/src/FormBox.vue
@@ -13,6 +13,7 @@
:label-position="labelPosition"
:inline="inline"
:prevent-submit-default="preventSubmitDefault"
+ :extend-state="extendState"
@change="changeHandler"
>
@@ -40,7 +41,7 @@ import { computed, ref, watchEffect } from 'vue';
import { TMagicButton, TMagicScrollbar } from '@tmagic/design';
import Form from './Form.vue';
-import type { ContainerChangeEventData, FormConfig, FormValue } from './schema';
+import type { ContainerChangeEventData, FormConfig, FormState, FormValue } from './schema';
defineOptions({
name: 'MFormBox',
@@ -60,6 +61,7 @@ const props = withDefaults(
inline?: boolean;
labelPosition?: string;
preventSubmitDefault?: boolean;
+ extendState?: (_state: FormState) => Record | Promise>;
}>(),
{
config: () => [],
diff --git a/packages/form/src/FormDialog.vue b/packages/form/src/FormDialog.vue
index 1ddfc9af..6bb81215 100644
--- a/packages/form/src/FormDialog.vue
+++ b/packages/form/src/FormDialog.vue
@@ -31,6 +31,7 @@
:label-position="labelPosition"
:inline="inline"
:prevent-submit-default="preventSubmitDefault"
+ :extend-state="extendState"
@change="changeHandler"
>
@@ -68,7 +69,7 @@ import { computed, ref } from 'vue';
import { TMagicButton, TMagicCol, TMagicDialog, TMagicRow } from '@tmagic/design';
import Form from './Form.vue';
-import { ContainerChangeEventData, FormConfig, FormValue, StepConfig } from './schema';
+import { ContainerChangeEventData, FormConfig, FormState, FormValue, StepConfig } from './schema';
defineOptions({
name: 'MFormDialog',
@@ -95,6 +96,8 @@ const props = withDefaults(
destroyOnClose?: boolean;
showClose?: boolean;
showCancel?: boolean;
+ /** 透传给内部 `MForm`,用于扩展 `formState`(如注入 `$message` / `$store` 等) */
+ extendState?: (_state: FormState) => Record | Promise>;
}>(),
{
config: () => [],
diff --git a/packages/form/src/FormDrawer.vue b/packages/form/src/FormDrawer.vue
index 6b2c3039..43b71bf6 100644
--- a/packages/form/src/FormDrawer.vue
+++ b/packages/form/src/FormDrawer.vue
@@ -28,6 +28,7 @@
:label-position="labelPosition"
:inline="inline"
:prevent-submit-default="preventSubmitDefault"
+ :extend-state="extendState"
@change="changeHandler"
>
@@ -59,7 +60,7 @@ import { ref, watchEffect } from 'vue';
import { TMagicButton, TMagicCol, TMagicDrawer, TMagicRow } from '@tmagic/design';
import Form from './Form.vue';
-import type { ContainerChangeEventData, FormConfig, FormValue } from './schema';
+import type { ContainerChangeEventData, FormConfig, FormState, FormValue } from './schema';
defineOptions({
name: 'MFormDialog',
@@ -83,6 +84,8 @@ withDefaults(
preventSubmitDefault?: boolean;
/** 关闭前的回调,会暂停 Drawer 的关闭; done 是个 function type 接受一个 boolean 参数, 执行 done 使用 true 参数或不提供参数将会终止关闭 */
beforeClose?: (_done: (_cancel?: boolean) => void) => void;
+ /** 透传给内部 `MForm`,用于扩展 `formState`(如注入 `$message` / `$store` 等) */
+ extendState?: (_state: FormState) => Record | Promise>;
}>(),
{
closeOnPressEscape: true,