diff --git a/sites/public/src/components/applications/HouseholdMemberForm.tsx b/sites/public/src/components/applications/HouseholdMemberForm.tsx index 2309a2f725..896ad49105 100644 --- a/sites/public/src/components/applications/HouseholdMemberForm.tsx +++ b/sites/public/src/components/applications/HouseholdMemberForm.tsx @@ -2,6 +2,7 @@ import React from "react" import { t } from "@bloom-housing/ui-components" import { Button, FieldValue, Icon } from "@bloom-housing/ui-seeds" import { CustomIconMap } from "@bloom-housing/shared-helpers" +import styles from "../../layouts/application-form.module.scss" export interface HouseholdMemberFormProps { editMember?: (memberId: number | undefined) => void @@ -19,8 +20,11 @@ const HouseholdMemberForm = (props: HouseholdMemberFormProps) => { const editMode = props.editMode !== false && props.editMember // undefined should default to true return ( -
- +
+ {props.memberFirstName} {props.memberLastName}
@@ -29,7 +33,7 @@ const HouseholdMemberForm = (props: HouseholdMemberFormProps) => { id={`edit-member-${props.memberFirstName}-${props.memberLastName}`} type="button" variant="text" - className="pt-4 app-household-member-edit-button" + className="app-household-member-edit-button pb-1" onClick={() => props.editMember && props.editMember(props.memberId)} > {props.strings?.edit ?? t("t.edit")} diff --git a/sites/public/src/components/applications/HouseholdSizeField.tsx b/sites/public/src/components/applications/HouseholdSizeField.tsx index 1a859c6622..c0da179c5e 100644 --- a/sites/public/src/components/applications/HouseholdSizeField.tsx +++ b/sites/public/src/components/applications/HouseholdSizeField.tsx @@ -1,4 +1,5 @@ import React from "react" +import { CardSection } from "@bloom-housing/ui-seeds/src/blocks/Card" import { t, ErrorMessage, AlertBox, AlertNotice } from "@bloom-housing/ui-components" import { UseFormMethods, FieldError } from "react-hook-form" @@ -60,23 +61,27 @@ const HouseholdSizeField = (props: HouseholdSizeFieldProps) => { } /> - - clearErrors()}> - {strings?.dontQualifyHeader ?? t("application.household.dontQualifyHeader")} - - -

- {strings?.dontQualifyDescription ?? t("application.household.dontQualifyInfo")} -

-

- {strings?.getAssistance ?? t("pageTitle.getAssistance")} -

-
-
+ {error && ( + + + clearErrors()}> + {strings?.dontQualifyHeader ?? t("application.household.dontQualifyHeader")} + + +

+ {strings?.dontQualifyDescription ?? t("application.household.dontQualifyInfo")} +

+

+ {strings?.getAssistance ?? t("pageTitle.getAssistance")} +

+
+
+
+ )} ) } diff --git a/sites/public/src/components/shared/FormSummaryDetails.module.scss b/sites/public/src/components/shared/FormSummaryDetails.module.scss new file mode 100644 index 0000000000..9588315fbd --- /dev/null +++ b/sites/public/src/components/shared/FormSummaryDetails.module.scss @@ -0,0 +1,38 @@ +.summary-header { + display: flex; + justify-content: space-between; + padding-block: var(--seeds-spacer-header); + background: var(--seeds-color-gray-300); +} + +.summary-section { + padding-block-end: var(--seeds-spacer-header); +} + +.summary-value { + padding-block-end: var(--seeds-spacer-content); + + &:last-of-type { + padding-block-end: var(--seeds-spacer-header); + } +} + +.summary-note-text { + font-size: var(--seeds-type-label-size); + margin-block-end: var(--seeds-spacer-content); +} + +.household-member-section { + border-block-end: 1px solid var(--seeds-color-gray-450); + margin-block-end: var(--seeds-spacer-header); + + &:last-child { + border-block-end: none; + } +} + +.household-member-same-address { + font-size: var(--seeds-type-label-size); + color: var(--seeds-text-color-light); + padding-block-end: var(--seeds-spacer-header); +} diff --git a/sites/public/src/components/shared/FormSummaryDetails.tsx b/sites/public/src/components/shared/FormSummaryDetails.tsx index 5d296449a9..0733469bcd 100644 --- a/sites/public/src/components/shared/FormSummaryDetails.tsx +++ b/sites/public/src/components/shared/FormSummaryDetails.tsx @@ -1,6 +1,6 @@ import React, { Fragment, useEffect, useState } from "react" -import { LocalizedLink, MultiLineAddress, t } from "@bloom-housing/ui-components" -import { FieldValue } from "@bloom-housing/ui-seeds" +import { MultiLineAddress, t } from "@bloom-housing/ui-components" +import { Card, FieldValue, Heading, Link } from "@bloom-housing/ui-seeds" import { getUniqueUnitTypes, AddressHolder, @@ -15,6 +15,7 @@ import { Listing, MultiselectQuestionsApplicationSectionEnum, } from "@bloom-housing/shared-helpers/src/types/backend-swagger" +import styles from "./FormSummaryDetails.module.scss" type FormSummaryDetailsProps = { // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -26,14 +27,6 @@ type FormSummaryDetailsProps = { validationError?: boolean } -const EditLink = (props: { href: string }) => ( -
- - {t("t.edit")} - -
-) - const accessibilityLabels = (accessibility) => { const labels = [] if (accessibility.mobility) labels.push(t("application.ada.mobility")) @@ -138,20 +131,24 @@ const FormSummaryDetails = ({ appLink: string, header: string, emptyText?: string, - className?: string + divider?: boolean ) => { return ( <> -

- {header} - {editMode && !validationError && } -

-
+ + {header} + + {editMode && !validationError && {t("t.edit")}} + + + {emptyText ? ( -

{emptyText}

+

{emptyText}

) : ( <> {application[applicationSection] @@ -173,7 +170,7 @@ const FormSummaryDetails = ({ )} )} -
+ ) } @@ -187,32 +184,32 @@ const FormSummaryDetails = ({ return ( <> -

- {t("t.you")} - {editMode && } -

- -
+ + + {t("t.you")} + + {editMode && {t("t.edit")}} + + + {application.applicant.firstName} {application.applicant.middleName}{" "} {application.applicant.lastName} - {application.applicant.birthMonth}/{application.applicant.birthDay}/ {application.applicant.birthYear} - {application.applicant.phoneNumber && ( {application.applicant.phoneNumber} )} - {application.additionalPhoneNumber && ( {application.additionalPhoneNumber} )} - {application.applicant.emailAddress && ( {application.applicant.emailAddress} )} - - {application.sendMailToMailingAddress && ( )} - {application.applicant.workInRegion === "yes" && ( )} - {application.contactPreferences && ( {application.contactPreferences?.map((item) => t(`t.${item}`)).join(", ")} )} -
+ {application.alternateContact.type !== "" && application.alternateContact.type !== "noContact" && ( -
-

- {t("application.alternateContact.type.label")} + <> + + + {t("application.alternateContact.type.label")} + {editMode && !validationError && ( - + {t("t.edit")} )} -

+ -
-

+ +

{t(`application.alternateContact.type.description`)}

{application.alternateContact.firstName} {application.alternateContact.lastName} @@ -330,7 +323,7 @@ const FormSummaryDetails = ({ testId={"app-summary-alternate-email"} id="alternateEmail" label={t("t.email")} - className={"pb-4"} + className={styles["summary-value"]} > {application.alternateContact.emailAddress} @@ -341,7 +334,7 @@ const FormSummaryDetails = ({ testId={"app-summary-alternate-phone"} id="alternatePhone" label={t("t.phone")} - className={"pb-4"} + className={styles["summary-value"]} > {application.alternateContact.phoneNumber} @@ -354,83 +347,85 @@ const FormSummaryDetails = ({ testId={"app-summary-alternate-mailing-address"} id="alternateMailingAddress" label={t("application.contact.address")} - className={"pb-4"} + className={styles["summary-value"]} > )} -
-
+ + )} {application.householdSize > 1 && ( -
-

- {t("application.household.householdMembers")} + <> + + + {t("application.review.householdDetails")} + {editMode && !validationError && ( - + {t("t.edit")} )} -

+ -
+ {application.householdMember.map((member, index) => (
{member.firstName} {member.lastName} -
- - {member.birthMonth}/{member.birthDay}/{member.birthYear} + + {member.birthMonth}/{member.birthDay}/{member.birthYear} + + {member.sameAddress === "no" && ( + + - {member.sameAddress === "no" && ( - - - - )} - {member.sameAddress !== "no" && ( -

- {t("application.review.sameAddressAsApplicant")} -

- )} -
+ )} + {member.sameAddress !== "no" && ( +

+ {t("application.review.sameAddressAsApplicant")} +

+ )}
))} -
-
+ + )} -
-

- {t("application.review.householdDetails")} + <> + + + {t("application.review.householdDetails")} + {editMode && !validationError && ( - + {t("t.edit")} )} -

+ -
+ {preferredUnits && ( {preferredUnits ?.map((item) => t(`application.household.preferredUnit.options.${item}`)) @@ -441,7 +436,7 @@ const FormSummaryDetails = ({ testId={"app-summary-ada"} id="householdAda" label={t("application.ada.label")} - className={"pb-4"} + className={styles["summary-value"]} > {accessibilityLabels(application.accessibility).map((item) => ( @@ -453,18 +448,18 @@ const FormSummaryDetails = ({ {application.householdExpectingChanges ? t("t.yes") : t("t.no")} {application.householdStudent ? t("t.yes") : t("t.no")} -
+ {!hidePrograms && multiselectQuestionSection( @@ -478,17 +473,24 @@ const FormSummaryDetails = ({ : null )} -

- {t("t.income")} - {editMode && !validationError && } -

+ + + {t("t.income")} + + {editMode && !validationError && ( + {t("t.edit")} + )} + -
+ {application.incomeVouchers ? t("t.yes") : t("t.no")} @@ -498,7 +500,7 @@ const FormSummaryDetails = ({ testId={"app-summary-income"} id="incomeValue" label={t("t.income")} - className={"pb-4"} + className={styles["summary-value"]} > $ {parseFloat(application.income).toLocaleString("en-US", { @@ -508,7 +510,7 @@ const FormSummaryDetails = ({ {t(`t.${application.incomePeriod}`)} )} -
+ {!hidePreferences && multiselectQuestionSection( @@ -520,9 +522,9 @@ const FormSummaryDetails = ({ county: listing?.listingsBuildingAddress?.county || listing?.jurisdictions?.name, })} ${t("application.preferences.general.preamble")}` : null, - "border-b" + true )} -
+ ) } diff --git a/sites/public/src/layouts/application-form.module.scss b/sites/public/src/layouts/application-form.module.scss index 47952c7376..49346851a3 100644 --- a/sites/public/src/layouts/application-form.module.scss +++ b/sites/public/src/layouts/application-form.module.scss @@ -87,6 +87,17 @@ margin-bottom: var(--seeds-s6); } +/* step-specific styles */ +.application-form-household-member { + display: flex; + align-items: top; + justify-content: space-between; +} + +.application-form-household-field-value { + --field-value-content-spacer: var(--seeds-s3); +} + /* overrides for Seeds Message & Alert */ .message-inside-card { --common-message-max-width: auto; diff --git a/sites/public/src/pages/applications/household/add-members.tsx b/sites/public/src/pages/applications/household/add-members.tsx index b433147efe..87288d9c2b 100644 --- a/sites/public/src/pages/applications/household/add-members.tsx +++ b/sites/public/src/pages/applications/household/add-members.tsx @@ -11,6 +11,7 @@ import { HouseholdMemberForm } from "../../../components/applications/HouseholdM import { useFormConductor } from "../../../lib/hooks" import { UserStatus } from "../../../lib/constants" import ApplicationFormLayout from "../../../layouts/application-form" +import styles from "../../../layouts/application-form.module.scss" const ApplicationAddMembers = () => { const { profile } = useContext(AuthContext) @@ -51,14 +52,16 @@ const ApplicationAddMembers = () => { const membersSection = application.householdMember.map((member, index) => { return ( - + + + ) }) @@ -89,30 +92,26 @@ const ApplicationAddMembers = () => { url: conductor.determinePreviousUrl(), }} > -
-
- -
-
- - {membersSection} -
-
+ + + + + {membersSection} - +