From aadbec389bb956b53c582b402802e951e6f40412 Mon Sep 17 00:00:00 2001 From: Sarah Medeiros Date: Fri, 13 Jan 2023 12:01:36 -0500 Subject: [PATCH 1/6] Add initial filter prop for lifecycle picker Signed-off-by: Sarah Medeiros --- .../EntityLifecyclePicker.test.tsx | 17 +++++++++++++++++ .../EntityLifecyclePicker.tsx | 10 ++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx index ef77f7615f..3ee610ddaf 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.test.tsx @@ -210,4 +210,21 @@ describe('', () => { lifecycles: undefined, }); }); + it('responds to initialFilter prop', () => { + const updateFilters = jest.fn(); + render( + + + , + ); + expect(updateFilters).toHaveBeenLastCalledWith({ + lifecycles: new EntityLifecycleFilter(['production']), + }); + }); }); diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx index b941f94531..913e800ec0 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx @@ -47,7 +47,13 @@ const icon = ; const checkedIcon = ; /** @public */ -export const EntityLifecyclePicker = () => { +export type EntityLifecyclePickerProps = { + initialFilter?: string[]; +}; + +/** @public */ +export const EntityLifecyclePicker = (props: EntityLifecyclePickerProps) => { + const { initialFilter } = props; const classes = useStyles(); const { updateFilters, @@ -64,7 +70,7 @@ export const EntityLifecyclePicker = () => { const [selectedLifecycles, setSelectedLifecycles] = useState( queryParamLifecycles.length ? queryParamLifecycles - : filters.lifecycles?.values ?? [], + : filters.lifecycles?.values ?? (initialFilter || []), ); // Set selected lifecycles on query parameter updates; this happens at initial page load and from From 929e1afe1b45621c1e0b13c059fbbdc989f59b63 Mon Sep 17 00:00:00 2001 From: Sarah Medeiros Date: Fri, 13 Jan 2023 12:35:05 -0500 Subject: [PATCH 2/6] Add changelog Signed-off-by: Sarah Medeiros --- .changeset/rare-melons-battle.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/rare-melons-battle.md diff --git a/.changeset/rare-melons-battle.md b/.changeset/rare-melons-battle.md new file mode 100644 index 0000000000..0b13793409 --- /dev/null +++ b/.changeset/rare-melons-battle.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Add initialFilter prop to EntityLifecyclePicker. This allows you to set an initial lifecycle for the catalog. From f1e0357974538f15835c58b2ca260c2aacbdc3ed Mon Sep 17 00:00:00 2001 From: Sarah Medeiros Date: Fri, 13 Jan 2023 12:55:04 -0500 Subject: [PATCH 3/6] Update API report. Simplify picker. Signed-off-by: Sarah Medeiros --- plugins/catalog-react/api-report.md | 9 ++++++++- .../EntityLifecyclePicker/EntityLifecyclePicker.tsx | 4 ++-- .../src/components/EntityLifecyclePicker/index.ts | 5 ++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 9528c55326..48153a9c78 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -194,7 +194,14 @@ export class EntityLifecycleFilter implements EntityFilter { } // @public (undocumented) -export const EntityLifecyclePicker: () => JSX.Element | null; +export const EntityLifecyclePicker: ( + props: EntityLifecyclePickerProps, +) => JSX.Element | null; + +// @public (undocumented) +export type EntityLifecyclePickerProps = { + initialFilter?: string[]; +}; // @public export const EntityListContext: React_2.Context< diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx index 913e800ec0..3ec0bf8497 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx @@ -53,7 +53,7 @@ export type EntityLifecyclePickerProps = { /** @public */ export const EntityLifecyclePicker = (props: EntityLifecyclePickerProps) => { - const { initialFilter } = props; + const { initialFilter = [] } = props; const classes = useStyles(); const { updateFilters, @@ -70,7 +70,7 @@ export const EntityLifecyclePicker = (props: EntityLifecyclePickerProps) => { const [selectedLifecycles, setSelectedLifecycles] = useState( queryParamLifecycles.length ? queryParamLifecycles - : filters.lifecycles?.values ?? (initialFilter || []), + : filters.lifecycles?.values ?? initialFilter, ); // Set selected lifecycles on query parameter updates; this happens at initial page load and from diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts b/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts index def25eabf4..b1e2d73080 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts @@ -15,4 +15,7 @@ */ export { EntityLifecyclePicker } from './EntityLifecyclePicker'; -export type { CatalogReactEntityLifecyclePickerClassKey } from './EntityLifecyclePicker'; +export type { + CatalogReactEntityLifecyclePickerClassKey, + EntityLifecyclePickerProps, +} from './EntityLifecyclePicker'; From 0641029495c36cb4787fbff0c1541c550cc0c80a Mon Sep 17 00:00:00 2001 From: Sarah Medeiros Date: Fri, 13 Jan 2023 12:55:35 -0500 Subject: [PATCH 4/6] Update changelog message Signed-off-by: Sarah Medeiros --- .changeset/rare-melons-battle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/rare-melons-battle.md b/.changeset/rare-melons-battle.md index 0b13793409..2cf096fad8 100644 --- a/.changeset/rare-melons-battle.md +++ b/.changeset/rare-melons-battle.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-react': patch --- -Add initialFilter prop to EntityLifecyclePicker. This allows you to set an initial lifecycle for the catalog. +Add `initialFilter` prop to EntityLifecyclePicker. This allows you to set an initial lifecycle for the catalog. From c1fed63004b143c7be8084b5dd67643e3ad9a893 Mon Sep 17 00:00:00 2001 From: Sarah Medeiros Date: Fri, 13 Jan 2023 15:06:21 -0500 Subject: [PATCH 5/6] Define type inline & update api-report Signed-off-by: Sarah Medeiros --- plugins/catalog-react/api-report.md | 9 ++------- .../EntityLifecyclePicker/EntityLifecyclePicker.tsx | 7 +------ .../src/components/EntityLifecyclePicker/index.ts | 5 +---- 3 files changed, 4 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-react/api-report.md b/plugins/catalog-react/api-report.md index 48153a9c78..095b6832a4 100644 --- a/plugins/catalog-react/api-report.md +++ b/plugins/catalog-react/api-report.md @@ -194,14 +194,9 @@ export class EntityLifecycleFilter implements EntityFilter { } // @public (undocumented) -export const EntityLifecyclePicker: ( - props: EntityLifecyclePickerProps, -) => JSX.Element | null; - -// @public (undocumented) -export type EntityLifecyclePickerProps = { +export const EntityLifecyclePicker: (props: { initialFilter?: string[]; -}; +}) => JSX.Element | null; // @public export const EntityListContext: React_2.Context< diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx index 3ec0bf8497..77925598e1 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/EntityLifecyclePicker.tsx @@ -47,12 +47,7 @@ const icon = ; const checkedIcon = ; /** @public */ -export type EntityLifecyclePickerProps = { - initialFilter?: string[]; -}; - -/** @public */ -export const EntityLifecyclePicker = (props: EntityLifecyclePickerProps) => { +export const EntityLifecyclePicker = (props: { initialFilter?: string[] }) => { const { initialFilter = [] } = props; const classes = useStyles(); const { diff --git a/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts b/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts index b1e2d73080..def25eabf4 100644 --- a/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts +++ b/plugins/catalog-react/src/components/EntityLifecyclePicker/index.ts @@ -15,7 +15,4 @@ */ export { EntityLifecyclePicker } from './EntityLifecyclePicker'; -export type { - CatalogReactEntityLifecyclePickerClassKey, - EntityLifecyclePickerProps, -} from './EntityLifecyclePicker'; +export type { CatalogReactEntityLifecyclePickerClassKey } from './EntityLifecyclePicker'; From cb167af97da67de6712deddd1ab6e59377ec5c74 Mon Sep 17 00:00:00 2001 From: Sarah Medeiros Date: Mon, 16 Jan 2023 13:16:29 -0500 Subject: [PATCH 6/6] Update .changeset/rare-melons-battle.md Co-authored-by: Johan Haals Signed-off-by: Sarah Medeiros --- .changeset/rare-melons-battle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/rare-melons-battle.md b/.changeset/rare-melons-battle.md index 2cf096fad8..85fd72c763 100644 --- a/.changeset/rare-melons-battle.md +++ b/.changeset/rare-melons-battle.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-catalog-react': patch +'@backstage/plugin-catalog-react': minor --- Add `initialFilter` prop to EntityLifecyclePicker. This allows you to set an initial lifecycle for the catalog.