@backstage/plugin-catalog 1.32.3-next.0 → 1.33.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,28 @@
1
1
  # @backstage/plugin-catalog
2
2
 
3
+ ## 1.33.0-next.1
4
+
5
+ ### Minor Changes
6
+
7
+ - 05aac34: Migrated `DeleteEntityDialog` and `EntityOrphanWarning` components to Backstage UI.
8
+
9
+ The `deleteEntity.description` translation key no longer includes "Click here to delete" text. A new `deleteEntity.actionButtonTitle` key was added for the action button.
10
+
11
+ ### Patch Changes
12
+
13
+ - 8d4c48b: Fixed vertical spacing between tags in the catalog table.
14
+ - e8258d0: The default entity content layout still supports rendering summary cards at runtime for backward compatibility, but logs a console warning when they are detected to help identify where migration is needed.
15
+ - Updated dependencies
16
+ - @backstage/plugin-catalog-react@1.22.0-next.1
17
+ - @backstage/ui@0.12.0-next.1
18
+ - @backstage/frontend-plugin-api@0.14.0-next.1
19
+ - @backstage/core-compat-api@0.5.8-next.1
20
+ - @backstage/plugin-search-react@1.10.3-next.1
21
+ - @backstage/core-components@0.18.7-next.1
22
+ - @backstage/plugin-techdocs-react@1.3.8-next.0
23
+ - @backstage/integration-react@1.2.15-next.1
24
+ - @backstage/plugin-scaffolder-common@1.7.6-next.1
25
+
3
26
  ## 1.32.3-next.0
4
27
 
5
28
  ### Patch Changes
@@ -7,6 +7,7 @@ import { hasRelationWarnings, EntityRelationWarning } from '../components/Entity
7
7
  import { hasCatalogProcessingErrors, EntityProcessingErrorsPanel } from '../components/EntityProcessingErrorsPanel/EntityProcessingErrorsPanel.esm.js';
8
8
  import { HorizontalScrollGrid } from '@backstage/core-components';
9
9
 
