From 6d917d36c2b7ff635f45ddb5e8a4d5bea3a2ccab Mon Sep 17 00:00:00 2001 From: chenos Date: Thu, 14 Apr 2022 09:30:19 +0800 Subject: [PATCH] feat: improve action schema settings --- .../client/src/block-provider/hooks/index.ts | 18 ++++++---- .../antd/action/Action.Designer.tsx | 36 ++++++++++++++----- .../buttons/FormActionInitializers.tsx | 29 +++++++++------ 3 files changed, 58 insertions(+), 25 deletions(-) diff --git a/packages/client/src/block-provider/hooks/index.ts b/packages/client/src/block-provider/hooks/index.ts index e06f3269f..84cde3291 100644 --- a/packages/client/src/block-provider/hooks/index.ts +++ b/packages/client/src/block-provider/hooks/index.ts @@ -38,12 +38,15 @@ export const useCreateActionProps = () => { const actionSchema = useFieldSchema(); return { async onClick() { - await form.submit(); - const initialValues = actionSchema?.['x-action-params']?.initialValues; + const skipValidator = actionSchema?.['x-action-settings']?.skipValidator; + const overwriteValues = actionSchema?.['x-action-settings']?.overwriteValues; + if (!skipValidator) { + await form.submit(); + } await resource.create({ values: { ...form.values, - ...initialValues, + ...overwriteValues, }, }); __parent?.service?.refresh?.(); @@ -81,13 +84,16 @@ export const useUpdateActionProps = () => { const actionSchema = useFieldSchema(); return { async onClick() { - const initialValues = actionSchema?.['x-action-params']?.initialValues; - await form.submit(); + const skipValidator = actionSchema?.['x-action-settings']?.skipValidator; + const overwriteValues = actionSchema?.['x-action-settings']?.overwriteValues; + if (!skipValidator) { + await form.submit(); + } await resource.update({ filterByTk, values: { ...form.values, - ...initialValues, + ...overwriteValues, }, }); __parent?.service?.refresh?.(); diff --git a/packages/client/src/schema-component/antd/action/Action.Designer.tsx b/packages/client/src/schema-component/antd/action/Action.Designer.tsx index adc29fe79..52eb414a5 100644 --- a/packages/client/src/schema-component/antd/action/Action.Designer.tsx +++ b/packages/client/src/schema-component/antd/action/Action.Designer.tsx @@ -77,30 +77,48 @@ export const ActionDesigner = (props) => { }} /> )} - {fieldSchema['x-action-params'] && ( + {fieldSchema?.['x-action-settings'] && ( + { + fieldSchema['x-action-settings'].skipValidator = value; + dn.emit('patch', { + schema: { + ['x-uid']: fieldSchema['x-uid'], + 'x-action-settings': { + ...fieldSchema['x-action-settings'], + }, + }, + }); + }} + /> + )} + {fieldSchema?.['x-action-settings'] && ( { + onSubmit={({ overwriteValues }) => { try { - const values = JSON.parse(initialValues); - fieldSchema['x-action-params']['initialValues'] = values; + const values = JSON.parse(overwriteValues); + fieldSchema['x-action-settings'].overwriteValues = values; dn.emit('patch', { schema: { ['x-uid']: fieldSchema['x-uid'], - 'x-action-params': { - initialValues: values, + 'x-action-settings': { + ...fieldSchema['x-action-settings'], }, }, }); diff --git a/packages/client/src/schema-initializer/buttons/FormActionInitializers.tsx b/packages/client/src/schema-initializer/buttons/FormActionInitializers.tsx index 2b9593383..c509c036e 100644 --- a/packages/client/src/schema-initializer/buttons/FormActionInitializers.tsx +++ b/packages/client/src/schema-initializer/buttons/FormActionInitializers.tsx @@ -12,13 +12,16 @@ export const FormActionInitializers = { title: '{{t("Submit")}}', component: 'CreateSubmitActionInitializer', schema: { - 'x-action-params': { + 'x-action-settings': { initialValues: {}, }, }, }, ], }, + { + type: 'divider', + }, { type: 'subMenu', title: '{{t("Customize")}}', @@ -31,7 +34,7 @@ export const FormActionInitializers = { title: '{{ t("Save") }}', 'x-component': 'Action', 'x-designer': 'Action.Designer', - 'x-action-params': { + 'x-action-settings': { initialValues: {}, }, 'x-component-props': { @@ -57,13 +60,16 @@ export const CreateFormActionInitializers = { title: '{{t("Submit")}}', component: 'CreateSubmitActionInitializer', schema: { - 'x-action-params': { - initialValues: {}, + 'x-action-settings': { + overwriteValues: {}, }, }, }, ], }, + { + type: 'divider', + }, { type: 'subMenu', title: '{{t("Customize")}}', @@ -76,8 +82,8 @@ export const CreateFormActionInitializers = { title: '{{ t("Save") }}', 'x-component': 'Action', 'x-designer': 'Action.Designer', - 'x-action-params': { - initialValues: {}, + 'x-action-settings': { + overwriteValues: {}, }, 'x-component-props': { useProps: '{{ useCreateActionProps }}', @@ -102,13 +108,16 @@ export const UpdateFormActionInitializers = { title: '{{t("Submit")}}', component: 'UpdateSubmitActionInitializer', schema: { - 'x-action-params': { - initialValues: {}, + 'x-action-settings': { + overwriteValues: {}, }, }, }, ], }, + { + type: 'divider', + }, { type: 'subMenu', title: '{{t("Customize")}}', @@ -121,8 +130,8 @@ export const UpdateFormActionInitializers = { title: '{{ t("Save") }}', 'x-component': 'Action', 'x-designer': 'Action.Designer', - 'x-action-params': { - initialValues: {}, + 'x-action-settings': { + overwriteValues: {}, }, 'x-component-props': { useProps: '{{ useUpdateActionProps }}',