@backstage/plugin-catalog 1.31.5-next.0 → 1.32.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 +43 -0
- package/dist/alpha/DefaultEntityContentLayout.esm.js +34 -13
- package/dist/alpha/DefaultEntityContentLayout.esm.js.map +1 -1
- package/dist/alpha/pages.esm.js +7 -0
- package/dist/alpha/pages.esm.js.map +1 -1
- package/dist/alpha/searchResultItems.esm.js +3 -0
- package/dist/alpha/searchResultItems.esm.js.map +1 -1
- package/dist/alpha.d.ts +34 -33
- package/dist/package.json.esm.js +1 -1
- package/package.json +25 -25
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# @backstage/plugin-catalog
|
|
2
2
|
|
|
3
|
+
## 1.32.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a521911: Add support for customizable icons in `SearchResultListItemBlueprint` and related components
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- b500bcc: Fix React warnings for elements not having stable keys.
|
|
12
|
+
- a87c0a5: Fixed responsiveness issues with catalog entity content layout using the new frontend system.
|
|
13
|
+
- aff04d3: Fixed missing margins for entity warning content area on catalog entity page in NFS.
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
- @backstage/frontend-plugin-api@0.13.0
|
|
16
|
+
- @backstage/core-compat-api@0.5.4
|
|
17
|
+
- @backstage/plugin-search-react@1.10.0
|
|
18
|
+
- @backstage/plugin-catalog-react@1.21.3
|
|
19
|
+
- @backstage/core-components@0.18.3
|
|
20
|
+
- @backstage/core-plugin-api@1.12.0
|
|
21
|
+
- @backstage/plugin-permission-react@0.4.38
|
|
22
|
+
- @backstage/catalog-model@1.7.6
|
|
23
|
+
- @backstage/plugin-techdocs-react@1.3.5
|
|
24
|
+
- @backstage/catalog-client@1.12.1
|
|
25
|
+
- @backstage/integration-react@1.2.12
|
|
26
|
+
- @backstage/plugin-catalog-common@1.1.7
|
|
27
|
+
- @backstage/plugin-scaffolder-common@1.7.3
|
|
28
|
+
- @backstage/plugin-search-common@1.2.21
|
|
29
|
+
|
|
30
|
+
## 1.32.0-next.1
|
|
31
|
+
|
|
32
|
+
### Minor Changes
|
|
33
|
+
|
|
34
|
+
- a521911: Add support for customizable icons in `SearchResultListItemBlueprint` and related components
|
|
35
|
+
|
|
36
|
+
### Patch Changes
|
|
37
|
+
|
|
38
|
+
- Updated dependencies
|
|
39
|
+
- @backstage/plugin-search-react@1.10.0-next.1
|
|
40
|
+
- @backstage/plugin-catalog-react@1.21.3-next.1
|
|
41
|
+
- @backstage/core-components@0.18.3-next.1
|
|
42
|
+
- @backstage/core-plugin-api@1.11.2-next.1
|
|
43
|
+
- @backstage/frontend-plugin-api@0.12.2-next.1
|
|
44
|
+
- @backstage/core-compat-api@0.5.4-next.0
|
|
45
|
+
|
|
3
46
|
## 1.31.5-next.0
|
|
4
47
|
|
|
5
48
|
### Patch 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":";;;;;;;;;AAkCA,MAAM,SAAA,GAAY,WAGhB,CAAA,KAAA,MAAU;AAAA,EACV,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,eAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,UAAA,EAAY,SAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,eAAA;AAAA,IACV,UAAA,EAAY,YAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,QAAA,EAAU,CAAA;AAAA,IACV,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,CAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,CAAA;AAAA,IACV,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,GAAG;AAAA;AAAA,GAC3B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,UAAA;AAAA,IACN,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA;AAC7B,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,UAAA,EAAY,SAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,CAAC,KAAA,CAAM,WAAA,CAAY,EAAA,CAAG,IAAI,CAAC,GAAG;AAAA,IAC5B,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,MAAA;AAAA,MACT,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACpB,iBAAA,EAAmB,CAAC,EAAE,YAAA,EAAa,KAAM;AAAA,SAAA,EACpC,YAAA,GAAe,YAAY,SAAS,CAAA;AAAA;AAAA,MAAA,CAAA;AAAA,MAGzC,qBAAqB,CAAC,EAAE,SAAA,EAAU,KAAO,YAAY,SAAA,GAAY,KAAA;AAAA,MACjE,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAA,EAAa;AAAA,MACX,OAAA,EAAS;AAAA,KACX;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KAC/B;AAAA,IACA,QAAA,EAAU;AAAA,MACR,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA,MAIpB,SAAA,EAAW,OAAA;AAAA,MACX,SAAA,EAAW,MAAA;AAAA,MACX,SAAA,EAAW,OAAA;AAAA,MACX,UAAA,EAAY,SAAA;AAAA;AAAA;AAAA,MAGZ,cAAA,EAAgB,MAAA;AAAA,MAChB,eAAA,EAAiB,MAAA;AAAA,MACjB,sBAAA,EAAwB;AAAA,QACtB,OAAA,EAAS;AAAA;AACX;AACF;AAEJ,CAAA,CAAE,CAAA;AAEF,MAAM,uCACJ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,gBACC,QAAA,kBAAA,GAAA,CAAC,YAAA,CAAa,IAAA,EAAb,EAAkB,IAAI,QAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,MAAC,EAAA,EAAI,EAAA,EACb,8BAAC,mBAAA,EAAA,EAAoB,CAAA,EACvB,GACF,CAAA,EACF,CAAA;AAAA,sBAEC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,aAAa,IAAA,EAAb,EAAkB,IAAI,mBAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,MAAC,EAAA,EAAI,EAAA,EACb,8BAAC,qBAAA,EAAA,EAAsB,CAAA,EACzB,GACF,CAAA,EACF,CAAA;AAAA,sBAEC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,aAAa,IAAA,EAAb,EAAkB,IAAI,0BAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAI,MAAC,EAAA,EAAI,EAAA,EACb,8BAAC,2BAAA,EAAA,EAA4B,CAAA,EAC/B,GACF,CAAA,EACF;AAAA,CAAA,EACF,CAAA;AAGK,SAAS,2BAA2B,KAAA,EAAiC;AAC1E,EAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAElB,EAAA,MAAM,YAAY,KAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,MAAM,CAAA;AAC3D,EAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,SAAS,CAAA;AACjE,EAAA,MAAM,eAAe,KAAA,CAAM,MAAA;AAAA,IACzB,CAAA,IAAA,KAAQ,CAAC,IAAA,CAAK,IAAA,IAAQ,KAAK,IAAA,KAAS;AAAA,GACtC;AAEA,EAAA,MAAM,UAAU,SAAA,CAAU;AAAA,IACxB,SAAA,EAAW,CAAC,CAAC,SAAA,CAAU,MAAA;AAAA,IACvB,YAAA,EAAc,CAAC,CAAC,YAAA,CAAa,MAAA;AAAA,IAC7B,YAAA,EAAc,CAAC,CAAC,YAAA,CAAa;AAAA,GAC9B,CAAA;AAED,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,oBAAA;AAAA,oBACD,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,IAAA,EACrB,QAAA,EAAA;AAAA,MAAA,SAAA,CAAU,MAAA,GAAS,CAAA,mBAClB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,QAAA,EACrB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAA,IAAA,KAAQ,IAAA,CAAK,OAAO,GACrC,CAAA,GACE,IAAA;AAAA,sBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EACrB,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,MAAA,GAAS,CAAA,mBACrB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EACtB,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,UAAA,EAAY,GAAA,EAAK,WAAA,EAAa,GAAA,EACjD,uBAAa,GAAA,CAAI,CAAA,IAAA,qBAChB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EAAc,QAAA,EAAA,IAAA,CAAK,OAAA,EAAQ,CACpD,CAAA,EACH,CAAA,EACF,CAAA,GACE,IAAA;AAAA,QACH,YAAA,CAAa,MAAA,GAAS,CAAA,mBACrB,GAAA,CAAC,SAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EACrB,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAA,IAAA,KAAQ,IAAA,CAAK,OAAO,GACxC,CAAA,GACE;AAAA,OAAA,EACN;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
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":";;;;;;;;;AAkCA,MAAM,SAAA,GAAY,WAGhB,CAAA,KAAA,MAAU;AAAA,EACV,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,eAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,GACtB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,aAAA,EAAe,QAAA;AAAA,IACf,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,YAAA,EAAc,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IAC7B,SAAA,EAAW;AAAA,MACT,YAAA,EAAc,CAAA;AAAA,MACd,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,UAAA,EAAY,SAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,QAAA,EAAU;AAAA,IACR,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,eAAA;AAAA,IACV,UAAA,EAAY,SAAA;AAAA,IACZ,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,QAAA,EAAU,CAAA;AAAA,IACV,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,CAAA;AAAA,MACZ,QAAA,EAAU;AAAA;AACZ,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,CAAA;AAAA,IACV,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA;AAAA,GACzB;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO,MAAA;AAAA,IACP,OAAA,EAAS;AAAA,MACP,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA;AAC7B,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,MAAA;AAAA,IACT,QAAA,EAAU,QAAA;AAAA,IACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,IACpB,UAAA,EAAY,SAAA;AAAA,IACZ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,CAAC,KAAA,CAAM,WAAA,CAAY,EAAA,CAAG,IAAI,CAAC,GAAG;AAAA,IAC5B,IAAA,EAAM;AAAA,MACJ,OAAA,EAAS,MAAA;AAAA,MACT,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,MACpB,iBAAA,EAAmB,CAAC,EAAE,YAAA,EAAa,KAAM;AAAA,SAAA,EACpC,YAAA,GAAe,YAAY,SAAS,CAAA;AAAA;AAAA,MAAA,CAAA;AAAA,MAGzC,qBAAqB,CAAC,EAAE,SAAA,EAAU,KAAO,YAAY,SAAA,GAAY,KAAA;AAAA,MACjE,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAA,EAAa;AAAA,MACX,OAAA,EAAS;AAAA,KACX;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA;AAAA,KACzB;AAAA,IACA,QAAA,EAAU;AAAA,MACR,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,QAAA;AAAA,MACV,GAAA,EAAK,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA,MAIpB,SAAA,EAAW,OAAA;AAAA,MACX,SAAA,EAAW,MAAA;AAAA,MACX,SAAA,EAAW,OAAA;AAAA,MACX,UAAA,EAAY,SAAA;AAAA;AAAA;AAAA,MAGZ,cAAA,EAAgB,MAAA;AAAA,MAChB,eAAA,EAAiB,MAAA;AAAA,MACjB,sBAAA,EAAwB;AAAA,QACtB,OAAA,EAAS;AAAA;AACX,KACF;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA,CAAE,CAAA;AAEK,SAAS,2BAA2B,KAAA,EAAiC;AAC1E,EAAA,MAAM,EAAE,OAAM,GAAI,KAAA;AAElB,EAAA,MAAM,YAAY,KAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,MAAM,CAAA;AAC3D,EAAA,MAAM,eAAe,KAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,CAAK,SAAS,SAAS,CAAA;AACjE,EAAA,MAAM,eAAe,KAAA,CAAM,MAAA;AAAA,IACzB,CAAA,IAAA,KAAQ,CAAC,IAAA,CAAK,IAAA,IAAQ,KAAK,IAAA,KAAS;AAAA,GACtC;AAEA,EAAA,MAAM,UAAU,SAAA,CAAU;AAAA,IACxB,SAAA,EAAW,CAAC,CAAC,SAAA,CAAU,MAAA;AAAA,IACvB,YAAA,EAAc,CAAC,CAAC,YAAA,CAAa,MAAA;AAAA,IAC7B,YAAA,EAAc,CAAC,CAAC,YAAA,CAAa;AAAA,GAC9B,CAAA;AAED,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EACtB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,YAAA,CAAa,IAAA,EAAb,EAAkB,IAAI,QAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,mBAAA,EAAA,EAAoB,CAAA,EACvB,CAAA,EACF,CAAA;AAAA,sBAEA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,YAAA,CAAa,IAAA,EAAb,EAAkB,EAAA,EAAI,mBAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,qBAAA,EAAA,EAAsB,CAAA,EACzB,CAAA,EACF,CAAA;AAAA,sBAEA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,YAAA,CAAa,IAAA,EAAb,EAAkB,EAAA,EAAI,0BAAA,EACrB,QAAA,kBAAA,GAAA,CAAC,2BAAA,EAAA,EAA4B,CAAA,EAC/B,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,IAAA,EACrB,QAAA,EAAA;AAAA,MAAA,SAAA,CAAU,MAAA,GAAS,oBAClB,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,OAAA,CAAQ,QAAA,EACrB,QAAA,EAAA,SAAA,CAAU,GAAA,CAAI,CAAC,IAAA,EAAM,0BACpB,GAAA,CAACA,UAAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,OAAA,EAAA,EADO,IAAA,CAAK,QAAQ,GAAA,IAAO,KAEnC,CACD,CAAA,EACH,CAAA,GACE,IAAA;AAAA,sBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,WAAA,EACrB,QAAA,EAAA;AAAA,QAAA,YAAA,CAAa,SAAS,CAAA,mBACrB,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,QAAQ,WAAA,EACtB,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,UAAA,EAAY,KAAK,WAAA,EAAa,GAAA,EACjD,uBAAa,GAAA,CAAI,CAAC,MAAM,KAAA,qBACvB,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,WAAW,OAAA,CAAQ,WAAA;AAAA,YAElB,QAAA,EAAA,IAAA,CAAK;AAAA,WAAA;AAAA,UAHD,IAAA,CAAK,QAAQ,GAAA,IAAO;AAAA,SAK5B,CAAA,EACH,CAAA,EACF,CAAA,GACE,IAAA;AAAA,QACH,YAAA,CAAa,MAAA,GAAS,CAAA,mBACrB,GAAA,CAAC,KAAA,EAAA,EAAI,WAAW,OAAA,CAAQ,WAAA,EACrB,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,EAAM,0BACvB,GAAA,CAACA,UAAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,OAAA,EAAA,EADO,IAAA,CAAK,QAAQ,GAAA,IAAO,KAEnC,CACD,CAAA,EACH,CAAA,GACE;AAAA,OAAA,EACN;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
package/dist/alpha/pages.esm.js
CHANGED
|
@@ -74,7 +74,14 @@ const catalogEntityPage = PageBlueprint.makeWithOverrides({
|
|
|
74
74
|
factory(originalFactory, { config, inputs }) {
|
|
75
75
|
return originalFactory({
|
|
76
76
|
path: "/catalog/:namespace/:kind/:name",
|
|
77
|
+
// NOTE: The `convertLegacyRouteRef` call here ensures that this route ref
|
|
78
|
+
// is mutated to support the new frontend system. Removing this conversion
|
|
79
|
+
// is a potentially breaking change since this is a singleton and the
|
|
80
|
+
// route refs from `core-plugin-api` used to not support the new format.
|
|
81
|
+
// This shouldn't be removed until we completely deprecate the
|
|
82
|
+
// `core-compat-api` package.
|
|
77
83
|
routeRef: convertLegacyRouteRef(entityRouteRef),
|
|
84
|
+
// READ THE ABOVE
|
|
78
85
|
loader: async () => {
|
|
79
86
|
const { EntityLayout } = await import('./components/EntityLayout/index.esm.js');
|
|
80
87
|
const menuItems = inputs.contextMenuItems.map((item) => ({
|
|
@@ -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 {\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 // 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 compatWrapper(<Component />);\n },\n });\n },\n});\n\nexport default [catalogPage, catalogEntityPage];\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
1
2
|
import { SearchResultListItemBlueprint } from '@backstage/plugin-search-react/alpha';
|
|
3
|
+
import { CatalogIcon } from '@backstage/core-components';
|
|
2
4
|
|
|
3
5
|
const catalogSearchResultListItem = SearchResultListItemBlueprint.make({
|
|
4
6
|
params: {
|
|
7
|
+
icon: /* @__PURE__ */ jsx(CatalogIcon, {}),
|
|
5
8
|
predicate: (result) => result.type === "software-catalog",
|
|
6
9
|
component: () => import('../components/CatalogSearchResultListItem/index.esm.js').then(
|
|
7
10
|
(m) => m.CatalogSearchResultListItem
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchResultItems.esm.js","sources":["../../src/alpha/searchResultItems.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { SearchResultListItemBlueprint } from '@backstage/plugin-search-react/alpha';\n\nexport const catalogSearchResultListItem = SearchResultListItemBlueprint.make({\n params: {\n predicate: result => result.type === 'software-catalog',\n component: () =>\n import('../components/CatalogSearchResultListItem').then(\n m => m.CatalogSearchResultListItem,\n ),\n },\n});\n\nexport default [catalogSearchResultListItem];\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"searchResultItems.esm.js","sources":["../../src/alpha/searchResultItems.tsx"],"sourcesContent":["/*\n * Copyright 2025 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 { SearchResultListItemBlueprint } from '@backstage/plugin-search-react/alpha';\nimport { CatalogIcon } from '@backstage/core-components';\n\nexport const catalogSearchResultListItem = SearchResultListItemBlueprint.make({\n params: {\n icon: <CatalogIcon />,\n predicate: result => result.type === 'software-catalog',\n component: () =>\n import('../components/CatalogSearchResultListItem').then(\n m => m.CatalogSearchResultListItem,\n ),\n },\n});\n\nexport default [catalogSearchResultListItem];\n"],"names":[],"mappings":";;;;AAmBO,MAAM,2BAAA,GAA8B,8BAA8B,IAAA,CAAK;AAAA,EAC5E,MAAA,EAAQ;AAAA,IACN,IAAA,sBAAO,WAAA,EAAA,EAAY,CAAA;AAAA,IACnB,SAAA,EAAW,CAAA,MAAA,KAAU,MAAA,CAAO,IAAA,KAAS,kBAAA;AAAA,IACrC,SAAA,EAAW,MACT,OAAO,wDAA2C,CAAA,CAAE,IAAA;AAAA,MAClD,OAAK,CAAA,CAAE;AAAA;AACT;AAEN,CAAC;AAED,wBAAe,CAAC,2BAA2B,CAAA;;;;"}
|
package/dist/alpha.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
28
28
|
}>;
|
|
29
29
|
unregisterRedirect: _backstage_frontend_plugin_api.ExternalRouteRef<undefined>;
|
|
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
|
};
|
|
@@ -65,8 +65,8 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
65
65
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
66
66
|
inputs: {
|
|
67
67
|
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef, {
|
|
68
|
-
optional: boolean;
|
|
69
68
|
singleton: boolean;
|
|
69
|
+
optional: boolean;
|
|
70
70
|
}>;
|
|
71
71
|
};
|
|
72
72
|
kind: "catalog-filter";
|
|
@@ -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
|
};
|
|
@@ -96,8 +96,8 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
96
96
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
97
97
|
inputs: {
|
|
98
98
|
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef, {
|
|
99
|
-
optional: boolean;
|
|
100
99
|
singleton: boolean;
|
|
100
|
+
optional: boolean;
|
|
101
101
|
}>;
|
|
102
102
|
};
|
|
103
103
|
kind: "catalog-filter";
|
|
@@ -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
|
};
|
|
@@ -116,8 +116,8 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
116
116
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}>;
|
|
117
117
|
inputs: {
|
|
118
118
|
[x: string]: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ExtensionDataRef, {
|
|
119
|
-
optional: boolean;
|
|
120
119
|
singleton: boolean;
|
|
120
|
+
optional: boolean;
|
|
121
121
|
}>;
|
|
122
122
|
};
|
|
123
123
|
kind: "catalog-filter";
|
|
@@ -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,7 +554,7 @@ 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: {};
|
|
@@ -571,7 +571,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
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: {
|
|
@@ -675,6 +675,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
|
|
|
675
675
|
output: _backstage_frontend_plugin_api.ExtensionDataRef<{
|
|
676
676
|
predicate?: _backstage_plugin_search_react_alpha.SearchResultItemExtensionPredicate;
|
|
677
677
|
component: _backstage_plugin_search_react_alpha.SearchResultItemExtensionComponent;
|
|
678
|
+
icon?: react.JSX.Element;
|
|
678
679
|
}, "search.search-result-list-item.item", {}>;
|
|
679
680
|
inputs: {};
|
|
680
681
|
params: _backstage_plugin_search_react_alpha.SearchResultListItemBlueprintParams;
|
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.
|
|
3
|
+
"version": "1.32.0",
|
|
4
4
|
"description": "The Backstage plugin for browsing the Backstage catalog",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "frontend-plugin",
|
|
@@ -70,24 +70,24 @@
|
|
|
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.4
|
|
76
|
-
"@backstage/core-components": "0.18.3
|
|
77
|
-
"@backstage/core-plugin-api": "1.
|
|
78
|
-
"@backstage/errors": "1.2.7",
|
|
79
|
-
"@backstage/frontend-plugin-api": "0.
|
|
80
|
-
"@backstage/integration-react": "1.2.12
|
|
81
|
-
"@backstage/plugin-catalog-common": "1.1.7
|
|
82
|
-
"@backstage/plugin-catalog-react": "1.21.3
|
|
83
|
-
"@backstage/plugin-permission-react": "0.4.38
|
|
84
|
-
"@backstage/plugin-scaffolder-common": "1.7.3
|
|
85
|
-
"@backstage/plugin-search-common": "1.2.21
|
|
86
|
-
"@backstage/plugin-search-react": "1.
|
|
87
|
-
"@backstage/plugin-techdocs-common": "0.1.1",
|
|
88
|
-
"@backstage/plugin-techdocs-react": "1.3.5
|
|
89
|
-
"@backstage/types": "1.2.2",
|
|
90
|
-
"@backstage/version-bridge": "1.0.11",
|
|
73
|
+
"@backstage/catalog-client": "^1.12.1",
|
|
74
|
+
"@backstage/catalog-model": "^1.7.6",
|
|
75
|
+
"@backstage/core-compat-api": "^0.5.4",
|
|
76
|
+
"@backstage/core-components": "^0.18.3",
|
|
77
|
+
"@backstage/core-plugin-api": "^1.12.0",
|
|
78
|
+
"@backstage/errors": "^1.2.7",
|
|
79
|
+
"@backstage/frontend-plugin-api": "^0.13.0",
|
|
80
|
+
"@backstage/integration-react": "^1.2.12",
|
|
81
|
+
"@backstage/plugin-catalog-common": "^1.1.7",
|
|
82
|
+
"@backstage/plugin-catalog-react": "^1.21.3",
|
|
83
|
+
"@backstage/plugin-permission-react": "^0.4.38",
|
|
84
|
+
"@backstage/plugin-scaffolder-common": "^1.7.3",
|
|
85
|
+
"@backstage/plugin-search-common": "^1.2.21",
|
|
86
|
+
"@backstage/plugin-search-react": "^1.10.0",
|
|
87
|
+
"@backstage/plugin-techdocs-common": "^0.1.1",
|
|
88
|
+
"@backstage/plugin-techdocs-react": "^1.3.5",
|
|
89
|
+
"@backstage/types": "^1.2.2",
|
|
90
|
+
"@backstage/version-bridge": "^1.0.11",
|
|
91
91
|
"@material-ui/core": "^4.12.2",
|
|
92
92
|
"@material-ui/icons": "^4.9.1",
|
|
93
93
|
"@material-ui/lab": "4.0.0-alpha.61",
|
|
@@ -102,12 +102,12 @@
|
|
|
102
102
|
"zen-observable": "^0.10.0"
|
|
103
103
|
},
|
|
104
104
|
"devDependencies": {
|
|
105
|
-
"@backstage/cli": "0.34.5
|
|
106
|
-
"@backstage/core-app-api": "1.19.2
|
|
107
|
-
"@backstage/dev-utils": "1.1.17
|
|
108
|
-
"@backstage/frontend-test-utils": "0.4.1
|
|
109
|
-
"@backstage/plugin-permission-common": "0.9.3
|
|
110
|
-
"@backstage/test-utils": "1.7.13
|
|
105
|
+
"@backstage/cli": "^0.34.5",
|
|
106
|
+
"@backstage/core-app-api": "^1.19.2",
|
|
107
|
+
"@backstage/dev-utils": "^1.1.17",
|
|
108
|
+
"@backstage/frontend-test-utils": "^0.4.1",
|
|
109
|
+
"@backstage/plugin-permission-common": "^0.9.3",
|
|
110
|
+
"@backstage/test-utils": "^1.7.13",
|
|
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",
|