From 7441d42a1aea6223bdd9c61a33331f4ae8ccacca Mon Sep 17 00:00:00 2001 From: Gauthier Roebroeck Date: Wed, 1 Apr 2026 10:52:31 +0800 Subject: [PATCH] add composable for presentation mode --- next-ui/src/composables/presentationMode.ts | 31 +++++++++++++++++++++ next-ui/src/pages/libraries/[id]/series.vue | 28 +++++-------------- 2 files changed, 38 insertions(+), 21 deletions(-) create mode 100644 next-ui/src/composables/presentationMode.ts diff --git a/next-ui/src/composables/presentationMode.ts b/next-ui/src/composables/presentationMode.ts new file mode 100644 index 00000000..98a6885c --- /dev/null +++ b/next-ui/src/composables/presentationMode.ts @@ -0,0 +1,31 @@ +import { useAppStore } from '@/stores/app' +import type { PresentationMode } from '@/types/libraries' +import { useDisplay } from 'vuetify' + +/** + * Provide easy access to presentation mode for a specific view. + * Presentation mode changes to `grid` on `xs` displays. + */ +export function usePresentationMode( + viewName: MaybeRefOrGetter, + defaultView: PresentationMode = 'grid', +) { + const appStore = useAppStore() + const display = useDisplay() + + const presentationMode = appStore.getPresentationMode(toValue(viewName), defaultView) + const presentationModeEffective = computed(() => + display.xs.value ? 'grid' : presentationMode.value, + ) + + return { + /** + * The chosen presentation mode. + */ + presentationMode: presentationMode, + /** + * The effective presentation mode. + */ + presentationModeEffective: presentationModeEffective, + } +} diff --git a/next-ui/src/pages/libraries/[id]/series.vue b/next-ui/src/pages/libraries/[id]/series.vue index 4f67e800..f6666002 100644 --- a/next-ui/src/pages/libraries/[id]/series.vue +++ b/next-ui/src/pages/libraries/[id]/series.vue @@ -195,17 +195,15 @@ show-select >