@backstage/plugin-catalog 1.28.0 → 1.29.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # @backstage/plugin-catalog
2
2
 
3
+ ## 1.29.0-next.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @backstage/core-components@0.17.1-next.0
9
+ - @backstage/integration-react@1.2.6-next.0
10
+ - @backstage/frontend-plugin-api@0.10.1-next.0
11
+ - @backstage/plugin-catalog-react@1.16.1-next.1
12
+ - @backstage/plugin-search-react@1.8.8-next.0
13
+ - @backstage/core-compat-api@0.4.1-next.1
14
+ - @backstage/catalog-client@1.9.1
15
+ - @backstage/catalog-model@1.7.3
16
+ - @backstage/core-plugin-api@1.10.5
17
+ - @backstage/errors@1.2.7
18
+ - @backstage/types@1.2.1
19
+ - @backstage/plugin-catalog-common@1.1.3
20
+ - @backstage/plugin-permission-react@0.4.32
21
+ - @backstage/plugin-scaffolder-common@1.5.10
22
+ - @backstage/plugin-search-common@1.2.17
23
+
24
+ ## 1.29.0-next.0
25
+
26
+ ### Minor Changes
27
+
28
+ - 9454ef9: Added support of filtering based on system columns in catalog table
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies
33
+ - @backstage/plugin-catalog-react@1.16.1-next.0
34
+ - @backstage/core-compat-api@0.4.1-next.0
35
+ - @backstage/catalog-client@1.9.1
36
+ - @backstage/catalog-model@1.7.3
37
+ - @backstage/core-components@0.17.0
38
+ - @backstage/core-plugin-api@1.10.5
39
+ - @backstage/errors@1.2.7
40
+ - @backstage/frontend-plugin-api@0.10.0
41
+ - @backstage/integration-react@1.2.5
42
+ - @backstage/types@1.2.1
43
+ - @backstage/plugin-catalog-common@1.1.3
44
+ - @backstage/plugin-permission-react@0.4.32
45
+ - @backstage/plugin-scaffolder-common@1.5.10
46
+ - @backstage/plugin-search-common@1.2.17
47
+ - @backstage/plugin-search-react@1.8.7
48
+
3
49
  ## 1.28.0
4
50
 
5
51
  ### Minor Changes
