@kartverket/backstage-plugin-risk-scorecard 1.3.0 → 1.4.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.
Files changed (72) hide show
  1. package/dist/components/common/Spinner.esm.js +24 -6
  2. package/dist/components/common/Spinner.esm.js.map +1 -1
  3. package/dist/components/riScDialog/MatrixDialog.esm.js +53 -0
  4. package/dist/components/riScDialog/MatrixDialog.esm.js.map +1 -0
  5. package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js +32 -14
  6. package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js.map +1 -1
  7. package/dist/components/riScPlugin/RiScPlugin.esm.js +2 -2
  8. package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
  9. package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js +2 -2
  10. package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js.map +1 -1
  11. package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js +39 -13
  12. package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js.map +1 -1
  13. package/dist/components/scenarioDrawer/components/ActionBox.esm.js +104 -35
  14. package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
  15. package/dist/components/scenarioDrawer/components/{ActionFormSection.esm.js → ActionFormItem.esm.js} +19 -38
  16. package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js.map +1 -0
  17. package/dist/components/scenarioDrawer/components/ActionsSection.esm.js +38 -7
  18. package/dist/components/scenarioDrawer/components/ActionsSection.esm.js.map +1 -1
  19. package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js +19 -4
  20. package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js.map +1 -1
  21. package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js +25 -10
  22. package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js.map +1 -1
  23. package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js.map +1 -1
  24. package/dist/components/scenarioDrawer/scenarioDrawerComponents.esm.js +25 -2
  25. package/dist/components/scenarioDrawer/scenarioDrawerComponents.esm.js.map +1 -1
  26. package/dist/components/scenarioTable/ScenarioTable.esm.js +98 -10
  27. package/dist/components/scenarioTable/ScenarioTable.esm.js.map +1 -1
  28. package/dist/components/scenarioTable/ScenarioTableRow.esm.js +50 -3
  29. package/dist/components/scenarioTable/ScenarioTableRow.esm.js.map +1 -1
  30. package/dist/components/scenarioTable/ScenarioTableStyles.esm.js +9 -0
  31. package/dist/components/scenarioTable/ScenarioTableStyles.esm.js.map +1 -1
  32. package/dist/components/scenarioWizard/ScenarioWizard.esm.js +55 -63
  33. package/dist/components/scenarioWizard/ScenarioWizard.esm.js.map +1 -1
  34. package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js +92 -55
  35. package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js.map +1 -1
  36. package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js +54 -27
  37. package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js.map +1 -1
  38. package/dist/components/scenarioWizard/components/RiskRadioButton.esm.js +22 -0
  39. package/dist/components/scenarioWizard/components/RiskRadioButton.esm.js.map +1 -0
  40. package/dist/components/scenarioWizard/steps/ActionsStep.esm.js +92 -14
  41. package/dist/components/scenarioWizard/steps/ActionsStep.esm.js.map +1 -1
  42. package/dist/components/scenarioWizard/steps/RiskStep.esm.js +3 -49
  43. package/dist/components/scenarioWizard/steps/RiskStep.esm.js.map +1 -1
  44. package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js +47 -48
  45. package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js.map +1 -1
  46. package/dist/components/scenarioWizard/wizardStyles.esm.js +9 -6
  47. package/dist/components/scenarioWizard/wizardStyles.esm.js.map +1 -1
  48. package/dist/contexts/RiScContext.esm.js +27 -68
  49. package/dist/contexts/RiScContext.esm.js.map +1 -1
  50. package/dist/contexts/ScenarioContext.esm.js +75 -154
  51. package/dist/contexts/ScenarioContext.esm.js.map +1 -1
  52. package/dist/utils/DTOs.esm.js.map +1 -1
  53. package/dist/utils/constants.esm.js +3 -1
  54. package/dist/utils/constants.esm.js.map +1 -1
  55. package/dist/utils/hooks.esm.js +4 -17
  56. package/dist/utils/hooks.esm.js.map +1 -1
  57. package/dist/utils/style.esm.js +1 -48
  58. package/dist/utils/style.esm.js.map +1 -1
  59. package/dist/utils/translations.esm.js +27 -5
  60. package/dist/utils/translations.esm.js.map +1 -1
  61. package/dist/utils/types.esm.js +0 -1
  62. package/dist/utils/types.esm.js.map +1 -1
  63. package/dist/utils/utilityfunctions.esm.js +40 -12
  64. package/dist/utils/utilityfunctions.esm.js.map +1 -1
  65. package/package.json +3 -1
  66. package/dist/components/common/Dropdown.esm.js +0 -79
  67. package/dist/components/common/Dropdown.esm.js.map +0 -1
  68. package/dist/components/common/Textfield.esm.js +0 -64
  69. package/dist/components/common/Textfield.esm.js.map +0 -1
  70. package/dist/components/scenarioDrawer/components/ActionFormSection.esm.js.map +0 -1
  71. package/dist/components/scenarioWizard/components/ActionEdit.esm.js +0 -111
  72. package/dist/components/scenarioWizard/components/ActionEdit.esm.js.map +0 -1
@@ -1,11 +1,29 @@
1
- import { CircularProgress } from '@material-ui/core';
2
1
  import React from 'react';
3
- import { useSpinnerStyles } from '../../utils/style.esm.js';
2
+ import Box from '@mui/material/Box';
3
+ import CircularProgress from '@mui/material/CircularProgress';
4
4
 
5
- const Spinner = ({ size }) => {
6
- const { container, spinner } = useSpinnerStyles();
7
- return /* @__PURE__ */ React.createElement("div", { className: container }, /* @__PURE__ */ React.createElement(CircularProgress, { className: spinner, size }));
8
- };
5
+ const Spinner = ({ size }) => /* @__PURE__ */ React.createElement(
6
+ Box,
7
+ {
8
+ sx: {
9
+ display: "flex",
10
+ minWidth: "100wh",
11
+ height: "100vh",
12
+ justifyContent: "center",
13
+ alignItems: "flex-start"
14
+ }
15
+ },
16
+ /* @__PURE__ */ React.createElement(
17
+ CircularProgress,
18
+ {
19
+ size,
20
+ sx: {
21
+ display: "flex",
22
+ marginTop: "200px"
23
+ }
24
+ }
25
+ )
26
+ );
9
27
 
10
28
  export { Spinner };
11
29
  //# sourceMappingURL=Spinner.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import { CircularProgress } from '@material-ui/core';\nimport React from 'react';\nimport { useSpinnerStyles } from '../../utils/style';\n\nexport const Spinner = ({ size }: { size?: string | number }) => {\n const { container, spinner } = useSpinnerStyles();\n return (\n <div className={container}>\n <CircularProgress className={spinner} size={size} />\n </div>\n );\n};\n"],"names":[],"mappings":";;;;AAIO,MAAM,OAAU,GAAA,CAAC,EAAE,IAAA,EAAuC,KAAA;AAC/D,EAAA,MAAM,EAAE,SAAA,EAAW,OAAQ,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAChD,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,SAAI,SAAW,EAAA,SAAA,EAAA,sCACb,gBAAiB,EAAA,EAAA,SAAA,EAAW,OAAS,EAAA,IAAA,EAAY,CACpD,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import React from 'react';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport const Spinner = ({ size }: { size?: string | number }) => (\n <Box\n sx={{\n display: 'flex',\n minWidth: '100wh',\n height: '100vh',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <CircularProgress\n size={size}\n sx={{\n display: 'flex',\n marginTop: '200px',\n }}\n />\n </Box>\n);\n"],"names":[],"mappings":";;;;AAIO,MAAM,OAAU,GAAA,CAAC,EAAE,IAAA,EACxB,qBAAA,KAAA,CAAA,aAAA;AAAA,EAAC,GAAA;AAAA,EAAA;AAAA,IACC,EAAI,EAAA;AAAA,MACF,OAAS,EAAA,MAAA;AAAA,MACT,QAAU,EAAA,OAAA;AAAA,MACV,MAAQ,EAAA,OAAA;AAAA,MACR,cAAgB,EAAA,QAAA;AAAA,MAChB,UAAY,EAAA,YAAA;AAAA,KACd;AAAA,GAAA;AAAA,kBAEA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,SAAW,EAAA,OAAA;AAAA,OACb;AAAA,KAAA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { ConsequenceTableInfoWithHeaders } from '../scenarioWizard/components/ConsequenceTable.esm.js';
