refactor: update generic dialog to have title and maybe description

This commit is contained in:
Caio Cabral committed 2024-10-22 11:38:54 -04:00
1 parent 4fd11fbd1c
commit f1d331cdf8
5 files changed
+44 -79

No files matched your search

+26 -4
View File
@@ -1,10 +1,15 @@
import { Modal, Stack } from "@mui/material";
import { useId } from "react";
import PropTypes from "prop-types";
import { Modal, Stack, Typography } from "@mui/material";
const GenericDialog = ({ title, description, open, onClose, theme, children }) => {
const titleId = useId();
const descriptionId = useId();
const ariaDescribedBy = description?.length > 0 ? descriptionId : "";
return (
<Modal
aria-labelledby={title}
aria-describedby={description}
aria-labelledby={titleId}
aria-describedby={ariaDescribedBy}
open={open}
onClose={onClose}
>
@@ -27,6 +32,23 @@ const GenericDialog = ({ title, description, open, onClose, theme, children }) =
},
}}
>
<Typography
id={titleId}
component="h2"
fontSize={16}
color={theme.palette.text.primary}
fontWeight={600}
>
{title}
</Typography>
{description && (
<Typography
id={descriptionId}
color={theme.palette.text.tertiary}
>
{description}
</Typography>
)}
{children}
</Stack>
</Modal>
@@ -35,7 +57,7 @@ const GenericDialog = ({ title, description, open, onClose, theme, children }) =
GenericDialog.propTypes = {
title: PropTypes.string.isRequired,
description: PropTypes.string.isRequired,
description: PropTypes.string,
open: PropTypes.bool.isRequired,
onClose: PropTypes.func.isRequired,
theme: PropTypes.object.isRequired,
+9 -28
View File
@@ -1,46 +1,27 @@
import LoadingButton from "@mui/lab/LoadingButton";
import { Button, Stack, Typography } from "@mui/material";
import PropTypes from "prop-types";
import LoadingButton from "@mui/lab/LoadingButton";
import { Button, Stack } from "@mui/material";
import { GenericDialog } from "./genericDialog";
import { useId } from "react";
const Dialog = ({
title,
description,
open,
onClose,
theme,
title,
description,
onCancel,
confirmationButtonLabel,
onConfirm,
isLoading,
}) => {
const titleId = useId();
const descriptionId = useId();
return (
<GenericDialog
title={titleId}
description={descriptionId}
title={title}
description={description}
open={open}
onClose={onClose}
theme={theme}
>
<Typography
id={titleId}
component="h2"
fontSize={16}
color={theme.palette.text.primary}
fontWeight={600}
>
{title}
</Typography>
{description && (
<Typography
id={descriptionId}
color={theme.palette.text.tertiary}
>
{description}
</Typography>
)}
<Stack
direction="row"
gap={theme.spacing(4)}
@@ -68,11 +49,11 @@ const Dialog = ({
};
Dialog.propTypes = {
title: PropTypes.string.isRequired,
description: PropTypes.string,
open: PropTypes.bool.isRequired,
onClose: PropTypes.func.isRequired,
theme: PropTypes.object.isRequired,
title: PropTypes.string.isRequired,
description: PropTypes.string,
onCancel: PropTypes.func.isRequired,
confirmationButtonLabel: PropTypes.string.isRequired,
onConfirm: PropTypes.func.isRequired,