2
0

TaskEditDrawer.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { Button, Drawer, Space, Typography } from "antd";
  2. import { useEffect, useState } from "react";
  3. import type { ITaskData } from "../../api/task";
  4. import Task from "./Task";
  5. import { useIntl } from "react-intl";
  6. import { fullUrl } from "../../utils";
  7. import LikeAvatar from "../like/LikeAvatar";
  8. const { Text } = Typography;
  9. interface IWidget {
  10. taskId?: string;
  11. openDrawer?: boolean;
  12. onClose?: () => void;
  13. onChange?: (data: ITaskData[]) => void;
  14. }
  15. const TaskEditDrawer = ({
  16. taskId,
  17. openDrawer = false,
  18. onClose,
  19. onChange,
  20. }: IWidget) => {
  21. const [open, setOpen] = useState(openDrawer);
  22. const intl = useIntl();
  23. useEffect(() => {
  24. setOpen(openDrawer);
  25. }, [openDrawer]);
  26. const onCloseDrawer = () => {
  27. setOpen(false);
  28. if (document.getElementsByTagName("body")[0].hasAttribute("style")) {
  29. document.getElementsByTagName("body")[0].removeAttribute("style");
  30. }
  31. if (onClose) {
  32. onClose();
  33. }
  34. };
  35. return (
  36. <>
  37. <Drawer
  38. title={""}
  39. placement={"right"}
  40. width={1000}
  41. onClose={onCloseDrawer}
  42. open={open}
  43. destroyOnHidden={true}
  44. footer={
  45. <Space>
  46. <Text>关注</Text>
  47. <LikeAvatar resId={taskId} resType="task" type="watch" />
  48. </Space>
  49. }
  50. extra={
  51. <Button
  52. type="link"
  53. onClick={() => {
  54. window.open(fullUrl(`/article/task/${taskId}`), "_blank");
  55. }}
  56. >
  57. {intl.formatMessage(
  58. {
  59. id: "buttons.open.in.new.tab",
  60. },
  61. { item: intl.formatMessage({ id: "labels.task" }) }
  62. )}
  63. </Button>
  64. }
  65. >
  66. <Task taskId={taskId} onChange={onChange} />
  67. </Drawer>
  68. </>
  69. );
  70. };
  71. export default TaskEditDrawer;