diff --git a/frontend/src/components/FieldLabel.tsx b/frontend/src/components/FieldLabel.tsx new file mode 100644 index 00000000..8f880701 --- /dev/null +++ b/frontend/src/components/FieldLabel.tsx @@ -0,0 +1,20 @@ +import type { ReactNode } from "react"; + +type FieldLabelProps = { + isRequired?: boolean; + className?: string; + children: ReactNode; +}; + +export default function FieldLabel({ + isRequired, + className, + children, +}: FieldLabelProps) { + return ( + + ); +} diff --git a/frontend/src/main-page/grants/edit-grant/EditGrant.tsx b/frontend/src/main-page/grants/edit-grant/EditGrant.tsx index 30944924..35bb50ce 100644 --- a/frontend/src/main-page/grants/edit-grant/EditGrant.tsx +++ b/frontend/src/main-page/grants/edit-grant/EditGrant.tsx @@ -81,27 +81,30 @@ const EditGrant: React.FC<{ if (!form.organization.trim()) return "Organization Name is required"; if (!form.status) return "Status is required"; if (form.amount == null || form.amount <= 0) return "Amount must be greater than 0"; - if (!form.applicationDeadline) return "Due Date is required"; + if (!grantToEdit && !form.applicationDeadline) return "Due Date is required"; + if (!grantToEdit && !form.grantStartDate) return "Grant Start Date is required"; + if (!grantToEdit && !Number.isFinite(form.estimatedCompletionTime)) return "Estimated completion time is required"; if ( form.applicationDate && + form.applicationDeadline && new Date(form.applicationDate).getTime() > new Date(form.applicationDeadline).getTime() ) { return "Application Date cannot be after Due Date"; } - if (!form.grantStartDate) return "Grant Start Date is required"; if ( + form.grantStartDate && + form.applicationDeadline && new Date(form.grantStartDate).getTime() < new Date(form.applicationDeadline).getTime() ) { return "Grant Start Date cannot be before Due Date"; } - if (!form.estimatedCompletionTime || form.estimatedCompletionTime <= 0) return "Estimated completion time must be greater than 0"; + if (form.estimatedCompletionTime < 0) return "Estimated completion time cannot be negative"; if (!form.doesBcanQualify) return "BCAN eligibility is required"; if(form.reportDates.length > 0 && !form.reportDates.every((date) => date !== "")) return "Report deadlines must have a value"; if (!form.timeline || form.timeline <= 0) return "Timeline must be greater than 0"; if (!form.bcanPocEmail) return "BCAN contact required"; - if (!form.grantProviderPocEmail) return "Grant provider contact required"; if(form.attachments.length > 0 && !form.attachments.every((attachment) => attachment.url !== "")) return "Attachments must have a value"; return null; }; diff --git a/frontend/src/main-page/grants/edit-grant/components/EditGrantContacts.tsx b/frontend/src/main-page/grants/edit-grant/components/EditGrantContacts.tsx index 8fe71628..76c8a728 100644 --- a/frontend/src/main-page/grants/edit-grant/components/EditGrantContacts.tsx +++ b/frontend/src/main-page/grants/edit-grant/components/EditGrantContacts.tsx @@ -7,6 +7,7 @@ import { Action } from "../processGrantDataEditSave"; import { useState } from "react"; import AddContactPopup from "./AddContactPopup"; import { observer } from "mobx-react-lite"; +import FieldLabel from "../../../../components/FieldLabel"; type EditGrantProps = { form: GrantFormState; @@ -34,9 +35,9 @@ const EditGrantContacts = ({ dispatch, form }: EditGrantProps) => { return (
- +
{form.bcanPocEmail !== "" && ( diff --git a/frontend/src/main-page/grants/edit-grant/components/EditGrantInfo.tsx b/frontend/src/main-page/grants/edit-grant/components/EditGrantInfo.tsx index faa9f4b5..8c6b11ca 100644 --- a/frontend/src/main-page/grants/edit-grant/components/EditGrantInfo.tsx +++ b/frontend/src/main-page/grants/edit-grant/components/EditGrantInfo.tsx @@ -8,6 +8,7 @@ import { faSquareXmark, } from "@fortawesome/free-solid-svg-icons"; import EditGrantDeleteItem from "./EditGrantDeleteItem"; +import FieldLabel from "../../../../components/FieldLabel"; type EditGrantProps = { form: GrantFormState; @@ -18,9 +19,9 @@ export default function EditGrantInfo({ form, dispatch }: EditGrantProps) { return (
- +