Skip to content

Commit 0e6b292

Browse files
committed
Update WeekPicker computed locales after language change
1 parent ed55ebc commit 0e6b292

File tree

1 file changed

+19
-5
lines changed

1 file changed

+19
-5
lines changed

frontend/src/views/DashboardView/components/WeekPicker.vue

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import { useI18n } from 'vue-i18n';
44
import { dayjsKey } from '@/keys';
55
import { PhCaretLeft, PhCaretRight } from '@phosphor-icons/vue';
66
import { TimeFormatted } from '@/models';
7+
import { useUserStore } from '@/stores/user-store';
8+
import { getStartOfWeek, getEndOfWeek } from '@/utils';
79
810
const dj = inject(dayjsKey);
11+
const userStore = useUserStore();
912
1013
const props = defineProps<{
1114
onDateChange: (dateObj: TimeFormatted) => void,
@@ -21,24 +24,34 @@ const { t } = useI18n();
2124
const dateInputRef = ref<HTMLInputElement>();
2225
2326
// Computed values for accessibility
27+
// Access language setting to trigger recomputation when locale changes
2428
const currentWeekLabel = computed(() => {
29+
void userStore.data.settings.language;
2530
const startDate = dj(props.activeDateRange.start).format('L');
2631
const endDate = dj(props.activeDateRange.end).format('L');
2732
return startDate + '' + endDate;
2833
});
2934
3035
const previousWeekLabel = computed(() => {
36+
void userStore.data.settings.language;
3137
const prevStart = dj(props.activeDateRange.start).subtract(7, 'day').format('L');
3238
const prevEnd = dj(props.activeDateRange.start).subtract(1, 'day').format('L');
3339
return t('label.previousWeek') + ': ' + prevStart + '' + prevEnd;
3440
});
3541
3642
const nextWeekLabel = computed(() => {
43+
void userStore.data.settings.language;
3744
const nextStart = dj(props.activeDateRange.end).add(1, 'day').format('L');
3845
const nextEnd = dj(props.activeDateRange.end).add(7, 'day').format('L');
3946
return t('label.nextWeek') + ': ' + nextStart + '' + nextEnd;
4047
});
4148
49+
// Week picker button display text
50+
const weekPickerButtonText = computed(() => {
51+
void userStore.data.settings.language;
52+
return `${dj(props.activeDateRange.start).format('MMMM DD')} – ${dj(props.activeDateRange.end).format('MMMM DD')}`;
53+
});
54+
4255
function onPreviousWeekButtonClicked() {
4356
props.onDateChange({
4457
start: dj(props.activeDateRange.start).subtract(7, 'day').toString(),
@@ -63,12 +76,13 @@ function onDateSelected(event: Event) {
6376
6477
if (target.value) {
6578
const selectedDate = dj(target.value);
66-
const startOfWeek = selectedDate.startOf('week');
67-
const endOfWeek = selectedDate.endOf('week');
79+
const startOfWeekSetting = userStore.data.settings.startOfWeek ?? 7;
80+
const weekStart = getStartOfWeek(selectedDate, startOfWeekSetting);
81+
const weekEnd = getEndOfWeek(selectedDate, startOfWeekSetting);
6882
6983
props.onDateChange({
70-
start: startOfWeek.format('YYYY-MM-DD'),
71-
end: endOfWeek.format('YYYY-MM-DD'),
84+
start: weekStart.format('YYYY-MM-DD'),
85+
end: weekEnd.format('YYYY-MM-DD'),
7286
});
7387
}
7488
}
@@ -116,7 +130,7 @@ function onKeyDown(event: KeyboardEvent) {
116130
:aria-label="t('label.selectWeek') + ': ' + currentWeekLabel"
117131
:title="t('label.selectWeek')"
118132
>
119-
{{ dj(activeDateRange.start).format('MMMM DD') }} – {{ dj(activeDateRange.end).format('MMMM DD') }}
133+
{{ weekPickerButtonText }}
120134
</button>
121135

122136
<button

0 commit comments

Comments
 (0)