react-garden
Version:
React + TypeScript + ThreeJS app using Material UI on NextJS, Apollo Client, GraphQL + WordPress REST APIs, for ThreeD web development.. a part of the threed.ai code family.
96 lines (88 loc) • 3.19 kB
JavaScript
// ** React Imports
import { Fragment, useState } from 'react'
// ** MUI Imports
import Button from '@mui/material/Button'
import Switch from '@mui/material/Switch'
import Dialog from '@mui/material/Dialog'
import MenuItem from '@mui/material/MenuItem'
import InputLabel from '@mui/material/InputLabel'
import DialogTitle from '@mui/material/DialogTitle'
import FormControl from '@mui/material/FormControl'
import DialogActions from '@mui/material/DialogActions'
import DialogContent from '@mui/material/DialogContent'
import { styled } from '@mui/material/styles'
import FormControlLabel from '@mui/material/FormControlLabel'
import DialogContentText from '@mui/material/DialogContentText'
import Select from '@mui/material/Select'
// Styled component for the form
const Form = styled('form')({
margin: 'auto',
display: 'flex',
width: 'fit-content',
flexDirection: 'column'
})
const DialogSizes = () => {
// ** States
const [open, setOpen] = useState(false)
const [fullWidth, setFullWidth] = useState(true)
const [maxWidth, setMaxWidth] = useState('sm')
const handleClickOpen = () => setOpen(true)
const handleClose = () => setOpen(false)
const handleMaxWidthChange = event => {
setMaxWidth(event.target.value)
}
const handleFullWidthChange = event => {
setFullWidth(event.target.checked)
}
return (
<>
<Button variant='outlined' onClick={handleClickOpen}>
Open dialog
</Button>
<Dialog
open={open}
maxWidth={maxWidth}
fullWidth={fullWidth}
onClose={handleClose}
aria-labelledby='max-width-dialog-title'
>
<DialogTitle id='max-width-dialog-title'>Optional sizes</DialogTitle>
<DialogContent>
<DialogContentText sx={{ mb: 4 }}>
You can set my maximum width and whether to adapt or not.
</DialogContentText>
<Form noValidate>
<FormControl sx={{ mt: 2, minWidth: 120 }}>
<InputLabel htmlFor='max-width'>maxWidth</InputLabel>
<Select
label='maxWidth'
value={maxWidth}
onChange={handleMaxWidthChange}
inputProps={{
name: 'max-width',
id: 'max-width'
}}
>
<MenuItem value={false}>false</MenuItem>
<MenuItem value='xs'>xs</MenuItem>
<MenuItem value='sm'>sm</MenuItem>
<MenuItem value='md'>md</MenuItem>
<MenuItem value='lg'>lg</MenuItem>
<MenuItem value='xl'>xl</MenuItem>
</Select>
</FormControl>
<FormControlLabel
label='Full width'
sx={{ mt: 2 }}
control={<Switch checked={fullWidth} onChange={handleFullWidthChange} />}
/>
</Form>
</DialogContent>
<DialogActions className='dialog-actions-dense'>
<Button onClick={handleClose}>Close</Button>
</DialogActions>
</Dialog>
</>
)
}
export default DialogSizes