Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
2204746
added feature flag
millord Dec 15, 2025
fc567a6
added type
millord Dec 15, 2025
d70d67e
added description to the flag
millord Dec 15, 2025
84f801c
started conditionally adding columns to csv
millord Dec 15, 2025
9a6eafd
upated listing cvs for lease again change
millord Dec 16, 2025
582450a
updated frontend for public change
millord Dec 16, 2025
4d38881
updated listing view comp with change too
millord Dec 16, 2025
cef1596
updated leasing agent name in partners
millord Dec 16, 2025
de00fb3
updated leasing agent section title in partners
millord Dec 16, 2025
2dce761
updated leasing agent title in partners
millord Dec 16, 2025
353dced
updated leasing agent address text
millord Dec 16, 2025
2a788e5
updated leasing subtitles
millord Dec 16, 2025
b7c577a
Merge branch 'main' into 5479/leasing-agent-update
millord Dec 16, 2025
45b5c85
added bn translation
millord Dec 16, 2025
8ac8445
updating listings imports
millord Dec 17, 2025
308429d
Merge branch 'main' into 5479/leasing-agent-update
millord Dec 17, 2025
67af55f
added feature flag to seeds
millord Dec 17, 2025
f4aa7d4
added feature flag to seeds in as many juris as posible
millord Dec 17, 2025
50f8c54
updating text where needed
millord Dec 18, 2025
9db6b5d
updated address
millord Dec 18, 2025
e3c0441
Merge branch 'main' into 5479/leasing-agent-update
millord Dec 18, 2025
1129352
updated propname and signature
millord Dec 18, 2025
ecda4c6
removed call that was not longer needed
millord Dec 18, 2025
44ca984
little refactor to Leasing again comp
millord Dec 18, 2025
70ead08
fixed typo
millord Dec 18, 2025
619ca1b
removed non needed code
millord Dec 18, 2025
459cbd3
updated some test
millord Dec 18, 2025
15741b8
updated some test
millord Dec 18, 2025
d725ae9
clean up branch
millord Dec 18, 2025
0fe8a76
Merge branch 'main' into 5479/leasing-agent-update
millord Dec 18, 2025
9123107
updated typo in test
millord Dec 18, 2025
c651ab8
updated typo in test adding context
millord Dec 18, 2025
95e297f
ran prettier
millord Dec 18, 2025
c42f194
removing non needed code
millord Dec 18, 2025
60766f8
updated regarding comments left by morgan
millord Dec 23, 2025
761b416
updated tests
millord Dec 23, 2025
01d2bc3
updated tests lint
millord Dec 23, 2025
3935d81
Merge branch 'main' into 5479/leasing-agent-update
millord Jan 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions api/prisma/seed-staging.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ export const stagingSeed = async (
FeatureFlagEnum.enableGeocodingRadiusMethod,
FeatureFlagEnum.enableHomeType,
FeatureFlagEnum.enableIsVerified,
FeatureFlagEnum.enableLeasingAgentAltText,
FeatureFlagEnum.enableListingFavoriting,
FeatureFlagEnum.enableListingFiltering,
FeatureFlagEnum.enableListingOpportunity,
Expand Down Expand Up @@ -103,6 +104,7 @@ export const stagingSeed = async (
FeatureFlagEnum.enableHomeType,
FeatureFlagEnum.enableIsVerified,
FeatureFlagEnum.enableLimitedHowDidYouHear,
FeatureFlagEnum.enableLeasingAgentAltText,
FeatureFlagEnum.enableListingFavoriting,
FeatureFlagEnum.enableListingFiltering,
FeatureFlagEnum.enableListingOpportunity,
Expand Down Expand Up @@ -140,6 +142,7 @@ export const stagingSeed = async (
featureFlags: [
FeatureFlagEnum.enableGeocodingPreferences,
FeatureFlagEnum.enableGeocodingRadiusMethod,
FeatureFlagEnum.enableLeasingAgentAltText,
FeatureFlagEnum.enableListingFiltering,
FeatureFlagEnum.enableListingOpportunity,
FeatureFlagEnum.enableListingPagination,
Expand All @@ -165,6 +168,7 @@ export const stagingSeed = async (
FeatureFlagEnum.enableApplicationStatus,
FeatureFlagEnum.enableCreditScreeningFee,
FeatureFlagEnum.enableHousingDeveloperOwner,
FeatureFlagEnum.enableLeasingAgentAltText,
FeatureFlagEnum.enableListingFileNumber,
FeatureFlagEnum.enableListingFiltering,
FeatureFlagEnum.enableListingImageAltText,
Expand Down
5 changes: 5 additions & 0 deletions api/src/enums/feature-flags/feature-flags-enum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ export enum FeatureFlagEnum {
enableListingFavoriting = 'enableListingFavoriting',
enableListingFileNumber = 'enableListingFileNumber',
enableListingFiltering = 'enableListingFiltering',
enableLeasingAgentAltText = 'enableLeasingAgentAltText',
enableListingImageAltText = 'enableListingImageAltText',
enableListingOpportunity = 'enableListingOpportunity',
enableListingPagination = 'enableListingPagination',
Expand Down Expand Up @@ -163,6 +164,10 @@ export const featureFlagMap: {
description:
'When true, a filter button is shown on listings browse and users can filter with the options in the drawer',
},
{
name: FeatureFlagEnum.enableLeasingAgentAltText,
description: 'When true, shows alternative text for LA users',
},
{
name: FeatureFlagEnum.enableListingImageAltText,
description: 'When true, allows partners to add alt text to listing images',
Expand Down
14 changes: 12 additions & 2 deletions api/src/services/listing-csv-export.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1080,7 +1080,12 @@ export class ListingCsvExporterService implements CsvExporterServiceInterface {
...[
{
path: 'leasingAgentName',
label: 'Leasing Agent Name',
label: doAnyJurisdictionHaveFeatureFlagSet(
user.jurisdictions,
FeatureFlagEnum.enableLeasingAgentAltText,
)
? 'Leasing agent or property manager name'
: 'Leasing Agent Name',
},
{
path: 'leasingAgentEmail',
Expand All @@ -1092,7 +1097,12 @@ export class ListingCsvExporterService implements CsvExporterServiceInterface {
},
{
path: 'leasingAgentTitle',
label: 'Leasing Agent Title',
label: doAnyJurisdictionHaveFeatureFlagSet(
user.jurisdictions,
FeatureFlagEnum.enableLeasingAgentAltText,
)
? 'Leasing agent or property manager title'
: 'Leasing Agent Title',
},
{
path: 'leasingAgentOfficeHours',
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "اتصل بوكيل التأجير",
"leasingAgent.contactManagerProp": "اتصل بوكيل التأجير أو مدير الممتلكات",
"leasingAgent.dueToHighCallVolume": "نظرًا لارتفاع حجم المكالمات ، قد تسمع رسالة.",
"leasingAgent.officeHours": "ساعات العمل",
"listingFilters.clear": "مسح",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "লিজিং এজেন্টের সাথে যোগাযোগ করুন",
"leasingAgent.contactManagerProp": "লিজিং এজেন্ট বা সম্পত্তি ব্যবস্থাপকের সাথে যোগাযোগ করুন",
"leasingAgent.dueToHighCallVolume": "উচ্চ কল ভলিউমের কারণে আপনি একটি বার্তা শুনতে পারেন।",
"leasingAgent.officeHours": "অফিস সময়সূচী",
"listingFilters.clear": "পরিষ্কার",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "Comuníquese con el agente de alquiler",
"leasingAgent.contactManagerProp": "Comuníquese con el agente de arrendamiento o el administrador de la propiedad",
"leasingAgent.dueToHighCallVolume": "Debido al alto volumen de llamadas, usted podría escuchar un mensaje.",
"leasingAgent.officeHours": "Horario de oficina",
"listingFilters.clear": "Borrar",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/general.json
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "Contact leasing agent",
"leasingAgent.contactManagerProp": "Contact leasing agent or property manager",
"leasingAgent.dueToHighCallVolume": "Due to high call volume you may hear a message.",
"leasingAgent.officeHours": "Office hours",
"listingFilters.clear": "Clear",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/tl.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "Makipag-ugnayan sa ahente sa pagpapaupa",
"leasingAgent.contactManagerProp": "Makipag-ugnayan sa ahente sa pagpapaupa o tagapamahala ng ari-arian",
"leasingAgent.dueToHighCallVolume": "Dahil maraming tumatawag maaari kang makarinig ng mensahe.",
"leasingAgent.officeHours": "Oras ng opisina",
"listingFilters.clear": "Maaliwalas",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/vi.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "Liên hệ với đại lý cho thuê",
"leasingAgent.contactManagerProp": "Liên hệ với đại lý cho thuê hoặc người quản lý tài sản",
"leasingAgent.dueToHighCallVolume": "Do có nhiều cuộc gọi đến, quý vị có thể nghe thấy một lời nhắn.",
"leasingAgent.officeHours": "Giờ làm việc",
"listingFilters.clear": "Xóa",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/locales/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,7 @@
"languages.vi": "Tiếng Việt",
"languages.zh": "中文",
"leasingAgent.contact": "联系租赁代理",
"leasingAgent.contactManagerProp": "聯絡租賃代理或物業經理",
"leasingAgent.dueToHighCallVolume": "由於來電人數眾多,您可能會聽到訊息留言。",
"leasingAgent.officeHours": "办公时间",
"listingFilters.clear": "清除",
Expand Down
1 change: 1 addition & 0 deletions shared-helpers/src/types/backend-swagger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8674,6 +8674,7 @@ export enum FeatureFlagEnum {
"enableListingFavoriting" = "enableListingFavoriting",
"enableListingFileNumber" = "enableListingFileNumber",
"enableListingFiltering" = "enableListingFiltering",
"enableLeasingAgentAltText" = "enableLeasingAgentAltText",
"enableListingImageAltText" = "enableListingImageAltText",
"enableListingOpportunity" = "enableListingOpportunity",
"enableListingPagination" = "enableListingPagination",
Expand Down
6 changes: 6 additions & 0 deletions sites/partners/page_content/locale_overrides/general.json
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,11 @@
"flags.updateStatus": "Update status",
"flags.combindationRule": "%{email} - %{name}: Email + Name + DOB",
"leasingAgent.name": "Leasing agent name",
"leasingAgent.ManagerPropName": "Leasing agent or property manager name",
"leasingAgent.namePlaceholder": "Full name",
"leasingAgent.officeHoursPlaceholder": "ex: 9:00am - 5:00pm, Monday to Friday",
"leasingAgent.title": "Leasing agent title",
"leasingAgent.leasingAgentManagerPropTitle": "Leasing agent or property manager title",
"leasingAgent.managementWebsite": "Company website",
"leasingAgent.managementWebsitePlaceholder": "https://www.google.com",
"listings.actions.close": "Close",
Expand Down Expand Up @@ -271,6 +273,7 @@
"listings.areReferralOnlyUnits": "Are there units set aside for referral only?",
"listings.latitude": "Latitude",
"listings.leasingAgentAddress": "Leasing agent address",
"listings.leasingAgentAddressManagerProp": "Leasing agent or property manager address",
"listings.listingAvailabilityQuestion": "What is the listing availability?",
"listings.listingIsAlreadyLive": "This listing is already live. Updates will affect the applicant experience on the housing portal.",
"listings.listingTypeTitle": "What kind of listing is this?",
Expand Down Expand Up @@ -425,7 +428,10 @@
"listings.sections.introSubtitle": "Let's get started with some basic information about your listing.",
"listings.sections.introTitle": "Listing intro",
"listings.sections.leasingAgentSubtitle": "Provide details about the leasing agent who will be managing the application process.",
"listings.sections.leasingAgentManagerPropSubtitle": "Provide details about the leasing agent or property manager who will be managing the application process.",
"listings.sections.leasingAgentTitle": "Leasing agent",
"listings.sections.leasingAgentManagerPropTitle": "Leasing agent or property manager title",
"listings.sections.leasingAgentManagerPropSectionTitle": "Leasing agent or property manager",
"listings.sections.lotteryResultsAdd": "Add results",
"listings.sections.lotteryResultsEdit": "Edit results",
"listings.sections.lotteryResultsHelperText": "Upload results",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import { ListingContext } from "../../ListingContext"
import { getDetailFieldString, getDetailFieldTime, getDetailAddress } from "./helpers"
import dayjs from "dayjs"
import SectionWithGrid from "../../../shared/SectionWithGrid"
import { FeatureFlagEnum } from "@bloom-housing/shared-helpers/src/types/backend-swagger"
import { AuthContext } from "@bloom-housing/shared-helpers"

const DetailApplicationAddress = () => {
const listing = useContext(ListingContext)
Expand All @@ -13,6 +15,16 @@ const DetailApplicationAddress = () => {
return date ? dayjs(new Date(date)).format("MM/DD/YYYY") : t("t.none")
}

const { doJurisdictionsHaveFeatureFlagOn } = useContext(AuthContext)

const enableLeasingAgentAltText = doJurisdictionsHaveFeatureFlagOn(
FeatureFlagEnum.enableLeasingAgentAltText,
listing.jurisdictions.id
)
const leasingAgentAddressText = enableLeasingAgentAltText
? t("listings.leasingAgentAddressManagerProp")
: t("listings.leasingAgentAddress")

return (
<SectionWithGrid heading={t("listings.sections.applicationAddressTitle")} inset>
<Grid.Row columns={3}>
Expand All @@ -33,7 +45,7 @@ const DetailApplicationAddress = () => {
className="seeds-grid-span-2"
label={t("listings.applicationAddress.mailApplicationType")}
>
{t("listings.leasingAgentAddress")}
{leasingAgentAddressText}
</FieldValue>
</Grid.Cell>
)}
Expand Down Expand Up @@ -65,7 +77,7 @@ const DetailApplicationAddress = () => {
className="seeds-grid-span-2"
label={t("listings.wherePickupQuestion")}
>
{t("listings.leasingAgentAddress")}
{leasingAgentAddressText}
</FieldValue>
</Grid.Cell>
)}
Expand Down Expand Up @@ -111,7 +123,7 @@ const DetailApplicationAddress = () => {
className="seeds-grid-span-2"
label={t("listings.whereDropOffQuestion")}
>
{t("listings.leasingAgentAddress")}
{leasingAgentAddressText}
</FieldValue>
</Grid.Cell>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,28 @@ const DetailLeasingAgent = () => {
listing.jurisdictions.id
)

const enableLeasingAgentAltText = doJurisdictionsHaveFeatureFlagOn(
FeatureFlagEnum.enableLeasingAgentAltText,
listing.jurisdictions.id
)

const leasingAgentNameText = enableLeasingAgentAltText
? t("leasingAgent.ManagerPropName")
: t("leasingAgent.name")

const leasingAgentTitleText = enableLeasingAgentAltText
? t("listings.sections.leasingAgentManagerPropTitle")
: t("listings.sections.leasingAgentTitle")

const leasingAgentAddressText = enableLeasingAgentAltText
? t("listings.leasingAgentAddressManagerProp")
: t("listings.leasingAgentAddress")

return (
<SectionWithGrid heading={t("listings.sections.leasingAgentTitle")} inset>
<SectionWithGrid heading={leasingAgentTitleText} inset>
<Grid.Row>
<Grid.Cell>
<FieldValue id="leasingAgentName" label={t("leasingAgent.name")}>
<FieldValue id="leasingAgentName" label={leasingAgentNameText}>
{getDetailFieldString(listing.leasingAgentName)}
</FieldValue>
</Grid.Cell>
Expand Down Expand Up @@ -65,7 +82,7 @@ const DetailLeasingAgent = () => {
{getDetailAddress(
listing.listingsLeasingAgentAddress,
"leasingAgentAddress",
t("listings.leasingAgentAddress")
leasingAgentAddressText
)}
</SectionWithGrid>
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,6 @@ const ListingForm = ({
enableUnitGroups,
]
)

return loading === true ? null : (
<>
<LoadingOverlay isLoading={loading}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import React, { useEffect, useState } from "react"
import React, { useEffect, useState, useContext } from "react"
import { useFormContext } from "react-hook-form"
import { t, Textarea, Field, PhoneField, Select } from "@bloom-housing/ui-components"
import { Grid } from "@bloom-housing/ui-seeds"
import { stateKeys } from "@bloom-housing/shared-helpers"
import { AuthContext, stateKeys } from "@bloom-housing/shared-helpers"
import {
fieldMessage,
defaultFieldProps,
Expand All @@ -11,6 +11,8 @@ import {
getAddressErrorMessage,
} from "../../../../lib/helpers"
import SectionWithGrid from "../../../shared/SectionWithGrid"
import { ListingContext } from "../../ListingContext"
import { FeatureFlagEnum } from "@bloom-housing/shared-helpers/src/types/backend-swagger"

type LeasingAgentProps = {
enableCompanyWebsite?: boolean
Expand All @@ -19,6 +21,8 @@ type LeasingAgentProps = {

const LeasingAgent = (props: LeasingAgentProps) => {
const formMethods = useFormContext()
const listing = useContext(ListingContext)
const { doJurisdictionsHaveFeatureFlagOn } = useContext(AuthContext)

// eslint-disable-next-line @typescript-eslint/unbound-method
const { register, control, errors, clearErrors, watch, getValues } = formMethods
Expand Down Expand Up @@ -47,20 +51,42 @@ const LeasingAgent = (props: LeasingAgentProps) => {
)
}

const enableLeasingAgentAltText = doJurisdictionsHaveFeatureFlagOn(
FeatureFlagEnum.enableLeasingAgentAltText,
listing?.jurisdictions?.id
)

const leasingAgentNameText = enableLeasingAgentAltText
? t("leasingAgent.ManagerPropName")
: t("leasingAgent.name")

const leasingAgentSectionTitleText = enableLeasingAgentAltText
? t("listings.sections.leasingAgentManagerPropSectionTitle")
: t("listings.sections.leasingAgentTitle")

const leasingAgentTitleText = enableLeasingAgentAltText
? t("leasingAgent.leasingAgentManagerPropTitle")
: t("leasingAgent.title")

const leasingAgentSubtitleText = enableLeasingAgentAltText
? t("listings.sections.leasingAgentManagerPropSubtitle")
: t("listings.sections.leasingAgentSubtitle")

const leasingAgentAddressText = enableLeasingAgentAltText
? t("listings.leasingAgentAddressManagerProp")
: t("listings.leasingAgentAddress")

return (
<>
<hr className="spacer-section-above spacer-section" />
<SectionWithGrid
heading={t("listings.sections.leasingAgentTitle")}
subheading={t("listings.sections.leasingAgentSubtitle")}
>
<SectionWithGrid heading={leasingAgentSectionTitleText} subheading={leasingAgentSubtitleText}>
<Grid.Row columns={3}>
<Grid.Cell>
<Field
register={register}
{...defaultFieldProps(
"leasingAgentName",
t("leasingAgent.name"),
leasingAgentNameText,
props.requiredFields,
errors,
clearErrors
Expand Down Expand Up @@ -102,7 +128,7 @@ const LeasingAgent = (props: LeasingAgentProps) => {
register={register}
{...defaultFieldProps(
"leasingAgentTitle",
t("leasingAgent.title"),
leasingAgentTitleText,
props.requiredFields,
errors,
clearErrors
Expand Down Expand Up @@ -137,7 +163,7 @@ const LeasingAgent = (props: LeasingAgentProps) => {
/>
</Grid.Cell>
</Grid.Row>
<SectionWithGrid.HeadingRow>Leasing Agent Address</SectionWithGrid.HeadingRow>
<SectionWithGrid.HeadingRow>{t(leasingAgentAddressText)}</SectionWithGrid.HeadingRow>
<Grid.Row columns={3}>
<Grid.Cell className="seeds-grid-span-2">
<Field
Expand Down
Loading
Loading