* chore(deps): bump the non-breaking-changes group across 1 directory with 22 updates Bumps the non-breaking-changes group with 22 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `22.5.1` | `22.5.2` | | [lint-staged](https://github.com/lint-staged/lint-staged) | `15.2.9` | `15.2.10` | | [turbo](https://github.com/vercel/turborepo) | `2.1.0` | `2.1.1` | | [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `5.4.2` | `5.4.3` | | [vue](https://github.com/vuejs/core) | `3.4.38` | `3.5.0` | | [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc) | `2.1.2` | `2.1.4` | | [@iconify/json](https://github.com/iconify/icon-sets) | `2.2.242` | `2.2.243` | | [postcss](https://github.com/postcss/postcss) | `8.4.41` | `8.4.44` | | [@jspm/generator](https://github.com/jspm/generator) | `2.1.3` | `2.2.0` | | [vite-plugin-pwa](https://github.com/vite-pwa/vite-plugin-pwa) | `0.20.2` | `0.20.3` | | [vite-plugin-vue-devtools](https://github.com/vuejs/devtools-next/tree/HEAD/packages/vite) | `7.3.9` | `7.4.0` | | [vite-plugin-dts](https://github.com/qmhc/vite-plugin-dts) | `4.0.3` | `4.1.0` | | [eslint-config-turbo](https://github.com/vercel/turborepo/tree/HEAD/packages/eslint-config-turbo) | `2.1.0` | `2.1.1` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.3.0` | `8.4.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.3.0` | `8.4.0` | | [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue) | `9.27.0` | `9.28.0` | | [lucide-vue-next](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-vue-next) | `0.436.0` | `0.438.0` | | [@vue/shared](https://github.com/vuejs/core/tree/HEAD/packages/shared) | `3.4.38` | `3.5.0` | | [sortablejs](https://github.com/SortableJS/Sortable) | `1.15.2` | `1.15.3` | | [axios](https://github.com/axios/axios) | `1.7.5` | `1.7.7` | | [@nolebase/vitepress-plugin-git-changelog](https://github.com/nolebase/integrations/tree/HEAD/packages/vitepress-plugin-git-changelog) | `2.4.0` | `2.5.0` | | [@vite-pwa/vitepress](https://github.com/vite-pwa/vitepress) | `0.5.0` | `0.5.1` | Updates `@types/node` from 22.5.1 to 22.5.2 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `lint-staged` from 15.2.9 to 15.2.10 - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/master/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v15.2.9...v15.2.10) Updates `turbo` from 2.1.0 to 2.1.1 - [Release notes](https://github.com/vercel/turborepo/releases) - [Changelog](https://github.com/vercel/turborepo/blob/main/release.md) - [Commits](https://github.com/vercel/turborepo/compare/v2.1.0...v2.1.1) Updates `vite` from 5.4.2 to 5.4.3 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.3/packages/vite) Updates `vue` from 3.4.38 to 3.5.0 - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/compare/v3.4.38...v3.5.0) Updates `vue-tsc` from 2.1.2 to 2.1.4 - [Release notes](https://github.com/vuejs/language-tools/releases) - [Changelog](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md) - [Commits](https://github.com/vuejs/language-tools/commits/v2.1.4/packages/tsc) Updates `@iconify/json` from 2.2.242 to 2.2.243 - [Commits](https://github.com/iconify/icon-sets/compare/2.2.242...2.2.243) Updates `postcss` from 8.4.41 to 8.4.44 - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.41...8.4.44) Updates `@jspm/generator` from 2.1.3 to 2.2.0 - [Release notes](https://github.com/jspm/generator/releases) - [Commits](https://github.com/jspm/generator/compare/2.1.3...2.2.0) Updates `vite-plugin-pwa` from 0.20.2 to 0.20.3 - [Release notes](https://github.com/vite-pwa/vite-plugin-pwa/releases) - [Commits](https://github.com/vite-pwa/vite-plugin-pwa/compare/v0.20.2...v0.20.3) Updates `vite-plugin-vue-devtools` from 7.3.9 to 7.4.0 - [Release notes](https://github.com/vuejs/devtools-next/releases) - [Commits](https://github.com/vuejs/devtools-next/commits/v7.4.0/packages/vite) Updates `vite-plugin-dts` from 4.0.3 to 4.1.0 - [Release notes](https://github.com/qmhc/vite-plugin-dts/releases) - [Changelog](https://github.com/qmhc/vite-plugin-dts/blob/main/CHANGELOG.md) - [Commits](https://github.com/qmhc/vite-plugin-dts/compare/v4.0.3...v4.1.0) Updates `eslint-config-turbo` from 2.1.0 to 2.1.1 - [Release notes](https://github.com/vercel/turborepo/releases) - [Changelog](https://github.com/vercel/turborepo/blob/main/release.md) - [Commits](https://github.com/vercel/turborepo/commits/v2.1.1/packages/eslint-config-turbo) Updates `@typescript-eslint/eslint-plugin` from 8.3.0 to 8.4.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.4.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.3.0 to 8.4.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.4.0/packages/parser) Updates `eslint-plugin-vue` from 9.27.0 to 9.28.0 - [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases) - [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v9.27.0...v9.28.0) Updates `lucide-vue-next` from 0.436.0 to 0.438.0 - [Release notes](https://github.com/lucide-icons/lucide/releases) - [Commits](https://github.com/lucide-icons/lucide/commits/0.438.0/packages/lucide-vue-next) Updates `@vue/shared` from 3.4.38 to 3.5.0 - [Release notes](https://github.com/vuejs/core/releases) - [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md) - [Commits](https://github.com/vuejs/core/commits/v3.5.0/packages/shared) Updates `sortablejs` from 1.15.2 to 1.15.3 - [Release notes](https://github.com/SortableJS/Sortable/releases) - [Commits](https://github.com/SortableJS/Sortable/compare/1.15.2...1.15.3) Updates `axios` from 1.7.5 to 1.7.7 - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v1.7.5...v1.7.7) Updates `@nolebase/vitepress-plugin-git-changelog` from 2.4.0 to 2.5.0 - [Release notes](https://github.com/nolebase/integrations/releases) - [Commits](https://github.com/nolebase/integrations/commits/v2.5.0/packages/vitepress-plugin-git-changelog) Updates `@vite-pwa/vitepress` from 0.5.0 to 0.5.1 - [Release notes](https://github.com/vite-pwa/vitepress/releases) - [Commits](https://github.com/vite-pwa/vitepress/compare/v0.5.0...v0.5.1) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: lint-staged dependency-type: direct:development update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: turbo dependency-type: direct:development update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: vite dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: vue dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: vue-tsc dependency-type: direct:development update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: "@iconify/json" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: postcss dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: "@jspm/generator" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: vite-plugin-pwa dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: vite-plugin-vue-devtools dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: vite-plugin-dts dependency-type: direct:development update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: eslint-config-turbo dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: eslint-plugin-vue dependency-type: direct:development update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: lucide-vue-next dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: "@vue/shared" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: sortablejs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: axios dependency-type: direct:production update-type: version-update:semver-patch dependency-group: non-breaking-changes - dependency-name: "@nolebase/vitepress-plugin-git-changelog" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: non-breaking-changes - dependency-name: "@vite-pwa/vitepress" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: non-breaking-changes ... Signed-off-by: dependabot[bot] <support@github.com> * chore: update deps --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
422 lines
14 KiB
Vue
422 lines
14 KiB
Vue
<script setup lang="ts">
|
|
import type { SupportedLanguagesType } from '@vben/locales';
|
|
import type {
|
|
BreadcrumbStyleType,
|
|
BuiltinThemeType,
|
|
ContentCompactType,
|
|
LayoutHeaderModeType,
|
|
LayoutType,
|
|
NavigationStyleType,
|
|
PreferencesButtonPositionType,
|
|
ThemeModeType,
|
|
} from '@vben/types';
|
|
import type { SegmentedItem } from '@vben-core/shadcn-ui';
|
|
|
|
import { computed, ref } from 'vue';
|
|
|
|
import { Copy, RotateCw } from '@vben/icons';
|
|
import { $t, loadLocaleMessages } from '@vben/locales';
|
|
import {
|
|
clearPreferencesCache,
|
|
preferences,
|
|
resetPreferences,
|
|
usePreferences,
|
|
} from '@vben/preferences';
|
|
import { useVbenDrawer } from '@vben-core/popup-ui';
|
|
import {
|
|
useToast,
|
|
VbenButton,
|
|
VbenIconButton,
|
|
VbenSegmented,
|
|
} from '@vben-core/shadcn-ui';
|
|
|
|
import { useClipboard } from '@vueuse/core';
|
|
|
|
import {
|
|
Animation,
|
|
Block,
|
|
Breadcrumb,
|
|
BuiltinTheme,
|
|
ColorMode,
|
|
Content,
|
|
Copyright,
|
|
Footer,
|
|
General,
|
|
GlobalShortcutKeys,
|
|
Header,
|
|
Layout,
|
|
Navigation,
|
|
Radius,
|
|
Sidebar,
|
|
Tabbar,
|
|
Theme,
|
|
Widget,
|
|
} from './blocks';
|
|
|
|
const emit = defineEmits<{ clearPreferencesAndLogout: [] }>();
|
|
const { toast } = useToast();
|
|
const appLocale = defineModel<SupportedLanguagesType>('appLocale');
|
|
const appDynamicTitle = defineModel<boolean>('appDynamicTitle');
|
|
const appLayout = defineModel<LayoutType>('appLayout');
|
|
const appColorGrayMode = defineModel<boolean>('appColorGrayMode');
|
|
const appColorWeakMode = defineModel<boolean>('appColorWeakMode');
|
|
const appContentCompact = defineModel<ContentCompactType>('appContentCompact');
|
|
const appWatermark = defineModel<boolean>('appWatermark');
|
|
const appEnableCheckUpdates = defineModel<boolean>('appEnableCheckUpdates');
|
|
const appPreferencesButtonPosition = defineModel<PreferencesButtonPositionType>(
|
|
'appPreferencesButtonPosition',
|
|
);
|
|
|
|
const transitionProgress = defineModel<boolean>('transitionProgress');
|
|
const transitionName = defineModel<string>('transitionName');
|
|
const transitionLoading = defineModel<boolean>('transitionLoading');
|
|
const transitionEnable = defineModel<boolean>('transitionEnable');
|
|
|
|
const themeColorPrimary = defineModel<string>('themeColorPrimary');
|
|
const themeBuiltinType = defineModel<BuiltinThemeType>('themeBuiltinType');
|
|
const themeMode = defineModel<ThemeModeType>('themeMode');
|
|
const themeRadius = defineModel<string>('themeRadius');
|
|
const themeSemiDarkSidebar = defineModel<boolean>('themeSemiDarkSidebar');
|
|
const themeSemiDarkHeader = defineModel<boolean>('themeSemiDarkHeader');
|
|
|
|
const sidebarEnable = defineModel<boolean>('sidebarEnable');
|
|
const sidebarWidth = defineModel<number>('sidebarWidth');
|
|
const sidebarCollapsed = defineModel<boolean>('sidebarCollapsed');
|
|
const sidebarCollapsedShowTitle = defineModel<boolean>(
|
|
'sidebarCollapsedShowTitle',
|
|
);
|
|
|
|
const headerEnable = defineModel<boolean>('headerEnable');
|
|
const headerMode = defineModel<LayoutHeaderModeType>('headerMode');
|
|
|
|
const breadcrumbEnable = defineModel<boolean>('breadcrumbEnable');
|
|
const breadcrumbShowIcon = defineModel<boolean>('breadcrumbShowIcon');
|
|
const breadcrumbShowHome = defineModel<boolean>('breadcrumbShowHome');
|
|
const breadcrumbStyleType = defineModel<BreadcrumbStyleType>(
|
|
'breadcrumbStyleType',
|
|
);
|
|
const breadcrumbHideOnlyOne = defineModel<boolean>('breadcrumbHideOnlyOne');
|
|
|
|
const tabbarEnable = defineModel<boolean>('tabbarEnable');
|
|
const tabbarShowIcon = defineModel<boolean>('tabbarShowIcon');
|
|
const tabbarShowMore = defineModel<boolean>('tabbarShowMore');
|
|
const tabbarShowRefresh = defineModel<boolean>('tabbarShowRefresh');
|
|
const tabbarShowMaximize = defineModel<boolean>('tabbarShowMaximize');
|
|
const tabbarPersist = defineModel<boolean>('tabbarPersist');
|
|
const tabbarDragable = defineModel<boolean>('tabbarDragable');
|
|
const tabbarStyleType = defineModel<string>('tabbarStyleType');
|
|
|
|
const navigationStyleType = defineModel<NavigationStyleType>(
|
|
'navigationStyleType',
|
|
);
|
|
const navigationSplit = defineModel<boolean>('navigationSplit');
|
|
const navigationAccordion = defineModel<boolean>('navigationAccordion');
|
|
|
|
// const logoVisible = defineModel<boolean>('logoVisible');
|
|
|
|
const footerEnable = defineModel<boolean>('footerEnable');
|
|
const footerFixed = defineModel<boolean>('footerFixed');
|
|
|
|
const copyrightEnable = defineModel<boolean>('copyrightEnable');
|
|
const copyrightCompanyName = defineModel<string>('copyrightCompanyName');
|
|
const copyrightCompanySiteLink = defineModel<string>(
|
|
'copyrightCompanySiteLink',
|
|
);
|
|
const copyrightDate = defineModel<string>('copyrightDate');
|
|
const copyrightIcp = defineModel<string>('copyrightIcp');
|
|
const copyrightIcpLink = defineModel<string>('copyrightIcpLink');
|
|
|
|
const shortcutKeysEnable = defineModel<boolean>('shortcutKeysEnable');
|
|
const shortcutKeysGlobalSearch = defineModel<boolean>(
|
|
'shortcutKeysGlobalSearch',
|
|
);
|
|
const shortcutKeysGlobalLogout = defineModel<boolean>(
|
|
'shortcutKeysGlobalLogout',
|
|
);
|
|
|
|
const shortcutKeysGlobalLockScreen = defineModel<boolean>(
|
|
'shortcutKeysGlobalLockScreen',
|
|
);
|
|
|
|
const widgetGlobalSearch = defineModel<boolean>('widgetGlobalSearch');
|
|
const widgetFullscreen = defineModel<boolean>('widgetFullscreen');
|
|
const widgetLanguageToggle = defineModel<boolean>('widgetLanguageToggle');
|
|
const widgetNotification = defineModel<boolean>('widgetNotification');
|
|
const widgetThemeToggle = defineModel<boolean>('widgetThemeToggle');
|
|
const widgetSidebarToggle = defineModel<boolean>('widgetSidebarToggle');
|
|
const widgetLockScreen = defineModel<boolean>('widgetLockScreen');
|
|
|
|
const {
|
|
diffPreference,
|
|
isDark,
|
|
isFullContent,
|
|
isHeaderNav,
|
|
isMixedNav,
|
|
isSideMixedNav,
|
|
isSideMode,
|
|
isSideNav,
|
|
} = usePreferences();
|
|
const { copy } = useClipboard();
|
|
|
|
const [Drawer] = useVbenDrawer();
|
|
|
|
const activeTab = ref('appearance');
|
|
|
|
const tabs = computed((): SegmentedItem[] => {
|
|
return [
|
|
{
|
|
label: $t('preferences.appearance'),
|
|
value: 'appearance',
|
|
},
|
|
{
|
|
label: $t('preferences.layout'),
|
|
value: 'layout',
|
|
},
|
|
{
|
|
label: $t('preferences.shortcutKeys.title'),
|
|
value: 'shortcutKey',
|
|
},
|
|
{
|
|
label: $t('preferences.general'),
|
|
value: 'general',
|
|
},
|
|
];
|
|
});
|
|
|
|
const showBreadcrumbConfig = computed(() => {
|
|
return (
|
|
!isFullContent.value &&
|
|
!isMixedNav.value &&
|
|
!isHeaderNav.value &&
|
|
preferences.header.enable
|
|
);
|
|
});
|
|
|
|
async function handleCopy() {
|
|
await copy(JSON.stringify(diffPreference.value, null, 2));
|
|
|
|
toast({
|
|
description: $t('preferences.copyPreferences'),
|
|
title: $t('preferences.copyPreferencesSuccess'),
|
|
});
|
|
}
|
|
|
|
async function handleClearCache() {
|
|
resetPreferences();
|
|
clearPreferencesCache();
|
|
emit('clearPreferencesAndLogout');
|
|
}
|
|
|
|
async function handleReset() {
|
|
if (!diffPreference.value) {
|
|
return;
|
|
}
|
|
resetPreferences();
|
|
await loadLocaleMessages(preferences.app.locale);
|
|
toast({
|
|
description: $t('preferences.resetTitle'),
|
|
title: $t('preferences.resetSuccess'),
|
|
});
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<Drawer
|
|
:description="$t('preferences.subtitle')"
|
|
:title="$t('preferences.title')"
|
|
class="sm:max-w-sm"
|
|
>
|
|
<template #extra>
|
|
<div class="flex items-center">
|
|
<VbenIconButton
|
|
:disabled="!diffPreference"
|
|
:tooltip="$t('preferences.resetTip')"
|
|
class="relative"
|
|
>
|
|
<span
|
|
v-if="diffPreference"
|
|
class="bg-primary absolute right-0.5 top-0.5 h-2 w-2 rounded"
|
|
></span>
|
|
<RotateCw class="size-4" @click="handleReset" />
|
|
</VbenIconButton>
|
|
</div>
|
|
</template>
|
|
|
|
<div class="p-1">
|
|
<VbenSegmented v-model="activeTab" :tabs="tabs">
|
|
<template #general>
|
|
<Block :title="$t('preferences.general')">
|
|
<General
|
|
v-model:app-dynamic-title="appDynamicTitle"
|
|
v-model:app-enable-check-updates="appEnableCheckUpdates"
|
|
v-model:app-locale="appLocale"
|
|
v-model:app-watermark="appWatermark"
|
|
/>
|
|
</Block>
|
|
|
|
<Block :title="$t('preferences.animation.title')">
|
|
<Animation
|
|
v-model:transition-enable="transitionEnable"
|
|
v-model:transition-loading="transitionLoading"
|
|
v-model:transition-name="transitionName"
|
|
v-model:transition-progress="transitionProgress"
|
|
/>
|
|
</Block>
|
|
</template>
|
|
<template #appearance>
|
|
<Block :title="$t('preferences.theme.title')">
|
|
<Theme
|
|
v-model="themeMode"
|
|
v-model:theme-semi-dark-header="themeSemiDarkHeader"
|
|
v-model:theme-semi-dark-sidebar="themeSemiDarkSidebar"
|
|
/>
|
|
</Block>
|
|
<Block :title="$t('preferences.theme.builtin.title')">
|
|
<BuiltinTheme
|
|
v-model="themeBuiltinType"
|
|
v-model:theme-color-primary="themeColorPrimary"
|
|
:is-dark="isDark"
|
|
/>
|
|
</Block>
|
|
<Block :title="$t('preferences.theme.radius')">
|
|
<Radius v-model="themeRadius" />
|
|
</Block>
|
|
<Block :title="$t('preferences.other')">
|
|
<ColorMode
|
|
v-model:app-color-gray-mode="appColorGrayMode"
|
|
v-model:app-color-weak-mode="appColorWeakMode"
|
|
/>
|
|
</Block>
|
|
</template>
|
|
<template #layout>
|
|
<Block :title="$t('preferences.layout')">
|
|
<Layout v-model="appLayout" />
|
|
</Block>
|
|
<Block :title="$t('preferences.content')">
|
|
<Content v-model="appContentCompact" />
|
|
</Block>
|
|
|
|
<Block :title="$t('preferences.sidebar.title')">
|
|
<Sidebar
|
|
v-model:sidebar-collapsed="sidebarCollapsed"
|
|
v-model:sidebar-collapsed-show-title="sidebarCollapsedShowTitle"
|
|
v-model:sidebar-enable="sidebarEnable"
|
|
v-model:sidebar-width="sidebarWidth"
|
|
:disabled="!isSideMode"
|
|
/>
|
|
</Block>
|
|
|
|
<Block :title="$t('preferences.header.title')">
|
|
<Header
|
|
v-model:header-enable="headerEnable"
|
|
v-model:header-mode="headerMode"
|
|
:disabled="isFullContent"
|
|
/>
|
|
</Block>
|
|
|
|
<Block :title="$t('preferences.navigationMenu.title')">
|
|
<Navigation
|
|
v-model:navigation-accordion="navigationAccordion"
|
|
v-model:navigation-split="navigationSplit"
|
|
v-model:navigation-style-type="navigationStyleType"
|
|
:disabled="isFullContent"
|
|
:disabled-navigation-split="!isMixedNav"
|
|
/>
|
|
</Block>
|
|
|
|
<Block :title="$t('preferences.breadcrumb.title')">
|
|
<Breadcrumb
|
|
v-model:breadcrumb-enable="breadcrumbEnable"
|
|
v-model:breadcrumb-hide-only-one="breadcrumbHideOnlyOne"
|
|
v-model:breadcrumb-show-home="breadcrumbShowHome"
|
|
v-model:breadcrumb-show-icon="breadcrumbShowIcon"
|
|
v-model:breadcrumb-style-type="breadcrumbStyleType"
|
|
:disabled="
|
|
!showBreadcrumbConfig || !(isSideNav || isSideMixedNav)
|
|
"
|
|
/>
|
|
</Block>
|
|
<Block :title="$t('preferences.tabbar.title')">
|
|
<Tabbar
|
|
v-model:tabbar-dragable="tabbarDragable"
|
|
v-model:tabbar-enable="tabbarEnable"
|
|
v-model:tabbar-persist="tabbarPersist"
|
|
v-model:tabbar-show-icon="tabbarShowIcon"
|
|
v-model:tabbar-show-maximize="tabbarShowMaximize"
|
|
v-model:tabbar-show-more="tabbarShowMore"
|
|
v-model:tabbar-show-refresh="tabbarShowRefresh"
|
|
v-model:tabbar-style-type="tabbarStyleType"
|
|
/>
|
|
</Block>
|
|
<Block :title="$t('preferences.widget.title')">
|
|
<Widget
|
|
v-model:app-preferences-button-position="
|
|
appPreferencesButtonPosition
|
|
"
|
|
v-model:widget-fullscreen="widgetFullscreen"
|
|
v-model:widget-global-search="widgetGlobalSearch"
|
|
v-model:widget-language-toggle="widgetLanguageToggle"
|
|
v-model:widget-lock-screen="widgetLockScreen"
|
|
v-model:widget-notification="widgetNotification"
|
|
v-model:widget-sidebar-toggle="widgetSidebarToggle"
|
|
v-model:widget-theme-toggle="widgetThemeToggle"
|
|
/>
|
|
</Block>
|
|
<Block :title="$t('preferences.footer.title')">
|
|
<Footer
|
|
v-model:footer-enable="footerEnable"
|
|
v-model:footer-fixed="footerFixed"
|
|
/>
|
|
</Block>
|
|
<Block :title="$t('preferences.copyright.title')">
|
|
<Copyright
|
|
v-model:copyright-company-name="copyrightCompanyName"
|
|
v-model:copyright-company-site-link="copyrightCompanySiteLink"
|
|
v-model:copyright-date="copyrightDate"
|
|
v-model:copyright-enable="copyrightEnable"
|
|
v-model:copyright-icp="copyrightIcp"
|
|
v-model:copyright-icp-link="copyrightIcpLink"
|
|
:disabled="!footerEnable"
|
|
/>
|
|
</Block>
|
|
</template>
|
|
|
|
<template #shortcutKey>
|
|
<Block :title="$t('preferences.shortcutKeys.global')">
|
|
<GlobalShortcutKeys
|
|
v-model:shortcut-keys-enable="shortcutKeysEnable"
|
|
v-model:shortcut-keys-global-search="shortcutKeysGlobalSearch"
|
|
v-model:shortcut-keys-lock-screen="shortcutKeysGlobalLockScreen"
|
|
v-model:shortcut-keys-logout="shortcutKeysGlobalLogout"
|
|
/>
|
|
</Block>
|
|
</template>
|
|
</VbenSegmented>
|
|
</div>
|
|
|
|
<template #footer>
|
|
<VbenButton
|
|
:disabled="!diffPreference"
|
|
class="mx-4 w-full"
|
|
size="sm"
|
|
variant="default"
|
|
@click="handleCopy"
|
|
>
|
|
<Copy class="mr-2 size-3" />
|
|
{{ $t('preferences.copyPreferences') }}
|
|
</VbenButton>
|
|
<VbenButton
|
|
:disabled="!diffPreference"
|
|
class="mr-4 w-full"
|
|
size="sm"
|
|
variant="ghost"
|
|
@click="handleClearCache"
|
|
>
|
|
{{ $t('preferences.clearAndLogout') }}
|
|
</VbenButton>
|
|
</template>
|
|
</Drawer>
|
|
</div>
|
|
</template>
|