@pagerduty/backstage-plugin
Version:
A Backstage plugin that integrates towards PagerDuty
52 lines (49 loc) • 1.55 kB
JavaScript
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
import { useState, useCallback } from 'react';
import { makeStyles, Button } from '@material-ui/core';
import { usePagerdutyEntity } from '../../hooks/index.esm.js';
import { TriggerDialog } from '../TriggerDialog/TriggerDialog.esm.js';
const useStyles = makeStyles((theme) => ({
buttonStyle: {
backgroundColor: theme.palette.error.main,
color: theme.palette.error.contrastText,
"&:hover": {
backgroundColor: theme.palette.error.dark
}
}
}));
function TriggerButton(props) {
const { buttonStyle } = useStyles();
const { integrationKey, name } = usePagerdutyEntity();
const [dialogShown, setDialogShown] = useState(false);
const showDialog = useCallback(() => {
setDialogShown(true);
}, [setDialogShown]);
const hideDialog = useCallback(() => {
setDialogShown(false);
}, [setDialogShown]);
const disabled = !integrationKey;
return /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx(
Button,
{
onClick: showDialog,
variant: "contained",
className: disabled ? "" : buttonStyle,
disabled,
children: integrationKey ? props.children ?? "Create new incident" : "Missing integration key"
}
),
integrationKey && /* @__PURE__ */ jsx(
TriggerDialog,
{
showDialog: dialogShown,
handleDialog: hideDialog,
integrationKey,
serviceName: name
}
)
] });
}
export { TriggerButton };
//# sourceMappingURL=index.esm.js.map