@backstage/plugin-catalog-react 0.6.5 → 0.6.9
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 +36 -0
- package/dist/index.cjs.js +37 -6
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +18 -3
- package/dist/index.esm.js +36 -7
- package/dist/index.esm.js.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# @backstage/plugin-catalog-react
|
|
2
2
|
|
|
3
|
+
## 0.6.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c6fdddec77: When a user has zero owned entities when viewing an entity kind in the catalog
|
|
8
|
+
page, it will be automatically redirected to see all the entities. Furthermore,
|
|
9
|
+
for the kind User and Group there are no longer the owned selector.
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
- @backstage/integration@0.7.0
|
|
12
|
+
|
|
13
|
+
## 0.6.8
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- 3491a36ab9: added useOwnedEntities hook to get the list of entities of the logged-in user
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
- @backstage/core-plugin-api@0.4.0
|
|
20
|
+
- @backstage/core-components@0.8.2
|
|
21
|
+
- @backstage/catalog-client@0.5.3
|
|
22
|
+
|
|
23
|
+
## 0.6.7
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- 6156fb8730: `useEntityTypeFilter`: Skip updating selected types if a kind filter change did not change them.
|
|
28
|
+
- Updated dependencies
|
|
29
|
+
- @backstage/core-plugin-api@0.3.1
|
|
30
|
+
- @backstage/core-components@0.8.1
|
|
31
|
+
- @backstage/catalog-model@0.9.8
|
|
32
|
+
|
|
33
|
+
## 0.6.6
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- 4c0f0b2003: Removed dependency on `@backstage/core-app-api`.
|
|
38
|
+
|
|
3
39
|
## 0.6.5
|
|
4
40
|
|
|
5
41
|
### Patch Changes
|
package/dist/index.cjs.js
CHANGED
|
@@ -13,6 +13,7 @@ var versionBridge = require('@backstage/version-bridge');
|
|
|
13
13
|
var reactRouter = require('react-router');
|
|
14
14
|
var reactUse = require('react-use');
|
|
15
15
|
var qs = require('qs');
|
|
16
|
+
var isEqual = require('lodash/isEqual');
|
|
16
17
|
var coreComponents = require('@backstage/core-components');
|
|
17
18
|
var core = require('@material-ui/core');
|
|
18
19
|
var jwtDecoder = require('jwt-decode');
|
|
@@ -33,6 +34,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
33
34
|
var ObservableImpl__default = /*#__PURE__*/_interopDefaultLegacy(ObservableImpl);
|
|
34
35
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
35
36
|
var qs__default = /*#__PURE__*/_interopDefaultLegacy(qs);
|
|
37
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
36
38
|
var jwtDecoder__default = /*#__PURE__*/_interopDefaultLegacy(jwtDecoder);
|
|
37
39
|
var CheckBoxIcon__default = /*#__PURE__*/_interopDefaultLegacy(CheckBoxIcon);
|
|
38
40
|
var CheckBoxOutlineBlankIcon__default = /*#__PURE__*/_interopDefaultLegacy(CheckBoxOutlineBlankIcon);
|
|
@@ -577,7 +579,9 @@ function useEntityTypeFilter() {
|
|
|
577
579
|
const newTypes = Object.entries(countByType).sort(([, count1], [, count2]) => count2 - count1).map(([type]) => type);
|
|
578
580
|
setAvailableTypes(newTypes);
|
|
579
581
|
const stillValidTypes = selectedTypes.filter((value) => newTypes.includes(value));
|
|
580
|
-
|
|
582
|
+
if (!isEqual__default["default"](selectedTypes, stillValidTypes)) {
|
|
583
|
+
setSelectedTypes(stillValidTypes);
|
|
584
|
+
}
|
|
581
585
|
}, [loading, kind, selectedTypes, setSelectedTypes, entities]);
|
|
582
586
|
React.useEffect(() => {
|
|
583
587
|
updateFilters({
|
|
@@ -765,6 +769,30 @@ function useEntityOwnership() {
|
|
|
765
769
|
return React.useMemo(() => ({ loading, isOwnedEntity }), [loading, isOwnedEntity]);
|
|
766
770
|
}
|
|
767
771
|
|
|
772
|
+
function useOwnedEntities(allowedKinds) {
|
|
773
|
+
const identityApi = corePluginApi.useApi(corePluginApi.identityApiRef);
|
|
774
|
+
const catalogApi = corePluginApi.useApi(catalogApiRef);
|
|
775
|
+
const { loading, value: refs } = reactUse.useAsync(async () => {
|
|
776
|
+
const identityRefs = await loadIdentityOwnerRefs(identityApi);
|
|
777
|
+
const catalogRefs = await loadCatalogOwnerRefs(catalogApi, identityRefs);
|
|
778
|
+
const catalogs = await catalogApi.getEntities(allowedKinds ? {
|
|
779
|
+
filter: {
|
|
780
|
+
kind: allowedKinds,
|
|
781
|
+
[`relations.${catalogModel.RELATION_OWNED_BY}`]: [...identityRefs, ...catalogRefs]
|
|
782
|
+
}
|
|
783
|
+
} : {
|
|
784
|
+
filter: {
|
|
785
|
+
[`relations.${catalogModel.RELATION_OWNED_BY}`]: [...identityRefs, ...catalogRefs]
|
|
786
|
+
}
|
|
787
|
+
});
|
|
788
|
+
return catalogs;
|
|
789
|
+
}, []);
|
|
790
|
+
const ownedEntities = React.useMemo(() => {
|
|
791
|
+
return refs;
|
|
792
|
+
}, [refs]);
|
|
793
|
+
return React.useMemo(() => ({ loading, ownedEntities }), [loading, ownedEntities]);
|
|
794
|
+
}
|
|
795
|
+
|
|
768
796
|
const EntityKindPicker = ({
|
|
769
797
|
initialFilter,
|
|
770
798
|
hidden
|
|
@@ -1489,22 +1517,24 @@ const UserListPicker = ({
|
|
|
1489
1517
|
const classes = useStyles();
|
|
1490
1518
|
const configApi = corePluginApi.useApi(corePluginApi.configApiRef);
|
|
1491
1519
|
const orgName = (_a = configApi.getOptionalString("organization.name")) != null ? _a : "Company";
|
|
1520
|
+
const { filters, updateFilters, backendEntities, queryParameters } = useEntityListProvider();
|
|
1521
|
+
const userAndGroupFilterIds = ["starred", "all"];
|
|
1492
1522
|
const filterGroups = getFilterGroups(orgName).map((filterGroup) => ({
|
|
1493
1523
|
...filterGroup,
|
|
1494
|
-
items: filterGroup.items.filter(({ id }) => !availableFilters || availableFilters.includes(id))
|
|
1524
|
+
items: filterGroup.items.filter(({ id }) => ["group", "user"].some((kind) => kind === queryParameters.kind) ? userAndGroupFilterIds.includes(id) : !availableFilters || availableFilters.includes(id))
|
|
1495
1525
|
})).filter(({ items }) => !!items.length);
|
|
1496
|
-
const { filters, updateFilters, backendEntities, queryParameters } = useEntityListProvider();
|
|
1497
1526
|
const { isStarredEntity } = useStarredEntities();
|
|
1498
1527
|
const { isOwnedEntity } = useEntityOwnership();
|
|
1499
|
-
const [selectedUserFilter, setSelectedUserFilter] = React.useState((_b = [queryParameters.user].flat()[0]) != null ? _b : initialFilter);
|
|
1500
1528
|
const ownedFilter = React.useMemo(() => new UserListFilter("owned", isOwnedEntity, isStarredEntity), [isOwnedEntity, isStarredEntity]);
|
|
1501
1529
|
const starredFilter = React.useMemo(() => new UserListFilter("starred", isOwnedEntity, isStarredEntity), [isOwnedEntity, isStarredEntity]);
|
|
1530
|
+
const [entitiesWithoutUserFilter, setEntitiesWithoutUserFilter] = React.useState(backendEntities);
|
|
1531
|
+
const totalOwnedUserEntities = entitiesWithoutUserFilter.filter((entity) => ownedFilter.filterEntity(entity)).length;
|
|
1532
|
+
const [selectedUserFilter, setSelectedUserFilter] = React.useState(totalOwnedUserEntities > 0 ? (_b = [queryParameters.user].flat()[0]) != null ? _b : initialFilter : "all");
|
|
1502
1533
|
React.useEffect(() => {
|
|
1503
1534
|
updateFilters({
|
|
1504
1535
|
user: selectedUserFilter ? new UserListFilter(selectedUserFilter, isOwnedEntity, isStarredEntity) : void 0
|
|
1505
1536
|
});
|
|
1506
1537
|
}, [selectedUserFilter, isOwnedEntity, isStarredEntity, updateFilters]);
|
|
1507
|
-
const [entitiesWithoutUserFilter, setEntitiesWithoutUserFilter] = React.useState(backendEntities);
|
|
1508
1538
|
React.useEffect(() => {
|
|
1509
1539
|
const filterFn = reduceEntityFilters(lodash.compact(Object.values({ ...filters, user: void 0 })));
|
|
1510
1540
|
setEntitiesWithoutUserFilter(backendEntities.filter(filterFn));
|
|
@@ -1512,7 +1542,7 @@ const UserListPicker = ({
|
|
|
1512
1542
|
function getFilterCount(id) {
|
|
1513
1543
|
switch (id) {
|
|
1514
1544
|
case "owned":
|
|
1515
|
-
return
|
|
1545
|
+
return totalOwnedUserEntities;
|
|
1516
1546
|
case "starred":
|
|
1517
1547
|
return entitiesWithoutUserFilter.filter((entity) => starredFilter.filterEntity(entity)).length;
|
|
1518
1548
|
default:
|
|
@@ -1634,6 +1664,7 @@ exports.useEntityListProvider = useEntityListProvider;
|
|
|
1634
1664
|
exports.useEntityOwnership = useEntityOwnership;
|
|
1635
1665
|
exports.useEntityTypeFilter = useEntityTypeFilter;
|
|
1636
1666
|
exports.useOwnUser = useOwnUser;
|
|
1667
|
+
exports.useOwnedEntities = useOwnedEntities;
|
|
1637
1668
|
exports.useRelatedEntities = useRelatedEntities;
|
|
1638
1669
|
exports.useStarredEntities = useStarredEntities;
|
|
1639
1670
|
exports.useStarredEntity = useStarredEntity;
|