Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

60 строки
1.8 KiB

  1. // material-ui
  2. import {
  3. Typography
  4. } from '@mui/material';
  5. import MainCard from "../../components/MainCard";
  6. import * as React from "react";
  7. import {useEffect, useState} from "react";
  8. import LoadingComponent from "../extra-pages/LoadingComponent";
  9. import UserGroupTable from "./UserGroupTable";
  10. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  11. const UserGroupCard = ({isCollectData, updateUserGroupList,userData}) => {
  12. const [currentUserData, setCurrentUserData] = React.useState({});
  13. const [onReady, setOnReady] = useState(false);
  14. const [selectedRow, setSelectedRow] = useState([]);
  15. useEffect(() => {
  16. //if user data from parent are not null
  17. if (Object.keys(userData).length > 0 && userData !== undefined) {
  18. setCurrentUserData(userData.data);
  19. setSelectedRow(userData.groupIds);
  20. }
  21. }, [userData]);
  22. useEffect(() => {
  23. //if state data are ready and assign to different field
  24. if (Object.keys(userData).length > 0 &&currentUserData !== undefined) {
  25. setOnReady(true);
  26. }
  27. }, [currentUserData]);
  28. useEffect(() => {
  29. //upload latest data to parent
  30. updateUserGroupList(selectedRow);
  31. }, [isCollectData]);
  32. return (
  33. !onReady ?
  34. <LoadingComponent/>
  35. :
  36. <MainCard elevation={0}
  37. border={false}
  38. content={false}
  39. >
  40. <Typography variant="h5" sx={{mt: 3, ml: 3}}>
  41. Group(s)
  42. </Typography>
  43. <UserGroupTable
  44. userGroup={userData.groupIds}
  45. setSelectedRow={setSelectedRow}
  46. />
  47. </MainCard>
  48. );
  49. };
  50. export default UserGroupCard;