@@ -30,6 +30,16 @@ const columnFactories = Object.freeze({
30
30
  return {
31
31
  title: "System",
32
32
  field: "resolved.partOfSystemRelationTitle",
33
+ customFilterAndSearch: (query, row) => {
34
+ if (!row.resolved.partOfSystemRelations) {
35
+ return false;
36
+ }
37
+ const systemNames = row.resolved.partOfSystemRelations.map(
38
+ (ref) => ref.name
39
+ );
40
+ const searchText = systemNames.join(", ").toLocaleUpperCase("en-US");
41
+ return searchText.includes(query.toLocaleUpperCase("en-US"));
42
+ },
33
43
  render: ({ resolved }) => /* @__PURE__ */ React.createElement(
34
44
  EntityRefLinks,
35
45
  {
@@ -1 +1 @@
1
- {"version":3,"file":"columns.esm.js","sources":["../../../src/components/CatalogTable/columns.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\nimport React from 'react';\nimport {\n humanizeEntityRef,\n EntityRefLink,\n EntityRefLinks,\n} from '@backstage/plugin-catalog-react';\nimport Chip from '@material-ui/core/Chip';\nimport { CatalogTableRow } from './types';\nimport { OverflowTooltip, TableColumn } from '@backstage/core-components';\nimport { Entity } from '@backstage/catalog-model';\nimport { JsonArray } from '@backstage/types';\n\n// The columnFactories symbol is not directly exported, but through the\n// CatalogTable.columns field.\n/** @public */\nexport const columnFactories = Object.freeze({\n createNameColumn(options?: {\n defaultKind?: string;\n }): TableColumn<CatalogTableRow> {\n function formatContent(entity: Entity): string {\n return (\n entity.metadata?.title ||\n humanizeEntityRef(entity, {\n defaultKind: options?.defaultKind,\n })\n );\n }\n\n return {\n title: 'Name',\n field: 'resolved.entityRef',\n highlight: true,\n customSort({ entity: entity1 }, { entity: entity2 }) {\n // TODO: We could implement this more efficiently by comparing field by field.\n // This has similar issues as above.\n return formatContent(entity1).localeCompare(formatContent(entity2));\n },\n render: ({ entity }) => (\n <EntityRefLink\n entityRef={entity}\n defaultKind={options?.defaultKind || 'Component'}\n />\n ),\n };\n },\n createSystemColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'System',\n field: 'resolved.partOfSystemRelationTitle',\n render: ({ resolved }) => (\n <EntityRefLinks\n entityRefs={resolved.partOfSystemRelations}\n defaultKind=\"system\"\n />\n ),\n };\n },\n createOwnerColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Owner',\n field: 'resolved.ownedByRelationsTitle',\n render: ({ resolved }) => (\n <EntityRefLinks\n entityRefs={resolved.ownedByRelations}\n defaultKind=\"group\"\n />\n ),\n };\n },\n createSpecTargetsColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Targets',\n field: 'entity.spec.targets',\n customFilterAndSearch: (query, row) => {\n let targets: JsonArray = [];\n if (\n row.entity?.spec?.targets &&\n Array.isArray(row.entity?.spec?.targets)\n ) {\n targets = row.entity?.spec?.targets;\n } else if (row.entity?.spec?.target) {\n targets = [row.entity?.spec?.target];\n }\n return targets\n .join(', ')\n .toLocaleUpperCase('en-US')\n .includes(query.toLocaleUpperCase('en-US'));\n },\n render: ({ entity }) => (\n <>\n {(entity?.spec?.targets || entity?.spec?.target) && (\n <OverflowTooltip\n text={(\n (entity!.spec!.targets as JsonArray) || [entity.spec.target]\n ).join(', ')}\n placement=\"bottom-start\"\n />\n )}\n </>\n ),\n };\n },\n createSpecTypeColumn(\n options: {\n hidden: boolean;\n } = { hidden: false },\n ): TableColumn<CatalogTableRow> {\n return {\n title: 'Type',\n field: 'entity.spec.type',\n hidden: options.hidden,\n width: 'auto',\n };\n },\n createSpecLifecycleColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Lifecycle',\n field: 'entity.spec.lifecycle',\n };\n },\n createMetadataDescriptionColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Description',\n field: 'entity.metadata.description',\n render: ({ entity }) => (\n <OverflowTooltip\n text={entity.metadata.description}\n placement=\"bottom-start\"\n />\n ),\n width: 'auto',\n };\n },\n createTagsColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Tags',\n field: 'entity.metadata.tags',\n cellStyle: {\n padding: '0px 16px 0px 20px',\n },\n render: ({ entity }) => (\n <>\n {entity.metadata.tags &&\n entity.metadata.tags.map(t => (\n <Chip\n key={t}\n label={t}\n size=\"small\"\n variant=\"outlined\"\n style={{ marginBottom: '0px' }}\n />\n ))}\n </>\n ),\n width: 'auto',\n };\n },\n createTitleColumn(options?: {\n hidden?: boolean;\n }): TableColumn<CatalogTableRow> {\n return {\n title: 'Title',\n field: 'entity.metadata.title',\n hidden: options?.hidden,\n searchable: true,\n };\n },\n createLabelColumn(\n key: string,\n options?: { title?: string; defaultValue?: string },\n ): TableColumn<CatalogTableRow> {\n function formatContent(keyLabel: string, entity: Entity): string {\n const labels: Record<string, string> | undefined =\n entity.metadata?.labels;\n return (labels && labels[keyLabel]) || '';\n }\n\n return {\n title: options?.title || 'Label',\n field: 'entity.metadata.labels',\n cellStyle: {\n padding: '0px 16px 0px 20px',\n },\n customSort({ entity: entity1 }, { entity: entity2 }) {\n return formatContent(key, entity1).localeCompare(\n formatContent(key, entity2),\n );\n },\n render: ({ entity }: { entity: Entity }) => {\n const labels: Record<string, string> | undefined =\n entity.metadata?.labels;\n const specifiedLabelValue =\n (labels && labels[key]) || options?.defaultValue;\n return (\n <>\n {specifiedLabelValue && (\n <Chip\n key={specifiedLabelValue}\n label={specifiedLabelValue}\n size=\"small\"\n variant=\"outlined\"\n />\n )}\n </>\n );\n },\n width: 'auto',\n };\n },\n createNamespaceColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Namespace',\n field: 'entity.metadata.namespace',\n width: 'auto',\n };\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"columns.esm.js","sources":["../../../src/components/CatalogTable/columns.tsx"],"sourcesContent":["/*\n * Copyright 2021 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 */\nimport React from 'react';\nimport {\n humanizeEntityRef,\n EntityRefLink,\n EntityRefLinks,\n} from '@backstage/plugin-catalog-react';\nimport Chip from '@material-ui/core/Chip';\nimport { CatalogTableRow } from './types';\nimport { OverflowTooltip, TableColumn } from '@backstage/core-components';\nimport { Entity } from '@backstage/catalog-model';\nimport { JsonArray } from '@backstage/types';\n\n// The columnFactories symbol is not directly exported, but through the\n// CatalogTable.columns field.\n/** @public */\nexport const columnFactories = Object.freeze({\n createNameColumn(options?: {\n defaultKind?: string;\n }): TableColumn<CatalogTableRow> {\n function formatContent(entity: Entity): string {\n return (\n entity.metadata?.title ||\n humanizeEntityRef(entity, {\n defaultKind: options?.defaultKind,\n })\n );\n }\n\n return {\n title: 'Name',\n field: 'resolved.entityRef',\n highlight: true,\n customSort({ entity: entity1 }, { entity: entity2 }) {\n // TODO: We could implement this more efficiently by comparing field by field.\n // This has similar issues as above.\n return formatContent(entity1).localeCompare(formatContent(entity2));\n },\n render: ({ entity }) => (\n <EntityRefLink\n entityRef={entity}\n defaultKind={options?.defaultKind || 'Component'}\n />\n ),\n };\n },\n createSystemColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'System',\n field: 'resolved.partOfSystemRelationTitle',\n customFilterAndSearch: (query, row) => {\n if (!row.resolved.partOfSystemRelations) {\n return false;\n }\n\n const systemNames = row.resolved.partOfSystemRelations.map(\n ref => ref.name,\n ); // Extract system names from entityRefs\n\n const searchText = systemNames.join(', ').toLocaleUpperCase('en-US');\n return searchText.includes(query.toLocaleUpperCase('en-US'));\n },\n render: ({ resolved }) => (\n <EntityRefLinks\n entityRefs={resolved.partOfSystemRelations}\n defaultKind=\"system\"\n />\n ),\n };\n },\n createOwnerColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Owner',\n field: 'resolved.ownedByRelationsTitle',\n render: ({ resolved }) => (\n <EntityRefLinks\n entityRefs={resolved.ownedByRelations}\n defaultKind=\"group\"\n />\n ),\n };\n },\n createSpecTargetsColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Targets',\n field: 'entity.spec.targets',\n customFilterAndSearch: (query, row) => {\n let targets: JsonArray = [];\n if (\n row.entity?.spec?.targets &&\n Array.isArray(row.entity?.spec?.targets)\n ) {\n targets = row.entity?.spec?.targets;\n } else if (row.entity?.spec?.target) {\n targets = [row.entity?.spec?.target];\n }\n return targets\n .join(', ')\n .toLocaleUpperCase('en-US')\n .includes(query.toLocaleUpperCase('en-US'));\n },\n render: ({ entity }) => (\n <>\n {(entity?.spec?.targets || entity?.spec?.target) && (\n <OverflowTooltip\n text={(\n (entity!.spec!.targets as JsonArray) || [entity.spec.target]\n ).join(', ')}\n placement=\"bottom-start\"\n />\n )}\n </>\n ),\n };\n },\n createSpecTypeColumn(\n options: {\n hidden: boolean;\n } = { hidden: false },\n ): TableColumn<CatalogTableRow> {\n return {\n title: 'Type',\n field: 'entity.spec.type',\n hidden: options.hidden,\n width: 'auto',\n };\n },\n createSpecLifecycleColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Lifecycle',\n field: 'entity.spec.lifecycle',\n };\n },\n createMetadataDescriptionColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Description',\n field: 'entity.metadata.description',\n render: ({ entity }) => (\n <OverflowTooltip\n text={entity.metadata.description}\n placement=\"bottom-start\"\n />\n ),\n width: 'auto',\n };\n },\n createTagsColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Tags',\n field: 'entity.metadata.tags',\n cellStyle: {\n padding: '0px 16px 0px 20px',\n },\n render: ({ entity }) => (\n <>\n {entity.metadata.tags &&\n entity.metadata.tags.map(t => (\n <Chip\n key={t}\n label={t}\n size=\"small\"\n variant=\"outlined\"\n style={{ marginBottom: '0px' }}\n />\n ))}\n </>\n ),\n width: 'auto',\n };\n },\n createTitleColumn(options?: {\n hidden?: boolean;\n }): TableColumn<CatalogTableRow> {\n return {\n title: 'Title',\n field: 'entity.metadata.title',\n hidden: options?.hidden,\n searchable: true,\n };\n },\n createLabelColumn(\n key: string,\n options?: { title?: string; defaultValue?: string },\n ): TableColumn<CatalogTableRow> {\n function formatContent(keyLabel: string, entity: Entity): string {\n const labels: Record<string, string> | undefined =\n entity.metadata?.labels;\n return (labels && labels[keyLabel]) || '';\n }\n\n return {\n title: options?.title || 'Label',\n field: 'entity.metadata.labels',\n cellStyle: {\n padding: '0px 16px 0px 20px',\n },\n customSort({ entity: entity1 }, { entity: entity2 }) {\n return formatContent(key, entity1).localeCompare(\n formatContent(key, entity2),\n );\n },\n render: ({ entity }: { entity: Entity }) => {\n const labels: Record<string, string> | undefined =\n entity.metadata?.labels;\n const specifiedLabelValue =\n (labels && labels[key]) || options?.defaultValue;\n return (\n <>\n {specifiedLabelValue && (\n <Chip\n key={specifiedLabelValue}\n label={specifiedLabelValue}\n size=\"small\"\n variant=\"outlined\"\n />\n )}\n </>\n );\n },\n width: 'auto',\n };\n },\n createNamespaceColumn(): TableColumn<CatalogTableRow> {\n return {\n title: 'Namespace',\n field: 'entity.metadata.namespace',\n width: 'auto',\n };\n },\n});\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog",
3
- "version": "1.28.0",
3
+ "version": "1.29.0-next.1",
4
4
  "description": "The Backstage plugin for browsing the Backstage catalog",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -70,21 +70,21 @@
70
70
  "test": "backstage-cli package test"
71
71
  },
72
72
  "dependencies": {
73
- "@backstage/catalog-client": "^1.9.1",
74
- "@backstage/catalog-model": "^1.7.3",
75
- "@backstage/core-compat-api": "^0.4.0",
76
- "@backstage/core-components": "^0.17.0",
77
- "@backstage/core-plugin-api": "^1.10.5",
78
- "@backstage/errors": "^1.2.7",
79
- "@backstage/frontend-plugin-api": "^0.10.0",
80
- "@backstage/integration-react": "^1.2.5",
81
- "@backstage/plugin-catalog-common": "^1.1.3",
82
- "@backstage/plugin-catalog-react": "^1.16.0",
83
- "@backstage/plugin-permission-react": "^0.4.32",
84
- "@backstage/plugin-scaffolder-common": "^1.5.10",
85
- "@backstage/plugin-search-common": "^1.2.17",
86
- "@backstage/plugin-search-react": "^1.8.7",
87
- "@backstage/types": "^1.2.1",
73
+ "@backstage/catalog-client": "1.9.1",
74
+ "@backstage/catalog-model": "1.7.3",
75
+ "@backstage/core-compat-api": "0.4.1-next.1",
76
+ "@backstage/core-components": "0.17.1-next.0",
77
+ "@backstage/core-plugin-api": "1.10.5",
78
+ "@backstage/errors": "1.2.7",
79
+ "@backstage/frontend-plugin-api": "0.10.1-next.0",
80
+ "@backstage/integration-react": "1.2.6-next.0",
81
+ "@backstage/plugin-catalog-common": "1.1.3",
82
+ "@backstage/plugin-catalog-react": "1.16.1-next.1",
83
+ "@backstage/plugin-permission-react": "0.4.32",
84
+ "@backstage/plugin-scaffolder-common": "1.5.10",
85
+ "@backstage/plugin-search-common": "1.2.17",
86
+ "@backstage/plugin-search-react": "1.8.8-next.0",
87
+ "@backstage/types": "1.2.1",
88
88
  "@material-ui/core": "^4.12.2",
89
89
  "@material-ui/icons": "^4.9.1",
90
90
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -99,12 +99,12 @@
99
99
  "zen-observable": "^0.10.0"
100
100
  },
101
101
  "devDependencies": {
102
- "@backstage/cli": "^0.31.0",
103
- "@backstage/core-app-api": "^1.16.0",
104
- "@backstage/dev-utils": "^1.1.8",
105
- "@backstage/frontend-test-utils": "^0.3.0",
106
- "@backstage/plugin-permission-common": "^0.8.4",
107
- "@backstage/test-utils": "^1.7.6",
102
+ "@backstage/cli": "0.32.0-next.1",
103
+ "@backstage/core-app-api": "1.16.0",
104
+ "@backstage/dev-utils": "1.1.9-next.1",
105
+ "@backstage/frontend-test-utils": "0.3.1-next.0",
106
+ "@backstage/plugin-permission-common": "0.8.4",
107
+ "@backstage/test-utils": "1.7.6",
108
108
  "@testing-library/dom": "^10.0.0",
109
109
  "@testing-library/jest-dom": "^6.0.0",
110
110
  "@testing-library/react": "^16.0.0",