From bd817209ddd7169aee01be5f92e07535a6936a54 Mon Sep 17 00:00:00 2001 From: Mengnan Gong Date: Thu, 10 Aug 2023 22:33:15 +0800 Subject: [PATCH 1/2] Export the EntityAutocompletePicker component Signed-off-by: Mengnan Gong --- .changeset/eight-timers-sin.md | 5 +++ plugins/catalog-react/api-report.md | 36 +++++++++++++++++++ .../EntityAutocompletePicker.tsx | 18 +++++----- .../EntityAutocompletePicker/index.ts | 6 +++- .../EntityProcessingStatusPicker/index.ts | 2 +- plugins/catalog-react/src/components/index.ts | 1 + 6 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 .changeset/eight-timers-sin.md diff --git a/.changeset/eight-timers-sin.md b/.changeset/eight-timers-sin.md new file mode 100644 index 0000000000..28d6259cb4 --- /dev/null +++ b/.changeset/eight-timers-sin.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Export the `EntityAutocompletePicker` component. diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 0891875e3c..06ac77e6cd 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -24,6 +24,16 @@ import { StyleRules } from '@material-ui/core/styles/withStyles'; import { SystemEntity } from '@backstage/catalog-model'; import { TableColumn } from '@backstage/core-components'; import { TableOptions } from '@backstage/core-components'; +import { TextFieldProps } from '@material-ui/core'; + +// @public (undocumented) +export type AllowedEntityFilters = { + [K in keyof T]-?: NonNullable extends EntityFilter & { + values: string[]; + } + ? K + : never; +}[keyof T]; // @public export const AsyncEntityProvider: ( @@ -128,6 +138,12 @@ export const columnFactories: Readonly<{ createSpecTypeColumn(): TableColumn; }>; +// @public (undocumented) +export interface ConstructableFilter { + // (undocumented) + new (values: string[]): T; +} + // @public (undocumented) export type DefaultEntityFilters = { kind?: EntityKindFilter; @@ -142,6 +158,26 @@ export type DefaultEntityFilters = { namespace?: EntityNamespaceFilter; }; +// @public (undocumented) +export function EntityAutocompletePicker< + T extends DefaultEntityFilters = DefaultEntityFilters, + Name extends AllowedEntityFilters = AllowedEntityFilters, +>(props: EntityAutocompletePickerProps): React_2.JSX.Element | null; + +// @public (undocumented) +export type EntityAutocompletePickerProps< + T extends DefaultEntityFilters = DefaultEntityFilters, + Name extends AllowedEntityFilters = AllowedEntityFilters, +> = { + label: string; + name: Name; + path: string; + showCounts?: boolean; + Filter: ConstructableFilter>; + InputProps?: TextFieldProps; + initialSelectedOptions?: string[]; +}; + // @public export class EntityErrorFilter implements EntityFilter { constructor(value: boolean); diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx index b6de85937d..b921117dc7 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx @@ -29,17 +29,17 @@ import { } from '../../hooks/useEntityListProvider'; import { EntityFilter } from '../../types'; -type KeysMatchingCondition = T extends V ? K : never; -type KeysMatching = { - [K in keyof T]-?: KeysMatchingCondition; +/** @public */ +export type AllowedEntityFilters = { + [K in keyof T]-?: NonNullable extends EntityFilter & { + values: string[]; + } + ? K + : never; }[keyof T]; -type AllowedEntityFilters = KeysMatching< - T, - EntityFilter & { values: string[] } ->; - -interface ConstructableFilter { +/** @public */ +export interface ConstructableFilter { new (values: string[]): T; } diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts b/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts index 10ce0123b7..b7aa7ca3b2 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts @@ -15,4 +15,8 @@ */ export { EntityAutocompletePicker } from './EntityAutocompletePicker'; -export type { EntityAutocompletePickerProps } from './EntityAutocompletePicker'; +export type { + EntityAutocompletePickerProps, + AllowedEntityFilters, + ConstructableFilter, +} from './EntityAutocompletePicker'; diff --git a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/index.ts b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/index.ts index 55daeaecc0..8c1471b5ad 100644 --- a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/index.ts +++ b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/index.ts @@ -13,5 +13,5 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -export { EntityProcessingStatusPicker as EntityProcessingStatusPicker } from './EntityProcessingStatusPicker'; +export { EntityProcessingStatusPicker } from './EntityProcessingStatusPicker'; export type { CatalogReactEntityProcessingStatusPickerClassKey } from './EntityProcessingStatusPicker'; diff --git a/plugins/catalog-react/src/components/index.ts b/plugins/catalog-react/src/components/index.ts index 6d8aa393ed..f77d13d2d3 100644 --- a/plugins/catalog-react/src/components/index.ts +++ b/plugins/catalog-react/src/components/index.ts @@ -30,3 +30,4 @@ export * from './UnregisterEntityDialog'; export * from './UserListPicker'; export * from './EntityProcessingStatusPicker'; export * from './EntityNamespacePicker'; +export * from './EntityAutocompletePicker'; From 40f958c9fbb82d75fd730be8552e226f42391215 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 29 Aug 2023 10:31:40 +0200 Subject: [PATCH 2/2] feat: clean up the reports a little more Signed-off-by: blam --- plugins/catalog-react/api-report.md | 10 +++------- .../EntityAutocompletePicker.tsx | 7 +------ .../src/components/EntityAutocompletePicker/index.ts | 1 - 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 06ac77e6cd..a72df6bb3d 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -138,12 +138,6 @@ export const columnFactories: Readonly<{ createSpecTypeColumn(): TableColumn; }>; -// @public (undocumented) -export interface ConstructableFilter { - // (undocumented) - new (values: string[]): T; -} - // @public (undocumented) export type DefaultEntityFilters = { kind?: EntityKindFilter; @@ -173,7 +167,9 @@ export type EntityAutocompletePickerProps< name: Name; path: string; showCounts?: boolean; - Filter: ConstructableFilter>; + Filter: { + new (values: string[]): NonNullable; + }; InputProps?: TextFieldProps; initialSelectedOptions?: string[]; }; diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx index b921117dc7..3eaba51909 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx @@ -38,11 +38,6 @@ export type AllowedEntityFilters = { : never; }[keyof T]; -/** @public */ -export interface ConstructableFilter { - new (values: string[]): T; -} - /** @public */ export type EntityAutocompletePickerProps< T extends DefaultEntityFilters = DefaultEntityFilters, @@ -52,7 +47,7 @@ export type EntityAutocompletePickerProps< name: Name; path: string; showCounts?: boolean; - Filter: ConstructableFilter>; + Filter: { new (values: string[]): NonNullable }; InputProps?: TextFieldProps; initialSelectedOptions?: string[]; }; diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts b/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts index b7aa7ca3b2..684e7cef55 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/index.ts @@ -18,5 +18,4 @@ export { EntityAutocompletePicker } from './EntityAutocompletePicker'; export type { EntityAutocompletePickerProps, AllowedEntityFilters, - ConstructableFilter, } from './EntityAutocompletePicker';