@backstage/plugin-catalog 1.31.1-next.1 → 1.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # @backstage/plugin-catalog
2
2
 
3
+ ## 1.31.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 6991dab: Turn on `pagination` by default in new frontend system, and also make configurable
8
+ - 3ab9b96: Updated card extensions for the new frontend system to use the new entity predicates, and to not show the about card on User and Group pages.
9
+ - Updated dependencies
10
+ - @backstage/plugin-catalog-react@1.19.1
11
+ - @backstage/catalog-model@1.7.5
12
+ - @backstage/catalog-client@1.10.2
13
+ - @backstage/core-components@0.17.4
14
+ - @backstage/core-plugin-api@1.10.9
15
+ - @backstage/integration-react@1.2.9
16
+ - @backstage/plugin-scaffolder-common@1.6.0
17
+ - @backstage/core-compat-api@0.4.4
18
+ - @backstage/frontend-plugin-api@0.10.4
19
+ - @backstage/plugin-catalog-common@1.1.5
20
+ - @backstage/plugin-permission-react@0.4.36
21
+ - @backstage/plugin-search-common@1.2.19
22
+ - @backstage/plugin-search-react@1.9.2
23
+ - @backstage/plugin-techdocs-react@1.3.1
24
+
25
+ ## 1.31.1-next.2
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies
30
+ - @backstage/core-components@0.17.4-next.2
31
+ - @backstage/plugin-scaffolder-common@1.6.0-next.1
32
+ - @backstage/core-compat-api@0.4.4-next.1
33
+ - @backstage/core-plugin-api@1.10.9-next.0
34
+ - @backstage/plugin-catalog-react@1.19.1-next.1
35
+ - @backstage/plugin-search-react@1.9.2-next.1
36
+
3
37
  ## 1.31.1-next.1
4
38
 
5
39
  ### Patch Changes
