From b28e4d932775383005f357be0834616176a23a4c Mon Sep 17 00:00:00 2001 From: dfreier Date: Sun, 22 May 2022 17:02:06 +0200 Subject: [PATCH 1/5] feat(useColorMode): add option to return `auto` mode --- packages/core/useColorMode/component.ts | 2 +- packages/core/useColorMode/index.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/core/useColorMode/component.ts b/packages/core/useColorMode/component.ts index 13e54b25f75..c45ec52be64 100644 --- a/packages/core/useColorMode/component.ts +++ b/packages/core/useColorMode/component.ts @@ -4,7 +4,7 @@ import { useColorMode } from '.' export const UseColorMode = defineComponent({ name: 'UseColorMode', - props: ['selector', 'attribute', 'modes', 'onChanged', 'storageKey', 'storage'] as unknown as undefined, + props: ['selector', 'attribute', 'modes', 'onChanged', 'storageKey', 'storage', 'omitAuto'] as unknown as undefined, setup(props, { slots }) { const mode = useColorMode(props) const data = reactive({ diff --git a/packages/core/useColorMode/index.ts b/packages/core/useColorMode/index.ts index 9fde2d75d2a..1007466b94a 100644 --- a/packages/core/useColorMode/index.ts +++ b/packages/core/useColorMode/index.ts @@ -60,6 +60,15 @@ export interface UseColorModeOptions extend * @default localStorage */ storage?: StorageLike + + /** + * Omit `auto` mode from state + * + * When set to `true`, preferred mode is translated into `light` or `dark` + * + * @default true + */ + omitAuto?: boolean } /** @@ -77,6 +86,7 @@ export function useColorMode(options: UseCo storageKey = 'vueuse-color-scheme', listenToStorageChanges = true, storageRef, + omitAuto = true, } = options const modes = { @@ -95,7 +105,7 @@ export function useColorMode(options: UseCo const state = computed({ get() { - return store.value === 'auto' + return store.value === 'auto' && omitAuto ? preferredMode.value : store.value }, From bc31ca63b84ebea8dc0d0c6e5d08f71b0461464f Mon Sep 17 00:00:00 2001 From: dfreier Date: Sun, 22 May 2022 17:03:14 +0200 Subject: [PATCH 2/5] docs(useColorMode): document new `omitAuto` option --- packages/core/useColorMode/demo.vue | 4 +++- packages/core/useColorMode/index.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/useColorMode/demo.vue b/packages/core/useColorMode/demo.vue index a8ce85ec26b..e4d808114a1 100644 --- a/packages/core/useColorMode/demo.vue +++ b/packages/core/useColorMode/demo.vue @@ -2,13 +2,14 @@ import { useColorMode, useCycleList } from '@vueuse/core' const mode = useColorMode({ + omitAuto: false, modes: { contrast: 'dark contrast', cafe: 'cafe', }, }) -const { next } = useCycleList(['dark', 'light', 'cafe', 'contrast'], { initialValue: mode }) +const { next } = useCycleList(['dark', 'light', 'cafe', 'contrast', 'auto'], { initialValue: mode })