fix(plugin-workflow): fix configuration drawer close logic (#3001)

This commit is contained in:
Junyi 2023-11-09 00:51:42 +08:00 committed by GitHub
parent 81cea6b596
commit 8ee8b0052a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 91 additions and 81 deletions

View File

@ -274,7 +274,7 @@ export function JobButton() {
);
}
function useNodeFormProps() {
function useFormProviderProps() {
return { form: useForm() };
}
@ -379,7 +379,7 @@ export function NodeDefaultView(props) {
<SchemaComponent
scope={{
...instruction.scope,
useNodeFormProps,
useFormProviderProps,
}}
components={instruction.components}
schema={{
@ -427,7 +427,7 @@ export function NodeDefaultView(props) {
'x-decorator': 'FormV2',
'x-decorator-props': {
// form,
useProps: '{{ useNodeFormProps }}',
useProps: '{{ useFormProviderProps }}',
},
'x-component': 'Action.Drawer',
properties: {

View File

@ -3,6 +3,7 @@ import { createForm } from '@formily/core';
import { ISchema, useForm } from '@formily/react';
import {
ActionContextProvider,
FormProvider,
SchemaComponent,
SchemaInitializerItemOptions,
css,
@ -143,6 +144,10 @@ function TriggerExecution() {
);
}
function useFormProviderProps() {
return { form: useForm() };
}
export const TriggerConfig = () => {
const api = useAPIClient();
const { workflow, refresh } = useFlowContext();
@ -169,15 +174,14 @@ export const TriggerConfig = () => {
const values = cloneDeep(workflow?.config);
return createForm({
initialValues: values,
values,
disabled: workflow?.executed,
});
}, [workflow]);
const resetForm = useCallback(
(changed) => {
setFormValueChanged(changed);
if (!changed) {
(editing) => {
setEditingConfig(editing);
if (!editing) {
form.reset();
}
},
@ -241,92 +245,98 @@ export const TriggerConfig = () => {
<ActionContextProvider
value={{
visible: editingConfig,
setVisible: setEditingConfig,
setVisible: resetForm,
formValueChanged,
setFormValueChanged: resetForm,
setFormValueChanged,
}}
>
<SchemaComponent
schema={{
name: `workflow-trigger-${workflow.id}`,
type: 'void',
properties: {
config: {
type: 'void',
'x-content': detailText,
'x-component': Button,
'x-component-props': {
type: 'link',
className: 'workflow-node-config-button',
<FormProvider form={form}>
<SchemaComponent
scope={{
...scope,
useFormProviderProps,
}}
components={components}
schema={{
name: `workflow-trigger-${workflow.id}`,
type: 'void',
properties: {
config: {
type: 'void',
'x-content': detailText,
'x-component': Button,
'x-component-props': {
type: 'link',
className: 'workflow-node-config-button',
},
},
},
drawer: {
type: 'void',
title: titleText,
'x-component': 'Action.Drawer',
'x-decorator': 'FormV2',
'x-decorator-props': {
form,
},
properties: {
...(trigger.description
? {
description: {
type: 'void',
'x-component': DrawerDescription,
'x-component-props': {
label: lang('Trigger type'),
title: trigger.title,
description: trigger.description,
drawer: {
type: 'void',
title: titleText,
'x-component': 'Action.Drawer',
'x-decorator': 'FormV2',
'x-decorator-props': {
// form,
useProps: '{{ useFormProviderProps }}',
},
properties: {
...(trigger.description
? {
description: {
type: 'void',
'x-component': DrawerDescription,
'x-component-props': {
label: lang('Trigger type'),
title: trigger.title,
description: trigger.description,
},
},
},
}
: {}),
fieldset: {
type: 'void',
'x-component': 'fieldset',
'x-component-props': {
className: css`
.ant-select.auto-width {
width: auto;
min-width: 6em;
}
`,
: {}),
fieldset: {
type: 'void',
'x-component': 'fieldset',
'x-component-props': {
className: css`
.ant-select.auto-width {
width: auto;
min-width: 6em;
}
`,
},
properties: fieldset,
},
properties: fieldset,
},
actions: {
...(executed
? {}
: {
type: 'void',
'x-component': 'Action.Drawer.Footer',
properties: {
cancel: {
title: '{{t("Cancel")}}',
'x-component': 'Action',
'x-component-props': {
useAction: '{{ cm.useCancelAction }}',
actions: {
...(executed
? {}
: {
type: 'void',
'x-component': 'Action.Drawer.Footer',
properties: {
cancel: {
title: '{{t("Cancel")}}',
'x-component': 'Action',
'x-component-props': {
useAction: '{{ cm.useCancelAction }}',
},
},
submit: {
title: '{{t("Submit")}}',
'x-component': 'Action',
'x-component-props': {
type: 'primary',
useAction: useUpdateConfigAction,
},
},
},
submit: {
title: '{{t("Submit")}}',
'x-component': 'Action',
'x-component-props': {
type: 'primary',
useAction: useUpdateConfigAction,
},
},
},
}),
}),
},
},
},
},
},
}}
scope={scope}
components={components}
/>
}}
/>
</FormProvider>
</ActionContextProvider>
</div>
);