From 1ad2ec6bbd033c2c5188de0de933a6eb9c831efe Mon Sep 17 00:00:00 2001
From: STATICHIT <2394412110@qq.com>
Date: Fri, 20 Sep 2024 00:42:20 +0800
Subject: [PATCH 1/3] feat: Right Sidebar Menu and Layout Settings
---
packages/controller/src/useLayout.js | 30 ++-
packages/design-core/config/plugin.js | 3 +
packages/design-core/src/App.vue | 33 +++-
packages/design-core/src/DesignPlugins.vue | 191 +++++++++++++++++--
packages/design-core/src/DesignSettings.vue | 193 ++++++++++++++++++--
packages/plugins/help/src/HelpIcon.vue | 3 +
packages/toolbars/logo/src/Main.vue | 132 ++++++++-----
7 files changed, 505 insertions(+), 80 deletions(-)
diff --git a/packages/controller/src/useLayout.js b/packages/controller/src/useLayout.js
index 841794b14b..8c87566e8d 100644
--- a/packages/controller/src/useLayout.js
+++ b/packages/controller/src/useLayout.js
@@ -62,6 +62,7 @@ const layoutState = reactive({
height: '100%'
},
plugins: {
+ isShow: true,
fixedPanels: [PLUGIN_NAME.Materials],
render: null,
api: {}, // 插件需要注册交互API到这里
@@ -69,6 +70,7 @@ const layoutState = reactive({
showDesignSettings: true
},
settings: {
+ isShow: true,
fixedPanels: [],
render: null,
api: null,
@@ -80,6 +82,20 @@ const layoutState = reactive({
},
pageStatus: ''
})
+const leftMenuShownStorage = useStorage('leftMenuShown', layoutState.plugins.isShow)
+const rightMenuShownStorage = useStorage('rightMenuShown', layoutState.settings.isShow)
+const changeMenuShown = (menuName) => {
+ switch (menuName) {
+ case 'left': {
+ leftMenuShownStorage.value = !leftMenuShownStorage.value
+ break
+ }
+ case 'right': {
+ rightMenuShownStorage.value = !rightMenuShownStorage.value
+ break
+ }
+ }
+}
const leftFixedPanelsStorage = useStorage('leftPanels', layoutState.plugins.fixedPanels)
const rightFixedPanelsStorage = useStorage('rightPanels', layoutState.settings.fixedPanels)
@@ -258,6 +274,13 @@ export default () => {
return isLeft || isRight
}
+ //获取插件显示状态
+ const getPluginShown = (name) => pluginStorageReactive.value[name]?.isShow
+
+ //修改插件显示状态
+ const changePluginShown = (name) => {
+ pluginStorageReactive.value[name].isShow = !pluginStorageReactive.value[name].isShow
+ }
return {
PLUGIN_NAME,
PLUGIN_POSITION,
@@ -278,12 +301,17 @@ export default () => {
changePluginWidth,
leftFixedPanelsStorage,
rightFixedPanelsStorage,
+ leftMenuShownStorage,
+ rightMenuShownStorage,
changeLeftFixedPanels,
changeRightFixedPanels,
getPluginsByLayout,
changePluginLayout,
getPluginByLayout,
dragPluginLayout,
- isSameSide
+ isSameSide,
+ getPluginShown,
+ changePluginShown,
+ changeMenuShown
}
}
diff --git a/packages/design-core/config/plugin.js b/packages/design-core/config/plugin.js
index f1dfcc8a94..17a3a1c1b5 100644
--- a/packages/design-core/config/plugin.js
+++ b/packages/design-core/config/plugin.js
@@ -8,3 +8,6 @@ addons.plugins.forEach((item) => {
export const getPlugin = (pluginName) => {
return plugin[pluginName] || null
}
+export const getPluginById = (pluginId) => {
+ return Object.values(plugin).find((item) => item.id === pluginId) || null
+}
diff --git a/packages/design-core/src/App.vue b/packages/design-core/src/App.vue
index 1e29ecaffa..219d2b2650 100644
--- a/packages/design-core/src/App.vue
+++ b/packages/design-core/src/App.vue
@@ -5,16 +5,24 @@