From a36f1151f0f8b6ceca48ae8f77a69dc535cfb07c Mon Sep 17 00:00:00 2001 From: Katherine Date: Mon, 20 Jan 2025 11:59:07 +0800 Subject: [PATCH] fix: remove form data template from bulk edit action form (#6098) --- .../form/createFormBlockSettings.tsx | 3 +- .../src/client/BulkEditFormBlockSettings.tsx | 86 +++++++++++++++++++ .../src/client/createBulkEditBlockUISchema.ts | 2 +- .../src/client/index.tsx | 2 + 4 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormBlockSettings.tsx diff --git a/packages/core/client/src/modules/blocks/data-blocks/form/createFormBlockSettings.tsx b/packages/core/client/src/modules/blocks/data-blocks/form/createFormBlockSettings.tsx index 3a5be113e0..c16c806c77 100644 --- a/packages/core/client/src/modules/blocks/data-blocks/form/createFormBlockSettings.tsx +++ b/packages/core/client/src/modules/blocks/data-blocks/form/createFormBlockSettings.tsx @@ -48,7 +48,8 @@ export const createFormBlockSettings = new SchemaSettings({ Component: SchemaSettingsDataTemplates, useVisible() { const { action } = useFormBlockContext(); - return !action; + const schema = useFieldSchema(); + return !action && schema?.['x-acl-action'].includes('create'); }, useComponentProps() { const { name } = useCollection_deprecated(); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormBlockSettings.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormBlockSettings.tsx new file mode 100644 index 0000000000..8add5a1911 --- /dev/null +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/BulkEditFormBlockSettings.tsx @@ -0,0 +1,86 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +import { useFieldSchema } from '@formily/react'; +import { + SchemaSettings, + useBlockTemplateContext, + SchemaSettingsLayoutItem, + SchemaSettingsDataTemplates, + useFormBlockContext, + SchemaSettingsFormItemTemplate, + useCollection, + useCollection_deprecated, + SchemaSettingsBlockHeightItem, + SchemaSettingsBlockTitleItem, + SchemaSettingsLinkageRules, +} from '@nocobase/client'; + +export const bulkEditFormBlockSettings = new SchemaSettings({ + name: 'blockSettings:bulkEditForm', + items: [ + { + name: 'title', + Component: SchemaSettingsBlockTitleItem, + }, + { + name: 'setTheBlockHeight', + Component: SchemaSettingsBlockHeightItem, + }, + { + name: 'linkageRules', + Component: SchemaSettingsLinkageRules, + useComponentProps() { + const { name } = useCollection_deprecated(); + return { + collectionName: name, + }; + }, + }, + + { + name: 'divider', + type: 'divider', + }, + { + name: 'formItemTemplate', + Component: SchemaSettingsFormItemTemplate, + useComponentProps() { + const { componentNamePrefix } = useBlockTemplateContext(); + const { name } = useCollection(); + const fieldSchema = useFieldSchema(); + const defaultResource = + fieldSchema?.['x-decorator-props']?.resource || fieldSchema?.['x-decorator-props']?.association; + return { + componentName: `${componentNamePrefix}FormItem`, + collectionName: name, + resourceName: defaultResource, + }; + }, + }, + { + name: 'setBlockLayout', + Component: SchemaSettingsLayoutItem, + }, + { + name: 'divider2', + type: 'divider', + }, + { + name: 'remove', + type: 'remove', + componentProps: { + removeParentsIfNoChildren: true, + breakRemoveOn: { + 'x-component': 'Grid', + }, + }, + }, + ], +}); diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/createBulkEditBlockUISchema.ts b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/createBulkEditBlockUISchema.ts index c6b610d43e..38def34bcf 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/createBulkEditBlockUISchema.ts +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/createBulkEditBlockUISchema.ts @@ -39,7 +39,7 @@ export function createBulkEditBlockUISchema(options: { association, }, 'x-toolbar': 'BlockSchemaToolbar', - 'x-settings': 'blockSettings:createForm', + 'x-settings': 'blockSettings:bulkEditForm', 'x-component': 'CardItem', properties: { [uid()]: { diff --git a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx index 7b8dd8c830..ace59caa02 100644 --- a/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-action-bulk-edit/src/client/index.tsx @@ -26,12 +26,14 @@ import { } from './BulkEditFormActionInitializers'; import { BulkEditFormItemInitializers_deprecated, bulkEditFormItemInitializers } from './BulkEditFormItemInitializers'; import { bulkEditFormItemSettings } from './bulkEditFormItemSettings'; +import { bulkEditFormBlockSettings } from './BulkEditFormBlockSettings'; import { BulkEditField } from './component/BulkEditField'; import { useCustomizeBulkEditActionProps } from './utils'; export class PluginActionBulkEditClient extends Plugin { async load() { this.app.addComponents({ BulkEditField, BulkEditActionDecorator }); this.app.addScopes({ useCustomizeBulkEditActionProps }); + this.app.schemaSettingsManager.add(bulkEditFormBlockSettings); this.app.schemaSettingsManager.add(deprecatedBulkEditActionSettings); this.app.schemaSettingsManager.add(bulkEditActionSettings); this.app.schemaSettingsManager.add(bulkEditFormSubmitActionSettings);