10
+ let hasLoggedSummaryWarning = false;
10
11
  const useStyles = makeStyles((theme) => ({
11
12
  root: {
12
13
  display: "flex",
@@ -113,6 +114,12 @@ function DefaultEntityContentLayout(props) {
113
114
  const contentCards = cards.filter(
114
115
  (card) => !card.type || card.type === "content"
115
116
  );
117
+ if (summaryCards.length > 0 && !hasLoggedSummaryWarning) {
118
+ hasLoggedSummaryWarning = true;
119
+ console.warn(
120
+ "The 'summary' entity card type has been removed. Please update your cards to use 'content' or 'info' types instead."
121
+ );
122
+ }
116
123
  const classes = useStyles({
117
124
  infoCards: !!infoCards.length,
118
125
  summaryCards: !!summaryCards.length,
@@ -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 { Fragment } from 'react';\nimport { makeStyles, Theme } from '@material-ui/core/styles';\nimport { EntityContentLayoutProps } from '@backstage/plugin-catalog-react/alpha';\nimport { EntitySwitch } from '../components/EntitySwitch';\nimport {\n EntityOrphanWarning,\n isOrphan,\n} from '../components/EntityOrphanWarning';\nimport {\n EntityRelationWarning,\n hasRelationWarnings,\n} from '../components/EntityRelationWarning';\nimport {\n EntityProcessingErrorsPanel,\n hasCatalogProcessingErrors,\n} from '../components/EntityProcessingErrorsPanel';\nimport { HorizontalScrollGrid } from '@backstage/core-components';\n\nconst useStyles = makeStyles<\n Theme,\n { infoCards: boolean; summaryCards: boolean; contentCards: boolean }\n>(theme => ({\n root: {\n display: 'flex',\n flexFlow: 'column nowrap',\n gap: theme.spacing(3),\n },\n warningArea: {\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(2),\n marginBottom: theme.spacing(3),\n '&:empty': {\n marginBottom: 0,\n display: 'none',\n },\n },\n mainContent: {\n display: 'flex',\n flexFlow: 'column',\n gap: theme.spacing(3),\n alignItems: 'stretch',\n minWidth: 0,\n },\n infoArea: {\n display: 'flex',\n flexFlow: 'column nowrap',\n alignItems: 'stretch',\n gap: theme.spacing(3),\n minWidth: 0,\n '& > *': {\n flexShrink: 0,\n flexGrow: 0,\n },\n },\n summaryArea: {\n minWidth: 0,\n margin: theme.spacing(1), // To counteract MUI negative grid margin\n },\n summaryCard: {\n flex: '0 0 auto',\n width: '100%',\n '& + &': {\n marginLeft: theme.spacing(3),\n },\n },\n contentArea: {\n display: 'flex',\n flexFlow: 'column',\n gap: theme.spacing(3),\n alignItems: 'stretch',\n minWidth: 0,\n },\n [theme.breakpoints.up('md')]: {\n root: {\n display: 'grid',\n gap: theme.spacing(3),\n gridTemplateAreas: ({ summaryCards }) => `\n \"${summaryCards ? 'summary' : 'content'} info\"\n \"content info\"\n `,\n gridTemplateColumns: ({ infoCards }) => (infoCards ? '2fr 1fr' : '1fr'),\n alignItems: 'start',\n },\n mainContent: {\n display: 'contents',\n },\n contentArea: {\n gridArea: 'content',\n },\n summaryArea: {\n gridArea: 'summary',\n margin: theme.spacing(1), // To counteract MUI negative grid margin\n },\n infoArea: {\n gridArea: 'info',\n position: 'sticky',\n top: theme.spacing(3),\n // this is a little unfortunate, but it's required to make the info cards scrollable\n // in a fixed container of the full height when it's stuck.\n // 100% doesn't work as that's the height of the entire layout, which is what powers the card scrolling.\n maxHeight: '100vh',\n overflowY: 'auto',\n alignSelf: 'start',\n alignItems: 'stretch',\n // Hide the scrollbar for the inner info cards\n // kind of an accessibility nightmare, but we see.\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n summaryCard: {\n width: 'auto',\n },\n },\n}));\n\nexport function DefaultEntityContentLayout(props: EntityContentLayoutProps) {\n const { cards } = props;\n\n const infoCards = cards.filter(card => card.type === 'info');\n const summaryCards = cards.filter(card => card.type === 'summary');\n const contentCards = cards.filter(\n card => !card.type || card.type === 'content',\n );\n\n const classes = useStyles({\n infoCards: !!infoCards.length,\n summaryCards: !!summaryCards.length,\n contentCards: !!contentCards.length,\n });\n\n return (\n <>\n <div className={classes.warningArea}>\n <EntitySwitch>\n <EntitySwitch.Case if={isOrphan}>\n <EntityOrphanWarning />\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasRelationWarnings}>\n <EntityRelationWarning />\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasCatalogProcessingErrors}>\n <EntityProcessingErrorsPanel />\n </EntitySwitch.Case>\n </EntitySwitch>\n </div>\n <div className={classes.root}>\n {infoCards.length > 0 ? (\n <div className={classes.infoArea}>\n {infoCards.map((card, index) => (\n <Fragment key={card.element.key ?? index}>\n {card.element}\n </Fragment>\n ))}\n </div>\n ) : null}\n <div className={classes.mainContent}>\n {summaryCards.length > 0 ? (\n <div className={classes.summaryArea}>\n <HorizontalScrollGrid scrollStep={400} scrollSpeed={100}>\n {summaryCards.map((card, index) => (\n <div\n key={card.element.key ?? index}\n className={classes.summaryCard}\n >\n {card.element}\n </div>\n ))}\n </HorizontalScrollGrid>\n </div>\n ) : null}\n {contentCards.length > 0 ? (\n <div className={classes.contentArea}>\n {contentCards.map((card, index) => (\n <Fragment key={card.element.key ?? index}>\n {card.element}\n </Fragment>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n </>\n );\n}\n"],"names":["Fragment"],"mappings":"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"}
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\n// Module-level flag to ensure deprecation warning is only logged once\nlet hasLoggedSummaryWarning = false;\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 // Keep support for 'summary' type at runtime for backward compatibility\n // even though it's been removed from the type system\n const summaryCards = cards.filter(card => card.type === ('summary' as any));\n const contentCards = cards.filter(\n card => !card.type || card.type === 'content',\n );\n\n if (summaryCards.length > 0 && !hasLoggedSummaryWarning) {\n hasLoggedSummaryWarning = true;\n // eslint-disable-next-line no-console\n console.warn(\n \"The 'summary' entity card type has been removed. Please update your cards to use 'content' or 'info' types instead.\",\n );\n }\n\n const classes = useStyles({\n infoCards: !!infoCards.length,\n summaryCards: !!summaryCards.length,\n contentCards: !!contentCards.length,\n });\n\n return (\n <>\n <div className={classes.warningArea}>\n <EntitySwitch>\n <EntitySwitch.Case if={isOrphan}>\n <EntityOrphanWarning />\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasRelationWarnings}>\n <EntityRelationWarning />\n </EntitySwitch.Case>\n </EntitySwitch>\n\n <EntitySwitch>\n <EntitySwitch.Case if={hasCatalogProcessingErrors}>\n <EntityProcessingErrorsPanel />\n </EntitySwitch.Case>\n </EntitySwitch>\n </div>\n <div className={classes.root}>\n {infoCards.length > 0 ? (\n <div className={classes.infoArea}>\n {infoCards.map((card, index) => (\n <Fragment key={card.element.key ?? index}>\n {card.element}\n </Fragment>\n ))}\n </div>\n ) : null}\n <div className={classes.mainContent}>\n {summaryCards.length > 0 ? (\n <div className={classes.summaryArea}>\n <HorizontalScrollGrid scrollStep={400} scrollSpeed={100}>\n {summaryCards.map((card, index) => (\n <div\n key={card.element.key ?? index}\n className={classes.summaryCard}\n >\n {card.element}\n </div>\n ))}\n </HorizontalScrollGrid>\n </div>\n ) : null}\n {contentCards.length > 0 ? (\n <div className={classes.contentArea}>\n {contentCards.map((card, index) => (\n <Fragment key={card.element.key ?? index}>\n {card.element}\n </Fragment>\n ))}\n </div>\n ) : null}\n </div>\n </div>\n </>\n );\n}\n"],"names":["Fragment"],"mappings":"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"}
@@ -105,7 +105,8 @@ const catalogTranslationRef = createTranslationRef({
105
105
  dialogTitle: "Are you sure you want to delete this entity?",
106
106
  deleteButtonTitle: "Delete",
107
107
  cancelButtonTitle: "Cancel",
108
- description: "This entity is not referenced by any location and is therefore not receiving updates. Click here to delete."
108
+ description: "This entity is not referenced by any location and is therefore not receiving updates.",
109
+ actionButtonTitle: "Delete entity"
109
110
  },
110
111
  entityProcessingErrorsDescription: "The error below originates from",
111
112
  entityRelationWarningDescription: "This entity has relations to other entities, which can't be found in the catalog.\n Entities not found are: ",
@@ -1 +1 @@
1
- {"version":3,"file":"translation.esm.js","sources":["../../src/alpha/translation.ts"],"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 { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const catalogTranslationRef = createTranslationRef({\n id: 'catalog',\n messages: {\n indexPage: {\n title: `{{orgName}} Catalog`,\n createButtonTitle: 'Create',\n supportButtonContent: 'All your software catalog entities',\n },\n aboutCard: {\n title: 'About',\n refreshButtonTitle: 'Schedule entity refresh',\n editButtonTitle: 'Edit Metadata',\n createSimilarButtonTitle: 'Create something similar',\n refreshScheduledMessage: 'Refresh scheduled',\n launchTemplate: 'Launch Template',\n viewTechdocs: 'View TechDocs',\n viewSource: 'View Source',\n descriptionField: {\n label: 'Description',\n value: 'No description',\n },\n ownerField: {\n label: 'Owner',\n value: 'No Owner',\n },\n domainField: {\n label: 'Domain',\n value: 'No Domain',\n },\n systemField: {\n label: 'System',\n value: 'No System',\n },\n parentComponentField: {\n label: 'Parent Component',\n value: 'No Parent Component',\n },\n typeField: {\n label: 'Type',\n },\n lifecycleField: {\n label: 'Lifecycle',\n },\n tagsField: {\n label: 'Tags',\n value: 'No Tags',\n },\n targetsField: {\n label: 'Targets',\n },\n },\n searchResultItem: {\n lifecycle: 'Lifecycle',\n Owner: 'Owner',\n },\n catalogTable: {\n warningPanelTitle: 'Could not fetch catalog entities.',\n viewActionTitle: 'View',\n editActionTitle: 'Edit',\n starActionTitle: 'Add to favorites',\n unStarActionTitle: 'Remove from favorites',\n },\n dependencyOfComponentsCard: {\n title: 'Dependency of components',\n emptyMessage: 'No component depends on this component',\n },\n dependsOnComponentsCard: {\n title: 'Depends on components',\n emptyMessage: 'No component is a dependency of this component',\n },\n dependsOnResourcesCard: {\n title: 'Depends on resources',\n emptyMessage: 'No resource is a dependency of this component',\n },\n entityContextMenu: {\n copiedMessage: 'Copied!',\n moreButtonTitle: 'More',\n inspectMenuTitle: 'Inspect entity',\n copyURLMenuTitle: 'Copy entity URL',\n unregisterMenuTitle: 'Unregister entity',\n },\n entityLabelsCard: {\n title: 'Labels',\n emptyDescription:\n 'No labels defined for this entity. You can add labels to your entity YAML as shown in the highlighted example below:',\n readMoreButtonTitle: 'Read more',\n },\n entityLabels: {\n warningPanelTitle: 'Entity not found',\n ownerLabel: 'Owner',\n lifecycleLabel: 'Lifecycle',\n },\n entityLinksCard: {\n title: 'Links',\n emptyDescription:\n 'No links defined for this entity. You can add links to your entity YAML as shown in the highlighted example below:',\n readMoreButtonTitle: 'Read more',\n },\n entityNotFound: {\n title: 'Entity was not found',\n description:\n 'Want to help us build this? Check out our Getting Started documentation.',\n docButtonTitle: 'DOCS',\n },\n deleteEntity: {\n dialogTitle: 'Are you sure you want to delete this entity?',\n deleteButtonTitle: 'Delete',\n cancelButtonTitle: 'Cancel',\n description:\n 'This entity is not referenced by any location and is therefore not receiving updates. Click here to delete.',\n },\n entityProcessingErrorsDescription: 'The error below originates from',\n entityRelationWarningDescription:\n \"This entity has relations to other entities, which can't be found in the catalog.\\n Entities not found are: \",\n hasComponentsCard: {\n title: 'Has components',\n emptyMessage: 'No component is part of this system',\n },\n hasResourcesCard: {\n title: 'Has resources',\n emptyMessage: 'No resource is part of this system',\n },\n hasSubcomponentsCard: {\n title: 'Has subcomponents',\n emptyMessage: 'No subcomponent is part of this component',\n },\n hasSubdomainsCard: {\n title: 'Has subdomains',\n emptyMessage: 'No subdomain is part of this domain',\n },\n hasSystemsCard: {\n title: 'Has systems',\n emptyMessage: 'No system is part of this domain',\n },\n relatedEntitiesCard: {\n emptyHelpLinkTitle: 'Learn how to change this',\n },\n systemDiagramCard: {\n title: 'System Diagram',\n description: 'Use pinch & zoom to move around the diagram.',\n edgeLabels: {\n partOf: 'part of',\n provides: 'provides',\n dependsOn: 'depends on',\n },\n },\n },\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"translation.esm.js","sources":["../../src/alpha/translation.ts"],"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 { createTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/** @alpha */\nexport const catalogTranslationRef = createTranslationRef({\n id: 'catalog',\n messages: {\n indexPage: {\n title: `{{orgName}} Catalog`,\n createButtonTitle: 'Create',\n supportButtonContent: 'All your software catalog entities',\n },\n aboutCard: {\n title: 'About',\n refreshButtonTitle: 'Schedule entity refresh',\n editButtonTitle: 'Edit Metadata',\n createSimilarButtonTitle: 'Create something similar',\n refreshScheduledMessage: 'Refresh scheduled',\n launchTemplate: 'Launch Template',\n viewTechdocs: 'View TechDocs',\n viewSource: 'View Source',\n descriptionField: {\n label: 'Description',\n value: 'No description',\n },\n ownerField: {\n label: 'Owner',\n value: 'No Owner',\n },\n domainField: {\n label: 'Domain',\n value: 'No Domain',\n },\n systemField: {\n label: 'System',\n value: 'No System',\n },\n parentComponentField: {\n label: 'Parent Component',\n value: 'No Parent Component',\n },\n typeField: {\n label: 'Type',\n },\n lifecycleField: {\n label: 'Lifecycle',\n },\n tagsField: {\n label: 'Tags',\n value: 'No Tags',\n },\n targetsField: {\n label: 'Targets',\n },\n },\n searchResultItem: {\n lifecycle: 'Lifecycle',\n Owner: 'Owner',\n },\n catalogTable: {\n warningPanelTitle: 'Could not fetch catalog entities.',\n viewActionTitle: 'View',\n editActionTitle: 'Edit',\n starActionTitle: 'Add to favorites',\n unStarActionTitle: 'Remove from favorites',\n },\n dependencyOfComponentsCard: {\n title: 'Dependency of components',\n emptyMessage: 'No component depends on this component',\n },\n dependsOnComponentsCard: {\n title: 'Depends on components',\n emptyMessage: 'No component is a dependency of this component',\n },\n dependsOnResourcesCard: {\n title: 'Depends on resources',\n emptyMessage: 'No resource is a dependency of this component',\n },\n entityContextMenu: {\n copiedMessage: 'Copied!',\n moreButtonTitle: 'More',\n inspectMenuTitle: 'Inspect entity',\n copyURLMenuTitle: 'Copy entity URL',\n unregisterMenuTitle: 'Unregister entity',\n },\n entityLabelsCard: {\n title: 'Labels',\n emptyDescription:\n 'No labels defined for this entity. You can add labels to your entity YAML as shown in the highlighted example below:',\n readMoreButtonTitle: 'Read more',\n },\n entityLabels: {\n warningPanelTitle: 'Entity not found',\n ownerLabel: 'Owner',\n lifecycleLabel: 'Lifecycle',\n },\n entityLinksCard: {\n title: 'Links',\n emptyDescription:\n 'No links defined for this entity. You can add links to your entity YAML as shown in the highlighted example below:',\n readMoreButtonTitle: 'Read more',\n },\n entityNotFound: {\n title: 'Entity was not found',\n description:\n 'Want to help us build this? Check out our Getting Started documentation.',\n docButtonTitle: 'DOCS',\n },\n deleteEntity: {\n dialogTitle: 'Are you sure you want to delete this entity?',\n deleteButtonTitle: 'Delete',\n cancelButtonTitle: 'Cancel',\n description:\n 'This entity is not referenced by any location and is therefore not receiving updates.',\n actionButtonTitle: 'Delete entity',\n },\n entityProcessingErrorsDescription: 'The error below originates from',\n entityRelationWarningDescription:\n \"This entity has relations to other entities, which can't be found in the catalog.\\n Entities not found are: \",\n hasComponentsCard: {\n title: 'Has components',\n emptyMessage: 'No component is part of this system',\n },\n hasResourcesCard: {\n title: 'Has resources',\n emptyMessage: 'No resource is part of this system',\n },\n hasSubcomponentsCard: {\n title: 'Has subcomponents',\n emptyMessage: 'No subcomponent is part of this component',\n },\n hasSubdomainsCard: {\n title: 'Has subdomains',\n emptyMessage: 'No subdomain is part of this domain',\n },\n hasSystemsCard: {\n title: 'Has systems',\n emptyMessage: 'No system is part of this domain',\n },\n relatedEntitiesCard: {\n emptyHelpLinkTitle: 'Learn how to change this',\n },\n systemDiagramCard: {\n title: 'System Diagram',\n description: 'Use pinch & zoom to move around the diagram.',\n edgeLabels: {\n partOf: 'part of',\n provides: 'provides',\n dependsOn: 'depends on',\n },\n },\n },\n});\n"],"names":[],"mappings":"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"}
package/dist/alpha.d.ts CHANGED
@@ -157,11 +157,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
157
157
  "entity-card:catalog/about": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{
158
158
  config: {
159
159
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
160
- type: "content" | "summary" | "info" | undefined;
160
+ type: "content" | "info" | undefined;
161
161
  };
162
162
  configInput: {
163
163
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
164
- type?: "content" | "summary" | "info" | undefined;
164
+ type?: "content" | "info" | undefined;
165
165
  };
166
166
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
167
167
  optional: true;
@@ -194,11 +194,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
194
194
  name: "depends-on-components";
195
195
  config: {
196
196
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
197
- type: "content" | "summary" | "info" | undefined;
197
+ type: "content" | "info" | undefined;
198
198
  };
199
199
  configInput: {
200
200
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
201
- type?: "content" | "summary" | "info" | undefined;
201
+ type?: "content" | "info" | undefined;
202
202
  };
203
203
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
204
204
  optional: true;
@@ -219,11 +219,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
219
219
  name: "depends-on-resources";
220
220
  config: {
221
221
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
222
- type: "content" | "summary" | "info" | undefined;
222
+ type: "content" | "info" | undefined;
223
223
  };
224
224
  configInput: {
225
225
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
226
- type?: "content" | "summary" | "info" | undefined;
226
+ type?: "content" | "info" | undefined;
227
227
  };
228
228
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
229
229
  optional: true;
@@ -244,11 +244,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
244
244
  name: "has-components";
245
245
  config: {
246
246
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
247
- type: "content" | "summary" | "info" | undefined;
247
+ type: "content" | "info" | undefined;
248
248
  };
249
249
  configInput: {
250
250
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
251
- type?: "content" | "summary" | "info" | undefined;
251
+ type?: "content" | "info" | undefined;
252
252
  };
253
253
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
254
254
  optional: true;
@@ -269,11 +269,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
269
269
  name: "has-resources";
270
270
  config: {
271
271
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
272
- type: "content" | "summary" | "info" | undefined;
272
+ type: "content" | "info" | undefined;
273
273
  };
274
274
  configInput: {
275
275
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
276
- type?: "content" | "summary" | "info" | undefined;
276
+ type?: "content" | "info" | undefined;
277
277
  };
278
278
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
279
279
  optional: true;
@@ -294,11 +294,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
294
294
  name: "has-subcomponents";
295
295
  config: {
296
296
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
297
- type: "content" | "summary" | "info" | undefined;
297
+ type: "content" | "info" | undefined;
298
298
  };
299
299
  configInput: {
300
300
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
301
- type?: "content" | "summary" | "info" | undefined;
301
+ type?: "content" | "info" | undefined;
302
302
  };
303
303
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
304
304
  optional: true;
@@ -319,11 +319,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
319
319
  name: "has-subdomains";
320
320
  config: {
321
321
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
322
- type: "content" | "summary" | "info" | undefined;
322
+ type: "content" | "info" | undefined;
323
323
  };
324
324
  configInput: {
325
325
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
326
- type?: "content" | "summary" | "info" | undefined;
326
+ type?: "content" | "info" | undefined;
327
327
  };
328
328
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
329
329
  optional: true;
@@ -344,11 +344,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
344
344
  name: "has-systems";
345
345
  config: {
346
346
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
347
- type: "content" | "summary" | "info" | undefined;
347
+ type: "content" | "info" | undefined;
348
348
  };
349
349
  configInput: {
350
350
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
351
- type?: "content" | "summary" | "info" | undefined;
351
+ type?: "content" | "info" | undefined;
352
352
  };
353
353
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
354
354
  optional: true;
@@ -369,11 +369,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
369
369
  name: "labels";
370
370
  config: {
371
371
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
372
- type: "content" | "summary" | "info" | undefined;
372
+ type: "content" | "info" | undefined;
373
373
  };
374
374
  configInput: {
375
375
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
376
- type?: "content" | "summary" | "info" | undefined;
376
+ type?: "content" | "info" | undefined;
377
377
  };
378
378
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
379
379
  optional: true;
@@ -394,11 +394,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
394
394
  name: "links";
395
395
  config: {
396
396
  filter: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
397
- type: "content" | "summary" | "info" | undefined;
397
+ type: "content" | "info" | undefined;
398
398
  };
399
399
  configInput: {
400
400
  filter?: _backstage_plugin_catalog_react_alpha.EntityPredicate | undefined;
401
- type?: "content" | "summary" | "info" | undefined;
401
+ type?: "content" | "info" | undefined;
402
402
  };
403
403
  output: _backstage_frontend_plugin_api.ExtensionDataRef<react.JSX.Element, "core.reactElement", {}> | _backstage_frontend_plugin_api.ExtensionDataRef<(entity: _backstage_catalog_model.Entity) => boolean, "catalog.entity-filter-function", {
404
404
  optional: true;
@@ -671,10 +671,11 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin
671
671
 
672
672
  /** @alpha */
673
673
  declare const catalogTranslationRef: _backstage_frontend_plugin_api.TranslationRef<"catalog", {
674
- readonly "deleteEntity.description": "This entity is not referenced by any location and is therefore not receiving updates. Click here to delete.";
674
+ readonly "deleteEntity.description": "This entity is not referenced by any location and is therefore not receiving updates.";
675
675
  readonly "deleteEntity.cancelButtonTitle": "Cancel";
676
676
  readonly "deleteEntity.deleteButtonTitle": "Delete";
677
677
  readonly "deleteEntity.dialogTitle": "Are you sure you want to delete this entity?";
678
+ readonly "deleteEntity.actionButtonTitle": "Delete entity";
678
679
  readonly "indexPage.title": "{{orgName}} Catalog";
679
680
  readonly "indexPage.createButtonTitle": "Create";
680
681
  readonly "indexPage.supportButtonContent": "All your software catalog entities";
@@ -126,7 +126,7 @@ const columnFactories = Object.freeze({
126
126
  label: t,
127
127
  size: "small",
128
128
  variant: "outlined",
129
- style: { marginBottom: "0px" }
129
+ style: { margin: "2px" }
130
130
  },
131
131
  t
132
132
  )) }),
@@ -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 {\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';\nimport { EntityTableColumnTitle } from '@backstage/plugin-catalog-react/alpha';\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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"type\" />,\n field: 'entity.spec.type',\n hidden: options.hidden,\n width: 'auto',\n };\n },\n createSpecLifecycleColumn(): TableColumn<CatalogTableRow> {\n return {\n title: <EntityTableColumnTitle translationKey=\"lifecycle\" />,\n field: 'entity.spec.lifecycle',\n };\n },\n createMetadataDescriptionColumn(): TableColumn<CatalogTableRow> {\n return {\n title: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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 || (\n <EntityTableColumnTitle translationKey=\"label\" />\n ),\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: <EntityTableColumnTitle translationKey=\"namespace\" />,\n field: 'entity.metadata.namespace',\n width: 'auto',\n };\n },\n});\n"],"names":[],"mappings":";;;;;;AA8BO,MAAM,eAAA,GAAkB,OAAO,MAAA,CAAO;AAAA,EAC3C,iBAAiB,OAAA,EAEgB;AAC/B,IAAA,SAAS,cAAc,MAAA,EAAwB;AAC7C,MAAA,OACE,MAAA,CAAO,QAAA,EAAU,KAAA,IACjB,iBAAA,CAAkB,MAAA,EAAQ;AAAA,QACxB,aAAa,OAAA,EAAS;AAAA,OACvB,CAAA;AAAA,IAEL;AAEA,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,MAAA,EAAO,CAAA;AAAA,MACrD,KAAA,EAAO,oBAAA;AAAA,MACP,SAAA,EAAW,IAAA;AAAA,MACX,UAAA,CAAW,EAAE,MAAA,EAAQ,OAAA,IAAW,EAAE,MAAA,EAAQ,SAAQ,EAAG;AAGnD,QAAA,OAAO,cAAc,OAAO,CAAA,CAAE,aAAA,CAAc,aAAA,CAAc,OAAO,CAAC,CAAA;AAAA,MACpE,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,MAAA;AAAA,UACX,WAAA,EAAa,SAAS,WAAA,IAAe;AAAA;AAAA;AACvC,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,kBAAA,GAAmD;AACjD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,QAAA,EAAS,CAAA;AAAA,MACvD,KAAA,EAAO,oCAAA;AAAA,MACP,qBAAA,EAAuB,CAAC,KAAA,EAAO,GAAA,KAAQ;AACrC,QAAA,IAAI,CAAC,GAAA,CAAI,QAAA,CAAS,qBAAA,EAAuB;AACvC,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,MAAM,WAAA,GAAc,GAAA,CAAI,QAAA,CAAS,qBAAA,CAAsB,GAAA;AAAA,UACrD,SAAO,GAAA,CAAI;AAAA,SACb;AAEA,QAAA,MAAM,aAAa,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,CAAE,kBAAkB,OAAO,CAAA;AACnE,QAAA,OAAO,UAAA,CAAW,QAAA,CAAS,KAAA,CAAM,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAAA,MAC7D,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,QAAA,EAAS,qBAClB,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,YAAY,QAAA,CAAS,qBAAA;AAAA,UACrB,WAAA,EAAY;AAAA;AAAA;AACd,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,iBAAA,GAAkD;AAChD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,OAAA,EAAQ,CAAA;AAAA,MACtD,KAAA,EAAO,gCAAA;AAAA,MACP,MAAA,EAAQ,CAAC,EAAE,QAAA,EAAS,qBAClB,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,YAAY,QAAA,CAAS,gBAAA;AAAA,UACrB,WAAA,EAAY;AAAA;AAAA;AACd,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,uBAAA,GAAwD;AACtD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,SAAA,EAAU,CAAA;AAAA,MACxD,KAAA,EAAO,qBAAA;AAAA,MACP,qBAAA,EAAuB,CAAC,KAAA,EAAO,GAAA,KAAQ;AACrC,QAAA,IAAI,UAAqB,EAAC;AAC1B,QAAA,IACE,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,OAAA,IAClB,KAAA,CAAM,QAAQ,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAA,EACvC;AACA,UAAA,OAAA,GAAU,GAAA,CAAI,QAAQ,IAAA,EAAM,OAAA;AAAA,QAC9B,CAAA,MAAA,IAAW,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ;AACnC,UAAA,OAAA,GAAU,CAAC,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,MAAM,CAAA;AAAA,QACrC;AACA,QAAA,OAAO,OAAA,CACJ,IAAA,CAAK,IAAI,CAAA,CACT,iBAAA,CAAkB,OAAO,CAAA,CACzB,QAAA,CAAS,KAAA,CAAM,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAAA,MAC9C,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA,CAAA,QAAA,EAAA,EACI,QAAA,EAAA,CAAA,MAAA,EAAQ,IAAA,EAAM,OAAA,IAAW,MAAA,EAAQ,IAAA,EAAM,MAAA,qBACvC,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAA,CACG,MAAA,CAAQ,IAAA,CAAM,OAAA,IAAyB,CAAC,OAAO,IAAA,CAAK,MAAM,CAAA,EAC3D,IAAA,CAAK,IAAI,CAAA;AAAA,UACX,SAAA,EAAU;AAAA;AAAA,OACZ,EAEJ;AAAA,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,oBAAA,CACE,OAAA,GAEI,EAAE,MAAA,EAAQ,OAAM,EACU;AAC9B,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,MAAA,EAAO,CAAA;AAAA,MACrD,KAAA,EAAO,kBAAA;AAAA,MACP,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,yBAAA,GAA0D;AACxD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,WAAA,EAAY,CAAA;AAAA,MAC1D,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,+BAAA,GAAgE;AAC9D,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,aAAA,EAAc,CAAA;AAAA,MAC5D,KAAA,EAAO,6BAAA;AAAA,MACP,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,OAAO,QAAA,CAAS,WAAA;AAAA,UACtB,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MAEF,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,gBAAA,GAAiD;AAC/C,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,MAAA,EAAO,CAAA;AAAA,MACrD,KAAA,EAAO,sBAAA;AAAA,MACP,SAAA,EAAW;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,MAAA,CAAO,QAAA,CAAS,IAAA,IACf,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAA,qBACvB,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO,CAAA;AAAA,UACP,IAAA,EAAK,OAAA;AAAA,UACL,OAAA,EAAQ,UAAA;AAAA,UACR,KAAA,EAAO,EAAE,YAAA,EAAc,KAAA;AAAM,SAAA;AAAA,QAJxB;AAAA,OAMR,CAAA,EACL,CAAA;AAAA,MAEF,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,kBAAkB,OAAA,EAEe;AAC/B,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,OAAA,EAAQ,CAAA;AAAA,MACtD,KAAA,EAAO,uBAAA;AAAA,MACP,QAAQ,OAAA,EAAS,MAAA;AAAA,MACjB,UAAA,EAAY;AAAA,KACd;AAAA,EACF,CAAA;AAAA,EACA,iBAAA,CACE,KACA,OAAA,EAC8B;AAC9B,IAAA,SAAS,aAAA,CAAc,UAAkB,MAAA,EAAwB;AAC/D,MAAA,MAAM,MAAA,GACJ,OAAO,QAAA,EAAU,MAAA;AACnB,MAAA,OAAQ,MAAA,IAAU,MAAA,CAAO,QAAQ,CAAA,IAAM,EAAA;AAAA,IACzC;AAEA,IAAA,OAAO;AAAA,MACL,OAAO,OAAA,EAAS,KAAA,oBACd,GAAA,CAAC,sBAAA,EAAA,EAAuB,gBAAe,OAAA,EAAQ,CAAA;AAAA,MAEjD,KAAA,EAAO,wBAAA;AAAA,MACP,SAAA,EAAW;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,UAAA,CAAW,EAAE,MAAA,EAAQ,OAAA,IAAW,EAAE,MAAA,EAAQ,SAAQ,EAAG;AACnD,QAAA,OAAO,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA,CAAE,aAAA;AAAA,UACjC,aAAA,CAAc,KAAK,OAAO;AAAA,SAC5B;AAAA,MACF,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,KAA0B;AAC1C,QAAA,MAAM,MAAA,GACJ,OAAO,QAAA,EAAU,MAAA;AACnB,QAAA,MAAM,mBAAA,GACH,MAAA,IAAU,MAAA,CAAO,GAAG,KAAM,OAAA,EAAS,YAAA;AACtC,QAAA,uCAEK,QAAA,EAAA,mBAAA,oBACC,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO,mBAAA;AAAA,YACP,IAAA,EAAK,OAAA;AAAA,YACL,OAAA,EAAQ;AAAA,WAAA;AAAA,UAHH;AAAA,SAIP,EAEJ,CAAA;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,qBAAA,GAAsD;AACpD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,WAAA,EAAY,CAAA;AAAA,MAC1D,KAAA,EAAO,2BAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAAA,EACF;AACF,CAAC;;;;"}
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 {\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';\nimport { EntityTableColumnTitle } from '@backstage/plugin-catalog-react/alpha';\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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"type\" />,\n field: 'entity.spec.type',\n hidden: options.hidden,\n width: 'auto',\n };\n },\n createSpecLifecycleColumn(): TableColumn<CatalogTableRow> {\n return {\n title: <EntityTableColumnTitle translationKey=\"lifecycle\" />,\n field: 'entity.spec.lifecycle',\n };\n },\n createMetadataDescriptionColumn(): TableColumn<CatalogTableRow> {\n return {\n title: <EntityTableColumnTitle translationKey=\"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: <EntityTableColumnTitle translationKey=\"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={{ margin: '2px' }}\n />\n ))}\n </>\n ),\n width: 'auto',\n };\n },\n createTitleColumn(options?: {\n hidden?: boolean;\n }): TableColumn<CatalogTableRow> {\n return {\n title: <EntityTableColumnTitle translationKey=\"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 || (\n <EntityTableColumnTitle translationKey=\"label\" />\n ),\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: <EntityTableColumnTitle translationKey=\"namespace\" />,\n field: 'entity.metadata.namespace',\n width: 'auto',\n };\n },\n});\n"],"names":[],"mappings":";;;;;;AA8BO,MAAM,eAAA,GAAkB,OAAO,MAAA,CAAO;AAAA,EAC3C,iBAAiB,OAAA,EAEgB;AAC/B,IAAA,SAAS,cAAc,MAAA,EAAwB;AAC7C,MAAA,OACE,MAAA,CAAO,QAAA,EAAU,KAAA,IACjB,iBAAA,CAAkB,MAAA,EAAQ;AAAA,QACxB,aAAa,OAAA,EAAS;AAAA,OACvB,CAAA;AAAA,IAEL;AAEA,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,MAAA,EAAO,CAAA;AAAA,MACrD,KAAA,EAAO,oBAAA;AAAA,MACP,SAAA,EAAW,IAAA;AAAA,MACX,UAAA,CAAW,EAAE,MAAA,EAAQ,OAAA,IAAW,EAAE,MAAA,EAAQ,SAAQ,EAAG;AAGnD,QAAA,OAAO,cAAc,OAAO,CAAA,CAAE,aAAA,CAAc,aAAA,CAAc,OAAO,CAAC,CAAA;AAAA,MACpE,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,MAAA;AAAA,UACX,WAAA,EAAa,SAAS,WAAA,IAAe;AAAA;AAAA;AACvC,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,kBAAA,GAAmD;AACjD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,QAAA,EAAS,CAAA;AAAA,MACvD,KAAA,EAAO,oCAAA;AAAA,MACP,qBAAA,EAAuB,CAAC,KAAA,EAAO,GAAA,KAAQ;AACrC,QAAA,IAAI,CAAC,GAAA,CAAI,QAAA,CAAS,qBAAA,EAAuB;AACvC,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,MAAM,WAAA,GAAc,GAAA,CAAI,QAAA,CAAS,qBAAA,CAAsB,GAAA;AAAA,UACrD,SAAO,GAAA,CAAI;AAAA,SACb;AAEA,QAAA,MAAM,aAAa,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,CAAE,kBAAkB,OAAO,CAAA;AACnE,QAAA,OAAO,UAAA,CAAW,QAAA,CAAS,KAAA,CAAM,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAAA,MAC7D,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,QAAA,EAAS,qBAClB,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,YAAY,QAAA,CAAS,qBAAA;AAAA,UACrB,WAAA,EAAY;AAAA;AAAA;AACd,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,iBAAA,GAAkD;AAChD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,OAAA,EAAQ,CAAA;AAAA,MACtD,KAAA,EAAO,gCAAA;AAAA,MACP,MAAA,EAAQ,CAAC,EAAE,QAAA,EAAS,qBAClB,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,YAAY,QAAA,CAAS,gBAAA;AAAA,UACrB,WAAA,EAAY;AAAA;AAAA;AACd,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,uBAAA,GAAwD;AACtD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,SAAA,EAAU,CAAA;AAAA,MACxD,KAAA,EAAO,qBAAA;AAAA,MACP,qBAAA,EAAuB,CAAC,KAAA,EAAO,GAAA,KAAQ;AACrC,QAAA,IAAI,UAAqB,EAAC;AAC1B,QAAA,IACE,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,OAAA,IAClB,KAAA,CAAM,QAAQ,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAA,EACvC;AACA,UAAA,OAAA,GAAU,GAAA,CAAI,QAAQ,IAAA,EAAM,OAAA;AAAA,QAC9B,CAAA,MAAA,IAAW,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,MAAA,EAAQ;AACnC,UAAA,OAAA,GAAU,CAAC,GAAA,CAAI,MAAA,EAAQ,IAAA,EAAM,MAAM,CAAA;AAAA,QACrC;AACA,QAAA,OAAO,OAAA,CACJ,IAAA,CAAK,IAAI,CAAA,CACT,iBAAA,CAAkB,OAAO,CAAA,CACzB,QAAA,CAAS,KAAA,CAAM,iBAAA,CAAkB,OAAO,CAAC,CAAA;AAAA,MAC9C,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA,CAAA,QAAA,EAAA,EACI,QAAA,EAAA,CAAA,MAAA,EAAQ,IAAA,EAAM,OAAA,IAAW,MAAA,EAAQ,IAAA,EAAM,MAAA,qBACvC,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAA,CACG,MAAA,CAAQ,IAAA,CAAM,OAAA,IAAyB,CAAC,OAAO,IAAA,CAAK,MAAM,CAAA,EAC3D,IAAA,CAAK,IAAI,CAAA;AAAA,UACX,SAAA,EAAU;AAAA;AAAA,OACZ,EAEJ;AAAA,KAEJ;AAAA,EACF,CAAA;AAAA,EACA,oBAAA,CACE,OAAA,GAEI,EAAE,MAAA,EAAQ,OAAM,EACU;AAC9B,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,MAAA,EAAO,CAAA;AAAA,MACrD,KAAA,EAAO,kBAAA;AAAA,MACP,QAAQ,OAAA,CAAQ,MAAA;AAAA,MAChB,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,yBAAA,GAA0D;AACxD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,WAAA,EAAY,CAAA;AAAA,MAC1D,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,+BAAA,GAAgE;AAC9D,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,aAAA,EAAc,CAAA;AAAA,MAC5D,KAAA,EAAO,6BAAA;AAAA,MACP,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,OAAO,QAAA,CAAS,WAAA;AAAA,UACtB,SAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MAEF,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,gBAAA,GAAiD;AAC/C,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,MAAA,EAAO,CAAA;AAAA,MACrD,KAAA,EAAO,sBAAA;AAAA,MACP,SAAA,EAAW;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,qBAChB,GAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA,MAAA,CAAO,QAAA,CAAS,IAAA,IACf,MAAA,CAAO,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,CAAA,qBACvB,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UAEC,KAAA,EAAO,CAAA;AAAA,UACP,IAAA,EAAK,OAAA;AAAA,UACL,OAAA,EAAQ,UAAA;AAAA,UACR,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA;AAAM,SAAA;AAAA,QAJlB;AAAA,OAMR,CAAA,EACL,CAAA;AAAA,MAEF,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,kBAAkB,OAAA,EAEe;AAC/B,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,OAAA,EAAQ,CAAA;AAAA,MACtD,KAAA,EAAO,uBAAA;AAAA,MACP,QAAQ,OAAA,EAAS,MAAA;AAAA,MACjB,UAAA,EAAY;AAAA,KACd;AAAA,EACF,CAAA;AAAA,EACA,iBAAA,CACE,KACA,OAAA,EAC8B;AAC9B,IAAA,SAAS,aAAA,CAAc,UAAkB,MAAA,EAAwB;AAC/D,MAAA,MAAM,MAAA,GACJ,OAAO,QAAA,EAAU,MAAA;AACnB,MAAA,OAAQ,MAAA,IAAU,MAAA,CAAO,QAAQ,CAAA,IAAM,EAAA;AAAA,IACzC;AAEA,IAAA,OAAO;AAAA,MACL,OAAO,OAAA,EAAS,KAAA,oBACd,GAAA,CAAC,sBAAA,EAAA,EAAuB,gBAAe,OAAA,EAAQ,CAAA;AAAA,MAEjD,KAAA,EAAO,wBAAA;AAAA,MACP,SAAA,EAAW;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,UAAA,CAAW,EAAE,MAAA,EAAQ,OAAA,IAAW,EAAE,MAAA,EAAQ,SAAQ,EAAG;AACnD,QAAA,OAAO,aAAA,CAAc,GAAA,EAAK,OAAO,CAAA,CAAE,aAAA;AAAA,UACjC,aAAA,CAAc,KAAK,OAAO;AAAA,SAC5B;AAAA,MACF,CAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,MAAA,EAAO,KAA0B;AAC1C,QAAA,MAAM,MAAA,GACJ,OAAO,QAAA,EAAU,MAAA;AACnB,QAAA,MAAM,mBAAA,GACH,MAAA,IAAU,MAAA,CAAO,GAAG,KAAM,OAAA,EAAS,YAAA;AACtC,QAAA,uCAEK,QAAA,EAAA,mBAAA,oBACC,GAAA;AAAA,UAAC,IAAA;AAAA,UAAA;AAAA,YAEC,KAAA,EAAO,mBAAA;AAAA,YACP,IAAA,EAAK,OAAA;AAAA,YACL,OAAA,EAAQ;AAAA,WAAA;AAAA,UAHH;AAAA,SAIP,EAEJ,CAAA;AAAA,MAEJ,CAAA;AAAA,MACA,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAA;AAAA,EACA,qBAAA,GAAsD;AACpD,IAAA,OAAO;AAAA,MACL,KAAA,kBAAO,GAAA,CAAC,sBAAA,EAAA,EAAuB,cAAA,EAAe,WAAA,EAAY,CAAA;AAAA,MAC1D,KAAA,EAAO,2BAAA;AAAA,MACP,KAAA,EAAO;AAAA,KACT;AAAA,EACF;AACF,CAAC;;;;"}
@@ -1,14 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { catalogApiRef } from '@backstage/plugin-catalog-react';
3
- import Button from '@material-ui/core/Button';
4
- import Dialog from '@material-ui/core/Dialog';
5
- import DialogActions from '@material-ui/core/DialogActions';
6
- import DialogTitle from '@material-ui/core/DialogTitle';
7
3
  import { useState } from 'react';
8
4
  import { useApi, alertApiRef } from '@backstage/core-plugin-api';
9
5
  import { assertError } from '@backstage/errors';
10
6
  import { catalogTranslationRef } from '../../alpha/translation.esm.js';
11
7
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
8
+ import { Dialog, DialogHeader, DialogFooter, Button } from '@backstage/ui';
12
9
 
13
10
  function DeleteEntityDialog(props) {
14
11
  const { open, onClose, onConfirm, entity } = props;
@@ -29,20 +26,11 @@ function DeleteEntityDialog(props) {
29
26
  setBusy(false);
30
27
  }
31
28
  };
32
- return /* @__PURE__ */ jsxs(Dialog, { open, onClose, children: [
33
- /* @__PURE__ */ jsx(DialogTitle, { id: "responsive-dialog-title", children: t("deleteEntity.dialogTitle") }),
34
- /* @__PURE__ */ jsxs(DialogActions, { children: [
35
- /* @__PURE__ */ jsx(
36
- Button,
37
- {
38
- variant: "contained",
39
- color: "secondary",
40
- disabled: busy,
41
- onClick: onDelete,
42
- children: t("deleteEntity.deleteButtonTitle")
43
- }
44
- ),
45
- /* @__PURE__ */ jsx(Button, { onClick: onClose, color: "primary", children: t("deleteEntity.cancelButtonTitle") })
29
+ return /* @__PURE__ */ jsxs(Dialog, { isOpen: open, onOpenChange: (isOpen) => !isOpen && onClose(), children: [
30
+ /* @__PURE__ */ jsx(DialogHeader, { children: t("deleteEntity.dialogTitle") }),
31
+ /* @__PURE__ */ jsxs(DialogFooter, { children: [
32
+ /* @__PURE__ */ jsx(Button, { variant: "secondary", onPress: onClose, children: t("deleteEntity.cancelButtonTitle") }),
33
+ /* @__PURE__ */ jsx(Button, { variant: "primary", destructive: true, loading: busy, onPress: onDelete, children: t("deleteEntity.deleteButtonTitle") })
46
34
  ] })
47
35
  ] });
48
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteEntityDialog.esm.js","sources":["../../../src/components/EntityOrphanWarning/DeleteEntityDialog.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 */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport { useState } from 'react';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { assertError } from '@backstage/errors';\nimport { catalogTranslationRef } from '../../alpha/translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\ninterface DeleteEntityDialogProps {\n open: boolean;\n onClose: () => any;\n onConfirm: () => any;\n entity: Entity;\n}\n\nexport function DeleteEntityDialog(props: DeleteEntityDialogProps) {\n const { open, onClose, onConfirm, entity } = props;\n const [busy, setBusy] = useState(false);\n const catalogApi = useApi(catalogApiRef);\n const alertApi = useApi(alertApiRef);\n const { t } = useTranslationRef(catalogTranslationRef);\n\n const onDelete = async () => {\n setBusy(true);\n try {\n const uid = entity.metadata.uid;\n await catalogApi.removeEntityByUid(uid!);\n onConfirm();\n } catch (err) {\n assertError(err);\n alertApi.post({ message: err.message });\n } finally {\n setBusy(false);\n }\n };\n\n return (\n <Dialog open={open} onClose={onClose}>\n <DialogTitle id=\"responsive-dialog-title\">\n {t('deleteEntity.dialogTitle')}\n </DialogTitle>\n <DialogActions>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n disabled={busy}\n onClick={onDelete}\n >\n {t('deleteEntity.deleteButtonTitle')}\n </Button>\n <Button onClick={onClose} color=\"primary\">\n {t('deleteEntity.cancelButtonTitle')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAmCO,SAAS,mBAAmB,KAAA,EAAgC;AACjE,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,QAAO,GAAI,KAAA;AAC7C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa,OAAO,aAAa,CAAA;AACvC,EAAA,MAAM,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,qBAAqB,CAAA;AAErD,EAAA,MAAM,WAAW,YAAY;AAC3B,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,OAAO,QAAA,CAAS,GAAA;AAC5B,MAAA,MAAM,UAAA,CAAW,kBAAkB,GAAI,CAAA;AACvC,MAAA,SAAA,EAAU;AAAA,IACZ,SAAS,GAAA,EAAK;AACZ,MAAA,WAAA,CAAY,GAAG,CAAA;AACf,MAAA,QAAA,CAAS,IAAA,CAAK,EAAE,OAAA,EAAS,GAAA,CAAI,SAAS,CAAA;AAAA,IACxC,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAY,OAAA,EAClB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,EAAA,EAAG,yBAAA,EACb,QAAA,EAAA,CAAA,CAAE,0BAA0B,CAAA,EAC/B,CAAA;AAAA,yBACC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,WAAA;AAAA,UACR,KAAA,EAAM,WAAA;AAAA,UACN,QAAA,EAAU,IAAA;AAAA,UACV,OAAA,EAAS,QAAA;AAAA,UAER,YAAE,gCAAgC;AAAA;AAAA,OACrC;AAAA,sBACA,GAAA,CAAC,UAAO,OAAA,EAAS,OAAA,EAAS,OAAM,SAAA,EAC7B,QAAA,EAAA,CAAA,CAAE,gCAAgC,CAAA,EACrC;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DeleteEntityDialog.esm.js","sources":["../../../src/components/EntityOrphanWarning/DeleteEntityDialog.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 */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { catalogApiRef } from '@backstage/plugin-catalog-react';\nimport { useState } from 'react';\nimport { alertApiRef, useApi } from '@backstage/core-plugin-api';\nimport { assertError } from '@backstage/errors';\nimport { catalogTranslationRef } from '../../alpha/translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Button, Dialog, DialogFooter, DialogHeader } from '@backstage/ui';\n\ninterface DeleteEntityDialogProps {\n open: boolean;\n onClose: () => any;\n onConfirm: () => any;\n entity: Entity;\n}\n\nexport function DeleteEntityDialog(props: DeleteEntityDialogProps) {\n const { open, onClose, onConfirm, entity } = props;\n const [busy, setBusy] = useState(false);\n const catalogApi = useApi(catalogApiRef);\n const alertApi = useApi(alertApiRef);\n const { t } = useTranslationRef(catalogTranslationRef);\n\n const onDelete = async () => {\n setBusy(true);\n try {\n const uid = entity.metadata.uid;\n await catalogApi.removeEntityByUid(uid!);\n onConfirm();\n } catch (err) {\n assertError(err);\n alertApi.post({ message: err.message });\n } finally {\n setBusy(false);\n }\n };\n\n return (\n <Dialog isOpen={open} onOpenChange={isOpen => !isOpen && onClose()}>\n <DialogHeader>{t('deleteEntity.dialogTitle')}</DialogHeader>\n <DialogFooter>\n <Button variant=\"secondary\" onPress={onClose}>\n {t('deleteEntity.cancelButtonTitle')}\n </Button>\n <Button variant=\"primary\" destructive loading={busy} onPress={onDelete}>\n {t('deleteEntity.deleteButtonTitle')}\n </Button>\n </DialogFooter>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAgCO,SAAS,mBAAmB,KAAA,EAAgC;AACjE,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,QAAO,GAAI,KAAA;AAC7C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa,OAAO,aAAa,CAAA;AACvC,EAAA,MAAM,QAAA,GAAW,OAAO,WAAW,CAAA;AACnC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,qBAAqB,CAAA;AAErD,EAAA,MAAM,WAAW,YAAY;AAC3B,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,OAAO,QAAA,CAAS,GAAA;AAC5B,MAAA,MAAM,UAAA,CAAW,kBAAkB,GAAI,CAAA;AACvC,MAAA,SAAA,EAAU;AAAA,IACZ,SAAS,GAAA,EAAK;AACZ,MAAA,WAAA,CAAY,GAAG,CAAA;AACf,MAAA,QAAA,CAAS,IAAA,CAAK,EAAE,OAAA,EAAS,GAAA,CAAI,SAAS,CAAA;AAAA,IACxC,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,UAAO,MAAA,EAAQ,IAAA,EAAM,cAAc,CAAA,MAAA,KAAU,CAAC,MAAA,IAAU,OAAA,EAAQ,EAC/D,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,YAAA,EAAA,EAAc,QAAA,EAAA,CAAA,CAAE,0BAA0B,CAAA,EAAE,CAAA;AAAA,yBAC5C,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAO,OAAA,EAAQ,WAAA,EAAY,SAAS,OAAA,EAClC,QAAA,EAAA,CAAA,CAAE,gCAAgC,CAAA,EACrC,CAAA;AAAA,sBACA,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,WAAA,EAAW,IAAA,EAAC,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,QAAA,EAC3D,QAAA,EAAA,CAAA,CAAE,gCAAgC,CAAA,EACrC;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1,6 +1,5 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { useEntity } from '@backstage/plugin-catalog-react';
3
- import Alert from '@material-ui/lab/Alert';
4
3
  import { useState } from 'react';
5
4
  import { useNavigate } from 'react-router-dom';
6
5
  import { DeleteEntityDialog } from './DeleteEntityDialog.esm.js';
@@ -8,6 +7,7 @@ import { useRouteRef } from '@backstage/core-plugin-api';
8
7
  import { rootRouteRef } from '../../routes.esm.js';
9
8
  import { catalogTranslationRef } from '../../alpha/translation.esm.js';
10
9
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
10
+ import { Alert, Button } from '@backstage/ui';
11
11
 
12
12
  function isOrphan(entity) {
13
13
  return entity?.metadata?.annotations?.["backstage.io/orphan"] === "true";
@@ -23,7 +23,24 @@ function EntityOrphanWarning() {
23
23
  navigate(catalogLink());
24
24
  };
25
25
  return /* @__PURE__ */ jsxs(Fragment, { children: [
26
- /* @__PURE__ */ jsx(Alert, { severity: "warning", onClick: () => setConfirmationDialogOpen(true), children: t("deleteEntity.description") }),
26
+ /* @__PURE__ */ jsx(
27
+ Alert,
28
+ {
29
+ status: "warning",
30
+ icon: true,
31
+ title: t("deleteEntity.description"),
32
+ customActions: /* @__PURE__ */ jsx(
33
+ Button,
34
+ {
35
+ size: "small",
36
+ variant: "tertiary",
37
+ destructive: true,
38
+ onPress: () => setConfirmationDialogOpen(true),
39
+ children: t("deleteEntity.actionButtonTitle")
40
+ }
41
+ )
42
+ }
43
+ ),
27
44
  /* @__PURE__ */ jsx(
28
45
  DeleteEntityDialog,
29
46
  {
@@ -1 +1 @@
1
- {"version":3,"file":"EntityOrphanWarning.esm.js","sources":["../../../src/components/EntityOrphanWarning/EntityOrphanWarning.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 */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport Alert from '@material-ui/lab/Alert';\nimport { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { DeleteEntityDialog } from './DeleteEntityDialog';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { rootRouteRef } from '../../routes';\nimport { catalogTranslationRef } from '../../alpha/translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\n/**\n * Returns true if the given entity has the orphan annotation given by the\n * catalog.\n *\n * @public\n */\nexport function isOrphan(entity: Entity): boolean {\n return entity?.metadata?.annotations?.['backstage.io/orphan'] === 'true';\n}\n\n/**\n * Displays a warning alert if the entity is marked as orphan with the ability\n * to delete said entity.\n *\n * @public\n */\nexport function EntityOrphanWarning() {\n const navigate = useNavigate();\n const catalogLink = useRouteRef(rootRouteRef);\n const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false);\n const { entity } = useEntity();\n const { t } = useTranslationRef(catalogTranslationRef);\n\n const cleanUpAfterRemoval = async () => {\n setConfirmationDialogOpen(false);\n navigate(catalogLink());\n };\n\n return (\n <>\n <Alert severity=\"warning\" onClick={() => setConfirmationDialogOpen(true)}>\n {t('deleteEntity.description')}\n </Alert>\n <DeleteEntityDialog\n open={confirmationDialogOpen}\n entity={entity!}\n onConfirm={cleanUpAfterRemoval}\n onClose={() => setConfirmationDialogOpen(false)}\n />\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAiCO,SAAS,SAAS,MAAA,EAAyB;AAChD,EAAA,OAAO,MAAA,EAAQ,QAAA,EAAU,WAAA,GAAc,qBAAqB,CAAA,KAAM,MAAA;AACpE;AAQO,SAAS,mBAAA,GAAsB;AACpC,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,WAAA,GAAc,YAAY,YAAY,CAAA;AAC5C,EAAA,MAAM,CAAC,sBAAA,EAAwB,yBAAyB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1E,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,qBAAqB,CAAA;AAErD,EAAA,MAAM,sBAAsB,YAAY;AACtC,IAAA,yBAAA,CAA0B,KAAK,CAAA;AAC/B,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,SAAA,EAAU,OAAA,EAAS,MAAM,0BAA0B,IAAI,CAAA,EACpE,QAAA,EAAA,CAAA,CAAE,0BAA0B,CAAA,EAC/B,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA,EAAW,mBAAA;AAAA,QACX,OAAA,EAAS,MAAM,yBAAA,CAA0B,KAAK;AAAA;AAAA;AAChD,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"EntityOrphanWarning.esm.js","sources":["../../../src/components/EntityOrphanWarning/EntityOrphanWarning.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 */\n\nimport { Entity } from '@backstage/catalog-model';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { DeleteEntityDialog } from './DeleteEntityDialog';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { rootRouteRef } from '../../routes';\nimport { catalogTranslationRef } from '../../alpha/translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { Alert, Button } from '@backstage/ui';\n\n/**\n * Returns true if the given entity has the orphan annotation given by the\n * catalog.\n *\n * @public\n */\nexport function isOrphan(entity: Entity): boolean {\n return entity?.metadata?.annotations?.['backstage.io/orphan'] === 'true';\n}\n\n/**\n * Displays a warning alert if the entity is marked as orphan with the ability\n * to delete said entity.\n *\n * @public\n */\nexport function EntityOrphanWarning() {\n const navigate = useNavigate();\n const catalogLink = useRouteRef(rootRouteRef);\n const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false);\n const { entity } = useEntity();\n const { t } = useTranslationRef(catalogTranslationRef);\n\n const cleanUpAfterRemoval = async () => {\n setConfirmationDialogOpen(false);\n navigate(catalogLink());\n };\n\n return (\n <>\n <Alert\n status=\"warning\"\n icon\n title={t('deleteEntity.description')}\n customActions={\n <Button\n size=\"small\"\n variant=\"tertiary\"\n destructive\n onPress={() => setConfirmationDialogOpen(true)}\n >\n {t('deleteEntity.actionButtonTitle')}\n </Button>\n }\n />\n <DeleteEntityDialog\n open={confirmationDialogOpen}\n entity={entity!}\n onConfirm={cleanUpAfterRemoval}\n onClose={() => setConfirmationDialogOpen(false)}\n />\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAiCO,SAAS,SAAS,MAAA,EAAyB;AAChD,EAAA,OAAO,MAAA,EAAQ,QAAA,EAAU,WAAA,GAAc,qBAAqB,CAAA,KAAM,MAAA;AACpE;AAQO,SAAS,mBAAA,GAAsB;AACpC,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,WAAA,GAAc,YAAY,YAAY,CAAA;AAC5C,EAAA,MAAM,CAAC,sBAAA,EAAwB,yBAAyB,CAAA,GAAI,SAAS,KAAK,CAAA;AAC1E,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,qBAAqB,CAAA;AAErD,EAAA,MAAM,sBAAsB,YAAY;AACtC,IAAA,yBAAA,CAA0B,KAAK,CAAA;AAC/B,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAO,SAAA;AAAA,QACP,IAAA,EAAI,IAAA;AAAA,QACJ,KAAA,EAAO,EAAE,0BAA0B,CAAA;AAAA,QACnC,aAAA,kBACE,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,OAAA;AAAA,YACL,OAAA,EAAQ,UAAA;AAAA,YACR,WAAA,EAAW,IAAA;AAAA,YACX,OAAA,EAAS,MAAM,yBAAA,CAA0B,IAAI,CAAA;AAAA,YAE5C,YAAE,gCAAgC;AAAA;AAAA;AACrC;AAAA,KAEJ;AAAA,oBACA,GAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,sBAAA;AAAA,QACN,MAAA;AAAA,QACA,SAAA,EAAW,mBAAA;AAAA,QACX,OAAA,EAAS,MAAM,yBAAA,CAA0B,KAAK;AAAA;AAAA;AAChD,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  var name = "@backstage/plugin-catalog";
2
- var version = "1.32.3-next.0";
2
+ var version = "1.33.0-next.1";
3
3
  var description = "The Backstage plugin for browsing the Backstage catalog";
4
4
  var backstage = {
5
5
  role: "frontend-plugin",
@@ -74,6 +74,7 @@ var dependencies = {
74
74
  "@backstage/plugin-techdocs-common": "workspace:^",
75
75
  "@backstage/plugin-techdocs-react": "workspace:^",
76
76
  "@backstage/types": "workspace:^",
77
+ "@backstage/ui": "workspace:^",
77
78
  "@backstage/version-bridge": "workspace:^",
78
79
  "@material-ui/core": "^4.12.2",
79
80
  "@material-ui/icons": "^4.9.1",
@@ -1 +1 @@
1
- {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-catalog",
3
- "version": "1.32.3-next.0",
3
+ "version": "1.33.0-next.1",
4
4
  "description": "The Backstage plugin for browsing the Backstage catalog",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin",
@@ -72,21 +72,22 @@
72
72
  "dependencies": {
73
73
  "@backstage/catalog-client": "1.12.1",
74
74
  "@backstage/catalog-model": "1.7.6",
75
- "@backstage/core-compat-api": "0.5.7-next.0",
76
- "@backstage/core-components": "0.18.6-next.0",
77
- "@backstage/core-plugin-api": "1.12.2-next.0",
75
+ "@backstage/core-compat-api": "0.5.8-next.1",
76
+ "@backstage/core-components": "0.18.7-next.1",
77
+ "@backstage/core-plugin-api": "1.12.3-next.0",
78
78
  "@backstage/errors": "1.2.7",
79
- "@backstage/frontend-plugin-api": "0.14.0-next.0",
80
- "@backstage/integration-react": "1.2.15-next.0",
79
+ "@backstage/frontend-plugin-api": "0.14.0-next.1",
80
+ "@backstage/integration-react": "1.2.15-next.1",
81
81
  "@backstage/plugin-catalog-common": "1.1.8-next.0",
82
- "@backstage/plugin-catalog-react": "1.21.6-next.0",
82
+ "@backstage/plugin-catalog-react": "1.22.0-next.1",
83
83
  "@backstage/plugin-permission-react": "0.4.40-next.0",
84
- "@backstage/plugin-scaffolder-common": "1.7.6-next.0",
84
+ "@backstage/plugin-scaffolder-common": "1.7.6-next.1",
85
85
  "@backstage/plugin-search-common": "1.2.22-next.0",
86
- "@backstage/plugin-search-react": "1.10.3-next.0",
86
+ "@backstage/plugin-search-react": "1.10.3-next.1",
87
87
  "@backstage/plugin-techdocs-common": "0.1.1",
88
88
  "@backstage/plugin-techdocs-react": "1.3.8-next.0",
89
89
  "@backstage/types": "1.2.2",
90
+ "@backstage/ui": "0.12.0-next.1",
90
91
  "@backstage/version-bridge": "1.0.11",
91
92
  "@material-ui/core": "^4.12.2",
92
93
  "@material-ui/icons": "^4.9.1",
@@ -102,12 +103,12 @@
102
103
  "zen-observable": "^0.10.0"
103
104
  },
104
105
  "devDependencies": {
105
- "@backstage/cli": "0.35.3-next.0",
106
- "@backstage/core-app-api": "1.19.4-next.0",
107
- "@backstage/dev-utils": "1.1.20-next.0",
108
- "@backstage/frontend-test-utils": "0.4.5-next.0",
109
- "@backstage/plugin-permission-common": "0.9.5-next.0",
110
- "@backstage/test-utils": "1.7.15-next.0",
106
+ "@backstage/cli": "0.35.4-next.1",
107
+ "@backstage/core-app-api": "1.19.5-next.0",
108
+ "@backstage/dev-utils": "1.1.20-next.1",
109
+ "@backstage/frontend-test-utils": "0.4.6-next.1",
110
+ "@backstage/plugin-permission-common": "0.9.6-next.0",
111
+ "@backstage/test-utils": "1.7.15-next.1",
111
112
  "@testing-library/dom": "^10.0.0",
112
113
  "@testing-library/jest-dom": "^6.0.0",
113
114
  "@testing-library/react": "^16.0.0",