Skip to content

Commit b944119

Browse files
committed
chore: use composable
1 parent e7af59b commit b944119

3 files changed

Lines changed: 22 additions & 6 deletions

File tree

app/components/DateTime.vue

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const props = withDefaults(
3131
3232
const { locale } = useI18n()
3333
34-
const { settings } = useSettings()
34+
const { relativeDates, toggleRelativeDates } = useRelativeDates()
3535
3636
const dateFormatter = new Intl.DateTimeFormat(locale.value, {
3737
month: 'short',
@@ -48,17 +48,13 @@ const titleValue = computed(() => {
4848
const date = typeof props.datetime === 'string' ? new Date(props.datetime) : props.datetime
4949
return dateFormatter.format(date)
5050
})
51-
52-
function toggleRelativeDates() {
53-
settings.value.relativeDates = !settings.value.relativeDates
54-
}
5551
</script>
5652

5753
<template>
5854
<button type="button" @click="toggleRelativeDates">
5955
<ClientOnly>
6056
<NuxtTime
61-
v-if="settings.relativeDates"
57+
v-if="relativeDates"
6258
:datetime="datetime"
6359
:title="titleValue"
6460
relative

app/composables/useSettings.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,23 @@ export function useSettings() {
6262
}
6363
}
6464

65+
/**
66+
* Composable for accessing just the relative dates setting.
67+
* Useful for components that only need to read this specific setting.
68+
*/
69+
export function useRelativeDates() {
70+
const { settings } = useSettings()
71+
72+
function toggleRelativeDates() {
73+
settings.value.relativeDates = !settings.value.relativeDates
74+
}
75+
76+
return {
77+
relativeDates: computed(() => settings.value.relativeDates),
78+
toggleRelativeDates,
79+
}
80+
}
81+
6582
/**
6683
* Composable for managing accent color.
6784
*/

test/nuxt/components/DateTime.spec.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import DateTime from '~/components/DateTime.vue'
55
// Mock the useRelativeDates composable
66
const mockRelativeDates = shallowRef(false)
77
vi.mock('~/composables/useSettings', () => ({
8+
useRelativeDates: () => ({
9+
relativeDates: mockRelativeDates,
10+
}),
811
useSettings: () => ({
912
settings: ref({ relativeDates: mockRelativeDates.value }),
1013
}),

0 commit comments

Comments
 (0)