@backstage/plugin-org 0.6.39-next.3 → 0.6.40-next.0
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 +46 -0
- package/dist/alpha.d.ts +14 -3
- package/dist/alpha.esm.js +23 -6
- package/dist/alpha.esm.js.map +1 -1
- package/dist/components/Cards/User/UserProfileCard/UserProfileCard.esm.js +102 -22
- package/dist/components/Cards/User/UserProfileCard/UserProfileCard.esm.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/package.json.esm.js +122 -0
- package/dist/package.json.esm.js.map +1 -0
- package/package.json +16 -16
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# @backstage/plugin-org
|
|
2
2
|
|
|
3
|
+
## 0.6.40-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 18c64e9: Added the `info.packageJson` option to the plugin instance for the new frontend system.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/frontend-plugin-api@0.10.3-next.0
|
|
10
|
+
- @backstage/core-compat-api@0.4.3-next.0
|
|
11
|
+
- @backstage/plugin-catalog-react@1.18.1-next.0
|
|
12
|
+
|
|
13
|
+
## 0.6.39
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- fb58f20: Internal update to use the new `pluginId` option of `createFrontendPlugin`.
|
|
18
|
+
- 02e8af1: Enhance user profile card configuration:
|
|
19
|
+
|
|
20
|
+
- Added a new optional `maxRelations` numerical configuration that controls over how many user groups are shown directly on the profile card:
|
|
21
|
+
- If the setting is omitted, all relations will be shown.
|
|
22
|
+
- If `maxRelations` is set to `0`, the list of user groups is not displayed.
|
|
23
|
+
- If `maxRelations` is set to a positive number, up to that many groups are displayed.
|
|
24
|
+
- If the user belongs to more groups than the specified limit, a clickable link appears that opens a dialog showing all associated user groups.
|
|
25
|
+
- A complementary boolean configuration, `hideIcons`, was added to optionally hide the visual icons associated with each group in the displayed list.
|
|
26
|
+
- Usage example:
|
|
27
|
+
```yaml
|
|
28
|
+
# Example in app-config.yaml
|
|
29
|
+
app:
|
|
30
|
+
extensions:
|
|
31
|
+
- entity-card:org/user-profile:
|
|
32
|
+
config:
|
|
33
|
+
maxRelations: 5 # (optional) Show up to 5 groups on the card
|
|
34
|
+
hideIcons: true # (optional) Hide the group icons
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- 08ba448: display entity-ref in GroupProfileCard so groups can easily determine their Group ID
|
|
38
|
+
- 18e84c9: Fixed missing spec.profile field on MyGroupsSidebarItem.tsx so the group spec.profile.displayName is shown on the sidebar"
|
|
39
|
+
- 72d019d: Removed various typos
|
|
40
|
+
- Updated dependencies
|
|
41
|
+
- @backstage/frontend-plugin-api@0.10.2
|
|
42
|
+
- @backstage/core-components@0.17.2
|
|
43
|
+
- @backstage/catalog-model@1.7.4
|
|
44
|
+
- @backstage/core-compat-api@0.4.2
|
|
45
|
+
- @backstage/plugin-catalog-react@1.18.0
|
|
46
|
+
- @backstage/core-plugin-api@1.10.7
|
|
47
|
+
- @backstage/plugin-catalog-common@1.1.4
|
|
48
|
+
|
|
3
49
|
## 0.6.39-next.3
|
|
4
50
|
|
|
5
51
|
### Patch Changes
|
package/dist/alpha.d.ts
CHANGED
|
@@ -83,13 +83,17 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {
|
|
|
83
83
|
};
|
|
84
84
|
}>;
|
|
85
85
|
"entity-card:org/user-profile": _backstage_frontend_plugin_api.ExtensionDefinition<{
|
|
86
|
-
kind: "entity-card";
|
|
87
|
-
name: "user-profile";
|
|
88
86
|
config: {
|
|
87
|
+
maxRelations: number | undefined;
|
|
88
|
+
hideIcons: boolean;
|
|
89
|
+
} & {
|
|
89
90
|
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
90
91
|
type: "content" | "summary" | "info" | undefined;
|
|
91
92
|
};
|
|
92
93
|
configInput: {
|
|
94
|
+
hideIcons?: boolean | undefined;
|
|
95
|
+
maxRelations?: number | undefined;
|
|
96
|
+
} & {
|
|
93
97
|
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
94
98
|
type?: "content" | "summary" | "info" | undefined;
|
|
95
99
|
};
|
|
@@ -100,7 +104,14 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{}, {
|
|
|
100
104
|
}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_plugin_catalog_react_alpha.EntityCardType, "catalog.entity-card-type", {
|
|
101
105
|
optional: true;
|
|
102
106
|
}>;
|
|
103
|
-
inputs: {
|
|
107
|
+
inputs: {
|
|
108
|
+
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.AnyExtensionDataRef, {
|
|
109
|
+
optional: boolean;
|
|
110
|
+
singleton: boolean;
|
|
111
|
+
}>;
|
|
112
|
+
};
|
|
113
|
+
kind: "entity-card";
|
|
114
|
+
name: "user-profile";
|
|
104
115
|
params: {
|
|
105
116
|
loader: () => Promise<JSX.Element>;
|
|
106
117
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
package/dist/alpha.esm.js
CHANGED
|
@@ -31,17 +31,34 @@ const EntityOwnershipCard = EntityCardBlueprint.make({
|
|
|
31
31
|
)
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
|
-
const EntityUserProfileCard = EntityCardBlueprint.
|
|
34
|
+
const EntityUserProfileCard = EntityCardBlueprint.makeWithOverrides({
|
|
35
35
|
name: "user-profile",
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(
|
|
40
|
-
|
|
36
|
+
config: {
|
|
37
|
+
schema: {
|
|
38
|
+
maxRelations: (z) => z.number().optional(),
|
|
39
|
+
hideIcons: (z) => z.boolean().default(false)
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
factory(originalFactory, { config }) {
|
|
43
|
+
return originalFactory({
|
|
44
|
+
filter: "kind:user",
|
|
45
|
+
loader: async () => import('./components/Cards/User/UserProfileCard/UserProfileCard.esm.js').then(
|
|
46
|
+
(m) => compatWrapper(
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
m.UserProfileCard,
|
|
49
|
+
{
|
|
50
|
+
maxRelations: config.maxRelations,
|
|
51
|
+
hideIcons: config.hideIcons
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
)
|
|
55
|
+
)
|
|
56
|
+
});
|
|
41
57
|
}
|
|
42
58
|
});
|
|
43
59
|
var alpha = createFrontendPlugin({
|
|
44
60
|
pluginId: "org",
|
|
61
|
+
info: { packageJson: () => import('./package.json.esm.js') },
|
|
45
62
|
extensions: [
|
|
46
63
|
EntityGroupProfileCard,
|
|
47
64
|
EntityMembersListCard,
|
package/dist/alpha.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 compatWrapper,\n convertLegacyRouteRefs,\n} from '@backstage/core-compat-api';\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport { catalogIndexRouteRef } from './routes';\nimport { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\n/** @alpha */\nconst EntityGroupProfileCard = EntityCardBlueprint.make({\n name: 'group-profile',\n params: {\n filter: 'kind:group',\n loader: async () =>\n import('./components/Cards/Group/GroupProfile/GroupProfileCard').then(m =>\n compatWrapper(<m.GroupProfileCard />),\n ),\n },\n});\n\n/** @alpha */\nconst EntityMembersListCard = EntityCardBlueprint.make({\n name: 'members-list',\n params: {\n filter: 'kind:group',\n loader: async () =>\n import('./components/Cards/Group/MembersList/MembersListCard').then(m =>\n compatWrapper(<m.MembersListCard />),\n ),\n },\n});\n\n/** @alpha */\nconst EntityOwnershipCard = EntityCardBlueprint.make({\n name: 'ownership',\n params: {\n filter: 'kind:group,user',\n loader: async () =>\n import('./components/Cards/OwnershipCard/OwnershipCard').then(m =>\n compatWrapper(<m.OwnershipCard />),\n ),\n },\n});\n\n/** @alpha */\nconst EntityUserProfileCard = EntityCardBlueprint.
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha.tsx"],"sourcesContent":["/*\n * Copyright 2023 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 compatWrapper,\n convertLegacyRouteRefs,\n} from '@backstage/core-compat-api';\nimport { createFrontendPlugin } from '@backstage/frontend-plugin-api';\nimport { catalogIndexRouteRef } from './routes';\nimport { EntityCardBlueprint } from '@backstage/plugin-catalog-react/alpha';\n\n/** @alpha */\nconst EntityGroupProfileCard = EntityCardBlueprint.make({\n name: 'group-profile',\n params: {\n filter: 'kind:group',\n loader: async () =>\n import('./components/Cards/Group/GroupProfile/GroupProfileCard').then(m =>\n compatWrapper(<m.GroupProfileCard />),\n ),\n },\n});\n\n/** @alpha */\nconst EntityMembersListCard = EntityCardBlueprint.make({\n name: 'members-list',\n params: {\n filter: 'kind:group',\n loader: async () =>\n import('./components/Cards/Group/MembersList/MembersListCard').then(m =>\n compatWrapper(<m.MembersListCard />),\n ),\n },\n});\n\n/** @alpha */\nconst EntityOwnershipCard = EntityCardBlueprint.make({\n name: 'ownership',\n params: {\n filter: 'kind:group,user',\n loader: async () =>\n import('./components/Cards/OwnershipCard/OwnershipCard').then(m =>\n compatWrapper(<m.OwnershipCard />),\n ),\n },\n});\n\n/** @alpha */\nconst EntityUserProfileCard = EntityCardBlueprint.makeWithOverrides({\n name: 'user-profile',\n config: {\n schema: {\n maxRelations: z => z.number().optional(),\n hideIcons: z => z.boolean().default(false),\n },\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n filter: 'kind:user',\n loader: async () =>\n import('./components/Cards/User/UserProfileCard/UserProfileCard').then(\n m =>\n compatWrapper(\n <m.UserProfileCard\n maxRelations={config.maxRelations}\n hideIcons={config.hideIcons}\n />,\n ),\n ),\n });\n },\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'org',\n info: { packageJson: () => import('../package.json') },\n extensions: [\n EntityGroupProfileCard,\n EntityMembersListCard,\n EntityOwnershipCard,\n EntityUserProfileCard,\n ],\n externalRoutes: convertLegacyRouteRefs({\n catalogIndex: catalogIndexRouteRef,\n }),\n});\n"],"names":[],"mappings":";;;;;;AAyBA,MAAM,sBAAA,GAAyB,oBAAoB,IAAK,CAAA;AAAA,EACtD,IAAM,EAAA,eAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,YAAA;AAAA,IACR,MAAQ,EAAA,YACN,OAAO,+DAAwD,CAAE,CAAA,IAAA;AAAA,MAAK,OACpE,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,gBAAA,EAAF,EAAmB,CAAE;AAAA;AACtC;AAEN,CAAC,CAAA;AAGD,MAAM,qBAAA,GAAwB,oBAAoB,IAAK,CAAA;AAAA,EACrD,IAAM,EAAA,cAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,YAAA;AAAA,IACR,MAAQ,EAAA,YACN,OAAO,6DAAsD,CAAE,CAAA,IAAA;AAAA,MAAK,OAClE,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,eAAA,EAAF,EAAkB,CAAE;AAAA;AACrC;AAEN,CAAC,CAAA;AAGD,MAAM,mBAAA,GAAsB,oBAAoB,IAAK,CAAA;AAAA,EACnD,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA,iBAAA;AAAA,IACR,MAAQ,EAAA,YACN,OAAO,uDAAgD,CAAE,CAAA,IAAA;AAAA,MAAK,OAC5D,aAAc,iBAAA,GAAA,CAAC,CAAE,CAAA,aAAA,EAAF,EAAgB,CAAE;AAAA;AACnC;AAEN,CAAC,CAAA;AAGD,MAAM,qBAAA,GAAwB,oBAAoB,iBAAkB,CAAA;AAAA,EAClE,IAAM,EAAA,cAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,MAAQ,EAAA;AAAA,MACN,YAAc,EAAA,CAAA,CAAA,KAAK,CAAE,CAAA,MAAA,GAAS,QAAS,EAAA;AAAA,MACvC,WAAW,CAAK,CAAA,KAAA,CAAA,CAAE,OAAQ,EAAA,CAAE,QAAQ,KAAK;AAAA;AAC3C,GACF;AAAA,EACA,OAAQ,CAAA,eAAA,EAAiB,EAAE,MAAA,EAAU,EAAA;AACnC,IAAA,OAAO,eAAgB,CAAA;AAAA,MACrB,MAAQ,EAAA,WAAA;AAAA,MACR,MAAQ,EAAA,YACN,OAAO,gEAAyD,CAAE,CAAA,IAAA;AAAA,QAChE,CACE,CAAA,KAAA,aAAA;AAAA,0BACE,GAAA;AAAA,YAAC,CAAE,CAAA,eAAA;AAAA,YAAF;AAAA,cACC,cAAc,MAAO,CAAA,YAAA;AAAA,cACrB,WAAW,MAAO,CAAA;AAAA;AAAA;AACpB;AACF;AACJ,KACH,CAAA;AAAA;AAEL,CAAC,CAAA;AAGD,YAAe,oBAAqB,CAAA;AAAA,EAClC,QAAU,EAAA,KAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,uBAAiB,CAAE,EAAA;AAAA,EACrD,UAAY,EAAA;AAAA,IACV,sBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,gBAAgB,sBAAuB,CAAA;AAAA,IACrC,YAAc,EAAA;AAAA,GACf;AACH,CAAC,CAAA;;;;"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import { jsx,
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { ANNOTATION_EDIT_URL, RELATION_MEMBER_OF } from '@backstage/catalog-model';
|
|
3
3
|
import { InfoCard, Link, Avatar } from '@backstage/core-components';
|
|
4
|
+
import { makeStyles } from '@material-ui/core/styles';
|
|
4
5
|
import Box from '@material-ui/core/Box';
|
|
5
6
|
import Grid from '@material-ui/core/Grid';
|
|
7
|
+
import BaseButton from '@material-ui/core/ButtonBase';
|
|
6
8
|
import IconButton from '@material-ui/core/IconButton';
|
|
7
9
|
import List from '@material-ui/core/List';
|
|
8
10
|
import ListItem from '@material-ui/core/ListItem';
|
|
9
11
|
import ListItemIcon from '@material-ui/core/ListItemIcon';
|
|
10
12
|
import ListItemText from '@material-ui/core/ListItemText';
|
|
11
13
|
import Tooltip from '@material-ui/core/Tooltip';
|
|
14
|
+
import Button from '@material-ui/core/Button';
|
|
15
|
+
import Dialog from '@material-ui/core/Dialog';
|
|
16
|
+
import DialogTitle from '@material-ui/core/DialogTitle';
|
|
17
|
+
import DialogContent from '@material-ui/core/DialogContent';
|
|
18
|
+
import DialogActions from '@material-ui/core/DialogActions';
|
|
19
|
+
import CloseIcon from '@material-ui/icons/Close';
|
|
12
20
|
import { useEntity, getEntityRelations, EntityRefLinks } from '@backstage/plugin-catalog-react';
|
|
13
21
|
import Alert from '@material-ui/lab/Alert';
|
|
14
22
|
import EditIcon from '@material-ui/icons/Edit';
|
|
@@ -16,13 +24,38 @@ import EmailIcon from '@material-ui/icons/Email';
|
|
|
16
24
|
import GroupIcon from '@material-ui/icons/Group';
|
|
17
25
|
import { LinksGroup } from '../../Meta/LinksGroup.esm.js';
|
|
18
26
|
import PersonIcon from '@material-ui/icons/Person';
|
|
27
|
+
import { useState, useCallback } from 'react';
|
|
19
28
|
|
|
29
|
+
const useStyles = makeStyles((theme) => ({
|
|
30
|
+
closeButton: {
|
|
31
|
+
position: "absolute",
|
|
32
|
+
right: theme.spacing(1),
|
|
33
|
+
top: theme.spacing(1),
|
|
34
|
+
color: theme.palette.grey[500]
|
|
35
|
+
},
|
|
36
|
+
moreButton: {
|
|
37
|
+
display: "contents",
|
|
38
|
+
color: theme.palette.primary.main
|
|
39
|
+
},
|
|
40
|
+
dialogPaper: {
|
|
41
|
+
minHeight: 400
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
20
44
|
const CardTitle = (props) => props.title ? /* @__PURE__ */ jsxs(Box, { display: "flex", alignItems: "center", children: [
|
|
21
45
|
/* @__PURE__ */ jsx(PersonIcon, { fontSize: "inherit" }),
|
|
22
46
|
/* @__PURE__ */ jsx(Box, { ml: 1, children: props.title })
|
|
23
47
|
] }) : null;
|
|
24
48
|
const UserProfileCard = (props) => {
|
|
49
|
+
const { maxRelations, hideIcons } = props;
|
|
50
|
+
const classes = useStyles();
|
|
25
51
|
const { entity: user } = useEntity();
|
|
52
|
+
const [isAllGroupsDialogOpen, setIsAllGroupsDialogOpen] = useState(false);
|
|
53
|
+
const toggleAllGroupsDialog = useCallback(
|
|
54
|
+
() => setIsAllGroupsDialogOpen(
|
|
55
|
+
(prevIsViewAllGroupsDialogOpen) => !prevIsViewAllGroupsDialogOpen
|
|
56
|
+
),
|
|
57
|
+
[]
|
|
58
|
+
);
|
|
26
59
|
if (!user) {
|
|
27
60
|
return /* @__PURE__ */ jsx(Alert, { severity: "error", children: "User not found" });
|
|
28
61
|
}
|
|
@@ -36,7 +69,7 @@ const UserProfileCard = (props) => {
|
|
|
36
69
|
const memberOfRelations = getEntityRelations(user, RELATION_MEMBER_OF, {
|
|
37
70
|
kind: "Group"
|
|
38
71
|
});
|
|
39
|
-
return /* @__PURE__ */
|
|
72
|
+
return /* @__PURE__ */ jsxs(
|
|
40
73
|
InfoCard,
|
|
41
74
|
{
|
|
42
75
|
title: /* @__PURE__ */ jsx(CardTitle, { title: displayName }),
|
|
@@ -52,26 +85,73 @@ const UserProfileCard = (props) => {
|
|
|
52
85
|
children: /* @__PURE__ */ jsx(EditIcon, {})
|
|
53
86
|
}
|
|
54
87
|
) }),
|
|
55
|
-
children:
|
|
56
|
-
/* @__PURE__ */
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
children: [
|
|
89
|
+
/* @__PURE__ */ jsxs(Grid, { container: true, spacing: 3, alignItems: "flex-start", children: [
|
|
90
|
+
/* @__PURE__ */ jsx(Grid, { item: true, xs: 12, sm: 2, xl: 1, children: /* @__PURE__ */ jsx(Avatar, { displayName, picture: profile?.picture }) }),
|
|
91
|
+
/* @__PURE__ */ jsx(Grid, { item: true, md: 10, xl: 11, children: /* @__PURE__ */ jsxs(List, { children: [
|
|
92
|
+
profile?.email && /* @__PURE__ */ jsxs(ListItem, { children: [
|
|
93
|
+
/* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(Tooltip, { title: "Email", children: /* @__PURE__ */ jsx(EmailIcon, {}) }) }),
|
|
94
|
+
/* @__PURE__ */ jsx(ListItemText, { children: /* @__PURE__ */ jsx(Link, { to: emailHref ?? "", children: profile.email }) })
|
|
95
|
+
] }),
|
|
96
|
+
maxRelations === void 0 || maxRelations > 0 ? /* @__PURE__ */ jsxs(ListItem, { children: [
|
|
97
|
+
/* @__PURE__ */ jsx(ListItemIcon, { children: /* @__PURE__ */ jsx(Tooltip, { title: "Member of", children: /* @__PURE__ */ jsx(GroupIcon, {}) }) }),
|
|
98
|
+
/* @__PURE__ */ jsxs(ListItemText, { children: [
|
|
99
|
+
/* @__PURE__ */ jsx(
|
|
100
|
+
EntityRefLinks,
|
|
101
|
+
{
|
|
102
|
+
entityRefs: memberOfRelations.slice(0, maxRelations),
|
|
103
|
+
defaultKind: "Group",
|
|
104
|
+
hideIcons
|
|
105
|
+
}
|
|
106
|
+
),
|
|
107
|
+
maxRelations && memberOfRelations.length > maxRelations ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
108
|
+
",",
|
|
109
|
+
/* @__PURE__ */ jsx(
|
|
110
|
+
BaseButton,
|
|
111
|
+
{
|
|
112
|
+
className: classes.moreButton,
|
|
113
|
+
onClick: toggleAllGroupsDialog,
|
|
114
|
+
disableRipple: true,
|
|
115
|
+
children: ` ...More (${memberOfRelations.length - maxRelations})`
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
] }) : null
|
|
119
|
+
] })
|
|
120
|
+
] }) : null,
|
|
121
|
+
props?.showLinks && /* @__PURE__ */ jsx(LinksGroup, { links })
|
|
122
|
+
] }) })
|
|
123
|
+
] }),
|
|
124
|
+
/* @__PURE__ */ jsxs(
|
|
125
|
+
Dialog,
|
|
126
|
+
{
|
|
127
|
+
classes: { paper: classes.dialogPaper },
|
|
128
|
+
open: isAllGroupsDialogOpen,
|
|
129
|
+
onClose: toggleAllGroupsDialog,
|
|
130
|
+
scroll: "paper",
|
|
131
|
+
"aria-labelledby": "view-all-groups-dialog-title",
|
|
132
|
+
maxWidth: "md",
|
|
133
|
+
fullWidth: true,
|
|
134
|
+
children: [
|
|
135
|
+
/* @__PURE__ */ jsxs(DialogTitle, { id: "view-all-groups-dialog-title", children: [
|
|
136
|
+
"All ",
|
|
137
|
+
user.metadata.name,
|
|
138
|
+
"'s groups:",
|
|
139
|
+
/* @__PURE__ */ jsx(
|
|
140
|
+
IconButton,
|
|
141
|
+
{
|
|
142
|
+
className: classes.closeButton,
|
|
143
|
+
"aria-label": "close",
|
|
144
|
+
onClick: toggleAllGroupsDialog,
|
|
145
|
+
children: /* @__PURE__ */ jsx(CloseIcon, {})
|
|
146
|
+
}
|
|
147
|
+
)
|
|
148
|
+
] }),
|
|
149
|
+
/* @__PURE__ */ jsx(DialogContent, { dividers: true, children: /* @__PURE__ */ jsx(EntityRefLinks, { entityRefs: memberOfRelations, defaultKind: "Group" }) }),
|
|
150
|
+
/* @__PURE__ */ jsx(DialogActions, { children: /* @__PURE__ */ jsx(Button, { onClick: toggleAllGroupsDialog, children: "Close" }) })
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
)
|
|
154
|
+
]
|
|
75
155
|
}
|
|
76
156
|
);
|
|
77
157
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserProfileCard.esm.js","sources":["../../../../../src/components/Cards/User/UserProfileCard/UserProfileCard.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 ANNOTATION_EDIT_URL,\n RELATION_MEMBER_OF,\n UserEntity,\n} from '@backstage/catalog-model';\nimport {\n Avatar,\n InfoCard,\n InfoCardVariants,\n Link,\n} from '@backstage/core-components';\nimport Box from '@material-ui/core/Box';\nimport Grid from '@material-ui/core/Grid';\nimport IconButton from '@material-ui/core/IconButton';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport {\n EntityRefLinks,\n getEntityRelations,\n useEntity,\n} from '@backstage/plugin-catalog-react';\n\nimport Alert from '@material-ui/lab/Alert';\nimport EditIcon from '@material-ui/icons/Edit';\nimport EmailIcon from '@material-ui/icons/Email';\nimport GroupIcon from '@material-ui/icons/Group';\nimport { LinksGroup } from '../../Meta';\nimport PersonIcon from '@material-ui/icons/Person';\n\nconst CardTitle = (props: { title?: string }) =>\n props.title ? (\n <Box display=\"flex\" alignItems=\"center\">\n <PersonIcon fontSize=\"inherit\" />\n <Box ml={1}>{props.title}</Box>\n </Box>\n ) : null;\n\n/** @public */\nexport const UserProfileCard = (props: {\n variant?: InfoCardVariants;\n showLinks?: boolean;\n}) => {\n const { entity: user } = useEntity<UserEntity>();\n if (!user) {\n return <Alert severity=\"error\">User not found</Alert>;\n }\n\n const entityMetadataEditUrl =\n user.metadata.annotations?.[ANNOTATION_EDIT_URL];\n\n const {\n metadata: { name: metaName, description, links },\n spec: { profile },\n } = user;\n const displayName = profile?.displayName ?? metaName;\n const emailHref = profile?.email ? `mailto:${profile.email}` : undefined;\n const memberOfRelations = getEntityRelations(user, RELATION_MEMBER_OF, {\n kind: 'Group',\n });\n\n return (\n <InfoCard\n title={<CardTitle title={displayName} />}\n subheader={description}\n variant={props.variant}\n action={\n <>\n {entityMetadataEditUrl && (\n <IconButton\n aria-label=\"Edit\"\n title=\"Edit Metadata\"\n component={Link}\n to={entityMetadataEditUrl}\n >\n <EditIcon />\n </IconButton>\n )}\n </>\n }\n >\n <Grid container spacing={3} alignItems=\"flex-start\">\n <Grid item xs={12} sm={2} xl={1}>\n <Avatar displayName={displayName} picture={profile?.picture} />\n </Grid>\n\n <Grid item md={10} xl={11}>\n <List>\n {profile?.email && (\n <ListItem>\n <ListItemIcon>\n <Tooltip title=\"Email\">\n <EmailIcon />\n </Tooltip>\n </ListItemIcon>\n <ListItemText>\n <Link to={emailHref ?? ''}>{profile.email}</Link>\n </ListItemText>\n </ListItem>\n )}\n\n <ListItem>\n <ListItemIcon>\n <Tooltip title=\"Member of\">\n <GroupIcon />\n </Tooltip>\n </ListItemIcon>\n <ListItemText>\n <EntityRefLinks\n entityRefs={memberOfRelations}\n defaultKind=\"Group\"\n />\n </ListItemText>\n </ListItem>\n\n {props?.showLinks && <LinksGroup links={links} />}\n </List>\n </Grid>\n </Grid>\n </InfoCard>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UserProfileCard.esm.js","sources":["../../../../../src/components/Cards/User/UserProfileCard/UserProfileCard.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 ANNOTATION_EDIT_URL,\n RELATION_MEMBER_OF,\n UserEntity,\n} from '@backstage/catalog-model';\nimport {\n Avatar,\n InfoCard,\n InfoCardVariants,\n Link,\n} from '@backstage/core-components';\nimport { makeStyles } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Grid from '@material-ui/core/Grid';\nimport BaseButton from '@material-ui/core/ButtonBase';\nimport IconButton from '@material-ui/core/IconButton';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {\n EntityRefLinks,\n getEntityRelations,\n useEntity,\n} from '@backstage/plugin-catalog-react';\n\nimport Alert from '@material-ui/lab/Alert';\nimport EditIcon from '@material-ui/icons/Edit';\nimport EmailIcon from '@material-ui/icons/Email';\nimport GroupIcon from '@material-ui/icons/Group';\nimport { LinksGroup } from '../../Meta';\nimport PersonIcon from '@material-ui/icons/Person';\n\nimport { useCallback, useState } from 'react';\n\nconst useStyles = makeStyles((theme: any) => ({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n moreButton: {\n display: 'contents',\n color: theme.palette.primary.main,\n },\n dialogPaper: {\n minHeight: 400,\n },\n}));\n\nconst CardTitle = (props: { title?: string }) =>\n props.title ? (\n <Box display=\"flex\" alignItems=\"center\">\n <PersonIcon fontSize=\"inherit\" />\n <Box ml={1}>{props.title}</Box>\n </Box>\n ) : null;\n\n/** @public */\nexport const UserProfileCard = (props: {\n variant?: InfoCardVariants;\n showLinks?: boolean;\n maxRelations?: number;\n hideIcons?: boolean;\n}) => {\n const { maxRelations, hideIcons } = props;\n\n const classes = useStyles();\n const { entity: user } = useEntity<UserEntity>();\n const [isAllGroupsDialogOpen, setIsAllGroupsDialogOpen] = useState(false);\n\n const toggleAllGroupsDialog = useCallback(\n () =>\n setIsAllGroupsDialogOpen(\n prevIsViewAllGroupsDialogOpen => !prevIsViewAllGroupsDialogOpen,\n ),\n [],\n );\n\n if (!user) {\n return <Alert severity=\"error\">User not found</Alert>;\n }\n\n const entityMetadataEditUrl =\n user.metadata.annotations?.[ANNOTATION_EDIT_URL];\n\n const {\n metadata: { name: metaName, description, links },\n spec: { profile },\n } = user;\n const displayName = profile?.displayName ?? metaName;\n const emailHref = profile?.email ? `mailto:${profile.email}` : undefined;\n const memberOfRelations = getEntityRelations(user, RELATION_MEMBER_OF, {\n kind: 'Group',\n });\n\n return (\n <InfoCard\n title={<CardTitle title={displayName} />}\n subheader={description}\n variant={props.variant}\n action={\n <>\n {entityMetadataEditUrl && (\n <IconButton\n aria-label=\"Edit\"\n title=\"Edit Metadata\"\n component={Link}\n to={entityMetadataEditUrl}\n >\n <EditIcon />\n </IconButton>\n )}\n </>\n }\n >\n <Grid container spacing={3} alignItems=\"flex-start\">\n <Grid item xs={12} sm={2} xl={1}>\n <Avatar displayName={displayName} picture={profile?.picture} />\n </Grid>\n\n <Grid item md={10} xl={11}>\n <List>\n {profile?.email && (\n <ListItem>\n <ListItemIcon>\n <Tooltip title=\"Email\">\n <EmailIcon />\n </Tooltip>\n </ListItemIcon>\n <ListItemText>\n <Link to={emailHref ?? ''}>{profile.email}</Link>\n </ListItemText>\n </ListItem>\n )}\n\n {maxRelations === undefined || maxRelations > 0 ? (\n <ListItem>\n <ListItemIcon>\n <Tooltip title=\"Member of\">\n <GroupIcon />\n </Tooltip>\n </ListItemIcon>\n <ListItemText>\n <EntityRefLinks\n entityRefs={memberOfRelations.slice(0, maxRelations)}\n defaultKind=\"Group\"\n hideIcons={hideIcons}\n />\n {maxRelations && memberOfRelations.length > maxRelations ? (\n <>\n ,\n <BaseButton\n className={classes.moreButton}\n onClick={toggleAllGroupsDialog}\n disableRipple\n >\n {` ...More (${\n memberOfRelations.length - maxRelations\n })`}\n </BaseButton>\n </>\n ) : null}\n </ListItemText>\n </ListItem>\n ) : null}\n {props?.showLinks && <LinksGroup links={links} />}\n </List>\n </Grid>\n </Grid>\n\n <Dialog\n classes={{ paper: classes.dialogPaper }}\n open={isAllGroupsDialogOpen}\n onClose={toggleAllGroupsDialog}\n scroll=\"paper\"\n aria-labelledby=\"view-all-groups-dialog-title\"\n maxWidth=\"md\"\n fullWidth\n >\n <DialogTitle id=\"view-all-groups-dialog-title\">\n All {user.metadata.name}'s groups:\n <IconButton\n className={classes.closeButton}\n aria-label=\"close\"\n onClick={toggleAllGroupsDialog}\n >\n <CloseIcon />\n </IconButton>\n </DialogTitle>\n <DialogContent dividers>\n <EntityRefLinks entityRefs={memberOfRelations} defaultKind=\"Group\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={toggleAllGroupsDialog}>Close</Button>\n </DialogActions>\n </Dialog>\n </InfoCard>\n );\n};\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,8 @@ declare const GroupProfileCard: (props: {
|
|
|
32
32
|
declare const UserProfileCard: (props: {
|
|
33
33
|
variant?: InfoCardVariants;
|
|
34
34
|
showLinks?: boolean;
|
|
35
|
+
maxRelations?: number;
|
|
36
|
+
hideIcons?: boolean;
|
|
35
37
|
}) => react_jsx_runtime.JSX.Element;
|
|
36
38
|
|
|
37
39
|
/** @public */
|
|
@@ -88,6 +90,8 @@ declare const EntityOwnershipCard: (props: {
|
|
|
88
90
|
declare const EntityUserProfileCard: (props: {
|
|
89
91
|
variant?: _backstage_core_components.InfoCardVariants;
|
|
90
92
|
showLinks?: boolean;
|
|
93
|
+
maxRelations?: number;
|
|
94
|
+
hideIcons?: boolean;
|
|
91
95
|
}) => react_jsx_runtime.JSX.Element;
|
|
92
96
|
|
|
93
97
|
export { EntityGroupProfileCard, EntityMembersListCard, EntityOwnershipCard, type EntityRelationAggregation, EntityUserProfileCard, GroupProfileCard, type MemberComponentClassKey, MembersListCard, type MembersListCardClassKey, MyGroupsSidebarItem, OwnershipCard, UserProfileCard, orgPlugin, orgPlugin as plugin };
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
var name = "@backstage/plugin-org";
|
|
2
|
+
var version = "0.6.40-next.0";
|
|
3
|
+
var description = "A Backstage plugin that helps you create entity pages for your organization";
|
|
4
|
+
var backstage = {
|
|
5
|
+
role: "frontend-plugin",
|
|
6
|
+
pluginId: "org",
|
|
7
|
+
pluginPackages: [
|
|
8
|
+
"@backstage/plugin-org",
|
|
9
|
+
"@backstage/plugin-org-react"
|
|
10
|
+
]
|
|
11
|
+
};
|
|
12
|
+
var publishConfig = {
|
|
13
|
+
access: "public"
|
|
14
|
+
};
|
|
15
|
+
var homepage = "https://backstage.io";
|
|
16
|
+
var repository = {
|
|
17
|
+
type: "git",
|
|
18
|
+
url: "https://github.com/backstage/backstage",
|
|
19
|
+
directory: "plugins/org"
|
|
20
|
+
};
|
|
21
|
+
var license = "Apache-2.0";
|
|
22
|
+
var sideEffects = false;
|
|
23
|
+
var exports = {
|
|
24
|
+
".": "./src/index.ts",
|
|
25
|
+
"./alpha": "./src/alpha.tsx",
|
|
26
|
+
"./package.json": "./package.json"
|
|
27
|
+
};
|
|
28
|
+
var main = "src/index.ts";
|
|
29
|
+
var types = "src/index.ts";
|
|
30
|
+
var typesVersions = {
|
|
31
|
+
"*": {
|
|
32
|
+
alpha: [
|
|
33
|
+
"src/alpha.tsx"
|
|
34
|
+
],
|
|
35
|
+
"package.json": [
|
|
36
|
+
"package.json"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var files = [
|
|
41
|
+
"dist"
|
|
42
|
+
];
|
|
43
|
+
var scripts = {
|
|
44
|
+
build: "backstage-cli package build",
|
|
45
|
+
clean: "backstage-cli package clean",
|
|
46
|
+
lint: "backstage-cli package lint",
|
|
47
|
+
prepack: "backstage-cli package prepack",
|
|
48
|
+
postpack: "backstage-cli package postpack",
|
|
49
|
+
start: "backstage-cli package start",
|
|
50
|
+
test: "backstage-cli package test"
|
|
51
|
+
};
|
|
52
|
+
var dependencies = {
|
|
53
|
+
"@backstage/catalog-model": "workspace:^",
|
|
54
|
+
"@backstage/core-compat-api": "workspace:^",
|
|
55
|
+
"@backstage/core-components": "workspace:^",
|
|
56
|
+
"@backstage/core-plugin-api": "workspace:^",
|
|
57
|
+
"@backstage/frontend-plugin-api": "workspace:^",
|
|
58
|
+
"@backstage/plugin-catalog-common": "workspace:^",
|
|
59
|
+
"@backstage/plugin-catalog-react": "workspace:^",
|
|
60
|
+
"@material-ui/core": "^4.12.2",
|
|
61
|
+
"@material-ui/icons": "^4.9.1",
|
|
62
|
+
"@material-ui/lab": "4.0.0-alpha.61",
|
|
63
|
+
lodash: "^4.17.21",
|
|
64
|
+
"p-limit": "^3.1.0",
|
|
65
|
+
pluralize: "^8.0.0",
|
|
66
|
+
qs: "^6.10.1",
|
|
67
|
+
"react-use": "^17.2.4"
|
|
68
|
+
};
|
|
69
|
+
var devDependencies = {
|
|
70
|
+
"@backstage/catalog-client": "workspace:^",
|
|
71
|
+
"@backstage/cli": "workspace:^",
|
|
72
|
+
"@backstage/core-app-api": "workspace:^",
|
|
73
|
+
"@backstage/dev-utils": "workspace:^",
|
|
74
|
+
"@backstage/plugin-catalog": "workspace:^",
|
|
75
|
+
"@backstage/plugin-permission-common": "workspace:^",
|
|
76
|
+
"@backstage/plugin-permission-react": "workspace:^",
|
|
77
|
+
"@backstage/test-utils": "workspace:^",
|
|
78
|
+
"@backstage/types": "workspace:^",
|
|
79
|
+
"@testing-library/dom": "^10.0.0",
|
|
80
|
+
"@testing-library/jest-dom": "^6.0.0",
|
|
81
|
+
"@testing-library/react": "^16.0.0",
|
|
82
|
+
"@testing-library/user-event": "^14.0.0",
|
|
83
|
+
"@types/react": "^18.0.0",
|
|
84
|
+
react: "^18.0.2",
|
|
85
|
+
"react-dom": "^18.0.2",
|
|
86
|
+
"react-router-dom": "^6.3.0"
|
|
87
|
+
};
|
|
88
|
+
var peerDependencies = {
|
|
89
|
+
"@types/react": "^17.0.0 || ^18.0.0",
|
|
90
|
+
react: "^17.0.0 || ^18.0.0",
|
|
91
|
+
"react-dom": "^17.0.0 || ^18.0.0",
|
|
92
|
+
"react-router-dom": "^6.3.0"
|
|
93
|
+
};
|
|
94
|
+
var peerDependenciesMeta = {
|
|
95
|
+
"@types/react": {
|
|
96
|
+
optional: true
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
var _package = {
|
|
100
|
+
name: name,
|
|
101
|
+
version: version,
|
|
102
|
+
description: description,
|
|
103
|
+
backstage: backstage,
|
|
104
|
+
publishConfig: publishConfig,
|
|
105
|
+
homepage: homepage,
|
|
106
|
+
repository: repository,
|
|
107
|
+
license: license,
|
|
108
|
+
sideEffects: sideEffects,
|
|
109
|
+
exports: exports,
|
|
110
|
+
main: main,
|
|
111
|
+
types: types,
|
|
112
|
+
typesVersions: typesVersions,
|
|
113
|
+
files: files,
|
|
114
|
+
scripts: scripts,
|
|
115
|
+
dependencies: dependencies,
|
|
116
|
+
devDependencies: devDependencies,
|
|
117
|
+
peerDependencies: peerDependencies,
|
|
118
|
+
peerDependenciesMeta: peerDependenciesMeta
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export { backstage, _package as default, dependencies, description, devDependencies, exports, files, homepage, license, main, name, peerDependencies, peerDependenciesMeta, publishConfig, repository, scripts, sideEffects, types, typesVersions, version };
|
|
122
|
+
//# sourceMappingURL=package.json.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-org",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.40-next.0",
|
|
4
4
|
"description": "A Backstage plugin that helps you create entity pages for your organization",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -63,13 +63,13 @@
|
|
|
63
63
|
"test": "backstage-cli package test"
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {
|
|
66
|
-
"@backstage/catalog-model": "1.7.
|
|
67
|
-
"@backstage/core-compat-api": "0.4.
|
|
68
|
-
"@backstage/core-components": "0.17.2
|
|
69
|
-
"@backstage/core-plugin-api": "1.10.7
|
|
70
|
-
"@backstage/frontend-plugin-api": "0.10.
|
|
71
|
-
"@backstage/plugin-catalog-common": "1.1.4
|
|
72
|
-
"@backstage/plugin-catalog-react": "1.18.
|
|
66
|
+
"@backstage/catalog-model": "1.7.4",
|
|
67
|
+
"@backstage/core-compat-api": "0.4.3-next.0",
|
|
68
|
+
"@backstage/core-components": "0.17.2",
|
|
69
|
+
"@backstage/core-plugin-api": "1.10.7",
|
|
70
|
+
"@backstage/frontend-plugin-api": "0.10.3-next.0",
|
|
71
|
+
"@backstage/plugin-catalog-common": "1.1.4",
|
|
72
|
+
"@backstage/plugin-catalog-react": "1.18.1-next.0",
|
|
73
73
|
"@material-ui/core": "^4.12.2",
|
|
74
74
|
"@material-ui/icons": "^4.9.1",
|
|
75
75
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
@@ -80,14 +80,14 @@
|
|
|
80
80
|
"react-use": "^17.2.4"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
|
-
"@backstage/catalog-client": "1.10.0
|
|
84
|
-
"@backstage/cli": "0.32.1
|
|
85
|
-
"@backstage/core-app-api": "1.17.0
|
|
86
|
-
"@backstage/dev-utils": "1.1.
|
|
87
|
-
"@backstage/plugin-catalog": "1.
|
|
88
|
-
"@backstage/plugin-permission-common": "0.9.0
|
|
89
|
-
"@backstage/plugin-permission-react": "0.4.34
|
|
90
|
-
"@backstage/test-utils": "1.7.8
|
|
83
|
+
"@backstage/catalog-client": "1.10.0",
|
|
84
|
+
"@backstage/cli": "0.32.1",
|
|
85
|
+
"@backstage/core-app-api": "1.17.0",
|
|
86
|
+
"@backstage/dev-utils": "1.1.11-next.0",
|
|
87
|
+
"@backstage/plugin-catalog": "1.31.0-next.0",
|
|
88
|
+
"@backstage/plugin-permission-common": "0.9.0",
|
|
89
|
+
"@backstage/plugin-permission-react": "0.4.34",
|
|
90
|
+
"@backstage/test-utils": "1.7.8",
|
|
91
91
|
"@backstage/types": "1.2.1",
|
|
92
92
|
"@testing-library/dom": "^10.0.0",
|
|
93
93
|
"@testing-library/jest-dom": "^6.0.0",
|