@backstage/plugin-org 0.6.20 → 0.6.21-next.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 +28 -0
- package/README.md +3 -0
- package/alpha/package.json +1 -1
- package/dist/alpha.esm.js +1 -1
- package/dist/esm/{OwnershipCard-9f8835e6.esm.js → OwnershipCard-ace72e2c.esm.js} +57 -33
- package/dist/esm/OwnershipCard-ace72e2c.esm.js.map +1 -0
- package/dist/esm/{index-ad2d9b29.esm.js → index-4ab27dea.esm.js} +2 -2
- package/dist/esm/index-4ab27dea.esm.js.map +1 -0
- package/dist/index.esm.js +5 -5
- package/package.json +44 -44
- package/dist/esm/OwnershipCard-9f8835e6.esm.js.map +0 -1
- package/dist/esm/index-ad2d9b29.esm.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @backstage/plugin-org
|
|
2
2
|
|
|
3
|
+
## 0.6.21-next.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a767aaa: Fixed an issue where the `OwnershipCard` component failed to scroll properly when used alongside `react-grid-layout`.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/core-components@0.14.1-next.1
|
|
10
|
+
- @backstage/plugin-catalog-react@1.10.1-next.1
|
|
11
|
+
- @backstage/core-plugin-api@1.9.1-next.1
|
|
12
|
+
- @backstage/frontend-plugin-api@0.6.1-next.1
|
|
13
|
+
- @backstage/catalog-model@1.4.5-next.0
|
|
14
|
+
- @backstage/core-compat-api@0.2.1-next.1
|
|
15
|
+
- @backstage/plugin-catalog-common@1.0.22-next.1
|
|
16
|
+
|
|
17
|
+
## 0.6.21-next.0
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- 526f00a: Document the new frontend system extensions for the org plugin.
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
- @backstage/core-components@0.14.1-next.0
|
|
24
|
+
- @backstage/plugin-catalog-react@1.10.1-next.0
|
|
25
|
+
- @backstage/catalog-model@1.4.5-next.0
|
|
26
|
+
- @backstage/core-plugin-api@1.9.1-next.0
|
|
27
|
+
- @backstage/frontend-plugin-api@0.6.1-next.0
|
|
28
|
+
- @backstage/core-compat-api@0.2.1-next.0
|
|
29
|
+
- @backstage/plugin-catalog-common@1.0.22-next.0
|
|
30
|
+
|
|
3
31
|
## 0.6.20
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
package/README.md
CHANGED
package/alpha/package.json
CHANGED
package/dist/alpha.esm.js
CHANGED
|
@@ -22,7 +22,7 @@ const EntityMembersListCard = createEntityCardExtension({
|
|
|
22
22
|
const EntityOwnershipCard = createEntityCardExtension({
|
|
23
23
|
name: "ownership",
|
|
24
24
|
filter: "kind:group,user",
|
|
25
|
-
loader: async () => import('./esm/OwnershipCard-
|
|
25
|
+
loader: async () => import('./esm/OwnershipCard-ace72e2c.esm.js').then(
|
|
26
26
|
(m) => compatWrapper(/* @__PURE__ */ React.createElement(m.OwnershipCard, null))
|
|
27
27
|
)
|
|
28
28
|
});
|
|
@@ -209,6 +209,7 @@ const EntityCountTile = ({
|
|
|
209
209
|
));
|
|
210
210
|
};
|
|
211
211
|
const ComponentsGrid = ({
|
|
212
|
+
className,
|
|
212
213
|
entity,
|
|
213
214
|
relationsType,
|
|
214
215
|
entityFilterKind,
|
|
@@ -226,7 +227,7 @@ const ComponentsGrid = ({
|
|
|
226
227
|
} else if (error) {
|
|
227
228
|
return /* @__PURE__ */ React.createElement(ResponseErrorPanel, { error });
|
|
228
229
|
}
|
|
229
|
-
return /* @__PURE__ */ React.createElement(Grid, { container: true }, componentsWithCounters == null ? void 0 : componentsWithCounters.map((c) => {
|
|
230
|
+
return /* @__PURE__ */ React.createElement(Grid, { container: true, className }, componentsWithCounters == null ? void 0 : componentsWithCounters.map((c) => {
|
|
230
231
|
var _a;
|
|
231
232
|
return /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 6, md: 6, lg: 4, key: (_a = c.type) != null ? _a : c.kind }, /* @__PURE__ */ React.createElement(
|
|
232
233
|
EntityCountTile,
|
|
@@ -241,6 +242,14 @@ const ComponentsGrid = ({
|
|
|
241
242
|
};
|
|
242
243
|
|
|
243
244
|
const useStyles = makeStyles((theme) => ({
|
|
245
|
+
card: {
|
|
246
|
+
maxHeight: "100%"
|
|
247
|
+
},
|
|
248
|
+
cardContent: {
|
|
249
|
+
display: "flex",
|
|
250
|
+
flexDirection: "column",
|
|
251
|
+
overflow: "hidden"
|
|
252
|
+
},
|
|
244
253
|
list: {
|
|
245
254
|
[theme.breakpoints.down("xs")]: {
|
|
246
255
|
padding: `0 0 12px`
|
|
@@ -260,6 +269,10 @@ const useStyles = makeStyles((theme) => ({
|
|
|
260
269
|
position: "relative",
|
|
261
270
|
transform: "unset"
|
|
262
271
|
}
|
|
272
|
+
},
|
|
273
|
+
grid: {
|
|
274
|
+
overflowY: "auto",
|
|
275
|
+
marginTop: 0
|
|
263
276
|
}
|
|
264
277
|
}));
|
|
265
278
|
const OwnershipCard = (props) => {
|
|
@@ -282,44 +295,55 @@ const OwnershipCard = (props) => {
|
|
|
282
295
|
setRelationsType(defaultRelationsType);
|
|
283
296
|
}
|
|
284
297
|
}, [setRelationsType, defaultRelationsType, relationsType]);
|
|
285
|
-
return /* @__PURE__ */ React.createElement(
|
|
286
|
-
|
|
298
|
+
return /* @__PURE__ */ React.createElement(
|
|
299
|
+
InfoCard,
|
|
287
300
|
{
|
|
288
|
-
|
|
301
|
+
title: "Ownership",
|
|
302
|
+
variant,
|
|
303
|
+
className: classes.card,
|
|
304
|
+
cardClassName: classes.cardContent
|
|
289
305
|
},
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
Tooltip,
|
|
306
|
+
!relationsToggle && /* @__PURE__ */ React.createElement(List, { dense: true }, /* @__PURE__ */ React.createElement(ListItem, { className: classes.list }, /* @__PURE__ */ React.createElement(ListItemText, { className: classes.listItemText }), /* @__PURE__ */ React.createElement(
|
|
307
|
+
ListItemSecondaryAction,
|
|
293
308
|
{
|
|
294
|
-
|
|
295
|
-
arrow: true,
|
|
296
|
-
title: `${getRelationsType === "direct" ? "Direct" : "Aggregated"} Relations`
|
|
309
|
+
className: classes.listItemSecondaryAction
|
|
297
310
|
},
|
|
311
|
+
"Direct Relations",
|
|
298
312
|
/* @__PURE__ */ React.createElement(
|
|
299
|
-
|
|
313
|
+
Tooltip,
|
|
300
314
|
{
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
315
|
+
placement: "top",
|
|
316
|
+
arrow: true,
|
|
317
|
+
title: `${getRelationsType === "direct" ? "Direct" : "Aggregated"} Relations`
|
|
318
|
+
},
|
|
319
|
+
/* @__PURE__ */ React.createElement(
|
|
320
|
+
Switch,
|
|
321
|
+
{
|
|
322
|
+
color: "primary",
|
|
323
|
+
checked: getRelationsType !== "direct",
|
|
324
|
+
onChange: () => {
|
|
325
|
+
const updatedRelationsType = getRelationsType === "direct" ? "aggregated" : "direct";
|
|
326
|
+
setRelationsType(updatedRelationsType);
|
|
327
|
+
},
|
|
328
|
+
name: "pin",
|
|
329
|
+
inputProps: { "aria-label": "Ownership Type Switch" }
|
|
330
|
+
}
|
|
331
|
+
)
|
|
332
|
+
),
|
|
333
|
+
"Aggregated Relations"
|
|
334
|
+
))),
|
|
335
|
+
/* @__PURE__ */ React.createElement(
|
|
336
|
+
ComponentsGrid,
|
|
337
|
+
{
|
|
338
|
+
className: classes.grid,
|
|
339
|
+
entity,
|
|
340
|
+
entityLimit,
|
|
341
|
+
relationsType: getRelationsType,
|
|
342
|
+
entityFilterKind
|
|
343
|
+
}
|
|
344
|
+
)
|
|
345
|
+
);
|
|
322
346
|
};
|
|
323
347
|
|
|
324
348
|
export { OwnershipCard };
|
|
325
|
-
//# sourceMappingURL=OwnershipCard-
|
|
349
|
+
//# sourceMappingURL=OwnershipCard-ace72e2c.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OwnershipCard-ace72e2c.esm.js","sources":["../../src/components/Cards/OwnershipCard/useGetEntities.ts","../../src/components/Cards/OwnershipCard/ComponentsGrid.tsx","../../src/components/Cards/OwnershipCard/OwnershipCard.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n parseEntityRef,\n RELATION_MEMBER_OF,\n RELATION_PARENT_OF,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport {\n CatalogApi,\n catalogApiRef,\n getEntityRelations,\n humanizeEntityRef,\n} from '@backstage/plugin-catalog-react';\nimport limiterFactory from 'p-limit';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/lib/useAsync';\nimport qs from 'qs';\nimport { EntityRelationAggregation as EntityRelationsAggregation } from './types';\nimport { uniq } from 'lodash';\n\nconst limiter = limiterFactory(10);\n\ntype EntityTypeProps = {\n kind: string;\n type?: string;\n count: number;\n};\n\nconst getQueryParams = (\n ownersEntityRef: string[],\n selectedEntity: EntityTypeProps,\n): string => {\n const { kind, type } = selectedEntity;\n const owners = ownersEntityRef.map(owner =>\n humanizeEntityRef(parseEntityRef(owner), { defaultKind: 'group' }),\n );\n const filters = {\n kind: kind.toLocaleLowerCase('en-US'),\n type,\n owners,\n user: 'all',\n };\n return qs.stringify({ filters }, { arrayFormat: 'repeat' });\n};\n\nconst getMemberOfEntityRefs = (owner: Entity): string[] => {\n const parentGroups = getEntityRelations(owner, RELATION_MEMBER_OF, {\n kind: 'Group',\n });\n\n const ownerGroupsNames = parentGroups.map(({ kind, namespace, name }) =>\n stringifyEntityRef({\n kind,\n namespace,\n name,\n }),\n );\n\n return [...ownerGroupsNames, stringifyEntityRef(owner)];\n};\n\nconst isEntity = (entity: Entity | undefined): entity is Entity =>\n entity !== undefined;\n\nconst getChildOwnershipEntityRefs = async (\n entity: Entity,\n catalogApi: CatalogApi,\n alreadyRetrievedParentRefs: string[] = [],\n): Promise<string[]> => {\n const childGroups = getEntityRelations(entity, RELATION_PARENT_OF, {\n kind: 'Group',\n });\n\n const hasChildGroups = childGroups.length > 0;\n\n const entityRef = stringifyEntityRef(entity);\n if (hasChildGroups) {\n const entityRefs = childGroups.map(r => stringifyEntityRef(r));\n const childGroupResponse = await catalogApi.getEntitiesByRefs({\n fields: ['kind', 'metadata.namespace', 'metadata.name', 'relations'],\n entityRefs,\n });\n const childGroupEntities = childGroupResponse.items.filter(isEntity);\n\n const unknownChildren = childGroupEntities.filter(\n childGroupEntity =>\n !alreadyRetrievedParentRefs.includes(\n stringifyEntityRef(childGroupEntity),\n ),\n );\n const childrenRefs = (\n await Promise.all(\n unknownChildren.map(childGroupEntity =>\n limiter(() =>\n getChildOwnershipEntityRefs(childGroupEntity, catalogApi, [\n ...alreadyRetrievedParentRefs,\n entityRef,\n ]),\n ),\n ),\n )\n ).flatMap(aggregated => aggregated);\n\n return uniq([...childrenRefs, entityRef]);\n }\n\n return [entityRef];\n};\n\nconst getOwners = async (\n entity: Entity,\n relations: EntityRelationsAggregation,\n catalogApi: CatalogApi,\n): Promise<string[]> => {\n const isGroup = entity.kind === 'Group';\n const isAggregated = relations === 'aggregated';\n const isUserEntity = entity.kind === 'User';\n\n if (isAggregated && isGroup) {\n return getChildOwnershipEntityRefs(entity, catalogApi);\n }\n\n if (isAggregated && isUserEntity) {\n return getMemberOfEntityRefs(entity);\n }\n\n return [stringifyEntityRef(entity)];\n};\n\nconst getOwnedEntitiesByOwners = (\n owners: string[],\n kinds: string[],\n catalogApi: CatalogApi,\n) =>\n catalogApi.getEntities({\n filter: [\n {\n kind: kinds,\n 'relations.ownedBy': owners,\n },\n ],\n fields: [\n 'kind',\n 'metadata.name',\n 'metadata.namespace',\n 'spec.type',\n 'relations',\n ],\n });\n\nexport function useGetEntities(\n entity: Entity,\n relations: EntityRelationsAggregation,\n entityFilterKind?: string[],\n entityLimit = 6,\n): {\n componentsWithCounters:\n | {\n counter: number;\n type: string;\n kind: string;\n queryParams: string;\n }[]\n | undefined;\n loading: boolean;\n error?: Error;\n} {\n const catalogApi = useApi(catalogApiRef);\n const kinds = entityFilterKind ?? ['Component', 'API', 'System'];\n\n const {\n loading,\n error,\n value: componentsWithCounters,\n } = useAsync(async () => {\n const owners = await getOwners(entity, relations, catalogApi);\n\n const ownedEntitiesList = await getOwnedEntitiesByOwners(\n owners,\n kinds,\n catalogApi,\n );\n\n const counts = ownedEntitiesList.items.reduce(\n (acc: EntityTypeProps[], ownedEntity) => {\n const match = acc.find(\n x => x.kind === ownedEntity.kind && x.type === ownedEntity.spec?.type,\n );\n if (match) {\n match.count += 1;\n } else {\n acc.push({\n kind: ownedEntity.kind,\n type: ownedEntity.spec?.type?.toString(),\n count: 1,\n });\n }\n return acc;\n },\n [],\n );\n\n // Return top N (entityLimit) entities to be displayed in ownership boxes\n const topN = counts.sort((a, b) => b.count - a.count).slice(0, entityLimit);\n\n return topN.map(topOwnedEntity => ({\n counter: topOwnedEntity.count,\n type: topOwnedEntity.type,\n kind: topOwnedEntity.kind,\n queryParams: getQueryParams(owners, topOwnedEntity),\n })) as Array<{\n counter: number;\n type: string;\n kind: string;\n queryParams: string;\n }>;\n }, [catalogApi, entity, relations]);\n\n return {\n componentsWithCounters,\n loading,\n error,\n };\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity } from '@backstage/catalog-model';\nimport {\n Link,\n OverflowTooltip,\n Progress,\n ResponseErrorPanel,\n} from '@backstage/core-components';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n Box,\n createStyles,\n Grid,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport React from 'react';\nimport pluralize from 'pluralize';\nimport { catalogIndexRouteRef } from '../../../routes';\nimport { useGetEntities } from './useGetEntities';\nimport { EntityRelationAggregation } from './types';\n\nconst useStyles = makeStyles(theme =>\n createStyles({\n card: {\n border: `1px solid ${theme.palette.divider}`,\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n padding: theme.spacing(2),\n transition: `${theme.transitions.duration.standard}ms`,\n '&:hover': {\n boxShadow: theme.shadows[4],\n },\n height: '100%',\n },\n bold: {\n fontWeight: theme.typography.fontWeightBold,\n },\n smallFont: {\n fontSize: theme.typography.body2.fontSize,\n },\n entityTypeBox: {\n background: (props: { type: string }) =>\n theme.getPageTheme({ themeId: props.type }).backgroundImage,\n color: (props: { type: string }) =>\n theme.getPageTheme({ themeId: props.type }).fontColor,\n },\n }),\n);\n\nconst EntityCountTile = ({\n counter,\n type,\n kind,\n url,\n}: {\n counter: number;\n type?: string;\n kind: string;\n url: string;\n}) => {\n const classes = useStyles({ type: type ?? kind });\n\n const rawTitle = type ?? kind;\n const isLongText = rawTitle.length > 10;\n\n return (\n <Link to={url} variant=\"body2\">\n <Box\n className={`${classes.card} ${classes.entityTypeBox}`}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n >\n <Typography className={classes.bold} variant=\"h6\">\n {counter}\n </Typography>\n <Box sx={{ width: '100%', textAlign: 'center' }}>\n <Typography\n className={`${classes.bold} ${isLongText && classes.smallFont}`}\n variant=\"h6\"\n >\n <OverflowTooltip\n text={pluralize(rawTitle.toLocaleUpperCase('en-US'), counter)}\n />\n </Typography>\n </Box>\n {type && <Typography variant=\"subtitle1\">{kind}</Typography>}\n </Box>\n </Link>\n );\n};\n\nexport const ComponentsGrid = ({\n className,\n entity,\n relationsType,\n entityFilterKind,\n entityLimit = 6,\n}: {\n className?: string;\n entity: Entity;\n relationsType: EntityRelationAggregation;\n entityFilterKind?: string[];\n entityLimit?: number;\n}) => {\n const catalogLink = useRouteRef(catalogIndexRouteRef);\n const { componentsWithCounters, loading, error } = useGetEntities(\n entity,\n relationsType,\n entityFilterKind,\n entityLimit,\n );\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n return (\n <Grid container className={className}>\n {componentsWithCounters?.map(c => (\n <Grid item xs={6} md={6} lg={4} key={c.type ?? c.kind}>\n <EntityCountTile\n counter={c.counter}\n kind={c.kind}\n type={c.type}\n url={`${catalogLink()}/?${c.queryParams}`}\n />\n </Grid>\n ))}\n </Grid>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InfoCard, InfoCardVariants } from '@backstage/core-components';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n List,\n ListItem,\n ListItemSecondaryAction,\n ListItemText,\n makeStyles,\n Switch,\n Tooltip,\n} from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { ComponentsGrid } from './ComponentsGrid';\nimport { EntityRelationAggregation } from './types';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n maxHeight: '100%',\n },\n cardContent: {\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n },\n list: {\n [theme.breakpoints.down('xs')]: {\n padding: `0 0 12px`,\n },\n },\n listItemText: {\n [theme.breakpoints.down('xs')]: {\n paddingRight: 0,\n paddingLeft: 0,\n },\n },\n listItemSecondaryAction: {\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n top: 'auto',\n right: 'auto',\n position: 'relative',\n transform: 'unset',\n },\n },\n grid: {\n overflowY: 'auto',\n marginTop: 0,\n },\n}));\n\n/** @public */\nexport const OwnershipCard = (props: {\n variant?: InfoCardVariants;\n entityFilterKind?: string[];\n hideRelationsToggle?: boolean;\n relationsType?: EntityRelationAggregation;\n entityLimit?: number;\n}) => {\n const {\n variant,\n entityFilterKind,\n hideRelationsToggle,\n relationsType,\n entityLimit = 6,\n } = props;\n const relationsToggle =\n hideRelationsToggle === undefined ? false : hideRelationsToggle;\n const classes = useStyles();\n const { entity } = useEntity();\n\n const defaultRelationsType = entity.kind === 'User' ? 'aggregated' : 'direct';\n const [getRelationsType, setRelationsType] = useState(\n relationsType ?? defaultRelationsType,\n );\n\n useEffect(() => {\n if (!relationsType) {\n setRelationsType(defaultRelationsType);\n }\n }, [setRelationsType, defaultRelationsType, relationsType]);\n\n return (\n <InfoCard\n title=\"Ownership\"\n variant={variant}\n className={classes.card}\n cardClassName={classes.cardContent}\n >\n {!relationsToggle && (\n <List dense>\n <ListItem className={classes.list}>\n <ListItemText className={classes.listItemText} />\n <ListItemSecondaryAction\n className={classes.listItemSecondaryAction}\n >\n Direct Relations\n <Tooltip\n placement=\"top\"\n arrow\n title={`${\n getRelationsType === 'direct' ? 'Direct' : 'Aggregated'\n } Relations`}\n >\n <Switch\n color=\"primary\"\n checked={getRelationsType !== 'direct'}\n onChange={() => {\n const updatedRelationsType =\n getRelationsType === 'direct' ? 'aggregated' : 'direct';\n setRelationsType(updatedRelationsType);\n }}\n name=\"pin\"\n inputProps={{ 'aria-label': 'Ownership Type Switch' }}\n />\n </Tooltip>\n Aggregated Relations\n </ListItemSecondaryAction>\n </ListItem>\n </List>\n )}\n <ComponentsGrid\n className={classes.grid}\n entity={entity}\n entityLimit={entityLimit}\n relationsType={getRelationsType}\n entityFilterKind={entityFilterKind}\n />\n </InfoCard>\n );\n};\n"],"names":["_a","useStyles"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { MembersListCard } from './MembersListCard-cb148b44.esm.js';
|
|
2
2
|
export { GroupProfileCard } from './GroupProfileCard-d9207fd9.esm.js';
|
|
3
3
|
export { UserProfileCard } from './UserProfileCard-d467b6e5.esm.js';
|
|
4
|
-
export { OwnershipCard } from './OwnershipCard-
|
|
4
|
+
export { OwnershipCard } from './OwnershipCard-ace72e2c.esm.js';
|
|
5
5
|
export { MyGroupsSidebarItem } from '../index.esm.js';
|
|
6
6
|
import '@backstage/catalog-model';
|
|
7
7
|
import '@backstage/plugin-catalog-react';
|
|
@@ -27,4 +27,4 @@ import './routes-e3daad75.esm.js';
|
|
|
27
27
|
import 'p-limit';
|
|
28
28
|
import 'qs';
|
|
29
29
|
import 'lodash';
|
|
30
|
-
//# sourceMappingURL=index-
|
|
30
|
+
//# sourceMappingURL=index-4ab27dea.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-4ab27dea.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.esm.js
CHANGED
|
@@ -3,7 +3,7 @@ import { c as catalogIndexRouteRef } from './esm/routes-e3daad75.esm.js';
|
|
|
3
3
|
export { MembersListCard } from './esm/MembersListCard-cb148b44.esm.js';
|
|
4
4
|
export { GroupProfileCard } from './esm/GroupProfileCard-d9207fd9.esm.js';
|
|
5
5
|
export { UserProfileCard } from './esm/UserProfileCard-d467b6e5.esm.js';
|
|
6
|
-
export { OwnershipCard } from './esm/OwnershipCard-
|
|
6
|
+
export { OwnershipCard } from './esm/OwnershipCard-ace72e2c.esm.js';
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { getCompoundEntityRef, DEFAULT_NAMESPACE, stringifyEntityRef } from '@backstage/catalog-model';
|
|
9
9
|
import { SidebarItem, SidebarSubmenu, SidebarSubmenuItem } from '@backstage/core-components';
|
|
@@ -37,7 +37,7 @@ const EntityGroupProfileCard = orgPlugin.provide(
|
|
|
37
37
|
createComponentExtension({
|
|
38
38
|
name: "EntityGroupProfileCard",
|
|
39
39
|
component: {
|
|
40
|
-
lazy: () => import('./esm/index-
|
|
40
|
+
lazy: () => import('./esm/index-4ab27dea.esm.js').then((m) => m.GroupProfileCard)
|
|
41
41
|
}
|
|
42
42
|
})
|
|
43
43
|
);
|
|
@@ -45,7 +45,7 @@ const EntityMembersListCard = orgPlugin.provide(
|
|
|
45
45
|
createComponentExtension({
|
|
46
46
|
name: "EntityMembersListCard",
|
|
47
47
|
component: {
|
|
48
|
-
lazy: () => import('./esm/index-
|
|
48
|
+
lazy: () => import('./esm/index-4ab27dea.esm.js').then((m) => m.MembersListCard)
|
|
49
49
|
}
|
|
50
50
|
})
|
|
51
51
|
);
|
|
@@ -53,7 +53,7 @@ const EntityOwnershipCard = orgPlugin.provide(
|
|
|
53
53
|
createComponentExtension({
|
|
54
54
|
name: "EntityOwnershipCard",
|
|
55
55
|
component: {
|
|
56
|
-
lazy: () => import('./esm/index-
|
|
56
|
+
lazy: () => import('./esm/index-4ab27dea.esm.js').then((m) => m.OwnershipCard)
|
|
57
57
|
}
|
|
58
58
|
})
|
|
59
59
|
);
|
|
@@ -61,7 +61,7 @@ const EntityUserProfileCard = orgPlugin.provide(
|
|
|
61
61
|
createComponentExtension({
|
|
62
62
|
name: "EntityUserProfileCard",
|
|
63
63
|
component: {
|
|
64
|
-
lazy: () => import('./esm/index-
|
|
64
|
+
lazy: () => import('./esm/index-4ab27dea.esm.js').then((m) => m.UserProfileCard)
|
|
65
65
|
}
|
|
66
66
|
})
|
|
67
67
|
);
|
package/package.json
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-org",
|
|
3
|
+
"version": "0.6.21-next.1",
|
|
3
4
|
"description": "A Backstage plugin that helps you create entity pages for your organization",
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
"backstage": {
|
|
6
|
+
"role": "frontend-plugin"
|
|
7
|
+
},
|
|
8
|
+
"publishConfig": {
|
|
9
|
+
"access": "public"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://backstage.io",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/backstage/backstage",
|
|
15
|
+
"directory": "plugins/org"
|
|
16
|
+
},
|
|
17
|
+
"license": "Apache-2.0",
|
|
18
|
+
"sideEffects": false,
|
|
7
19
|
"exports": {
|
|
8
20
|
".": {
|
|
9
21
|
"import": "./dist/index.esm.js",
|
|
@@ -17,37 +29,29 @@
|
|
|
17
29
|
},
|
|
18
30
|
"./package.json": "./package.json"
|
|
19
31
|
},
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
},
|
|
27
|
-
"homepage": "https://backstage.io",
|
|
28
|
-
"repository": {
|
|
29
|
-
"type": "git",
|
|
30
|
-
"url": "https://github.com/backstage/backstage",
|
|
31
|
-
"directory": "plugins/org"
|
|
32
|
-
},
|
|
33
|
-
"sideEffects": false,
|
|
32
|
+
"main": "./dist/index.esm.js",
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"alpha"
|
|
37
|
+
],
|
|
34
38
|
"scripts": {
|
|
35
39
|
"build": "backstage-cli package build",
|
|
36
|
-
"
|
|
40
|
+
"clean": "backstage-cli package clean",
|
|
37
41
|
"lint": "backstage-cli package lint",
|
|
38
|
-
"test": "backstage-cli package test",
|
|
39
42
|
"prepack": "backstage-cli package prepack",
|
|
40
43
|
"postpack": "backstage-cli package postpack",
|
|
41
|
-
"
|
|
44
|
+
"start": "backstage-cli package start",
|
|
45
|
+
"test": "backstage-cli package test"
|
|
42
46
|
},
|
|
43
47
|
"dependencies": {
|
|
44
|
-
"@backstage/catalog-model": "^1.4.
|
|
45
|
-
"@backstage/core-compat-api": "^0.2.
|
|
46
|
-
"@backstage/core-components": "^0.14.
|
|
47
|
-
"@backstage/core-plugin-api": "^1.9.
|
|
48
|
-
"@backstage/frontend-plugin-api": "^0.6.
|
|
49
|
-
"@backstage/plugin-catalog-common": "^1.0.
|
|
50
|
-
"@backstage/plugin-catalog-react": "^1.10.
|
|
48
|
+
"@backstage/catalog-model": "^1.4.5-next.0",
|
|
49
|
+
"@backstage/core-compat-api": "^0.2.1-next.1",
|
|
50
|
+
"@backstage/core-components": "^0.14.1-next.1",
|
|
51
|
+
"@backstage/core-plugin-api": "^1.9.1-next.1",
|
|
52
|
+
"@backstage/frontend-plugin-api": "^0.6.1-next.1",
|
|
53
|
+
"@backstage/plugin-catalog-common": "^1.0.22-next.1",
|
|
54
|
+
"@backstage/plugin-catalog-react": "^1.10.1-next.1",
|
|
51
55
|
"@material-ui/core": "^4.12.2",
|
|
52
56
|
"@material-ui/icons": "^4.9.1",
|
|
53
57
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
@@ -58,29 +62,25 @@
|
|
|
58
62
|
"qs": "^6.10.1",
|
|
59
63
|
"react-use": "^17.2.4"
|
|
60
64
|
},
|
|
61
|
-
"peerDependencies": {
|
|
62
|
-
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
63
|
-
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
64
|
-
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
65
|
-
},
|
|
66
65
|
"devDependencies": {
|
|
67
|
-
"@backstage/catalog-client": "^1.6.0",
|
|
68
|
-
"@backstage/cli": "^0.25.
|
|
69
|
-
"@backstage/core-app-api": "^1.12.
|
|
70
|
-
"@backstage/dev-utils": "^1.0.
|
|
71
|
-
"@backstage/plugin-catalog": "^1.17.
|
|
72
|
-
"@backstage/plugin-permission-common": "^0.7.
|
|
73
|
-
"@backstage/plugin-permission-react": "^0.4.
|
|
74
|
-
"@backstage/test-utils": "^1.5.
|
|
66
|
+
"@backstage/catalog-client": "^1.6.1-next.0",
|
|
67
|
+
"@backstage/cli": "^0.25.3-next.1",
|
|
68
|
+
"@backstage/core-app-api": "^1.12.1-next.1",
|
|
69
|
+
"@backstage/dev-utils": "^1.0.28-next.1",
|
|
70
|
+
"@backstage/plugin-catalog": "^1.17.1-next.1",
|
|
71
|
+
"@backstage/plugin-permission-common": "^0.7.13-next.1",
|
|
72
|
+
"@backstage/plugin-permission-react": "^0.4.21-next.1",
|
|
73
|
+
"@backstage/test-utils": "^1.5.1-next.1",
|
|
75
74
|
"@backstage/types": "^1.1.1",
|
|
76
75
|
"@testing-library/dom": "^9.0.0",
|
|
77
76
|
"@testing-library/jest-dom": "^6.0.0",
|
|
78
77
|
"@testing-library/react": "^14.0.0",
|
|
79
78
|
"@testing-library/user-event": "^14.0.0"
|
|
80
79
|
},
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
|
|
80
|
+
"peerDependencies": {
|
|
81
|
+
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
82
|
+
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
83
|
+
"react-router-dom": "6.0.0-beta.0 || ^6.3.0"
|
|
84
|
+
},
|
|
85
85
|
"module": "./dist/index.esm.js"
|
|
86
86
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OwnershipCard-9f8835e6.esm.js","sources":["../../src/components/Cards/OwnershipCard/useGetEntities.ts","../../src/components/Cards/OwnershipCard/ComponentsGrid.tsx","../../src/components/Cards/OwnershipCard/OwnershipCard.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n parseEntityRef,\n RELATION_MEMBER_OF,\n RELATION_PARENT_OF,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport {\n CatalogApi,\n catalogApiRef,\n getEntityRelations,\n humanizeEntityRef,\n} from '@backstage/plugin-catalog-react';\nimport limiterFactory from 'p-limit';\nimport { useApi } from '@backstage/core-plugin-api';\nimport useAsync from 'react-use/lib/useAsync';\nimport qs from 'qs';\nimport { EntityRelationAggregation as EntityRelationsAggregation } from './types';\nimport { uniq } from 'lodash';\n\nconst limiter = limiterFactory(10);\n\ntype EntityTypeProps = {\n kind: string;\n type?: string;\n count: number;\n};\n\nconst getQueryParams = (\n ownersEntityRef: string[],\n selectedEntity: EntityTypeProps,\n): string => {\n const { kind, type } = selectedEntity;\n const owners = ownersEntityRef.map(owner =>\n humanizeEntityRef(parseEntityRef(owner), { defaultKind: 'group' }),\n );\n const filters = {\n kind: kind.toLocaleLowerCase('en-US'),\n type,\n owners,\n user: 'all',\n };\n return qs.stringify({ filters }, { arrayFormat: 'repeat' });\n};\n\nconst getMemberOfEntityRefs = (owner: Entity): string[] => {\n const parentGroups = getEntityRelations(owner, RELATION_MEMBER_OF, {\n kind: 'Group',\n });\n\n const ownerGroupsNames = parentGroups.map(({ kind, namespace, name }) =>\n stringifyEntityRef({\n kind,\n namespace,\n name,\n }),\n );\n\n return [...ownerGroupsNames, stringifyEntityRef(owner)];\n};\n\nconst isEntity = (entity: Entity | undefined): entity is Entity =>\n entity !== undefined;\n\nconst getChildOwnershipEntityRefs = async (\n entity: Entity,\n catalogApi: CatalogApi,\n alreadyRetrievedParentRefs: string[] = [],\n): Promise<string[]> => {\n const childGroups = getEntityRelations(entity, RELATION_PARENT_OF, {\n kind: 'Group',\n });\n\n const hasChildGroups = childGroups.length > 0;\n\n const entityRef = stringifyEntityRef(entity);\n if (hasChildGroups) {\n const entityRefs = childGroups.map(r => stringifyEntityRef(r));\n const childGroupResponse = await catalogApi.getEntitiesByRefs({\n fields: ['kind', 'metadata.namespace', 'metadata.name', 'relations'],\n entityRefs,\n });\n const childGroupEntities = childGroupResponse.items.filter(isEntity);\n\n const unknownChildren = childGroupEntities.filter(\n childGroupEntity =>\n !alreadyRetrievedParentRefs.includes(\n stringifyEntityRef(childGroupEntity),\n ),\n );\n const childrenRefs = (\n await Promise.all(\n unknownChildren.map(childGroupEntity =>\n limiter(() =>\n getChildOwnershipEntityRefs(childGroupEntity, catalogApi, [\n ...alreadyRetrievedParentRefs,\n entityRef,\n ]),\n ),\n ),\n )\n ).flatMap(aggregated => aggregated);\n\n return uniq([...childrenRefs, entityRef]);\n }\n\n return [entityRef];\n};\n\nconst getOwners = async (\n entity: Entity,\n relations: EntityRelationsAggregation,\n catalogApi: CatalogApi,\n): Promise<string[]> => {\n const isGroup = entity.kind === 'Group';\n const isAggregated = relations === 'aggregated';\n const isUserEntity = entity.kind === 'User';\n\n if (isAggregated && isGroup) {\n return getChildOwnershipEntityRefs(entity, catalogApi);\n }\n\n if (isAggregated && isUserEntity) {\n return getMemberOfEntityRefs(entity);\n }\n\n return [stringifyEntityRef(entity)];\n};\n\nconst getOwnedEntitiesByOwners = (\n owners: string[],\n kinds: string[],\n catalogApi: CatalogApi,\n) =>\n catalogApi.getEntities({\n filter: [\n {\n kind: kinds,\n 'relations.ownedBy': owners,\n },\n ],\n fields: [\n 'kind',\n 'metadata.name',\n 'metadata.namespace',\n 'spec.type',\n 'relations',\n ],\n });\n\nexport function useGetEntities(\n entity: Entity,\n relations: EntityRelationsAggregation,\n entityFilterKind?: string[],\n entityLimit = 6,\n): {\n componentsWithCounters:\n | {\n counter: number;\n type: string;\n kind: string;\n queryParams: string;\n }[]\n | undefined;\n loading: boolean;\n error?: Error;\n} {\n const catalogApi = useApi(catalogApiRef);\n const kinds = entityFilterKind ?? ['Component', 'API', 'System'];\n\n const {\n loading,\n error,\n value: componentsWithCounters,\n } = useAsync(async () => {\n const owners = await getOwners(entity, relations, catalogApi);\n\n const ownedEntitiesList = await getOwnedEntitiesByOwners(\n owners,\n kinds,\n catalogApi,\n );\n\n const counts = ownedEntitiesList.items.reduce(\n (acc: EntityTypeProps[], ownedEntity) => {\n const match = acc.find(\n x => x.kind === ownedEntity.kind && x.type === ownedEntity.spec?.type,\n );\n if (match) {\n match.count += 1;\n } else {\n acc.push({\n kind: ownedEntity.kind,\n type: ownedEntity.spec?.type?.toString(),\n count: 1,\n });\n }\n return acc;\n },\n [],\n );\n\n // Return top N (entityLimit) entities to be displayed in ownership boxes\n const topN = counts.sort((a, b) => b.count - a.count).slice(0, entityLimit);\n\n return topN.map(topOwnedEntity => ({\n counter: topOwnedEntity.count,\n type: topOwnedEntity.type,\n kind: topOwnedEntity.kind,\n queryParams: getQueryParams(owners, topOwnedEntity),\n })) as Array<{\n counter: number;\n type: string;\n kind: string;\n queryParams: string;\n }>;\n }, [catalogApi, entity, relations]);\n\n return {\n componentsWithCounters,\n loading,\n error,\n };\n}\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Entity } from '@backstage/catalog-model';\nimport {\n Link,\n OverflowTooltip,\n Progress,\n ResponseErrorPanel,\n} from '@backstage/core-components';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n Box,\n createStyles,\n Grid,\n makeStyles,\n Typography,\n} from '@material-ui/core';\nimport React from 'react';\nimport pluralize from 'pluralize';\nimport { catalogIndexRouteRef } from '../../../routes';\nimport { useGetEntities } from './useGetEntities';\nimport { EntityRelationAggregation } from './types';\n\nconst useStyles = makeStyles(theme =>\n createStyles({\n card: {\n border: `1px solid ${theme.palette.divider}`,\n boxShadow: theme.shadows[2],\n borderRadius: '4px',\n padding: theme.spacing(2),\n transition: `${theme.transitions.duration.standard}ms`,\n '&:hover': {\n boxShadow: theme.shadows[4],\n },\n height: '100%',\n },\n bold: {\n fontWeight: theme.typography.fontWeightBold,\n },\n smallFont: {\n fontSize: theme.typography.body2.fontSize,\n },\n entityTypeBox: {\n background: (props: { type: string }) =>\n theme.getPageTheme({ themeId: props.type }).backgroundImage,\n color: (props: { type: string }) =>\n theme.getPageTheme({ themeId: props.type }).fontColor,\n },\n }),\n);\n\nconst EntityCountTile = ({\n counter,\n type,\n kind,\n url,\n}: {\n counter: number;\n type?: string;\n kind: string;\n url: string;\n}) => {\n const classes = useStyles({ type: type ?? kind });\n\n const rawTitle = type ?? kind;\n const isLongText = rawTitle.length > 10;\n\n return (\n <Link to={url} variant=\"body2\">\n <Box\n className={`${classes.card} ${classes.entityTypeBox}`}\n display=\"flex\"\n flexDirection=\"column\"\n alignItems=\"center\"\n >\n <Typography className={classes.bold} variant=\"h6\">\n {counter}\n </Typography>\n <Box sx={{ width: '100%', textAlign: 'center' }}>\n <Typography\n className={`${classes.bold} ${isLongText && classes.smallFont}`}\n variant=\"h6\"\n >\n <OverflowTooltip\n text={pluralize(rawTitle.toLocaleUpperCase('en-US'), counter)}\n />\n </Typography>\n </Box>\n {type && <Typography variant=\"subtitle1\">{kind}</Typography>}\n </Box>\n </Link>\n );\n};\n\nexport const ComponentsGrid = ({\n entity,\n relationsType,\n entityFilterKind,\n entityLimit = 6,\n}: {\n entity: Entity;\n relationsType: EntityRelationAggregation;\n entityFilterKind?: string[];\n entityLimit?: number;\n}) => {\n const catalogLink = useRouteRef(catalogIndexRouteRef);\n const { componentsWithCounters, loading, error } = useGetEntities(\n entity,\n relationsType,\n entityFilterKind,\n entityLimit,\n );\n\n if (loading) {\n return <Progress />;\n } else if (error) {\n return <ResponseErrorPanel error={error} />;\n }\n\n return (\n <Grid container>\n {componentsWithCounters?.map(c => (\n <Grid item xs={6} md={6} lg={4} key={c.type ?? c.kind}>\n <EntityCountTile\n counter={c.counter}\n kind={c.kind}\n type={c.type}\n url={`${catalogLink()}/?${c.queryParams}`}\n />\n </Grid>\n ))}\n </Grid>\n );\n};\n","/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InfoCard, InfoCardVariants } from '@backstage/core-components';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport {\n List,\n ListItem,\n ListItemSecondaryAction,\n ListItemText,\n makeStyles,\n Switch,\n Tooltip,\n} from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { ComponentsGrid } from './ComponentsGrid';\nimport { EntityRelationAggregation } from './types';\n\nconst useStyles = makeStyles(theme => ({\n list: {\n [theme.breakpoints.down('xs')]: {\n padding: `0 0 12px`,\n },\n },\n listItemText: {\n [theme.breakpoints.down('xs')]: {\n paddingRight: 0,\n paddingLeft: 0,\n },\n },\n listItemSecondaryAction: {\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n top: 'auto',\n right: 'auto',\n position: 'relative',\n transform: 'unset',\n },\n },\n}));\n\n/** @public */\nexport const OwnershipCard = (props: {\n variant?: InfoCardVariants;\n entityFilterKind?: string[];\n hideRelationsToggle?: boolean;\n relationsType?: EntityRelationAggregation;\n entityLimit?: number;\n}) => {\n const {\n variant,\n entityFilterKind,\n hideRelationsToggle,\n relationsType,\n entityLimit = 6,\n } = props;\n const relationsToggle =\n hideRelationsToggle === undefined ? false : hideRelationsToggle;\n const classes = useStyles();\n const { entity } = useEntity();\n\n const defaultRelationsType = entity.kind === 'User' ? 'aggregated' : 'direct';\n const [getRelationsType, setRelationsType] = useState(\n relationsType ?? defaultRelationsType,\n );\n\n useEffect(() => {\n if (!relationsType) {\n setRelationsType(defaultRelationsType);\n }\n }, [setRelationsType, defaultRelationsType, relationsType]);\n\n return (\n <InfoCard title=\"Ownership\" variant={variant}>\n {!relationsToggle && (\n <List dense>\n <ListItem className={classes.list}>\n <ListItemText className={classes.listItemText} />\n <ListItemSecondaryAction\n className={classes.listItemSecondaryAction}\n >\n Direct Relations\n <Tooltip\n placement=\"top\"\n arrow\n title={`${\n getRelationsType === 'direct' ? 'Direct' : 'Aggregated'\n } Relations`}\n >\n <Switch\n color=\"primary\"\n checked={getRelationsType !== 'direct'}\n onChange={() => {\n const updatedRelationsType =\n getRelationsType === 'direct' ? 'aggregated' : 'direct';\n setRelationsType(updatedRelationsType);\n }}\n name=\"pin\"\n inputProps={{ 'aria-label': 'Ownership Type Switch' }}\n />\n </Tooltip>\n Aggregated Relations\n </ListItemSecondaryAction>\n </ListItem>\n </List>\n )}\n <ComponentsGrid\n entity={entity}\n entityLimit={entityLimit}\n relationsType={getRelationsType}\n entityFilterKind={entityFilterKind}\n />\n </InfoCard>\n );\n};\n"],"names":["_a","useStyles"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-ad2d9b29.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|