Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 

87 rader
2.5 KiB

  1. "use client";
  2. import { useCallback, useState } from "react";
  3. import { useTranslation } from "react-i18next";
  4. import Button from "@mui/material/Button";
  5. import Stack from "@mui/material/Stack";
  6. import { Add } from "@mui/icons-material";
  7. import { Typography } from "@mui/material";
  8. import EnterTimesheetModal from "../EnterTimesheet/EnterTimesheetModal";
  9. import EnterLeaveModal from "../EnterLeave/EnterLeaveModal";
  10. import ButtonGroup from "@mui/material/ButtonGroup";
  11. import AssignedProjects from "./AssignedProjects";
  12. import { ProjectHours } from "./UserWorkspaceWrapper";
  13. import TimesheetModal from "../TimesheetModal";
  14. export interface Props {
  15. allProjects: ProjectHours[];
  16. }
  17. const UserWorkspacePage: React.FC<Props> = ({ allProjects }) => {
  18. const [isTimeheetModalVisible, setTimeheetModalVisible] = useState(false);
  19. const [isLeaveModalVisible, setLeaveModalVisible] = useState(false);
  20. const { t } = useTranslation("home");
  21. const handleAddTimesheetButtonClick = useCallback(() => {
  22. setTimeheetModalVisible(true);
  23. }, []);
  24. const handleCloseTimesheetModal = useCallback(() => {
  25. setTimeheetModalVisible(false);
  26. }, []);
  27. const handleAddLeaveButtonClick = useCallback(() => {
  28. setLeaveModalVisible(true);
  29. }, []);
  30. const handleCloseLeaveModal = useCallback(() => {
  31. setLeaveModalVisible(false);
  32. }, []);
  33. return (
  34. <>
  35. <Stack
  36. direction="row"
  37. justifyContent="space-between"
  38. flexWrap="wrap"
  39. rowGap={2}
  40. >
  41. <Typography variant="h4" marginInlineEnd={2}>
  42. {t("User Workspace")}
  43. </Typography>
  44. <Stack
  45. direction="row"
  46. justifyContent="right"
  47. flexWrap="wrap"
  48. spacing={2}
  49. >
  50. <ButtonGroup variant="contained">
  51. <Button startIcon={<Add />} onClick={handleAddTimesheetButtonClick}>
  52. {t("Enter Time")}
  53. </Button>
  54. <Button startIcon={<Add />} onClick={handleAddLeaveButtonClick}>
  55. {t("Record Leave")}
  56. </Button>
  57. </ButtonGroup>
  58. </Stack>
  59. </Stack>
  60. <EnterTimesheetModal
  61. isOpen={isTimeheetModalVisible}
  62. onClose={handleCloseTimesheetModal}
  63. />
  64. {/* <EnterLeaveModal
  65. isOpen={isLeaveModalVisible}
  66. onClose={handleCloseLeaveModal}
  67. /> */}
  68. <TimesheetModal
  69. timesheetType="leave"
  70. isOpen={isLeaveModalVisible}
  71. onClose={handleCloseLeaveModal}
  72. />
  73. <AssignedProjects allProjects={allProjects} />
  74. </>
  75. );
  76. };
  77. export default UserWorkspacePage;