diff --git a/packages/app/src/components/search/SearchPage.tsx b/packages/app/src/components/search/SearchPage.tsx index 3aff554b42..59b4168a18 100644 --- a/packages/app/src/components/search/SearchPage.tsx +++ b/packages/app/src/components/search/SearchPage.tsx @@ -17,9 +17,15 @@ import React from 'react'; import { Content, Header, Lifecycle, Page } from '@backstage/core'; import { Grid, List } from '@material-ui/core'; -import { SearchBarNext } from '@backstage/plugin-search'; -import { SearchResultNext, DefaultResultListItem } from '@backstage/plugin-search'; -import { SearchFiltersNext, FilterType } from '@backstage/plugin-search'; +import { + SearchBarNext, + SearchResultNext, + DefaultResultListItem, + SearchFiltersNext, + FilterType, + CheckBoxFilter, + SelectFilter, +} from '@backstage/plugin-search'; import { CatalogResultListItem } from '@backstage/plugin-catalog'; const filterDefinitions = [ @@ -44,11 +50,36 @@ export const searchPage = ( - + + <> + {filterDefinitions.map(definition => { + switch (definition.type) { + case 'checkbox': + return ( + + ); + case 'select': + return ( + + ); + default: + return null; + } + })} + + - {({results}) => ( + {({ results }) => ( {results.map(result => { switch (result.type) { diff --git a/plugins/search/src/components/SearchFiltersNext/SearchFiltersNext.tsx b/plugins/search/src/components/SearchFiltersNext/SearchFiltersNext.tsx index 92c65f4a57..b6536276c3 100644 --- a/plugins/search/src/components/SearchFiltersNext/SearchFiltersNext.tsx +++ b/plugins/search/src/components/SearchFiltersNext/SearchFiltersNext.tsx @@ -55,7 +55,7 @@ export type FilterOptions = { }; type FiltersProps = { - definitions: FilterDefinition[]; + children: React.ReactChild; }; type ValuedFilterProps = { @@ -79,7 +79,7 @@ export type FilterDefinition = { values: string[]; }; -const CheckBoxFilter = ({ fieldName, values }: ValuedFilterProps) => { +export const CheckBoxFilter = ({ fieldName, values }: ValuedFilterProps) => { const { filters, setFilters } = useSearch(); const classes = useCheckBoxStyles(); @@ -134,7 +134,7 @@ const CheckBoxFilter = ({ fieldName, values }: ValuedFilterProps) => { ); }; -const SelectFilter = ({ fieldName, values }: ValuedFilterProps) => { +export const SelectFilter = ({ fieldName, values }: ValuedFilterProps) => { const { filters, setFilters } = useSearch(); const classes = useSelectStyles(); @@ -171,33 +171,8 @@ const SelectFilter = ({ fieldName, values }: ValuedFilterProps) => { ); }; -export const SearchFiltersNext = ({ definitions }: FiltersProps) => { +export const SearchFiltersNext = ({ children }: FiltersProps) => { const classes = useFilterStyles(); - return ( - - {definitions.map(definition => { - switch (definition.type) { - case 'checkbox': - return ( - - ); - case 'select': - return ( - - ); - default: - return null; - } - })} - - ); + return {children}; }; diff --git a/plugins/search/src/components/SearchFiltersNext/index.tsx b/plugins/search/src/components/SearchFiltersNext/index.tsx index d45eadc79a..999db8deb5 100644 --- a/plugins/search/src/components/SearchFiltersNext/index.tsx +++ b/plugins/search/src/components/SearchFiltersNext/index.tsx @@ -15,4 +15,9 @@ */ export { FiltersButtonNext } from './FiltersButtonNext'; -export { SearchFiltersNext, FilterType } from './SearchFiltersNext'; +export { + SearchFiltersNext, + CheckBoxFilter, + SelectFilter, + FilterType, +} from './SearchFiltersNext'; diff --git a/plugins/search/src/index.ts b/plugins/search/src/index.ts index e5894aced4..4d8d9c08a2 100644 --- a/plugins/search/src/index.ts +++ b/plugins/search/src/index.ts @@ -29,6 +29,8 @@ export { Filters, FiltersButton, FilterType, + CheckBoxFilter, + SelectFilter, SearchBar, SearchContextProvider, useSearch,