diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/SearchHeader.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/SearchHeader.tsx index be98cd8baa..593793e18a 100644 --- a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/SearchHeader.tsx +++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/SearchHeader.tsx @@ -8,6 +8,7 @@ import ChecklistItem from "ui/shared/ChecklistItem"; import Input from "ui/shared/Input"; import { Context, Data } from "."; +import { ALL_FACETS, DATA_FACETS } from "./facets"; export const SearchHeader: Components["Header"] = ({ context, @@ -23,6 +24,14 @@ export const SearchHeader: Components["Header"] = ({ } }, [formik.values.pattern, lastPattern, setIsSearching]); + // Use "data.title" as proxy for all facets + const isDataOnly = () => !formik.values.facets.includes("data.title"); + + const toggleDataOnly = () => + isDataOnly() + ? formik.setFieldValue("facets", ALL_FACETS) + : formik.setFieldValue("facets", DATA_FACETS); + return ( ["Header"] = ({ {}} + checked={isDataOnly()} + onChange={toggleDataOnly} variant="compact" /> {formik.values.pattern && ( diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/facets.ts b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/facets.ts index e58e82460a..cbab1939b5 100644 --- a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/facets.ts +++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/facets.ts @@ -1,7 +1,7 @@ import { IndexedNode } from "@opensystemslab/planx-core/types"; import { FuseOptionKey } from "fuse.js"; -type SearchFacets = Array>; +export type SearchFacets = Array>; const generalData: SearchFacets = ["data.fn", "data.val"]; @@ -26,10 +26,29 @@ const drawBoundaryData: SearchFacets = [ ]; /** Data fields used across PlanX components */ -export const DATA_FACETS = [ +export const DATA_FACETS: SearchFacets = [ ...generalData, ...fileUploadAndLabelData, ...calculateData, ...listData, ...drawBoundaryData, ]; + +const basicFields: SearchFacets = [ + "data.text", + "data.title", + "data.description", +]; + +const moreInformation: SearchFacets = [ + "data.notes", + "data.howMeasured", + "data.policyRef", + "data.info", +]; + +export const ALL_FACETS: SearchFacets = [ + ...basicFields, + ...moreInformation, + ...DATA_FACETS, +]; diff --git a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/index.tsx b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/index.tsx index d9cfd8b2dc..9b64008d3d 100644 --- a/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/index.tsx +++ b/editor.planx.uk/src/pages/FlowEditor/components/Sidebar/Search/index.tsx @@ -13,7 +13,7 @@ import React, { useEffect, useMemo, useState } from "react"; import { Components, Virtuoso } from "react-virtuoso"; import { ExternalPortalList } from "./ExternalPortalList"; -import { DATA_FACETS } from "./facets"; +import { ALL_FACETS, SearchFacets } from "./facets"; import { SearchHeader } from "./SearchHeader"; import { SearchResultCard } from "./SearchResultCard"; @@ -21,7 +21,7 @@ const DEBOUNCE_MS = 500; interface SearchNodes { pattern: string; - facets: typeof DATA_FACETS; + facets: SearchFacets; } // Types for Virtuoso @@ -64,7 +64,7 @@ const Search: React.FC = () => { // Set up search input form const formik = useFormik({ - initialValues: { pattern: "", facets: DATA_FACETS }, + initialValues: { pattern: "", facets: ALL_FACETS }, onSubmit: ({ pattern }) => { debouncedSearch(pattern); },