Skip to content

Commit

Permalink
feat: conditionally add payments form to milestones
Browse files Browse the repository at this point in the history
  • Loading branch information
mikevespi committed Jul 13, 2022
1 parent f9caec5 commit 2c22f53
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 35 deletions.
83 changes: 48 additions & 35 deletions app/components/Form/ProjectMilestoneReportForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ import { updateReportingRequirementFormChangeMutation } from "__generated__/upda
import { Disposable } from "relay-runtime";
import { discardMilestoneFormChangeMutation } from "__generated__/discardMilestoneFormChangeMutation.graphql";
import { updateFormChangeMutation } from "__generated__/updateFormChangeMutation.graphql";
import { UseMutationConfig } from "react-relay";
import { useFragment, UseMutationConfig, graphql } from "react-relay";
import {
paymentSchema,
paymentUiSchema,
} from "data/jsonSchemaForm/paymentSchema";
import { ProjectMilestoneReportForm_reportingReqiurement$key } from "__generated__/ProjectMilestoneReportForm_reportingReqiurement.graphql";

interface Props {
formRefs: MutableRefObject<{}>;
Expand Down Expand Up @@ -67,6 +68,16 @@ const ProjectMilestoneReportForm: React.FC<Props> = ({
generatedMilestoneSchema,
connections,
}) => {
const { hasExpenses } = useFragment(
graphql`
fragment ProjectMilestoneReportForm_reportingReqiurement on ReportingRequirement {
hasExpenses
}
`,
milestoneReport.reportingRequirementFormChange
.asReportingRequirement as ProjectMilestoneReportForm_reportingReqiurement$key
);

return (
<>
<Button
Expand Down Expand Up @@ -166,44 +177,46 @@ const ProjectMilestoneReportForm: React.FC<Props> = ({
uiSchema={milestoneUiSchema}
ObjectFieldTemplate={EmptyObjectFieldTemplate}
/>
<FormBase
id={`form-${milestoneReport.paymentFormChange.id}`}
validateOnMount={
milestoneReport.paymentFormChange.changeStatus === "staged"
}
idPrefix={`form-${milestoneReport.paymentFormChange.id}`}
ref={(el) =>
(formRefs.current[milestoneReport.paymentFormChange.id] = el)
}
formData={milestoneReport.paymentFormChange.newFormData}
onChange={(change) => {
updateFormChange({
variables: {
input: {
id: milestoneReport.paymentFormChange.id,
formChangePatch: {
changeStatus: "pending",
newFormData: change.formData,
{hasExpenses && (
<FormBase
id={`form-${milestoneReport.paymentFormChange.id}`}
validateOnMount={
milestoneReport.paymentFormChange.changeStatus === "staged"
}
idPrefix={`form-${milestoneReport.paymentFormChange.id}`}
ref={(el) =>
(formRefs.current[milestoneReport.paymentFormChange.id] = el)
}
formData={milestoneReport.paymentFormChange.newFormData}
onChange={(change) => {
updateFormChange({
variables: {
input: {
id: milestoneReport.paymentFormChange.id,
formChangePatch: {
changeStatus: "pending",
newFormData: change.formData,
},
},
},
},
optimisticResponse: {
updateFormChange: {
formChange: {
id: milestoneReport.paymentFormChange.id,
newFormData: change.formData,
changeStatus: "pending",
projectRevisionByProjectRevisionId: undefined,
optimisticResponse: {
updateFormChange: {
formChange: {
id: milestoneReport.paymentFormChange.id,
newFormData: change.formData,
changeStatus: "pending",
projectRevisionByProjectRevisionId: undefined,
},
},
},
},
debounceKey: milestoneReport.paymentFormChange.id,
});
}}
schema={paymentSchema as JSONSchema7}
uiSchema={paymentUiSchema}
ObjectFieldTemplate={EmptyObjectFieldTemplate}
/>
debounceKey: milestoneReport.paymentFormChange.id,
});
}}
schema={paymentSchema as JSONSchema7}
uiSchema={paymentUiSchema}
ObjectFieldTemplate={EmptyObjectFieldTemplate}
/>
)}
</>
);
};
Expand Down
1 change: 1 addition & 0 deletions app/components/Form/ProjectMilestoneReportFormGroup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ const ProjectMilestoneReportFormGroup: React.FC<Props> = (props) => {
}
asReportingRequirement {
...CollapsibleReport_reportingRequirement
...ProjectMilestoneReportForm_reportingReqiurement
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const mutation = graphql`
}
asReportingRequirement {
...CollapsibleReport_reportingRequirement
...ProjectMilestoneReportForm_reportingReqiurement
}
}
}
Expand Down

0 comments on commit 2c22f53

Please sign in to comment.