3
+ import CloseIcon from '@mui/icons-material/Close';
4
+ import { ProbabilityTableInfoWithHeaders } from '../scenarioWizard/components/ProbabilityTable.esm.js';
5
+ import { heading3 } from '../common/typography.esm.js';
6
+ import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
7
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
8
+ import Box from '@mui/material/Box';
9
+ import Dialog from '@mui/material/Dialog';
10
+ import DialogTitle from '@mui/material/DialogTitle';
11
+ import IconButton from '@mui/material/IconButton';
12
+ import DialogContent from '@mui/material/DialogContent';
13
+ import Typography from '@mui/material/Typography';
14
+ import DialogActions from '@mui/material/DialogActions';
15
+ import Button from '@mui/material/Button';
16
+
17
+ const MatrixDialog = ({
18
+ open,
19
+ close
20
+ }) => {
21
+ const { t } = useTranslationRef(pluginRiScTranslationRef);
22
+ return /* @__PURE__ */ React.createElement(Dialog, { maxWidth: "lg", open, onClose: close }, /* @__PURE__ */ React.createElement(DialogTitle, null, t("scenarioDrawer.riskMatrixModal.title")), /* @__PURE__ */ React.createElement(
23
+ IconButton,
24
+ {
25
+ "aria-label": "close",
26
+ onClick: close,
27
+ sx: {
28
+ position: "absolute",
29
+ right: 8,
30
+ top: 8,
31
+ color: (theme) => theme.palette.grey[500]
32
+ }
33
+ },
34
+ /* @__PURE__ */ React.createElement(CloseIcon, null)
35
+ ), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(
36
+ Typography,
37
+ {
38
+ sx: {
39
+ paddingBottom: "32px"
40
+ }
41
+ },
42
+ t("scenarioStepper.initialRiskStep.subtitle")
43
+ ), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(Typography, { sx: { ...heading3, paddingBottom: "4px" } }, t("dictionary.probability"))), /* @__PURE__ */ React.createElement(ProbabilityTableInfoWithHeaders, null), /* @__PURE__ */ React.createElement(Box, null, /* @__PURE__ */ React.createElement(
44
+ Typography,
45
+ {
46
+ sx: { ...heading3, paddingTop: "16px", paddingBottom: "4px" }
47
+ },
48
+ t("dictionary.consequence")
49
+ )), /* @__PURE__ */ React.createElement(ConsequenceTableInfoWithHeaders, null)), /* @__PURE__ */ React.createElement(DialogActions, null, /* @__PURE__ */ React.createElement(Button, { onClick: close }, t("dictionary.close"))));
50
+ };
51
+
52
+ export { MatrixDialog };
53
+ //# sourceMappingURL=MatrixDialog.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatrixDialog.esm.js","sources":["../../../src/components/riScDialog/MatrixDialog.tsx"],"sourcesContent":["import React from 'react';\nimport { ConsequenceTableInfoWithHeaders } from '../scenarioWizard/components/ConsequenceTable';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { ProbabilityTableInfoWithHeaders } from '../scenarioWizard/components/ProbabilityTable';\nimport { heading3 } from '../common/typography';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport DialogContent from '@mui/material/DialogContent';\nimport Typography from '@mui/material/Typography';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\n\nexport const MatrixDialog = ({\n open,\n close,\n}: {\n open: boolean;\n close: () => void;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Dialog maxWidth=\"lg\" open={open} onClose={close}>\n <DialogTitle>{t('scenarioDrawer.riskMatrixModal.title')}</DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={close}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n <DialogContent>\n <Typography\n sx={{\n paddingBottom: '32px',\n }}\n >\n {t('scenarioStepper.initialRiskStep.subtitle')}\n </Typography>\n <Box>\n <Typography sx={{ ...heading3, paddingBottom: '4px' }}>\n {t('dictionary.probability')}\n </Typography>\n </Box>\n <ProbabilityTableInfoWithHeaders />\n <Box>\n <Typography\n sx={{ ...heading3, paddingTop: '16px', paddingBottom: '4px' }}\n >\n {t('dictionary.consequence')}\n </Typography>\n </Box>\n <ConsequenceTableInfoWithHeaders />\n </DialogContent>\n <DialogActions>\n <Button onClick={close}>{t('dictionary.close')}</Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAgBO,MAAM,eAAe,CAAC;AAAA,EAC3B,IAAA;AAAA,EACA,KAAA;AACF,CAGM,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AAExD,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,QAAS,EAAA,IAAA,EAAK,IAAY,EAAA,OAAA,EAAS,KACzC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,WAAa,EAAA,IAAA,EAAA,CAAA,CAAE,sCAAsC,CAAE,CACxD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,YAAW,EAAA,OAAA;AAAA,MACX,OAAS,EAAA,KAAA;AAAA,MACT,EAAI,EAAA;AAAA,QACF,QAAU,EAAA,UAAA;AAAA,QACV,KAAO,EAAA,CAAA;AAAA,QACP,GAAK,EAAA,CAAA;AAAA,QACL,KAAO,EAAA,CAAA,KAAA,KAAS,KAAM,CAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,OACxC;AAAA,KAAA;AAAA,wCAEC,SAAU,EAAA,IAAA,CAAA;AAAA,GACb,sCACC,aACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,aAAe,EAAA,MAAA;AAAA,OACjB;AAAA,KAAA;AAAA,IAEC,EAAE,0CAA0C,CAAA;AAAA,GAC/C,sCACC,GACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,EAAI,EAAA,EAAE,GAAG,QAAU,EAAA,aAAA,EAAe,OAC3C,EAAA,EAAA,CAAA,CAAE,wBAAwB,CAC7B,CACF,mBACC,KAAA,CAAA,aAAA,CAAA,+BAAA,EAAA,IAAgC,CACjC,kBAAA,KAAA,CAAA,aAAA,CAAC,GACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,IAAI,EAAE,GAAG,UAAU,UAAY,EAAA,MAAA,EAAQ,eAAe,KAAM,EAAA;AAAA,KAAA;AAAA,IAE3D,EAAE,wBAAwB,CAAA;AAAA,GAE/B,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,+BAAgC,EAAA,IAAA,CACnC,mBACC,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAO,SAAS,KAAQ,EAAA,EAAA,CAAA,CAAE,kBAAkB,CAAE,CACjD,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -18,6 +18,8 @@ import { InfoCard } from '@backstage/core-components';
18
18
  import { PullRequestSvg } from '../../common/Icons.esm.js';
19
19
  import { useRiScs } from '../../../contexts/RiScContext.esm.js';
20
20
  import { subtitle1 } from '../../common/typography.esm.js';
21
+ import { Box } from '@material-ui/core';
22
+ import { WarningAmberOutlined } from '@mui/icons-material';
21
23
 
