From b05cfe4b02b176d5bc2fb6c88ce4f1fffc3ab59d Mon Sep 17 00:00:00 2001 From: chenos Date: Sun, 6 Mar 2022 08:50:06 +0800 Subject: [PATCH] feat(client): menu schema insert --- .../antd/menu/Menu.Designer.tsx | 139 ++++++++++++++++++ .../src/schema-settings/SchemaSettings.tsx | 5 +- 2 files changed, 143 insertions(+), 1 deletion(-) 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 37ffb21b5..61eba65c7 100644 --- a/packages/client/src/schema-component/antd/menu/Menu.Designer.tsx +++ b/packages/client/src/schema-component/antd/menu/Menu.Designer.tsx @@ -2,6 +2,141 @@ import { ISchema, useField, useFieldSchema } from '@formily/react'; import React from 'react'; import { GeneralSchemaDesigner, SchemaSettings, useDesignable } from '../../../'; +const InsertMenuItems = (props) => { + const { dn, refresh } = useDesignable(); + const { eventKey, title, insertPosition } = props; + const fieldSchema = useFieldSchema(); + const isSubMenu = fieldSchema['x-component'] === 'Menu.SubMenu'; + if (!isSubMenu && insertPosition === 'beforeEnd') { + return null; + } + return ( + + { + dn.insertAdjacent(insertPosition, { + type: 'void', + title, + 'x-component': 'Menu.SubMenu', + 'x-component-props': { + icon, + }, + }); + }} + /> + { + dn.insertAdjacent(insertPosition, { + type: 'void', + title, + 'x-component': 'Menu.Item', + 'x-component-props': { + icon, + }, + properties: { + page: { + type: 'void', + 'x-component': 'Page', + 'x-async': true, + properties: { + grid: { + type: 'void', + 'x-component': 'Grid', + 'x-initializer': 'BlockInitializers', + properties: {}, + }, + }, + }, + }, + }); + }} + /> + { + dn.insertAdjacent(insertPosition, { + type: 'void', + title, + 'x-component': 'Menu.URL', + 'x-component-props': { + icon, + href, + }, + }); + }} + /> + + ); +}; + export const MenuDesigner = () => { const field = useField(); const fieldSchema = useFieldSchema(); @@ -54,6 +189,10 @@ export const MenuDesigner = () => { }} /> + + + + ); diff --git a/packages/client/src/schema-settings/SchemaSettings.tsx b/packages/client/src/schema-settings/SchemaSettings.tsx index 696df88be..1e7ebc71d 100644 --- a/packages/client/src/schema-settings/SchemaSettings.tsx +++ b/packages/client/src/schema-settings/SchemaSettings.tsx @@ -83,8 +83,11 @@ export const SchemaSettings: React.FC & SchemaSettingsNeste }; SchemaSettings.Item = (props) => { + const { eventKey } = props; return ( { info.domEvent.preventDefault(); @@ -103,7 +106,7 @@ SchemaSettings.ItemGroup = (props) => { }; SchemaSettings.SubMenu = (props) => { - return {props.children || props.title}; + return ; }; SchemaSettings.Divider = (props) => {