Skip to content

Commit ecff41f

Browse files
committed
feat: add confirm dialog for clearing all entries
1 parent 05d651e commit ecff41f

File tree

5 files changed

+37
-4
lines changed

5 files changed

+37
-4
lines changed

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Button, Group, IconClearAll, Modal, Stack, Title, useDisclosure, useForm } from "@quassel/ui";
1+
import { Button, Group, IconClearAll, Modal, modals, Stack, Title, useDisclosure, useForm, Text } from "@quassel/ui";
22
import { createFileRoute, Link, useNavigate } from "@tanstack/react-router";
33
import { i18n } from "../../../../../stores/i18n";
44
import { useStore } from "@nanostores/react";
@@ -17,6 +17,10 @@ const messages = i18n("questionnaireEntries", {
1717
gapsDialogTitle: "Gaps detected in the calendar",
1818
gapsDialogContinueAnyway: "Continue anyway",
1919
gapsDialogHighlightGaps: "Highlight gaps",
20+
confirmClearDialogTitle: "Clear all entries from this questionnaire?",
21+
confirmClearDialogDescription: "When confirming, all entries from this questionnaires will be removed. This action can't be undone.",
22+
confirmClearDialogCancel: "Cancel",
23+
confirmClearDialogConfirm: "Clear all",
2024
});
2125

2226
export function Entries() {
@@ -53,7 +57,12 @@ export function Entries() {
5357
};
5458

5559
const handleClearEntries = () => {
56-
removeAllEntriesMutation.mutate({ params: { query: { questionnaireId: questionnaire.id } } });
60+
modals.openConfirmModal({
61+
title: t.confirmClearDialogTitle,
62+
children: <Text size="sm">{t.confirmClearDialogDescription}</Text>,
63+
labels: { cancel: t.confirmClearDialogCancel, confirm: t.confirmClearDialogConfirm },
64+
onConfirm: () => removeAllEntriesMutation.mutate({ params: { query: { questionnaireId: questionnaire.id } } }),
65+
});
5766
};
5867

5968
useEffect(() => {

libs/ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"@mantine/dates": "7.17.2",
3434
"@mantine/form": "7.17.2",
3535
"@mantine/hooks": "7.17.2",
36+
"@mantine/modals": "^7.17.2",
3637
"@mantine/notifications": "7.17.2",
3738
"@tabler/icons-react": "^3.31.0",
3839
"dayjs": "^1.11.13",

libs/ui/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ export { useDisclosure, useFullscreen } from "@mantine/hooks";
9999

100100
export { notifications, type NotificationData } from "@mantine/notifications";
101101

102+
export { modals } from "@mantine/modals";
103+
102104
export { useForm, isInRange, isNotEmpty } from "@mantine/form";
103105

104106
export {

libs/ui/src/theme/ThemeProvider.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import utc from "dayjs/plugin/utc";
66
import { DefaultMantineColor, MantineColorsTuple } from "@mantine/core";
77
import { Notifications } from "@mantine/notifications";
88
import { convertUZHColorsToMantine, UZHColor, uzhColors } from "./uzh";
9+
import { ModalsProvider } from "@mantine/modals";
910

1011
dayjs.extend(utc);
1112

@@ -37,8 +38,10 @@ export function ThemeProvider({ children, ...args }: ThemeProviderProps) {
3738
return (
3839
<DatesProvider settings={{ timezone: "UTC" }}>
3940
<MantineProvider {...args} theme={theme}>
40-
<Notifications />
41-
{children}
41+
<ModalsProvider>
42+
<Notifications />
43+
{children}
44+
</ModalsProvider>
4245
</MantineProvider>
4346
</DatesProvider>
4447
);

pnpm-lock.yaml

Lines changed: 18 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)