@backstage/core-components 0.18.8 → 0.18.9-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 +24 -0
- package/dist/components/FeatureDiscovery/lib/usePortal.esm.js +1 -1
- package/dist/components/MarkdownContent/MarkdownContent.esm.js +13 -2
- package/dist/components/MarkdownContent/MarkdownContent.esm.js.map +1 -1
- package/dist/components/OAuthRequestDialog/LoginRequestListItem.esm.js +13 -4
- package/dist/components/OAuthRequestDialog/LoginRequestListItem.esm.js.map +1 -1
- package/package.json +10 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @backstage/core-components
|
|
2
2
|
|
|
3
|
+
## 0.18.9-next.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 482ceed: Migrated from `assertError` to `toError` for error handling.
|
|
8
|
+
- 58b9f3f: Use Backstage Link component for markdown anchor rendering to ensure consistent internal and external link behavior.
|
|
9
|
+
- Updated dependencies
|
|
10
|
+
- @backstage/errors@1.3.0-next.0
|
|
11
|
+
- @backstage/theme@0.7.3-next.0
|
|
12
|
+
- @backstage/config@1.3.7-next.0
|
|
13
|
+
- @backstage/core-plugin-api@1.12.5-next.2
|
|
14
|
+
|
|
15
|
+
## 0.18.9-next.0
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 320eed3: Resolved DOM nesting warning in OAuthRequestDialog by rendering secondary text as block-level spans.
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
- @backstage/core-plugin-api@1.12.5-next.0
|
|
22
|
+
- @backstage/config@1.3.6
|
|
23
|
+
- @backstage/errors@1.2.7
|
|
24
|
+
- @backstage/theme@0.7.2
|
|
25
|
+
- @backstage/version-bridge@1.0.12
|
|
26
|
+
|
|
3
27
|
## 0.18.8
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { makeStyles } from '@material-ui/core/styles';
|
|
3
3
|
import ReactMarkdown from 'react-markdown';
|
|
4
4
|
import gfm from 'remark-gfm';
|
|
@@ -6,6 +6,7 @@ import { Children, createElement } from 'react';
|
|
|
6
6
|
import { CodeSnippet } from '../CodeSnippet/CodeSnippet.esm.js';
|
|
7
7
|
import rehypeRaw from 'rehype-raw';
|
|
8
8
|
import rehypeSanitize, { defaultSchema } from 'rehype-sanitize';
|
|
9
|
+
import { Link } from '../Link/Link.esm.js';
|
|
9
10
|
|
|
10
11
|
const useStyles = makeStyles(
|
|
11
12
|
(theme) => ({
|
|
@@ -67,7 +68,17 @@ const components = {
|
|
|
67
68
|
h3: headingRenderer,
|
|
68
69
|
h4: headingRenderer,
|
|
69
70
|
h5: headingRenderer,
|
|
70
|
-
h6: headingRenderer
|
|
71
|
+
h6: headingRenderer,
|
|
72
|
+
a: ({ href, children, title, target, rel }) => href ? /* @__PURE__ */ jsx(
|
|
73
|
+
Link,
|
|
74
|
+
{
|
|
75
|
+
to: href,
|
|
76
|
+
title,
|
|
77
|
+
...target ? { target } : {},
|
|
78
|
+
...rel ? { rel } : {},
|
|
79
|
+
children
|
|
80
|
+
}
|
|
81
|
+
) : /* @__PURE__ */ jsx(Fragment, { children })
|
|
71
82
|
};
|
|
72
83
|
const gfmRehypePlugins = [
|
|
73
84
|
[
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownContent.esm.js","sources":["../../../src/components/MarkdownContent/MarkdownContent.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { makeStyles } from '@material-ui/core/styles';\nimport ReactMarkdown, { Options } from 'react-markdown';\nimport gfm from 'remark-gfm';\nimport { Children, createElement } from 'react';\nimport { CodeSnippet } from '../CodeSnippet';\nimport { HeadingProps } from 'react-markdown/lib/ast-to-react';\nimport rehypeRaw from 'rehype-raw';\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize';\nimport type { PluggableList } from 'react-markdown/lib/react-markdown';\n\nexport type MarkdownContentClassKey = 'markdown';\n\nconst useStyles = makeStyles(\n theme => ({\n markdown: {\n '& table': {\n borderCollapse: 'collapse',\n border: `1px solid ${theme.palette.border}`,\n },\n '& th, & td': {\n border: `1px solid ${theme.palette.border}`,\n padding: theme.spacing(1),\n },\n '& td': {\n wordBreak: 'break-word',\n overflow: 'hidden',\n verticalAlign: 'middle',\n lineHeight: '1',\n margin: 0,\n padding: theme.spacing(3, 2, 3, 2.5),\n borderBottom: 0,\n },\n '& th': {\n backgroundColor: theme.palette.background.paper,\n },\n '& tr': {\n backgroundColor: theme.palette.background.paper,\n },\n '& tr:nth-child(odd)': {\n backgroundColor: theme.palette.background.default,\n },\n\n '& a': {\n color: theme.palette.link,\n },\n '& img': {\n maxWidth: '100%',\n },\n },\n }),\n { name: 'BackstageMarkdownContent' },\n);\n\ntype Props = {\n content: string;\n dialect?: 'gfm' | 'common-mark';\n linkTarget?: Options['linkTarget'];\n transformLinkUri?: (href: string) => string;\n transformImageUri?: (href: string) => string;\n className?: string;\n};\n\nconst flatten = (text: string, child: any): string => {\n if (!child) return text;\n\n return typeof child === 'string'\n ? text + child\n : Children.toArray(child.props.children).reduce(flatten, text);\n};\n\nconst headingRenderer = ({ level, children }: HeadingProps) => {\n const childrenArray = Children.toArray(children);\n const text = childrenArray.reduce(flatten, '');\n const slug = text.toLocaleLowerCase('en-US').replace(/\\W/g, '-');\n return createElement(`h${level}`, { id: slug }, children);\n};\n\nconst components: Options['components'] = {\n code: ({ inline, className, children, ...props }) => {\n const text = String(children).replace(/\\n+$/, '');\n const match = /language-(\\w+)/.exec(className || '');\n return !inline && match ? (\n <CodeSnippet language={match[1]} text={text} />\n ) : (\n <code className={className} {...props}>\n {children}\n </code>\n );\n },\n h1: headingRenderer,\n h2: headingRenderer,\n h3: headingRenderer,\n h4: headingRenderer,\n h5: headingRenderer,\n h6: headingRenderer,\n};\n\nconst gfmRehypePlugins: PluggableList = [\n [\n rehypeRaw,\n {\n tagFiter: true,\n },\n ],\n [\n rehypeSanitize,\n {\n ...defaultSchema,\n attributes: {\n ...defaultSchema.attributes,\n code: [\n ...(defaultSchema.attributes?.code ?? []),\n // for syntax highlighting classes in code blocks\n // breaks the codesnippet component override above if omitted\n ['className'],\n ],\n },\n },\n ],\n];\n\n/**\n * Renders markdown with the default dialect {@link https://github.github.com/gfm/ | gfm - GitHub flavored Markdown} to backstage theme styled HTML.\n *\n * @remarks\n * If you just want to render to plain {@link https://commonmark.org/ | CommonMark}, set the dialect to `'common-mark'`\n */\nexport function MarkdownContent(props: Props) {\n const {\n content,\n dialect = 'gfm',\n linkTarget,\n transformLinkUri,\n transformImageUri,\n className,\n } = props;\n const classes = useStyles();\n return (\n <ReactMarkdown\n remarkPlugins={dialect === 'gfm' ? [gfm] : []}\n rehypePlugins={dialect === 'gfm' ? gfmRehypePlugins : []}\n className={`${classes.markdown} ${className ?? ''}`.trim()}\n children={content}\n components={components}\n linkTarget={linkTarget}\n transformLinkUri={transformLinkUri}\n transformImageUri={transformImageUri}\n />\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MarkdownContent.esm.js","sources":["../../../src/components/MarkdownContent/MarkdownContent.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { makeStyles } from '@material-ui/core/styles';\nimport ReactMarkdown, { Options } from 'react-markdown';\nimport gfm from 'remark-gfm';\nimport { Children, createElement } from 'react';\nimport { CodeSnippet } from '../CodeSnippet';\nimport { HeadingProps } from 'react-markdown/lib/ast-to-react';\nimport rehypeRaw from 'rehype-raw';\nimport rehypeSanitize, { defaultSchema } from 'rehype-sanitize';\nimport type { PluggableList } from 'react-markdown/lib/react-markdown';\nimport { Link } from '../Link';\n\nexport type MarkdownContentClassKey = 'markdown';\n\nconst useStyles = makeStyles(\n theme => ({\n markdown: {\n '& table': {\n borderCollapse: 'collapse',\n border: `1px solid ${theme.palette.border}`,\n },\n '& th, & td': {\n border: `1px solid ${theme.palette.border}`,\n padding: theme.spacing(1),\n },\n '& td': {\n wordBreak: 'break-word',\n overflow: 'hidden',\n verticalAlign: 'middle',\n lineHeight: '1',\n margin: 0,\n padding: theme.spacing(3, 2, 3, 2.5),\n borderBottom: 0,\n },\n '& th': {\n backgroundColor: theme.palette.background.paper,\n },\n '& tr': {\n backgroundColor: theme.palette.background.paper,\n },\n '& tr:nth-child(odd)': {\n backgroundColor: theme.palette.background.default,\n },\n\n '& a': {\n color: theme.palette.link,\n },\n '& img': {\n maxWidth: '100%',\n },\n },\n }),\n { name: 'BackstageMarkdownContent' },\n);\n\ntype Props = {\n content: string;\n dialect?: 'gfm' | 'common-mark';\n linkTarget?: Options['linkTarget'];\n transformLinkUri?: (href: string) => string;\n transformImageUri?: (href: string) => string;\n className?: string;\n};\n\nconst flatten = (text: string, child: any): string => {\n if (!child) return text;\n\n return typeof child === 'string'\n ? text + child\n : Children.toArray(child.props.children).reduce(flatten, text);\n};\n\nconst headingRenderer = ({ level, children }: HeadingProps) => {\n const childrenArray = Children.toArray(children);\n const text = childrenArray.reduce(flatten, '');\n const slug = text.toLocaleLowerCase('en-US').replace(/\\W/g, '-');\n return createElement(`h${level}`, { id: slug }, children);\n};\n\nconst components: Options['components'] = {\n code: ({ inline, className, children, ...props }) => {\n const text = String(children).replace(/\\n+$/, '');\n const match = /language-(\\w+)/.exec(className || '');\n return !inline && match ? (\n <CodeSnippet language={match[1]} text={text} />\n ) : (\n <code className={className} {...props}>\n {children}\n </code>\n );\n },\n h1: headingRenderer,\n h2: headingRenderer,\n h3: headingRenderer,\n h4: headingRenderer,\n h5: headingRenderer,\n h6: headingRenderer,\n\n a: ({ href, children, title, target, rel }) =>\n href ? (\n <Link\n to={href}\n title={title}\n {...(target ? { target } : {})}\n {...(rel ? { rel } : {})}\n >\n {children}\n </Link>\n ) : (\n <>{children}</>\n ),\n};\n\nconst gfmRehypePlugins: PluggableList = [\n [\n rehypeRaw,\n {\n tagFiter: true,\n },\n ],\n [\n rehypeSanitize,\n {\n ...defaultSchema,\n attributes: {\n ...defaultSchema.attributes,\n code: [\n ...(defaultSchema.attributes?.code ?? []),\n // for syntax highlighting classes in code blocks\n // breaks the codesnippet component override above if omitted\n ['className'],\n ],\n },\n },\n ],\n];\n\n/**\n * Renders markdown with the default dialect {@link https://github.github.com/gfm/ | gfm - GitHub flavored Markdown} to backstage theme styled HTML.\n *\n * @remarks\n * If you just want to render to plain {@link https://commonmark.org/ | CommonMark}, set the dialect to `'common-mark'`\n */\nexport function MarkdownContent(props: Props) {\n const {\n content,\n dialect = 'gfm',\n linkTarget,\n transformLinkUri,\n transformImageUri,\n className,\n } = props;\n const classes = useStyles();\n return (\n <ReactMarkdown\n remarkPlugins={dialect === 'gfm' ? [gfm] : []}\n rehypePlugins={dialect === 'gfm' ? gfmRehypePlugins : []}\n className={`${classes.markdown} ${className ?? ''}`.trim()}\n children={content}\n components={components}\n linkTarget={linkTarget}\n transformLinkUri={transformLinkUri}\n transformImageUri={transformImageUri}\n />\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import ListItemText from '@material-ui/core/ListItemText';
|
|
|
6
6
|
import Typography from '@material-ui/core/Typography';
|
|
7
7
|
import Button from '@material-ui/core/Button';
|
|
8
8
|
import { useState, isValidElement, createElement } from 'react';
|
|
9
|
-
import {
|
|
9
|
+
import { toError } from '@backstage/errors';
|
|
10
10
|
import { useApi, configApiRef } from '@backstage/core-plugin-api';
|
|
11
11
|
import { coreComponentsTranslationRef } from '../../translation.esm.js';
|
|
12
12
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
@@ -33,7 +33,7 @@ const LoginRequestListItem = ({ request, busy, setBusy }) => {
|
|
|
33
33
|
try {
|
|
34
34
|
await request.trigger();
|
|
35
35
|
} catch (e) {
|
|
36
|
-
setError(
|
|
36
|
+
setError(toError(e).message);
|
|
37
37
|
} finally {
|
|
38
38
|
setBusy(false);
|
|
39
39
|
}
|
|
@@ -52,8 +52,17 @@ const LoginRequestListItem = ({ request, busy, setBusy }) => {
|
|
|
52
52
|
{
|
|
53
53
|
primary: request.provider.title,
|
|
54
54
|
secondary: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
55
|
-
message && /* @__PURE__ */ jsx(
|
|
56
|
-
|
|
55
|
+
message && /* @__PURE__ */ jsx(
|
|
56
|
+
Typography,
|
|
57
|
+
{
|
|
58
|
+
variant: "subtitle2",
|
|
59
|
+
component: "span",
|
|
60
|
+
display: "block",
|
|
61
|
+
color: "textSecondary",
|
|
62
|
+
children: message
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
error && /* @__PURE__ */ jsx(Typography, { component: "span", display: "block", color: "error", children: error })
|
|
57
66
|
] })
|
|
58
67
|
}
|
|
59
68
|
) }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginRequestListItem.esm.js","sources":["../../../src/components/OAuthRequestDialog/LoginRequestListItem.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { makeStyles } from '@material-ui/core/styles';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { createElement, isValidElement, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"LoginRequestListItem.esm.js","sources":["../../../src/components/OAuthRequestDialog/LoginRequestListItem.tsx"],"sourcesContent":["/*\n * Copyright 2020 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 { makeStyles } from '@material-ui/core/styles';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\nimport { createElement, isValidElement, useState } from 'react';\nimport { toError } from '@backstage/errors';\nimport {\n configApiRef,\n IconComponent,\n PendingOAuthRequest,\n useApi,\n} from '@backstage/core-plugin-api';\nimport { coreComponentsTranslationRef } from '../../translation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@material-ui/core/Box';\n\nexport type LoginRequestListItemClassKey = 'root';\n\nconst useItemStyles = makeStyles(\n theme => ({\n root: {\n paddingLeft: theme.spacing(2),\n },\n button: {\n marginLeft: theme.spacing(2),\n },\n }),\n { name: 'BackstageLoginRequestListItem' },\n);\n\ntype RowProps = {\n request: PendingOAuthRequest;\n busy: boolean;\n setBusy: (busy: boolean) => void;\n};\n\nconst LoginRequestListItem = ({ request, busy, setBusy }: RowProps) => {\n const classes = useItemStyles();\n const [error, setError] = useState<string>();\n const { t } = useTranslationRef(coreComponentsTranslationRef);\n const configApi = useApi(configApiRef);\n\n const handleContinue = async () => {\n setBusy(true);\n try {\n await request.trigger();\n } catch (e) {\n setError(toError(e).message);\n } finally {\n setBusy(false);\n }\n };\n\n const providerIcon = request.provider.icon;\n const message =\n request.provider.message ??\n t('oauthRequestDialog.message', {\n appTitle: configApi.getString('app.title'),\n provider: request.provider.title,\n });\n\n const iconElement =\n providerIcon === null || isValidElement(providerIcon)\n ? providerIcon\n : createElement(providerIcon as IconComponent, { fontSize: 'large' });\n\n return (\n <ListItem disabled={busy} classes={{ root: classes.root }}>\n <ListItemAvatar>{iconElement ?? <></>}</ListItemAvatar>\n <Box display=\"flex\" alignItems=\"center\" flex={1}>\n <Box flex={1}>\n <ListItemText\n primary={request.provider.title}\n secondary={\n <>\n {message && (\n <Typography\n variant=\"subtitle2\"\n component=\"span\"\n display=\"block\"\n color=\"textSecondary\"\n >\n {message}\n </Typography>\n )}\n {error && (\n <Typography component=\"span\" display=\"block\" color=\"error\">\n {error}\n </Typography>\n )}\n </>\n }\n />\n </Box>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={handleContinue}\n className={classes.button}\n >\n {t('oauthRequestDialog.login')}\n </Button>\n </Box>\n </ListItem>\n );\n};\n\nexport default LoginRequestListItem;\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@backstage/core-components",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.9-next.1",
|
|
4
4
|
"description": "Core components used by Backstage plugins and apps",
|
|
5
5
|
"backstage": {
|
|
6
6
|
"role": "web-library"
|
|
@@ -66,11 +66,11 @@
|
|
|
66
66
|
"test": "backstage-cli package test"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@backstage/config": "
|
|
70
|
-
"@backstage/core-plugin-api": "
|
|
71
|
-
"@backstage/errors": "
|
|
72
|
-
"@backstage/theme": "
|
|
73
|
-
"@backstage/version-bridge": "
|
|
69
|
+
"@backstage/config": "1.3.7-next.0",
|
|
70
|
+
"@backstage/core-plugin-api": "1.12.5-next.2",
|
|
71
|
+
"@backstage/errors": "1.3.0-next.0",
|
|
72
|
+
"@backstage/theme": "0.7.3-next.0",
|
|
73
|
+
"@backstage/version-bridge": "1.0.12",
|
|
74
74
|
"@dagrejs/dagre": "^1.1.4",
|
|
75
75
|
"@date-io/core": "^1.3.13",
|
|
76
76
|
"@material-table/core": "^3.1.0",
|
|
@@ -110,10 +110,10 @@
|
|
|
110
110
|
"zod": "^3.25.76 || ^4.0.0"
|
|
111
111
|
},
|
|
112
112
|
"devDependencies": {
|
|
113
|
-
"@backstage/app-defaults": "
|
|
114
|
-
"@backstage/cli": "
|
|
115
|
-
"@backstage/core-app-api": "
|
|
116
|
-
"@backstage/test-utils": "
|
|
113
|
+
"@backstage/app-defaults": "1.7.7-next.2",
|
|
114
|
+
"@backstage/cli": "0.36.1-next.2",
|
|
115
|
+
"@backstage/core-app-api": "1.20.0-next.2",
|
|
116
|
+
"@backstage/test-utils": "1.7.17-next.2",
|
|
117
117
|
"@testing-library/dom": "^10.0.0",
|
|
118
118
|
"@testing-library/jest-dom": "^6.0.0",
|
|
119
119
|
"@testing-library/user-event": "^14.0.0",
|