Skip to content

Commit 6f7c876

Browse files
committed
feat: allow resizing entries in calendar
1 parent c4f22cb commit 6f7c876

File tree

1 file changed

+25
-10
lines changed
  • apps/frontend/src/routes/_auth/questionnaire/_questionnaire/$id

1 file changed

+25
-10
lines changed

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

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ function QuestionnaireEntries() {
6666
setEntryUpdadingId(undefined);
6767
};
6868

69-
const handleOnSave = ({ carer, ...rest }: EntryFormValues) => {
69+
const handleCreate = ({ carer, ...rest }: EntryFormValues) => {
7070
if (selectedWeekday === undefined) return;
7171

7272
const entryRequest = {
@@ -76,10 +76,24 @@ function QuestionnaireEntries() {
7676
questionnaire: questionnaire.id,
7777
};
7878

79+
createMutation.mutate({ body: entryRequest }, { onSuccess: handleReset });
80+
};
81+
82+
const handleUpdate = (id: number, { carer, ...rest }: Partial<EntryFormValues>) => {
83+
const entryRequest = {
84+
...rest,
85+
carer: carer!,
86+
questionnaire: questionnaire.id,
87+
};
88+
89+
updateMutation.mutate({ body: entryRequest, params: { path: { id: id.toString() } } }, { onSuccess: handleReset });
90+
};
91+
92+
const handleOnSave = (entry: EntryFormValues | Partial<EntryFormValues>) => {
7993
if (!entryUpdatingId) {
80-
createMutation.mutate({ body: entryRequest }, { onSuccess: handleReset });
94+
handleCreate(entry as EntryFormValues);
8195
} else {
82-
updateMutation.mutate({ body: entryRequest, params: { path: { id: entryUpdatingId?.toString() } } }, { onSuccess: handleReset });
96+
handleUpdate(entryUpdatingId, entry);
8397
}
8498
};
8599

@@ -100,25 +114,26 @@ function QuestionnaireEntries() {
100114
editable
101115
events={events}
102116
selectable
103-
select={(args) => {
104-
setEntryDraft({ startedAt: getTime(args.start), endedAt: getTime(args.end) });
105-
setSelectedWeekday(args.start.getDay());
117+
select={({ start, end }) => {
118+
setEntryDraft({ startedAt: getTime(start), endedAt: getTime(end) });
119+
setSelectedWeekday(start.getDay());
106120
open();
107121
}}
108122
eventClick={(args) => {
109-
const { carer, entryLanguages, weekday, id } =
110-
questionnaire.entries?.find((entry) => entry.id.toString() === args.event.id) ?? {};
123+
const { carer, entryLanguages, id } = questionnaire.entries?.find((entry) => entry.id.toString() === args.event.id) ?? {};
111124

112-
setEntryUpdadingId(id);
113125
setEntryDraft({
114126
carer: carer?.id,
115127
startedAt: getTime(args.event.start!),
116128
endedAt: getTime(args.event.end!),
117129
entryLanguages: entryLanguages?.map(({ language, ...rest }) => ({ ...rest, language: language.id })),
118130
});
119-
setSelectedWeekday(weekday);
131+
setEntryUpdadingId(id);
120132
open();
121133
}}
134+
eventResize={({ event: { id, start, end } }) => {
135+
handleUpdate(parseInt(id), { startedAt: getTime(start!), endedAt: getTime(end!) });
136+
}}
122137
eventContent={({ event }) => <QuestionnaireEntry event={event} />}
123138
/>
124139
<Group>

0 commit comments

Comments
 (0)