@@ -33,6 +33,11 @@ const catalogAboutEntityCard = EntityCardBlueprint.makeWithOverrides({
33
33
  }
34
34
  return originalFactory({
35
35
  type: "info",
36
+ filter: {
37
+ $not: {
38
+ kind: { $in: ["user", "group"] }
39
+ }
40
+ },
36
41
  async loader() {
37
42
  const { InternalAboutCard } = await import('../components/AboutCard/AboutCard.esm.js');
38
43
  return compatWrapper(
@@ -46,7 +51,7 @@ const catalogLinksEntityCard = EntityCardBlueprint.make({
46
51
  name: "links",
47
52
  params: {
48
53
  type: "info",
49
- filter: "has:links",
54
+ filter: { "metadata.links": { $exists: true } },
50
55
  loader: async () => import('../components/EntityLinksCard/index.esm.js').then(
51
56
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityLinksCard, { variant: "gridItem" }))
52
57
  )
@@ -56,7 +61,7 @@ const catalogLabelsEntityCard = EntityCardBlueprint.make({
56
61
  name: "labels",
57
62
  params: {
58
63
  type: "info",
59
- filter: "has:labels",
64
+ filter: { "metadata.labels": { $exists: true } },
60
65
  loader: async () => import('../components/EntityLabelsCard/index.esm.js').then(
61
66
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.EntityLabelsCard, { variant: "gridItem" }))
62
67
  )
@@ -65,7 +70,7 @@ const catalogLabelsEntityCard = EntityCardBlueprint.make({
65
70
  const catalogDependsOnComponentsEntityCard = EntityCardBlueprint.make({
66
71
  name: "depends-on-components",
67
72
  params: {
68
- filter: "kind:component",
73
+ filter: { kind: "component" },
69
74
  loader: async () => import('../components/DependsOnComponentsCard/index.esm.js').then(
70
75
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.DependsOnComponentsCard, { variant: "gridItem" }))
71
76
  )
@@ -74,7 +79,7 @@ const catalogDependsOnComponentsEntityCard = EntityCardBlueprint.make({
74
79
  const catalogDependsOnResourcesEntityCard = EntityCardBlueprint.make({
75
80
  name: "depends-on-resources",
76
81
  params: {
77
- filter: "kind:component",
82
+ filter: { kind: "component" },
78
83
  loader: async () => import('../components/DependsOnResourcesCard/index.esm.js').then(
79
84
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.DependsOnResourcesCard, { variant: "gridItem" }))
80
85
  )
@@ -83,7 +88,7 @@ const catalogDependsOnResourcesEntityCard = EntityCardBlueprint.make({
83
88
  const catalogHasComponentsEntityCard = EntityCardBlueprint.make({
84
89
  name: "has-components",
85
90
  params: {
86
- filter: "kind:system",
91
+ filter: { kind: "system" },
87
92
  loader: async () => import('../components/HasComponentsCard/index.esm.js').then(
88
93
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.HasComponentsCard, { variant: "gridItem" }))
89
94
  )
@@ -92,7 +97,7 @@ const catalogHasComponentsEntityCard = EntityCardBlueprint.make({
92
97
  const catalogHasResourcesEntityCard = EntityCardBlueprint.make({
93
98
  name: "has-resources",
94
99
  params: {
95
- filter: "kind:system",
100
+ filter: { kind: "system" },
96
101
  loader: async () => import('../components/HasResourcesCard/index.esm.js').then(
97
102
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.HasResourcesCard, { variant: "gridItem" }))
98
103
  )
@@ -101,7 +106,7 @@ const catalogHasResourcesEntityCard = EntityCardBlueprint.make({
101
106
  const catalogHasSubcomponentsEntityCard = EntityCardBlueprint.make({
102
107
  name: "has-subcomponents",
103
108
  params: {
104
- filter: "kind:component",
109
+ filter: { kind: "component" },
105
110
  loader: async () => import('../components/HasSubcomponentsCard/index.esm.js').then(
106
111
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.HasSubcomponentsCard, { variant: "gridItem" }))
107
112
  )
@@ -110,7 +115,7 @@ const catalogHasSubcomponentsEntityCard = EntityCardBlueprint.make({
110
115
  const catalogHasSubdomainsEntityCard = EntityCardBlueprint.make({
111
116
  name: "has-subdomains",
112
117
  params: {
113
- filter: "kind:domain",
118
+ filter: { kind: "domain" },
114
119
  loader: async () => import('../components/HasSubdomainsCard/index.esm.js').then(
115
120
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.HasSubdomainsCard, { variant: "gridItem" }))
116
121
  )
@@ -119,7 +124,7 @@ const catalogHasSubdomainsEntityCard = EntityCardBlueprint.make({
119
124
  const catalogHasSystemsEntityCard = EntityCardBlueprint.make({
120
125
  name: "has-systems",
121
126
  params: {
122
- filter: "kind:domain",
127
+ filter: { kind: "domain" },
123
128
  loader: async () => import('../components/HasSystemsCard/index.esm.js').then(
124
129
  (m) => compatWrapper(/* @__PURE__ */ jsx(m.HasSystemsCard, { variant: "gridItem" }))
125
130
  )
@@ -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 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: 'has:links',\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: 'has:labels',\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 { 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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"}
@@ -11,7 +11,19 @@ const catalogPage = PageBlueprint.makeWithOverrides({
11
11
  inputs: {
12
12
  filters: createExtensionInput([coreExtensionData.reactElement])
13
13
  },
14
- factory(originalFactory, { inputs }) {
14
+ config: {
15
+ schema: {
16
+ pagination: (z) => z.union([
17
+ z.boolean(),
18
+ z.object({
19
+ mode: z.enum(["cursor", "offset"]),
20
+ limit: z.number().optional(),
21
+ offset: z.number().optional()
22
+ })
23
+ ]).default(true)
24
+ }
25
+ },
26
+ factory(originalFactory, { inputs, config }) {
15
27
  return originalFactory({
16
28
  defaultPath: "/catalog",
17
29
  routeRef: convertLegacyRouteRef(rootRouteRef),
@@ -20,7 +32,15 @@ const catalogPage = PageBlueprint.makeWithOverrides({
20
32
  const filters = inputs.filters.map(
21
33
  (filter) => filter.get(coreExtensionData.reactElement)
22
34
  );
23
- return compatWrapper(/* @__PURE__ */ jsx(BaseCatalogPage, { filters: /* @__PURE__ */ jsx(Fragment, { children: filters }) }));
35
+ return compatWrapper(
36
+ /* @__PURE__ */ jsx(
37
+ BaseCatalogPage,
38
+ {
39
+ filters: /* @__PURE__ */ jsx(Fragment, { children: filters }),
40
+ pagination: config.pagination
41
+ }
42
+ )
43
+ );
24
44
  }
25
45
  });
26
46
  }
@@ -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 factory(originalFactory, { inputs }) {\n return originalFactory({\n defaultPath: '/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(<BaseCatalogPage filters={<>{filters}</>} />);\n },\n });\n },\n});\n\nexport const catalogEntityPage = PageBlueprint.makeWithOverrides({\n name: 'entity',\n inputs: {\n header: createExtensionInput(\n [EntityHeaderBlueprint.dataRefs.element.optional()],\n { singleton: true, optional: true },\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 defaultPath: '/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 const header = inputs.header?.get(\n EntityHeaderBlueprint.dataRefs.element,\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 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 defaultPath: '/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 header: createExtensionInput(\n [EntityHeaderBlueprint.dataRefs.element.optional()],\n { singleton: true, optional: true },\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 defaultPath: '/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 const header = inputs.header?.get(\n EntityHeaderBlueprint.dataRefs.element,\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 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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"}
package/dist/alpha.d.ts CHANGED
@@ -576,9 +576,21 @@ declare const _default: _backstage_frontend_plugin_api.FrontendPlugin<{
576
576
  }>;
577
577
  "page:catalog": _backstage_frontend_plugin_api.ExtensionDefinition<{
578
578
  config: {
579
+ pagination: boolean | {
580
+ mode: "offset" | "cursor";
581
+ offset?: number | undefined;
582
+ limit?: number | undefined;
583
+ };
584
+ } & {
579
585
  path: string | undefined;
580
586
  };
581
587
  configInput: {
588
+ pagination?: boolean | {
589
+ mode: "offset" | "cursor";
590
+ offset?: number | undefined;
591
+ limit?: number | undefined;
592
+ } | undefined;
593
+ } & {
582
594
  path?: string | undefined;
583
595
  };
584
596
  output: _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<string, "core.routing.path", {}> | _backstage_frontend_plugin_api.ConfigurableExtensionDataRef<_backstage_frontend_plugin_api.RouteRef<_backstage_frontend_plugin_api.AnyRouteRefParams>, "core.routing.ref", {
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-catalog";
2
- var version = "1.31.1-next.1";
2
+ var version = "1.31.1";
3
3
  var description = "The Backstage plugin for browsing the Backstage catalog";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog",
3
- "version": "1.31.1-next.1",
3
+ "version": "1.31.1",
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.10.2-next.0",
74
- "@backstage/catalog-model": "1.7.5-next.0",
75
- "@backstage/core-compat-api": "0.4.4-next.1",
76
- "@backstage/core-components": "0.17.4-next.1",
77
- "@backstage/core-plugin-api": "1.10.9-next.0",
78
- "@backstage/errors": "1.2.7",
79
- "@backstage/frontend-plugin-api": "0.10.4-next.1",
80
- "@backstage/integration-react": "1.2.9-next.1",
81
- "@backstage/plugin-catalog-common": "1.1.5-next.0",
82
- "@backstage/plugin-catalog-react": "1.19.1-next.1",
83
- "@backstage/plugin-permission-react": "0.4.36-next.0",
84
- "@backstage/plugin-scaffolder-common": "1.5.12-next.0",
85
- "@backstage/plugin-search-common": "1.2.19-next.0",
86
- "@backstage/plugin-search-react": "1.9.2-next.1",
87
- "@backstage/plugin-techdocs-common": "0.1.1",
88
- "@backstage/plugin-techdocs-react": "1.3.1-next.1",
89
- "@backstage/types": "1.2.1",
90
- "@backstage/version-bridge": "1.0.11",
73
+ "@backstage/catalog-client": "^1.10.2",
74
+ "@backstage/catalog-model": "^1.7.5",
75
+ "@backstage/core-compat-api": "^0.4.4",
76
+ "@backstage/core-components": "^0.17.4",
77
+ "@backstage/core-plugin-api": "^1.10.9",
78
+ "@backstage/errors": "^1.2.7",
79
+ "@backstage/frontend-plugin-api": "^0.10.4",
80
+ "@backstage/integration-react": "^1.2.9",
81
+ "@backstage/plugin-catalog-common": "^1.1.5",
82
+ "@backstage/plugin-catalog-react": "^1.19.1",
83
+ "@backstage/plugin-permission-react": "^0.4.36",
84
+ "@backstage/plugin-scaffolder-common": "^1.6.0",
85
+ "@backstage/plugin-search-common": "^1.2.19",
86
+ "@backstage/plugin-search-react": "^1.9.2",
87
+ "@backstage/plugin-techdocs-common": "^0.1.1",
88
+ "@backstage/plugin-techdocs-react": "^1.3.1",
89
+ "@backstage/types": "^1.2.1",
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.33.1-next.1",
106
- "@backstage/core-app-api": "1.17.2-next.0",
107
- "@backstage/dev-utils": "1.1.12-next.1",
108
- "@backstage/frontend-test-utils": "0.3.4-next.1",
109
- "@backstage/plugin-permission-common": "0.9.1-next.0",
110
- "@backstage/test-utils": "1.7.10-next.1",
105
+ "@backstage/cli": "^0.33.1",
106
+ "@backstage/core-app-api": "^1.18.0",
107
+ "@backstage/dev-utils": "^1.1.12",
108
+ "@backstage/frontend-test-utils": "^0.3.4",
109
+ "@backstage/plugin-permission-common": "^0.9.1",
110
+ "@backstage/test-utils": "^1.7.10",
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",