|
|
|
@ -16,7 +16,7 @@ import type { SegmentedItem } from '@vben-core/shadcn-ui'; |
|
|
|
|
|
|
|
import { computed, ref } from 'vue'; |
|
|
|
|
|
|
|
import { Copy, RotateCw } from '@vben/icons'; |
|
|
|
import { Copy, Pin, PinOff, RotateCw } from '@vben/icons'; |
|
|
|
import { $t, loadLocaleMessages } from '@vben/locales'; |
|
|
|
import { |
|
|
|
clearPreferencesCache, |
|
|
|
@ -69,6 +69,9 @@ const appContentCompact = defineModel<ContentCompactType>('appContentCompact'); |
|
|
|
const appWatermark = defineModel<boolean>('appWatermark'); |
|
|
|
const appWatermarkContent = defineModel<string>('appWatermarkContent'); |
|
|
|
const appEnableCheckUpdates = defineModel<boolean>('appEnableCheckUpdates'); |
|
|
|
const appEnableStickyPreferencesNavigationBar = defineModel<boolean>( |
|
|
|
'appEnableStickyPreferencesNavigationBar', |
|
|
|
); |
|
|
|
const appPreferencesButtonPosition = defineModel<PreferencesButtonPositionType>( |
|
|
|
'appPreferencesButtonPosition', |
|
|
|
); |
|
|
|
@ -241,7 +244,7 @@ async function handleReset() { |
|
|
|
<Drawer |
|
|
|
:description="$t('preferences.subtitle')" |
|
|
|
:title="$t('preferences.title')" |
|
|
|
class="sm:max-w-sm" |
|
|
|
class="!border-0 sm:max-w-sm" |
|
|
|
> |
|
|
|
<template #extra> |
|
|
|
<div class="flex items-center"> |
|
|
|
@ -249,18 +252,44 @@ async function handleReset() { |
|
|
|
:disabled="!diffPreference" |
|
|
|
:tooltip="$t('preferences.resetTip')" |
|
|
|
class="relative" |
|
|
|
@click="handleReset" |
|
|
|
> |
|
|
|
<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" /> |
|
|
|
<RotateCw class="size-4" /> |
|
|
|
</VbenIconButton> |
|
|
|
<VbenIconButton |
|
|
|
:tooltip=" |
|
|
|
appEnableStickyPreferencesNavigationBar |
|
|
|
? $t('preferences.disableStickyPreferencesNavigationBar') |
|
|
|
: $t('preferences.enableStickyPreferencesNavigationBar') |
|
|
|
" |
|
|
|
class="relative" |
|
|
|
@click=" |
|
|
|
() => |
|
|
|
(appEnableStickyPreferencesNavigationBar = |
|
|
|
!appEnableStickyPreferencesNavigationBar) |
|
|
|
" |
|
|
|
> |
|
|
|
<PinOff |
|
|
|
v-if="appEnableStickyPreferencesNavigationBar" |
|
|
|
class="size-4" |
|
|
|
/> |
|
|
|
<Pin v-else class="size-4" /> |
|
|
|
</VbenIconButton> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<div class="p-1"> |
|
|
|
<VbenSegmented v-model="activeTab" :tabs="tabs"> |
|
|
|
<div> |
|
|
|
<VbenSegmented |
|
|
|
v-model="activeTab" |
|
|
|
:tabs="tabs" |
|
|
|
:class="{ |
|
|
|
'sticky-tabs-header': appEnableStickyPreferencesNavigationBar, |
|
|
|
}" |
|
|
|
> |
|
|
|
<template #general> |
|
|
|
<Block :title="$t('preferences.general')"> |
|
|
|
<General |
|
|
|
@ -449,3 +478,11 @@ async function handleReset() { |
|
|
|
</Drawer> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
<style scoped> |
|
|
|
:deep(.sticky-tabs-header [role='tablist']) { |
|
|
|
position: sticky; |
|
|
|
top: -12px; |
|
|
|
z-index: 10; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|