ArticleListModal.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { useState } from "react";
  2. import { Modal } from "antd";
  3. import ArticleList from "./ArticleList";
  4. interface IWidget {
  5. studioName?: string;
  6. trigger?: React.ReactNode;
  7. multiple?: boolean;
  8. onSelect?: Function;
  9. }
  10. const ArticleListModalWidget = ({
  11. studioName,
  12. trigger = "Article",
  13. multiple = true,
  14. onSelect,
  15. }: IWidget) => {
  16. const [isModalOpen, setIsModalOpen] = useState(false);
  17. const showModal = () => {
  18. setIsModalOpen(true);
  19. };
  20. const handleOk = () => {
  21. setIsModalOpen(false);
  22. };
  23. const handleCancel = () => {
  24. setIsModalOpen(false);
  25. };
  26. return (
  27. <>
  28. <span onClick={showModal}>{trigger}</span>
  29. <Modal
  30. width={"80%"}
  31. title="文章列表"
  32. open={isModalOpen}
  33. onOk={handleOk}
  34. onCancel={handleCancel}
  35. >
  36. <ArticleList
  37. studioName={studioName}
  38. editable={false}
  39. multiple={multiple}
  40. onSelect={(id: string, title: string) => {
  41. if (typeof onSelect !== "undefined") {
  42. onSelect(id, title);
  43. }
  44. handleOk();
  45. }}
  46. />
  47. </Modal>
  48. </>
  49. );
  50. };
  51. export default ArticleListModalWidget;