Merge pull request #15749 from wayfair-contribs/smedeiros_add_lifecycle_initial_filter

Add initial filter prop for lifecycle picker
This commit is contained in:
Johan Haals
2023-01-19 11:23:43 +01:00
committed by GitHub
4 changed files with 28 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog-react': minor
---
Add `initialFilter` prop to EntityLifecyclePicker. This allows you to set an initial lifecycle for the catalog.
+3 -1
View File
@@ -194,7 +194,9 @@ export class EntityLifecycleFilter implements EntityFilter {
}
// @public (undocumented)
export const EntityLifecyclePicker: () => JSX.Element | null;
export const EntityLifecyclePicker: (props: {
initialFilter?: string[];
}) => JSX.Element | null;
// @public
export const EntityListContext: React_2.Context<
@@ -210,4 +210,21 @@ describe('<EntityLifecyclePicker/>', () => {
lifecycles: undefined,
});
});
it('responds to initialFilter prop', () => {
const updateFilters = jest.fn();
render(
<MockEntityListContextProvider
value={{
entities: sampleEntities,
backendEntities: sampleEntities,
updateFilters,
}}
>
<EntityLifecyclePicker initialFilter={['production']} />
</MockEntityListContextProvider>,
);
expect(updateFilters).toHaveBeenLastCalledWith({
lifecycles: new EntityLifecycleFilter(['production']),
});
});
});
@@ -47,7 +47,8 @@ const icon = <CheckBoxOutlineBlankIcon fontSize="small" />;
const checkedIcon = <CheckBoxIcon fontSize="small" />;
/** @public */
export const EntityLifecyclePicker = () => {
export const EntityLifecyclePicker = (props: { initialFilter?: string[] }) => {
const { initialFilter = [] } = props;
const classes = useStyles();
const {
updateFilters,
@@ -64,7 +65,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