diff --git a/backend/app/dto/setting.go b/backend/app/dto/setting.go
index 9788bc7aa..13dc156f9 100644
--- a/backend/app/dto/setting.go
+++ b/backend/app/dto/setting.go
@@ -19,6 +19,7 @@ type SettingInfo struct {
BindAddress string `json:"bindAddress"`
PanelName string `json:"panelName"`
Theme string `json:"theme"`
+ MenuTabs string `json:"menuTabs"`
Language string `json:"language"`
DefaultNetwork string `json:"defaultNetwork"`
LastCleanTime string `json:"lastCleanTime"`
diff --git a/backend/init/migration/migrate.go b/backend/init/migration/migrate.go
index 0850ec7e8..3858dd631 100644
--- a/backend/init/migration/migrate.go
+++ b/backend/init/migration/migrate.go
@@ -80,6 +80,7 @@ func Init() {
migrations.NewMonitorDB,
migrations.AddNoAuthSetting,
migrations.UpdateXpackHideMenu,
+ migrations.AddMenuTabsSetting,
})
if err := m.Migrate(); err != nil {
global.LOG.Error(err)
diff --git a/backend/init/migration/migrations/v_1_10.go b/backend/init/migration/migrations/v_1_10.go
index d7ae96cf9..0687c288f 100644
--- a/backend/init/migration/migrations/v_1_10.go
+++ b/backend/init/migration/migrations/v_1_10.go
@@ -128,3 +128,13 @@ var UpdateXpackHideMenu = &gormigrate.Migration{
return nil
},
}
+
+var AddMenuTabsSetting = &gormigrate.Migration{
+ ID: "20240415-add-menu-tabs-setting",
+ Migrate: func(tx *gorm.DB) error {
+ if err := tx.Create(&model.Setting{Key: "MenuTabs", Value: "disable"}).Error; err != nil {
+ return err
+ }
+ return nil
+ },
+}
diff --git a/frontend/src/api/interface/setting.ts b/frontend/src/api/interface/setting.ts
index 6e101e79f..6afd77c29 100644
--- a/frontend/src/api/interface/setting.ts
+++ b/frontend/src/api/interface/setting.ts
@@ -16,6 +16,7 @@ export namespace Setting {
panelName: string;
theme: string;
+ menuTabs: string;
language: string;
defaultNetwork: string;
lastCleanTime: string;
diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts
index 7e3eb5296..9c05257a1 100644
--- a/frontend/src/lang/modules/en.ts
+++ b/frontend/src/lang/modules/en.ts
@@ -352,6 +352,9 @@ const message = {
tabs: {
more: 'More',
hide: 'Hide',
+ close: 'Close',
+ closeLeft: 'Close left',
+ closeRight: 'Close right',
closeCurrent: 'Close current',
closeOther: 'Close other',
closeAll: 'Close All',
@@ -1228,6 +1231,7 @@ const message = {
portChange: 'Port change',
portChangeHelper: 'Modify the service port and restart the service. Do you want to continue?',
theme: 'Theme',
+ menuTabs: 'Menu tabs',
dark: 'Dark',
light: 'Light',
auto: 'Follow System',
diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts
index 867eae81c..88f449ca3 100644
--- a/frontend/src/lang/modules/tw.ts
+++ b/frontend/src/lang/modules/tw.ts
@@ -348,6 +348,9 @@ const message = {
tabs: {
more: '更多',
hide: '收起',
+ close: '關閉',
+ closeLeft: '關閉左側',
+ closeRight: '關閉右側',
closeCurrent: '關閉當前',
closeOther: '關閉其它',
closeAll: '關閉所有',
@@ -1165,6 +1168,7 @@ const message = {
portChange: '端口修改',
portChangeHelper: '服務端口修改需要重啟服務,是否繼續?',
theme: '主題顏色',
+ menuTabs: '菜單標簽頁',
componentSize: '組件大小',
dark: '暗色',
light: '亮色',
diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts
index 2bd32afc4..cd1f4c762 100644
--- a/frontend/src/lang/modules/zh.ts
+++ b/frontend/src/lang/modules/zh.ts
@@ -348,6 +348,9 @@ const message = {
tabs: {
more: '更多',
hide: '收起',
+ close: '关闭',
+ closeLeft: '关闭左侧',
+ closeRight: '关闭右侧',
closeCurrent: '关闭当前',
closeOther: '关闭其它',
closeAll: '关闭所有',
@@ -1166,6 +1169,7 @@ const message = {
portChange: '端口修改',
portChangeHelper: '服务端口修改需要重启服务,是否继续?',
theme: '主题颜色',
+ menuTabs: '菜单标签页',
componentSize: '组件大小',
dark: '暗色',
light: '亮色',
diff --git a/frontend/src/layout/components/AppMain.vue b/frontend/src/layout/components/AppMain.vue
index d9e3d79c7..c00a0ede4 100644
--- a/frontend/src/layout/components/AppMain.vue
+++ b/frontend/src/layout/components/AppMain.vue
@@ -1,7 +1,7 @@