refactor: remove after success

This commit is contained in:
sealday 2024-03-21 22:04:48 +08:00
parent eddb3230c6
commit e07ee53db7
4 changed files with 12 additions and 111 deletions

View File

@ -1,17 +1,10 @@
import React from 'react'; import React from 'react';
import { import { Menu, Plugin, RemoteSchemaTemplateManagerProvider, EditTitleField, useCollection } from '@nocobase/client';
Menu,
Plugin,
RemoteSchemaTemplateManagerProvider,
EditTitleField,
SchemaSettingOptions,
useCollection,
} from '@nocobase/client';
import { remove } from 'lodash'; import { remove } from 'lodash';
import { useFieldSchema } from '@formily/react'; import { useFieldSchema } from '@formily/react';
import { isValid } from '@formily/shared'; import { isValid } from '@formily/shared';
import { autorun } from '@formily/reactive'; import { autorun } from '@formily/reactive';
import { Locale, lang, tval } from './locale'; import { Locale, tval } from './locale';
import { import {
PageModeSetting, PageModeSetting,
EditFormulaTitleField, EditFormulaTitleField,
@ -21,7 +14,6 @@ import {
EditTitle, EditTitle,
SetFilterScope, SetFilterScope,
useSetFilterScopeVisible, useSetFilterScopeVisible,
AfterSuccess,
FilterVariableInput, FilterVariableInput,
EditDefaultValue, EditDefaultValue,
} from './schema-settings'; } from './schema-settings';
@ -131,21 +123,13 @@ export class PluginCoreClient extends Plugin {
}; };
}, },
}); });
this.app.schemaSettingsManager.addItem('actionSettings:submit', '', { this.app.schemaSettingsManager.addItem('actionSettings:submit', 'pageMode', {
Component: PageModeSetting, Component: PageModeSetting,
useVisible() { useVisible() {
const fieldSchema = useFieldSchema(); const fieldSchema = useFieldSchema();
return isValid(fieldSchema?.['x-action-settings']?.sessionSubmit); return isValid(fieldSchema?.['x-action-settings']?.pageMode);
}, },
}); });
const SchemaSettingOptionItems = this.schemaSettingsManager
.get('ActionSettings')
.items.filter((item) => item.name === 'Customize')[0].children;
SchemaSettingOptionItems.forEach((item) => {
if (item.name === 'afterSuccess') {
(item as SchemaSettingOptions).Component = AfterSuccess;
}
});
// 预览区块需要提前加进来,没法放在 afterload 中,这块后面需要重构 // 预览区块需要提前加进来,没法放在 afterload 中,这块后面需要重构
const previewBlockItem = { const previewBlockItem = {
@ -169,9 +153,7 @@ export class PluginCoreClient extends Plugin {
this.app.addComponents({ this.app.addComponents({
AdminLayout, AdminLayout,
AfterSuccess,
AssociatedField, AssociatedField,
RemoteSelect,
AutoComplete, AutoComplete,
CalcResult, CalcResult,
CreateSubmitActionInitializer, CreateSubmitActionInitializer,
@ -202,13 +184,14 @@ export class PluginCoreClient extends Plugin {
PDFViewerProvider, PDFViewerProvider,
PDFViwer: InternalPDFViewer, PDFViwer: InternalPDFViewer,
PageLayout, PageLayout,
RemoteSelect,
Select, Select,
SettingBlock: SettingBlockInitializer, SettingBlock: SettingBlockInitializer,
SignatureInput,
SheetBlock, SheetBlock,
SheetBlockInitializer, SheetBlockInitializer,
SheetBlockProvider, SheetBlockProvider,
SheetBlockToolbar, SheetBlockToolbar,
SignatureInput,
}); });
} }
@ -300,13 +283,13 @@ export class PluginCoreClient extends Plugin {
async afterLoad() { async afterLoad() {
// log for debug // log for debug
await this.registerSchemaInitializer();
if (process.env.NODE_ENV !== 'production') { if (process.env.NODE_ENV !== 'production') {
console.info('current components', this.app.components); console.info('current components', this.app.components);
console.info('current schemaSettings', this.app.schemaSettingsManager.getAll()); console.info('current schemaSettings', this.app.schemaSettingsManager.getAll());
console.info('current schemaInitializer', this.app.schemaInitializerManager.getAll()); console.info('current schemaInitializer', this.app.schemaInitializerManager.getAll());
console.info('current providers', this.app.providers); console.info('current providers', this.app.providers);
} }
await this.registerSchemaInitializer();
} }
async load() { async load() {

View File

@ -15,7 +15,7 @@ export const CreateSubmitActionInitializer: React.FC = (props) => {
'x-action-settings': { 'x-action-settings': {
assignedValues: {}, assignedValues: {},
triggerWorkflows: [], triggerWorkflows: [],
sessionSubmit: false, pageMode: false,
}, },
}; };
return <ActionInitializer {...props} schema={schema} />; return <ActionInitializer {...props} schema={schema} />;

View File

@ -102,7 +102,7 @@ export const useCreateActionProps = () => {
overwriteValues, overwriteValues,
skipValidator, skipValidator,
triggerWorkflows, triggerWorkflows,
sessionSubmit, pageMode,
} = actionSchema?.['x-action-settings'] ?? {}; } = actionSchema?.['x-action-settings'] ?? {};
const addChild = fieldSchema?.['x-component-props']?.addChild; const addChild = fieldSchema?.['x-component-props']?.addChild;
const assignedValues = {}; const assignedValues = {};
@ -165,7 +165,7 @@ export const useCreateActionProps = () => {
actionField.data.data = data; actionField.data.data = data;
__parent?.service?.refresh?.(); __parent?.service?.refresh?.();
if (!onSuccess?.successMessage) { if (!onSuccess?.successMessage) {
if (sessionSubmit) { if (pageMode) {
message.success(t('Saved successfully')); message.success(t('Saved successfully'));
if (dn.designable) { if (dn.designable) {
insert(viewerSchema); insert(viewerSchema);

View File

@ -469,88 +469,6 @@ export const SetFilterScope = (props) => {
return <SchemaSettingsModalItem title={t('Custom filter')} width={770} schema={schema} onSubmit={onSubmit} />; return <SchemaSettingsModalItem title={t('Custom filter')} width={770} schema={schema} onSubmit={onSubmit} />;
}; };
export function AfterSuccess() {
const { dn } = useDesignable();
const { t } = useTranslation();
const fieldSchema = useFieldSchema();
const component = fieldSchema.parent.parent['x-component'];
const schema = {
type: 'object',
title: t('After successful submission'),
properties: {
successMessage: {
title: t('Popup message'),
'x-decorator': 'FormItem',
'x-component': 'Input.TextArea',
'x-component-props': {},
},
dataClear: {
title: t('Clear data method'),
enum: [
{ label: t('Automatic clear'), value: false },
{ label: t('Manually clear'), value: true },
],
'x-decorator': 'FormItem',
'x-component': 'Radio.Group',
'x-component-props': {},
},
manualClose: {
title: t('Popup close method'),
enum: [
{ label: t('Automatic close'), value: false },
{ label: t('Manually close'), value: true },
],
'x-decorator': 'FormItem',
'x-component': 'Radio.Group',
'x-component-props': {},
},
redirecting: {
title: t('Then'),
enum: [
{ label: t('Stay on current page'), value: false },
{ label: t('Redirect to'), value: true },
],
'x-decorator': 'FormItem',
'x-component': 'Radio.Group',
'x-component-props': {},
'x-reactions': {
target: 'redirectTo',
fulfill: {
state: {
visible: '{{!!$self.value}}',
},
},
},
},
redirectTo: {
title: t('Link'),
'x-decorator': 'FormItem',
'x-component': 'Input',
'x-component-props': {},
},
},
};
if (!(component as string).includes('Form')) {
delete schema.properties.dataClear;
}
return (
<SchemaSettingsModalItem
title={t('After successful submission')}
initialValues={fieldSchema?.['x-action-settings']?.['onSuccess']}
schema={{ ...schema } as ISchema}
onSubmit={(onSuccess) => {
fieldSchema['x-action-settings']['onSuccess'] = onSuccess;
dn.emit('patch', {
schema: {
['x-uid']: fieldSchema['x-uid'],
'x-action-settings': fieldSchema['x-action-settings'],
},
});
}}
/>
);
}
// 添加跳转页面选项 // 添加跳转页面选项
export const PageModeSetting = () => { export const PageModeSetting = () => {
const { dn } = useDesignable(); const { dn } = useDesignable();
@ -559,9 +477,9 @@ export const PageModeSetting = () => {
return ( return (
<SchemaSettingsSwitchItem <SchemaSettingsSwitchItem
title={t('Navigate to new page')} title={t('Navigate to new page')}
checked={!!fieldSchema?.['x-action-settings']?.sessionSubmit} checked={!!fieldSchema?.['x-action-settings']?.pageMode}
onChange={(value) => { onChange={(value) => {
fieldSchema['x-action-settings'].sessionSubmit = value; fieldSchema['x-action-settings'].pageMode = value;
dn.emit('patch', { dn.emit('patch', {
schema: { schema: {
['x-uid']: fieldSchema['x-uid'], ['x-uid']: fieldSchema['x-uid'],