22
24
  const RiScPublishDialog = ({
23
25
  openDialog,
@@ -56,14 +58,23 @@ const RiScPublishDialog = ({
56
58
  const RiScMigrationDialog = ({
57
59
  openDialog,
58
60
  handleCancel,
59
- handleUpdate
61
+ handleUpdate,
62
+ migrationVersions
60
63
  }) => {
61
64
  const { t } = useTranslationRef(pluginRiScTranslationRef);
62
65
  const [saveMigration, setSaveMigration] = useState(false);
63
66
  const handleCheckboxInput = (event) => {
64
67
  setSaveMigration(event.target.checked);
65
68
  };
66
- return /* @__PURE__ */ React.createElement(Dialog, { open: openDialog }, /* @__PURE__ */ React.createElement(DialogTitle, null, t("migrationDialog.title")), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(Alert, { severity: "info", icon: false }, /* @__PURE__ */ React.createElement(
69
+ return /* @__PURE__ */ React.createElement(Dialog, { open: openDialog }, /* @__PURE__ */ React.createElement(DialogTitle, null, t("migrationDialog.title")), /* @__PURE__ */ React.createElement(DialogContent, null, /* @__PURE__ */ React.createElement(Box, { sx: { marginBottom: "16px" } }, /* @__PURE__ */ React.createElement(Typography, null, t("migrationDialog.description"), migrationVersions?.toVersion, " ", t("migrationDialog.description2"), " ", migrationVersions?.fromVersion, t("migrationDialog.description3"), /* @__PURE__ */ React.createElement(
70
+ Link,
71
+ {
72
+ underline: "always",
73
+ target: "_blank",
74
+ href: "https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md"
75
+ },
76
+ t("migrationDialog.changelog")
77
+ ), " ", t("migrationDialog.description4"))), /* @__PURE__ */ React.createElement(Alert, { severity: "info", icon: false }, /* @__PURE__ */ React.createElement(
67
78
  FormControlLabel,
68
79
  {
69
80
  control: /* @__PURE__ */ React.createElement(
@@ -91,7 +102,13 @@ const RosAcceptance = ({
91
102
  }) => {
92
103
  const { t } = useTranslationRef(pluginRiScTranslationRef);
93
104
  if (migration) {
94
- return /* @__PURE__ */ React.createElement(Typography, { paragraph: true, sx: subtitle1 }, t("rosStatus.statusBadge.migration"));
105
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Typography, { paragraph: true, sx: subtitle1 }, /* @__PURE__ */ React.createElement(
106
+ WarningAmberOutlined,
107
+ {
108
+ fontSize: "medium",
109
+ sx: { transform: "translateY(5px)", marginTop: "5px" }
110
+ }
111
+ ), " ", t("rosStatus.statusBadge.migration.title")), /* @__PURE__ */ React.createElement(Typography, null, t("rosStatus.statusBadge.migration.description")));
95
112
  }
96
113
  switch (status) {
97
114
  case RiScStatus.Draft:
@@ -123,9 +140,9 @@ const RiScStatusComponent = ({
123
140
  RosAcceptance,
124
141
  {
125
142
  status: selectedRiSc.status,
126
- migration: selectedRiSc.migrationChanges
143
+ migration: selectedRiSc.migrationStatus?.migrationChanges
127
144
  }
128
- ), selectedRiSc.status === RiScStatus.SentForApproval && !selectedRiSc.migrationChanges && /* @__PURE__ */ React.createElement(Typography, { sx: { fontWeight: 700 }, paragraph: true, variant: "subtitle1" }, /* @__PURE__ */ React.createElement(PullRequestSvg, null), t("rosStatus.prStatus"), /* @__PURE__ */ React.createElement(Link, { target: "_blank", href: selectedRiSc.pullRequestUrl }, "Github")), selectedRiSc.status === RiScStatus.Draft && !selectedRiSc.migrationChanges && /* @__PURE__ */ React.createElement(
145
+ ), selectedRiSc.status === RiScStatus.SentForApproval && !selectedRiSc.migrationStatus?.migrationChanges && /* @__PURE__ */ React.createElement(Typography, { sx: { fontWeight: 700 }, paragraph: true, variant: "subtitle1" }, /* @__PURE__ */ React.createElement(PullRequestSvg, null), t("rosStatus.prStatus"), /* @__PURE__ */ React.createElement(Link, { target: "_blank", href: selectedRiSc.pullRequestUrl }, "Github")), selectedRiSc.status === RiScStatus.Draft && !selectedRiSc.migrationStatus?.migrationChanges && /* @__PURE__ */ React.createElement(
129
146
  Button,
130
147
  {
131
148
  color: "primary",
@@ -135,7 +152,7 @@ const RiScStatusComponent = ({
135
152
  sx: { display: "block", marginLeft: "auto" }
136
153
  },
137
154
  t("rosStatus.approveButton")
138
- ), selectedRiSc.migrationChanges && /* @__PURE__ */ React.createElement(
155
+ ), selectedRiSc.migrationStatus?.migrationChanges && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
139
156
  Button,
140
157
  {
141
158
  color: "primary",
@@ -143,21 +160,22 @@ const RiScStatusComponent = ({
143
160
  onClick: () => setMigrationDialogIsOpen(!migrationDialogIsOpen),
144
161
  sx: { display: "block", marginLeft: "auto" }
145
162
  },
146
- /* @__PURE__ */ React.createElement(Typography, { variant: "button" }, t("rosStatus.saveButton"))
163
+ /* @__PURE__ */ React.createElement(Typography, { variant: "button" }, t("rosStatus.moreInformationButton"))
147
164
  ), /* @__PURE__ */ React.createElement(
165
+ RiScMigrationDialog,
166
+ {
167
+ openDialog: migrationDialogIsOpen,
168
+ handleUpdate,
169
+ handleCancel: () => setMigrationDialogIsOpen(false),
170
+ migrationVersions: selectedRiSc.migrationStatus?.migrationVersions
171
+ }
172
+ )), /* @__PURE__ */ React.createElement(
148
173
  RiScPublishDialog,
149
174
  {
150
175
  openDialog: publishRiScDialogIsOpen,
151
176
  handlePublish: handleApproveAndPublish,
152
177
  handleCancel: () => setPublishRiScDialogIsOpen(false)
153
178
  }
154
- ), /* @__PURE__ */ React.createElement(
155
- RiScMigrationDialog,
156
- {
157
- openDialog: migrationDialogIsOpen,
158
- handleUpdate,
159
- handleCancel: () => setMigrationDialogIsOpen(false)
160
- }
161
179
  ));
162
180
  };
163
181
 
@@ -1 +1 @@
1
- {"version":3,"file":"RiScStatusComponent.esm.js","sources":["../../../../src/components/riScInfo/riScStatus/RiScStatusComponent.tsx"],"sourcesContent":["import React, { ReactComponentElement, useState } from 'react';\nimport { RiScStatus, RiScWithMetadata } from '../../../utils/types';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport CheckIcon from '@mui/icons-material/Check';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { dialogActions } from '../../common/mixins';\nimport { InfoCard } from '@backstage/core-components';\nimport { PullRequestSvg } from '../../common/Icons';\nimport { useRiScs } from '../../../contexts/RiScContext';\nimport { subtitle1 } from '../../common/typography';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n}\n\nconst RiScPublishDialog = ({\n openDialog,\n handleCancel,\n handlePublish,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRiskOwnerApproves(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('publishDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={t('publishDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n}\n\nconst RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n}: RiScMigrationDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSaveMigration(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nconst RosAcceptance = ({\n status,\n migration,\n}: {\n status: RiScStatus;\n migration?: boolean;\n}): React.JSX.Element => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n if (migration) {\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.migration')}\n </Typography>\n );\n }\n switch (status) {\n case RiScStatus.Draft:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.missing')}\n </Typography>\n );\n case RiScStatus.SentForApproval:\n case RiScStatus.Published:\n return (\n <Typography paragraph sx={subtitle1}>\n <CheckIcon fontSize=\"medium\" sx={{ transform: 'translateY(5px)' }} />{' '}\n {t('rosStatus.statusBadge.approved')}\n </Typography>\n );\n default:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.error')}\n </Typography>\n );\n }\n};\n\ninterface RiScStatusProps {\n selectedRiSc: RiScWithMetadata;\n publishRiScFn: () => void;\n}\n\nexport const RiScStatusComponent = ({\n selectedRiSc,\n publishRiScFn,\n}: RiScStatusProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [publishRiScDialogIsOpen, setPublishRiScDialogIsOpen] =\n useState<boolean>(false);\n\n const [migrationDialogIsOpen, setMigrationDialogIsOpen] =\n useState<boolean>(false);\n\n const { updateRiSc } = useRiScs();\n\n const handleApproveAndPublish = () => {\n publishRiScFn();\n setPublishRiScDialogIsOpen(false);\n };\n\n const handleUpdate = () => {\n updateRiSc(selectedRiSc.content);\n setMigrationDialogIsOpen(false);\n };\n\n return (\n <InfoCard>\n <Typography variant=\"h5\">Status</Typography>\n\n <RosAcceptance\n status={selectedRiSc.status}\n migration={selectedRiSc.migrationChanges}\n />\n {selectedRiSc.status === RiScStatus.SentForApproval &&\n !selectedRiSc.migrationChanges && (\n <Typography sx={{ fontWeight: 700 }} paragraph variant=\"subtitle1\">\n <PullRequestSvg />\n {t('rosStatus.prStatus')}\n <Link target=\"_blank\" href={selectedRiSc.pullRequestUrl}>\n Github\n </Link>\n </Typography>\n )}\n {selectedRiSc.status === RiScStatus.Draft &&\n !selectedRiSc.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setPublishRiScDialogIsOpen(!publishRiScDialogIsOpen)}\n disabled={selectedRiSc.status !== RiScStatus.Draft}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n {t('rosStatus.approveButton')}\n </Button>\n )}\n {selectedRiSc.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setMigrationDialogIsOpen(!migrationDialogIsOpen)}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n <Typography variant=\"button\">{t('rosStatus.saveButton')}</Typography>\n </Button>\n )}\n <RiScPublishDialog\n openDialog={publishRiScDialogIsOpen}\n handlePublish={handleApproveAndPublish}\n handleCancel={() => setPublishRiScDialogIsOpen(false)}\n />\n <RiScMigrationDialog\n openDialog={migrationDialogIsOpen}\n handleUpdate={handleUpdate}\n handleCancel={() => setMigrationDialogIsOpen(false)}\n />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,oBAAoB,CAAC;AAAA,EACzB,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AACF,CAA0D,KAAA;AACxD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AAExD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAkB,KAAK,CAAA,CAAA;AAEzE,EAAM,MAAA,mBAAA,GAAsB,CAAC,KAA+C,KAAA;AAC1E,IAAqB,oBAAA,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA,CAAA;AAAA,GAC3C,CAAA;AAEA,EAAA,2CACG,MAAO,EAAA,EAAA,IAAA,EAAM,UACZ,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,mBAAa,CAAE,CAAA,qBAAqB,CAAE,CAAA,sCACtC,aACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAM,QAAS,EAAA,MAAA,EAAO,MAAM,KAC3B,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,OACE,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,KAAM,EAAA,SAAA;AAAA,UACN,OAAS,EAAA,iBAAA;AAAA,UACT,QAAU,EAAA,mBAAA;AAAA,SAAA;AAAA,OACZ;AAAA,MAEF,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,KAAA;AAAA,GAE1C,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,IAAI,aACjB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,WAAA;AAAA,MACR,KAAM,EAAA,SAAA;AAAA,MACN,OAAS,EAAA,aAAA;AAAA,MACT,UAAU,CAAC,iBAAA;AAAA,KAAA;AAAA,IAEV,EAAE,oBAAoB,CAAA;AAAA,GAEzB,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,OAAA,EAAQ,UAAW,EAAA,KAAA,EAAM,SAAU,EAAA,OAAA,EAAS,YACjD,EAAA,EAAA,CAAA,CAAE,mBAAmB,CACxB,CACF,CACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAQA,MAAM,sBAAsB,CAAC;AAAA,EAC3B,UAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AACF,CAA4D,KAAA;AAC1D,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AAExD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAkB,KAAK,CAAA,CAAA;AAEjE,EAAM,MAAA,mBAAA,GAAsB,CAAC,KAA+C,KAAA;AAC1E,IAAiB,gBAAA,CAAA,KAAA,CAAM,OAAO,OAAO,CAAA,CAAA;AAAA,GACvC,CAAA;AAEA,EAAA,2CACG,MAAO,EAAA,EAAA,IAAA,EAAM,UACZ,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,mBAAa,CAAE,CAAA,uBAAuB,CAAE,CAAA,sCACxC,aACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAM,QAAS,EAAA,MAAA,EAAO,MAAM,KAC3B,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,gBAAA;AAAA,IAAA;AAAA,MACC,OACE,kBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,OAAS,EAAA,aAAA;AAAA,UACT,QAAU,EAAA,mBAAA;AAAA,SAAA;AAAA,OACZ;AAAA,MAEF,KAAA,EAAO,EAAE,+BAA+B,CAAA;AAAA,KAAA;AAAA,GAE5C,CACF,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,IAAI,aACjB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,WAAA;AAAA,MACR,OAAS,EAAA,YAAA;AAAA,MACT,UAAU,CAAC,aAAA;AAAA,KAAA;AAAA,IAEV,EAAE,oBAAoB,CAAA;AAAA,GAEzB,kBAAA,KAAA,CAAA,aAAA,CAAC,MAAO,EAAA,EAAA,OAAA,EAAQ,UAAW,EAAA,KAAA,EAAM,SAAU,EAAA,OAAA,EAAS,YACjD,EAAA,EAAA,CAAA,CAAE,mBAAmB,CACxB,CACF,CACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEA,MAAM,gBAAgB,CAAC;AAAA,EACrB,MAAA;AAAA,EACA,SAAA;AACF,CAGyB,KAAA;AACvB,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AACxD,EAAA,IAAI,SAAW,EAAA;AACb,IACE,uBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,SAAS,EAAA,IAAA,EAAC,IAAI,SACvB,EAAA,EAAA,CAAA,CAAE,iCAAiC,CACtC,CAAA,CAAA;AAAA,GAEJ;AACA,EAAA,QAAQ,MAAQ;AAAA,IACd,KAAK,UAAW,CAAA,KAAA;AACd,MACE,uBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,SAAS,EAAA,IAAA,EAAC,IAAI,SACvB,EAAA,EAAA,CAAA,CAAE,+BAA+B,CACpC,CAAA,CAAA;AAAA,IAEJ,KAAK,UAAW,CAAA,eAAA,CAAA;AAAA,IAChB,KAAK,UAAW,CAAA,SAAA;AACd,MAAA,2CACG,UAAW,EAAA,EAAA,SAAA,EAAS,MAAC,EAAI,EAAA,SAAA,EAAA,sCACvB,SAAU,EAAA,EAAA,QAAA,EAAS,UAAS,EAAI,EAAA,EAAE,WAAW,iBAAkB,EAAA,EAAG,GAAG,GACrE,EAAA,CAAA,CAAE,gCAAgC,CACrC,CAAA,CAAA;AAAA,IAEJ;AACE,MACE,uBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,SAAS,EAAA,IAAA,EAAC,IAAI,SACvB,EAAA,EAAA,CAAA,CAAE,6BAA6B,CAClC,CAAA,CAAA;AAAA,GAEN;AACF,CAAA,CAAA;AAOO,MAAM,sBAAsB,CAAC;AAAA,EAClC,YAAA;AAAA,EACA,aAAA;AACF,CAAuB,KAAA;AACrB,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AAExD,EAAA,MAAM,CAAC,uBAAA,EAAyB,0BAA0B,CAAA,GACxD,SAAkB,KAAK,CAAA,CAAA;AAEzB,EAAA,MAAM,CAAC,qBAAA,EAAuB,wBAAwB,CAAA,GACpD,SAAkB,KAAK,CAAA,CAAA;AAEzB,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,QAAS,EAAA,CAAA;AAEhC,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAc,aAAA,EAAA,CAAA;AACd,IAAA,0BAAA,CAA2B,KAAK,CAAA,CAAA;AAAA,GAClC,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,UAAA,CAAW,aAAa,OAAO,CAAA,CAAA;AAC/B,IAAA,wBAAA,CAAyB,KAAK,CAAA,CAAA;AAAA,GAChC,CAAA;AAEA,EAAA,2CACG,QACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,IAAA,EAAA,EAAK,QAAM,CAE/B,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,QAAQ,YAAa,CAAA,MAAA;AAAA,MACrB,WAAW,YAAa,CAAA,gBAAA;AAAA,KAAA;AAAA,KAEzB,YAAa,CAAA,MAAA,KAAW,WAAW,eAClC,IAAA,CAAC,aAAa,gBACZ,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,EAAA,EAAI,EAAE,UAAY,EAAA,GAAA,IAAO,SAAS,EAAA,IAAA,EAAC,SAAQ,WACrD,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,IAAA,CAAA,EACf,EAAE,oBAAoB,CAAA,sCACtB,IAAK,EAAA,EAAA,MAAA,EAAO,UAAS,IAAM,EAAA,YAAA,CAAa,kBAAgB,QAEzD,CACF,GAEH,YAAa,CAAA,MAAA,KAAW,WAAW,KAClC,IAAA,CAAC,aAAa,gBACZ,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,SAAA;AAAA,MACN,OAAQ,EAAA,WAAA;AAAA,MACR,OAAS,EAAA,MAAM,0BAA2B,CAAA,CAAC,uBAAuB,CAAA;AAAA,MAClE,QAAA,EAAU,YAAa,CAAA,MAAA,KAAW,UAAW,CAAA,KAAA;AAAA,MAC7C,EAAI,EAAA,EAAE,OAAS,EAAA,OAAA,EAAS,YAAY,MAAO,EAAA;AAAA,KAAA;AAAA,IAE1C,EAAE,yBAAyB,CAAA;AAAA,GAC9B,EAEH,aAAa,gBACZ,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,KAAM,EAAA,SAAA;AAAA,MACN,OAAQ,EAAA,WAAA;AAAA,MACR,OAAS,EAAA,MAAM,wBAAyB,CAAA,CAAC,qBAAqB,CAAA;AAAA,MAC9D,EAAI,EAAA,EAAE,OAAS,EAAA,OAAA,EAAS,YAAY,MAAO,EAAA;AAAA,KAAA;AAAA,wCAE1C,UAAW,EAAA,EAAA,OAAA,EAAQ,QAAU,EAAA,EAAA,CAAA,CAAE,sBAAsB,CAAE,CAAA;AAAA,GAG5D,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,UAAY,EAAA,uBAAA;AAAA,MACZ,aAAe,EAAA,uBAAA;AAAA,MACf,YAAA,EAAc,MAAM,0BAAA,CAA2B,KAAK,CAAA;AAAA,KAAA;AAAA,GAEtD,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,mBAAA;AAAA,IAAA;AAAA,MACC,UAAY,EAAA,qBAAA;AAAA,MACZ,YAAA;AAAA,MACA,YAAA,EAAc,MAAM,wBAAA,CAAyB,KAAK,CAAA;AAAA,KAAA;AAAA,GAEtD,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RiScStatusComponent.esm.js","sources":["../../../../src/components/riScInfo/riScStatus/RiScStatusComponent.tsx"],"sourcesContent":["import React, { ReactComponentElement, useState } from 'react';\nimport {\n MigrationVersions,\n RiScStatus,\n RiScWithMetadata,\n} from '../../../utils/types';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport CheckIcon from '@mui/icons-material/Check';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { dialogActions } from '../../common/mixins';\nimport { InfoCard } from '@backstage/core-components';\nimport { PullRequestSvg } from '../../common/Icons';\nimport { useRiScs } from '../../../contexts/RiScContext';\nimport { subtitle1 } from '../../common/typography';\nimport { Box } from '@material-ui/core';\nimport { WarningAmberOutlined } from '@mui/icons-material';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n}\n\nconst RiScPublishDialog = ({\n openDialog,\n handleCancel,\n handlePublish,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRiskOwnerApproves(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('publishDialog.title')}</DialogTitle>\n <DialogContent>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={t('publishDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n migrationVersions?: MigrationVersions;\n}\n\nconst RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n migrationVersions,\n}: RiScMigrationDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n const handleCheckboxInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSaveMigration(event.target.checked);\n };\n\n return (\n <Dialog open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Box sx={{ marginBottom: '16px' }}>\n <Typography>\n {t('migrationDialog.description')}\n {migrationVersions?.toVersion} {t('migrationDialog.description2')}{' '}\n {migrationVersions?.fromVersion}\n {t('migrationDialog.description3')}\n <Link\n underline=\"always\"\n target=\"_blank\"\n href=\"https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md\"\n >\n {t('migrationDialog.changelog')}\n </Link>{' '}\n {t('migrationDialog.description4')}\n </Typography>\n </Box>\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nconst RosAcceptance = ({\n status,\n migration,\n}: {\n status: RiScStatus;\n migration?: boolean;\n}): React.JSX.Element => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n if (migration) {\n return (\n <>\n <Typography paragraph sx={subtitle1}>\n <WarningAmberOutlined\n fontSize=\"medium\"\n sx={{ transform: 'translateY(5px)', marginTop: '5px' }}\n />{' '}\n {t('rosStatus.statusBadge.migration.title')}\n </Typography>\n <Typography>\n {t('rosStatus.statusBadge.migration.description')}\n </Typography>\n </>\n );\n }\n switch (status) {\n case RiScStatus.Draft:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.missing')}\n </Typography>\n );\n case RiScStatus.SentForApproval:\n case RiScStatus.Published:\n return (\n <Typography paragraph sx={subtitle1}>\n <CheckIcon fontSize=\"medium\" sx={{ transform: 'translateY(5px)' }} />{' '}\n {t('rosStatus.statusBadge.approved')}\n </Typography>\n );\n default:\n return (\n <Typography paragraph sx={subtitle1}>\n {t('rosStatus.statusBadge.error')}\n </Typography>\n );\n }\n};\n\ninterface RiScStatusProps {\n selectedRiSc: RiScWithMetadata;\n publishRiScFn: () => void;\n}\n\nexport const RiScStatusComponent = ({\n selectedRiSc,\n publishRiScFn,\n}: RiScStatusProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [publishRiScDialogIsOpen, setPublishRiScDialogIsOpen] =\n useState<boolean>(false);\n\n const [migrationDialogIsOpen, setMigrationDialogIsOpen] =\n useState<boolean>(false);\n\n const { updateRiSc } = useRiScs();\n\n const handleApproveAndPublish = () => {\n publishRiScFn();\n setPublishRiScDialogIsOpen(false);\n };\n\n const handleUpdate = () => {\n updateRiSc(selectedRiSc.content);\n setMigrationDialogIsOpen(false);\n };\n\n return (\n <InfoCard>\n <Typography variant=\"h5\">Status</Typography>\n\n <RosAcceptance\n status={selectedRiSc.status}\n migration={selectedRiSc.migrationStatus?.migrationChanges}\n />\n {selectedRiSc.status === RiScStatus.SentForApproval &&\n !selectedRiSc.migrationStatus?.migrationChanges && (\n <Typography sx={{ fontWeight: 700 }} paragraph variant=\"subtitle1\">\n <PullRequestSvg />\n {t('rosStatus.prStatus')}\n <Link target=\"_blank\" href={selectedRiSc.pullRequestUrl}>\n Github\n </Link>\n </Typography>\n )}\n {selectedRiSc.status === RiScStatus.Draft &&\n !selectedRiSc.migrationStatus?.migrationChanges && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setPublishRiScDialogIsOpen(!publishRiScDialogIsOpen)}\n disabled={selectedRiSc.status !== RiScStatus.Draft}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n {t('rosStatus.approveButton')}\n </Button>\n )}\n {selectedRiSc.migrationStatus?.migrationChanges && (\n <>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setMigrationDialogIsOpen(!migrationDialogIsOpen)}\n sx={{ display: 'block', marginLeft: 'auto' }}\n >\n <Typography variant=\"button\">\n {t('rosStatus.moreInformationButton')}\n </Typography>\n </Button>\n <RiScMigrationDialog\n openDialog={migrationDialogIsOpen}\n handleUpdate={handleUpdate}\n handleCancel={() => setMigrationDialogIsOpen(false)}\n migrationVersions={selectedRiSc.migrationStatus?.migrationVersions}\n />\n </>\n )}\n <RiScPublishDialog\n openDialog={publishRiScDialogIsOpen}\n handlePublish={handleApproveAndPublish}\n handleCancel={() => setPublishRiScDialogIsOpen(false)}\n />\n </InfoCard>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,6 @@ import { useSearchParams } from 'react-router-dom';
4
4
  import { ScenarioWizard } from '../scenarioWizard/ScenarioWizard.esm.js';
5
5
  import { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer.esm.js';
6
6
  import { RiskMatrix } from '../riskMatrix/RiskMatrix.esm.js';
7
- import { ScenarioTable } from '../scenarioTable/ScenarioTable.esm.js';
8
7
  import Alert from '@mui/material/Alert';
9
8
  import Button from '@mui/material/Button';
10
9
  import Grid from '@mui/material/Grid';
@@ -21,6 +20,7 @@ import { useRiScs } from '../../contexts/RiScContext.esm.js';
21
20
  import MUISelect from '@mui/material/Select';
22
21
  import MenuItem from '@mui/material/MenuItem';
23
22
  import ListItemText from '@mui/material/ListItemText';
23
+ import { ScenarioTableWrapper } from '../scenarioTable/ScenarioTable.esm.js';
24
24
 
25
25
  const RiScPlugin = () => {
26
26
  const { t } = useTranslationRef(pluginRiScTranslationRef);
@@ -95,7 +95,7 @@ const RiScPlugin = () => {
95
95
  }
96
96
  },
97
97
  t("contentHeader.createNewButton")
98
- )), selectedRiSc && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(RiScInfo, { riSc: selectedRiSc, edit: openEditRiScDialog })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, md: 7, lg: 8 }, /* @__PURE__ */ React.createElement(ScenarioTable, { riSc: selectedRiSc.content })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, md: 5, lg: 4 }, /* @__PURE__ */ React.createElement(RiskMatrix, { riSc: selectedRiSc.content }))))), riScDialogState !== RiScDialogStates.Closed && /* @__PURE__ */ React.createElement(RiScDialog, { onClose: closeRiScDialog, dialogState: riScDialogState }), !scenarioWizardStep && /* @__PURE__ */ React.createElement(ScenarioDrawer, null));
98
+ )), selectedRiSc && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12 }, /* @__PURE__ */ React.createElement(RiScInfo, { riSc: selectedRiSc, edit: openEditRiScDialog })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, md: 7, lg: 8 }, /* @__PURE__ */ React.createElement(ScenarioTableWrapper, { riSc: selectedRiSc })), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true, md: 5, lg: 4 }, /* @__PURE__ */ React.createElement(RiskMatrix, { riSc: selectedRiSc.content }))))), riScDialogState !== RiScDialogStates.Closed && /* @__PURE__ */ React.createElement(RiScDialog, { onClose: closeRiScDialog, dialogState: riScDialogState }), !scenarioWizardStep && /* @__PURE__ */ React.createElement(ScenarioDrawer, null));
99
99
  };
