UNPKG

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.

90 lines (84 loc) 3 kB
// ** React Imports import { useState } from 'react' // ** MUI Imports import List from '@mui/material/List' import Avatar from '@mui/material/Avatar' import ListItem from '@mui/material/ListItem' import Checkbox from '@mui/material/Checkbox' import ListItemText from '@mui/material/ListItemText' import ListItemButton from '@mui/material/ListItemButton' import ListItemAvatar from '@mui/material/ListItemAvatar' import ListItemSecondaryAction from '@mui/material/ListItemSecondaryAction' const ListWithCheckbox = () => { // ** State const [checked, setChecked] = useState([0]) const handleToggle = value => () => { const currentIndex = checked.indexOf(value) const newChecked = [...checked] if (currentIndex === -1) { newChecked.push(value) } else { newChecked.splice(currentIndex, 1) } setChecked(newChecked) } return ( <List> <ListItem disablePadding> <ListItemButton onClick={handleToggle(0)}> <ListItemAvatar> <Avatar src='/images/avatars/2.png' alt='Caroline Black' /> </ListItemAvatar> <ListItemText id='checkbox-list-label-0' primary='Caroline Black' /> <ListItemSecondaryAction> <Checkbox edge='end' tabIndex={-1} disableRipple onChange={handleToggle(0)} checked={checked.indexOf(0) !== -1} inputProps={{ 'aria-labelledby': 'checkbox-list-label-0' }} /> </ListItemSecondaryAction> </ListItemButton> </ListItem> <ListItem disablePadding> <ListItemButton onClick={handleToggle(1)}> <ListItemAvatar> <Avatar src='/images/avatars/1.png' alt='Alfred Copeland' /> </ListItemAvatar> <ListItemText id='checkbox-list-label-1' primary='Alfred Copeland' /> <ListItemSecondaryAction> <Checkbox edge='end' tabIndex={-1} disableRipple onChange={handleToggle(1)} checked={checked.indexOf(1) !== -1} inputProps={{ 'aria-labelledby': 'checkbox-list-label-1' }} /> </ListItemSecondaryAction> </ListItemButton> </ListItem> <ListItem disablePadding> <ListItemButton onClick={handleToggle(2)}> <ListItemAvatar> <Avatar src='/images/avatars/8.png' alt='Celia Schneider' /> </ListItemAvatar> <ListItemText id='checkbox-list-label-2' primary='Celia Schneider' /> <ListItemSecondaryAction> <Checkbox edge='end' tabIndex={-1} disableRipple onChange={handleToggle(2)} checked={checked.indexOf(2) !== -1} inputProps={{ 'aria-labelledby': 'checkbox-list-label-2' }} /> </ListItemSecondaryAction> </ListItemButton> </ListItem> </List> ) } export default ListWithCheckbox