diff --git a/app/components/search/SearchResults/SearchResults.tsx b/app/components/search/SearchResults/SearchResults.tsx index 3bbaa74ab..5df1a13d3 100644 --- a/app/components/search/SearchResults/SearchResults.tsx +++ b/app/components/search/SearchResults/SearchResults.tsx @@ -6,6 +6,7 @@ import { SearchResults as SearchResultsProps, } from "react-instantsearch/connectors"; import { whiteLabel } from "utils"; +import { CATEGORIES } from "pages/ServiceDiscoveryForm/constants"; import { SearchMap } from "components/search/SearchMap/SearchMap"; import ResultsPagination from "components/search/Pagination/ResultsPagination"; import { Texting } from "components/Texting"; @@ -44,7 +45,12 @@ const SearchResults = ({ if (!searchResults) return null; - const hits = transformHits(searchResults.hits as unknown as SearchHit[]); + const category = CATEGORIES.find((c) => c.id === categoryId); + const alphabetizeResults = category && category.alphabetizeResults; + const hits = transformHits( + searchResults.hits as unknown as SearchHit[], + alphabetizeResults + ); return (
@@ -93,6 +99,7 @@ const SearchResult = ({ const [textingIsOpen, setTextingIsOpen] = useState(false); const [clinicianActionsIsOpen, setClinicianActionsIsOpen] = useState(false); const [handoutModalIsOpen, setHandoutModalIsOpen] = useState(false); + type HandoutLanguage = "es" | "tl" | "zh-TW" | "vi" | "ru" | "ar"; const handoutUrl = (hitId: number, language: HandoutLanguage | null) => { const handoutRoute = diff --git a/app/components/ucsf/RefinementLists/SubcategoryRefinements.tsx b/app/components/ucsf/RefinementLists/SubcategoryRefinements.tsx index 1403d6d63..7c9af7bb9 100644 --- a/app/components/ucsf/RefinementLists/SubcategoryRefinements.tsx +++ b/app/components/ucsf/RefinementLists/SubcategoryRefinements.tsx @@ -28,6 +28,8 @@ export const SubcategoryRefinements = ({ selectedSubcategories: SelectedSubcategories; setSelectedSubcategories: (categories: SelectedSubcategories) => void; }) => { + if (subcategories.length === 0) return null; + // Add generic "See All" element to subcategory array if it is not there yet if (!subcategories[0] || subcategories[0].id !== seeAllPseudoId) { subcategories.unshift({ id: seeAllPseudoId, name: "See All" }); diff --git a/app/models/SearchHits.ts b/app/models/SearchHits.ts index 8d82a44ae..d6b685abd 100644 --- a/app/models/SearchHits.ts +++ b/app/models/SearchHits.ts @@ -37,8 +37,11 @@ export type SearchHit = ServiceHit | OrganizationHit; * Transform Algolia search hits such that each hit has a recurringSchedule that * uses the time helper classes. */ -export const transformHits = (hits: SearchHit[]) => - hits.flatMap((hit) => { +export const transformHits = ( + hits: SearchHit[], + sortAlphabetically: boolean = false +) => { + const hitsWithSchedule = hits.flatMap((hit) => { switch (hit.type) { case "resource": return { @@ -62,3 +65,8 @@ export const transformHits = (hits: SearchHit[]) => return []; } }); + + return sortAlphabetically + ? hitsWithSchedule.sort((a, b) => (a.name < b.name ? -1 : 1)) + : hitsWithSchedule; +}; diff --git a/app/pages/ServiceDiscoveryForm/constants.ts b/app/pages/ServiceDiscoveryForm/constants.ts index 18e73ec9b..841cd9545 100644 --- a/app/pages/ServiceDiscoveryForm/constants.ts +++ b/app/pages/ServiceDiscoveryForm/constants.ts @@ -7,6 +7,7 @@ export type Step = export interface ServiceCategory { algoliaCategoryName: string; + alphabetizeResults?: boolean; disableGeoLocation?: boolean; id: string; name: string; @@ -165,6 +166,7 @@ export const CATEGORIES: Readonly = [ }, { algoliaCategoryName: "Ucsf-intimatepartnerviolence", + alphabetizeResults: true, disableGeoLocation: true, id: "2000006", name: "Intimate Partner Violence Resources", diff --git a/app/pages/UcsfDiscoveryForm/UcsfDiscoveryForm.tsx b/app/pages/UcsfDiscoveryForm/UcsfDiscoveryForm.tsx index 9f68a5f28..5a1397c43 100644 --- a/app/pages/UcsfDiscoveryForm/UcsfDiscoveryForm.tsx +++ b/app/pages/UcsfDiscoveryForm/UcsfDiscoveryForm.tsx @@ -149,6 +149,8 @@ const Page = () => { let nextButtonText = "Next: "; if (nextStepName === "subcategories") { nextButtonText += "Service Type"; + } else if (nextStepName === "eligibilities") { + nextButtonText += "Patient Identity"; } else if (nextStepName === "results") { nextButtonText += "Show Results"; }