From e2f4fa32a70d429ef588d57aeedea92af5825c4b Mon Sep 17 00:00:00 2001 From: chenos Date: Sun, 6 Mar 2022 00:13:54 +0800 Subject: [PATCH] feat(client): menu schema settings --- .../antd/icon-picker/IconPicker.tsx | 1 - .../antd/menu/Menu.Designer.tsx | 61 +++++++++++++++---- .../src/schema-component/antd/menu/Menu.tsx | 5 +- 3 files changed, 51 insertions(+), 16 deletions(-) diff --git a/packages/client/src/schema-component/antd/icon-picker/IconPicker.tsx b/packages/client/src/schema-component/antd/icon-picker/IconPicker.tsx index bf1935b95..8dcd882bd 100644 --- a/packages/client/src/schema-component/antd/icon-picker/IconPicker.tsx +++ b/packages/client/src/schema-component/antd/icon-picker/IconPicker.tsx @@ -65,7 +65,6 @@ export const IconPicker = connect( mapProps((props, field) => { return { ...props, - value: props.type, suffix: {field?.['loading'] || field?.['validating'] ? : props.suffix}, }; }), diff --git a/packages/client/src/schema-component/antd/menu/Menu.Designer.tsx b/packages/client/src/schema-component/antd/menu/Menu.Designer.tsx index 1f2746180..37ffb21b5 100644 --- a/packages/client/src/schema-component/antd/menu/Menu.Designer.tsx +++ b/packages/client/src/schema-component/antd/menu/Menu.Designer.tsx @@ -1,23 +1,58 @@ -import { useField } from '@formily/react'; +import { ISchema, useField, useFieldSchema } from '@formily/react'; import React from 'react'; -import { GeneralSchemaDesigner, SchemaSettings } from '../../../'; +import { GeneralSchemaDesigner, SchemaSettings, useDesignable } from '../../../'; export const MenuDesigner = () => { const field = useField(); + const fieldSchema = useFieldSchema(); + const { dn, refresh } = useDesignable(); return ( - - 编辑 - + onSubmit={({ title, icon }) => { + const schema = { + ['x-uid']: fieldSchema['x-uid'], + }; + if (title) { + fieldSchema.title = title; + field.title = title; + schema['title'] = title; + refresh(); + } + field.componentProps.icon = icon; + schema['x-component-props'] = { icon }; + fieldSchema['x-component-props'] = fieldSchema['x-component-props'] || {}; + fieldSchema['x-component-props']['icon'] = icon; + dn.emit('patch', { + schema, + }); + }} + /> diff --git a/packages/client/src/schema-component/antd/menu/Menu.tsx b/packages/client/src/schema-component/antd/menu/Menu.tsx index 3dea44420..061efaa95 100644 --- a/packages/client/src/schema-component/antd/menu/Menu.tsx +++ b/packages/client/src/schema-component/antd/menu/Menu.tsx @@ -311,12 +311,13 @@ export const Menu: ComposedMenu = observer((props) => { Menu.Item = observer((props) => { const { icon, ...others } = props; const schema = useFieldSchema(); + const field = useField(); const Designer = useContext(MenuItemDesignerContext); return ( - {schema.title} + {field.title} @@ -340,7 +341,7 @@ Menu.URL = observer((props) => { > - {schema.title} + {field.title}