|
@@ -7,13 +7,14 @@ import type {
|
|
LayoutHeaderModeType,
|
|
LayoutHeaderModeType,
|
|
LayoutType,
|
|
LayoutType,
|
|
NavigationStyleType,
|
|
NavigationStyleType,
|
|
|
|
+ PreferencesButtonPositionType,
|
|
ThemeModeType,
|
|
ThemeModeType,
|
|
} from '@vben/types';
|
|
} from '@vben/types';
|
|
import type { SegmentedItem } from '@vben-core/shadcn-ui';
|
|
import type { SegmentedItem } from '@vben-core/shadcn-ui';
|
|
|
|
|
|
import { computed, ref } from 'vue';
|
|
import { computed, ref } from 'vue';
|
|
|
|
|
|
-import { Copy, RotateCw, Settings2 } from '@vben/icons';
|
|
|
|
|
|
+import { Copy, RotateCw, Settings } from '@vben/icons';
|
|
import { $t, loadLocaleMessages } from '@vben/locales';
|
|
import { $t, loadLocaleMessages } from '@vben/locales';
|
|
import {
|
|
import {
|
|
clearPreferencesCache,
|
|
clearPreferencesCache,
|
|
@@ -63,6 +64,9 @@ const appColorWeakMode = defineModel<boolean>('appColorWeakMode');
|
|
const appContentCompact = defineModel<ContentCompactType>('appContentCompact');
|
|
const appContentCompact = defineModel<ContentCompactType>('appContentCompact');
|
|
const appWatermark = defineModel<boolean>('appWatermark');
|
|
const appWatermark = defineModel<boolean>('appWatermark');
|
|
const appEnableCheckUpdates = defineModel<boolean>('appEnableCheckUpdates');
|
|
const appEnableCheckUpdates = defineModel<boolean>('appEnableCheckUpdates');
|
|
|
|
+const appPreferencesButtonPosition = defineModel<PreferencesButtonPositionType>(
|
|
|
|
+ 'appPreferencesButtonPosition',
|
|
|
|
+);
|
|
|
|
|
|
const transitionProgress = defineModel<boolean>('transitionProgress');
|
|
const transitionProgress = defineModel<boolean>('transitionProgress');
|
|
const transitionName = defineModel<string>('transitionName');
|
|
const transitionName = defineModel<string>('transitionName');
|
|
@@ -220,19 +224,21 @@ async function handleReset() {
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<template>
|
|
<template>
|
|
- <div class="z-100 fixed right-0 top-1/2">
|
|
|
|
|
|
+ <div>
|
|
<VbenSheet
|
|
<VbenSheet
|
|
v-model:open="openPreferences"
|
|
v-model:open="openPreferences"
|
|
:description="$t('preferences.subtitle')"
|
|
:description="$t('preferences.subtitle')"
|
|
:title="$t('preferences.title')"
|
|
:title="$t('preferences.title')"
|
|
>
|
|
>
|
|
<template #trigger>
|
|
<template #trigger>
|
|
- <VbenButton
|
|
|
|
- :title="$t('preferences.title')"
|
|
|
|
- class="bg-primary flex-col-center h-10 w-10 cursor-pointer rounded-l-lg rounded-r-none border-none"
|
|
|
|
- >
|
|
|
|
- <Settings2 class="size-5" />
|
|
|
|
- </VbenButton>
|
|
|
|
|
|
+ <slot name="trigger">
|
|
|
|
+ <VbenButton
|
|
|
|
+ :title="$t('preferences.title')"
|
|
|
|
+ class="bg-primary flex-col-center size-10 cursor-pointer rounded-l-lg rounded-r-none border-none"
|
|
|
|
+ >
|
|
|
|
+ <Settings class="size-5" />
|
|
|
|
+ </VbenButton>
|
|
|
|
+ </slot>
|
|
</template>
|
|
</template>
|
|
<template #extra>
|
|
<template #extra>
|
|
<div class="flex items-center">
|
|
<div class="flex items-center">
|
|
@@ -358,6 +364,9 @@ async function handleReset() {
|
|
</Block>
|
|
</Block>
|
|
<Block :title="$t('preferences.widget.title')">
|
|
<Block :title="$t('preferences.widget.title')">
|
|
<Widget
|
|
<Widget
|
|
|
|
+ v-model:app-preferences-button-position="
|
|
|
|
+ appPreferencesButtonPosition
|
|
|
|
+ "
|
|
v-model:widget-fullscreen="widgetFullscreen"
|
|
v-model:widget-fullscreen="widgetFullscreen"
|
|
v-model:widget-global-search="widgetGlobalSearch"
|
|
v-model:widget-global-search="widgetGlobalSearch"
|
|
v-model:widget-language-toggle="widgetLanguageToggle"
|
|
v-model:widget-language-toggle="widgetLanguageToggle"
|