@backstage/plugin-catalog-react 1.0.1-next.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/alpha/package.json +1 -1
- package/dist/index.alpha.d.ts +1 -1
- package/dist/index.beta.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +39 -23
- package/dist/index.esm.js.map +1 -1
- package/package.json +18 -18
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,59 @@
|
|
|
1
1
|
# @backstage/plugin-catalog-react
|
|
2
2
|
|
|
3
|
+
## 1.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 0ffd88a90e: Prevent permissions with types other than `ResourcePermission<'catalog-entity'>` from being used with the `useEntityPermission` hook.
|
|
8
|
+
- 7c7919777e: build(deps-dev): bump `@testing-library/react-hooks` from 7.0.2 to 8.0.0
|
|
9
|
+
- 24254fd433: build(deps): bump `@testing-library/user-event` from 13.5.0 to 14.0.0
|
|
10
|
+
- 4af82967f4: Decouple tags picker from backend entities
|
|
11
|
+
|
|
12
|
+
`EntityTagPicker` fetches all the tags independently and it doesn't require all the entities to be available client side.
|
|
13
|
+
|
|
14
|
+
- 4be0d1e777: Changed catalog filter components to only pay attention to query parameters relevant to the component.
|
|
15
|
+
- 5d5fdbe541: Columns in CatalogTable now change depending on the entity kind, ensuring only relevant columns are displayed.
|
|
16
|
+
- 863e7bcb7b: Updated the "unregister location" behavior in `UnregisterEntityDialog`. Removed unnecessary entity deletion requests that were sent after successfully deleting a location.
|
|
17
|
+
- 37b04b5a5e: Removed broken link from Labels section of entity inspector.
|
|
18
|
+
- a496cee4d1: Add support for string refs to the `EntityRefLinks` component
|
|
19
|
+
- d34900af81: Added a new `NextScaffolderRouter` which will eventually replace the exiting router
|
|
20
|
+
- 99063c39ae: Minor API report cleanup
|
|
21
|
+
- 4431873583: Update `usePermission` usage.
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
- @backstage/integration@1.1.0
|
|
24
|
+
- @backstage/plugin-permission-react@0.4.0
|
|
25
|
+
- @backstage/plugin-permission-common@0.6.0
|
|
26
|
+
- @backstage/catalog-model@1.0.1
|
|
27
|
+
- @backstage/core-components@0.9.3
|
|
28
|
+
- @backstage/core-plugin-api@1.0.1
|
|
29
|
+
- @backstage/version-bridge@1.0.1
|
|
30
|
+
- @backstage/plugin-catalog-common@1.0.1
|
|
31
|
+
- @backstage/catalog-client@1.0.1
|
|
32
|
+
|
|
33
|
+
## 1.0.1-next.3
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- 24254fd433: build(deps): bump `@testing-library/user-event` from 13.5.0 to 14.0.0
|
|
38
|
+
- 863e7bcb7b: Updated the "unregister location" behavior in `UnregisterEntityDialog`. Removed unnecessary entity deletion requests that were sent after successfully deleting a location.
|
|
39
|
+
- Updated dependencies
|
|
40
|
+
- @backstage/core-components@0.9.3-next.2
|
|
41
|
+
- @backstage/core-plugin-api@1.0.1-next.0
|
|
42
|
+
- @backstage/plugin-permission-common@0.6.0-next.1
|
|
43
|
+
- @backstage/plugin-permission-react@0.4.0-next.1
|
|
44
|
+
- @backstage/integration@1.1.0-next.2
|
|
45
|
+
|
|
46
|
+
## 1.0.1-next.2
|
|
47
|
+
|
|
48
|
+
### Patch Changes
|
|
49
|
+
|
|
50
|
+
- 4be0d1e777: Changed catalog filter components to only pay attention to query parameters relevant to the component.
|
|
51
|
+
- 5d5fdbe541: Columns in CatalogTable now change depending on the entity kind, ensuring only relevant columns are displayed.
|
|
52
|
+
- 99063c39ae: Minor API report cleanup
|
|
53
|
+
- Updated dependencies
|
|
54
|
+
- @backstage/core-components@0.9.3-next.1
|
|
55
|
+
- @backstage/catalog-model@1.0.1-next.1
|
|
56
|
+
|
|
3
57
|
## 1.0.1-next.1
|
|
4
58
|
|
|
5
59
|
### Patch Changes
|
package/alpha/package.json
CHANGED
package/dist/index.alpha.d.ts
CHANGED
|
@@ -259,7 +259,7 @@ export declare const EntityOwnerPicker: () => JSX.Element | null;
|
|
|
259
259
|
*
|
|
260
260
|
* @public
|
|
261
261
|
*/
|
|
262
|
-
export declare const EntityProvider: (
|
|
262
|
+
export declare const EntityProvider: (props: EntityProviderProps) => JSX.Element;
|
|
263
263
|
|
|
264
264
|
/**
|
|
265
265
|
* Properties for the EntityProvider component.
|
package/dist/index.beta.d.ts
CHANGED
|
@@ -259,7 +259,7 @@ export declare const EntityOwnerPicker: () => JSX.Element | null;
|
|
|
259
259
|
*
|
|
260
260
|
* @public
|
|
261
261
|
*/
|
|
262
|
-
export declare const EntityProvider: (
|
|
262
|
+
export declare const EntityProvider: (props: EntityProviderProps) => JSX.Element;
|
|
263
263
|
|
|
264
264
|
/**
|
|
265
265
|
* Properties for the EntityProvider component.
|
package/dist/index.d.ts
CHANGED
|
@@ -259,7 +259,7 @@ export declare const EntityOwnerPicker: () => JSX.Element | null;
|
|
|
259
259
|
*
|
|
260
260
|
* @public
|
|
261
261
|
*/
|
|
262
|
-
export declare const EntityProvider: (
|
|
262
|
+
export declare const EntityProvider: (props: EntityProviderProps) => JSX.Element;
|
|
263
263
|
|
|
264
264
|
/**
|
|
265
265
|
* Properties for the EntityProvider component.
|
package/dist/index.esm.js
CHANGED
|
@@ -125,12 +125,12 @@ const AsyncEntityProvider = ({
|
|
|
125
125
|
value: createVersionedValueMap({ 1: value })
|
|
126
126
|
}, children);
|
|
127
127
|
};
|
|
128
|
-
const EntityProvider = (
|
|
129
|
-
entity,
|
|
130
|
-
loading: !Boolean(entity),
|
|
128
|
+
const EntityProvider = (props) => /* @__PURE__ */ React.createElement(AsyncEntityProvider, {
|
|
129
|
+
entity: props.entity,
|
|
130
|
+
loading: !Boolean(props.entity),
|
|
131
131
|
error: void 0,
|
|
132
132
|
refresh: void 0,
|
|
133
|
-
children
|
|
133
|
+
children: props.children
|
|
134
134
|
});
|
|
135
135
|
function useEntity() {
|
|
136
136
|
const versionedHolder = useVersionedContext("entity-context");
|
|
@@ -479,16 +479,16 @@ function useEntityTypeFilter() {
|
|
|
479
479
|
const catalogApi = useApi(catalogApiRef);
|
|
480
480
|
const {
|
|
481
481
|
filters: { kind: kindFilter, type: typeFilter },
|
|
482
|
-
queryParameters,
|
|
482
|
+
queryParameters: { type: typeParameter },
|
|
483
483
|
updateFilters
|
|
484
484
|
} = useEntityList();
|
|
485
|
-
const
|
|
486
|
-
const [selectedTypes, setSelectedTypes] = useState(
|
|
485
|
+
const flattenedQueryTypes = useMemo(() => [typeParameter].flat().filter(Boolean), [typeParameter]);
|
|
486
|
+
const [selectedTypes, setSelectedTypes] = useState(flattenedQueryTypes.length ? flattenedQueryTypes : (_a = typeFilter == null ? void 0 : typeFilter.getTypes()) != null ? _a : []);
|
|
487
487
|
useEffect(() => {
|
|
488
|
-
if (
|
|
489
|
-
setSelectedTypes(
|
|
488
|
+
if (flattenedQueryTypes.length) {
|
|
489
|
+
setSelectedTypes(flattenedQueryTypes);
|
|
490
490
|
}
|
|
491
|
-
}, [
|
|
491
|
+
}, [flattenedQueryTypes]);
|
|
492
492
|
const [availableTypes, setAvailableTypes] = useState([]);
|
|
493
493
|
const kind = useMemo(() => kindFilter == null ? void 0 : kindFilter.value, [kindFilter]);
|
|
494
494
|
const {
|
|
@@ -665,8 +665,11 @@ function useEntityPermission(permission) {
|
|
|
665
665
|
const EntityKindPicker = (props) => {
|
|
666
666
|
var _a;
|
|
667
667
|
const { initialFilter, hidden } = props;
|
|
668
|
-
const {
|
|
669
|
-
|
|
668
|
+
const {
|
|
669
|
+
updateFilters,
|
|
670
|
+
queryParameters: { kind: kindParameter }
|
|
671
|
+
} = useEntityList();
|
|
672
|
+
const [selectedKind] = useState((_a = [kindParameter].flat()[0]) != null ? _a : initialFilter);
|
|
670
673
|
useEffect(() => {
|
|
671
674
|
updateFilters({
|
|
672
675
|
kind: selectedKind ? new EntityKindFilter(selectedKind) : void 0
|
|
@@ -693,8 +696,13 @@ const checkedIcon$2 = /* @__PURE__ */ React.createElement(CheckBoxIcon, {
|
|
|
693
696
|
const EntityLifecyclePicker = () => {
|
|
694
697
|
var _a, _b;
|
|
695
698
|
const classes = useStyles$b();
|
|
696
|
-
const {
|
|
697
|
-
|
|
699
|
+
const {
|
|
700
|
+
updateFilters,
|
|
701
|
+
backendEntities,
|
|
702
|
+
filters,
|
|
703
|
+
queryParameters: { lifecycles: lifecyclesParameter }
|
|
704
|
+
} = useEntityList();
|
|
705
|
+
const queryParamLifecycles = useMemo(() => [lifecyclesParameter].flat().filter(Boolean), [lifecyclesParameter]);
|
|
698
706
|
const [selectedLifecycles, setSelectedLifecycles] = useState(queryParamLifecycles.length ? queryParamLifecycles : (_b = (_a = filters.lifecycles) == null ? void 0 : _a.values) != null ? _b : []);
|
|
699
707
|
useEffect(() => {
|
|
700
708
|
if (queryParamLifecycles.length) {
|
|
@@ -759,8 +767,13 @@ const checkedIcon$1 = /* @__PURE__ */ React.createElement(CheckBoxIcon, {
|
|
|
759
767
|
const EntityOwnerPicker = () => {
|
|
760
768
|
var _a, _b;
|
|
761
769
|
const classes = useStyles$a();
|
|
762
|
-
const {
|
|
763
|
-
|
|
770
|
+
const {
|
|
771
|
+
updateFilters,
|
|
772
|
+
backendEntities,
|
|
773
|
+
filters,
|
|
774
|
+
queryParameters: { owners: ownersParameter }
|
|
775
|
+
} = useEntityList();
|
|
776
|
+
const queryParamOwners = useMemo(() => [ownersParameter].flat().filter(Boolean), [ownersParameter]);
|
|
764
777
|
const [selectedOwners, setSelectedOwners] = useState(queryParamOwners.length ? queryParamOwners : (_b = (_a = filters.owners) == null ? void 0 : _a.values) != null ? _b : []);
|
|
765
778
|
useEffect(() => {
|
|
766
779
|
if (queryParamOwners.length) {
|
|
@@ -1032,7 +1045,11 @@ const checkedIcon = /* @__PURE__ */ React.createElement(CheckBoxIcon, {
|
|
|
1032
1045
|
const EntityTagPicker = () => {
|
|
1033
1046
|
var _a, _b;
|
|
1034
1047
|
const classes = useStyles$7();
|
|
1035
|
-
const {
|
|
1048
|
+
const {
|
|
1049
|
+
updateFilters,
|
|
1050
|
+
filters,
|
|
1051
|
+
queryParameters: { tags: tagsParameter }
|
|
1052
|
+
} = useEntityList();
|
|
1036
1053
|
const catalogApi = useApi(catalogApiRef);
|
|
1037
1054
|
const { value: availableTags } = useAsync(async () => {
|
|
1038
1055
|
var _a2;
|
|
@@ -1043,7 +1060,7 @@ const EntityTagPicker = () => {
|
|
|
1043
1060
|
});
|
|
1044
1061
|
return facets[facet].map(({ value }) => value);
|
|
1045
1062
|
}, [filters.kind]);
|
|
1046
|
-
const queryParamTags = useMemo(() => [
|
|
1063
|
+
const queryParamTags = useMemo(() => [tagsParameter].flat().filter(Boolean), [tagsParameter]);
|
|
1047
1064
|
const [selectedTags, setSelectedTags] = useState(queryParamTags.length ? queryParamTags : (_b = (_a = filters.tags) == null ? void 0 : _a.values) != null ? _b : []);
|
|
1048
1065
|
useEffect(() => {
|
|
1049
1066
|
if (queryParamTags.length) {
|
|
@@ -1736,9 +1753,8 @@ function useUnregisterEntityDialogState(entity) {
|
|
|
1736
1753
|
}));
|
|
1737
1754
|
}, [catalogApi, entity]);
|
|
1738
1755
|
const unregisterLocation = useCallback(async function unregisterLocationFn() {
|
|
1739
|
-
const { location: location2
|
|
1756
|
+
const { location: location2 } = prerequisites.value;
|
|
1740
1757
|
await catalogApi.removeLocationById(location2.id);
|
|
1741
|
-
await Promise.allSettled(colocatedEntities2.map((e) => catalogApi.removeEntityByUid(e.metadata.uid)));
|
|
1742
1758
|
}, [catalogApi, prerequisites]);
|
|
1743
1759
|
const deleteEntity = useCallback(async function deleteEntityFn() {
|
|
1744
1760
|
await catalogApi.removeEntityByUid(uid);
|
|
@@ -1962,20 +1978,20 @@ const UserListPicker = (props) => {
|
|
|
1962
1978
|
filters,
|
|
1963
1979
|
updateFilters,
|
|
1964
1980
|
backendEntities,
|
|
1965
|
-
queryParameters,
|
|
1981
|
+
queryParameters: { kind: kindParameter, user: userParameter },
|
|
1966
1982
|
loading: loadingBackendEntities
|
|
1967
1983
|
} = useEntityList();
|
|
1968
1984
|
const userAndGroupFilterIds = ["starred", "all"];
|
|
1969
1985
|
const filterGroups = getFilterGroups(orgName).map((filterGroup) => ({
|
|
1970
1986
|
...filterGroup,
|
|
1971
|
-
items: filterGroup.items.filter(({ id }) => ["group", "user"].some((kind) => kind ===
|
|
1987
|
+
items: filterGroup.items.filter(({ id }) => ["group", "user"].some((kind) => kind === kindParameter) ? userAndGroupFilterIds.includes(id) : !availableFilters || availableFilters.includes(id))
|
|
1972
1988
|
})).filter(({ items }) => !!items.length);
|
|
1973
1989
|
const { isStarredEntity } = useStarredEntities();
|
|
1974
1990
|
const { isOwnedEntity, loading: loadingEntityOwnership } = useEntityOwnership();
|
|
1975
1991
|
const loading = loadingBackendEntities || loadingEntityOwnership;
|
|
1976
1992
|
const ownedFilter = useMemo(() => new UserListFilter("owned", isOwnedEntity, isStarredEntity), [isOwnedEntity, isStarredEntity]);
|
|
1977
1993
|
const starredFilter = useMemo(() => new UserListFilter("starred", isOwnedEntity, isStarredEntity), [isOwnedEntity, isStarredEntity]);
|
|
1978
|
-
const queryParamUserFilter = useMemo(() => [
|
|
1994
|
+
const queryParamUserFilter = useMemo(() => [userParameter].flat()[0], [userParameter]);
|
|
1979
1995
|
const [selectedUserFilter, setSelectedUserFilter] = useState(queryParamUserFilter != null ? queryParamUserFilter : initialFilter);
|
|
1980
1996
|
const entitiesWithoutUserFilter = useMemo(() => backendEntities.filter(reduceEntityFilters(compact(Object.values({ ...filters, user: void 0 })))), [filters, backendEntities]);
|
|
1981
1997
|
const filterCounts = useMemo(() => ({
|