Merge branch 'next' into develop

This commit is contained in:
nocobase[bot] 2025-01-07 13:41:18 +00:00
commit 9992b5fd75
5 changed files with 79 additions and 7 deletions

View File

@ -47,6 +47,10 @@ export const updateSubmitActionSettings = new SchemaSettings({
collectionName: name,
};
},
useVisible() {
const fieldSchema = useFieldSchema();
return !fieldSchema.parent['x-initializer'].includes('bulkEditForm');
},
},
{
name: 'secondConfirmation',
@ -63,10 +67,18 @@ export const updateSubmitActionSettings = new SchemaSettings({
{
name: 'assignFieldValues',
Component: AssignedFieldValues,
useVisible() {
const fieldSchema = useFieldSchema();
return !fieldSchema.parent['x-initializer'].includes('bulkEditForm');
},
},
{
name: 'skipRequiredValidation',
Component: SkipValidation,
useVisible() {
const fieldSchema = useFieldSchema();
return !fieldSchema.parent['x-initializer'].includes('bulkEditForm');
},
},
{
name: 'afterSuccessfulSubmission',

View File

@ -18,8 +18,13 @@ import {
useDesignable,
useOpenModeContext,
useSchemaToolbar,
SecondConFirm,
WorkflowConfig,
AfterSuccess,
RefreshDataBlockRequest,
} from '@nocobase/client';
import { ModalProps } from 'antd';
import { isValid } from '@formily/shared';
import React from 'react';
import { useTranslation } from 'react-i18next';
@ -165,3 +170,53 @@ export const bulkEditActionSettings = new SchemaSettings({
},
],
});
/**
* submit
*/
export const bulkEditFormSubmitActionSettings = new SchemaSettings({
name: 'actionSettings:bulkEditSubmit',
items: [
{
name: 'editButton',
Component: ActionDesigner.ButtonEditor,
useComponentProps() {
const { buttonEditorProps } = useSchemaToolbar();
return buttonEditorProps;
},
},
{
name: 'secondConfirmation',
Component: SecondConFirm,
},
{
name: 'workflowConfig',
Component: WorkflowConfig,
useVisible() {
const fieldSchema = useFieldSchema();
return isValid(fieldSchema?.['x-action-settings']?.triggerWorkflows);
},
},
{
name: 'afterSuccessfulSubmission',
Component: AfterSuccess,
},
{
name: 'refreshDataBlockRequest',
Component: RefreshDataBlockRequest,
useComponentProps() {
return {
isPopupAction: true,
};
},
},
{
name: 'remove',
sort: 100,
Component: RemoveButton as any,
useComponentProps() {
const { removeButtonProps } = useSchemaToolbar();
return removeButtonProps;
},
},
],
});

View File

@ -18,7 +18,7 @@ export const BulkEditSubmitActionInitializer = (props) => {
'x-use-component-props': 'useCustomizeBulkEditActionProps',
// 'x-designer': 'Action.Designer',
'x-toolbar': 'ActionSchemaToolbar',
'x-settings': 'actionSettings:updateSubmit',
'x-settings': 'actionSettings:bulkEditSubmit',
'x-component-props': {
type: 'primary',
htmlType: 'submit',

View File

@ -8,7 +8,11 @@
*/
import { Plugin, useActionAvailable } from '@nocobase/client';
import { bulkEditActionSettings, deprecatedBulkEditActionSettings } from './BulkEditAction.Settings';
import {
bulkEditActionSettings,
deprecatedBulkEditActionSettings,
bulkEditFormSubmitActionSettings,
} from './BulkEditAction.Settings';
import { BulkEditActionDecorator } from './BulkEditActionDecorator';
import { BulkEditActionInitializer } from './BulkEditActionInitializer';
import {
@ -30,6 +34,7 @@ export class PluginActionBulkEditClient extends Plugin {
this.app.addScopes({ useCustomizeBulkEditActionProps });
this.app.schemaSettingsManager.add(deprecatedBulkEditActionSettings);
this.app.schemaSettingsManager.add(bulkEditActionSettings);
this.app.schemaSettingsManager.add(bulkEditFormSubmitActionSettings);
this.app.schemaSettingsManager.add(bulkEditFormItemSettings);
this.app.schemaInitializerManager.add(BulkEditFormItemInitializers_deprecated);
this.app.schemaInitializerManager.add(bulkEditFormItemInitializers);

View File

@ -88,7 +88,6 @@ export const useCustomizeBulkEditActionProps = () => {
const actionField = useField();
const tableBlockContext = useTableBlockContext();
const { modal } = App.useApp();
const { rowKey } = tableBlockContext;
const selectedRecordKeys =
tableBlockContext.field?.data?.selectedRowKeys ?? expressionScope?.selectedRecordKeys ?? {};
@ -98,6 +97,7 @@ export const useCustomizeBulkEditActionProps = () => {
async onClick() {
const { updateMode } = actionSchema?.['x-action-settings'] ?? {};
const { onSuccess, skipValidator, triggerWorkflows } = fieldSchema?.['x-action-settings'] ?? {};
const { refreshDataBlockRequest } = fieldSchema?.['x-component-props'] ?? {};
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
const { filter } = __parent.service.params?.[0] ?? {};
@ -125,13 +125,13 @@ export const useCustomizeBulkEditActionProps = () => {
}
await resource.update(updateData);
actionField.data.loading = false;
if (!(resource instanceof TableFieldResource)) {
__parent?.__parent?.service?.refresh?.();
}
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
setVisible?.(false);
}
setSubmitted(true);
if (refreshDataBlockRequest !== false) {
setSubmitted(true);
}
if (!successMessage) {
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
if (isURL(redirectTo)) {