diff --git a/packages/core/client/src/block-provider/FilterFormBlockProvider.tsx b/packages/core/client/src/block-provider/FilterFormBlockProvider.tsx
index f6eacc4ede..1a46420a4b 100644
--- a/packages/core/client/src/block-provider/FilterFormBlockProvider.tsx
+++ b/packages/core/client/src/block-provider/FilterFormBlockProvider.tsx
@@ -10,11 +10,11 @@
import { useFieldSchema } from '@formily/react';
import React from 'react';
import { withDynamicSchemaProps } from '../hoc/withDynamicSchemaProps';
-import { DatePickerProvider, ActionBarProvider, SchemaComponentOptions } from '../schema-component';
+import { FilterCollectionField } from '../modules/blocks/filter-blocks/FilterCollectionField';
+import { ActionBarProvider, DatePickerProvider, SchemaComponentOptions } from '../schema-component';
import { DefaultValueProvider } from '../schema-settings';
import { CollectOperators } from './CollectOperators';
import { FormBlockProvider } from './FormBlockProvider';
-import { FilterCollectionField } from '../modules/blocks/filter-blocks/FilterCollectionField';
export const FilterFormBlockProvider = withDynamicSchemaProps((props) => {
const filedSchema = useFieldSchema();
@@ -35,7 +35,7 @@ export const FilterFormBlockProvider = withDynamicSchemaProps((props) => {
}}
>
false}>
-
+
diff --git a/packages/core/client/src/schema-component/antd/form-v2/Form.tsx b/packages/core/client/src/schema-component/antd/form-v2/Form.tsx
index 62f024ccf1..715160493f 100644
--- a/packages/core/client/src/schema-component/antd/form-v2/Form.tsx
+++ b/packages/core/client/src/schema-component/antd/form-v2/Form.tsx
@@ -20,6 +20,7 @@ import { useAttach, useComponent } from '../..';
import { useApp } from '../../../application';
import { getCardItemSchema } from '../../../block-provider';
import { useTemplateBlockContext } from '../../../block-provider/TemplateBlockProvider';
+import { useDataBlockProps } from '../../../data-source';
import { useDataBlockRequest } from '../../../data-source/data-block/DataBlockRequestProvider';
import { NocoBaseRecursionField } from '../../../formily/NocoBaseRecursionField';
import { withDynamicSchemaProps } from '../../../hoc/withDynamicSchemaProps';
@@ -150,12 +151,15 @@ const WithForm = (props: WithFormProps) => {
const linkageRules: any[] =
(getLinkageRules(fieldSchema) || fieldSchema.parent?.['x-linkage-rules'])?.filter((k) => !k.disabled) || [];
+ // 关闭弹窗之前,如果有未保存的数据,是否要二次确认
+ const { confirmBeforeClose = true } = useDataBlockProps() || ({} as any);
+
useEffect(() => {
const id = uid();
form.addEffects(id, () => {
onFormInputChange(() => {
- setFormValueChanged?.(true);
+ setFormValueChanged?.(confirmBeforeClose);
});
});
@@ -166,7 +170,7 @@ const WithForm = (props: WithFormProps) => {
return () => {
form.removeEffects(id);
};
- }, [form, props.disabled, setFormValueChanged]);
+ }, [form, props.disabled, setFormValueChanged, confirmBeforeClose]);
useEffect(() => {
if (loading) {
@@ -219,17 +223,19 @@ const WithForm = (props: WithFormProps) => {
const WithoutForm = (props) => {
const fieldSchema = useFieldSchema();
const { setFormValueChanged } = useActionContext();
+ // 关闭弹窗之前,如果有未保存的数据,是否要二次确认
+ const { confirmBeforeClose = true } = useDataBlockProps() || ({} as any);
const form = useMemo(
() =>
createForm({
disabled: props.disabled,
effects() {
onFormInputChange((form) => {
- setFormValueChanged?.(true);
+ setFormValueChanged?.(confirmBeforeClose);
});
},
}),
- [],
+ [confirmBeforeClose],
);
return fieldSchema['x-decorator'] === 'FormV2' ? (