import React from 'react';
import {
SchemaSettings,
useCompile,
ActionDesigner,
useSchemaToolbar,
useDesignable,
SchemaInitializerOpenModeSchemaItems,
SchemaSettingsSelectItem,
SchemaSettingsDivider,
SchemaSettingsRemove,
SchemaSettingsItemGroup,
} from '@nocobase/client';
import { ModalProps } from 'antd';
import { useTranslation } from 'react-i18next';
import { useFieldSchema } from '@formily/react';
const MenuGroup = (props) => {
const fieldSchema = useFieldSchema();
const { t } = useTranslation();
const compile = useCompile();
const actionTitle = fieldSchema.title ? compile(fieldSchema.title) : '';
return (
${actionTitle}`}>{props.children}
);
};
function UpdateMode() {
const { dn } = useDesignable();
const { t } = useTranslation();
const fieldSchema = useFieldSchema();
return (
{
fieldSchema['x-action-settings']['updateMode'] = value;
dn.emit('patch', {
schema: {
'x-uid': fieldSchema['x-uid'],
'x-action-settings': fieldSchema['x-action-settings'],
},
});
dn.refresh();
}}
/>
);
}
function RemoveButton(
props: {
onConfirmOk?: ModalProps['onOk'];
} = {},
) {
const { t } = useTranslation();
const fieldSchema = useFieldSchema();
const isDeletable = fieldSchema?.parent['x-component'] === 'CollectionField';
return (
!isDeletable && (
<>
{
return s['x-component'] === 'Space' || s['x-component'].endsWith('ActionBar');
}}
confirm={{
title: t('Delete action'),
onOk: props.onConfirmOk,
}}
/>
>
)
);
}
const bulkEditactionSettings = new SchemaSettings({
name: 'ActionSettings:customize:bulkEdit',
items: [
{
name: 'Customize',
Component: MenuGroup,
children: [
{
name: 'editButton',
Component: ActionDesigner.ButtonEditor,
useComponentProps() {
const { buttonEditorProps } = useSchemaToolbar();
return buttonEditorProps;
},
},
{
name: 'openMode',
Component: SchemaInitializerOpenModeSchemaItems,
useComponentProps() {
const fieldSchema = useFieldSchema();
const isPopupAction = [
'create',
'update',
'view',
'customize:popup',
'duplicate',
'customize:create',
].includes(fieldSchema['x-action'] || '');
return {
openMode: isPopupAction,
openSize: isPopupAction,
};
},
},
{
name: 'updateMode',
Component: UpdateMode,
},
{
name: 'remove',
sort: 100,
Component: RemoveButton as any,
useComponentProps() {
const { removeButtonProps } = useSchemaToolbar();
return removeButtonProps;
},
},
],
},
],
});
export { bulkEditactionSettings };