@backstage/plugin-techdocs-module-addons-contrib
Version:
Plugin module for contributed TechDocs Addons
52 lines (49 loc) • 1.7 kB
JavaScript
import { jsxs, jsx } from 'react/jsx-runtime';
import { makeStyles } from '@material-ui/core';
import BugReportIcon from '@material-ui/icons/BugReport';
import { Link, GitHubIcon } from '@backstage/core-components';
const useStyles = makeStyles((theme) => ({
root: {
display: "grid",
gridGap: theme.spacing(1),
gridAutoFlow: "column",
justifyContent: "center",
alignItems: "center",
color: theme.palette.common.black,
fontSize: theme.typography.button.fontSize
}
}));
const getIcon = ({ type }) => {
if (type === "github") {
return GitHubIcon;
}
return BugReportIcon;
};
const getName = ({ type }) => {
return type.charAt(0).toLocaleUpperCase("en-US") + type.slice(1);
};
const getUrl = (repository, template) => {
const { title, body } = template;
const encodedTitle = encodeURIComponent(title);
const encodedBody = encodeURIComponent(body);
const { protocol, resource, owner, name, type } = repository;
const url = `${protocol}://${resource}/${owner}/${name}`;
const encodedUrl = encodeURI(url);
if (type === "github") {
return `${encodedUrl}/issues/new?title=${encodedTitle}&body=${encodedBody}`;
}
return `${encodedUrl}/issues/new?issue[title]=${encodedTitle}&issue[description]=${encodedBody}`;
};
const IssueLink = ({ template, repository }) => {
const classes = useStyles();
const Icon = getIcon(repository);
const url = getUrl(repository, template);
return /* @__PURE__ */ jsxs(Link, { className: classes.root, to: url, target: "_blank", children: [
/* @__PURE__ */ jsx(Icon, {}),
" Open new ",
getName(repository),
" issue"
] });
};
export { IssueLink };
//# sourceMappingURL=IssueLink.esm.js.map