@pagerduty/backstage-plugin 0.15.9 → 0.15.10-next.0
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/README.md +36 -0
- package/package.json +32 -19
- package/assets/PD-Green.svg +0 -21
- package/assets/PD-Icon.svg +0 -13
- package/assets/PD-White.svg +0 -21
- package/assets/emptystate.svg +0 -6
- package/assets/forbiddenstate.svg +0 -25
- package/dist/api/client.esm.js +0 -225
- package/dist/api/client.esm.js.map +0 -1
- package/dist/assets/PD-Green.svg +0 -21
- package/dist/assets/PD-Icon.svg +0 -13
- package/dist/assets/PD-White.svg +0 -21
- package/dist/assets/emptystate.svg +0 -6
- package/dist/assets/forbiddenstate.svg +0 -25
- package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js +0 -29
- package/dist/components/ChangeEvents/ChangeEventEmptyState.esm.js.map +0 -1
- package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js +0 -29
- package/dist/components/ChangeEvents/ChangeEventForbiddenState.esm.js.map +0 -1
- package/dist/components/ChangeEvents/ChangeEventListItem.esm.js +0 -82
- package/dist/components/ChangeEvents/ChangeEventListItem.esm.js.map +0 -1
- package/dist/components/ChangeEvents/ChangeEvents.esm.js +0 -52
- package/dist/components/ChangeEvents/ChangeEvents.esm.js.map +0 -1
- package/dist/components/EntityPagerDutyCard/index.esm.js +0 -26
- package/dist/components/EntityPagerDutyCard/index.esm.js.map +0 -1
- package/dist/components/EntityPagerDutySmallCard/index.esm.js +0 -26
- package/dist/components/EntityPagerDutySmallCard/index.esm.js.map +0 -1
- package/dist/components/Errors/ForbiddenError.esm.js +0 -24
- package/dist/components/Errors/ForbiddenError.esm.js.map +0 -1
- package/dist/components/Errors/MissingTokenError.esm.js +0 -24
- package/dist/components/Errors/MissingTokenError.esm.js.map +0 -1
- package/dist/components/Errors/ServiceNotFoundError.esm.js +0 -24
- package/dist/components/Errors/ServiceNotFoundError.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationPolicy.esm.js +0 -61
- package/dist/components/Escalation/EscalationPolicy.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationUser.esm.js +0 -107
- package/dist/components/Escalation/EscalationUser.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationUsersEmptyState.esm.js +0 -23
- package/dist/components/Escalation/EscalationUsersEmptyState.esm.js.map +0 -1
- package/dist/components/Escalation/EscalationUsersForbiddenState.esm.js +0 -23
- package/dist/components/Escalation/EscalationUsersForbiddenState.esm.js.map +0 -1
- package/dist/components/HomePagePagerDutyCard/Content.esm.js +0 -9
- package/dist/components/HomePagePagerDutyCard/Content.esm.js.map +0 -1
- package/dist/components/HomePagePagerDutyCard/index.esm.js +0 -2
- package/dist/components/HomePagePagerDutyCard/index.esm.js.map +0 -1
- package/dist/components/Icons/index.esm.js +0 -9
- package/dist/components/Icons/index.esm.js.map +0 -1
- package/dist/components/Incident/IncidentEmptyState.esm.js +0 -29
- package/dist/components/Incident/IncidentEmptyState.esm.js.map +0 -1
- package/dist/components/Incident/IncidentForbiddenState.esm.js +0 -29
- package/dist/components/Incident/IncidentForbiddenState.esm.js.map +0 -1
- package/dist/components/Incident/IncidentListItem.esm.js +0 -126
- package/dist/components/Incident/IncidentListItem.esm.js.map +0 -1
- package/dist/components/Incident/Incidents.esm.js +0 -46
- package/dist/components/Incident/Incidents.esm.js.map +0 -1
- package/dist/components/PagerDutyCard/index.esm.js +0 -239
- package/dist/components/PagerDutyCard/index.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js +0 -41
- package/dist/components/PagerDutyCardCommon/InsightsCard.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js +0 -48
- package/dist/components/PagerDutyCardCommon/OpenServiceButton.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js +0 -113
- package/dist/components/PagerDutyCardCommon/ServiceStandardsCard.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/StatusCard.esm.js +0 -109
- package/dist/components/PagerDutyCardCommon/StatusCard.esm.js.map +0 -1
- package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js +0 -71
- package/dist/components/PagerDutyCardCommon/TriggerIncidentButton.esm.js.map +0 -1
- package/dist/components/PagerDutyPage/MappingTable.esm.js +0 -271
- package/dist/components/PagerDutyPage/MappingTable.esm.js.map +0 -1
- package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js +0 -50
- package/dist/components/PagerDutyPage/ServiceMappingComponent.esm.js.map +0 -1
- package/dist/components/PagerDutyPage/index.esm.js +0 -152
- package/dist/components/PagerDutyPage/index.esm.js.map +0 -1
- package/dist/components/PagerDutySmallCard/index.esm.js +0 -247
- package/dist/components/PagerDutySmallCard/index.esm.js.map +0 -1
- package/dist/components/TriggerButton/index.esm.js +0 -51
- package/dist/components/TriggerButton/index.esm.js.map +0 -1
- package/dist/components/TriggerDialog/TriggerDialog.esm.js +0 -116
- package/dist/components/TriggerDialog/TriggerDialog.esm.js.map +0 -1
- package/dist/components/constants.esm.js +0 -6
- package/dist/components/constants.esm.js.map +0 -1
- package/dist/components/pagerDutyEntity.esm.js +0 -14
- package/dist/components/pagerDutyEntity.esm.js.map +0 -1
- package/dist/deprecated.esm.js +0 -10
- package/dist/deprecated.esm.js.map +0 -1
- package/dist/hooks/index.esm.js +0 -10
- package/dist/hooks/index.esm.js.map +0 -1
- package/dist/index.d.ts +0 -182
- package/dist/index.esm.js +0 -8
- package/dist/index.esm.js.map +0 -1
- package/dist/plugin.esm.js +0 -78
- package/dist/plugin.esm.js.map +0 -1
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { makeStyles, Card, Typography } from '@material-ui/core';
|
|
3
|
-
import validateColor from 'validate-color';
|
|
4
|
-
|
|
5
|
-
function IncidentCounterCard({ count, label, color, compact }) {
|
|
6
|
-
const textColor = color && validateColor(color) ? color : "black";
|
|
7
|
-
const useStyles = makeStyles(() => ({
|
|
8
|
-
cardStyle: {
|
|
9
|
-
marginRight: "10px",
|
|
10
|
-
height: compact !== true ? "120px" : "80px",
|
|
11
|
-
display: "flex",
|
|
12
|
-
alignItems: "center",
|
|
13
|
-
justifyContent: "center",
|
|
14
|
-
backgroundColor: "rgba(0, 0, 0, 0.03)"
|
|
15
|
-
},
|
|
16
|
-
largeTextStyle: {
|
|
17
|
-
color: textColor,
|
|
18
|
-
fontSize: "30px",
|
|
19
|
-
marginTop: "-10px"
|
|
20
|
-
},
|
|
21
|
-
smallTextStyle: {
|
|
22
|
-
color: textColor,
|
|
23
|
-
fontWeight: "bold",
|
|
24
|
-
fontSize: "10px",
|
|
25
|
-
marginTop: "-5px",
|
|
26
|
-
textTransform: "uppercase",
|
|
27
|
-
flexWrap: "wrap"
|
|
28
|
-
}
|
|
29
|
-
}));
|
|
30
|
-
const { cardStyle, largeTextStyle, smallTextStyle } = useStyles();
|
|
31
|
-
return /* @__PURE__ */ jsx(Card, { className: cardStyle, children: count !== void 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
32
|
-
/* @__PURE__ */ jsx(Typography, { className: largeTextStyle, children: count }),
|
|
33
|
-
/* @__PURE__ */ jsx(Typography, { className: smallTextStyle, children: label })
|
|
34
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
35
|
-
/* @__PURE__ */ jsx(Typography, { className: largeTextStyle, children: "-" }),
|
|
36
|
-
/* @__PURE__ */ jsx(Typography, { className: smallTextStyle, children: label })
|
|
37
|
-
] }) });
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { IncidentCounterCard as default };
|
|
41
|
-
//# sourceMappingURL=InsightsCard.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InsightsCard.esm.js","sources":["../../../src/components/PagerDutyCardCommon/InsightsCard.tsx"],"sourcesContent":["import { BackstageTheme } from '@backstage/theme';\nimport { Card, Typography, makeStyles } from '@material-ui/core';\nimport validateColor from 'validate-color';\n\ntype Props = {\n count: number | undefined;\n label: string;\n color: string;\n compact?: boolean;\n};\n\nfunction IncidentCounterCard({ count, label, color, compact }: Props) {\n const textColor = color && validateColor(color) ? color : 'black';\n\n const useStyles = makeStyles<BackstageTheme>(() => ({\n cardStyle: {\n marginRight: '10px',\n height: compact !== true ? '120px' : '80px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n },\n largeTextStyle: {\n color: textColor,\n fontSize: '30px',\n marginTop: '-10px',\n },\n smallTextStyle: {\n color: textColor,\n fontWeight: 'bold',\n fontSize: '10px',\n marginTop: '-5px',\n textTransform: 'uppercase',\n flexWrap: 'wrap',\n },\n }));\n\n const { cardStyle, largeTextStyle, smallTextStyle } = useStyles();\n\n return (\n <Card className={cardStyle}>\n {count !== undefined ? (\n <>\n <Typography className={largeTextStyle}>{count}</Typography>\n <Typography className={smallTextStyle}>{label}</Typography>\n </>\n ) : (\n <>\n <Typography className={largeTextStyle}>-</Typography>\n <Typography className={smallTextStyle}>{label}</Typography>\n </>\n )}\n </Card>\n );\n}\n\nexport default IncidentCounterCard;\n"],"names":[],"mappings":";;;;AAWA,SAAS,oBAAoB,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,SAAQ,EAAU;AACpE,EAAA,MAAM,SAAA,GAAY,KAAA,IAAS,aAAA,CAAc,KAAK,IAAI,KAAA,GAAQ,OAAA;AAE1D,EAAA,MAAM,SAAA,GAAY,WAA2B,OAAO;AAAA,IAClD,SAAA,EAAW;AAAA,MACT,WAAA,EAAa,MAAA;AAAA,MACb,MAAA,EAAQ,OAAA,KAAY,IAAA,GAAO,OAAA,GAAU,MAAA;AAAA,MACrC,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY,QAAA;AAAA,MACZ,cAAA,EAAgB,QAAA;AAAA,MAChB,eAAA,EAAiB;AAAA,KACnB;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO,SAAA;AAAA,MACP,QAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW;AAAA,KACb;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO,SAAA;AAAA,MACP,UAAA,EAAY,MAAA;AAAA,MACZ,QAAA,EAAU,MAAA;AAAA,MACV,SAAA,EAAW,MAAA;AAAA,MACX,aAAA,EAAe,WAAA;AAAA,MACf,QAAA,EAAU;AAAA;AACZ,GACF,CAAE,CAAA;AAEF,EAAA,MAAM,EAAE,SAAA,EAAW,cAAA,EAAgB,cAAA,KAAmB,SAAA,EAAU;AAEhE,EAAA,2BACG,IAAA,EAAA,EAAK,SAAA,EAAW,SAAA,EACd,QAAA,EAAA,KAAA,KAAU,yBACT,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,cAAA,EAAiB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC9C,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,cAAA,EAAiB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChD,oBAEA,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,cAAA,EAAgB,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,oBACxC,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,cAAA,EAAiB,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChD,CAAA,EAEJ,CAAA;AAEJ;;;;"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { makeStyles, IconButton, Typography } from '@material-ui/core';
|
|
3
|
-
import OpenInBrowserIcon from '@material-ui/icons/OpenInBrowser';
|
|
4
|
-
|
|
5
|
-
function OpenServiceButton({
|
|
6
|
-
serviceUrl,
|
|
7
|
-
compact
|
|
8
|
-
}) {
|
|
9
|
-
const useStyles = makeStyles((theme) => ({
|
|
10
|
-
buttonStyle: {
|
|
11
|
-
color: theme.palette.text.primary,
|
|
12
|
-
"&:hover": {
|
|
13
|
-
backgroundColor: "transparent",
|
|
14
|
-
textDecoration: "underline"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
containerStyle: {
|
|
18
|
-
fontSize: compact !== true ? "12px" : "10px",
|
|
19
|
-
width: compact !== true ? "85px" : "70px"
|
|
20
|
-
},
|
|
21
|
-
iconStyle: {
|
|
22
|
-
fontSize: "30px",
|
|
23
|
-
marginBottom: "-10px"
|
|
24
|
-
},
|
|
25
|
-
textStyle: {
|
|
26
|
-
marginBottom: "-10px"
|
|
27
|
-
}
|
|
28
|
-
}));
|
|
29
|
-
const { buttonStyle, containerStyle, iconStyle, textStyle } = useStyles();
|
|
30
|
-
function navigateToService() {
|
|
31
|
-
window.open(serviceUrl, "_blank");
|
|
32
|
-
}
|
|
33
|
-
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
|
|
34
|
-
IconButton,
|
|
35
|
-
{
|
|
36
|
-
"aria-label": "open-service-in-browser",
|
|
37
|
-
onClick: navigateToService,
|
|
38
|
-
className: buttonStyle,
|
|
39
|
-
children: /* @__PURE__ */ jsxs("div", { className: containerStyle, children: [
|
|
40
|
-
/* @__PURE__ */ jsx(OpenInBrowserIcon, { className: iconStyle }),
|
|
41
|
-
/* @__PURE__ */ jsx(Typography, { className: textStyle, children: "Open service in PagerDuty" })
|
|
42
|
-
] })
|
|
43
|
-
}
|
|
44
|
-
) });
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export { OpenServiceButton };
|
|
48
|
-
//# sourceMappingURL=OpenServiceButton.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenServiceButton.esm.js","sources":["../../../src/components/PagerDutyCardCommon/OpenServiceButton.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\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { makeStyles, IconButton, Typography } from '@material-ui/core';\nimport { BackstageTheme } from '@backstage/theme';\n\nimport OpenInBrowser from '@material-ui/icons/OpenInBrowser';\n\ntype OpenServiceButtonProps = {\n serviceUrl: string;\n compact?: boolean;\n};\n\n/** @public */\nexport function OpenServiceButton({\n serviceUrl,\n compact,\n}: OpenServiceButtonProps) {\n const useStyles = makeStyles<BackstageTheme>(theme => ({\n buttonStyle: {\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: 'transparent',\n textDecoration: 'underline',\n },\n },\n containerStyle: {\n fontSize: compact !== true ? '12px' : '10px',\n width: compact !== true ? '85px' : '70px',\n },\n iconStyle: {\n fontSize: '30px',\n marginBottom: '-10px',\n },\n textStyle: {\n marginBottom: '-10px',\n },\n }));\n\n const { buttonStyle, containerStyle, iconStyle, textStyle } = useStyles();\n\n function navigateToService() {\n window.open(serviceUrl, '_blank');\n }\n\n return (\n <>\n <IconButton\n aria-label=\"open-service-in-browser\"\n onClick={navigateToService}\n className={buttonStyle}\n >\n <div className={containerStyle}>\n <OpenInBrowser className={iconStyle} />\n <Typography className={textStyle}>\n Open service in PagerDuty\n </Typography>\n </div>\n </IconButton>\n </>\n );\n}\n"],"names":["OpenInBrowser"],"mappings":";;;;AA4BO,SAAS,iBAAA,CAAkB;AAAA,EAChC,UAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,SAAA,GAAY,WAA2B,CAAA,KAAA,MAAU;AAAA,IACrD,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,MAC1B,SAAA,EAAW;AAAA,QACT,eAAA,EAAiB,aAAA;AAAA,QACjB,cAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAA,EAAU,OAAA,KAAY,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,MACtC,KAAA,EAAO,OAAA,KAAY,IAAA,GAAO,MAAA,GAAS;AAAA,KACrC;AAAA,IACA,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,MAAA;AAAA,MACV,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,SAAA,EAAW;AAAA,MACT,YAAA,EAAc;AAAA;AAChB,GACF,CAAE,CAAA;AAEF,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,SAAA,EAAW,SAAA,KAAc,SAAA,EAAU;AAExE,EAAA,SAAS,iBAAA,GAAoB;AAC3B,IAAA,MAAA,CAAO,IAAA,CAAK,YAAY,QAAQ,CAAA;AAAA,EAClC;AAEA,EAAA,uBACE,GAAA,CAAA,QAAA,EAAA,EACE,QAAA,kBAAA,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,yBAAA;AAAA,MACX,OAAA,EAAS,iBAAA;AAAA,MACT,SAAA,EAAW,WAAA;AAAA,MAEX,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,EACd,QAAA,EAAA;AAAA,wBAAA,GAAA,CAACA,iBAAA,EAAA,EAAc,WAAW,SAAA,EAAW,CAAA;AAAA,wBACrC,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,SAAA,EAAW,QAAA,EAAA,2BAAA,EAElC;AAAA,OAAA,EACF;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { makeStyles, withStyles, LinearProgress, Card, Typography, IconButton, Tooltip } from '@material-ui/core';
|
|
3
|
-
import InfoIcon from '@material-ui/icons/Info';
|
|
4
|
-
import CheckCircle from '@material-ui/icons/CheckCircle';
|
|
5
|
-
import RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';
|
|
6
|
-
|
|
7
|
-
function colorFromPercentage(theme, percentage) {
|
|
8
|
-
if (percentage < 0.5) {
|
|
9
|
-
return theme.palette.error.main;
|
|
10
|
-
} else if (percentage < 0.8) {
|
|
11
|
-
return theme.palette.warning.main;
|
|
12
|
-
}
|
|
13
|
-
return theme.palette.success.main;
|
|
14
|
-
}
|
|
15
|
-
function ServiceStandardsCard({ total, completed, standards, compact }) {
|
|
16
|
-
const useStyles = makeStyles((theme) => ({
|
|
17
|
-
cardStyle: {
|
|
18
|
-
height: compact !== true ? "120px" : "80px",
|
|
19
|
-
display: "grid",
|
|
20
|
-
gridTemplateRows: "1fr auto auto",
|
|
21
|
-
backgroundColor: "rgba(0, 0, 0, 0.03)"
|
|
22
|
-
},
|
|
23
|
-
containerStyle: {
|
|
24
|
-
display: "flex",
|
|
25
|
-
justifyContent: "center",
|
|
26
|
-
marginTop: compact !== true ? "-100px" : "-50px"
|
|
27
|
-
},
|
|
28
|
-
largeTextStyle: {
|
|
29
|
-
fontSize: compact !== true ? "50px" : "40px",
|
|
30
|
-
color: completed !== void 0 && total !== void 0 ? colorFromPercentage(theme, completed / total) : colorFromPercentage(theme, 0),
|
|
31
|
-
alignSelf: "center",
|
|
32
|
-
justifyContent: "center"
|
|
33
|
-
},
|
|
34
|
-
smallTextStyle: {
|
|
35
|
-
color: theme.palette.textSubtle,
|
|
36
|
-
fontSize: compact !== true ? "14px" : "12px",
|
|
37
|
-
fontWeight: "bold",
|
|
38
|
-
alignSelf: "center",
|
|
39
|
-
justifyContent: "center",
|
|
40
|
-
marginLeft: "-2px",
|
|
41
|
-
marginTop: compact !== true ? "25px" : "20px"
|
|
42
|
-
},
|
|
43
|
-
tooltipContainer: {},
|
|
44
|
-
tooltipIcon: {
|
|
45
|
-
marginRight: "5px"
|
|
46
|
-
},
|
|
47
|
-
standardItem: {
|
|
48
|
-
display: "flex",
|
|
49
|
-
alignItems: "center"
|
|
50
|
-
}
|
|
51
|
-
}));
|
|
52
|
-
const BorderLinearProgress = withStyles((theme) => ({
|
|
53
|
-
root: {
|
|
54
|
-
height: 10,
|
|
55
|
-
borderRadius: 5,
|
|
56
|
-
margin: 5
|
|
57
|
-
},
|
|
58
|
-
colorPrimary: {
|
|
59
|
-
backgroundColor: theme.palette.grey[theme.palette.type === "light" ? 200 : 700]
|
|
60
|
-
},
|
|
61
|
-
bar: {
|
|
62
|
-
borderRadius: 5,
|
|
63
|
-
backgroundColor: completed !== void 0 && total !== void 0 ? colorFromPercentage(theme, completed / total) : colorFromPercentage(theme, 0)
|
|
64
|
-
}
|
|
65
|
-
}))(LinearProgress);
|
|
66
|
-
const {
|
|
67
|
-
cardStyle,
|
|
68
|
-
containerStyle,
|
|
69
|
-
largeTextStyle,
|
|
70
|
-
smallTextStyle,
|
|
71
|
-
tooltipContainer,
|
|
72
|
-
tooltipIcon,
|
|
73
|
-
standardItem
|
|
74
|
-
} = useStyles();
|
|
75
|
-
if (standards === void 0 || completed === void 0 || total === void 0) {
|
|
76
|
-
return /* @__PURE__ */ jsx(Card, { className: cardStyle, children: /* @__PURE__ */ jsx("div", { className: containerStyle, children: /* @__PURE__ */ jsx(Typography, { className: smallTextStyle, children: "Unable to retrieve Scores" }) }) });
|
|
77
|
-
}
|
|
78
|
-
return /* @__PURE__ */ jsx(Card, { className: cardStyle, children: completed !== void 0 && total !== void 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
79
|
-
/* @__PURE__ */ jsx("div", { className: tooltipContainer, children: /* @__PURE__ */ jsx(IconButton, { children: /* @__PURE__ */ jsx(
|
|
80
|
-
Tooltip,
|
|
81
|
-
{
|
|
82
|
-
interactive: true,
|
|
83
|
-
title: /* @__PURE__ */ jsx(Fragment, { children: standards?.map((standard, key) => /* @__PURE__ */ jsx(Typography, { children: standard.pass ? /* @__PURE__ */ jsxs(Typography, { className: standardItem, children: [
|
|
84
|
-
/* @__PURE__ */ jsx(CheckCircle, { className: tooltipIcon }),
|
|
85
|
-
" ",
|
|
86
|
-
standard.name
|
|
87
|
-
] }) : /* @__PURE__ */ jsxs(Typography, { className: standardItem, children: [
|
|
88
|
-
/* @__PURE__ */ jsx(RadioButtonUncheckedIcon, { className: tooltipIcon }),
|
|
89
|
-
" ",
|
|
90
|
-
standard.name
|
|
91
|
-
] }) }, key)) }),
|
|
92
|
-
children: /* @__PURE__ */ jsx(InfoIcon, {})
|
|
93
|
-
}
|
|
94
|
-
) }) }),
|
|
95
|
-
/* @__PURE__ */ jsxs("div", { className: containerStyle, children: [
|
|
96
|
-
/* @__PURE__ */ jsx(Typography, { className: largeTextStyle, children: completed }),
|
|
97
|
-
/* @__PURE__ */ jsxs(Typography, { className: smallTextStyle, children: [
|
|
98
|
-
"/",
|
|
99
|
-
total
|
|
100
|
-
] })
|
|
101
|
-
] }),
|
|
102
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
103
|
-
BorderLinearProgress,
|
|
104
|
-
{
|
|
105
|
-
variant: "determinate",
|
|
106
|
-
value: completed / total * 100
|
|
107
|
-
}
|
|
108
|
-
) })
|
|
109
|
-
] }) : /* @__PURE__ */ jsx("div", { className: containerStyle, children: /* @__PURE__ */ jsx(Typography, { className: smallTextStyle, children: "Unable to retrieve Scores" }) }) });
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export { ServiceStandardsCard as default };
|
|
113
|
-
//# sourceMappingURL=ServiceStandardsCard.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceStandardsCard.esm.js","sources":["../../../src/components/PagerDutyCardCommon/ServiceStandardsCard.tsx"],"sourcesContent":["import { BackstageTheme } from '@backstage/theme';\nimport {\n Card,\n IconButton,\n LinearProgress,\n Theme,\n Tooltip,\n Typography,\n makeStyles,\n withStyles,\n} from '@material-ui/core';\nimport InfoIcon from '@material-ui/icons/Info';\nimport { PagerDutyServiceStandard } from '@pagerduty/backstage-plugin-common';\nimport CheckCircle from '@material-ui/icons/CheckCircle';\nimport RadioButtonUncheckedIcon from '@material-ui/icons/RadioButtonUnchecked';\n\ntype Props = {\n total: number | undefined;\n completed: number | undefined;\n standards: PagerDutyServiceStandard[] | undefined;\n compact?: boolean;\n};\n\nfunction colorFromPercentage(theme: Theme, percentage: number) {\n if (percentage < 0.5) {\n return theme.palette.error.main;\n } else if (percentage < 0.8) {\n return theme.palette.warning.main;\n }\n return theme.palette.success.main;\n}\n\nfunction ServiceStandardsCard({ total, completed, standards, compact }: Props) {\n const useStyles = makeStyles<BackstageTheme>(theme => ({\n cardStyle: {\n height: compact !== true ? '120px' : '80px',\n display: 'grid',\n gridTemplateRows: '1fr auto auto',\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n },\n containerStyle: {\n display: 'flex',\n justifyContent: 'center',\n marginTop: compact !== true ? '-100px' : '-50px',\n },\n largeTextStyle: {\n fontSize: compact !== true ? '50px' : '40px',\n color:\n completed !== undefined && total !== undefined\n ? colorFromPercentage(theme, completed / total)\n : colorFromPercentage(theme, 0),\n alignSelf: 'center',\n justifyContent: 'center',\n },\n smallTextStyle: {\n color: theme.palette.textSubtle,\n fontSize: compact !== true ? '14px' : '12px',\n fontWeight: 'bold',\n alignSelf: 'center',\n justifyContent: 'center',\n marginLeft: '-2px',\n marginTop: compact !== true ? '25px' : '20px',\n },\n tooltipContainer: {},\n tooltipIcon: {\n marginRight: '5px',\n },\n standardItem: {\n display: 'flex',\n alignItems: 'center',\n },\n }));\n\n const BorderLinearProgress = withStyles(theme => ({\n root: {\n height: 10,\n borderRadius: 5,\n margin: 5,\n },\n colorPrimary: {\n backgroundColor:\n theme.palette.grey[theme.palette.type === 'light' ? 200 : 700],\n },\n bar: {\n borderRadius: 5,\n backgroundColor:\n completed !== undefined && total !== undefined\n ? colorFromPercentage(theme, completed / total)\n : colorFromPercentage(theme, 0),\n },\n }))(LinearProgress);\n\n const {\n cardStyle,\n containerStyle,\n largeTextStyle,\n smallTextStyle,\n tooltipContainer,\n tooltipIcon,\n standardItem,\n } = useStyles();\n\n if (\n standards === undefined ||\n completed === undefined ||\n total === undefined\n ) {\n return (\n <Card className={cardStyle}>\n <div className={containerStyle}>\n <Typography className={smallTextStyle}>\n Unable to retrieve Scores\n </Typography>\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={cardStyle}>\n {completed !== undefined && total !== undefined ? (\n <>\n <div className={tooltipContainer}>\n <IconButton>\n <Tooltip\n interactive\n title={\n <>\n {standards?.map((standard, key) => (\n <Typography key={key}>\n {standard.pass ? (\n <Typography className={standardItem}>\n <CheckCircle className={tooltipIcon} />{' '}\n {standard.name}\n </Typography>\n ) : (\n <Typography className={standardItem}>\n <RadioButtonUncheckedIcon className={tooltipIcon} />{' '}\n {standard.name}\n </Typography>\n )}\n </Typography>\n ))}\n </>\n }\n >\n <InfoIcon />\n </Tooltip>\n </IconButton>\n </div>\n <div className={containerStyle}>\n <Typography className={largeTextStyle}>{completed}</Typography>\n <Typography className={smallTextStyle}>/{total}</Typography>\n </div>\n <div>\n <BorderLinearProgress\n variant=\"determinate\"\n value={(completed! / total!) * 100}\n />\n </div>\n </>\n ) : (\n <div className={containerStyle}>\n <Typography className={smallTextStyle}>\n Unable to retrieve Scores\n </Typography>\n </div>\n )}\n </Card>\n );\n}\n\nexport default ServiceStandardsCard;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { Typography, Card } from '@material-ui/core';
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
import { makeStyles } from '@material-ui/core/styles';
|
|
5
|
-
import { useApi } from '@backstage/core-plugin-api';
|
|
6
|
-
import { pagerDutyApiRef } from '../../api/client.esm.js';
|
|
7
|
-
import { useAsyncFn } from 'react-use';
|
|
8
|
-
import Alert from '@material-ui/lab/Alert/Alert';
|
|
9
|
-
import { Progress } from '@backstage/core-components';
|
|
10
|
-
|
|
11
|
-
function labelFromStatus(status) {
|
|
12
|
-
let label;
|
|
13
|
-
switch (status) {
|
|
14
|
-
case "active":
|
|
15
|
-
label = "OK";
|
|
16
|
-
break;
|
|
17
|
-
case "warning":
|
|
18
|
-
label = "ACTIVE";
|
|
19
|
-
break;
|
|
20
|
-
case "critical":
|
|
21
|
-
label = "ALARM";
|
|
22
|
-
break;
|
|
23
|
-
case "maintenance":
|
|
24
|
-
label = "MAINTENANCE";
|
|
25
|
-
break;
|
|
26
|
-
case "disabled":
|
|
27
|
-
label = "DISABLED";
|
|
28
|
-
break;
|
|
29
|
-
default:
|
|
30
|
-
label = "OK";
|
|
31
|
-
break;
|
|
32
|
-
}
|
|
33
|
-
return label;
|
|
34
|
-
}
|
|
35
|
-
function colorFromStatus(theme, status) {
|
|
36
|
-
let color;
|
|
37
|
-
switch (status) {
|
|
38
|
-
case "active":
|
|
39
|
-
color = theme.palette.success.main;
|
|
40
|
-
break;
|
|
41
|
-
case "warning":
|
|
42
|
-
color = theme.palette.warningBackground;
|
|
43
|
-
break;
|
|
44
|
-
case "critical":
|
|
45
|
-
color = theme.palette.error.main;
|
|
46
|
-
break;
|
|
47
|
-
case "maintenance":
|
|
48
|
-
color = "#ebdc00";
|
|
49
|
-
break;
|
|
50
|
-
case "disabled":
|
|
51
|
-
color = "#A9A9A9";
|
|
52
|
-
break;
|
|
53
|
-
default:
|
|
54
|
-
color = theme.palette.success.main;
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
return color;
|
|
58
|
-
}
|
|
59
|
-
function StatusCard({ serviceId, refreshStatus, account, compact }) {
|
|
60
|
-
const api = useApi(pagerDutyApiRef);
|
|
61
|
-
const [{ value: status, loading, error }, getStatus] = useAsyncFn(
|
|
62
|
-
async () => {
|
|
63
|
-
const { service: foundService } = await api.getServiceById(
|
|
64
|
-
serviceId,
|
|
65
|
-
account
|
|
66
|
-
);
|
|
67
|
-
return foundService.status;
|
|
68
|
-
}
|
|
69
|
-
);
|
|
70
|
-
const useStyles = makeStyles((theme) => ({
|
|
71
|
-
cardStyle: {
|
|
72
|
-
height: compact !== true ? "120px" : "80px",
|
|
73
|
-
display: "flex",
|
|
74
|
-
alignItems: "center",
|
|
75
|
-
justifyContent: "center",
|
|
76
|
-
backgroundColor: status !== void 0 ? colorFromStatus(theme, status) : colorFromStatus(theme, "active"),
|
|
77
|
-
marginRight: "10px"
|
|
78
|
-
},
|
|
79
|
-
largeTextStyle: {
|
|
80
|
-
color: "white",
|
|
81
|
-
fontWeight: "bold",
|
|
82
|
-
fontSize: "20px",
|
|
83
|
-
wordWrap: "break-word"
|
|
84
|
-
}
|
|
85
|
-
}));
|
|
86
|
-
const { cardStyle, largeTextStyle } = useStyles();
|
|
87
|
-
useEffect(() => {
|
|
88
|
-
getStatus();
|
|
89
|
-
}, [refreshStatus, getStatus]);
|
|
90
|
-
if (error) {
|
|
91
|
-
if (error.message.includes("Forbidden")) {
|
|
92
|
-
return /* @__PURE__ */ jsx(Typography, { children: "forbidden" });
|
|
93
|
-
}
|
|
94
|
-
return /* @__PURE__ */ jsxs(Alert, { severity: "error", children: [
|
|
95
|
-
"Error encountered while fetching information. ",
|
|
96
|
-
error.message
|
|
97
|
-
] });
|
|
98
|
-
}
|
|
99
|
-
if (loading) {
|
|
100
|
-
return /* @__PURE__ */ jsx(Progress, {});
|
|
101
|
-
}
|
|
102
|
-
if (!status) {
|
|
103
|
-
return /* @__PURE__ */ jsx(Typography, { children: "not found" });
|
|
104
|
-
}
|
|
105
|
-
return /* @__PURE__ */ jsx(Card, { className: cardStyle, children: status !== void 0 ? /* @__PURE__ */ jsx(Typography, { className: largeTextStyle, children: labelFromStatus(status) }) : /* @__PURE__ */ jsx(Typography, { className: largeTextStyle, children: "Unable to get status" }) });
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
export { StatusCard as default };
|
|
109
|
-
//# sourceMappingURL=StatusCard.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StatusCard.esm.js","sources":["../../../src/components/PagerDutyCardCommon/StatusCard.tsx"],"sourcesContent":["import { Card, Typography } from '@material-ui/core';\nimport { useEffect } from 'react';\nimport { Theme, makeStyles } from '@material-ui/core/styles';\nimport { BackstageTheme } from '@backstage/theme';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { pagerDutyApiRef } from '../../api';\nimport { useAsyncFn } from 'react-use';\nimport Alert from '@material-ui/lab/Alert/Alert';\nimport { Progress } from '@backstage/core-components';\n\ntype Props = {\n serviceId: string;\n refreshStatus: boolean;\n account?: string;\n compact?: boolean;\n};\n\nfunction labelFromStatus(status: string) {\n let label;\n switch (status) {\n case 'active':\n label = 'OK';\n break;\n case 'warning':\n label = 'ACTIVE';\n break;\n case 'critical':\n label = 'ALARM';\n break;\n case 'maintenance':\n label = 'MAINTENANCE';\n break;\n case 'disabled':\n label = 'DISABLED';\n break;\n default:\n label = 'OK';\n break;\n }\n\n return label;\n}\n\nfunction colorFromStatus(theme: Theme, status: string) {\n let color;\n switch (status) {\n case 'active':\n color = theme.palette.success.main;\n break;\n case 'warning':\n color = theme.palette.warningBackground;\n break;\n case 'critical':\n color = theme.palette.error.main;\n break;\n case 'maintenance':\n color = '#ebdc00';\n break;\n case 'disabled':\n color = '#A9A9A9';\n break;\n default:\n color = theme.palette.success.main;\n break;\n }\n\n return color;\n}\n\nfunction StatusCard({ serviceId, refreshStatus, account, compact }: Props) {\n const api = useApi(pagerDutyApiRef);\n const [{ value: status, loading, error }, getStatus] = useAsyncFn(\n async () => {\n const { service: foundService } = await api.getServiceById(\n serviceId,\n account,\n );\n return foundService.status;\n },\n );\n\n const useStyles = makeStyles<BackstageTheme>(theme => ({\n cardStyle: {\n height: compact !== true ? '120px' : '80px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor:\n status !== undefined\n ? colorFromStatus(theme, status)\n : colorFromStatus(theme, 'active'),\n marginRight: '10px',\n },\n largeTextStyle: {\n color: 'white',\n fontWeight: 'bold',\n fontSize: '20px',\n wordWrap: 'break-word',\n },\n }));\n\n const { cardStyle, largeTextStyle } = useStyles();\n\n useEffect(() => {\n getStatus();\n }, [refreshStatus, getStatus]);\n\n if (error) {\n if (error.message.includes('Forbidden')) {\n return <Typography>forbidden</Typography>;\n }\n\n return (\n <Alert severity=\"error\">\n Error encountered while fetching information. {error.message}\n </Alert>\n );\n }\n\n if (loading) {\n return <Progress />;\n }\n\n if (!status) {\n return <Typography>not found</Typography>;\n }\n\n return (\n <Card className={cardStyle}>\n {status !== undefined ? (\n <Typography className={largeTextStyle}>\n {labelFromStatus(status)}\n </Typography>\n ) : (\n <Typography className={largeTextStyle}>Unable to get status</Typography>\n )}\n </Card>\n );\n}\n\nexport default StatusCard;\n"],"names":[],"mappings":"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"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useCallback } from 'react';
|
|
3
|
-
import { makeStyles, IconButton, Typography } from '@material-ui/core';
|
|
4
|
-
import { TriggerDialog } from '../TriggerDialog/TriggerDialog.esm.js';
|
|
5
|
-
import AddAlert from '@material-ui/icons/AddAlert';
|
|
6
|
-
|
|
7
|
-
function TriggerIncidentButton({
|
|
8
|
-
integrationKey,
|
|
9
|
-
entityName,
|
|
10
|
-
compact,
|
|
11
|
-
handleRefresh
|
|
12
|
-
}) {
|
|
13
|
-
const useStyles = makeStyles((theme) => ({
|
|
14
|
-
buttonStyle: {
|
|
15
|
-
color: theme.palette.text.primary,
|
|
16
|
-
"&:hover": {
|
|
17
|
-
backgroundColor: "transparent",
|
|
18
|
-
textDecoration: "underline"
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
containerStyle: {
|
|
22
|
-
fontSize: compact !== true ? "12px" : "10px",
|
|
23
|
-
width: compact !== true ? "80px" : "60px",
|
|
24
|
-
marginRight: "-10px"
|
|
25
|
-
},
|
|
26
|
-
iconStyle: {
|
|
27
|
-
fontSize: "30px",
|
|
28
|
-
marginBottom: "-10px"
|
|
29
|
-
},
|
|
30
|
-
textStyle: {
|
|
31
|
-
marginBottom: "-10px"
|
|
32
|
-
}
|
|
33
|
-
}));
|
|
34
|
-
const { buttonStyle, containerStyle, iconStyle, textStyle } = useStyles();
|
|
35
|
-
const [dialogShown, setDialogShown] = useState(false);
|
|
36
|
-
const showDialog = useCallback(() => {
|
|
37
|
-
setDialogShown(true);
|
|
38
|
-
}, [setDialogShown]);
|
|
39
|
-
const hideDialog = useCallback(() => {
|
|
40
|
-
setDialogShown(false);
|
|
41
|
-
}, [setDialogShown]);
|
|
42
|
-
const disabled = !integrationKey;
|
|
43
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
44
|
-
/* @__PURE__ */ jsx(
|
|
45
|
-
IconButton,
|
|
46
|
-
{
|
|
47
|
-
"aria-label": "create-incident",
|
|
48
|
-
onClick: showDialog,
|
|
49
|
-
className: disabled ? "" : buttonStyle,
|
|
50
|
-
disabled,
|
|
51
|
-
children: /* @__PURE__ */ jsxs("div", { className: containerStyle, children: [
|
|
52
|
-
/* @__PURE__ */ jsx(AddAlert, { className: iconStyle }),
|
|
53
|
-
/* @__PURE__ */ jsx(Typography, { className: textStyle, children: "Create new incident" })
|
|
54
|
-
] })
|
|
55
|
-
}
|
|
56
|
-
),
|
|
57
|
-
integrationKey && /* @__PURE__ */ jsx(
|
|
58
|
-
TriggerDialog,
|
|
59
|
-
{
|
|
60
|
-
showDialog: dialogShown,
|
|
61
|
-
handleDialog: hideDialog,
|
|
62
|
-
integrationKey,
|
|
63
|
-
serviceName: entityName,
|
|
64
|
-
onIncidentCreated: handleRefresh
|
|
65
|
-
}
|
|
66
|
-
)
|
|
67
|
-
] });
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export { TriggerIncidentButton };
|
|
71
|
-
//# sourceMappingURL=TriggerIncidentButton.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerIncidentButton.esm.js","sources":["../../../src/components/PagerDutyCardCommon/TriggerIncidentButton.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\n// eslint-disable-next-line @backstage/no-undeclared-imports\nimport { useCallback, useState } from 'react';\nimport { makeStyles, IconButton, Typography } from '@material-ui/core';\nimport { BackstageTheme } from '@backstage/theme';\n\nimport { TriggerDialog } from '../TriggerDialog';\nimport AddAlert from '@material-ui/icons/AddAlert';\n\n/** @public */\nexport type TriggerIncidentButtonProps = {\n integrationKey: string | undefined;\n entityName: string;\n compact?: boolean;\n handleRefresh: () => void;\n};\n\n/** @public */\nexport function TriggerIncidentButton({\n integrationKey,\n entityName,\n compact,\n handleRefresh,\n}: TriggerIncidentButtonProps) {\n const useStyles = makeStyles<BackstageTheme>(theme => ({\n buttonStyle: {\n color: theme.palette.text.primary,\n '&:hover': {\n backgroundColor: 'transparent',\n textDecoration: 'underline',\n },\n },\n containerStyle: {\n fontSize: compact !== true ? '12px' : '10px',\n width: compact !== true ? '80px' : '60px',\n marginRight: '-10px',\n },\n iconStyle: {\n fontSize: '30px',\n marginBottom: '-10px',\n },\n textStyle: {\n marginBottom: '-10px',\n },\n }));\n\n const { buttonStyle, containerStyle, iconStyle, textStyle } = useStyles();\n const [dialogShown, setDialogShown] = useState<boolean>(false);\n\n const showDialog = useCallback(() => {\n setDialogShown(true);\n }, [setDialogShown]);\n const hideDialog = useCallback(() => {\n setDialogShown(false);\n }, [setDialogShown]);\n\n const disabled = !integrationKey;\n\n return (\n <>\n <IconButton\n aria-label=\"create-incident\"\n onClick={showDialog}\n className={disabled ? '' : buttonStyle}\n disabled={disabled}\n >\n <div className={containerStyle}>\n <AddAlert className={iconStyle} />\n <Typography className={textStyle}>Create new incident</Typography>\n </div>\n </IconButton>\n {integrationKey && (\n <TriggerDialog\n showDialog={dialogShown}\n handleDialog={hideDialog}\n integrationKey={integrationKey}\n serviceName={entityName}\n onIncidentCreated={handleRefresh}\n />\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;AAiCO,SAAS,qBAAA,CAAsB;AAAA,EACpC,cAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAA+B;AAC7B,EAAA,MAAM,SAAA,GAAY,WAA2B,CAAA,KAAA,MAAU;AAAA,IACrD,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAA;AAAA,MAC1B,SAAA,EAAW;AAAA,QACT,eAAA,EAAiB,aAAA;AAAA,QACjB,cAAA,EAAgB;AAAA;AAClB,KACF;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAA,EAAU,OAAA,KAAY,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,MACtC,KAAA,EAAO,OAAA,KAAY,IAAA,GAAO,MAAA,GAAS,MAAA;AAAA,MACnC,WAAA,EAAa;AAAA,KACf;AAAA,IACA,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,MAAA;AAAA,MACV,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,SAAA,EAAW;AAAA,MACT,YAAA,EAAc;AAAA;AAChB,GACF,CAAE,CAAA;AAEF,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,SAAA,EAAW,SAAA,KAAc,SAAA,EAAU;AACxE,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAkB,KAAK,CAAA;AAE7D,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,cAAA,CAAe,IAAI,CAAA;AAAA,EACrB,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,cAAA,CAAe,KAAK,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAEnB,EAAA,MAAM,WAAW,CAAC,cAAA;AAElB,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAW,iBAAA;AAAA,QACX,OAAA,EAAS,UAAA;AAAA,QACT,SAAA,EAAW,WAAW,EAAA,GAAK,WAAA;AAAA,QAC3B,QAAA;AAAA,QAEA,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAA,EAAA,EAAS,WAAW,SAAA,EAAW,CAAA;AAAA,0BAChC,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,SAAA,EAAW,QAAA,EAAA,qBAAA,EAAmB;AAAA,SAAA,EACvD;AAAA;AAAA,KACF;AAAA,IACC,cAAA,oBACC,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,UAAA,EAAY,WAAA;AAAA,QACZ,YAAA,EAAc,UAAA;AAAA,QACd,cAAA;AAAA,QACA,WAAA,EAAa,UAAA;AAAA,QACb,iBAAA,EAAmB;AAAA;AAAA;AACrB,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|