Skip to content

Commit 68b5a2c

Browse files
committed
feat: dialog for gaps detection confirmation
1 parent b1a664d commit 68b5a2c

File tree

1 file changed

+26
-3
lines changed
  • apps/frontend/src/routes/_auth/questionnaire/_questionnaire/$id

1 file changed

+26
-3
lines changed

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

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Button, Group, Stack, notifications, useForm } from "@quassel/ui";
1+
import { Button, Group, Modal, Stack, notifications, useDisclosure, useForm } from "@quassel/ui";
22
import { createFileRoute, Link, useNavigate } from "@tanstack/react-router";
33
import { i18n } from "../../../../../stores/i18n";
44
import { useStore } from "@nanostores/react";
@@ -16,6 +16,9 @@ const messages = i18n("questionnaireEntries", {
1616
addEntityLabel: "Add",
1717
notificationSuccessCreateLanguage: "Successfully add a new language.",
1818
notificationSuccessCreateCarer: "Successfully add a new carer.",
19+
gapsDialogTitle: "Gaps detected in the calendar",
20+
gapsDialogContinueAnyway: "Continue anyway",
21+
gapsDialogHighlightGaps: "Highlight gaps",
1922
});
2023

2124
function QuestionnaireEntries() {
@@ -80,6 +83,8 @@ function QuestionnaireEntries() {
8083
};
8184

8285
const [gaps, setGaps] = useState<GapsPerDay>();
86+
const [highlightGaps, setHighlightGaps] = useState(false);
87+
const [gapsDialogOpened, { open, close }] = useDisclosure();
8388

8489
const f = useForm<{ entries: components["schemas"]["QuestionnaireEntryDto"][] }>({
8590
initialValues: {
@@ -90,7 +95,10 @@ function QuestionnaireEntries() {
9095
const gaps = resolveGaps(value);
9196
setGaps(gaps);
9297

93-
return gaps.some((dailyGaps) => dailyGaps.length);
98+
const hasGaps = gaps.some(({ length }) => length);
99+
if (hasGaps) open();
100+
101+
return hasGaps;
94102
},
95103
},
96104
});
@@ -107,9 +115,24 @@ function QuestionnaireEntries() {
107115
<>
108116
<form onSubmit={f.onSubmit(handleSubmit)}>
109117
<Stack>
118+
<Modal opened={gapsDialogOpened} onClose={close} centered title={t.gapsDialogTitle}>
119+
<Group justify="flex-end">
120+
<Button onClick={handleSubmit} variant="light" type="submit">
121+
{t.gapsDialogContinueAnyway}
122+
</Button>
123+
<Button
124+
onClick={() => {
125+
setHighlightGaps(true);
126+
close();
127+
}}
128+
>
129+
{t.gapsDialogHighlightGaps}
130+
</Button>
131+
</Group>
132+
</Modal>
110133
<EntryCalendar
111134
entries={questionnaire.entries ?? []}
112-
gaps={gaps}
135+
gaps={highlightGaps ? gaps : undefined}
113136
onAddEntry={handleCreate}
114137
onUpdateEntry={handleUpdate}
115138
onDeleteEntry={handleDelete}

0 commit comments

Comments
 (0)