diff --git a/src/components/clinical-dashboard/differentials-home.tsx b/src/components/clinical-dashboard/differentials-home.tsx index 548b224f..dcc9caa0 100644 --- a/src/components/clinical-dashboard/differentials-home.tsx +++ b/src/components/clinical-dashboard/differentials-home.tsx @@ -883,7 +883,6 @@ function SearchResultsView({ sortValue={sortValue} onSortChange={setSortValue} /> -

) : null} + +

Clinical decision support only. Review before use.

diff --git a/src/components/clinical-dashboard/document-search-results.tsx b/src/components/clinical-dashboard/document-search-results.tsx index dce916db..41889eb7 100644 --- a/src/components/clinical-dashboard/document-search-results.tsx +++ b/src/components/clinical-dashboard/document-search-results.tsx @@ -896,7 +896,6 @@ function DocumentSearchResultsPanelImpl({ onSortChange={setSortValue} /> - ) : null} {recordMatchCount > 0 || @@ -1140,6 +1139,8 @@ function DocumentSearchResultsPanelImpl({ )} + + {trimmedQuery && !shouldShowHome ? : null} ); } diff --git a/src/components/clinical-dashboard/favourites-command-library-page.tsx b/src/components/clinical-dashboard/favourites-command-library-page.tsx index f47cc51b..7e5a8147 100644 --- a/src/components/clinical-dashboard/favourites-command-library-page.tsx +++ b/src/components/clinical-dashboard/favourites-command-library-page.tsx @@ -1005,8 +1005,6 @@ export function FavouritesCommandLibraryPage({ query = "" }: { query?: string })
- - )} + + -

Medication search

@@ -693,6 +692,8 @@ function MedicationResults({ })}
+ +
- {query.trim() && displayedMatches.length === 0 ? ( )} + ) : null}
diff --git a/src/components/formulation/formulation-home-page.tsx b/src/components/formulation/formulation-home-page.tsx index a64b0e3f..00f95761 100644 --- a/src/components/formulation/formulation-home-page.tsx +++ b/src/components/formulation/formulation-home-page.tsx @@ -202,8 +202,6 @@ function FormulationResults({ query }: { query: string }) {

- -
)} + + ); diff --git a/src/components/services/services-navigator-page.tsx b/src/components/services/services-navigator-page.tsx index d4a3fc94..17097e55 100644 --- a/src/components/services/services-navigator-page.tsx +++ b/src/components/services/services-navigator-page.tsx @@ -515,7 +515,6 @@ export function ServicesNavigatorPage() { sortValue={sortValue} onSortChange={setSortValue} /> - } sidebar={ @@ -644,6 +643,7 @@ export function ServicesNavigatorPage() {
)} + ); } diff --git a/tests/ui-universal-search.spec.ts b/tests/ui-universal-search.spec.ts index 478c4e98..eca05478 100644 --- a/tests/ui-universal-search.spec.ts +++ b/tests/ui-universal-search.spec.ts @@ -228,6 +228,36 @@ test.describe("universal search typeahead", () => { expect(new URL((await universalRequest).url()).searchParams.get("domains")?.split(",")).not.toContain("services"); }); + test("places submitted cross-mode matches after the owning mode results", async ({ page }) => { + // "13YARN" matches the demo service fixture so service-search-results renders. + // Use an inline mock that echoes back the same query so universal-also-matches renders. + await page.route(/\/api\/search\/universal(?:\?.*)?$/, async (route) => { + const url = new URL(route.request().url()); + const mode = url.searchParams.get("mode") ?? "services"; + const q = url.searchParams.get("q") ?? "13YARN"; + await fulfillUniversalSearch(route, { + ...universalPayload, + query: q, + contextMode: mode, + preferredDomains: [], + domainOrder: universalPayload.groups.map((g) => g.kind), + }); + }); + await page.goto("/services?q=13YARN&run=1", { waitUntil: "domcontentloaded" }); + + const results = page.getByTestId("service-search-results"); + const alsoMatches = page.getByTestId("universal-also-matches"); + await expect(results).toBeVisible(); + await expect(alsoMatches).toBeVisible(); + expect( + await alsoMatches.evaluate((node) => { + const resultNode = document.querySelector('[data-testid="service-search-results"]'); + return Boolean((resultNode?.compareDocumentPosition(node) ?? 0) & Node.DOCUMENT_POSITION_FOLLOWING); + }), + "universal-also-matches panel must appear after primary results in the DOM", + ).toBe(true); + }); + test("shows submitted cross-mode matches on phones outside hidden desktop headers", async ({ page }) => { await page.setViewportSize({ width: 390, height: 844 }); await mockUniversalSearch(page);