From 5dc2618440227535752c7250229b0d17fbf5e408 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Sun, 22 Jan 2023 19:43:52 +0100 Subject: [PATCH] docs(search): update api reports Signed-off-by: Camila Belo --- plugins/catalog/api-report.md | 7 ++- plugins/explore/api-report.md | 7 ++- plugins/search-react/api-report.md | 87 +++++++++++++++++++++--------- plugins/search/api-report.md | 5 ++ plugins/techdocs/api-report.md | 7 ++- 5 files changed, 77 insertions(+), 36 deletions(-) diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index 82df851239..0e7162ea07 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -19,6 +19,7 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { StarredEntitiesApi } from '@backstage/plugin-catalog-react'; import { StorageApi } from '@backstage/core-plugin-api'; import { StyleRules } from '@material-ui/core/styles/withStyles'; @@ -107,9 +108,7 @@ export const catalogPlugin: BackstagePlugin< >; // @public (undocumented) -export function CatalogSearchResultListItem( - props: CatalogSearchResultListItemProps, -): JSX.Element; +export const CatalogSearchResultListItem: SearchResultListItemExtensionComponent; // @public export interface CatalogSearchResultListItemProps { @@ -120,7 +119,7 @@ export interface CatalogSearchResultListItemProps { // (undocumented) rank?: number; // (undocumented) - result: IndexableDocument; + result?: IndexableDocument; } // @public (undocumented) diff --git a/plugins/explore/api-report.md b/plugins/explore/api-report.md index d184ce01a4..906e816442 100644 --- a/plugins/explore/api-report.md +++ b/plugins/explore/api-report.md @@ -19,6 +19,7 @@ import { IndexableDocument } from '@backstage/plugin-search-common'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { TabProps } from '@material-ui/core'; // @public @deprecated (undocumented) @@ -125,9 +126,7 @@ export const ToolExplorerContent: (props: { }) => JSX.Element; // @public (undocumented) -export function ToolSearchResultListItem( - props: ToolSearchResultListItemProps, -): JSX.Element; +export const ToolSearchResultListItem: SearchResultListItemExtensionComponent; // @public export interface ToolSearchResultListItemProps { @@ -138,6 +137,6 @@ export interface ToolSearchResultListItemProps { // (undocumented) rank?: number; // (undocumented) - result: IndexableDocument; + result?: IndexableDocument; } ``` diff --git a/plugins/search-react/api-report.md b/plugins/search-react/api-report.md index 3d1e4091ea..8b09ad2a48 100644 --- a/plugins/search-react/api-report.md +++ b/plugins/search-react/api-report.md @@ -8,6 +8,7 @@ import { ApiRef } from '@backstage/core-plugin-api'; import { AsyncState } from 'react-use/lib/useAsync'; import { AutocompleteProps } from '@material-ui/lab'; +import { Extension } from '@backstage/core-plugin-api'; import { ForwardRefExoticComponent } from 'react'; import { InputBaseProps } from '@material-ui/core'; import { JsonObject } from '@backstage/types'; @@ -34,6 +35,13 @@ export const AutocompleteFilter: ( // @public (undocumented) export const CheckboxFilter: (props: SearchFilterComponentProps) => JSX.Element; +// @public +export const createSearchResultListItemExtension: < + Props extends SearchResultListItemExtensionProps, +>( + options: SearchResultListItemExtensionOptions, +) => Extension>; + // @public (undocumented) export const DefaultResultListItem: ( props: DefaultResultListItemProps, @@ -43,7 +51,7 @@ export const DefaultResultListItem: ( export type DefaultResultListItemProps = { icon?: ReactNode; secondaryAction?: ReactNode; - result: SearchDocument; + result?: SearchDocument; highlight?: ResultHighlight; rank?: number; lineClamp?: number; @@ -280,7 +288,10 @@ export const SearchResultContext: ( // @public export type SearchResultContextProps = { - children: (state: AsyncState) => JSX.Element | null; + children: ( + state: AsyncState, + query: Partial, + ) => JSX.Element | null; }; // @public @@ -313,6 +324,8 @@ export function SearchResultGroupLayout( // @public export type SearchResultGroupLayoutProps = ListProps & { + error?: Error; + loading?: boolean; icon: JSX.Element; title: ReactNode; titleProps?: Partial; @@ -332,19 +345,19 @@ export type SearchResultGroupLayoutProps = ListProps & { index: number, array: SearchResult_2[], ) => JSX.Element | null; - error?: Error; - loading?: boolean; noResultsComponent?: ReactNode; + disableRenderingWithNoResults?: boolean; }; // @public -export type SearchResultGroupProps = Omit< - SearchResultGroupLayoutProps, - 'loading' | 'error' | 'resultItems' | 'filterFields' -> & { - query: Partial; - disableRenderingWithNoResults?: boolean; -}; +export type SearchResultGroupProps = Pick< + SearchResultStateProps, + 'query' +> & + Omit< + SearchResultGroupLayoutProps, + 'loading' | 'error' | 'resultItems' | 'filterFields' + >; // @public export const SearchResultGroupSelectFilterField: ( @@ -369,6 +382,30 @@ export type SearchResultGroupTextFilterFieldProps = // @public export const SearchResultList: (props: SearchResultListProps) => JSX.Element; +// @public +export type SearchResultListItemExtensionComponent< + Props extends SearchResultListItemExtensionProps, +> = (props: Props) => JSX.Element | null; + +// @public +export type SearchResultListItemExtensionOptions< + Props extends SearchResultListItemExtensionProps = SearchResultListItemExtensionProps, +> = { + name: string; + component: (props: Props) => JSX.Element | null; + predicate?: (result: SearchResult_2) => boolean; +}; + +// @public +export const SearchResultListItemExtensions: ( + props: SearchResultListItemExtensionsProps, +) => JSX.Element; + +// @public +export type SearchResultListItemExtensionsProps = Omit & { + results: SearchResult_2[]; +}; + // @public export const SearchResultListLayout: ( props: SearchResultListLayoutProps, @@ -376,34 +413,31 @@ export const SearchResultListLayout: ( // @public export type SearchResultListLayoutProps = ListProps & { + error?: Error; + loading?: boolean; resultItems?: SearchResult_2[]; renderResultItem?: ( value: SearchResult_2, index: number, array: SearchResult_2[], ) => JSX.Element | null; - error?: Error; - loading?: boolean; noResultsComponent?: ReactNode; + disableRenderingWithNoResults?: boolean; }; // @public -export type SearchResultListProps = Omit< - SearchResultListLayoutProps, - 'loading' | 'error' | 'resultItems' -> & { - query: Partial; - disableRenderingWithNoResults?: boolean; -}; +export type SearchResultListProps = Pick & + Omit; // @public (undocumented) export const SearchResultPager: () => JSX.Element; // @public -export type SearchResultProps = Pick & { - children: (resultSet: SearchResultSet) => JSX.Element; - noResultsComponent?: JSX.Element; -}; +export type SearchResultProps = Pick & + Omit & { + children?: ReactNode | ((resultSet: SearchResultSet) => JSX.Element); + noResultsComponent?: JSX.Element; + }; // @public export const SearchResultState: (props: SearchResultStateProps) => JSX.Element; @@ -420,4 +454,9 @@ export const useSearch: () => SearchContextValue; // @public export const useSearchContextCheck: () => boolean; + +// @public +export const useSearchResultListItemExtensions: ( + children: ReactNode, +) => (result: SearchResult_2, key?: number) => JSX.Element; ``` diff --git a/plugins/search/api-report.md b/plugins/search/api-report.md index cdbdc4c095..0a31b3021b 100644 --- a/plugins/search/api-report.md +++ b/plugins/search/api-report.md @@ -6,10 +6,15 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { DefaultResultListItemProps } from '@backstage/plugin-search-react'; import { IconComponent } from '@backstage/core-plugin-api'; import { ReactNode } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; import { SearchBarBaseProps } from '@backstage/plugin-search-react'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; + +// @public (undocumented) +export const DefaultSearchResultListItem: SearchResultListItemExtensionComponent; // @public (undocumented) export const HomePageSearchBar: ({ diff --git a/plugins/techdocs/api-report.md b/plugins/techdocs/api-report.md index d1c05f5b8e..07067b9fcc 100644 --- a/plugins/techdocs/api-report.md +++ b/plugins/techdocs/api-report.md @@ -19,6 +19,7 @@ import { default as React_2 } from 'react'; import { ReactNode } from 'react'; import { ResultHighlight } from '@backstage/plugin-search-common'; import { RouteRef } from '@backstage/core-plugin-api'; +import { SearchResultListItemExtensionComponent } from '@backstage/plugin-search-react'; import { TableColumn } from '@backstage/core-components'; import { TableProps } from '@backstage/core-components'; import { TechDocsEntityMetadata as TechDocsEntityMetadata_2 } from '@backstage/plugin-techdocs-react'; @@ -396,14 +397,12 @@ export type TechDocsSearchProps = { }; // @public -export const TechDocsSearchResultListItem: ( - props: TechDocsSearchResultListItemProps, -) => JSX.Element; +export const TechDocsSearchResultListItem: SearchResultListItemExtensionComponent; // @public export type TechDocsSearchResultListItemProps = { icon?: ReactNode; - result: any; + result?: any; highlight?: ResultHighlight; rank?: number; lineClamp?: number;