Advertisement
didkoslawow

Untitled

Sep 28th, 2023
702
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useEffect, useState } from 'react';
  2. import { Link, useNavigate, useParams } from 'react-router-dom';
  3. import { addUserToHousehold, getUserHouseholdById } from '../../services/householdsService.js';
  4. import { IconButton, InputLabel, MenuItem, Paper, Popover, Select, SpeedDial, SpeedDialAction } from '@mui/material';
  5. import { AddHomeSharp, Close, ExtensionSharp, HomeSharp, ModeEditSharp, ShareRounded } from '@mui/icons-material';
  6. import { useForm } from 'react-hook-form';
  7. import {
  8.     iconButtonStyles,
  9.     menuItemStyles,
  10.     paperStyles,
  11.     selectStyles,
  12.     speedDialActionStyles,
  13.     speedDialStyles,
  14. } from '../../../public/styles/muiStyles/details.js';
  15.  
  16. const Details = () => {
  17.     const navigate = useNavigate();
  18.     const token = localStorage.getItem('authToken');
  19.     const { householdId } = useParams();
  20.     const { register, handleSubmit, reset } = useForm();
  21.     const [household, setHousehold] = useState({});
  22.     const [isPopupOpen, setIsPopupOpen] = useState(false);
  23.     const [anchorEl, setAnchorEl] = useState(null);
  24.     const [role, setRole] = useState('Resident');
  25.  
  26.     useEffect(() => {
  27.         getUserHouseholdById(householdId, token).then((h) => setHousehold(h));
  28.     }, [token]);
  29.  
  30.     const handlePopupOpen = (event) => {
  31.         setAnchorEl(event.currentTarget);
  32.         setIsPopupOpen(true);
  33.     };
  34.  
  35.     const handlePopupClose = () => {
  36.         setAnchorEl(null);
  37.         setIsPopupOpen(false);
  38.     };
  39.  
  40.     const onSelect = (e) => {
  41.         setRole(e.target.value);
  42.     };
  43.  
  44.     const onAddUserToHousehold = async ({ username, role }) => {
  45.         await addUserToHousehold(username, role, householdId, token);
  46.         setIsPopupOpen(false);
  47.         reset();
  48.         navigate('/household/details/' + householdId);
  49.     };
  50.  
  51.     return (
  52.         <div className="details-container">
  53.             <img className="details-image" src="/details-household.jpg" alt="detail-household" />
  54.             <div className="details-content">
  55.                 <h4 className="details-header border-bottom">{household.name}</h4>
  56.                 <p className="details-text">
  57.                     Lorem ipsum dolor sit amet consectetur adipisicing elit. Incidunt exercitationem ratione suscipit porro nihil
  58.                     beatae doloremque ullam, nobis voluptate perferendis!
  59.                 </p>
  60.                 <div className="details-speed-dial">
  61.                     <SpeedDial sx={speedDialStyles} ariaLabel="Household Controls" direction="right" icon={<HomeSharp />}>
  62.                         <SpeedDialAction
  63.                             sx={speedDialActionStyles}
  64.                             key={'Add Household Member'}
  65.                             icon={
  66.                                 <Link className="details-speed-dial-link" onClick={(event) => handlePopupOpen(event)}>
  67.                                     <AddHomeSharp />
  68.                                 </Link>
  69.                             }
  70.                             tooltipTitle={'Add Household Member'}
  71.                         />
  72.                         <SpeedDialAction
  73.                             sx={speedDialActionStyles}
  74.                             key={'Edit Household'}
  75.                             icon={
  76.                                 <Link className="details-speed-dial-link">
  77.                                     <ModeEditSharp />
  78.                                 </Link>
  79.                             }
  80.                             tooltipTitle={'Edit Household'}
  81.                         />
  82.                         <SpeedDialAction
  83.                             sx={speedDialActionStyles}
  84.                             key={'Household Extras'}
  85.                             icon={
  86.                                 <Link className="details-speed-dial-link">
  87.                                     <ExtensionSharp />
  88.                                 </Link>
  89.                             }
  90.                             tooltipTitle={'Household Extras'}
  91.                         />
  92.                         <SpeedDialAction
  93.                             sx={speedDialActionStyles}
  94.                             key={'Share Household'}
  95.                             icon={
  96.                                 <Link className="details-speed-dial-link">
  97.                                     <ShareRounded />
  98.                                 </Link>
  99.                             }
  100.                             tooltipTitle={'Share Household'}
  101.                         />
  102.                     </SpeedDial>
  103.                 </div>
  104.                 <Popover
  105.                     open={isPopupOpen}
  106.                     anchorEl={anchorEl}
  107.                     onClose={handlePopupClose}
  108.                     anchorOrigin={{
  109.                         vertical: 'center',
  110.                         horizontal: 'right',
  111.                     }}
  112.                     transformOrigin={{
  113.                         vertical: 'top',
  114.                         horizontal: 'left',
  115.                     }}>
  116.                     <Paper sx={paperStyles}>
  117.                         <IconButton aria-label="close" onClick={handlePopupClose} sx={iconButtonStyles}>
  118.                             <Close />
  119.                         </IconButton>
  120.                         <div className="popup-form-container"></div>
  121.                         <h4 className="border-bottom">Add household member</h4>
  122.                         <form className="popup-form" onSubmit={handleSubmit(onAddUserToHousehold)}>
  123.                             <label htmlFor="username">Username</label>
  124.                             <input
  125.                                 className="details-popup-input"
  126.                                 type="text"
  127.                                 placeholder="Username to add?"
  128.                                 {...register('username')}
  129.                             />
  130.                             <InputLabel sx={{ color: 'var(--dark-blue)' }}>Roles</InputLabel>
  131.                             <Select
  132.                                 MenuProps={{ MenuListProps: { disablePadding: true } }}
  133.                                 sx={selectStyles}
  134.                                 {...register('role')}
  135.                                 onChange={onSelect}
  136.                                 labelId="role-select"
  137.                                 id="role-select"
  138.                                 value={role}
  139.                                 label="Role">
  140.                                 <MenuItem sx={menuItemStyles} value={'Master'}>
  141.                                     Master
  142.                                 </MenuItem>
  143.                                 <MenuItem sx={menuItemStyles} value={'Resident'}>
  144.                                     Resident
  145.                                 </MenuItem>
  146.                             </Select>
  147.                             <input type="submit" name="button" value="ADD" className="button-action add-button" />
  148.                         </form>
  149.                     </Paper>
  150.                 </Popover>
  151.             </div>
  152.         </div>
  153.     );
  154. };
  155.  
  156. export default Details;
  157.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement