diff --git a/web/apps/web-ele/src/layouts/basic.vue b/web/apps/web-ele/src/layouts/basic.vue
index cf0dfdf..43d6007 100644
--- a/web/apps/web-ele/src/layouts/basic.vue
+++ b/web/apps/web-ele/src/layouts/basic.vue
@@ -33,9 +33,6 @@ const AuthenticationLoginExpiredModal = defineAsyncComponent(() =>
const UserDropdown = defineAsyncComponent(() =>
import('@vben/layouts/es/user-dropdown').then((module) => module.UserDropdown),
);
-const LockScreen = defineAsyncComponent(() =>
- import('@vben/layouts/es/lock-screen').then((module) => module.LockScreen),
-);
const NotificationPopup = defineAsyncComponent(
() => import('#/components/notification/NotificationPopup.vue'),
);
@@ -275,7 +272,7 @@ watch(
-
+
-
-
-
diff --git a/web/apps/web-ele/src/preferences.ts b/web/apps/web-ele/src/preferences.ts
index c152d94..a8854d6 100644
--- a/web/apps/web-ele/src/preferences.ts
+++ b/web/apps/web-ele/src/preferences.ts
@@ -12,11 +12,20 @@ export const overridesPreferences = defineOverridesPreferences({
app: {
name: import.meta.env.VITE_APP_TITLE,
enableRefreshToken: true,
+ enableCheckUpdates: false,
+ enablePreferences: false,
accessMode: 'mixed',
authPageLayout: 'panel-center',
defaultHomePath: '/control-center',
layout: 'header-sidebar-nav',
},
+ shortcutKeys: {
+ enable: false,
+ globalLockScreen: false,
+ globalLogout: true,
+ globalPreferences: false,
+ globalSearch: false,
+ },
theme: {
mode: 'light',
},
@@ -37,4 +46,16 @@ export const overridesPreferences = defineOverridesPreferences({
fit: 'contain',
source: Logo,
},
+ widget: {
+ fullscreen: false,
+ globalSearch: false,
+ languageToggle: false,
+ lockScreen: false,
+ notification: true,
+ refresh: false,
+ sidebarBranding: true,
+ sidebarToggle: true,
+ themeToggle: true,
+ timezone: false,
+ },
});
diff --git a/web/packages/@core/preferences/src/preferences.ts b/web/packages/@core/preferences/src/preferences.ts
index c2c2225..6db9e2f 100644
--- a/web/packages/@core/preferences/src/preferences.ts
+++ b/web/packages/@core/preferences/src/preferences.ts
@@ -94,6 +94,23 @@ class PreferenceManager {
if (overrides?.app?.enablePreferences !== undefined) {
mergedPreference.app.enablePreferences = overrides.app.enablePreferences;
}
+ if (overrides?.app?.enableCheckUpdates !== undefined) {
+ mergedPreference.app.enableCheckUpdates = overrides.app.enableCheckUpdates;
+ }
+ if (overrides?.shortcutKeys) {
+ mergedPreference.shortcutKeys = merge(
+ {},
+ overrides.shortcutKeys,
+ mergedPreference.shortcutKeys,
+ );
+ }
+ if (overrides?.widget) {
+ mergedPreference.widget = merge(
+ {},
+ overrides.widget,
+ mergedPreference.widget,
+ );
+ }
if (overrides?.logo?.source) {
mergedPreference.logo.source = overrides.logo.source;
}
diff --git a/web/packages/effects/layouts/src/authentication/toolbar.vue b/web/packages/effects/layouts/src/authentication/toolbar.vue
index 94d321a..3b8d8ec 100644
--- a/web/packages/effects/layouts/src/authentication/toolbar.vue
+++ b/web/packages/effects/layouts/src/authentication/toolbar.vue
@@ -5,12 +5,10 @@ import { computed } from 'vue';
import { preferences } from '@vben/preferences';
-import {
- AuthenticationColorToggle,
- AuthenticationLayoutToggle,
- LanguageToggle,
- ThemeToggle,
-} from '../widgets';
+import AuthenticationColorToggle from '../widgets/color-toggle.vue';
+import LanguageToggle from '../widgets/language-toggle.vue';
+import AuthenticationLayoutToggle from '../widgets/layout-toggle.vue';
+import ThemeToggle from '../widgets/theme-toggle/theme-toggle.vue';
interface Props {
toolbarList?: ToolbarType[];
diff --git a/web/packages/effects/layouts/src/basic/header/header.vue b/web/packages/effects/layouts/src/basic/header/header.vue
index 26c92a6..e864903 100644
--- a/web/packages/effects/layouts/src/basic/header/header.vue
+++ b/web/packages/effects/layouts/src/basic/header/header.vue
@@ -1,20 +1,27 @@
@@ -125,11 +113,6 @@ function clearPreferencesAndLogout() {
:key="slot.name"
>
-
-
-
-
-
@@ -158,12 +141,6 @@ function clearPreferencesAndLogout() {
/>
-
-
-
diff --git a/web/packages/effects/layouts/src/basic/layout.vue b/web/packages/effects/layouts/src/basic/layout.vue
index 694143c..0e27578 100644
--- a/web/packages/effects/layouts/src/basic/layout.vue
+++ b/web/packages/effects/layouts/src/basic/layout.vue
@@ -14,13 +14,12 @@ import {
updatePreferences,
usePreferences,
} from '@vben/preferences';
-import { useAccessStore } from '@vben/stores';
import { cloneDeep, mapTree } from '@vben/utils';
import { VbenAdminLayout } from '@vben-core/layout-ui';
import { VbenBackTop, VbenLogo } from '@vben-core/shadcn-ui';
-import { Breadcrumb, CheckUpdates, Preferences } from '../widgets';
+import Breadcrumb from '../widgets/breadcrumb.vue';
import { LayoutContent, LayoutContentSpinner } from './content';
import { Copyright } from './copyright';
import { LayoutFooter } from './footer';
@@ -36,7 +35,7 @@ import { LayoutTabbar } from './tabbar';
defineOptions({ name: 'BasicLayout' });
-const emit = defineEmits<{ clearPreferencesAndLogout: []; clickLogo: [] }>();
+const emit = defineEmits<{ clickLogo: [] }>();
const {
isDark,
@@ -47,11 +46,9 @@ const {
isHeaderMixedNav,
isHeaderSidebarNav,
layout,
- preferencesButtonPosition,
sidebarCollapsed,
theme,
} = usePreferences();
-const accessStore = useAccessStore();
const { refresh } = useRefresh();
const sidebarTheme = computed(() => {
@@ -147,10 +144,6 @@ function toggleSidebar() {
});
}
-function clearPreferencesAndLogout() {
- emit('clearPreferencesAndLogout');
-}
-
function clickLogo() {
emit('clickLogo');
}
@@ -271,10 +264,7 @@ const headerSlots = computed(() => {
-
+
{
-
-
-
-
-
-
-
-
-
diff --git a/web/packages/effects/layouts/src/index.ts b/web/packages/effects/layouts/src/index.ts
index 124a44a..2b18040 100644
--- a/web/packages/effects/layouts/src/index.ts
+++ b/web/packages/effects/layouts/src/index.ts
@@ -1,4 +1,3 @@
export * from './authentication';
export * from './basic';
export * from './iframe';
-export * from './widgets';
diff --git a/web/packages/effects/layouts/src/widgets/user-dropdown/user-dropdown.vue b/web/packages/effects/layouts/src/widgets/user-dropdown/user-dropdown.vue
index 20177e3..71eadb6 100644
--- a/web/packages/effects/layouts/src/widgets/user-dropdown/user-dropdown.vue
+++ b/web/packages/effects/layouts/src/widgets/user-dropdown/user-dropdown.vue
@@ -6,10 +6,9 @@ import type { AnyFunction } from '@vben/types';
import { type CSSProperties, computed, useTemplateRef, watch } from 'vue';
import { useHoverToggle } from '@vben/hooks';
-import { LockKeyhole, LogOut } from '@vben/icons';
+import { LogOut } from '@vben/icons';
import { $t } from '@vben/locales';
import { preferences, usePreferences } from '@vben/preferences';
-import { useAccessStore } from '@vben/stores';
import { isWindowsOs } from '@vben/utils';
import { useVbenModal } from '@vben-core/popup-ui';
@@ -28,8 +27,6 @@ import {
import { useMagicKeys, whenever } from '@vueuse/core';
-import { LockScreenModal } from '../lock-screen';
-
interface Props {
/**
* 头像
@@ -148,12 +145,7 @@ const fallbackAvatarStyle = computed(() => ({
fontWeight: 600,
}));
-const { globalLockScreenShortcutKey, globalLogoutShortcutKey } =
- usePreferences();
-const accessStore = useAccessStore();
-const [LockModal, lockModalApi] = useVbenModal({
- connectedComponent: LockScreenModal,
-});
+const { globalLogoutShortcutKey } = usePreferences();
const [LogoutModal, logoutModalApi] = useVbenModal({
onConfirm() {
handleSubmitLogout();
@@ -187,23 +179,10 @@ const enableLogoutShortcutKey = computed(() => {
return props.enableShortcutKey && globalLogoutShortcutKey.value;
});
-const enableLockScreenShortcutKey = computed(() => {
- return props.enableShortcutKey && globalLockScreenShortcutKey.value;
-});
-
const enableShortcutKey = computed(() => {
return props.enableShortcutKey && preferences.shortcutKeys.enable;
});
-function handleOpenLock() {
- lockModalApi.open();
-}
-
-function handleSubmitLock(lockScreenPassword: string) {
- lockModalApi.close();
- accessStore.lockScreen(lockScreenPassword);
-}
-
function handleLogout() {
// emit
logoutModalApi.open();
@@ -222,23 +201,10 @@ if (enableShortcutKey.value) {
handleLogout();
}
});
-
- whenever(keys['Alt+KeyL']!, () => {
- if (enableLockScreenShortcutKey.value) {
- handleOpenLock();
- }
- });
}
-
-
-
-
- {{ $t('ui.widgets.lockScreen.title') }}
-
- {{ altView }} L
-
-
-