| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import React, { useEffect, useState } from "react";
- import { Modal } from "antd";
- import ChannelPickerTable from "./ChannelPickerTable";
- import { IChannel } from "./Channel";
- import { ArticleType } from "../article/Article";
- interface IWidget {
- trigger?: React.ReactNode;
- type?: ArticleType | "editable";
- articleId?: string;
- multiSelect?: boolean;
- open?: boolean;
- defaultOwner?: string;
- onClose?: Function;
- onSelect?: Function;
- }
- const ChannelPickerWidget = ({
- trigger,
- type,
- articleId,
- multiSelect = true,
- open = false,
- defaultOwner,
- onClose,
- onSelect,
- }: IWidget) => {
- const [isModalOpen, setIsModalOpen] = useState(open);
- useEffect(() => {
- setIsModalOpen(open);
- }, [open]);
- const showModal = () => {
- setIsModalOpen(true);
- };
- const handleOk = () => {
- setIsModalOpen(false);
- if (typeof onClose !== "undefined") {
- onClose();
- }
- };
- const handleCancel = () => {
- setIsModalOpen(false);
- if (typeof onClose !== "undefined") {
- onClose();
- }
- };
- return (
- <>
- <span onClick={showModal}>{trigger}</span>
- <Modal
- width={"80%"}
- title="选择版本风格"
- footer={false}
- open={isModalOpen}
- onOk={handleOk}
- onCancel={handleCancel}
- >
- <ChannelPickerTable
- type={type}
- articleId={articleId}
- multiSelect={multiSelect}
- defaultOwner={defaultOwner}
- onSelect={(channels: IChannel[]) => {
- console.log(channels);
- handleCancel();
- if (typeof onClose !== "undefined") {
- onClose();
- }
- if (typeof onSelect !== "undefined") {
- onSelect(channels);
- }
- }}
- />
- </Modal>
- </>
- );
- };
- export default ChannelPickerWidget;
|