100
100
 
101
101
  export { RiScPlugin };
@@ -1 +1 @@
1
- {"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ContentHeader, SupportButton } from '@backstage/core-components';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport { ScenarioTable } from '../scenarioTable/ScenarioTable';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { RiScInfo } from '../riScInfo/RiScInfo';\nimport AddCircle from '@mui/icons-material/AddCircle';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\n\nexport const RiScPlugin = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n const openCreateRiScDialog = () =>\n setRiScDialogState(RiScDialogStates.Create);\n const openEditRiScDialog = () => setRiScDialogState(RiScDialogStates.Edit);\n const closeRiScDialog = () => setRiScDialogState(RiScDialogStates.Closed);\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n isFetching,\n resetRiScStatus,\n response,\n riScUpdateStatus,\n } = useRiScs();\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) resetRiScStatus();\n }, [resetRiScStatus, scenarioWizardStep]);\n\n return (\n <>\n {response && (\n <Alert\n severity={getAlertSeverity(response.status)}\n sx={{ marginBottom: 2 }}\n >\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n {riScUpdateStatus.isLoading && (\n <LinearProgress\n sx={{\n position: 'sticky',\n top: 0,\n margin: 2,\n }}\n />\n )}\n\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <ContentHeader title={t('contentHeader.title')}>\n <SupportButton />\n </ContentHeader>\n\n {isFetching && <Spinner size={80} />}\n\n <Grid container spacing={4}>\n {riScs !== null && riScs.length !== 0 && (\n <Grid\n item\n xs={12}\n sm={6}\n sx={{\n maxWidth: '600px',\n minWidth: '300px',\n }}\n >\n <Select\n variant=\"standard\"\n value={selectedRiSc?.content.title ?? ''}\n onChange={e => selectRiSc(e.target.value)}\n sx={{ width: '100%' }}\n >\n {riScs.map(riSc => (\n <MenuItem key={riSc.id} value={riSc.content.title}>\n <ListItemText primary={riSc.content.title} />\n </MenuItem>\n )) ?? []}\n </Select>\n </Grid>\n )}\n\n {!isFetching && (\n <Grid item xs>\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"primary\"\n onClick={openCreateRiScDialog}\n sx={{\n minWidth: '205px',\n }}\n >\n {t('contentHeader.createNewButton')}\n </Button>\n </Grid>\n )}\n {selectedRiSc && (\n <>\n <Grid item xs={12}>\n <RiScInfo riSc={selectedRiSc} edit={openEditRiScDialog} />\n </Grid>\n <Grid item xs md={7} lg={8}>\n <ScenarioTable riSc={selectedRiSc.content} />\n </Grid>\n <Grid item xs md={5} lg={4}>\n <RiskMatrix riSc={selectedRiSc.content} />\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog onClose={closeRiScDialog} dialogState={riScDialogState} />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n};\n"],"names":["Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA,CAAA;AAExD,EAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,IAC5C,gBAAiB,CAAA,MAAA;AAAA,GACnB,CAAA;AAEA,EAAA,MAAM,oBAAuB,GAAA,MAC3B,kBAAmB,CAAA,gBAAA,CAAiB,MAAM,CAAA,CAAA;AAC5C,EAAA,MAAM,kBAAqB,GAAA,MAAM,kBAAmB,CAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACzE,EAAA,MAAM,eAAkB,GAAA,MAAM,kBAAmB,CAAA,gBAAA,CAAiB,MAAM,CAAA,CAAA;AAExE,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA,gBAAA;AAAA,MACE,QAAS,EAAA,CAAA;AAEb,EAAM,MAAA,CAAC,YAAY,CAAA,GAAI,eAAgB,EAAA,CAAA;AACvC,EAAA,MAAM,qBAAqB,YAAa,CAAA,GAAA;AAAA,IACtC,MAAA;AAAA,GACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,kBAAA,KAAuB,MAAsB,eAAA,EAAA,CAAA;AAAA,GAChD,EAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAC,CAAA,CAAA;AAExC,EAAA,iEAEK,QACC,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,QAAA,EAAU,gBAAiB,CAAA,QAAA,CAAS,MAAM,CAAA;AAAA,MAC1C,EAAA,EAAI,EAAE,YAAA,EAAc,CAAE,EAAA;AAAA,KAAA;AAAA,oBAEtB,KAAA,CAAA,aAAA,CAAC,UAAY,EAAA,IAAA,EAAA,QAAA,CAAS,aAAc,CAAA;AAAA,GACtC,EAED,iBAAiB,SAChB,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,QAAU,EAAA,QAAA;AAAA,QACV,GAAK,EAAA,CAAA;AAAA,QACL,MAAQ,EAAA,CAAA;AAAA,OACV;AAAA,KAAA;AAAA,GAIH,EAAA,kBAAA,KAAuB,IACtB,mBAAA,KAAA,CAAA,aAAA,CAAC,kBAAe,IAAM,EAAA,kBAAA,EAAoB,CAE1C,mBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,aAAc,EAAA,EAAA,KAAA,EAAO,CAAE,CAAA,qBAAqB,qBAC1C,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,IAAc,CACjB,CAAA,EAEC,8BAAe,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,IAAM,EAAA,EAAA,EAAI,mBAEjC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CACtB,EAAA,EAAA,KAAA,KAAU,IAAQ,IAAA,KAAA,CAAM,WAAW,CAClC,oBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAI,EAAA,IAAA;AAAA,MACJ,EAAI,EAAA,EAAA;AAAA,MACJ,EAAI,EAAA,CAAA;AAAA,MACJ,EAAI,EAAA;AAAA,QACF,QAAU,EAAA,OAAA;AAAA,QACV,QAAU,EAAA,OAAA;AAAA,OACZ;AAAA,KAAA;AAAA,oBAEA,KAAA,CAAA,aAAA;AAAA,MAACA,SAAA;AAAA,MAAA;AAAA,QACC,OAAQ,EAAA,UAAA;AAAA,QACR,KAAA,EAAO,YAAc,EAAA,OAAA,CAAQ,KAAS,IAAA,EAAA;AAAA,QACtC,QAAU,EAAA,CAAA,CAAA,KAAK,UAAW,CAAA,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QACxC,EAAA,EAAI,EAAE,KAAA,EAAO,MAAO,EAAA;AAAA,OAAA;AAAA,MAEnB,KAAA,CAAM,IAAI,CACT,IAAA,qBAAA,KAAA,CAAA,aAAA,CAAC,YAAS,GAAK,EAAA,IAAA,CAAK,IAAI,KAAO,EAAA,IAAA,CAAK,QAAQ,KAC1C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,gBAAa,OAAS,EAAA,IAAA,CAAK,QAAQ,KAAO,EAAA,CAC7C,CACD,CAAA,IAAK,EAAC;AAAA,KACT;AAAA,GACF,EAGD,CAAC,UACA,oBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAE,IACX,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,sCAAY,SAAU,EAAA,IAAA,CAAA;AAAA,MACtB,OAAQ,EAAA,MAAA;AAAA,MACR,KAAM,EAAA,SAAA;AAAA,MACN,OAAS,EAAA,oBAAA;AAAA,MACT,EAAI,EAAA;AAAA,QACF,QAAU,EAAA,OAAA;AAAA,OACZ;AAAA,KAAA;AAAA,IAEC,EAAE,+BAA+B,CAAA;AAAA,GAEtC,CAAA,EAED,YACC,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,IAAA,EAAM,cAAc,IAAM,EAAA,kBAAA,EAAoB,CAC1D,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAE,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,CACvB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAc,EAAA,EAAA,IAAA,EAAM,aAAa,OAAS,EAAA,CAC7C,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAE,MAAC,EAAI,EAAA,CAAA,EAAG,EAAI,EAAA,CAAA,EAAA,kBACtB,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,IAAM,EAAA,YAAA,CAAa,SAAS,CAC1C,CACF,CAEJ,CACF,CAGD,EAAA,eAAA,KAAoB,gBAAiB,CAAA,MAAA,wCACnC,UAAW,EAAA,EAAA,OAAA,EAAS,eAAiB,EAAA,WAAA,EAAa,iBAAiB,CAGrE,EAAA,CAAC,kBAAsB,oBAAA,KAAA,CAAA,aAAA,CAAC,oBAAe,CAC1C,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { ContentHeader, SupportButton } from '@backstage/core-components';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { RiScInfo } from '../riScInfo/RiScInfo';\nimport AddCircle from '@mui/icons-material/AddCircle';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\nimport { ScenarioTableWrapper } from '../scenarioTable/ScenarioTable';\n\nexport const RiScPlugin = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n const openCreateRiScDialog = () =>\n setRiScDialogState(RiScDialogStates.Create);\n const openEditRiScDialog = () => setRiScDialogState(RiScDialogStates.Edit);\n const closeRiScDialog = () => setRiScDialogState(RiScDialogStates.Closed);\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n isFetching,\n resetRiScStatus,\n response,\n riScUpdateStatus,\n } = useRiScs();\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) resetRiScStatus();\n }, [resetRiScStatus, scenarioWizardStep]);\n\n return (\n <>\n {response && (\n <Alert\n severity={getAlertSeverity(response.status)}\n sx={{ marginBottom: 2 }}\n >\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n {riScUpdateStatus.isLoading && (\n <LinearProgress\n sx={{\n position: 'sticky',\n top: 0,\n margin: 2,\n }}\n />\n )}\n\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <ContentHeader title={t('contentHeader.title')}>\n <SupportButton />\n </ContentHeader>\n\n {isFetching && <Spinner size={80} />}\n\n <Grid container spacing={4}>\n {riScs !== null && riScs.length !== 0 && (\n <Grid\n item\n xs={12}\n sm={6}\n sx={{\n maxWidth: '600px',\n minWidth: '300px',\n }}\n >\n <Select\n variant=\"standard\"\n value={selectedRiSc?.content.title ?? ''}\n onChange={e => selectRiSc(e.target.value)}\n sx={{ width: '100%' }}\n >\n {riScs.map(riSc => (\n <MenuItem key={riSc.id} value={riSc.content.title}>\n <ListItemText primary={riSc.content.title} />\n </MenuItem>\n )) ?? []}\n </Select>\n </Grid>\n )}\n\n {!isFetching && (\n <Grid item xs>\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"primary\"\n onClick={openCreateRiScDialog}\n sx={{\n minWidth: '205px',\n }}\n >\n {t('contentHeader.createNewButton')}\n </Button>\n </Grid>\n )}\n\n {selectedRiSc && (\n <>\n <Grid item xs={12}>\n <RiScInfo riSc={selectedRiSc} edit={openEditRiScDialog} />\n </Grid>\n <Grid item xs md={7} lg={8}>\n <ScenarioTableWrapper riSc={selectedRiSc} />\n </Grid>\n <Grid item xs md={5} lg={4}>\n <RiskMatrix riSc={selectedRiSc.content} />\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog onClose={closeRiScDialog} dialogState={riScDialogState} />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n};\n"],"names":["Select"],"mappings":"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"}
@@ -24,10 +24,10 @@ const RiskMatrixScenarioCount = ({
24
24
  tooltipText
25
25
  } = useRiskMatrixStyles();
26
26
  const [tooltipOpen, setTooltipOpen] = useState(false);
27
- const { openScenario } = useScenario();
27
+ const { openScenarioDrawer } = useScenario();
28
28
  const handleScenarioClick = (ID) => {
29
29
  setTooltipOpen(false);
30
- openScenario(ID);
30
+ openScenarioDrawer(ID);
31
31
  };
32
32
  const scenarios = riSc.scenarios.filter(
33
33
  (scenario) => probabilityOptions.indexOf(
@@ -1 +1 @@
1
- {"version":3,"file":"RiskMatrixScenarioCount.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrixScenarioCount.tsx"],"sourcesContent":["import {\n ClickAwayListener,\n List,\n ListItem,\n ListItemText,\n ListSubheader,\n Paper,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport React, { useState } from 'react';\nimport CircleIcon from '@material-ui/icons/FiberManualRecord';\nimport { consequenceOptions, probabilityOptions } from '../../utils/constants';\nimport { RiSc } from '../../utils/types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiskMatrixStyles } from './riskMatrixStyle';\nimport { useScenario } from '../../contexts/ScenarioContext';\n\ninterface ScenarioCountProps {\n riSc: RiSc;\n probability: number;\n consequence: number;\n initialRisk: boolean;\n}\n\nexport const RiskMatrixScenarioCount = ({\n riSc,\n probability,\n consequence,\n initialRisk,\n}: ScenarioCountProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n circle,\n centered,\n circleText,\n text,\n tooltip,\n tooltipArrow,\n tooltipText,\n } = useRiskMatrixStyles();\n\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const { openScenario } = useScenario();\n\n const handleScenarioClick = (ID: string) => {\n setTooltipOpen(false);\n openScenario(ID);\n };\n\n const scenarios = riSc.scenarios.filter(\n scenario =>\n probabilityOptions.indexOf(\n initialRisk\n ? scenario.risk.probability\n : scenario.remainingRisk.probability,\n ) === probability &&\n consequenceOptions.indexOf(\n initialRisk\n ? scenario.risk.consequence\n : scenario.remainingRisk.consequence,\n ) === consequence,\n );\n\n if (scenarios.length === 0) {\n return null;\n }\n\n const tooltipList = (\n <List dense>\n <ListSubheader className={tooltipText}>\n <Typography variant=\"h6\" className={tooltipText}>\n {t('riskMatrix.tooltip.title')}\n </Typography>\n </ListSubheader>\n {scenarios.map(s => (\n <ListItem\n key={s.ID}\n button\n disableGutters\n className={tooltipText}\n onClick={() => {\n handleScenarioClick(s.ID);\n }}\n >\n <CircleIcon className={tooltipText} style={{ width: '10px' }} />\n <ListItemText\n className={tooltipText}\n style={{ paddingLeft: '0.6rem' }}\n >\n <span>{s.title}</span>\n </ListItemText>\n </ListItem>\n ))}\n </List>\n );\n\n return (\n <ClickAwayListener onClickAway={() => setTooltipOpen(false)}>\n <Tooltip\n interactive\n classes={{ tooltip: tooltip, arrow: tooltipArrow }}\n title={tooltipList}\n placement=\"right\"\n arrow\n open={tooltipOpen}\n >\n <Paper\n className={`${circle} ${centered}`}\n elevation={10}\n onClick={() => setTooltipOpen(!tooltipOpen)}\n >\n <Typography className={`${circleText} ${text}`}>\n {scenarios.length}\n </Typography>\n </Paper>\n </Tooltip>\n </ClickAwayListener>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RiskMatrixScenarioCount.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrixScenarioCount.tsx"],"sourcesContent":["import {\n ClickAwayListener,\n List,\n ListItem,\n ListItemText,\n ListSubheader,\n Paper,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport React, { useState } from 'react';\nimport CircleIcon from '@material-ui/icons/FiberManualRecord';\nimport { consequenceOptions, probabilityOptions } from '../../utils/constants';\nimport { RiSc } from '../../utils/types';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiskMatrixStyles } from './riskMatrixStyle';\nimport { useScenario } from '../../contexts/ScenarioContext';\n\ninterface ScenarioCountProps {\n riSc: RiSc;\n probability: number;\n consequence: number;\n initialRisk: boolean;\n}\n\nexport const RiskMatrixScenarioCount = ({\n riSc,\n probability,\n consequence,\n initialRisk,\n}: ScenarioCountProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n circle,\n centered,\n circleText,\n text,\n tooltip,\n tooltipArrow,\n tooltipText,\n } = useRiskMatrixStyles();\n\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const { openScenarioDrawer } = useScenario();\n\n const handleScenarioClick = (ID: string) => {\n setTooltipOpen(false);\n openScenarioDrawer(ID);\n };\n\n const scenarios = riSc.scenarios.filter(\n scenario =>\n probabilityOptions.indexOf(\n initialRisk\n ? scenario.risk.probability\n : scenario.remainingRisk.probability,\n ) === probability &&\n consequenceOptions.indexOf(\n initialRisk\n ? scenario.risk.consequence\n : scenario.remainingRisk.consequence,\n ) === consequence,\n );\n\n if (scenarios.length === 0) {\n return null;\n }\n\n const tooltipList = (\n <List dense>\n <ListSubheader className={tooltipText}>\n <Typography variant=\"h6\" className={tooltipText}>\n {t('riskMatrix.tooltip.title')}\n </Typography>\n </ListSubheader>\n {scenarios.map(s => (\n <ListItem\n key={s.ID}\n button\n disableGutters\n className={tooltipText}\n onClick={() => {\n handleScenarioClick(s.ID);\n }}\n >\n <CircleIcon className={tooltipText} style={{ width: '10px' }} />\n <ListItemText\n className={tooltipText}\n style={{ paddingLeft: '0.6rem' }}\n >\n <span>{s.title}</span>\n </ListItemText>\n </ListItem>\n ))}\n </List>\n );\n\n return (\n <ClickAwayListener onClickAway={() => setTooltipOpen(false)}>\n <Tooltip\n interactive\n classes={{ tooltip: tooltip, arrow: tooltipArrow }}\n title={tooltipList}\n placement=\"right\"\n arrow\n open={tooltipOpen}\n >\n <Paper\n className={`${circle} ${centered}`}\n elevation={10}\n onClick={() => setTooltipOpen(!tooltipOpen)}\n >\n <Typography className={`${circleText} ${text}`}>\n {scenarios.length}\n </Typography>\n </Paper>\n </Tooltip>\n </ClickAwayListener>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ import { ScopeSection } from './components/ScopeSection.esm.js';
11
11
  import { useForm } from 'react-hook-form';
12
12
  import { ProcessingStatus } from '../../utils/types.esm.js';
13
13
  import ScenarioForm from './components/RiskFormSection.esm.js';
14
- import ActionFormSection from './components/ActionFormSection.esm.js';
15
14
  import ScopeFormSection from './components/ScopeFormSection.esm.js';
16
15
  import Drawer from '@mui/material/Drawer';
17
16
  import Button from '@mui/material/Button';
@@ -20,6 +19,7 @@ import CircularProgress from '@mui/material/CircularProgress';
20
19
  import Alert from '@mui/material/Alert';
21
20
  import { getAlertSeverity } from '../../utils/utilityfunctions.esm.js';
22
21
  import Typography from '@mui/material/Typography';
22
+ import { MatrixDialog } from '../riScDialog/MatrixDialog.esm.js';
23
23
 
24
24
  const ScenarioDrawer = () => {
25
25
  const { t } = useTranslationRef(pluginRiScTranslationRef);
@@ -27,29 +27,35 @@ const ScenarioDrawer = () => {
27
27
  const {
28
28
  scenario,
29
29
  isDrawerOpen,
30
- openDeleteConfirmation,
31
- closeScenario,
32
- submitEditedScenarioToRiSc
30
+ closeScenarioForm,
31
+ submitEditedScenarioToRiSc,
32
+ mapScenarioToFormScenario,
33
+ mapFormScenarioToScenario
33
34
  } = useScenario();
35
+ const [deleteConfirmationIsOpen, setDeleteConfirmationIsOpen] = useState(false);
36
+ const [isMatrixDialogOpen, setIsMatrixDialogOpen] = useState(false);
34
37
  const { riScUpdateStatus, response } = useRiScs();
35
38
  const formMethods = useForm({
36
- defaultValues: scenario,
39
+ defaultValues: mapScenarioToFormScenario(scenario),
37
40
  mode: "onBlur"
38
41
  });
39
42
  const onCancel = () => {
40
- formMethods.reset(scenario);
43
+ formMethods.reset(mapScenarioToFormScenario(scenario));
41
44
  setIsEditing(false);
42
45
  };
43
46
  const onClose = () => {
44
- closeScenario();
47
+ closeScenarioForm();
45
48
  setIsEditing(false);
46
49
  };
47
50
  const onSubmit = formMethods.handleSubmit((data) => {
48
- submitEditedScenarioToRiSc(data, () => setIsEditing(false));
51
+ submitEditedScenarioToRiSc(
52
+ mapFormScenarioToScenario(data),
53
+ () => setIsEditing(false)
54
+ );
49
55
  });
50
56
  useEffect(() => {
51
- formMethods.reset(scenario);
52
- }, [scenario, formMethods]);
57
+ formMethods.reset(mapScenarioToFormScenario(scenario));
58
+ }, [scenario, formMethods, mapScenarioToFormScenario]);
53
59
  return /* @__PURE__ */ React.createElement(
54
60
  Drawer,
55
61
  {
@@ -98,7 +104,14 @@ const ScenarioDrawer = () => {
98
104
  t(isEditing ? "dictionary.cancel" : "dictionary.close")
99
105
  )
100
106
  ),
101
- isEditing ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ScopeFormSection, { formMethods }), /* @__PURE__ */ React.createElement(ScenarioForm, { formMethods }), /* @__PURE__ */ React.createElement(ActionFormSection, { formMethods })) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ScopeSection, null), /* @__PURE__ */ React.createElement(RiskSection, null), /* @__PURE__ */ React.createElement(ActionsSection, null)),
107
+ isEditing ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ScopeFormSection, { formMethods }), /* @__PURE__ */ React.createElement(
108
+ ScenarioForm,
109
+ {
110
+ formMethods,
111
+ setIsMatrixDialogOpen
112
+ }
113
+ )) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ScopeSection, null), /* @__PURE__ */ React.createElement(RiskSection, null)),
114
+ /* @__PURE__ */ React.createElement(ActionsSection, { formMethods, isEditing }),
102
115
  /* @__PURE__ */ React.createElement(
103
116
  Box,
104
117
  {
@@ -130,14 +143,27 @@ const ScenarioDrawer = () => {
130
143
  startIcon: /* @__PURE__ */ React.createElement(DeleteIcon, null),
131
144
  variant: "text",
132
145
  color: "primary",
133
- onClick: openDeleteConfirmation,
146
+ onClick: () => setDeleteConfirmationIsOpen(true),
134
147
  sx: { marginLeft: "auto" }
135
148
  },
136
149
  t("scenarioDrawer.deleteScenarioButton")
137
150
  )
138
151
  ),
