Skip to content

Commit f56931a

Browse files
committed
feat: enhance texts in calendar entries
1 parent 923f6c2 commit f56931a

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed
Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
11
import { EventImpl } from "@fullcalendar/core/internal";
22
import { ExtendedEvent } from "../../../routes/_auth/questionnaire/_questionnaire/$id/entries";
3-
import { Flex } from "@quassel/ui";
3+
import { IconRepeat, Stack, Text } from "@quassel/ui";
4+
import { i18n } from "../../../stores/i18n";
5+
import { params } from "@nanostores/i18n";
6+
import { useStore } from "@nanostores/react";
47

58
type QuestionnaireEntryProps = {
69
event: EventImpl;
710
};
811

12+
const messages = i18n("questionnaireEntries", {
13+
labelRecurringWeekly: params("{weeks} weeks"),
14+
});
15+
916
export function QuestionnaireEntry({ event }: QuestionnaireEntryProps) {
17+
const { entryLanguages, weeklyRecurring } = event.extendedProps as ExtendedEvent["extendedProps"];
18+
19+
const t = useStore(messages);
20+
1021
return (
11-
<Flex direction={"column"}>
12-
<span>{event.title}</span>
13-
<span>{(event.extendedProps as ExtendedEvent["extendedProps"]).entryLanguages.map(({ language }) => language.name).join(", ")}</span>
14-
</Flex>
22+
<Stack gap={0}>
23+
<Text size="sm" fw="bold" truncate>
24+
{event.title}
25+
</Text>
26+
{entryLanguages.map(({ language }) => language.ietfBcp47).join(", ")}
27+
{weeklyRecurring && weeklyRecurring > 1 && (
28+
<Text mt="sm" size="sm">
29+
<IconRepeat size={13} /> {t.labelRecurringWeekly({ weeks: weeklyRecurring })}
30+
</Text>
31+
)}
32+
</Stack>
1533
);
1634
}

apps/frontend/src/routes/_auth/questionnaire/_questionnaire/$id/entries.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ import { EntityForm, EntryFormValues } from "../../../../../components/questionn
2424
import { useState } from "react";
2525
import { useQueryClient } from "@tanstack/react-query";
2626

27-
export type ExtendedEvent = EventInput & { extendedProps: { entryLanguages: components["schemas"]["EntryLanguageResponseDto"][] } };
27+
export type ExtendedEvent = EventInput & {
28+
extendedProps: { entryLanguages: components["schemas"]["EntryLanguageResponseDto"][]; weeklyRecurring?: number };
29+
};
2830

2931
const calendarBaseConfig: FullCalendar["props"] = {
3032
allDaySlot: false,
@@ -85,12 +87,12 @@ function QuestionnaireEntries() {
8587
});
8688

8789
const events: ExtendedEvent[] =
88-
questionnaire.entries?.map(({ startedAt, endedAt, weekday, carer, entryLanguages, id }) => ({
90+
questionnaire.entries?.map(({ startedAt, endedAt, weekday, carer, entryLanguages, id, weeklyRecurring }) => ({
8991
id: id.toString(),
9092
start: getDateFromTimeAndWeekday(startedAt, weekday),
9193
end: getDateFromTimeAndWeekday(endedAt, weekday),
9294
title: carer.name,
93-
extendedProps: { entryLanguages },
95+
extendedProps: { entryLanguages, weeklyRecurring },
9496
backgroundColor: theme.colors[theme.primaryColor][4],
9597
})) ?? [];
9698

libs/ui/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ export {
9797
IconCalendarWeek,
9898
IconMapSearch,
9999
IconMinus,
100+
IconRepeat,
100101
} from "@tabler/icons-react";
101102

102103
export { DSVImport } from "react-dsv-import";

0 commit comments

Comments
 (0)