@backstage/plugin-catalog 1.32.0-next.1 → 1.32.1-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 +52 -0
- package/dist/alpha/DefaultEntityContentLayout.esm.js +34 -13
- package/dist/alpha/DefaultEntityContentLayout.esm.js.map +1 -1
- package/dist/alpha/contextMenuItems.esm.js +14 -19
- package/dist/alpha/contextMenuItems.esm.js.map +1 -1
- package/dist/alpha/entityCards.esm.js +10 -31
- package/dist/alpha/entityCards.esm.js.map +1 -1
- package/dist/alpha/navItems.esm.js +1 -2
- package/dist/alpha/navItems.esm.js.map +1 -1
- package/dist/alpha/pages.esm.js +16 -11
- package/dist/alpha/pages.esm.js.map +1 -1
- package/dist/alpha/plugin.esm.js +4 -5
- package/dist/alpha/plugin.esm.js.map +1 -1
- package/dist/alpha.d.ts +41 -41
- package/dist/package.json.esm.js +1 -1
- package/package.json +21 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,57 @@
|
|
|
1
1
|
# @backstage/plugin-catalog
|
|
2
2
|
|
|
3
|
+
## 1.32.1-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d02db50: Remove unnecessary use of `compatWrapper` and `convertLegacyRouteRef`(s) for the new frontend system.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/frontend-plugin-api@0.13.2-next.0
|
|
10
|
+
- @backstage/core-plugin-api@1.12.1-next.0
|
|
11
|
+
- @backstage/plugin-catalog-react@1.21.4-next.0
|
|
12
|
+
- @backstage/core-compat-api@0.5.5-next.0
|
|
13
|
+
- @backstage/plugin-search-react@1.10.1-next.0
|
|
14
|
+
- @backstage/plugin-techdocs-react@1.3.6-next.0
|
|
15
|
+
- @backstage/integration-react@1.2.13-next.0
|
|
16
|
+
- @backstage/plugin-scaffolder-common@1.7.4-next.0
|
|
17
|
+
- @backstage/core-components@0.18.4-next.0
|
|
18
|
+
- @backstage/plugin-permission-react@0.4.39-next.0
|
|
19
|
+
- @backstage/catalog-client@1.12.1
|
|
20
|
+
- @backstage/catalog-model@1.7.6
|
|
21
|
+
- @backstage/errors@1.2.7
|
|
22
|
+
- @backstage/types@1.2.2
|
|
23
|
+
- @backstage/version-bridge@1.0.11
|
|
24
|
+
- @backstage/plugin-catalog-common@1.1.7
|
|
25
|
+
- @backstage/plugin-search-common@1.2.21
|
|
26
|
+
- @backstage/plugin-techdocs-common@0.1.1
|
|
27
|
+
|
|
28
|
+
## 1.32.0
|
|
29
|
+
|
|
30
|
+
### Minor Changes
|
|
31
|
+
|
|
32
|
+
- a521911: Add support for customizable icons in `SearchResultListItemBlueprint` and related components
|
|
33
|
+
|
|
34
|
+
### Patch Changes
|
|
35
|
+
|
|
36
|
+
- b500bcc: Fix React warnings for elements not having stable keys.
|
|
37
|
+
- a87c0a5: Fixed responsiveness issues with catalog entity content layout using the new frontend system.
|
|
38
|
+
- aff04d3: Fixed missing margins for entity warning content area on catalog entity page in NFS.
|
|
39
|
+
- Updated dependencies
|
|
40
|
+
- @backstage/frontend-plugin-api@0.13.0
|
|
41
|
+
- @backstage/core-compat-api@0.5.4
|
|
42
|
+
- @backstage/plugin-search-react@1.10.0
|
|
43
|
+
- @backstage/plugin-catalog-react@1.21.3
|
|
44
|
+
- @backstage/core-components@0.18.3
|
|
45
|
+
- @backstage/core-plugin-api@1.12.0
|
|
46
|
+
- @backstage/plugin-permission-react@0.4.38
|
|
47
|
+
- @backstage/catalog-model@1.7.6
|
|
48
|
+
- @backstage/plugin-techdocs-react@1.3.5
|
|
49
|
+
- @backstage/catalog-client@1.12.1
|
|
50
|
+
- @backstage/integration-react@1.2.12
|
|
51
|
+
- @backstage/plugin-catalog-common@1.1.7
|
|
52
|
+
- @backstage/plugin-scaffolder-common@1.7.3
|
|
53
|
+
- @backstage/plugin-search-common@1.2.21
|
|
54
|
+
|
|
3
55
|
## 1.32.0-next.1
|
|
4
56
|
|
|
5
57
|
### Minor Changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import
|
|
2
|
+
import { Fragment as Fragment$1 } from 'react';
|
|
3
3
|
import { makeStyles } from '@material-ui/core/styles';
|
|
4
4
|
import { EntitySwitch } from '../components/EntitySwitch/EntitySwitch.esm.js';
|
|
5
5
|
import { isOrphan, EntityOrphanWarning } from '../components/EntityOrphanWarning/EntityOrphanWarning.esm.js';
|
|
@@ -13,6 +13,16 @@ const useStyles = makeStyles((theme) => ({
|
|
|
13
13
|
flexFlow: "column nowrap",
|
|
14
14
|
gap: theme.spacing(3)
|
|
15
15
|
},
|
|
16
|
+
warningArea: {
|
|
17
|
+
display: "flex",
|
|
18
|
+
flexDirection: "column",
|
|
19
|
+
gap: theme.spacing(2),
|
|
20
|
+
marginBottom: theme.spacing(3),
|
|
21
|
+
"&:empty": {
|
|
22
|
+
marginBottom: 0,
|
|
23
|
+
display: "none"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
16
26
|
mainContent: {
|
|
17
27
|
display: "flex",
|
|
18
28
|
flexFlow: "column",
|
|
@@ -23,7 +33,7 @@ const useStyles = makeStyles((theme) => ({
|
|
|
23
33
|
infoArea: {
|
|
24
34
|
display: "flex",
|
|
25
35
|
flexFlow: "column nowrap",
|
|
26
|
-
alignItems: "
|
|
36
|
+
alignItems: "stretch",
|
|
27
37
|
gap: theme.spacing(3),
|
|
28
38
|
minWidth: 0,
|
|
29
39
|
"& > *": {
|
|
@@ -33,11 +43,12 @@ const useStyles = makeStyles((theme) => ({
|
|
|
33
43
|
},
|
|
34
44
|
summaryArea: {
|
|
35
45
|
minWidth: 0,
|
|
36
|
-
margin: theme.spacing(1
|
|
46
|
+
margin: theme.spacing(1)
|
|
37
47
|
// To counteract MUI negative grid margin
|
|
38
48
|
},
|
|
39
49
|
summaryCard: {
|
|
40
50
|
flex: "0 0 auto",
|
|
51
|
+
width: "100%",
|
|
41
52
|
"& + &": {
|
|
42
53
|
marginLeft: theme.spacing(3)
|
|
43
54
|
}
|
|
@@ -68,7 +79,8 @@ const useStyles = makeStyles((theme) => ({
|
|
|
68
79
|
},
|
|
69
80
|
summaryArea: {
|
|
70
81
|
gridArea: "summary",
|
|
71
|
-
|
|
82
|
+
margin: theme.spacing(1)
|
|
83
|
+
// To counteract MUI negative grid margin
|
|
72
84
|
},
|
|
73
85
|
infoArea: {
|
|
74
86
|
gridArea: "info",
|
|
@@ -88,14 +100,12 @@ const useStyles = makeStyles((theme) => ({
|
|
|
88
100
|
"&::-webkit-scrollbar": {
|
|
89
101
|
display: "none"
|
|
90
102
|
}
|
|
103
|
+
},
|
|
104
|
+
summaryCard: {
|
|
105
|
+
width: "auto"
|
|
91
106
|
}
|
|
92
107
|
}
|
|
93
108
|
}));
|
|
94
|
-
const entityWarningContent = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
95
|
-
/* @__PURE__ */ jsx(EntitySwitch, { children: /* @__PURE__ */ jsx(EntitySwitch.Case, { if: isOrphan, children: /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(EntityOrphanWarning, {}) }) }) }),
|
|
96
|
-
/* @__PURE__ */ jsx(EntitySwitch, { children: /* @__PURE__ */ jsx(EntitySwitch.Case, { if: hasRelationWarnings, children: /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(EntityRelationWarning, {}) }) }) }),
|
|
97
|
-
/* @__PURE__ */ jsx(EntitySwitch, { children: /* @__PURE__ */ jsx(EntitySwitch.Case, { if: hasCatalogProcessingErrors, children: /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsx(EntityProcessingErrorsPanel, {}) }) }) })
|
|
98
|
-
] });
|
|
99
109
|
function DefaultEntityContentLayout(props) {
|
|
100
110
|
const { cards } = props;
|
|
101
111
|
const infoCards = cards.filter((card) => card.type === "info");
|
|
@@ -109,12 +119,23 @@ function DefaultEntityContentLayout(props) {
|
|
|
109
119
|
contentCards: !!contentCards.length
|
|
110
120
|
});
|
|
111
121
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
112
|
-
|
|
122
|
+
/* @__PURE__ */ jsxs("div", { className: classes.warningArea, children: [
|
|
123
|
+
/* @__PURE__ */ jsx(EntitySwitch, { children: /* @__PURE__ */ jsx(EntitySwitch.Case, { if: isOrphan, children: /* @__PURE__ */ jsx(EntityOrphanWarning, {}) }) }),
|
|
124
|
+
/* @__PURE__ */ jsx(EntitySwitch, { children: /* @__PURE__ */ jsx(EntitySwitch.Case, { if: hasRelationWarnings, children: /* @__PURE__ */ jsx(EntityRelationWarning, {}) }) }),
|
|
125
|
+
/* @__PURE__ */ jsx(EntitySwitch, { children: /* @__PURE__ */ jsx(EntitySwitch.Case, { if: hasCatalogProcessingErrors, children: /* @__PURE__ */ jsx(EntityProcessingErrorsPanel, {}) }) })
|
|
126
|
+
] }),
|
|
113
127
|
/* @__PURE__ */ jsxs("div", { className: classes.root, children: [
|
|
114
|
-
infoCards.length > 0 ? /* @__PURE__ */ jsx("div", { className: classes.infoArea, children: infoCards.map((card) => card.element) }) : null,
|
|
128
|
+
infoCards.length > 0 ? /* @__PURE__ */ jsx("div", { className: classes.infoArea, children: infoCards.map((card, index) => /* @__PURE__ */ jsx(Fragment$1, { children: card.element }, card.element.key ?? index)) }) : null,
|
|
115
129
|
/* @__PURE__ */ jsxs("div", { className: classes.mainContent, children: [
|
|
116
|
-
summaryCards.length > 0 ? /* @__PURE__ */ jsx("div", { className: classes.summaryArea, children: /* @__PURE__ */ jsx(HorizontalScrollGrid, { scrollStep: 400, scrollSpeed: 100, children: summaryCards.map((card) => /* @__PURE__ */ jsx(
|
|
117
|
-
|
|
130
|
+
summaryCards.length > 0 ? /* @__PURE__ */ jsx("div", { className: classes.summaryArea, children: /* @__PURE__ */ jsx(HorizontalScrollGrid, { scrollStep: 400, scrollSpeed: 100, children: summaryCards.map((card, index) => /* @__PURE__ */ jsx(
|
|
131
|
+
"div",
|
|
132
|
+
{
|
|
133
|
+
className: classes.summaryCard,
|
|
134
|
+
children: card.element
|
|
135
|
+
},
|
|
136
|
+
card.element.key ?? index
|
|
137
|
+
)) }) }) : null,
|
|
138
|
+
contentCards.length > 0 ? /* @__PURE__ */ jsx("div", { className: classes.contentArea, children: contentCards.map((card, index) => /* @__PURE__ */ jsx(Fragment$1, { children: card.element }, card.element.key ?? index)) }) : null
|
|
118
139
|
] })
|
|
119
140
|
] })
|
|
120
141
|
] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultEntityContentLayout.esm.js","sources":["../../src/alpha/DefaultEntityContentLayout.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 Grid from '@material-ui/core/Grid';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport { EntityContentLayoutProps } from '@backstage/plugin-catalog-react/alpha';\nimport { EntitySwitch } from '../components/EntitySwitch';\nimport {\n EntityOrphanWarning,\n isOrphan,\n} from '../components/EntityOrphanWarning';\nimport {\n EntityRelationWarning,\n hasRelationWarnings,\n} from '../components/EntityRelationWarning';\nimport {\n EntityProcessingErrorsPanel,\n hasCatalogProcessingErrors,\n} from '../components/EntityProcessingErrorsPanel';\nimport { HorizontalScrollGrid } from '@backstage/core-components';\n\nconst useStyles = makeStyles<\n Theme,\n { infoCards: boolean; summaryCards: boolean; contentCards: boolean }\n>(theme => ({\n root: {\n display: 'flex',\n flexFlow: 'column nowrap',\n gap: theme.spacing(3),\n },\n mainContent: {\n display: 'flex',\n flexFlow: 'column',\n gap: theme.spacing(3),\n alignItems: 'stretch',\n minWidth: 0,\n },\n infoArea: {\n display: 'flex',\n flexFlow: 'column nowrap',\n alignItems: 'flex-start',\n gap: theme.spacing(3),\n minWidth: 0,\n '& > *': {\n flexShrink: 0,\n flexGrow: 0,\n },\n },\n summaryArea: {\n minWidth: 0,\n margin: theme.spacing(1.5), // To counteract MUI negative grid margin\n },\n summaryCard: {\n flex: '0 0 auto',\n '& + &': {\n marginLeft: theme.spacing(3),\n },\n },\n contentArea: {\n display: 'flex',\n flexFlow: 'column',\n gap: theme.spacing(3),\n alignItems: 'stretch',\n minWidth: 0,\n },\n [theme.breakpoints.up('md')]: {\n root: {\n display: 'grid',\n gap: theme.spacing(3),\n gridTemplateAreas: ({ summaryCards }) => `\n \"${summaryCards ? 'summary' : 'content'} info\"\n \"content info\"\n `,\n gridTemplateColumns: ({ infoCards }) => (infoCards ? '2fr 1fr' : '1fr'),\n alignItems: 'start',\n },\n mainContent: {\n display: 'contents',\n },\n contentArea: {\n gridArea: 'content',\n },\n summaryArea: {\n gridArea: 'summary',\n marginBottom: theme.spacing(3),\n },\n infoArea: {\n gridArea: 'info',\n position: 'sticky',\n top: theme.spacing(3),\n // this is a little unfortunate, but it's required to make the info cards scrollable\n // in a fixed container of the full height when it's stuck.\n // 100% doesn't work as that's the height of the entire layout, which is what powers the card scrolling.\n maxHeight: '100vh',\n overflowY: 'auto',\n alignSelf: 'start',\n alignItems: 'stretch',\n // Hide the scrollbar for the inner info cards\n // kind of an accessibility nightmare, but we see.\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n },\n}));\n\nconst entityWarningContent = (\n <>\n <EntitySwitch>\n <EntitySwitch.Case if={isOrphan}>\n <Grid item xs={12}>\n <EntityOrphanWarning />\n </Grid>\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasRelationWarnings}>\n <Grid item xs={12}>\n <EntityRelationWarning />\n </Grid>\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasCatalogProcessingErrors}>\n <Grid item xs={12}>\n <EntityProcessingErrorsPanel />\n </Grid>\n </EntitySwitch.Case>\n </EntitySwitch>\n </>\n);\n\nexport function DefaultEntityContentLayout(props: EntityContentLayoutProps) {\n const { cards } = props;\n\n const infoCards = cards.filter(card => card.type === 'info');\n const summaryCards = cards.filter(card => card.type === 'summary');\n const contentCards = cards.filter(\n card => !card.type || card.type === 'content',\n );\n\n const classes = useStyles({\n infoCards: !!infoCards.length,\n summaryCards: !!summaryCards.length,\n contentCards: !!contentCards.length,\n });\n\n return (\n <>\n {entityWarningContent}\n <div className={classes.root}>\n {infoCards.length > 0 ? (\n <div className={classes.infoArea}>\n {infoCards.map(card => card.element)}\n </div>\n ) : null}\n <div className={classes.mainContent}>\n {summaryCards.length > 0 ? (\n <div className={classes.summaryArea}>\n <HorizontalScrollGrid scrollStep={400} scrollSpeed={100}>\n {summaryCards.map(card => (\n <div className={classes.summaryCard}>{card.element}</div>\n ))}\n </HorizontalScrollGrid>\n </div>\n ) : null}\n {contentCards.length > 0 ? (\n <div className={classes.contentArea}>\n {contentCards.map(card => card.element)}\n </div>\n ) : null}\n </div>\n </div>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DefaultEntityContentLayout.esm.js","sources":["../../src/alpha/DefaultEntityContentLayout.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 { Fragment } from 'react';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport { EntityContentLayoutProps } from '@backstage/plugin-catalog-react/alpha';\nimport { EntitySwitch } from '../components/EntitySwitch';\nimport {\n EntityOrphanWarning,\n isOrphan,\n} from '../components/EntityOrphanWarning';\nimport {\n EntityRelationWarning,\n hasRelationWarnings,\n} from '../components/EntityRelationWarning';\nimport {\n EntityProcessingErrorsPanel,\n hasCatalogProcessingErrors,\n} from '../components/EntityProcessingErrorsPanel';\nimport { HorizontalScrollGrid } from '@backstage/core-components';\n\nconst useStyles = makeStyles<\n Theme,\n { infoCards: boolean; summaryCards: boolean; contentCards: boolean }\n>(theme => ({\n root: {\n display: 'flex',\n flexFlow: 'column nowrap',\n gap: theme.spacing(3),\n },\n warningArea: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n marginBottom: theme.spacing(3),\n '&:empty': {\n marginBottom: 0,\n display: 'none',\n },\n },\n mainContent: {\n display: 'flex',\n flexFlow: 'column',\n gap: theme.spacing(3),\n alignItems: 'stretch',\n minWidth: 0,\n },\n infoArea: {\n display: 'flex',\n flexFlow: 'column nowrap',\n alignItems: 'stretch',\n gap: theme.spacing(3),\n minWidth: 0,\n '& > *': {\n flexShrink: 0,\n flexGrow: 0,\n },\n },\n summaryArea: {\n minWidth: 0,\n margin: theme.spacing(1), // To counteract MUI negative grid margin\n },\n summaryCard: {\n flex: '0 0 auto',\n width: '100%',\n '& + &': {\n marginLeft: theme.spacing(3),\n },\n },\n contentArea: {\n display: 'flex',\n flexFlow: 'column',\n gap: theme.spacing(3),\n alignItems: 'stretch',\n minWidth: 0,\n },\n [theme.breakpoints.up('md')]: {\n root: {\n display: 'grid',\n gap: theme.spacing(3),\n gridTemplateAreas: ({ summaryCards }) => `\n \"${summaryCards ? 'summary' : 'content'} info\"\n \"content info\"\n `,\n gridTemplateColumns: ({ infoCards }) => (infoCards ? '2fr 1fr' : '1fr'),\n alignItems: 'start',\n },\n mainContent: {\n display: 'contents',\n },\n contentArea: {\n gridArea: 'content',\n },\n summaryArea: {\n gridArea: 'summary',\n margin: theme.spacing(1), // To counteract MUI negative grid margin\n },\n infoArea: {\n gridArea: 'info',\n position: 'sticky',\n top: theme.spacing(3),\n // this is a little unfortunate, but it's required to make the info cards scrollable\n // in a fixed container of the full height when it's stuck.\n // 100% doesn't work as that's the height of the entire layout, which is what powers the card scrolling.\n maxHeight: '100vh',\n overflowY: 'auto',\n alignSelf: 'start',\n alignItems: 'stretch',\n // Hide the scrollbar for the inner info cards\n // kind of an accessibility nightmare, but we see.\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n summaryCard: {\n width: 'auto',\n },\n },\n}));\n\nexport function DefaultEntityContentLayout(props: EntityContentLayoutProps) {\n const { cards } = props;\n\n const infoCards = cards.filter(card => card.type === 'info');\n const summaryCards = cards.filter(card => card.type === 'summary');\n const contentCards = cards.filter(\n card => !card.type || card.type === 'content',\n );\n\n const classes = useStyles({\n infoCards: !!infoCards.length,\n summaryCards: !!summaryCards.length,\n contentCards: !!contentCards.length,\n });\n\n return (\n <>\n <div className={classes.warningArea}>\n <EntitySwitch>\n <EntitySwitch.Case if={isOrphan}>\n <EntityOrphanWarning />\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasRelationWarnings}>\n <EntityRelationWarning />\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasCatalogProcessingErrors}>\n <EntityProcessingErrorsPanel />\n </EntitySwitch.Case>\n </EntitySwitch>\n </div>\n <div className={classes.root}>\n {infoCards.length > 0 ? (\n <div className={classes.infoArea}>\n {infoCards.map((card, index) => (\n <Fragment key={card.element.key ?? index}>\n {card.element}\n </Fragment>\n ))}\n </div>\n ) : null}\n <div className={classes.mainContent}>\n {summaryCards.length > 0 ? (\n <div className={classes.summaryArea}>\n <HorizontalScrollGrid scrollStep={400} scrollSpeed={100}>\n {summaryCards.map((card, index) => (\n <div\n key={card.element.key ?? index}\n className={classes.summaryCard}\n >\n {card.element}\n </div>\n ))}\n </HorizontalScrollGrid>\n </div>\n ) : null}\n {contentCards.length > 0 ? (\n <div className={classes.contentArea}>\n {contentCards.map((card, index) => (\n <Fragment key={card.element.key ?? index}>\n {card.element}\n </Fragment>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n </>\n );\n}\n"],"names":["Fragment"],"mappings":"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"}
|
|
@@ -12,7 +12,6 @@ import { useEntity, UnregisterEntityDialog } from '@backstage/plugin-catalog-rea
|
|
|
12
12
|
import { rootRouteRef, unregisterRedirectRouteRef } from '../routes.esm.js';
|
|
13
13
|
import { catalogEntityDeletePermission } from '@backstage/plugin-catalog-common/alpha';
|
|
14
14
|
import { useEffect } from 'react';
|
|
15
|
-
import { compatWrapper } from '@backstage/core-compat-api';
|
|
16
15
|
|
|
17
16
|
const copyEntityUrlContextMenuItem = EntityContextMenuItemBlueprint.make(
|
|
18
17
|
{
|
|
@@ -78,24 +77,20 @@ const unregisterEntityContextMenuItem = EntityContextMenuItemBlueprint.make({
|
|
|
78
77
|
title: t("entityContextMenu.unregisterMenuTitle"),
|
|
79
78
|
disabled: !unregisterPermission.allowed,
|
|
80
79
|
onClick: async () => {
|
|
81
|
-
dialogApi.showModal(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
)
|
|
97
|
-
)
|
|
98
|
-
);
|
|
80
|
+
dialogApi.showModal(({ dialog }) => /* @__PURE__ */ jsx(
|
|
81
|
+
UnregisterEntityDialog,
|
|
82
|
+
{
|
|
83
|
+
open: true,
|
|
84
|
+
entity,
|
|
85
|
+
onClose: () => dialog.close(),
|
|
86
|
+
onConfirm: () => {
|
|
87
|
+
dialog.close();
|
|
88
|
+
navigate(
|
|
89
|
+
unregisterRedirectRoute ? unregisterRedirectRoute() : catalogRoute()
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
));
|
|
99
94
|
}
|
|
100
95
|
};
|
|
101
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextMenuItems.esm.js","sources":["../../src/alpha/contextMenuItems.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 EntityContextMenuItemBlueprint,\n useEntityPermission,\n} from '@backstage/plugin-catalog-react/alpha';\nimport FileCopyTwoToneIcon from '@material-ui/icons/FileCopyTwoTone';\nimport BugReportIcon from '@material-ui/icons/BugReport';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport useCopyToClipboard from 'react-use/esm/useCopyToClipboard';\nimport { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport {\n dialogApiRef,\n useTranslationRef,\n type DialogApiDialog,\n} from '@backstage/frontend-plugin-api';\nimport { catalogTranslationRef } from './translation';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport {\n UnregisterEntityDialog,\n useEntity,\n} from '@backstage/plugin-catalog-react';\nimport { rootRouteRef, unregisterRedirectRouteRef } from '../routes';\nimport { catalogEntityDeletePermission } from '@backstage/plugin-catalog-common/alpha';\nimport { useEffect } from 'react';\
|
|
1
|
+
{"version":3,"file":"contextMenuItems.esm.js","sources":["../../src/alpha/contextMenuItems.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 EntityContextMenuItemBlueprint,\n useEntityPermission,\n} from '@backstage/plugin-catalog-react/alpha';\nimport FileCopyTwoToneIcon from '@material-ui/icons/FileCopyTwoTone';\nimport BugReportIcon from '@material-ui/icons/BugReport';\nimport CancelIcon from '@material-ui/icons/Cancel';\nimport useCopyToClipboard from 'react-use/esm/useCopyToClipboard';\nimport { alertApiRef, useApi, useRouteRef } from '@backstage/core-plugin-api';\nimport {\n dialogApiRef,\n useTranslationRef,\n type DialogApiDialog,\n} from '@backstage/frontend-plugin-api';\nimport { catalogTranslationRef } from './translation';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport {\n UnregisterEntityDialog,\n useEntity,\n} from '@backstage/plugin-catalog-react';\nimport { rootRouteRef, unregisterRedirectRouteRef } from '../routes';\nimport { catalogEntityDeletePermission } from '@backstage/plugin-catalog-common/alpha';\nimport { useEffect } from 'react';\n\nexport const copyEntityUrlContextMenuItem = EntityContextMenuItemBlueprint.make(\n {\n name: 'copy-entity-url',\n params: {\n icon: <FileCopyTwoToneIcon fontSize=\"small\" />,\n useProps: () => {\n const [copyState, copyToClipboard] = useCopyToClipboard();\n const alertApi = useApi(alertApiRef);\n const { t } = useTranslationRef(catalogTranslationRef);\n\n useEffect(() => {\n if (!copyState.error && copyState.value) {\n alertApi.post({\n message: t('entityContextMenu.copiedMessage'),\n severity: 'info',\n display: 'transient',\n });\n }\n }, [copyState, alertApi, t]);\n\n return {\n title: t('entityContextMenu.copyURLMenuTitle'),\n onClick: async () => {\n copyToClipboard(window.location.toString());\n },\n };\n },\n },\n },\n);\n\nexport const inspectEntityContextMenuItem = EntityContextMenuItemBlueprint.make(\n {\n name: 'inspect-entity',\n params: {\n icon: <BugReportIcon fontSize=\"small\" />,\n useProps: () => {\n const [_, setSearchParams] = useSearchParams();\n const { t } = useTranslationRef(catalogTranslationRef);\n\n return {\n title: t('entityContextMenu.inspectMenuTitle'),\n onClick: async () => {\n setSearchParams('inspect');\n },\n };\n },\n },\n },\n);\n\nexport const unregisterEntityContextMenuItem =\n EntityContextMenuItemBlueprint.make({\n name: 'unregister-entity',\n params: {\n icon: <CancelIcon fontSize=\"small\" />,\n useProps: () => {\n const { entity } = useEntity();\n const dialogApi = useApi(dialogApiRef);\n const navigate = useNavigate();\n const catalogRoute = useRouteRef(rootRouteRef);\n\n const { t } = useTranslationRef(catalogTranslationRef);\n const unregisterRedirectRoute = useRouteRef(unregisterRedirectRouteRef);\n const unregisterPermission = useEntityPermission(\n catalogEntityDeletePermission,\n );\n\n return {\n title: t('entityContextMenu.unregisterMenuTitle'),\n disabled: !unregisterPermission.allowed,\n onClick: async () => {\n dialogApi.showModal(({ dialog }: { dialog: DialogApiDialog }) => (\n <UnregisterEntityDialog\n open\n entity={entity}\n onClose={() => dialog.close()}\n onConfirm={() => {\n dialog.close();\n navigate(\n unregisterRedirectRoute\n ? unregisterRedirectRoute()\n : catalogRoute(),\n );\n }}\n />\n ));\n },\n };\n },\n },\n });\n\nexport default [\n unregisterEntityContextMenuItem,\n inspectEntityContextMenuItem,\n copyEntityUrlContextMenuItem,\n];\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { EntityCardBlueprint, EntityIconLinkBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
3
|
-
import { compatWrapper } from '@backstage/core-compat-api';
|
|
4
3
|
import { createExtensionInput } from '@backstage/frontend-plugin-api';
|
|
5
4
|
import { HeaderIconLinkRow } from '@backstage/core-components';
|
|
6
5
|
import { useEntity } from '@backstage/plugin-catalog-react';
|
|
@@ -40,9 +39,7 @@ const catalogAboutEntityCard = EntityCardBlueprint.makeWithOverrides({
|
|
|
40
39
|
},
|
|
41
40
|
async loader() {
|
|
42
41
|
const { InternalAboutCard } = await import('../components/AboutCard/AboutCard.esm.js');
|
|
43
|
-
return
|
|
44
|
-
/* @__PURE__ */ jsx(InternalAboutCard, { variant: "gridItem", subheader: /* @__PURE__ */ jsx(Subheader, {}) })
|
|
45
|
-
);
|
|
42
|
+
return /* @__PURE__ */ jsx(InternalAboutCard, { variant: "gridItem", subheader: /* @__PURE__ */ jsx(Subheader, {}) });
|
|
46
43
|
}
|
|
47
44
|
});
|
|
48
45
|
}
|
|
@@ -52,9 +49,7 @@ const catalogLinksEntityCard = EntityCardBlueprint.make({
|
|
|
52
49
|
params: {
|
|
53
50
|
type: "info",
|
|
54
51
|
filter: { "metadata.links": { $exists: true } },
|
|
55
|
-
loader: async () => import('../components/EntityLinksCard/index.esm.js').then(
|
|
56
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityLinksCard, { variant: "gridItem" }))
|
|
57
|
-
)
|
|
52
|
+
loader: async () => import('../components/EntityLinksCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.EntityLinksCard, { variant: "gridItem" }))
|
|
58
53
|
}
|
|
59
54
|
});
|
|
60
55
|
const catalogLabelsEntityCard = EntityCardBlueprint.make({
|
|
@@ -62,72 +57,56 @@ const catalogLabelsEntityCard = EntityCardBlueprint.make({
|
|
|
62
57
|
params: {
|
|
63
58
|
type: "info",
|
|
64
59
|
filter: { "metadata.labels": { $exists: true } },
|
|
65
|
-
loader: async () => import('../components/EntityLabelsCard/index.esm.js').then(
|
|
66
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityLabelsCard, { variant: "gridItem" }))
|
|
67
|
-
)
|
|
60
|
+
loader: async () => import('../components/EntityLabelsCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.EntityLabelsCard, { variant: "gridItem" }))
|
|
68
61
|
}
|
|
69
62
|
});
|
|
70
63
|
const catalogDependsOnComponentsEntityCard = EntityCardBlueprint.make({
|
|
71
64
|
name: "depends-on-components",
|
|
72
65
|
params: {
|
|
73
66
|
filter: { kind: "component" },
|
|
74
|
-
loader: async () => import('../components/DependsOnComponentsCard/index.esm.js').then(
|
|
75
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.DependsOnComponentsCard, { variant: "gridItem" }))
|
|
76
|
-
)
|
|
67
|
+
loader: async () => import('../components/DependsOnComponentsCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.DependsOnComponentsCard, { variant: "gridItem" }))
|
|
77
68
|
}
|
|
78
69
|
});
|
|
79
70
|
const catalogDependsOnResourcesEntityCard = EntityCardBlueprint.make({
|
|
80
71
|
name: "depends-on-resources",
|
|
81
72
|
params: {
|
|
82
73
|
filter: { kind: "component" },
|
|
83
|
-
loader: async () => import('../components/DependsOnResourcesCard/index.esm.js').then(
|
|
84
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.DependsOnResourcesCard, { variant: "gridItem" }))
|
|
85
|
-
)
|
|
74
|
+
loader: async () => import('../components/DependsOnResourcesCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.DependsOnResourcesCard, { variant: "gridItem" }))
|
|
86
75
|
}
|
|
87
76
|
});
|
|
88
77
|
const catalogHasComponentsEntityCard = EntityCardBlueprint.make({
|
|
89
78
|
name: "has-components",
|
|
90
79
|
params: {
|
|
91
80
|
filter: { kind: "system" },
|
|
92
|
-
loader: async () => import('../components/HasComponentsCard/index.esm.js').then(
|
|
93
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.HasComponentsCard, { variant: "gridItem" }))
|
|
94
|
-
)
|
|
81
|
+
loader: async () => import('../components/HasComponentsCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.HasComponentsCard, { variant: "gridItem" }))
|
|
95
82
|
}
|
|
96
83
|
});
|
|
97
84
|
const catalogHasResourcesEntityCard = EntityCardBlueprint.make({
|
|
98
85
|
name: "has-resources",
|
|
99
86
|
params: {
|
|
100
87
|
filter: { kind: "system" },
|
|
101
|
-
loader: async () => import('../components/HasResourcesCard/index.esm.js').then(
|
|
102
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.HasResourcesCard, { variant: "gridItem" }))
|
|
103
|
-
)
|
|
88
|
+
loader: async () => import('../components/HasResourcesCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.HasResourcesCard, { variant: "gridItem" }))
|
|
104
89
|
}
|
|
105
90
|
});
|
|
106
91
|
const catalogHasSubcomponentsEntityCard = EntityCardBlueprint.make({
|
|
107
92
|
name: "has-subcomponents",
|
|
108
93
|
params: {
|
|
109
94
|
filter: { kind: "component" },
|
|
110
|
-
loader: async () => import('../components/HasSubcomponentsCard/index.esm.js').then(
|
|
111
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.HasSubcomponentsCard, { variant: "gridItem" }))
|
|
112
|
-
)
|
|
95
|
+
loader: async () => import('../components/HasSubcomponentsCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.HasSubcomponentsCard, { variant: "gridItem" }))
|
|
113
96
|
}
|
|
114
97
|
});
|
|
115
98
|
const catalogHasSubdomainsEntityCard = EntityCardBlueprint.make({
|
|
116
99
|
name: "has-subdomains",
|
|
117
100
|
params: {
|
|
118
101
|
filter: { kind: "domain" },
|
|
119
|
-
loader: async () => import('../components/HasSubdomainsCard/index.esm.js').then(
|
|
120
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.HasSubdomainsCard, { variant: "gridItem" }))
|
|
121
|
-
)
|
|
102
|
+
loader: async () => import('../components/HasSubdomainsCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.HasSubdomainsCard, { variant: "gridItem" }))
|
|
122
103
|
}
|
|
123
104
|
});
|
|
124
105
|
const catalogHasSystemsEntityCard = EntityCardBlueprint.make({
|
|
125
106
|
name: "has-systems",
|
|
126
107
|
params: {
|
|
127
108
|
filter: { kind: "domain" },
|
|
128
|
-
loader: async () => import('../components/HasSystemsCard/index.esm.js').then(
|
|
129
|
-
(m) => compatWrapper(/* @__PURE__ */ jsx(m.HasSystemsCard, { variant: "gridItem" }))
|
|
130
|
-
)
|
|
109
|
+
loader: async () => import('../components/HasSystemsCard/index.esm.js').then((m) => /* @__PURE__ */ jsx(m.HasSystemsCard, { variant: "gridItem" }))
|
|
131
110
|
}
|
|
132
111
|
});
|
|
133
112
|
var entityCards = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entityCards.esm.js","sources":["../../src/alpha/entityCards.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 EntityIconLinkBlueprint,\n EntityCardBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { compatWrapper } from '@backstage/core-compat-api';\nimport { createExtensionInput } from '@backstage/frontend-plugin-api';\nimport {\n HeaderIconLinkRow,\n IconLinkVerticalProps,\n} from '@backstage/core-components';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { buildFilterFn } from './filter/FilterWrapper';\n\nexport const catalogAboutEntityCard = EntityCardBlueprint.makeWithOverrides({\n name: 'about',\n inputs: {\n iconLinks: createExtensionInput([\n EntityIconLinkBlueprint.dataRefs.filterFunction.optional(),\n EntityIconLinkBlueprint.dataRefs.filterExpression.optional(),\n EntityIconLinkBlueprint.dataRefs.useProps,\n ]),\n },\n factory(originalFactory, { inputs }) {\n function Subheader() {\n const { entity } = useEntity();\n // The \"useProps\" functions may be calling other hooks, so we need to\n // call them in a component function to avoid breaking the rules of hooks.\n const links = inputs.iconLinks.reduce((rest, iconLink) => {\n const props = iconLink.get(EntityIconLinkBlueprint.dataRefs.useProps)();\n const filter = buildFilterFn(\n iconLink.get(EntityIconLinkBlueprint.dataRefs.filterFunction),\n iconLink.get(EntityIconLinkBlueprint.dataRefs.filterExpression),\n );\n if (filter(entity)) {\n return [...rest, props];\n }\n return rest;\n }, new Array<IconLinkVerticalProps>());\n return links.length ? <HeaderIconLinkRow links={links} /> : null;\n }\n return originalFactory({\n type: 'info',\n filter: {\n $not: {\n kind: { $in: ['user', 'group'] },\n },\n },\n async loader() {\n const { InternalAboutCard } = await import(\n '../components/AboutCard/AboutCard'\n );\n return compatWrapper(\n <InternalAboutCard variant=\"gridItem\" subheader={<Subheader />} />,\n );\n },\n });\n },\n});\n\nexport const catalogLinksEntityCard = EntityCardBlueprint.make({\n name: 'links',\n params: {\n type: 'info',\n filter: { 'metadata.links': { $exists: true } },\n loader: async () =>\n import('../components/EntityLinksCard').then(m =>\n compatWrapper(<m.EntityLinksCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogLabelsEntityCard = EntityCardBlueprint.make({\n name: 'labels',\n params: {\n type: 'info',\n filter: { 'metadata.labels': { $exists: true } },\n loader: async () =>\n import('../components/EntityLabelsCard').then(m =>\n compatWrapper(<m.EntityLabelsCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogDependsOnComponentsEntityCard = EntityCardBlueprint.make({\n name: 'depends-on-components',\n params: {\n filter: { kind: 'component' },\n loader: async () =>\n import('../components/DependsOnComponentsCard').then(m =>\n compatWrapper(<m.DependsOnComponentsCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogDependsOnResourcesEntityCard = EntityCardBlueprint.make({\n name: 'depends-on-resources',\n params: {\n filter: { kind: 'component' },\n loader: async () =>\n import('../components/DependsOnResourcesCard').then(m =>\n compatWrapper(<m.DependsOnResourcesCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogHasComponentsEntityCard = EntityCardBlueprint.make({\n name: 'has-components',\n params: {\n filter: { kind: 'system' },\n loader: async () =>\n import('../components/HasComponentsCard').then(m =>\n compatWrapper(<m.HasComponentsCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogHasResourcesEntityCard = EntityCardBlueprint.make({\n name: 'has-resources',\n params: {\n filter: { kind: 'system' },\n loader: async () =>\n import('../components/HasResourcesCard').then(m =>\n compatWrapper(<m.HasResourcesCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogHasSubcomponentsEntityCard = EntityCardBlueprint.make({\n name: 'has-subcomponents',\n params: {\n filter: { kind: 'component' },\n loader: async () =>\n import('../components/HasSubcomponentsCard').then(m =>\n compatWrapper(<m.HasSubcomponentsCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogHasSubdomainsEntityCard = EntityCardBlueprint.make({\n name: 'has-subdomains',\n params: {\n filter: { kind: 'domain' },\n loader: async () =>\n import('../components/HasSubdomainsCard').then(m =>\n compatWrapper(<m.HasSubdomainsCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport const catalogHasSystemsEntityCard = EntityCardBlueprint.make({\n name: 'has-systems',\n params: {\n filter: { kind: 'domain' },\n loader: async () =>\n import('../components/HasSystemsCard').then(m =>\n compatWrapper(<m.HasSystemsCard variant=\"gridItem\" />),\n ),\n },\n});\n\nexport default [\n catalogAboutEntityCard,\n catalogLinksEntityCard,\n catalogLabelsEntityCard,\n catalogDependsOnComponentsEntityCard,\n catalogDependsOnResourcesEntityCard,\n catalogHasComponentsEntityCard,\n catalogHasResourcesEntityCard,\n catalogHasSubcomponentsEntityCard,\n catalogHasSubdomainsEntityCard,\n catalogHasSystemsEntityCard,\n];\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"entityCards.esm.js","sources":["../../src/alpha/entityCards.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 EntityIconLinkBlueprint,\n EntityCardBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { createExtensionInput } from '@backstage/frontend-plugin-api';\nimport {\n HeaderIconLinkRow,\n IconLinkVerticalProps,\n} from '@backstage/core-components';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { buildFilterFn } from './filter/FilterWrapper';\n\nexport const catalogAboutEntityCard = EntityCardBlueprint.makeWithOverrides({\n name: 'about',\n inputs: {\n iconLinks: createExtensionInput([\n EntityIconLinkBlueprint.dataRefs.filterFunction.optional(),\n EntityIconLinkBlueprint.dataRefs.filterExpression.optional(),\n EntityIconLinkBlueprint.dataRefs.useProps,\n ]),\n },\n factory(originalFactory, { inputs }) {\n function Subheader() {\n const { entity } = useEntity();\n // The \"useProps\" functions may be calling other hooks, so we need to\n // call them in a component function to avoid breaking the rules of hooks.\n const links = inputs.iconLinks.reduce((rest, iconLink) => {\n const props = iconLink.get(EntityIconLinkBlueprint.dataRefs.useProps)();\n const filter = buildFilterFn(\n iconLink.get(EntityIconLinkBlueprint.dataRefs.filterFunction),\n iconLink.get(EntityIconLinkBlueprint.dataRefs.filterExpression),\n );\n if (filter(entity)) {\n return [...rest, props];\n }\n return rest;\n }, new Array<IconLinkVerticalProps>());\n return links.length ? <HeaderIconLinkRow links={links} /> : null;\n }\n return originalFactory({\n type: 'info',\n filter: {\n $not: {\n kind: { $in: ['user', 'group'] },\n },\n },\n async loader() {\n const { InternalAboutCard } = await import(\n '../components/AboutCard/AboutCard'\n );\n return (\n <InternalAboutCard variant=\"gridItem\" subheader={<Subheader />} />\n );\n },\n });\n },\n});\n\nexport const catalogLinksEntityCard = EntityCardBlueprint.make({\n name: 'links',\n params: {\n type: 'info',\n filter: { 'metadata.links': { $exists: true } },\n loader: async () =>\n import('../components/EntityLinksCard').then(m => (\n <m.EntityLinksCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogLabelsEntityCard = EntityCardBlueprint.make({\n name: 'labels',\n params: {\n type: 'info',\n filter: { 'metadata.labels': { $exists: true } },\n loader: async () =>\n import('../components/EntityLabelsCard').then(m => (\n <m.EntityLabelsCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogDependsOnComponentsEntityCard = EntityCardBlueprint.make({\n name: 'depends-on-components',\n params: {\n filter: { kind: 'component' },\n loader: async () =>\n import('../components/DependsOnComponentsCard').then(m => (\n <m.DependsOnComponentsCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogDependsOnResourcesEntityCard = EntityCardBlueprint.make({\n name: 'depends-on-resources',\n params: {\n filter: { kind: 'component' },\n loader: async () =>\n import('../components/DependsOnResourcesCard').then(m => (\n <m.DependsOnResourcesCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogHasComponentsEntityCard = EntityCardBlueprint.make({\n name: 'has-components',\n params: {\n filter: { kind: 'system' },\n loader: async () =>\n import('../components/HasComponentsCard').then(m => (\n <m.HasComponentsCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogHasResourcesEntityCard = EntityCardBlueprint.make({\n name: 'has-resources',\n params: {\n filter: { kind: 'system' },\n loader: async () =>\n import('../components/HasResourcesCard').then(m => (\n <m.HasResourcesCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogHasSubcomponentsEntityCard = EntityCardBlueprint.make({\n name: 'has-subcomponents',\n params: {\n filter: { kind: 'component' },\n loader: async () =>\n import('../components/HasSubcomponentsCard').then(m => (\n <m.HasSubcomponentsCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogHasSubdomainsEntityCard = EntityCardBlueprint.make({\n name: 'has-subdomains',\n params: {\n filter: { kind: 'domain' },\n loader: async () =>\n import('../components/HasSubdomainsCard').then(m => (\n <m.HasSubdomainsCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport const catalogHasSystemsEntityCard = EntityCardBlueprint.make({\n name: 'has-systems',\n params: {\n filter: { kind: 'domain' },\n loader: async () =>\n import('../components/HasSystemsCard').then(m => (\n <m.HasSystemsCard variant=\"gridItem\" />\n )),\n },\n});\n\nexport default [\n catalogAboutEntityCard,\n catalogLinksEntityCard,\n catalogLabelsEntityCard,\n catalogDependsOnComponentsEntityCard,\n catalogDependsOnResourcesEntityCard,\n catalogHasComponentsEntityCard,\n catalogHasResourcesEntityCard,\n catalogHasSubcomponentsEntityCard,\n catalogHasSubdomainsEntityCard,\n catalogHasSystemsEntityCard,\n];\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import HomeIcon from '@material-ui/icons/Home';
|
|
2
|
-
import { convertLegacyRouteRef } from '@backstage/core-compat-api';
|
|
3
2
|
import { NavItemBlueprint } from '@backstage/frontend-plugin-api';
|
|
4
3
|
import { rootRouteRef } from '../routes.esm.js';
|
|
5
4
|
|
|
6
5
|
const catalogNavItem = NavItemBlueprint.make({
|
|
7
6
|
params: {
|
|
8
|
-
routeRef:
|
|
7
|
+
routeRef: rootRouteRef,
|
|
9
8
|
title: "Catalog",
|
|
10
9
|
icon: HomeIcon
|
|
11
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navItems.esm.js","sources":["../../src/alpha/navItems.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 HomeIcon from '@material-ui/icons/Home';\nimport {
|
|
1
|
+
{"version":3,"file":"navItems.esm.js","sources":["../../src/alpha/navItems.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 HomeIcon from '@material-ui/icons/Home';\nimport { NavItemBlueprint } from '@backstage/frontend-plugin-api';\nimport { rootRouteRef } from '../routes';\n\nexport const catalogNavItem = NavItemBlueprint.make({\n params: {\n routeRef: rootRouteRef,\n title: 'Catalog',\n icon: HomeIcon,\n },\n});\n\nexport default [catalogNavItem];\n"],"names":[],"mappings":";;;;AAoBO,MAAM,cAAA,GAAiB,iBAAiB,IAAA,CAAK;AAAA,EAClD,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,YAAA;AAAA,IACV,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM;AAAA;AAEV,CAAC;AAED,eAAe,CAAC,cAAc,CAAA;;;;"}
|
package/dist/alpha/pages.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { convertLegacyRouteRef
|
|
2
|
+
import { convertLegacyRouteRef } from '@backstage/core-compat-api';
|
|
3
3
|
import { PageBlueprint, createExtensionInput, coreExtensionData } from '@backstage/frontend-plugin-api';
|
|
4
4
|
import { entityRouteRef, AsyncEntityProvider } from '@backstage/plugin-catalog-react';
|
|
5
5
|
import { EntityContextMenuItemBlueprint, EntityHeaderBlueprint, defaultEntityContentGroups, EntityContentBlueprint } from '@backstage/plugin-catalog-react/alpha';
|
|
@@ -26,20 +26,18 @@ const catalogPage = PageBlueprint.makeWithOverrides({
|
|
|
26
26
|
factory(originalFactory, { inputs, config }) {
|
|
27
27
|
return originalFactory({
|
|
28
28
|
path: "/catalog",
|
|
29
|
-
routeRef:
|
|
29
|
+
routeRef: rootRouteRef,
|
|
30
30
|
loader: async () => {
|
|
31
31
|
const { BaseCatalogPage } = await import('../components/CatalogPage/index.esm.js');
|
|
32
32
|
const filters = inputs.filters.map(
|
|
33
33
|
(filter) => filter.get(coreExtensionData.reactElement)
|
|
34
34
|
);
|
|
35
|
-
return
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
)
|
|
35
|
+
return /* @__PURE__ */ jsx(
|
|
36
|
+
BaseCatalogPage,
|
|
37
|
+
{
|
|
38
|
+
filters: /* @__PURE__ */ jsx(Fragment, { children: filters }),
|
|
39
|
+
pagination: config.pagination
|
|
40
|
+
}
|
|
43
41
|
);
|
|
44
42
|
}
|
|
45
43
|
});
|
|
@@ -74,7 +72,14 @@ const catalogEntityPage = PageBlueprint.makeWithOverrides({
|
|
|
74
72
|
factory(originalFactory, { config, inputs }) {
|
|
75
73
|
return originalFactory({
|
|
76
74
|
path: "/catalog/:namespace/:kind/:name",
|
|
75
|
+
// NOTE: The `convertLegacyRouteRef` call here ensures that this route ref
|
|
76
|
+
// is mutated to support the new frontend system. Removing this conversion
|
|
77
|
+
// is a potentially breaking change since this is a singleton and the
|
|
78
|
+
// route refs from `core-plugin-api` used to not support the new format.
|
|
79
|
+
// This shouldn't be removed until we completely deprecate the
|
|
80
|
+
// `core-compat-api` package.
|
|
77
81
|
routeRef: convertLegacyRouteRef(entityRouteRef),
|
|
82
|
+
// READ THE ABOVE
|
|
78
83
|
loader: async () => {
|
|
79
84
|
const { EntityLayout } = await import('./components/EntityLayout/index.esm.js');
|
|
80
85
|
const menuItems = inputs.contextMenuItems.map((item) => ({
|
|
@@ -154,7 +159,7 @@ const catalogEntityPage = PageBlueprint.makeWithOverrides({
|
|
|
154
159
|
}
|
|
155
160
|
) });
|
|
156
161
|
};
|
|
157
|
-
return
|
|
162
|
+
return /* @__PURE__ */ jsx(Component, {});
|
|
158
163
|
}
|
|
159
164
|
});
|
|
160
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.esm.js","sources":["../../src/alpha/pages.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 convertLegacyRouteRef,\n} from '@backstage/core-compat-api';\nimport {\n coreExtensionData,\n createExtensionInput,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n AsyncEntityProvider,\n entityRouteRef,\n} from '@backstage/plugin-catalog-react';\nimport {\n EntityHeaderBlueprint,\n EntityContentBlueprint,\n defaultEntityContentGroups,\n EntityContextMenuItemBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { rootRouteRef } from '../routes';\nimport { useEntityFromUrl } from '../components/CatalogEntityPage/useEntityFromUrl';\nimport { buildFilterFn } from './filter/FilterWrapper';\n\nexport const catalogPage = PageBlueprint.makeWithOverrides({\n inputs: {\n filters: createExtensionInput([coreExtensionData.reactElement]),\n },\n config: {\n schema: {\n pagination: z =>\n z\n .union([\n z.boolean(),\n z.object({\n mode: z.enum(['cursor', 'offset']),\n limit: z.number().optional(),\n offset: z.number().optional(),\n }),\n ])\n .default(true),\n },\n },\n factory(originalFactory, { inputs, config }) {\n return originalFactory({\n path: '/catalog',\n routeRef: convertLegacyRouteRef(rootRouteRef),\n loader: async () => {\n const { BaseCatalogPage } = await import('../components/CatalogPage');\n const filters = inputs.filters.map(filter =>\n filter.get(coreExtensionData.reactElement),\n );\n return compatWrapper(\n <BaseCatalogPage\n filters={<>{filters}</>}\n pagination={config.pagination}\n />,\n );\n },\n });\n },\n});\n\nexport const catalogEntityPage = PageBlueprint.makeWithOverrides({\n name: 'entity',\n inputs: {\n headers: createExtensionInput([\n EntityHeaderBlueprint.dataRefs.element.optional(),\n EntityHeaderBlueprint.dataRefs.filterFunction.optional(),\n ]),\n contents: createExtensionInput([\n coreExtensionData.reactElement,\n coreExtensionData.routePath,\n coreExtensionData.routeRef.optional(),\n EntityContentBlueprint.dataRefs.title,\n EntityContentBlueprint.dataRefs.filterFunction.optional(),\n EntityContentBlueprint.dataRefs.filterExpression.optional(),\n EntityContentBlueprint.dataRefs.group.optional(),\n ]),\n contextMenuItems: createExtensionInput([\n coreExtensionData.reactElement,\n EntityContextMenuItemBlueprint.dataRefs.filterFunction.optional(),\n ]),\n },\n config: {\n schema: {\n groups: z =>\n z\n .array(z.record(z.string(), z.object({ title: z.string() })))\n .optional(),\n },\n },\n factory(originalFactory, { config, inputs }) {\n return originalFactory({\n path: '/catalog/:namespace/:kind/:name',\n routeRef: convertLegacyRouteRef(entityRouteRef),\n loader: async () => {\n const { EntityLayout } = await import('./components/EntityLayout');\n\n const menuItems = inputs.contextMenuItems.map(item => ({\n element: item.get(coreExtensionData.reactElement),\n filter:\n item.get(EntityContextMenuItemBlueprint.dataRefs.filterFunction) ??\n (() => true),\n }));\n\n type Groups = Record<\n string,\n { title: string; items: Array<(typeof inputs.contents)[0]> }\n >;\n\n // Get available headers, sorted by if they have a filter function or not.\n // TODO(blam): we should really have priority or some specificity here which can be used to sort the headers.\n // That can be done with embedding the priority in the dataRef alongside the filter function.\n const headers = inputs.headers\n .map(header => ({\n element: header.get(EntityHeaderBlueprint.dataRefs.element),\n filter: header.get(EntityHeaderBlueprint.dataRefs.filterFunction),\n }))\n .sort((a, b) => {\n if (a.filter && !b.filter) return -1;\n if (!a.filter && b.filter) return 1;\n return 0;\n });\n\n let groups = Object.entries(defaultEntityContentGroups).reduce<Groups>(\n (rest, group) => {\n const [groupId, groupValue] = group;\n return {\n ...rest,\n [groupId]: { title: groupValue, items: [] },\n };\n },\n {},\n );\n\n // config groups override default groups\n if (config.groups) {\n groups = config.groups.reduce<Groups>((rest, group) => {\n const [groupId, groupValue] = Object.entries(group)[0];\n return {\n ...rest,\n [groupId]: { title: groupValue.title, items: [] },\n };\n }, {});\n }\n\n for (const output of inputs.contents) {\n const itemId = output.node.spec.id;\n const itemTitle = output.get(EntityContentBlueprint.dataRefs.title);\n const itemGroup = output.get(EntityContentBlueprint.dataRefs.group);\n const group = itemGroup && groups[itemGroup];\n if (!group) {\n groups[itemId] = { title: itemTitle, items: [output] };\n continue;\n }\n group.items.push(output);\n }\n\n const Component = () => {\n const entityFromUrl = useEntityFromUrl();\n const { entity } = entityFromUrl;\n const filteredMenuItems = entity\n ? menuItems.filter(i => i.filter(entity)).map(i => i.element)\n : [];\n\n const header = headers.find(\n h => !h.filter || h.filter(entity!),\n )?.element;\n\n return (\n <AsyncEntityProvider {...entityFromUrl}>\n <EntityLayout\n header={header}\n contextMenuItems={filteredMenuItems}\n >\n {Object.values(groups).flatMap(({ title, items }) =>\n items.map(output => (\n <EntityLayout.Route\n group={title}\n key={output.get(coreExtensionData.routePath)}\n path={output.get(coreExtensionData.routePath)}\n title={output.get(EntityContentBlueprint.dataRefs.title)}\n if={buildFilterFn(\n output.get(\n EntityContentBlueprint.dataRefs.filterFunction,\n ),\n output.get(\n EntityContentBlueprint.dataRefs.filterExpression,\n ),\n )}\n >\n {output.get(coreExtensionData.reactElement)}\n </EntityLayout.Route>\n )),\n )}\n </EntityLayout>\n </AsyncEntityProvider>\n );\n };\n\n return compatWrapper(<Component />);\n },\n });\n },\n});\n\nexport default [catalogPage, catalogEntityPage];\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pages.esm.js","sources":["../../src/alpha/pages.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 { convertLegacyRouteRef } from '@backstage/core-compat-api';\nimport {\n coreExtensionData,\n createExtensionInput,\n PageBlueprint,\n} from '@backstage/frontend-plugin-api';\nimport {\n AsyncEntityProvider,\n entityRouteRef,\n} from '@backstage/plugin-catalog-react';\nimport {\n EntityHeaderBlueprint,\n EntityContentBlueprint,\n defaultEntityContentGroups,\n EntityContextMenuItemBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport { rootRouteRef } from '../routes';\nimport { useEntityFromUrl } from '../components/CatalogEntityPage/useEntityFromUrl';\nimport { buildFilterFn } from './filter/FilterWrapper';\n\nexport const catalogPage = PageBlueprint.makeWithOverrides({\n inputs: {\n filters: createExtensionInput([coreExtensionData.reactElement]),\n },\n config: {\n schema: {\n pagination: z =>\n z\n .union([\n z.boolean(),\n z.object({\n mode: z.enum(['cursor', 'offset']),\n limit: z.number().optional(),\n offset: z.number().optional(),\n }),\n ])\n .default(true),\n },\n },\n factory(originalFactory, { inputs, config }) {\n return originalFactory({\n path: '/catalog',\n routeRef: rootRouteRef,\n loader: async () => {\n const { BaseCatalogPage } = await import('../components/CatalogPage');\n const filters = inputs.filters.map(filter =>\n filter.get(coreExtensionData.reactElement),\n );\n return (\n <BaseCatalogPage\n filters={<>{filters}</>}\n pagination={config.pagination}\n />\n );\n },\n });\n },\n});\n\nexport const catalogEntityPage = PageBlueprint.makeWithOverrides({\n name: 'entity',\n inputs: {\n headers: createExtensionInput([\n EntityHeaderBlueprint.dataRefs.element.optional(),\n EntityHeaderBlueprint.dataRefs.filterFunction.optional(),\n ]),\n contents: createExtensionInput([\n coreExtensionData.reactElement,\n coreExtensionData.routePath,\n coreExtensionData.routeRef.optional(),\n EntityContentBlueprint.dataRefs.title,\n EntityContentBlueprint.dataRefs.filterFunction.optional(),\n EntityContentBlueprint.dataRefs.filterExpression.optional(),\n EntityContentBlueprint.dataRefs.group.optional(),\n ]),\n contextMenuItems: createExtensionInput([\n coreExtensionData.reactElement,\n EntityContextMenuItemBlueprint.dataRefs.filterFunction.optional(),\n ]),\n },\n config: {\n schema: {\n groups: z =>\n z\n .array(z.record(z.string(), z.object({ title: z.string() })))\n .optional(),\n },\n },\n factory(originalFactory, { config, inputs }) {\n return originalFactory({\n path: '/catalog/:namespace/:kind/:name',\n // NOTE: The `convertLegacyRouteRef` call here ensures that this route ref\n // is mutated to support the new frontend system. Removing this conversion\n // is a potentially breaking change since this is a singleton and the\n // route refs from `core-plugin-api` used to not support the new format.\n // This shouldn't be removed until we completely deprecate the\n // `core-compat-api` package.\n routeRef: convertLegacyRouteRef(entityRouteRef), // READ THE ABOVE\n loader: async () => {\n const { EntityLayout } = await import('./components/EntityLayout');\n\n const menuItems = inputs.contextMenuItems.map(item => ({\n element: item.get(coreExtensionData.reactElement),\n filter:\n item.get(EntityContextMenuItemBlueprint.dataRefs.filterFunction) ??\n (() => true),\n }));\n\n type Groups = Record<\n string,\n { title: string; items: Array<(typeof inputs.contents)[0]> }\n >;\n\n // Get available headers, sorted by if they have a filter function or not.\n // TODO(blam): we should really have priority or some specificity here which can be used to sort the headers.\n // That can be done with embedding the priority in the dataRef alongside the filter function.\n const headers = inputs.headers\n .map(header => ({\n element: header.get(EntityHeaderBlueprint.dataRefs.element),\n filter: header.get(EntityHeaderBlueprint.dataRefs.filterFunction),\n }))\n .sort((a, b) => {\n if (a.filter && !b.filter) return -1;\n if (!a.filter && b.filter) return 1;\n return 0;\n });\n\n let groups = Object.entries(defaultEntityContentGroups).reduce<Groups>(\n (rest, group) => {\n const [groupId, groupValue] = group;\n return {\n ...rest,\n [groupId]: { title: groupValue, items: [] },\n };\n },\n {},\n );\n\n // config groups override default groups\n if (config.groups) {\n groups = config.groups.reduce<Groups>((rest, group) => {\n const [groupId, groupValue] = Object.entries(group)[0];\n return {\n ...rest,\n [groupId]: { title: groupValue.title, items: [] },\n };\n }, {});\n }\n\n for (const output of inputs.contents) {\n const itemId = output.node.spec.id;\n const itemTitle = output.get(EntityContentBlueprint.dataRefs.title);\n const itemGroup = output.get(EntityContentBlueprint.dataRefs.group);\n const group = itemGroup && groups[itemGroup];\n if (!group) {\n groups[itemId] = { title: itemTitle, items: [output] };\n continue;\n }\n group.items.push(output);\n }\n\n const Component = () => {\n const entityFromUrl = useEntityFromUrl();\n const { entity } = entityFromUrl;\n const filteredMenuItems = entity\n ? menuItems.filter(i => i.filter(entity)).map(i => i.element)\n : [];\n\n const header = headers.find(\n h => !h.filter || h.filter(entity!),\n )?.element;\n\n return (\n <AsyncEntityProvider {...entityFromUrl}>\n <EntityLayout\n header={header}\n contextMenuItems={filteredMenuItems}\n >\n {Object.values(groups).flatMap(({ title, items }) =>\n items.map(output => (\n <EntityLayout.Route\n group={title}\n key={output.get(coreExtensionData.routePath)}\n path={output.get(coreExtensionData.routePath)}\n title={output.get(EntityContentBlueprint.dataRefs.title)}\n if={buildFilterFn(\n output.get(\n EntityContentBlueprint.dataRefs.filterFunction,\n ),\n output.get(\n EntityContentBlueprint.dataRefs.filterExpression,\n ),\n )}\n >\n {output.get(coreExtensionData.reactElement)}\n </EntityLayout.Route>\n )),\n )}\n </EntityLayout>\n </AsyncEntityProvider>\n );\n };\n\n return <Component />;\n },\n });\n },\n});\n\nexport default [catalogPage, catalogEntityPage];\n"],"names":[],"mappings":"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"}
|
package/dist/alpha/plugin.esm.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { convertLegacyRouteRefs } from '@backstage/core-compat-api';
|
|
2
1
|
import { createFrontendPlugin } from '@backstage/frontend-plugin-api';
|
|
3
2
|
import { entityRouteRef } from '@backstage/plugin-catalog-react';
|
|
4
3
|
import { unregisterRedirectRouteRef, createFromTemplateRouteRef, createComponentRouteRef, viewTechDocRouteRef, rootRouteRef } from '../routes.esm.js';
|
|
@@ -15,16 +14,16 @@ import contextMenuItems from './contextMenuItems.esm.js';
|
|
|
15
14
|
var plugin = createFrontendPlugin({
|
|
16
15
|
pluginId: "catalog",
|
|
17
16
|
info: { packageJson: () => import('../package.json.esm.js') },
|
|
18
|
-
routes:
|
|
17
|
+
routes: {
|
|
19
18
|
catalogIndex: rootRouteRef,
|
|
20
19
|
catalogEntity: entityRouteRef
|
|
21
|
-
}
|
|
22
|
-
externalRoutes:
|
|
20
|
+
},
|
|
21
|
+
externalRoutes: {
|
|
23
22
|
viewTechDoc: viewTechDocRouteRef,
|
|
24
23
|
createComponent: createComponentRouteRef,
|
|
25
24
|
createFromTemplate: createFromTemplateRouteRef,
|
|
26
25
|
unregisterRedirect: unregisterRedirectRouteRef
|
|
27
|
-
}
|
|
26
|
+
},
|
|
28
27
|
extensions: [
|
|
29
28
|
...apis,
|
|
30
29
|
...pages,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.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 {
|
|
1
|
+
{"version":3,"file":"plugin.esm.js","sources":["../../src/alpha/plugin.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 { createFrontendPlugin } from '@backstage/frontend-plugin-api';\n\nimport { entityRouteRef } from '@backstage/plugin-catalog-react';\n\nimport {\n createComponentRouteRef,\n createFromTemplateRouteRef,\n rootRouteRef,\n unregisterRedirectRouteRef,\n viewTechDocRouteRef,\n} from '../routes';\n\nimport apis from './apis';\nimport pages from './pages';\nimport filters from './filters';\nimport navItems from './navItems';\nimport entityCards from './entityCards';\nimport entityContents from './entityContents';\nimport entityIconLinks from './entityIconLinks';\nimport searchResultItems from './searchResultItems';\nimport contextMenuItems from './contextMenuItems';\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'catalog',\n info: { packageJson: () => import('../../package.json') },\n routes: {\n catalogIndex: rootRouteRef,\n catalogEntity: entityRouteRef,\n },\n externalRoutes: {\n viewTechDoc: viewTechDocRouteRef,\n createComponent: createComponentRouteRef,\n createFromTemplate: createFromTemplateRouteRef,\n unregisterRedirect: unregisterRedirectRouteRef,\n },\n extensions: [\n ...apis,\n ...pages,\n ...filters,\n ...navItems,\n ...entityCards,\n ...entityContents,\n ...entityIconLinks,\n ...contextMenuItems,\n ...searchResultItems,\n ],\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;AAuCA,aAAe,oBAAA,CAAqB;AAAA,EAClC,QAAA,EAAU,SAAA;AAAA,EACV,MAAM,EAAE,WAAA,EAAa,MAAM,OAAO,wBAAoB,CAAA,EAAE;AAAA,EACxD,MAAA,EAAQ;AAAA,IACN,YAAA,EAAc,YAAA;AAAA,IACd,aAAA,EAAe;AAAA,GACjB;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,WAAA,EAAa,mBAAA;AAAA,IACb,eAAA,EAAiB,uBAAA;AAAA,IACjB,kBAAA,EAAoB,0BAAA;AAAA,IACpB,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAG,IAAA;AAAA,IACH,GAAG,KAAA;AAAA,IACH,GAAG,OAAA;AAAA,IACH,GAAG,QAAA;AAAA,IACH,GAAG,WAAA;AAAA,IACH,GAAG,cAAA;AAAA,IACH,GAAG,eAAA;AAAA,IACH,GAAG,gBAAA;AAAA,IACH,GAAG;AAAA;AAEP,CAAC,CAAA;;;;"}
|
package/dist/alpha.d.ts
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
import * as _backstage_plugin_search_react_alpha from '@backstage/plugin-search-react/alpha';
|
|
2
|
-
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
3
2
|
import * as _backstage_core_components from '@backstage/core-components';
|
|
4
3
|
import * as _backstage_catalog_model from '@backstage/catalog-model';
|
|
5
4
|
import * as _backstage_plugin_catalog_react_alpha from '@backstage/plugin-catalog-react/alpha';
|
|
6
5
|
import * as react from 'react';
|
|
7
6
|
import * as _backstage_frontend_plugin_api from '@backstage/frontend-plugin-api';
|
|
7
|
+
import * as _backstage_core_plugin_api from '@backstage/core-plugin-api';
|
|
8
8
|
import * as _backstage_core_plugin_api_alpha from '@backstage/core-plugin-api/alpha';
|
|
9
9
|
|
|
10
10
|
/** @alpha */
|
|
11
11
|
declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{
|
|
12
|
-
catalogIndex:
|
|
13
|
-
catalogEntity:
|
|
12
|
+
catalogIndex: _backstage_core_plugin_api.RouteRef<undefined>;
|
|
13
|
+
catalogEntity: _backstage_core_plugin_api.RouteRef<{
|
|
14
14
|
name: string;
|
|
15
15
|
kind: string;
|
|
16
16
|
namespace: string;
|
|
17
17
|
}>;
|
|
18
18
|
}, {
|
|
19
|
-
viewTechDoc:
|
|
19
|
+
viewTechDoc: _backstage_core_plugin_api.ExternalRouteRef<{
|
|
20
20
|
name: string;
|
|
21
21
|
kind: string;
|
|
22
22
|
namespace: string;
|
|
23
|
-
}>;
|
|
24
|
-
createComponent:
|
|
25
|
-
createFromTemplate:
|
|
23
|
+
}, true>;
|
|
24
|
+
createComponent: _backstage_core_plugin_api.ExternalRouteRef<undefined, true>;
|
|
25
|
+
createFromTemplate: _backstage_core_plugin_api.ExternalRouteRef<{
|
|
26
26
|
namespace: string;
|
|
27
27
|
templateName: string;
|
|
28
|
-
}>;
|
|
29
|
-
unregisterRedirect:
|
|
28
|
+
}, true>;
|
|
29
|
+
unregisterRedirect: _backstage_core_plugin_api.ExternalRouteRef<undefined, true>;
|
|
30
30
|
}, {
|
|
31
|
-
"api:catalog": _backstage_frontend_plugin_api.
|
|
31
|
+
"api:catalog": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
32
32
|
kind: "api";
|
|
33
33
|
name: undefined;
|
|
34
34
|
config: {};
|
|
@@ -37,7 +37,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
37
37
|
inputs: {};
|
|
38
38
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
39
39
|
}>;
|
|
40
|
-
"api:catalog/entity-presentation": _backstage_frontend_plugin_api.
|
|
40
|
+
"api:catalog/entity-presentation": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
41
41
|
kind: "api";
|
|
42
42
|
name: "entity-presentation";
|
|
43
43
|
config: {};
|
|
@@ -46,7 +46,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
46
46
|
inputs: {};
|
|
47
47
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
48
48
|
}>;
|
|
49
|
-
"api:catalog/starred-entities": _backstage_frontend_plugin_api.
|
|
49
|
+
"api:catalog/starred-entities": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
50
50
|
kind: "api";
|
|
51
51
|
name: "starred-entities";
|
|
52
52
|
config: {};
|
|
@@ -55,7 +55,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
55
55
|
inputs: {};
|
|
56
56
|
params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_frontend_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_frontend_plugin_api.AnyApiFactory>;
|
|
57
57
|
}>;
|
|
58
|
-
"catalog-filter:catalog/kind": _backstage_frontend_plugin_api.
|
|
58
|
+
"catalog-filter:catalog/kind": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
59
59
|
config: {
|
|
60
60
|
initialFilter: string;
|
|
61
61
|
};
|
|
@@ -75,7 +75,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
75
75
|
loader: () => Promise<JSX.Element>;
|
|
76
76
|
};
|
|
77
77
|
}>;
|
|
78
|
-
"catalog-filter:catalog/lifecycle": _backstage_frontend_plugin_api.
|
|
78
|
+
"catalog-filter:catalog/lifecycle": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
79
79
|
kind: "catalog-filter";
|
|
80
80
|
name: "lifecycle";
|
|
81
81
|
config: {};
|
|
@@ -86,7 +86,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
86
86
|
loader: () => Promise<JSX.Element>;
|
|
87
87
|
};
|
|
88
88
|
}>;
|
|
89
|
-
"catalog-filter:catalog/list": _backstage_frontend_plugin_api.
|
|
89
|
+
"catalog-filter:catalog/list": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
90
90
|
config: {
|
|
91
91
|
initialFilter: "all" | "owned" | "starred";
|
|
92
92
|
};
|
|
@@ -106,7 +106,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
106
106
|
loader: () => Promise<JSX.Element>;
|
|
107
107
|
};
|
|
108
108
|
}>;
|
|
109
|
-
"catalog-filter:catalog/mode": _backstage_frontend_plugin_api.
|
|
109
|
+
"catalog-filter:catalog/mode": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
110
110
|
config: {
|
|
111
111
|
mode: "all" | "owners-only" | undefined;
|
|
112
112
|
};
|
|
@@ -126,7 +126,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
126
126
|
loader: () => Promise<JSX.Element>;
|
|
127
127
|
};
|
|
128
128
|
}>;
|
|
129
|
-
"catalog-filter:catalog/namespace": _backstage_frontend_plugin_api.
|
|
129
|
+
"catalog-filter:catalog/namespace": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
130
130
|
kind: "catalog-filter";
|
|
131
131
|
name: "namespace";
|
|
132
132
|
config: {};
|
|
@@ -137,7 +137,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
137
137
|
loader: () => Promise<JSX.Element>;
|
|
138
138
|
};
|
|
139
139
|
}>;
|
|
140
|
-
"catalog-filter:catalog/processing-status": _backstage_frontend_plugin_api.
|
|
140
|
+
"catalog-filter:catalog/processing-status": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
141
141
|
kind: "catalog-filter";
|
|
142
142
|
name: "processing-status";
|
|
143
143
|
config: {};
|
|
@@ -148,7 +148,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
148
148
|
loader: () => Promise<JSX.Element>;
|
|
149
149
|
};
|
|
150
150
|
}>;
|
|
151
|
-
"catalog-filter:catalog/tag": _backstage_frontend_plugin_api.
|
|
151
|
+
"catalog-filter:catalog/tag": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
152
152
|
kind: "catalog-filter";
|
|
153
153
|
name: "tag";
|
|
154
154
|
config: {};
|
|
@@ -159,7 +159,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
159
159
|
loader: () => Promise<JSX.Element>;
|
|
160
160
|
};
|
|
161
161
|
}>;
|
|
162
|
-
"catalog-filter:catalog/type": _backstage_frontend_plugin_api.
|
|
162
|
+
"catalog-filter:catalog/type": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
163
163
|
kind: "catalog-filter";
|
|
164
164
|
name: "type";
|
|
165
165
|
config: {};
|
|
@@ -170,7 +170,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
170
170
|
loader: () => Promise<JSX.Element>;
|
|
171
171
|
};
|
|
172
172
|
}>;
|
|
173
|
-
"entity-card:catalog/about": _backstage_frontend_plugin_api.
|
|
173
|
+
"entity-card:catalog/about": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
174
174
|
config: {
|
|
175
175
|
filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
|
|
176
176
|
type: "content" | "summary" | "info" | undefined;
|
|
@@ -204,7 +204,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
204
204
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
205
205
|
};
|
|
206
206
|
}>;
|
|
207
|
-
"entity-card:catalog/depends-on-components": _backstage_frontend_plugin_api.
|
|
207
|
+
"entity-card:catalog/depends-on-components": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
208
208
|
kind: "entity-card";
|
|
209
209
|
name: "depends-on-components";
|
|
210
210
|
config: {
|
|
@@ -229,7 +229,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
229
229
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
230
230
|
};
|
|
231
231
|
}>;
|
|
232
|
-
"entity-card:catalog/depends-on-resources": _backstage_frontend_plugin_api.
|
|
232
|
+
"entity-card:catalog/depends-on-resources": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
233
233
|
kind: "entity-card";
|
|
234
234
|
name: "depends-on-resources";
|
|
235
235
|
config: {
|
|
@@ -254,7 +254,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
254
254
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
255
255
|
};
|
|
256
256
|
}>;
|
|
257
|
-
"entity-card:catalog/has-components": _backstage_frontend_plugin_api.
|
|
257
|
+
"entity-card:catalog/has-components": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
258
258
|
kind: "entity-card";
|
|
259
259
|
name: "has-components";
|
|
260
260
|
config: {
|
|
@@ -279,7 +279,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
279
279
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
280
280
|
};
|
|
281
281
|
}>;
|
|
282
|
-
"entity-card:catalog/has-resources": _backstage_frontend_plugin_api.
|
|
282
|
+
"entity-card:catalog/has-resources": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
283
283
|
kind: "entity-card";
|
|
284
284
|
name: "has-resources";
|
|
285
285
|
config: {
|
|
@@ -304,7 +304,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
304
304
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
305
305
|
};
|
|
306
306
|
}>;
|
|
307
|
-
"entity-card:catalog/has-subcomponents": _backstage_frontend_plugin_api.
|
|
307
|
+
"entity-card:catalog/has-subcomponents": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
308
308
|
kind: "entity-card";
|
|
309
309
|
name: "has-subcomponents";
|
|
310
310
|
config: {
|
|
@@ -329,7 +329,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
329
329
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
330
330
|
};
|
|
331
331
|
}>;
|
|
332
|
-
"entity-card:catalog/has-subdomains": _backstage_frontend_plugin_api.
|
|
332
|
+
"entity-card:catalog/has-subdomains": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
333
333
|
kind: "entity-card";
|
|
334
334
|
name: "has-subdomains";
|
|
335
335
|
config: {
|
|
@@ -354,7 +354,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
354
354
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
355
355
|
};
|
|
356
356
|
}>;
|
|
357
|
-
"entity-card:catalog/has-systems": _backstage_frontend_plugin_api.
|
|
357
|
+
"entity-card:catalog/has-systems": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
358
358
|
kind: "entity-card";
|
|
359
359
|
name: "has-systems";
|
|
360
360
|
config: {
|
|
@@ -379,7 +379,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
379
379
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
380
380
|
};
|
|
381
381
|
}>;
|
|
382
|
-
"entity-card:catalog/labels": _backstage_frontend_plugin_api.
|
|
382
|
+
"entity-card:catalog/labels": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
383
383
|
kind: "entity-card";
|
|
384
384
|
name: "labels";
|
|
385
385
|
config: {
|
|
@@ -404,7 +404,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
404
404
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
405
405
|
};
|
|
406
406
|
}>;
|
|
407
|
-
"entity-card:catalog/links": _backstage_frontend_plugin_api.
|
|
407
|
+
"entity-card:catalog/links": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
408
408
|
kind: "entity-card";
|
|
409
409
|
name: "links";
|
|
410
410
|
config: {
|
|
@@ -429,7 +429,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
429
429
|
type?: _backstage_plugin_catalog_react_alpha.EntityCardType;
|
|
430
430
|
};
|
|
431
431
|
}>;
|
|
432
|
-
"entity-content:catalog/overview": _backstage_frontend_plugin_api.
|
|
432
|
+
"entity-content:catalog/overview": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
433
433
|
config: {
|
|
434
434
|
path: string | undefined;
|
|
435
435
|
title: string | undefined;
|
|
@@ -485,7 +485,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
485
485
|
filter?: string | _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
486
486
|
};
|
|
487
487
|
}>;
|
|
488
|
-
"entity-context-menu-item:catalog/copy-entity-url": _backstage_frontend_plugin_api.
|
|
488
|
+
"entity-context-menu-item:catalog/copy-entity-url": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
489
489
|
kind: "entity-context-menu-item";
|
|
490
490
|
name: "copy-entity-url";
|
|
491
491
|
config: {
|
|
@@ -500,7 +500,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
500
500
|
inputs: {};
|
|
501
501
|
params: _backstage_plugin_catalog_react_alpha.EntityContextMenuItemParams;
|
|
502
502
|
}>;
|
|
503
|
-
"entity-context-menu-item:catalog/inspect-entity": _backstage_frontend_plugin_api.
|
|
503
|
+
"entity-context-menu-item:catalog/inspect-entity": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
504
504
|
kind: "entity-context-menu-item";
|
|
505
505
|
name: "inspect-entity";
|
|
506
506
|
config: {
|
|
@@ -515,7 +515,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
515
515
|
inputs: {};
|
|
516
516
|
params: _backstage_plugin_catalog_react_alpha.EntityContextMenuItemParams;
|
|
517
517
|
}>;
|
|
518
|
-
"entity-context-menu-item:catalog/unregister-entity": _backstage_frontend_plugin_api.
|
|
518
|
+
"entity-context-menu-item:catalog/unregister-entity": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
519
519
|
kind: "entity-context-menu-item";
|
|
520
520
|
name: "unregister-entity";
|
|
521
521
|
config: {
|
|
@@ -530,7 +530,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
530
530
|
inputs: {};
|
|
531
531
|
params: _backstage_plugin_catalog_react_alpha.EntityContextMenuItemParams;
|
|
532
532
|
}>;
|
|
533
|
-
"entity-icon-link:catalog/view-source": _backstage_frontend_plugin_api.
|
|
533
|
+
"entity-icon-link:catalog/view-source": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
534
534
|
kind: "entity-icon-link";
|
|
535
535
|
name: "view-source";
|
|
536
536
|
config: {
|
|
@@ -554,24 +554,24 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
554
554
|
filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | ((entity: _backstage_catalog_model.Entity) => boolean);
|
|
555
555
|
};
|
|
556
556
|
}>;
|
|
557
|
-
"nav-item:catalog": _backstage_frontend_plugin_api.
|
|
557
|
+
"nav-item:catalog": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
558
558
|
kind: "nav-item";
|
|
559
559
|
name: undefined;
|
|
560
560
|
config: {};
|
|
561
561
|
configInput: {};
|
|
562
562
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<{
|
|
563
563
|
title: string;
|
|
564
|
-
icon:
|
|
564
|
+
icon: _backstage_frontend_plugin_api.IconComponent;
|
|
565
565
|
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
566
566
|
}, "core.nav-item.target", {}>;
|
|
567
567
|
inputs: {};
|
|
568
568
|
params: {
|
|
569
569
|
title: string;
|
|
570
|
-
icon:
|
|
570
|
+
icon: _backstage_frontend_plugin_api.IconComponent;
|
|
571
571
|
routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>;
|
|
572
572
|
};
|
|
573
573
|
}>;
|
|
574
|
-
"page:catalog": _backstage_frontend_plugin_api.
|
|
574
|
+
"page:catalog": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
575
575
|
config: {
|
|
576
576
|
pagination: boolean | {
|
|
577
577
|
mode: "offset" | "cursor";
|
|
@@ -608,7 +608,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
608
608
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
609
609
|
};
|
|
610
610
|
}>;
|
|
611
|
-
"page:catalog/entity": _backstage_frontend_plugin_api.
|
|
611
|
+
"page:catalog/entity": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
612
612
|
config: {
|
|
613
613
|
groups: Record<string, {
|
|
614
614
|
title: string;
|
|
@@ -663,7 +663,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
663
663
|
routeRef?: _backstage_frontend_plugin_api.RouteRef;
|
|
664
664
|
};
|
|
665
665
|
}>;
|
|
666
|
-
"search-result-list-item:catalog": _backstage_frontend_plugin_api.
|
|
666
|
+
"search-result-list-item:catalog": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
|
|
667
667
|
kind: "search-result-list-item";
|
|
668
668
|
name: undefined;
|
|
669
669
|
config: {
|
package/dist/package.json.esm.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/plugin-catalog",
|
|
3
|
-
"version": "1.32.
|
|
3
|
+
"version": "1.32.1-next.0",
|
|
4
4
|
"description": "The Backstage plugin for browsing the Backstage catalog",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -70,22 +70,22 @@
|
|
|
70
70
|
"test": "backstage-cli package test"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@backstage/catalog-client": "1.12.1
|
|
74
|
-
"@backstage/catalog-model": "1.7.6
|
|
75
|
-
"@backstage/core-compat-api": "0.5.
|
|
76
|
-
"@backstage/core-components": "0.18.
|
|
77
|
-
"@backstage/core-plugin-api": "1.
|
|
73
|
+
"@backstage/catalog-client": "1.12.1",
|
|
74
|
+
"@backstage/catalog-model": "1.7.6",
|
|
75
|
+
"@backstage/core-compat-api": "0.5.5-next.0",
|
|
76
|
+
"@backstage/core-components": "0.18.4-next.0",
|
|
77
|
+
"@backstage/core-plugin-api": "1.12.1-next.0",
|
|
78
78
|
"@backstage/errors": "1.2.7",
|
|
79
|
-
"@backstage/frontend-plugin-api": "0.
|
|
80
|
-
"@backstage/integration-react": "1.2.
|
|
81
|
-
"@backstage/plugin-catalog-common": "1.1.7
|
|
82
|
-
"@backstage/plugin-catalog-react": "1.21.
|
|
83
|
-
"@backstage/plugin-permission-react": "0.4.
|
|
84
|
-
"@backstage/plugin-scaffolder-common": "1.7.
|
|
85
|
-
"@backstage/plugin-search-common": "1.2.21
|
|
86
|
-
"@backstage/plugin-search-react": "1.10.
|
|
79
|
+
"@backstage/frontend-plugin-api": "0.13.2-next.0",
|
|
80
|
+
"@backstage/integration-react": "1.2.13-next.0",
|
|
81
|
+
"@backstage/plugin-catalog-common": "1.1.7",
|
|
82
|
+
"@backstage/plugin-catalog-react": "1.21.4-next.0",
|
|
83
|
+
"@backstage/plugin-permission-react": "0.4.39-next.0",
|
|
84
|
+
"@backstage/plugin-scaffolder-common": "1.7.4-next.0",
|
|
85
|
+
"@backstage/plugin-search-common": "1.2.21",
|
|
86
|
+
"@backstage/plugin-search-react": "1.10.1-next.0",
|
|
87
87
|
"@backstage/plugin-techdocs-common": "0.1.1",
|
|
88
|
-
"@backstage/plugin-techdocs-react": "1.3.
|
|
88
|
+
"@backstage/plugin-techdocs-react": "1.3.6-next.0",
|
|
89
89
|
"@backstage/types": "1.2.2",
|
|
90
90
|
"@backstage/version-bridge": "1.0.11",
|
|
91
91
|
"@material-ui/core": "^4.12.2",
|
|
@@ -102,12 +102,12 @@
|
|
|
102
102
|
"zen-observable": "^0.10.0"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@backstage/cli": "0.34.
|
|
106
|
-
"@backstage/core-app-api": "1.19.
|
|
107
|
-
"@backstage/dev-utils": "1.1.
|
|
108
|
-
"@backstage/frontend-test-utils": "0.4.
|
|
109
|
-
"@backstage/plugin-permission-common": "0.9.3
|
|
110
|
-
"@backstage/test-utils": "1.7.
|
|
105
|
+
"@backstage/cli": "0.34.6-next.0",
|
|
106
|
+
"@backstage/core-app-api": "1.19.3-next.0",
|
|
107
|
+
"@backstage/dev-utils": "1.1.18-next.0",
|
|
108
|
+
"@backstage/frontend-test-utils": "0.4.2-next.0",
|
|
109
|
+
"@backstage/plugin-permission-common": "0.9.3",
|
|
110
|
+
"@backstage/test-utils": "1.7.14-next.0",
|
|
111
111
|
"@testing-library/dom": "^10.0.0",
|
|
112
112
|
"@testing-library/jest-dom": "^6.0.0",
|
|
113
113
|
"@testing-library/react": "^16.0.0",
|