import { observer } from 'mobx-react-lite'; import React from 'react'; import { useStore } from 'App/mstore'; import { Button, CircularLoader, Form, Input, Loader } from 'UI'; import Select from 'Shared/Select'; const SelectedValue = ({ icon, text }) => { return (
{icon} {text}
); }; function IssueForm(props) { const { closeHandler } = props; const { issueReportingStore } = useStore(); const creating = issueReportingStore.createLoading; const projects = issueReportingStore.projects; const projectsLoading = issueReportingStore.projectsLoading; const users = issueReportingStore.users; const instance = issueReportingStore.instance; const metaLoading = issueReportingStore.metaLoading; const issueTypes = issueReportingStore.issueTypes; const addActivity = issueReportingStore.saveIssue; const init = issueReportingStore.init; const edit = issueReportingStore.editInstance; const fetchMeta = issueReportingStore.fetchMeta; React.useEffect(() => { init({ projectId: projects[0] ? projects[0].id : '', issueType: issueTypes[0] ? issueTypes[0].id : '', }); }, []); React.useEffect(() => { if (instance?.projectId) { fetchMeta(instance?.projectId).then(() => { edit({ issueType: '', assignee: '', projectId: instance?.projectId, }); }); } }, [instance?.projectId]); const onSubmit = () => { const { sessionId } = props; addActivity(sessionId, instance).then(() => { const { errors } = props; if (!errors || errors.length === 0) { init({ projectId: instance?.projectId }); void issueReportingStore.fetchList(sessionId); closeHandler(); } }); }; const write = (e) => { const { target: { name, value }, } = e; edit({ [name]: value }); }; const writeOption = ({ name, value }) => edit({ [name]: value.value }); const projectOptions = projects.map(({ name, id }) => ({ label: name, value: id, })); const userOptions = users.map(({ name, id }) => ({ label: name, value: id })); const issueTypeOptions = issueTypes.map(({ name, id, iconUrl, color }) => { return { label: name, value: id, iconUrl, color }; }); const selectedIssueType = issueTypes.filter( (issue) => issue.id == instance?.issueType )[0]; return (
) : ( '' ) } />