From ba679fc3ab7399f147674d551e922a35593d8945 Mon Sep 17 00:00:00 2001
From: STATICHIT <108850075+STATICHIT@users.noreply.github.com>
Date: Thu, 26 Sep 2024 19:50:42 +0800
Subject: [PATCH] feat: Right Sidebar Menu and Layout Settings (#804)
* feat: Right Sidebar Menu and Layout Settings
* optimize: Deal with comments
* optimize: Encapsulate RightMenu Component And Refactor Rendering Method
---
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 | 71 +++++++--
packages/design-core/src/DesignSettings.vue | 69 ++++++--
packages/design-core/src/RightMenu.vue | 167 ++++++++++++++++++++
packages/plugins/help/src/HelpIcon.vue | 3 +
packages/toolbars/logo/src/Main.vue | 127 ++++++++++-----
8 files changed, 422 insertions(+), 81 deletions(-)
create mode 100644 packages/design-core/src/RightMenu.vue
diff --git a/packages/controller/src/useLayout.js b/packages/controller/src/useLayout.js
index 841794b14..8c87566e8 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 f1dfcc8a9..17a3a1c1b 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 1e29ecaff..219d2b265 100644
--- a/packages/design-core/src/App.vue
+++ b/packages/design-core/src/App.vue
@@ -5,16 +5,24 @@