ChannelTableModal.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import React, { useEffect, useState } from "react";
  2. import { Modal } from "antd";
  3. import { ArticleType } from "../article/Article";
  4. import ChannelTable from "./ChannelTable";
  5. import { useAppSelector } from "../../hooks";
  6. import { currentUser as _currentUser } from "../../reducers/current-user";
  7. import { IChannel } from "./Channel";
  8. import { TChannelType } from "../api/Channel";
  9. interface IWidget {
  10. trigger?: React.ReactNode;
  11. channelType?: TChannelType;
  12. type?: ArticleType | "editable";
  13. articleId?: string;
  14. multiSelect?: boolean;
  15. disableChannels?: string[];
  16. open?: boolean;
  17. onClose?: Function;
  18. onSelect?: Function;
  19. }
  20. const ChannelTableModalWidget = ({
  21. trigger,
  22. type,
  23. articleId,
  24. multiSelect = true,
  25. disableChannels,
  26. channelType,
  27. open = false,
  28. onClose,
  29. onSelect,
  30. }: IWidget) => {
  31. const [isModalOpen, setIsModalOpen] = useState(open);
  32. const user = useAppSelector(_currentUser);
  33. useEffect(() => {
  34. setIsModalOpen(open);
  35. }, [open]);
  36. const showModal = () => {
  37. setIsModalOpen(true);
  38. };
  39. const handleOk = () => {
  40. setIsModalOpen(false);
  41. if (typeof onClose !== "undefined") {
  42. onClose();
  43. }
  44. };
  45. const handleCancel = () => {
  46. setIsModalOpen(false);
  47. if (typeof onClose !== "undefined") {
  48. onClose();
  49. }
  50. };
  51. return (
  52. <>
  53. <span onClick={showModal}>{trigger}</span>
  54. <Modal
  55. width={"90%"}
  56. title="选择版本风格"
  57. footer={false}
  58. open={isModalOpen}
  59. onOk={handleOk}
  60. onCancel={handleCancel}
  61. >
  62. <div style={{ overflowX: "scroll" }}>
  63. <ChannelTable
  64. studioName={user?.realName}
  65. type={type}
  66. channelType={channelType}
  67. disableChannels={disableChannels}
  68. onSelect={(channel: IChannel) => {
  69. handleCancel();
  70. if (typeof onClose !== "undefined") {
  71. onClose();
  72. }
  73. if (typeof onSelect !== "undefined") {
  74. onSelect(channel);
  75. }
  76. }}
  77. />
  78. </div>
  79. </Modal>
  80. </>
  81. );
  82. };
  83. export default ChannelTableModalWidget;