139
152
  response && response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && /* @__PURE__ */ React.createElement(Alert, { severity: getAlertSeverity(response.status) }, /* @__PURE__ */ React.createElement(Typography, null, response.statusMessage)),
140
- /* @__PURE__ */ React.createElement(DeleteConfirmation, null)
153
+ /* @__PURE__ */ React.createElement(
154
+ DeleteConfirmation,
155
+ {
156
+ deleteConfirmationIsOpen,
157
+ setDeleteConfirmationIsOpen
158
+ }
159
+ ),
160
+ /* @__PURE__ */ React.createElement(
161
+ MatrixDialog,
162
+ {
163
+ open: isMatrixDialogOpen,
164
+ close: () => setIsMatrixDialogOpen(false)
165
+ }
166
+ )
141
167
  );
142
168
  };
143
169
 
@@ -1 +1 @@
1
- {"version":3,"file":"ScenarioDrawer.esm.js","sources":["../../../src/components/scenarioDrawer/ScenarioDrawer.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { useScenario } from '../../contexts/ScenarioContext';\nimport { RiskSection } from './components/RiskSection';\nimport { ActionsSection } from './components/ActionsSection';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { DeleteConfirmation } from './components/DeleteConfirmation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { ScopeSection } from './components/ScopeSection';\nimport { useForm } from 'react-hook-form';\nimport { ProcessingStatus, Scenario } from '../../utils/types';\nimport RiskFormSection from './components/RiskFormSection';\nimport ActionFormSection from './components/ActionFormSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport Drawer from '@mui/material/Drawer';\nimport Button from '@mui/material/Button';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Alert from '@mui/material/Alert';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport Typography from '@mui/material/Typography';\n\nexport const ScenarioDrawer = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isEditing, setIsEditing] = useState(false);\n const {\n scenario,\n isDrawerOpen,\n openDeleteConfirmation,\n closeScenario,\n submitEditedScenarioToRiSc,\n } = useScenario();\n\n const { riScUpdateStatus, response } = useRiScs();\n\n const formMethods = useForm<Scenario>({\n defaultValues: scenario,\n mode: 'onBlur',\n });\n\n const onCancel = () => {\n formMethods.reset(scenario);\n setIsEditing(false);\n };\n\n const onClose = () => {\n closeScenario();\n setIsEditing(false);\n };\n\n const onSubmit = formMethods.handleSubmit((data: Scenario) => {\n submitEditedScenarioToRiSc(data, () => setIsEditing(false));\n });\n\n useEffect(() => {\n formMethods.reset(scenario);\n }, [scenario, formMethods]);\n\n return (\n <Drawer\n PaperProps={{\n sx: theme => ({\n padding: theme.spacing(4),\n width: '50%',\n gap: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n width: '90%',\n padding: theme.spacing(2),\n },\n backgroundColor:\n theme.palette.mode === 'dark' ? '#333333' : '#f8f8f8',\n }),\n }}\n variant=\"temporary\"\n anchor=\"right\"\n open={isDrawerOpen}\n onClose={onClose}\n >\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n marginLeft: 'auto',\n }}\n >\n {!isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={isEditing ? onCancel : onClose}\n >\n {t(isEditing ? 'dictionary.cancel' : 'dictionary.close')}\n </Button>\n </Box>\n\n {isEditing ? (\n <>\n <ScopeFormSection formMethods={formMethods} />\n <RiskFormSection formMethods={formMethods} />\n <ActionFormSection formMethods={formMethods} />\n </>\n ) : (\n <>\n <ScopeSection />\n <RiskSection />\n <ActionsSection />\n </>\n )}\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n }}\n >\n {isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n disabled={\n !formMethods.formState.isDirty || riScUpdateStatus.isLoading\n }\n >\n {t('dictionary.save')}\n {riScUpdateStatus.isLoading && (\n <CircularProgress\n size={16}\n sx={{ marginLeft: 1, color: 'inherit' }}\n />\n )}\n </Button>\n )}\n <Button\n startIcon={<DeleteIcon />}\n variant=\"text\"\n color=\"primary\"\n onClick={openDeleteConfirmation}\n sx={{ marginLeft: 'auto' }}\n >\n {t('scenarioDrawer.deleteScenarioButton')}\n </Button>\n </Box>\n\n {response &&\n response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && (\n <Alert severity={getAlertSeverity(response.status)}>\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n\n <DeleteConfirmation />\n </Drawer>\n );\n};\n"],"names":["RiskFormSection"],"mappings":"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"}
1
+ {"version":3,"file":"ScenarioDrawer.esm.js","sources":["../../../src/components/scenarioDrawer/ScenarioDrawer.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { useScenario } from '../../contexts/ScenarioContext';\nimport { RiskSection } from './components/RiskSection';\nimport { ActionsSection } from './components/ActionsSection';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { DeleteConfirmation } from './components/DeleteConfirmation';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { ScopeSection } from './components/ScopeSection';\nimport { useForm } from 'react-hook-form';\nimport { FormScenario, ProcessingStatus } from '../../utils/types';\nimport RiskFormSection from './components/RiskFormSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport Drawer from '@mui/material/Drawer';\nimport Button from '@mui/material/Button';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Alert from '@mui/material/Alert';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport Typography from '@mui/material/Typography';\nimport { MatrixDialog } from '../riScDialog/MatrixDialog';\n\nexport const ScenarioDrawer = () => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isEditing, setIsEditing] = useState(false);\n const {\n scenario,\n isDrawerOpen,\n closeScenarioForm,\n submitEditedScenarioToRiSc,\n mapScenarioToFormScenario,\n mapFormScenarioToScenario,\n } = useScenario();\n\n const [deleteConfirmationIsOpen, setDeleteConfirmationIsOpen] =\n useState(false);\n\n const [isMatrixDialogOpen, setIsMatrixDialogOpen] = useState<boolean>(false);\n\n const { riScUpdateStatus, response } = useRiScs();\n\n const formMethods = useForm<FormScenario>({\n defaultValues: mapScenarioToFormScenario(scenario),\n mode: 'onBlur',\n });\n\n const onCancel = () => {\n formMethods.reset(mapScenarioToFormScenario(scenario));\n setIsEditing(false);\n };\n\n const onClose = () => {\n closeScenarioForm();\n setIsEditing(false);\n };\n\n const onSubmit = formMethods.handleSubmit((data: FormScenario) => {\n submitEditedScenarioToRiSc(mapFormScenarioToScenario(data), () =>\n setIsEditing(false),\n );\n });\n\n useEffect(() => {\n formMethods.reset(mapScenarioToFormScenario(scenario));\n }, [scenario, formMethods, mapScenarioToFormScenario]);\n\n return (\n <Drawer\n PaperProps={{\n sx: theme => ({\n padding: theme.spacing(4),\n width: '50%',\n gap: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n width: '90%',\n padding: theme.spacing(2),\n },\n backgroundColor:\n theme.palette.mode === 'dark' ? '#333333' : '#f8f8f8',\n }),\n }}\n variant=\"temporary\"\n anchor=\"right\"\n open={isDrawerOpen}\n onClose={onClose}\n >\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n marginLeft: 'auto',\n }}\n >\n {!isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={isEditing ? onCancel : onClose}\n >\n {t(isEditing ? 'dictionary.cancel' : 'dictionary.close')}\n </Button>\n </Box>\n\n {isEditing ? (\n <>\n <ScopeFormSection formMethods={formMethods} />\n <RiskFormSection\n formMethods={formMethods}\n setIsMatrixDialogOpen={setIsMatrixDialogOpen}\n />\n </>\n ) : (\n <>\n <ScopeSection />\n <RiskSection />\n </>\n )}\n <ActionsSection formMethods={formMethods} isEditing={isEditing} />\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n }}\n >\n {isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n disabled={\n !formMethods.formState.isDirty || riScUpdateStatus.isLoading\n }\n >\n {t('dictionary.save')}\n {riScUpdateStatus.isLoading && (\n <CircularProgress\n size={16}\n sx={{ marginLeft: 1, color: 'inherit' }}\n />\n )}\n </Button>\n )}\n <Button\n startIcon={<DeleteIcon />}\n variant=\"text\"\n color=\"primary\"\n onClick={() => setDeleteConfirmationIsOpen(true)}\n sx={{ marginLeft: 'auto' }}\n >\n {t('scenarioDrawer.deleteScenarioButton')}\n </Button>\n </Box>\n\n {response &&\n response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && (\n <Alert severity={getAlertSeverity(response.status)}>\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n\n <DeleteConfirmation\n deleteConfirmationIsOpen={deleteConfirmationIsOpen}\n setDeleteConfirmationIsOpen={setDeleteConfirmationIsOpen}\n />\n <MatrixDialog\n open={isMatrixDialogOpen}\n close={() => setIsMatrixDialogOpen(false)}\n />\n </Drawer>\n );\n};\n"],"names":["RiskFormSection"],"mappings":"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"}