nocobase/packages/plugins/@nocobase/plugin-block-workbench/src/client/WorkbenchLinkActionSchemaInitializerItem.tsx
chenos 585fea650e
feat: workbench block (#4555)
* feat: workbench block

* feat: mobilePage

* fix: update WorkbenchAction

* feat: improve code

* fix: iconColor

* fix: Improve code

* feat: Improve code

* fix: version
2024-06-12 09:40:14 +08:00

98 lines
2.5 KiB
TypeScript

/**
* 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 {
ButtonEditor,
SchemaSettings,
SchemaSettingsActionLinkItem,
useSchemaInitializer,
useSchemaInitializerItem,
} from '@nocobase/client';
import React from 'react';
import { useTranslation } from 'react-i18next';
import { ModalActionSchemaInitializerItem } from './ModalActionSchemaInitializerItem';
export const workbenchActionSettingsLink = new SchemaSettings({
name: 'workbench:actionSettings:link',
items: [
{
name: 'editButton',
Component: ButtonEditor,
useComponentProps() {
return { hasIconColor: true };
},
},
{
name: 'editLink',
Component: SchemaSettingsActionLinkItem,
},
{
sort: 800,
name: 'd1',
type: 'divider',
},
{
sort: 900,
type: 'remove',
name: 'remove',
},
],
});
export function WorkbenchLinkActionSchemaInitializerItem(props) {
const itemConfig = useSchemaInitializerItem();
// 调用插入功能
const { insert } = useSchemaInitializer();
const { t } = useTranslation();
return (
<ModalActionSchemaInitializerItem
title={itemConfig.title}
modalSchema={{
title: t('Add link'),
properties: {
title: {
title: t('Title'),
required: true,
'x-component': 'Input',
'x-decorator': 'FormItem',
},
icon: {
title: t('Icon'),
required: true,
'x-component': 'IconPicker',
'x-decorator': 'FormItem',
},
iconColor: {
title: t('Color'),
required: true,
default: '#1677FF',
'x-component': 'ColorPicker',
'x-decorator': 'FormItem',
},
},
}}
onSubmit={(values) => {
insert({
type: 'void',
title: values.title,
'x-action': 'customize:link',
'x-toolbar': 'ActionSchemaToolbar',
'x-settings': 'workbench:actionSettings:link',
'x-component': 'WorkbenchAction',
'x-use-component-props': 'useLinkActionProps',
'x-component-props': {
icon: values.icon,
iconColor: values.iconColor,
},
});
}}
/>
);
}