(props)
| 28 | Contains the project creation functionality |
| 29 | */ |
| 30 | function ProjectForm(props) { |
| 31 | const { |
| 32 | onComplete = () => {}, |
| 33 | hideType = false, |
| 34 | onClose, |
| 35 | open, |
| 36 | } = props; |
| 37 | |
| 38 | const [loading, setLoading] = useState(false); |
| 39 | const [newProject, setNewProject] = useState({}); |
| 40 | const [error, setError] = useState(""); |
| 41 | const [activeMenu, setActiveMenu] = useState("empty"); |
| 42 | const [createdProject, setCreatedProject] = useState(null); |
| 43 | const modalDialogClassName = useMemo(() => { |
| 44 | if (activeMenu === "empty") return "sm:max-w-xl"; |
| 45 | return "sm:max-w-5xl"; |
| 46 | }, [activeMenu]); |
| 47 | const [communityTemplate, setCommunityTemplate] = useState(""); |
| 48 | |
| 49 | const team = useSelector(selectTeam); |
| 50 | const connections = useSelector(selectConnections); |
| 51 | |
| 52 | const dispatch = useDispatch(); |
| 53 | |
| 54 | const _onCreateProject = (noRedirect) => { |
| 55 | setLoading(true); |
| 56 | return dispatch(createProject({ data: newProject })) |
| 57 | .then((project) => { |
| 58 | setLoading(false); |
| 59 | setNewProject({}); |
| 60 | setCreatedProject(project.payload); |
| 61 | |
| 62 | if (noRedirect) return project.payload; |
| 63 | |
| 64 | return onComplete(project.payload); |
| 65 | }) |
| 66 | .catch((error) => { |
| 67 | setLoading(false); |
| 68 | setError(error); |
| 69 | }); |
| 70 | }; |
| 71 | |
| 72 | const _onCompleteTemplate = () => { |
| 73 | setTimeout(() => { |
| 74 | onComplete(createdProject, false); |
| 75 | }, 1000); |
| 76 | }; |
| 77 | |
| 78 | return ( |
| 79 | <Modal> |
| 80 | <Modal.Backdrop isOpen={open} onOpenChange={onClose}> |
| 81 | <Modal.Container scroll="inside"> |
| 82 | <Modal.Dialog className={modalDialogClassName}> |
| 83 | <Modal.CloseTrigger /> |
| 84 | <Modal.Header> |
| 85 | <Modal.Heading className="text-2xl font-semibold"> |
| 86 | Create a new dashboard |
| 87 | </Modal.Heading> |
nothing calls this directly
no test coverage detected