faranbutt789's picture
Pushing Frontend Code
8e40013
raw
history blame
1.36 kB
import { KeyboardArrowDown, KeyboardArrowUp } from "@mui/icons-material";
import {
Card,
CardContent,
CardHeader,
Collapse,
IconButton,
Stack,
} from "@mui/material";
import { ReactElement, useState } from "react";
type OptionsProps = {
children: ReactElement | ReactElement[];
opened?: boolean;
};
/**
* Define options that are hidden by default
*
* @param props OptionsProps
* @param props.opened boolean - Are the options visible or not (default)
*
* @returns Options
*/
export default function Options(props: OptionsProps) {
const { children, opened = false } = props;
const [showOptions, setShowOptions] = useState(opened);
const handleShowOptions = () => setShowOptions(!showOptions);
return (
<>
<Card>
<CardHeader
title="Options"
onClick={handleShowOptions}
action={
<IconButton aria-label="expand" size="small">
{showOptions ? <KeyboardArrowUp /> : <KeyboardArrowDown />}
</IconButton>
}
sx={{
cursor: "pointer",
}}
titleTypographyProps={{ variant: "h6", sx: { fontSize: "1em" } }}
/>
<Collapse in={showOptions}>
<CardContent>
<Stack spacing={2}>{children}</Stack>
</CardContent>
</Collapse>
</Card>
</>
);
}