feat: use Intl.DateTimeFormat for gantt weekdays (#2766)
Fixes https://kolaente.dev/vikunja/frontend/issues/2728 Co-authored-by: Dominik Pschenitschni <mail@celement.de> Reviewed-on: https://kolaente.dev/vikunja/frontend/pulls/2766 Reviewed-by: konrad <k@knt.li> Co-authored-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de> Co-committed-by: Dominik Pschenitschni <dpschen@noreply.kolaente.de>
This commit is contained in:

committed by
konrad

parent
963f3bfb07
commit
3b95824f58
@ -5,6 +5,8 @@ import {format, formatDistanceToNow, formatISO as formatISOfns} from 'date-fns'
|
||||
import {enGB, de, fr, ru} from 'date-fns/locale'
|
||||
|
||||
import {i18n} from '@/i18n'
|
||||
import { createSharedComposable, type MaybeRef } from '@vueuse/core'
|
||||
import { computed, unref } from 'vue'
|
||||
|
||||
const locales = {en: enGB, de, ch: de, fr, ru}
|
||||
|
||||
@ -50,3 +52,17 @@ export const formatDateSince = (date) => {
|
||||
export function formatISO(date) {
|
||||
return date ? formatISOfns(date) : ''
|
||||
}
|
||||
|
||||
/**
|
||||
* Because `Intl.DateTimeFormat` is expensive to instatiate we try to reuse it as often as possible,
|
||||
* by creating a shared composable.
|
||||
*/
|
||||
export const useDateTimeFormatter = createSharedComposable((options?: MaybeRef<Intl.DateTimeFormatOptions>) => {
|
||||
return computed(() => new Intl.DateTimeFormat(i18n.global.locale, unref(options)))
|
||||
})
|
||||
|
||||
export function useWeekDayFromDate() {
|
||||
const dateTimeFormatter = useDateTimeFormatter({ weekday: 'short' })
|
||||
|
||||
return computed(() => (date: Date) => dateTimeFormatter.value.format(date))
|
||||
}
|
Reference in New Issue
Block a user