feat: preference button supports automatic positioning (#4243)

This commit is contained in:
Vben
2024-08-26 23:17:27 +08:00
committed by GitHub
parent dc5cfab319
commit d2f3a9d04f
11 changed files with 57 additions and 17 deletions

View File

@@ -20,7 +20,7 @@ const defaultPreferences: Preferences = {
locale: 'zh-CN',
loginExpiredMode: 'page',
name: 'Vben Admin',
preferencesButtonPosition: 'fixed',
preferencesButtonPosition: 'auto',
watermark: false,
},
breadcrumb: {

View File

@@ -149,6 +149,45 @@ function usePreferences() {
return enable && globalLockScreen;
});
/**
* @zh_CN 偏好设置按钮位置
*/
const preferencesButtonPosition = computed(() => {
const { enablePreferences, preferencesButtonPosition } = preferences.app;
// 如果没有启用偏好设置按钮
if (!enablePreferences) {
return {
fixed: false,
header: false,
};
}
const { header, sidebar } = preferences;
const headerHidden = header.hidden;
const sidebarHidden = sidebar.hidden;
const contentIsMaximize = headerHidden && sidebarHidden;
const isHeaderPosition = preferencesButtonPosition === 'header';
// 如果设置了固定位置
if (preferencesButtonPosition !== 'auto') {
return {
fixed: preferencesButtonPosition === 'fixed',
header: isHeaderPosition,
};
}
// 如果是全屏模式或者没有固定在顶部,
const fixed = contentIsMaximize || isFullContent.value || isMobile.value;
return {
fixed,
header: !fixed,
};
});
return {
authPanelCenter,
authPanelLeft,
@@ -168,6 +207,7 @@ function usePreferences() {
isSideNav,
keepAlive,
layout,
preferencesButtonPosition,
sidebarCollapsed,
theme,
};