@kartverket/backstage-plugin-risk-scorecard 6.1.7 → 6.1.8
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/dist/components/scenarioDrawer/ScenarioDrawer.esm.js +46 -70
- package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js +77 -116
- package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionFormItem.module.css.esm.js +8 -0
- package/dist/components/scenarioDrawer/components/ActionFormItem.module.css.esm.js.map +1 -0
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js +8 -8
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js +3 -3
- package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js +5 -5
- package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/RiskSection.esm.js +2 -2
- package/dist/components/scenarioDrawer/components/RiskSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js +2 -2
- package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ScopeSection.esm.js +2 -2
- package/dist/components/scenarioDrawer/components/ScopeSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/scenarioDrawer.module.css.esm.js +3 -3
- package/dist/components/scenarioWizard/ScenarioWizard.esm.js +62 -72
- package/dist/components/scenarioWizard/ScenarioWizard.esm.js.map +1 -1
- package/dist/components/scenarioWizard/ScenarioWizard.module.css.esm.js +2 -2
- package/package.json +1 -1
- package/dist/components/scenarioDrawer/components/ScenarioDrawer.module.css.esm.js +0 -8
- package/dist/components/scenarioDrawer/components/ScenarioDrawer.module.css.esm.js.map +0 -1
|
@@ -19,6 +19,7 @@ import ScenarioForm from './components/RiskFormSection.esm.js';
|
|
|
19
19
|
import ScopeFormSection from './components/ScopeFormSection.esm.js';
|
|
20
20
|
import { useBackstageContext } from '../../contexts/BackstageContext.esm.js';
|
|
21
21
|
import styles from '../common/alertBar.module.css.esm.js';
|
|
22
|
+
import drawerStyles from './scenarioDrawer.module.css.esm.js';
|
|
22
23
|
import { ScopeSection } from './components/ScopeSection.esm.js';
|
|
23
24
|
import { RiskSection } from './components/RiskSection.esm.js';
|
|
24
25
|
import AlertBar from '../common/AlertBar/AlertBar.esm.js';
|
|
@@ -108,36 +109,26 @@ function ScenarioDrawer() {
|
|
|
108
109
|
open: isDrawerOpen,
|
|
109
110
|
onClose,
|
|
110
111
|
children: [
|
|
111
|
-
/* @__PURE__ */ jsxs(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
{
|
|
132
|
-
size: "medium",
|
|
133
|
-
variant: "secondary",
|
|
134
|
-
onClick: isEditing ? onCancel : onClose,
|
|
135
|
-
children: t(isEditing ? "dictionary.cancel" : "dictionary.close")
|
|
136
|
-
}
|
|
137
|
-
)
|
|
138
|
-
]
|
|
139
|
-
}
|
|
140
|
-
),
|
|
112
|
+
/* @__PURE__ */ jsxs(Box, { className: drawerStyles.topButtons, children: [
|
|
113
|
+
!isEditing && isEditingAllowed && /* @__PURE__ */ jsx(
|
|
114
|
+
Button,
|
|
115
|
+
{
|
|
116
|
+
size: "medium",
|
|
117
|
+
variant: "primary",
|
|
118
|
+
onClick: () => setIsEditing(true),
|
|
119
|
+
children: t("dictionary.edit")
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
/* @__PURE__ */ jsx(
|
|
123
|
+
Button,
|
|
124
|
+
{
|
|
125
|
+
size: "medium",
|
|
126
|
+
variant: "secondary",
|
|
127
|
+
onClick: isEditing ? onCancel : onClose,
|
|
128
|
+
children: t(isEditing ? "dictionary.cancel" : "dictionary.close")
|
|
129
|
+
}
|
|
130
|
+
)
|
|
131
|
+
] }),
|
|
141
132
|
isEditing ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
142
133
|
/* @__PURE__ */ jsx(ScopeFormSection, { formMethods }),
|
|
143
134
|
/* @__PURE__ */ jsx(
|
|
@@ -160,46 +151,31 @@ function ScenarioDrawer() {
|
|
|
160
151
|
/* @__PURE__ */ jsx(RiskSection, {})
|
|
161
152
|
] }),
|
|
162
153
|
/* @__PURE__ */ jsx(ActionsSection, { formMethods, isEditing }),
|
|
163
|
-
/* @__PURE__ */ jsxs(
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
{
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
),
|
|
190
|
-
isEditingAllowed && /* @__PURE__ */ jsx("div", { ref: deleteScenarioRef, children: /* @__PURE__ */ jsx(
|
|
191
|
-
Button,
|
|
192
|
-
{
|
|
193
|
-
iconStart: /* @__PURE__ */ jsx(DeleteIcon, {}),
|
|
194
|
-
size: "medium",
|
|
195
|
-
variant: "tertiary",
|
|
196
|
-
onClick: () => setDeleteConfirmationIsOpen(true),
|
|
197
|
-
children: t("scenarioDrawer.deleteScenarioButton")
|
|
198
|
-
}
|
|
199
|
-
) })
|
|
200
|
-
]
|
|
201
|
-
}
|
|
202
|
-
),
|
|
154
|
+
/* @__PURE__ */ jsxs(Box, { className: drawerStyles.bottomButtons, children: [
|
|
155
|
+
isEditing && /* @__PURE__ */ jsxs(
|
|
156
|
+
Button,
|
|
157
|
+
{
|
|
158
|
+
size: "medium",
|
|
159
|
+
variant: "primary",
|
|
160
|
+
onClick: onSubmit,
|
|
161
|
+
isDisabled: !formMethods.formState.isDirty || updateStatus.isLoading,
|
|
162
|
+
children: [
|
|
163
|
+
t("dictionary.save"),
|
|
164
|
+
updateStatus.isLoading && /* @__PURE__ */ jsx(CircularProgress, { size: 16, className: drawerStyles.spinner })
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
),
|
|
168
|
+
isEditingAllowed && /* @__PURE__ */ jsx("div", { ref: deleteScenarioRef, children: /* @__PURE__ */ jsx(
|
|
169
|
+
Button,
|
|
170
|
+
{
|
|
171
|
+
iconStart: /* @__PURE__ */ jsx(DeleteIcon, {}),
|
|
172
|
+
size: "medium",
|
|
173
|
+
variant: "tertiary",
|
|
174
|
+
onClick: () => setDeleteConfirmationIsOpen(true),
|
|
175
|
+
children: t("scenarioDrawer.deleteScenarioButton")
|
|
176
|
+
}
|
|
177
|
+
) })
|
|
178
|
+
] }),
|
|
203
179
|
/* @__PURE__ */ jsx(
|
|
204
180
|
DeleteScenarioConfirmation,
|
|
205
181
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioDrawer.esm.js","sources":["../../../src/components/scenarioDrawer/ScenarioDrawer.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Box from '@mui/material/Box';\nimport { Button } from '@backstage/ui';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Drawer from '@mui/material/Drawer';\nimport { useEffect, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { useScenario } from '../../contexts/ScenarioContext';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { FormScenario } from '../../utils/types';\nimport { deleteScenario } from '../../utils/utilityfunctions';\nimport { MatrixDialog } from '../riScDialog/MatrixDialog';\nimport { CloseConfirmation } from '../scenarioWizard/components/CloseConfirmation';\nimport { ActionsSection } from './components/ActionsSection';\nimport { DeleteScenarioConfirmation } from './components/DeleteConfirmation';\nimport RiskFormSection from './components/RiskFormSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport { Flex } from '@backstage/ui';\nimport { useBackstageContext } from '../../contexts/BackstageContext.tsx';\nimport styles from '../common/alertBar.module.css';\nimport { ScopeSection } from './components/ScopeSection.tsx';\nimport { RiskSection } from './components/RiskSection.tsx';\nimport AlertBar from '../common/AlertBar/AlertBar.tsx';\n\nexport function ScenarioDrawer() {\n const { profileInfo } = useBackstageContext();\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isEditing, setIsEditing] = useState(false);\n const {\n scenario,\n isDrawerOpen,\n isEditingAllowed,\n closeScenarioForm,\n submitEditedScenarioToRiSc,\n mapScenarioToFormScenario,\n mapFormScenarioToScenario,\n collapseAllActions,\n } = useScenario();\n const { selectedRiSc, updateRiSc } = useRiScs();\n\n const [deleteConfirmationIsOpen, setDeleteConfirmationIsOpen] =\n useState(false);\n\n const [showCloseConfirmation, setShowCloseConfirmation] = useState(false);\n\n const [isMatrixDialogOpen, setIsMatrixDialogOpen] = useState<boolean>(false);\n\n const { updateStatus, response } = useRiScs();\n\n const [currentUpdatedActionIDs, setCurrentUpdatedActionIDs] = useState<\n string[]\n >([]);\n\n // Used to scroll to the bottom of the drawer when the user deletes a scenario\n // via the quick edit and DeleteConfirmation\n const deleteScenarioRef = useRef<HTMLDivElement>(null);\n\n const formMethods = useForm<FormScenario>({\n defaultValues: mapScenarioToFormScenario(scenario),\n mode: 'onChange',\n });\n\n function onCancel() {\n formMethods.reset(mapScenarioToFormScenario(scenario));\n setIsEditing(false);\n }\n\n function handleClose() {\n closeScenarioForm();\n setIsEditing(false);\n setShowCloseConfirmation(false);\n collapseAllActions();\n }\n\n function onClose() {\n if (formMethods.formState.isDirty) {\n setShowCloseConfirmation(true);\n } else {\n closeScenarioForm();\n setIsEditing(false);\n collapseAllActions();\n }\n }\n\n const onSubmit = formMethods.handleSubmit((data: FormScenario) => {\n submitEditedScenarioToRiSc(mapFormScenarioToScenario(data), {\n onSuccess: () => {\n setCurrentUpdatedActionIDs([]);\n setIsEditing(false);\n },\n idsOfActionsToForceUpdateLastUpdatedValue: currentUpdatedActionIDs,\n profileInfo: profileInfo,\n });\n });\n\n function onSubmitAndCloseDialog() {\n onSubmit();\n setShowCloseConfirmation(false);\n\n if (deleteScenarioRef.current) {\n deleteScenarioRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }\n\n useEffect(() => {\n formMethods.reset(mapScenarioToFormScenario(scenario));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scenario]);\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 ModalProps={{ sx: { zIndex: 100 } }}\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 && isEditingAllowed && (\n <Button\n size=\"medium\"\n variant=\"primary\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n size=\"medium\"\n variant=\"secondary\"\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 <Flex className={styles.alertBarBox}>\n <AlertBar\n updateStatus={updateStatus}\n response={response}\n statusText={response?.statusMessage}\n />\n </Flex>\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 size=\"medium\"\n variant=\"primary\"\n onClick={onSubmit}\n isDisabled={\n !formMethods.formState.isDirty || updateStatus.isLoading\n }\n >\n {t('dictionary.save')}\n {updateStatus.isLoading && (\n <CircularProgress\n size={16}\n sx={{ marginLeft: 1, color: 'inherit' }}\n />\n )}\n </Button>\n )}\n {isEditingAllowed && (\n <div ref={deleteScenarioRef}>\n <Button\n iconStart={<DeleteIcon />}\n size=\"medium\"\n variant=\"tertiary\"\n onClick={() => setDeleteConfirmationIsOpen(true)}\n >\n {t('scenarioDrawer.deleteScenarioButton')}\n </Button>\n </div>\n )}\n </Box>\n\n <DeleteScenarioConfirmation\n isOpen={deleteConfirmationIsOpen}\n setIsOpen={setDeleteConfirmationIsOpen}\n onConfirm={() => deleteScenario(selectedRiSc, updateRiSc, scenario)}\n />\n <MatrixDialog\n open={isMatrixDialogOpen}\n close={() => setIsMatrixDialogOpen(false)}\n />\n <CloseConfirmation\n isOpen={showCloseConfirmation}\n close={handleClose}\n save={onSubmitAndCloseDialog}\n />\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 { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Box from '@mui/material/Box';\nimport { Button } from '@backstage/ui';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Drawer from '@mui/material/Drawer';\nimport { useEffect, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { useScenario } from '../../contexts/ScenarioContext';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { FormScenario } from '../../utils/types';\nimport { deleteScenario } from '../../utils/utilityfunctions';\nimport { MatrixDialog } from '../riScDialog/MatrixDialog';\nimport { CloseConfirmation } from '../scenarioWizard/components/CloseConfirmation';\nimport { ActionsSection } from './components/ActionsSection';\nimport { DeleteScenarioConfirmation } from './components/DeleteConfirmation';\nimport RiskFormSection from './components/RiskFormSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport { Flex } from '@backstage/ui';\nimport { useBackstageContext } from '../../contexts/BackstageContext.tsx';\nimport alertBarStyles from '../common/alertBar.module.css';\nimport drawerStyles from './scenarioDrawer.module.css';\nimport { ScopeSection } from './components/ScopeSection.tsx';\nimport { RiskSection } from './components/RiskSection.tsx';\nimport AlertBar from '../common/AlertBar/AlertBar.tsx';\n\nexport function ScenarioDrawer() {\n const { profileInfo } = useBackstageContext();\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [isEditing, setIsEditing] = useState(false);\n const {\n scenario,\n isDrawerOpen,\n isEditingAllowed,\n closeScenarioForm,\n submitEditedScenarioToRiSc,\n mapScenarioToFormScenario,\n mapFormScenarioToScenario,\n collapseAllActions,\n } = useScenario();\n const { selectedRiSc, updateRiSc } = useRiScs();\n\n const [deleteConfirmationIsOpen, setDeleteConfirmationIsOpen] =\n useState(false);\n\n const [showCloseConfirmation, setShowCloseConfirmation] = useState(false);\n\n const [isMatrixDialogOpen, setIsMatrixDialogOpen] = useState<boolean>(false);\n\n const { updateStatus, response } = useRiScs();\n\n const [currentUpdatedActionIDs, setCurrentUpdatedActionIDs] = useState<\n string[]\n >([]);\n\n // Used to scroll to the bottom of the drawer when the user deletes a scenario\n // via the quick edit and DeleteConfirmation\n const deleteScenarioRef = useRef<HTMLDivElement>(null);\n\n const formMethods = useForm<FormScenario>({\n defaultValues: mapScenarioToFormScenario(scenario),\n mode: 'onChange',\n });\n\n function onCancel() {\n formMethods.reset(mapScenarioToFormScenario(scenario));\n setIsEditing(false);\n }\n\n function handleClose() {\n closeScenarioForm();\n setIsEditing(false);\n setShowCloseConfirmation(false);\n collapseAllActions();\n }\n\n function onClose() {\n if (formMethods.formState.isDirty) {\n setShowCloseConfirmation(true);\n } else {\n closeScenarioForm();\n setIsEditing(false);\n collapseAllActions();\n }\n }\n\n const onSubmit = formMethods.handleSubmit((data: FormScenario) => {\n submitEditedScenarioToRiSc(mapFormScenarioToScenario(data), {\n onSuccess: () => {\n setCurrentUpdatedActionIDs([]);\n setIsEditing(false);\n },\n idsOfActionsToForceUpdateLastUpdatedValue: currentUpdatedActionIDs,\n profileInfo: profileInfo,\n });\n });\n\n function onSubmitAndCloseDialog() {\n onSubmit();\n setShowCloseConfirmation(false);\n\n if (deleteScenarioRef.current) {\n deleteScenarioRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }\n\n useEffect(() => {\n formMethods.reset(mapScenarioToFormScenario(scenario));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [scenario]);\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 ModalProps={{ sx: { zIndex: 100 } }}\n anchor=\"right\"\n open={isDrawerOpen}\n onClose={onClose}\n >\n <Box className={drawerStyles.topButtons}>\n {!isEditing && isEditingAllowed && (\n <Button\n size=\"medium\"\n variant=\"primary\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n size=\"medium\"\n variant=\"secondary\"\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 <Flex className={alertBarStyles.alertBarBox}>\n <AlertBar\n updateStatus={updateStatus}\n response={response}\n statusText={response?.statusMessage}\n />\n </Flex>\n <ScopeSection />\n <RiskSection />\n </>\n )}\n <ActionsSection formMethods={formMethods} isEditing={isEditing} />\n <Box className={drawerStyles.bottomButtons}>\n {isEditing && (\n <Button\n size=\"medium\"\n variant=\"primary\"\n onClick={onSubmit}\n isDisabled={\n !formMethods.formState.isDirty || updateStatus.isLoading\n }\n >\n {t('dictionary.save')}\n {updateStatus.isLoading && (\n <CircularProgress size={16} className={drawerStyles.spinner} />\n )}\n </Button>\n )}\n {isEditingAllowed && (\n <div ref={deleteScenarioRef}>\n <Button\n iconStart={<DeleteIcon />}\n size=\"medium\"\n variant=\"tertiary\"\n onClick={() => setDeleteConfirmationIsOpen(true)}\n >\n {t('scenarioDrawer.deleteScenarioButton')}\n </Button>\n </div>\n )}\n </Box>\n\n <DeleteScenarioConfirmation\n isOpen={deleteConfirmationIsOpen}\n setIsOpen={setDeleteConfirmationIsOpen}\n onConfirm={() => deleteScenario(selectedRiSc, updateRiSc, scenario)}\n />\n <MatrixDialog\n open={isMatrixDialogOpen}\n close={() => setIsMatrixDialogOpen(false)}\n />\n <CloseConfirmation\n isOpen={showCloseConfirmation}\n close={handleClose}\n save={onSubmitAndCloseDialog}\n />\n </Drawer>\n );\n}\n"],"names":["RiskFormSection","alertBarStyles"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { Select } from '../../common/Select.esm.js';
|
|
|
13
13
|
import HelpIcon from '@mui/icons-material/Help';
|
|
14
14
|
import { Tooltip } from '@material-ui/core';
|
|
15
15
|
import { Text } from '@backstage/ui';
|
|
16
|
+
import styles from './ActionFormItem.module.css.esm.js';
|
|
16
17
|
|
|
17
18
|
function addPeriodToBaseObjectPath(s) {
|
|
18
19
|
if (!s) return "";
|
|
@@ -34,131 +35,91 @@ function ActionFormItem({
|
|
|
34
35
|
renderedValue: t(actionStatusOptionsToTranslationKeys[actionStatus])
|
|
35
36
|
})
|
|
36
37
|
);
|
|
37
|
-
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(
|
|
38
|
-
Box,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
38
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, { className: styles.formGrid, children: [
|
|
39
|
+
/* @__PURE__ */ jsxs(Box, { className: styles.formHeader, children: [
|
|
40
|
+
displayedIndex !== void 0 && displayedIndex !== null ? /* @__PURE__ */ jsxs(Text, { variant: "title-x-small", weight: "bold", children: [
|
|
41
|
+
t("dictionary.measure"),
|
|
42
|
+
" ",
|
|
43
|
+
displayedIndex + 1
|
|
44
|
+
] }) : /* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("dictionary.edit") }),
|
|
45
|
+
/* @__PURE__ */ jsx(IconButton, { onClick: handleDelete, color: "primary", children: /* @__PURE__ */ jsx(DeleteIcon, { "aria-label": "Delete" }) })
|
|
46
|
+
] }),
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
Input,
|
|
49
|
+
{
|
|
50
|
+
required: true,
|
|
51
|
+
...register(
|
|
52
|
+
`${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}title`,
|
|
48
53
|
{
|
|
49
|
-
|
|
50
|
-
display: "flex",
|
|
51
|
-
justifyContent: "space-between",
|
|
52
|
-
alignItems: "center"
|
|
53
|
-
},
|
|
54
|
-
children: [
|
|
55
|
-
displayedIndex !== void 0 && displayedIndex !== null ? /* @__PURE__ */ jsxs(Text, { variant: "title-x-small", weight: "bold", children: [
|
|
56
|
-
t("dictionary.measure"),
|
|
57
|
-
" ",
|
|
58
|
-
displayedIndex + 1
|
|
59
|
-
] }) : /* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("dictionary.edit") }),
|
|
60
|
-
/* @__PURE__ */ jsx(IconButton, { onClick: handleDelete, color: "primary", children: /* @__PURE__ */ jsx(DeleteIcon, { "aria-label": "Delete" }) })
|
|
61
|
-
]
|
|
54
|
+
required: true
|
|
62
55
|
}
|
|
63
56
|
),
|
|
64
|
-
|
|
65
|
-
|
|
57
|
+
error: errorObject?.title !== void 0,
|
|
58
|
+
label: t("dictionary.title"),
|
|
59
|
+
helperText: errorObject?.title && t("scenarioDrawer.measureTab.addMeasureTitleError")
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ jsx(
|
|
63
|
+
Controller,
|
|
64
|
+
{
|
|
65
|
+
control,
|
|
66
|
+
name: `${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}description`,
|
|
67
|
+
render: ({ field: { onChange, value }, fieldState: { error } }) => /* @__PURE__ */ jsx(
|
|
68
|
+
MarkdownInput,
|
|
66
69
|
{
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
),
|
|
74
|
-
error: errorObject?.title !== void 0,
|
|
75
|
-
label: t("dictionary.title"),
|
|
76
|
-
helperText: errorObject?.title && t("scenarioDrawer.measureTab.addMeasureTitleError")
|
|
77
|
-
}
|
|
78
|
-
),
|
|
79
|
-
/* @__PURE__ */ jsx(
|
|
80
|
-
Controller,
|
|
81
|
-
{
|
|
82
|
-
control,
|
|
83
|
-
name: `${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}description`,
|
|
84
|
-
render: ({ field: { onChange, value }, fieldState: { error } }) => /* @__PURE__ */ jsx(
|
|
85
|
-
MarkdownInput,
|
|
86
|
-
{
|
|
87
|
-
label: t("dictionary.description"),
|
|
88
|
-
value,
|
|
89
|
-
onMarkdownChange: onChange,
|
|
90
|
-
error: !!error,
|
|
91
|
-
minRows: 8
|
|
92
|
-
}
|
|
93
|
-
)
|
|
94
|
-
}
|
|
95
|
-
),
|
|
96
|
-
/* @__PURE__ */ jsxs(
|
|
97
|
-
Box,
|
|
98
|
-
{
|
|
99
|
-
sx: {
|
|
100
|
-
display: "grid",
|
|
101
|
-
gridTemplateColumns: "2fr 1fr",
|
|
102
|
-
gap: "24px"
|
|
103
|
-
},
|
|
104
|
-
children: [
|
|
105
|
-
/* @__PURE__ */ jsx(
|
|
106
|
-
Input,
|
|
107
|
-
{
|
|
108
|
-
...register(
|
|
109
|
-
`${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}url`,
|
|
110
|
-
{
|
|
111
|
-
pattern: {
|
|
112
|
-
value: urlRegExpPattern,
|
|
113
|
-
message: t("scenarioDrawer.action.urlError")
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
),
|
|
117
|
-
label: /* @__PURE__ */ jsx(UrlLabel, {}),
|
|
118
|
-
helperText: errorObject?.url?.message,
|
|
119
|
-
error: errorObject?.url?.message
|
|
120
|
-
}
|
|
121
|
-
),
|
|
122
|
-
/* @__PURE__ */ jsx(
|
|
123
|
-
Select,
|
|
124
|
-
{
|
|
125
|
-
required: true,
|
|
126
|
-
control,
|
|
127
|
-
name: `${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}status`,
|
|
128
|
-
label: t("dictionary.status"),
|
|
129
|
-
options: actionStatusOptions
|
|
130
|
-
}
|
|
131
|
-
)
|
|
132
|
-
]
|
|
70
|
+
label: t("dictionary.description"),
|
|
71
|
+
value,
|
|
72
|
+
onMarkdownChange: onChange,
|
|
73
|
+
error: !!error,
|
|
74
|
+
minRows: 8
|
|
133
75
|
}
|
|
134
76
|
)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ jsxs(Box, { className: styles.inputGrid, children: [
|
|
80
|
+
/* @__PURE__ */ jsx(
|
|
81
|
+
Input,
|
|
82
|
+
{
|
|
83
|
+
...register(
|
|
84
|
+
`${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}url`,
|
|
85
|
+
{
|
|
86
|
+
pattern: {
|
|
87
|
+
value: urlRegExpPattern,
|
|
88
|
+
message: t("scenarioDrawer.action.urlError")
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
label: /* @__PURE__ */ jsx(UrlLabel, {}),
|
|
93
|
+
helperText: errorObject?.url?.message,
|
|
94
|
+
error: errorObject?.url?.message
|
|
95
|
+
}
|
|
96
|
+
),
|
|
97
|
+
/* @__PURE__ */ jsx(
|
|
98
|
+
Select,
|
|
99
|
+
{
|
|
100
|
+
required: true,
|
|
101
|
+
control,
|
|
102
|
+
name: `${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}status`,
|
|
103
|
+
label: t("dictionary.status"),
|
|
104
|
+
options: actionStatusOptions
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
] })
|
|
108
|
+
] }) });
|
|
138
109
|
}
|
|
139
110
|
function UrlLabel() {
|
|
140
111
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
141
|
-
return /* @__PURE__ */ jsxs(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
Tooltip,
|
|
153
|
-
{
|
|
154
|
-
title: /* @__PURE__ */ jsx(Text, { variant: "body-large", style: { color: "white" }, children: t("scenarioDrawer.measureTab.urlDescription") }),
|
|
155
|
-
arrow: true,
|
|
156
|
-
children: /* @__PURE__ */ jsx(HelpIcon, { color: "primary" })
|
|
157
|
-
}
|
|
158
|
-
)
|
|
159
|
-
]
|
|
160
|
-
}
|
|
161
|
-
);
|
|
112
|
+
return /* @__PURE__ */ jsxs(Box, { className: styles.urlLabel, children: [
|
|
113
|
+
t("dictionary.url"),
|
|
114
|
+
/* @__PURE__ */ jsx(
|
|
115
|
+
Tooltip,
|
|
116
|
+
{
|
|
117
|
+
title: /* @__PURE__ */ jsx(Text, { variant: "body-large", className: styles.tooltipText, children: t("scenarioDrawer.measureTab.urlDescription") }),
|
|
118
|
+
arrow: true,
|
|
119
|
+
children: /* @__PURE__ */ jsx(HelpIcon, { color: "primary" })
|
|
120
|
+
}
|
|
121
|
+
)
|
|
122
|
+
] });
|
|
162
123
|
}
|
|
163
124
|
|
|
164
125
|
export { ActionFormItem, UrlLabel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionFormItem.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionFormItem.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport { Controller, UseFormReturn } from 'react-hook-form';\nimport {\n ActionStatusOptions,\n urlRegExpPattern,\n} from '../../../utils/constants';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport {\n actionStatusOptionsToTranslationKeys,\n getValue,\n} from '../../../utils/utilityfunctions';\nimport { Input } from '../../common/Input';\nimport { MarkdownInput } from '../../common/MarkdownInput';\nimport { Select } from '../../common/Select';\nimport HelpIcon from '@mui/icons-material/Help';\nimport { Tooltip } from '@material-ui/core';\nimport { Text } from '@backstage/ui';\n\nfunction addPeriodToBaseObjectPath(s: string) {\n if (!s) return '';\n return `${s}.`;\n}\n\ntype ActionFormItemProps = {\n formMethods: UseFormReturn<any>;\n handleDelete: () => void;\n displayedIndex?: number;\n // Specify baseObjectPathToActionOfForm where in the form of formMethods the action object is (use if nested)\n // Example value: \"actions.1\"\n baseObjectPathToActionOfForm?: string;\n};\n\nexport function ActionFormItem({\n formMethods,\n handleDelete,\n displayedIndex,\n baseObjectPathToActionOfForm = '',\n}: ActionFormItemProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control, register, formState } = formMethods;\n const errorObject = getValue(formState.errors, baseObjectPathToActionOfForm);\n\n const actionStatusOptions = Object.values(ActionStatusOptions).map(\n actionStatus => ({\n value: actionStatus,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(actionStatusOptionsToTranslationKeys[actionStatus]),\n }),\n );\n\n return (\n <>\n <Box
|
|
1
|
+
{"version":3,"file":"ActionFormItem.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionFormItem.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport { Controller, UseFormReturn } from 'react-hook-form';\nimport {\n ActionStatusOptions,\n urlRegExpPattern,\n} from '../../../utils/constants';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport {\n actionStatusOptionsToTranslationKeys,\n getValue,\n} from '../../../utils/utilityfunctions';\nimport { Input } from '../../common/Input';\nimport { MarkdownInput } from '../../common/MarkdownInput';\nimport { Select } from '../../common/Select';\nimport HelpIcon from '@mui/icons-material/Help';\nimport { Tooltip } from '@material-ui/core';\nimport { Text } from '@backstage/ui';\nimport styles from './ActionFormItem.module.css';\n\nfunction addPeriodToBaseObjectPath(s: string) {\n if (!s) return '';\n return `${s}.`;\n}\n\ntype ActionFormItemProps = {\n formMethods: UseFormReturn<any>;\n handleDelete: () => void;\n displayedIndex?: number;\n // Specify baseObjectPathToActionOfForm where in the form of formMethods the action object is (use if nested)\n // Example value: \"actions.1\"\n baseObjectPathToActionOfForm?: string;\n};\n\nexport function ActionFormItem({\n formMethods,\n handleDelete,\n displayedIndex,\n baseObjectPathToActionOfForm = '',\n}: ActionFormItemProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control, register, formState } = formMethods;\n const errorObject = getValue(formState.errors, baseObjectPathToActionOfForm);\n\n const actionStatusOptions = Object.values(ActionStatusOptions).map(\n actionStatus => ({\n value: actionStatus,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(actionStatusOptionsToTranslationKeys[actionStatus]),\n }),\n );\n\n return (\n <>\n <Box className={styles.formGrid}>\n <Box className={styles.formHeader}>\n {displayedIndex !== undefined && displayedIndex !== null ? (\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measure')} {displayedIndex + 1}\n </Text>\n ) : (\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.edit')}\n </Text>\n )}\n <IconButton onClick={handleDelete} color=\"primary\">\n <DeleteIcon aria-label=\"Delete\" />\n </IconButton>\n </Box>\n <Input\n required\n {...register(\n `${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}title`,\n {\n required: true,\n },\n )}\n error={errorObject?.title !== undefined}\n label={t('dictionary.title')}\n helperText={\n errorObject?.title &&\n t('scenarioDrawer.measureTab.addMeasureTitleError')\n }\n />\n <Controller\n control={control}\n name={`${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}description`}\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <MarkdownInput\n label={t('dictionary.description')}\n value={value}\n onMarkdownChange={onChange}\n error={!!error}\n minRows={8}\n />\n )}\n />\n <Box className={styles.inputGrid}>\n <Input\n {...register(\n `${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}url`,\n {\n pattern: {\n value: urlRegExpPattern,\n message: t('scenarioDrawer.action.urlError'),\n },\n },\n )}\n label={<UrlLabel />}\n helperText={errorObject?.url?.message}\n error={errorObject?.url?.message}\n />\n <Select\n required\n control={control}\n name={`${addPeriodToBaseObjectPath(baseObjectPathToActionOfForm)}status`}\n label={t('dictionary.status')}\n options={actionStatusOptions}\n />\n </Box>\n </Box>\n </>\n );\n}\n\nexport function UrlLabel(): JSX.Element {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <Box className={styles.urlLabel}>\n {t('dictionary.url')}\n <Tooltip\n title={\n <Text variant=\"body-large\" className={styles.tooltipText}>\n {t('scenarioDrawer.measureTab.urlDescription')}\n </Text>\n }\n arrow\n >\n <HelpIcon color=\"primary\" />\n </Tooltip>\n </Box>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import styleInject from '../../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
|
|
2
|
+
|
|
3
|
+
var css_248z = ".ActionFormItem_formGrid__e2b6b438eb {\n display: grid;\n gap: 24px;\n padding: 0;\n}\n\n.ActionFormItem_formHeader__e2b6b438eb {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.ActionFormItem_inputGrid__e2b6b438eb {\n display: grid;\n grid-template-columns: 2fr 1fr;\n gap: 24px;\n}\n\n.ActionFormItem_urlLabel__e2b6b438eb {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.ActionFormItem_tooltipText__e2b6b438eb {\n color: white;\n}\n";
|
|
4
|
+
var styles = {"formGrid":"ActionFormItem_formGrid__e2b6b438eb","formHeader":"ActionFormItem_formHeader__e2b6b438eb","inputGrid":"ActionFormItem_inputGrid__e2b6b438eb","urlLabel":"ActionFormItem_urlLabel__e2b6b438eb","tooltipText":"ActionFormItem_tooltipText__e2b6b438eb"};
|
|
5
|
+
styleInject(css_248z);
|
|
6
|
+
|
|
7
|
+
export { styles as default };
|
|
8
|
+
//# sourceMappingURL=ActionFormItem.module.css.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionFormItem.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -4,7 +4,7 @@ import Paper from '@mui/material/Paper';
|
|
|
4
4
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
5
5
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
6
6
|
import { useScenario, emptyAction } from '../../../contexts/ScenarioContext.esm.js';
|
|
7
|
-
import
|
|
7
|
+
import drawerStyles from '../scenarioDrawer.module.css.esm.js';
|
|
8
8
|
import { useFieldArray } from 'react-hook-form';
|
|
9
9
|
import { ActionFormItem } from './ActionFormItem.esm.js';
|
|
10
10
|
import { AddCircle } from '@mui/icons-material';
|
|
@@ -14,7 +14,7 @@ import { Flex, Text, TooltipTrigger, Button, Tooltip, Box, Card } from '@backsta
|
|
|
14
14
|
import { useSortActionsByRelevance } from '../../../hooks/UseSortActionsByRelevance.esm.js';
|
|
15
15
|
import { filterActionsByRelevance } from '../../../utils/actions.esm.js';
|
|
16
16
|
import { ActionRowList } from '../../action/ActionRowList.esm.js';
|
|
17
|
-
import styles
|
|
17
|
+
import styles from './ActionsSection.module.css.esm.js';
|
|
18
18
|
import { ActionStatusOptions } from '../../../utils/constants.esm.js';
|
|
19
19
|
|
|
20
20
|
const RelevanceToggle = ({
|
|
@@ -22,7 +22,7 @@ const RelevanceToggle = ({
|
|
|
22
22
|
onChange
|
|
23
23
|
}) => {
|
|
24
24
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
25
|
-
return /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "0", className: styles
|
|
25
|
+
return /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "0", className: styles.noRelevantActionToggle, children: [
|
|
26
26
|
/* @__PURE__ */ jsx(
|
|
27
27
|
Switch,
|
|
28
28
|
{
|
|
@@ -70,7 +70,7 @@ function ActionsSection({ formMethods, isEditing }) {
|
|
|
70
70
|
(action) => action.status === ActionStatusOptions.NotRelevant
|
|
71
71
|
);
|
|
72
72
|
const isActionsEmpty = currentActions.length === 0;
|
|
73
|
-
return /* @__PURE__ */ jsxs(Paper, { className:
|
|
73
|
+
return /* @__PURE__ */ jsxs(Paper, { className: drawerStyles.section, children: [
|
|
74
74
|
/* @__PURE__ */ jsxs(Flex, { justify: "between", mb: "2", children: [
|
|
75
75
|
/* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("dictionary.measures") }),
|
|
76
76
|
/* @__PURE__ */ jsxs(Flex, { align: "center", children: [
|
|
@@ -106,7 +106,7 @@ function ActionsSection({ formMethods, isEditing }) {
|
|
|
106
106
|
allowDeletion: allowActionDeletion,
|
|
107
107
|
allowEdit: true
|
|
108
108
|
}
|
|
109
|
-
) : /* @__PURE__ */ jsx(Text, { variant: "body-large", className: styles
|
|
109
|
+
) : /* @__PURE__ */ jsx(Text, { variant: "body-large", className: styles.italicText, children: !currentActions || currentActions.length === 0 ? t("dictionary.emptyField", {
|
|
110
110
|
field: t("dictionary.measures").toLowerCase()
|
|
111
111
|
}) : t("dictionary.noRelevantMeasures") })
|
|
112
112
|
] });
|
|
@@ -118,9 +118,9 @@ function ActionsSectionOnEdit(props) {
|
|
|
118
118
|
control,
|
|
119
119
|
name: "actions"
|
|
120
120
|
});
|
|
121
|
-
return /* @__PURE__ */ jsxs(Paper, { className:
|
|
121
|
+
return /* @__PURE__ */ jsxs(Paper, { className: drawerStyles.section, children: [
|
|
122
122
|
/* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("dictionary.measures") }) }),
|
|
123
|
-
fields.map((field, index) => /* @__PURE__ */ jsx(Card, { className: styles
|
|
123
|
+
fields.map((field, index) => /* @__PURE__ */ jsx(Card, { className: styles.actionFormItemCard, children: /* @__PURE__ */ jsx(
|
|
124
124
|
ActionFormItem,
|
|
125
125
|
{
|
|
126
126
|
formMethods: props.formMethods,
|
|
@@ -136,7 +136,7 @@ function ActionsSectionOnEdit(props) {
|
|
|
136
136
|
iconStart: /* @__PURE__ */ jsx(AddCircle, {}),
|
|
137
137
|
variant: "primary",
|
|
138
138
|
onClick: () => append(emptyAction()),
|
|
139
|
-
className: styles
|
|
139
|
+
className: styles.addActionButton,
|
|
140
140
|
children: t("scenarioDrawer.measureTab.addMeasureButton")
|
|
141
141
|
}
|
|
142
142
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { emptyAction, useScenario } from '../../../contexts/ScenarioContext';\nimport sharedStyles from '../scenarioDrawer.module.css';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Action, FormScenario } from '../../../utils/types';\nimport { ActionFormItem } from './ActionFormItem';\nimport { AddCircle } from '@mui/icons-material';\nimport Switch from '@mui/material/Switch';\nimport { useActionFiltersStorage } from '../../../stores/ActionFiltersStore.ts';\nimport {\n Text,\n Tooltip,\n TooltipTrigger,\n Flex,\n Button,\n Card,\n Box,\n} from '@backstage/ui';\nimport { useSortActionsByRelevance } from '../../../hooks/UseSortActionsByRelevance.ts';\nimport { filterActionsByRelevance } from '../../../utils/actions.ts';\nimport { ActionRowList } from '../../action/ActionRowList.tsx';\nimport styles from './ActionsSection.module.css';\nimport { ActionStatusOptions } from '../../../utils/constants.ts';\n\nconst RelevanceToggle = ({\n checked,\n onChange,\n}: {\n checked: boolean;\n onChange: (checked: boolean) => void;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Flex align=\"center\" gap=\"0\" className={styles.noRelevantActionToggle}>\n <Switch\n checked={checked}\n onChange={e => onChange(e.target.checked)}\n name=\"showOnlyRelevant\"\n color=\"primary\"\n />\n <Text variant=\"body-medium\">{t('dictionary.showOnlyRelevant')}</Text>\n </Flex>\n );\n};\n\ntype ActionSectionProps = {\n formMethods: UseFormReturn<FormScenario>;\n isEditing: boolean;\n};\n\nexport function ActionsSection({ formMethods, isEditing }: ActionSectionProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n const [allowActionDeletion, setAllowActionDeletion] =\n useState<boolean>(false);\n const { watch } = formMethods;\n const currentActions = watch('actions');\n\n const [sortedActions, setSortedActions] = useState<Action[] | undefined>(\n undefined,\n );\n const { actionFilters, saveOnlyRelevantFilter } = useActionFiltersStorage();\n const sortActionsByRelevance = useSortActionsByRelevance();\n\n useEffect(() => {\n setSortedActions(sortedActionsState => {\n if (sortedActionsState === undefined)\n return sortActionsByRelevance([...currentActions]);\n\n // sync actions\n const updatedSortedActions: Action[] = [];\n for (const action of sortedActionsState) {\n const updatedAction = currentActions.find(a => a.ID === action.ID);\n if (updatedAction) updatedSortedActions.push(updatedAction);\n }\n // add new actions\n for (const action of currentActions) {\n if (!updatedSortedActions.some(a => a.ID === action.ID)) {\n updatedSortedActions.push(action);\n }\n }\n return updatedSortedActions;\n });\n }, [currentActions, actionFilters, sortActionsByRelevance]);\n\n if (isEditing) {\n return <ActionsSectionOnEdit formMethods={formMethods} />;\n }\n\n const doesCurrentActionsContainNotRelevantActions = currentActions.some(\n action => action.status === ActionStatusOptions.NotRelevant,\n );\n\n const isActionsEmpty = currentActions.length === 0;\n\n return (\n <Paper className={sharedStyles.section}>\n <Flex justify=\"between\" mb=\"2\">\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n <Flex align=\"center\">\n {doesCurrentActionsContainNotRelevantActions && (\n <RelevanceToggle\n checked={actionFilters.showOnlyRelevant}\n onChange={value => saveOnlyRelevantFilter(value)}\n />\n )}\n {!isActionsEmpty && (\n <TooltipTrigger>\n <Button\n iconStart={\n allowActionDeletion ? (\n <i className=\"ri-checkbox-circle-line\" />\n ) : (\n <i className=\"ri-pencil-line\" />\n )\n }\n variant=\"secondary\"\n onClick={() => setAllowActionDeletion(prev => !prev)}\n >\n {allowActionDeletion}\n </Button>\n <Tooltip>\n {allowActionDeletion\n ? t('scenarioTable.doneEditing')\n : t('scenarioTable.editButton')}\n </Tooltip>\n </TooltipTrigger>\n )}\n </Flex>\n </Flex>\n {sortedActions !== undefined && sortedActions.length > 0 ? (\n <ActionRowList\n scenarioId={scenario.ID}\n displayedActions={filterActionsByRelevance(\n sortedActions,\n actionFilters.showOnlyRelevant,\n )}\n allowDeletion={allowActionDeletion}\n allowEdit\n />\n ) : (\n <Text variant=\"body-large\" className={styles.italicText}>\n {!currentActions || currentActions.length === 0\n ? t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })\n : t('dictionary.noRelevantMeasures')}\n </Text>\n )}\n </Paper>\n );\n}\n\ntype ActionsSectionOnEditProps = {\n formMethods: UseFormReturn<FormScenario>;\n};\n\nfunction ActionsSectionOnEdit(props: ActionsSectionOnEditProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control } = props.formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n });\n\n return (\n <Paper className={sharedStyles.section}>\n <Box>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n </Box>\n {fields.map((field, index) => (\n <Card key={field.id} className={styles.actionFormItemCard}>\n <ActionFormItem\n key={index}\n formMethods={props.formMethods}\n displayedIndex={index}\n handleDelete={() => remove(index)}\n baseObjectPathToActionOfForm={`actions.${index}`}\n />\n </Card>\n ))}\n <Button\n iconStart={<AddCircle />}\n variant=\"primary\"\n onClick={() => append(emptyAction())}\n className={styles.addActionButton}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Paper>\n );\n}\n"],"names":["styles","sharedStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { emptyAction, useScenario } from '../../../contexts/ScenarioContext';\nimport sharedStyles from '../scenarioDrawer.module.css';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Action, FormScenario } from '../../../utils/types';\nimport { ActionFormItem } from './ActionFormItem';\nimport { AddCircle } from '@mui/icons-material';\nimport Switch from '@mui/material/Switch';\nimport { useActionFiltersStorage } from '../../../stores/ActionFiltersStore.ts';\nimport {\n Text,\n Tooltip,\n TooltipTrigger,\n Flex,\n Button,\n Card,\n Box,\n} from '@backstage/ui';\nimport { useSortActionsByRelevance } from '../../../hooks/UseSortActionsByRelevance.ts';\nimport { filterActionsByRelevance } from '../../../utils/actions.ts';\nimport { ActionRowList } from '../../action/ActionRowList.tsx';\nimport styles from './ActionsSection.module.css';\nimport { ActionStatusOptions } from '../../../utils/constants.ts';\n\nconst RelevanceToggle = ({\n checked,\n onChange,\n}: {\n checked: boolean;\n onChange: (checked: boolean) => void;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Flex align=\"center\" gap=\"0\" className={styles.noRelevantActionToggle}>\n <Switch\n checked={checked}\n onChange={e => onChange(e.target.checked)}\n name=\"showOnlyRelevant\"\n color=\"primary\"\n />\n <Text variant=\"body-medium\">{t('dictionary.showOnlyRelevant')}</Text>\n </Flex>\n );\n};\n\ntype ActionSectionProps = {\n formMethods: UseFormReturn<FormScenario>;\n isEditing: boolean;\n};\n\nexport function ActionsSection({ formMethods, isEditing }: ActionSectionProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n const [allowActionDeletion, setAllowActionDeletion] =\n useState<boolean>(false);\n const { watch } = formMethods;\n const currentActions = watch('actions');\n\n const [sortedActions, setSortedActions] = useState<Action[] | undefined>(\n undefined,\n );\n const { actionFilters, saveOnlyRelevantFilter } = useActionFiltersStorage();\n const sortActionsByRelevance = useSortActionsByRelevance();\n\n useEffect(() => {\n setSortedActions(sortedActionsState => {\n if (sortedActionsState === undefined)\n return sortActionsByRelevance([...currentActions]);\n\n // sync actions\n const updatedSortedActions: Action[] = [];\n for (const action of sortedActionsState) {\n const updatedAction = currentActions.find(a => a.ID === action.ID);\n if (updatedAction) updatedSortedActions.push(updatedAction);\n }\n // add new actions\n for (const action of currentActions) {\n if (!updatedSortedActions.some(a => a.ID === action.ID)) {\n updatedSortedActions.push(action);\n }\n }\n return updatedSortedActions;\n });\n }, [currentActions, actionFilters, sortActionsByRelevance]);\n\n if (isEditing) {\n return <ActionsSectionOnEdit formMethods={formMethods} />;\n }\n\n const doesCurrentActionsContainNotRelevantActions = currentActions.some(\n action => action.status === ActionStatusOptions.NotRelevant,\n );\n\n const isActionsEmpty = currentActions.length === 0;\n\n return (\n <Paper className={sharedStyles.section}>\n <Flex justify=\"between\" mb=\"2\">\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n <Flex align=\"center\">\n {doesCurrentActionsContainNotRelevantActions && (\n <RelevanceToggle\n checked={actionFilters.showOnlyRelevant}\n onChange={value => saveOnlyRelevantFilter(value)}\n />\n )}\n {!isActionsEmpty && (\n <TooltipTrigger>\n <Button\n iconStart={\n allowActionDeletion ? (\n <i className=\"ri-checkbox-circle-line\" />\n ) : (\n <i className=\"ri-pencil-line\" />\n )\n }\n variant=\"secondary\"\n onClick={() => setAllowActionDeletion(prev => !prev)}\n >\n {allowActionDeletion}\n </Button>\n <Tooltip>\n {allowActionDeletion\n ? t('scenarioTable.doneEditing')\n : t('scenarioTable.editButton')}\n </Tooltip>\n </TooltipTrigger>\n )}\n </Flex>\n </Flex>\n {sortedActions !== undefined && sortedActions.length > 0 ? (\n <ActionRowList\n scenarioId={scenario.ID}\n displayedActions={filterActionsByRelevance(\n sortedActions,\n actionFilters.showOnlyRelevant,\n )}\n allowDeletion={allowActionDeletion}\n allowEdit\n />\n ) : (\n <Text variant=\"body-large\" className={styles.italicText}>\n {!currentActions || currentActions.length === 0\n ? t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })\n : t('dictionary.noRelevantMeasures')}\n </Text>\n )}\n </Paper>\n );\n}\n\ntype ActionsSectionOnEditProps = {\n formMethods: UseFormReturn<FormScenario>;\n};\n\nfunction ActionsSectionOnEdit(props: ActionsSectionOnEditProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control } = props.formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n });\n\n return (\n <Paper className={sharedStyles.section}>\n <Box>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n </Box>\n {fields.map((field, index) => (\n <Card key={field.id} className={styles.actionFormItemCard}>\n <ActionFormItem\n key={index}\n formMethods={props.formMethods}\n displayedIndex={index}\n handleDelete={() => remove(index)}\n baseObjectPathToActionOfForm={`actions.${index}`}\n />\n </Card>\n ))}\n <Button\n iconStart={<AddCircle />}\n variant=\"primary\"\n onClick={() => append(emptyAction())}\n className={styles.addActionButton}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Paper>\n );\n}\n"],"names":["sharedStyles"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
3
3
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
4
|
-
import
|
|
4
|
+
import drawerStyles from '../scenarioDrawer.module.css.esm.js';
|
|
5
5
|
import { ConfirmationDialogWithoutCheckbox } from '../../common/ConfirmationDialog.esm.js';
|
|
6
6
|
|
|
7
7
|
function DeleteScenarioConfirmation({
|
|
@@ -21,7 +21,7 @@ function DeleteScenarioConfirmation({
|
|
|
21
21
|
},
|
|
22
22
|
title: t("scenarioDrawer.deleteScenarioConfirmation"),
|
|
23
23
|
confirmButtonText: t("scenarioDrawer.deleteScenarioButton"),
|
|
24
|
-
className:
|
|
24
|
+
className: drawerStyles.deleteConfirmationDialog
|
|
25
25
|
}
|
|
26
26
|
);
|
|
27
27
|
}
|
|
@@ -42,7 +42,7 @@ function DeleteActionConfirmation({
|
|
|
42
42
|
},
|
|
43
43
|
title: t("scenarioDrawer.deleteActionConfirmation"),
|
|
44
44
|
confirmButtonText: t("scenarioDrawer.deleteActionButton"),
|
|
45
|
-
className:
|
|
45
|
+
className: drawerStyles.deleteConfirmationDialog
|
|
46
46
|
}
|
|
47
47
|
);
|
|
48
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport type { SetState } from '../../../utils/types';\nimport styles from '../
|
|
1
|
+
{"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport type { SetState } from '../../../utils/types';\nimport styles from '../scenarioDrawer.module.css';\nimport { ConfirmationDialogWithoutCheckbox } from '../../common/ConfirmationDialog';\n\ntype DeleteScenarioConfirmationProps = {\n isOpen: boolean;\n setIsOpen: SetState<boolean>;\n onConfirm?: () => void;\n};\n\nexport function DeleteScenarioConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteScenarioConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialogWithoutCheckbox\n isOpen={isOpen}\n onCancel={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteScenarioConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteScenarioButton')}\n className={styles.deleteConfirmationDialog}\n />\n );\n}\n\ntype DeleteActionConfirmationProps = {\n isOpen: boolean;\n setIsOpen: SetState<boolean>;\n onConfirm?: () => void;\n};\n\nexport function DeleteActionConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteActionConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialogWithoutCheckbox\n isOpen={isOpen}\n onCancel={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteActionConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteActionButton')}\n className={styles.deleteConfirmationDialog}\n />\n );\n}\n"],"names":["styles"],"mappings":";;;;;;AAYO,SAAS,0BAAA,CAA2B;AAAA,EACzC,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAoC;AAClC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,GAAA;AAAA,IAAC,iCAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,QAAA,EAAU,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC/B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA;AAAA,MACA,KAAA,EAAO,EAAE,2CAA2C,CAAA;AAAA,MACpD,iBAAA,EAAmB,EAAE,qCAAqC,CAAA;AAAA,MAC1D,WAAWA,YAAA,CAAO;AAAA;AAAA,GACpB;AAEJ;AAQO,SAAS,wBAAA,CAAyB;AAAA,EACvC,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,GAAA;AAAA,IAAC,iCAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,QAAA,EAAU,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC/B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA;AAAA,MACA,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,MAClD,iBAAA,EAAmB,EAAE,mCAAmC,CAAA;AAAA,MACxD,WAAWA,YAAA,CAAO;AAAA;AAAA,GACpB;AAEJ;;;;"}
|
|
@@ -8,7 +8,7 @@ import { probabilityOptions, consequenceOptions } from '../../../utils/constants
|
|
|
8
8
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
9
9
|
import { probabilityIndexToTranslationKeys, findProbabilityIndex, consequenceIndexToTranslationKeys, findConsequenceIndex } from '../../../utils/utilityfunctions.esm.js';
|
|
10
10
|
import { Select } from '../../common/Select.esm.js';
|
|
11
|
-
import
|
|
11
|
+
import drawerStyles from '../scenarioDrawer.module.css.esm.js';
|
|
12
12
|
import RiskOptionDisplay from './RiskOptionDisplay.esm.js';
|
|
13
13
|
import { Text } from '@backstage/ui';
|
|
14
14
|
|
|
@@ -69,7 +69,7 @@ function ScenarioForm({
|
|
|
69
69
|
)
|
|
70
70
|
}));
|
|
71
71
|
};
|
|
72
|
-
return /* @__PURE__ */ jsxs(Paper, { className:
|
|
72
|
+
return /* @__PURE__ */ jsxs(Paper, { className: drawerStyles.section, children: [
|
|
73
73
|
/* @__PURE__ */ jsx(
|
|
74
74
|
Box,
|
|
75
75
|
{
|
|
@@ -77,12 +77,12 @@ function ScenarioForm({
|
|
|
77
77
|
display: "flex",
|
|
78
78
|
gap: "24px"
|
|
79
79
|
},
|
|
80
|
-
children: /* @__PURE__ */ jsx(Paper, { className:
|
|
81
|
-
/* @__PURE__ */ jsxs(Box, { className:
|
|
80
|
+
children: /* @__PURE__ */ jsx(Paper, { className: drawerStyles.riscSection, children: /* @__PURE__ */ jsxs(Box, { className: drawerStyles.selectSection, children: [
|
|
81
|
+
/* @__PURE__ */ jsxs(Box, { className: drawerStyles.headerSection, children: [
|
|
82
82
|
/* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("dictionary.initialRisk") }),
|
|
83
83
|
/* @__PURE__ */ jsx(Text, { variant: "body-large", children: t("scenarioDrawer.riskMatrixModal.startRisk") })
|
|
84
84
|
] }),
|
|
85
|
-
/* @__PURE__ */ jsxs(Box, { className:
|
|
85
|
+
/* @__PURE__ */ jsxs(Box, { className: drawerStyles.headerSection, children: [
|
|
86
86
|
/* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("dictionary.restRisk") }),
|
|
87
87
|
/* @__PURE__ */ jsx(Text, { variant: "body-large", children: t("scenarioDrawer.riskMatrixModal.restRisk") })
|
|
88
88
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RiskFormSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/RiskFormSection.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport InfoIcon from '@mui/icons-material/Info';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Paper from '@mui/material/Paper';\nimport { UseFormReturn } from 'react-hook-form';\nimport {\n consequenceOptions,\n probabilityOptions,\n} from '../../../utils/constants';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { FormScenario } from '../../../utils/types';\nimport {\n consequenceIndexToTranslationKeys,\n findConsequenceIndex,\n findProbabilityIndex,\n probabilityIndexToTranslationKeys,\n} from '../../../utils/utilityfunctions';\nimport { Select } from '../../common/Select';\nimport styles from '../scenarioDrawer.module.css';\nimport RiskOptionDisplay from './RiskOptionDisplay';\nimport { Text } from '@backstage/ui';\n\nfunction ScenarioForm({\n formMethods,\n setIsMatrixDialogOpen,\n}: {\n formMethods: UseFormReturn<FormScenario>;\n setIsMatrixDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n watch,\n control,\n formState: { errors },\n } = formMethods;\n\n const [\n riskProbability,\n riskConsequence,\n remainingRiskProbability,\n remainingRiskConsequence,\n ] = watch([\n 'risk.probability',\n 'risk.consequence',\n 'remainingRisk.probability',\n 'remainingRisk.consequence',\n ]);\n\n const probabilityValues = (selectedValue: number) => {\n return probabilityOptions.map((value, index) => ({\n value: `${value}`,\n renderedValue: (\n <RiskOptionDisplay\n isSelected={\n findProbabilityIndex(value) === findProbabilityIndex(selectedValue)\n }\n level={index + 1}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n `${t(`probabilityTable.rows.${index + 1}`)} (${t(\n probabilityIndexToTranslationKeys[index],\n )})`\n }\n />\n ),\n }));\n };\n\n const consequenceValues = (selectedValue: number) => {\n return consequenceOptions.map((value, index) => ({\n value: `${value}`,\n renderedValue: (\n <RiskOptionDisplay\n isSelected={\n findConsequenceIndex(value) === findConsequenceIndex(selectedValue)\n }\n level={index + 1}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n `${t(`consequenceTable.rows.${index + 1}`)} (${t(\n consequenceIndexToTranslationKeys[index],\n )})`\n }\n />\n ),\n }));\n };\n\n return (\n <Paper className={styles.section}>\n <Box\n sx={{\n display: 'flex',\n gap: '24px',\n }}\n >\n <Paper className={styles.riscSection}>\n <Box className={styles.selectSection}>\n {/* Row 1 */}\n <Box className={styles.headerSection}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.initialRisk')}\n </Text>\n <Text variant=\"body-large\">\n {t('scenarioDrawer.riskMatrixModal.startRisk')}\n </Text>\n </Box>\n <Box className={styles.headerSection}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.restRisk')}\n </Text>\n <Text variant=\"body-large\">\n {t('scenarioDrawer.riskMatrixModal.restRisk')}\n </Text>\n </Box>\n\n {/* Row 2 */}\n <Select<FormScenario>\n control={control}\n name=\"risk.probability\"\n label={t('infoDialog.probabilityTitle')}\n options={probabilityValues(Number(riskProbability))}\n />\n <Select<FormScenario>\n control={control}\n name=\"remainingRisk.probability\"\n label={t('infoDialog.probabilityTitle')}\n options={probabilityValues(Number(remainingRiskProbability))}\n rules={{\n validate: (value, _) =>\n Number(value) <=\n Number(control._formValues.risk?.probability) ||\n t('scenarioDrawer.errors.remainingProbabilityTooHigh'),\n }}\n error={errors.remainingRisk?.probability !== undefined}\n helperText={errors.remainingRisk?.probability?.message}\n />\n\n {/* Row 3 */}\n <Select<FormScenario>\n control={control}\n name=\"risk.consequence\"\n label={t('infoDialog.consequenceTitle')}\n options={consequenceValues(Number(riskConsequence))}\n />\n <Select<FormScenario>\n control={control}\n name=\"remainingRisk.consequence\"\n label={t('infoDialog.consequenceTitle')}\n options={consequenceValues(Number(remainingRiskConsequence))}\n rules={{\n validate: (value, _) =>\n Number(value) <=\n Number(control._formValues.risk?.consequence) ||\n t('scenarioDrawer.errors.remainingConsequenceTooHigh'),\n }}\n error={errors.remainingRisk?.consequence !== undefined}\n helperText={errors.remainingRisk?.consequence?.message}\n />\n </Box>\n </Paper>\n </Box>\n <IconButton\n sx={{\n position: 'absolute',\n top: 10,\n right: 10,\n }}\n onClick={() => setIsMatrixDialogOpen(true)}\n color=\"primary\"\n >\n <InfoIcon />\n </IconButton>\n </Paper>\n );\n}\n\nexport default ScenarioForm;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RiskFormSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/RiskFormSection.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport InfoIcon from '@mui/icons-material/Info';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Paper from '@mui/material/Paper';\nimport { UseFormReturn } from 'react-hook-form';\nimport {\n consequenceOptions,\n probabilityOptions,\n} from '../../../utils/constants';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { FormScenario } from '../../../utils/types';\nimport {\n consequenceIndexToTranslationKeys,\n findConsequenceIndex,\n findProbabilityIndex,\n probabilityIndexToTranslationKeys,\n} from '../../../utils/utilityfunctions';\nimport { Select } from '../../common/Select';\nimport styles from '../scenarioDrawer.module.css';\nimport RiskOptionDisplay from './RiskOptionDisplay';\nimport { Text } from '@backstage/ui';\n\nfunction ScenarioForm({\n formMethods,\n setIsMatrixDialogOpen,\n}: {\n formMethods: UseFormReturn<FormScenario>;\n setIsMatrixDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n watch,\n control,\n formState: { errors },\n } = formMethods;\n\n const [\n riskProbability,\n riskConsequence,\n remainingRiskProbability,\n remainingRiskConsequence,\n ] = watch([\n 'risk.probability',\n 'risk.consequence',\n 'remainingRisk.probability',\n 'remainingRisk.consequence',\n ]);\n\n const probabilityValues = (selectedValue: number) => {\n return probabilityOptions.map((value, index) => ({\n value: `${value}`,\n renderedValue: (\n <RiskOptionDisplay\n isSelected={\n findProbabilityIndex(value) === findProbabilityIndex(selectedValue)\n }\n level={index + 1}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n `${t(`probabilityTable.rows.${index + 1}`)} (${t(\n probabilityIndexToTranslationKeys[index],\n )})`\n }\n />\n ),\n }));\n };\n\n const consequenceValues = (selectedValue: number) => {\n return consequenceOptions.map((value, index) => ({\n value: `${value}`,\n renderedValue: (\n <RiskOptionDisplay\n isSelected={\n findConsequenceIndex(value) === findConsequenceIndex(selectedValue)\n }\n level={index + 1}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n `${t(`consequenceTable.rows.${index + 1}`)} (${t(\n consequenceIndexToTranslationKeys[index],\n )})`\n }\n />\n ),\n }));\n };\n\n return (\n <Paper className={styles.section}>\n <Box\n sx={{\n display: 'flex',\n gap: '24px',\n }}\n >\n <Paper className={styles.riscSection}>\n <Box className={styles.selectSection}>\n {/* Row 1 */}\n <Box className={styles.headerSection}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.initialRisk')}\n </Text>\n <Text variant=\"body-large\">\n {t('scenarioDrawer.riskMatrixModal.startRisk')}\n </Text>\n </Box>\n <Box className={styles.headerSection}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.restRisk')}\n </Text>\n <Text variant=\"body-large\">\n {t('scenarioDrawer.riskMatrixModal.restRisk')}\n </Text>\n </Box>\n\n {/* Row 2 */}\n <Select<FormScenario>\n control={control}\n name=\"risk.probability\"\n label={t('infoDialog.probabilityTitle')}\n options={probabilityValues(Number(riskProbability))}\n />\n <Select<FormScenario>\n control={control}\n name=\"remainingRisk.probability\"\n label={t('infoDialog.probabilityTitle')}\n options={probabilityValues(Number(remainingRiskProbability))}\n rules={{\n validate: (value, _) =>\n Number(value) <=\n Number(control._formValues.risk?.probability) ||\n t('scenarioDrawer.errors.remainingProbabilityTooHigh'),\n }}\n error={errors.remainingRisk?.probability !== undefined}\n helperText={errors.remainingRisk?.probability?.message}\n />\n\n {/* Row 3 */}\n <Select<FormScenario>\n control={control}\n name=\"risk.consequence\"\n label={t('infoDialog.consequenceTitle')}\n options={consequenceValues(Number(riskConsequence))}\n />\n <Select<FormScenario>\n control={control}\n name=\"remainingRisk.consequence\"\n label={t('infoDialog.consequenceTitle')}\n options={consequenceValues(Number(remainingRiskConsequence))}\n rules={{\n validate: (value, _) =>\n Number(value) <=\n Number(control._formValues.risk?.consequence) ||\n t('scenarioDrawer.errors.remainingConsequenceTooHigh'),\n }}\n error={errors.remainingRisk?.consequence !== undefined}\n helperText={errors.remainingRisk?.consequence?.message}\n />\n </Box>\n </Paper>\n </Box>\n <IconButton\n sx={{\n position: 'absolute',\n top: 10,\n right: 10,\n }}\n onClick={() => setIsMatrixDialogOpen(true)}\n color=\"primary\"\n >\n <InfoIcon />\n </IconButton>\n </Paper>\n );\n}\n\nexport default ScenarioForm;\n"],"names":["styles"],"mappings":"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"}
|
|
@@ -6,13 +6,13 @@ import Paper from '@mui/material/Paper';
|
|
|
6
6
|
import { useScenario } from '../../../contexts/ScenarioContext.esm.js';
|
|
7
7
|
import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
|
|
8
8
|
import { getRiskMatrixColor, getProbabilityLevel, getConsequenceLevel, formatNOK } from '../../../utils/utilityfunctions.esm.js';
|
|
9
|
-
import
|
|
9
|
+
import drawerStyles from '../scenarioDrawer.module.css.esm.js';
|
|
10
10
|
import { Text } from '@backstage/ui';
|
|
11
11
|
|
|
12
12
|
function RiskBox({ risk, heading }) {
|
|
13
13
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
14
14
|
const cost = risk.probability * risk.consequence;
|
|
15
|
-
return /* @__PURE__ */ jsxs(Paper, { className:
|
|
15
|
+
return /* @__PURE__ */ jsxs(Paper, { className: drawerStyles.section, children: [
|
|
16
16
|
/* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: heading }),
|
|
17
17
|
/* @__PURE__ */ jsx(Box, { children: /* @__PURE__ */ jsxs(
|
|
18
18
|
Box,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RiskSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/RiskSection.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nimport Box from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { Risk } from '../../../utils/types';\nimport {\n formatNOK,\n getConsequenceLevel,\n getProbabilityLevel,\n getRiskMatrixColor,\n} from '../../../utils/utilityfunctions';\nimport styles from '../scenarioDrawer.module.css';\nimport { Text } from '@backstage/ui';\n\ninterface RiskProps {\n risk: Risk;\n heading: string;\n}\n\nfunction RiskBox({ risk, heading }: RiskProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const cost = risk.probability * risk.consequence;\n\n return (\n <Paper className={styles.section}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {heading}\n </Text>\n\n <Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <Box\n sx={{\n width: '20px',\n height: '48px',\n borderRadius: 1,\n backgroundColor: getRiskMatrixColor(risk),\n }}\n />\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'start',\n gap: 0.5,\n }}\n >\n <Text variant=\"body-medium\" style={{ fontWeight: '700' }}>\n {t('dictionary.probability')}: {getProbabilityLevel(risk)}\n </Text>\n <Text variant=\"body-medium\" style={{ fontWeight: '700' }}>\n {t('dictionary.consequence')}: {getConsequenceLevel(risk)}\n </Text>\n </Box>\n </Box>\n </Box>\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n style={{ paddingBottom: '0.4rem', fontWeight: '700' }}\n >\n {t('dictionary.estimatedRisk')}\n </Text>\n <Text variant=\"body-large\" weight=\"bold\">\n {formatNOK(cost)} {t('riskMatrix.estimatedRisk.unit.nokPerYear')}\n </Text>\n </Box>\n </Paper>\n );\n}\n\nexport function RiskSection() {\n const { scenario } = useScenario();\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <RiskBox risk={scenario.risk} heading={t('dictionary.initialRisk')} />\n <KeyboardDoubleArrowRightIcon sx={{ fontSize: '48px' }} />\n <RiskBox\n risk={scenario.remainingRisk}\n heading={t('dictionary.restRisk')}\n />\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAqBA,SAAS,OAAA,CAAQ,EAAE,IAAA,EAAM,OAAA,EAAQ,EAAc;AAC7C,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,WAAA;AAErC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,SAAA,
|
|
1
|
+
{"version":3,"file":"RiskSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/RiskSection.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nimport Box from '@mui/material/Box';\nimport Paper from '@mui/material/Paper';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { Risk } from '../../../utils/types';\nimport {\n formatNOK,\n getConsequenceLevel,\n getProbabilityLevel,\n getRiskMatrixColor,\n} from '../../../utils/utilityfunctions';\nimport styles from '../scenarioDrawer.module.css';\nimport { Text } from '@backstage/ui';\n\ninterface RiskProps {\n risk: Risk;\n heading: string;\n}\n\nfunction RiskBox({ risk, heading }: RiskProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const cost = risk.probability * risk.consequence;\n\n return (\n <Paper className={styles.section}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {heading}\n </Text>\n\n <Box>\n <Box\n sx={{\n display: 'flex',\n alignItems: 'center',\n gap: 1,\n }}\n >\n <Box\n sx={{\n width: '20px',\n height: '48px',\n borderRadius: 1,\n backgroundColor: getRiskMatrixColor(risk),\n }}\n />\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'start',\n gap: 0.5,\n }}\n >\n <Text variant=\"body-medium\" style={{ fontWeight: '700' }}>\n {t('dictionary.probability')}: {getProbabilityLevel(risk)}\n </Text>\n <Text variant=\"body-medium\" style={{ fontWeight: '700' }}>\n {t('dictionary.consequence')}: {getConsequenceLevel(risk)}\n </Text>\n </Box>\n </Box>\n </Box>\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n style={{ paddingBottom: '0.4rem', fontWeight: '700' }}\n >\n {t('dictionary.estimatedRisk')}\n </Text>\n <Text variant=\"body-large\" weight=\"bold\">\n {formatNOK(cost)} {t('riskMatrix.estimatedRisk.unit.nokPerYear')}\n </Text>\n </Box>\n </Paper>\n );\n}\n\nexport function RiskSection() {\n const { scenario } = useScenario();\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <RiskBox risk={scenario.risk} heading={t('dictionary.initialRisk')} />\n <KeyboardDoubleArrowRightIcon sx={{ fontSize: '48px' }} />\n <RiskBox\n risk={scenario.remainingRisk}\n heading={t('dictionary.restRisk')}\n />\n </Box>\n );\n}\n"],"names":["styles"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { threatActorOptionsToTranslationKeys, vulnerabiltiesOptionsToTranslation
|
|
|
8
8
|
import { Input } from '../../common/Input.esm.js';
|
|
9
9
|
import { MarkdownInput } from '../../common/MarkdownInput/MarkdownInput.esm.js';
|
|
10
10
|
import { Select } from '../../common/Select.esm.js';
|
|
11
|
-
import
|
|
11
|
+
import drawerStyles from '../scenarioDrawer.module.css.esm.js';
|
|
12
12
|
import { Text } from '@backstage/ui';
|
|
13
13
|
|
|
14
14
|
function ScopeFormSection({
|
|
@@ -34,7 +34,7 @@ function ScopeFormSection({
|
|
|
34
34
|
renderedValue: t(vulnerabiltiesOptionsToTranslationKeys[vulnerability])
|
|
35
35
|
})
|
|
36
36
|
);
|
|
37
|
-
return /* @__PURE__ */ jsxs(Paper, { className:
|
|
37
|
+
return /* @__PURE__ */ jsxs(Paper, { className: drawerStyles.section, children: [
|
|
38
38
|
/* @__PURE__ */ jsx(Text, { as: "h6", variant: "title-x-small", weight: "bold", children: t("scenarioDrawer.title") }),
|
|
39
39
|
/* @__PURE__ */ jsx(
|
|
40
40
|
Input,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeFormSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ScopeFormSection.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Paper from '@mui/material/Paper';\nimport { Controller, UseFormReturn } from 'react-hook-form';\nimport {\n ThreatActorsOptions,\n VulnerabilitiesOptions,\n} from '../../../utils/constants';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { FormScenario } from '../../../utils/types';\nimport {\n threatActorOptionsToTranslationKeys,\n vulnerabiltiesOptionsToTranslationKeys,\n} from '../../../utils/utilityfunctions';\nimport { Input } from '../../common/Input';\nimport { MarkdownInput } from '../../common/MarkdownInput';\nimport { Select } from '../../common/Select';\nimport styles from '../scenarioDrawer.module.css';\nimport { Text } from '@backstage/ui';\n\nfunction ScopeFormSection({\n formMethods,\n}: {\n formMethods: UseFormReturn<FormScenario>;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n control,\n register,\n formState: { errors },\n } = formMethods;\n\n const threatActorOptions = Object.values(ThreatActorsOptions).map(\n threatActor => ({\n value: threatActor,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(threatActorOptionsToTranslationKeys[threatActor]),\n }),\n );\n\n const vulnerabilitiesOptions = Object.values(VulnerabilitiesOptions).map(\n vulnerability => ({\n value: vulnerability,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(vulnerabiltiesOptionsToTranslationKeys[vulnerability]),\n }),\n );\n\n return (\n <Paper className={styles.section}>\n <Text as=\"h6\" variant=\"title-x-small\" weight=\"bold\">\n {t('scenarioDrawer.title')}\n </Text>\n <Input\n required\n {...register('title', { required: true })}\n error={errors.title !== undefined}\n label={t('dictionary.title')}\n helperText={errors.title && t('scenarioDrawer.titleError')}\n />\n <Select<FormScenario>\n multiple\n control={control}\n name=\"threatActors\"\n label={t('dictionary.threatActors')}\n labelTranslationKey=\"threatActors\"\n options={threatActorOptions}\n />\n <Select<FormScenario>\n multiple\n control={control}\n name=\"vulnerabilities\"\n label={t('dictionary.vulnerabilities')}\n labelTranslationKey=\"vulnerabilities\"\n options={vulnerabilitiesOptions}\n />\n <Controller\n control={control}\n name=\"description\"\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <MarkdownInput\n value={value}\n onMarkdownChange={onChange}\n label={t('dictionary.description')}\n minRows={8}\n error={!!error}\n />\n )}\n />\n </Paper>\n );\n}\n\nexport default ScopeFormSection;\n"],"names":[],"mappings":";;;;;;;;;;;;;AAmBA,SAAS,gBAAA,CAAiB;AAAA,EACxB;AACF,CAAA,EAEG;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA;AAAO,GACtB,GAAI,WAAA;AAEJ,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,MAAA,CAAO,mBAAmB,CAAA,CAAE,GAAA;AAAA,IAC5D,CAAA,WAAA,MAAgB;AAAA,MACd,KAAA,EAAO,WAAA;AAAA;AAAA,MAEP,aAAA,EAAe,CAAA,CAAE,mCAAA,CAAoC,WAAW,CAAC;AAAA,KACnE;AAAA,GACF;AAEA,EAAA,MAAM,sBAAA,GAAyB,MAAA,CAAO,MAAA,CAAO,sBAAsB,CAAA,CAAE,GAAA;AAAA,IACnE,CAAA,aAAA,MAAkB;AAAA,MAChB,KAAA,EAAO,aAAA;AAAA;AAAA,MAEP,aAAA,EAAe,CAAA,CAAE,sCAAA,CAAuC,aAAa,CAAC;AAAA,KACxE;AAAA,GACF;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,SAAA,
|
|
1
|
+
{"version":3,"file":"ScopeFormSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ScopeFormSection.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Paper from '@mui/material/Paper';\nimport { Controller, UseFormReturn } from 'react-hook-form';\nimport {\n ThreatActorsOptions,\n VulnerabilitiesOptions,\n} from '../../../utils/constants';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { FormScenario } from '../../../utils/types';\nimport {\n threatActorOptionsToTranslationKeys,\n vulnerabiltiesOptionsToTranslationKeys,\n} from '../../../utils/utilityfunctions';\nimport { Input } from '../../common/Input';\nimport { MarkdownInput } from '../../common/MarkdownInput';\nimport { Select } from '../../common/Select';\nimport styles from '../scenarioDrawer.module.css';\nimport { Text } from '@backstage/ui';\n\nfunction ScopeFormSection({\n formMethods,\n}: {\n formMethods: UseFormReturn<FormScenario>;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const {\n control,\n register,\n formState: { errors },\n } = formMethods;\n\n const threatActorOptions = Object.values(ThreatActorsOptions).map(\n threatActor => ({\n value: threatActor,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(threatActorOptionsToTranslationKeys[threatActor]),\n }),\n );\n\n const vulnerabilitiesOptions = Object.values(VulnerabilitiesOptions).map(\n vulnerability => ({\n value: vulnerability,\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n renderedValue: t(vulnerabiltiesOptionsToTranslationKeys[vulnerability]),\n }),\n );\n\n return (\n <Paper className={styles.section}>\n <Text as=\"h6\" variant=\"title-x-small\" weight=\"bold\">\n {t('scenarioDrawer.title')}\n </Text>\n <Input\n required\n {...register('title', { required: true })}\n error={errors.title !== undefined}\n label={t('dictionary.title')}\n helperText={errors.title && t('scenarioDrawer.titleError')}\n />\n <Select<FormScenario>\n multiple\n control={control}\n name=\"threatActors\"\n label={t('dictionary.threatActors')}\n labelTranslationKey=\"threatActors\"\n options={threatActorOptions}\n />\n <Select<FormScenario>\n multiple\n control={control}\n name=\"vulnerabilities\"\n label={t('dictionary.vulnerabilities')}\n labelTranslationKey=\"vulnerabilities\"\n options={vulnerabilitiesOptions}\n />\n <Controller\n control={control}\n name=\"description\"\n render={({ field: { onChange, value }, fieldState: { error } }) => (\n <MarkdownInput\n value={value}\n onMarkdownChange={onChange}\n label={t('dictionary.description')}\n minRows={8}\n error={!!error}\n />\n )}\n />\n </Paper>\n );\n}\n\nexport default ScopeFormSection;\n"],"names":["styles"],"mappings":";;;;;;;;;;;;;AAmBA,SAAS,gBAAA,CAAiB;AAAA,EACxB;AACF,CAAA,EAEG;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA,EAAW,EAAE,MAAA;AAAO,GACtB,GAAI,WAAA;AAEJ,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,MAAA,CAAO,mBAAmB,CAAA,CAAE,GAAA;AAAA,IAC5D,CAAA,WAAA,MAAgB;AAAA,MACd,KAAA,EAAO,WAAA;AAAA;AAAA,MAEP,aAAA,EAAe,CAAA,CAAE,mCAAA,CAAoC,WAAW,CAAC;AAAA,KACnE;AAAA,GACF;AAEA,EAAA,MAAM,sBAAA,GAAyB,MAAA,CAAO,MAAA,CAAO,sBAAsB,CAAA,CAAE,GAAA;AAAA,IACnE,CAAA,aAAA,MAAkB;AAAA,MAChB,KAAA,EAAO,aAAA;AAAA;AAAA,MAEP,aAAA,EAAe,CAAA,CAAE,sCAAA,CAAuC,aAAa,CAAC;AAAA,KACxE;AAAA,GACF;AAEA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAWA,YAAA,CAAO,OAAA,EACvB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,IAAG,IAAA,EAAK,OAAA,EAAQ,iBAAgB,MAAA,EAAO,MAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAC3B,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACP,GAAG,QAAA,CAAS,OAAA,EAAS,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,QACxC,KAAA,EAAO,OAAO,KAAA,KAAU,MAAA;AAAA,QACxB,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,UAAA,EAAY,MAAA,CAAO,KAAA,IAAS,CAAA,CAAE,2BAA2B;AAAA;AAAA,KAC3D;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAA,EAAK,cAAA;AAAA,QACL,KAAA,EAAO,EAAE,yBAAyB,CAAA;AAAA,QAClC,mBAAA,EAAoB,cAAA;AAAA,QACpB,OAAA,EAAS;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA;AAAA,QACA,IAAA,EAAK,iBAAA;AAAA,QACL,KAAA,EAAO,EAAE,4BAA4B,CAAA;AAAA,QACrC,mBAAA,EAAoB,iBAAA;AAAA,QACpB,OAAA,EAAS;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,IAAA,EAAK,aAAA;AAAA,QACL,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,KAAA,EAAM,EAAG,UAAA,EAAY,EAAE,KAAA,EAAM,EAAE,qBAC3D,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,gBAAA,EAAkB,QAAA;AAAA,YAClB,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,YACjC,OAAA,EAAS,CAAA;AAAA,YACT,KAAA,EAAO,CAAC,CAAC;AAAA;AAAA;AACX;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -5,14 +5,14 @@ import Paper from '@mui/material/Paper';
|
|
|
5
5
|
import Box from '@mui/material/Box';
|
|
6
6
|
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
7
7
|
import { useScenario } from '../../../contexts/ScenarioContext.esm.js';
|
|
8
|
-
import
|
|
8
|
+
import drawerStyles from '../scenarioDrawer.module.css.esm.js';
|
|
9
9
|
import { Markdown } from '../../common/Markdown.esm.js';
|
|
10
10
|
import { Text } from '@backstage/ui';
|
|
11
11
|
|
|
12
12
|
function ScopeSection() {
|
|
13
13
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
14
14
|
const { scenario } = useScenario();
|
|
15
|
-
return /* @__PURE__ */ jsxs(Paper, { className:
|
|
15
|
+
return /* @__PURE__ */ jsxs(Paper, { className: drawerStyles.section, children: [
|
|
16
16
|
/* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", children: t("scenarioDrawer.title") }),
|
|
17
17
|
/* @__PURE__ */ jsx(Text, { variant: "title-medium", style: { fontWeight: "700" }, children: scenario.title }),
|
|
18
18
|
/* @__PURE__ */ jsxs(Box, { children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScopeSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ScopeSection.tsx"],"sourcesContent":["import { pluginRiScTranslationRef } from '../../../utils/translations';\nimport Divider from '@mui/material/Divider';\nimport Paper from '@mui/material/Paper';\nimport Box from '@mui/material/Box';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport styles from '../scenarioDrawer.module.css';\nimport { Markdown } from '../../common/Markdown';\nimport { Text } from '@backstage/ui';\n\nexport function ScopeSection() {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n return (\n <Paper className={styles.section}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('scenarioDrawer.title')}\n </Text>\n\n <Text variant=\"title-medium\" style={{ fontWeight: '700' }}>\n {scenario.title}\n </Text>\n\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n weight=\"bold\"\n style={{ paddingBottom: '0.4rem' }}\n >\n {t('dictionary.description')}\n </Text>\n {scenario.description ? (\n <Markdown description={scenario.description} />\n ) : (\n <Text variant=\"body-large\" style={{ fontStyle: 'italic' }}>\n {t('dictionary.emptyField', {\n field: t('dictionary.description').toLowerCase(),\n })}{' '}\n </Text>\n )}\n </Box>\n\n <Divider />\n\n <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 2 }}>\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n style={{ paddingBottom: '0.4rem', fontWeight: '700' }}\n >\n {t('dictionary.threatActors')}\n </Text>\n {scenario.threatActors.length > 0 ? (\n scenario.threatActors.map(threatActor => {\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n const translatedThreatActor = t(`threatActors.${threatActor}`);\n return (\n <Text as=\"p\" variant=\"body-large\" key={threatActor}>\n {translatedThreatActor}\n </Text>\n );\n })\n ) : (\n <Text variant=\"body-large\" style={{ fontStyle: 'italic' }}>\n {t('dictionary.emptyField', {\n field: t('dictionary.threatActors').toLowerCase(),\n })}\n </Text>\n )}\n </Box>\n\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n style={{ paddingBottom: '0.4rem', fontWeight: '700' }}\n >\n {t('dictionary.vulnerabilities')}\n </Text>\n {scenario.vulnerabilities.length > 0 ? (\n scenario.vulnerabilities.map(vulnerability => {\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n const translatedVulnerability = t(\n `vulnerabilities.${vulnerability}`,\n );\n return (\n <Text variant=\"body-large\" as=\"p\" key={vulnerability}>\n {translatedVulnerability}\n </Text>\n );\n })\n ) : (\n <Text variant=\"body-large\" style={{ fontStyle: 'italic' }}>\n {t('dictionary.emptyField', {\n field: t('dictionary.vulnerabilities').toLowerCase(),\n })}\n </Text>\n )}\n </Box>\n </Box>\n </Paper>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAUO,SAAS,YAAA,GAAe;AAC7B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,WAAA,EAAY;AAEjC,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,SAAA,
|
|
1
|
+
{"version":3,"file":"ScopeSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ScopeSection.tsx"],"sourcesContent":["import { pluginRiScTranslationRef } from '../../../utils/translations';\nimport Divider from '@mui/material/Divider';\nimport Paper from '@mui/material/Paper';\nimport Box from '@mui/material/Box';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { useScenario } from '../../../contexts/ScenarioContext';\nimport styles from '../scenarioDrawer.module.css';\nimport { Markdown } from '../../common/Markdown';\nimport { Text } from '@backstage/ui';\n\nexport function ScopeSection() {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n return (\n <Paper className={styles.section}>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('scenarioDrawer.title')}\n </Text>\n\n <Text variant=\"title-medium\" style={{ fontWeight: '700' }}>\n {scenario.title}\n </Text>\n\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n weight=\"bold\"\n style={{ paddingBottom: '0.4rem' }}\n >\n {t('dictionary.description')}\n </Text>\n {scenario.description ? (\n <Markdown description={scenario.description} />\n ) : (\n <Text variant=\"body-large\" style={{ fontStyle: 'italic' }}>\n {t('dictionary.emptyField', {\n field: t('dictionary.description').toLowerCase(),\n })}{' '}\n </Text>\n )}\n </Box>\n\n <Divider />\n\n <Box sx={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 2 }}>\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n style={{ paddingBottom: '0.4rem', fontWeight: '700' }}\n >\n {t('dictionary.threatActors')}\n </Text>\n {scenario.threatActors.length > 0 ? (\n scenario.threatActors.map(threatActor => {\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n const translatedThreatActor = t(`threatActors.${threatActor}`);\n return (\n <Text as=\"p\" variant=\"body-large\" key={threatActor}>\n {translatedThreatActor}\n </Text>\n );\n })\n ) : (\n <Text variant=\"body-large\" style={{ fontStyle: 'italic' }}>\n {t('dictionary.emptyField', {\n field: t('dictionary.threatActors').toLowerCase(),\n })}\n </Text>\n )}\n </Box>\n\n <Box>\n <Text\n as=\"p\"\n variant=\"body-medium\"\n style={{ paddingBottom: '0.4rem', fontWeight: '700' }}\n >\n {t('dictionary.vulnerabilities')}\n </Text>\n {scenario.vulnerabilities.length > 0 ? (\n scenario.vulnerabilities.map(vulnerability => {\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n const translatedVulnerability = t(\n `vulnerabilities.${vulnerability}`,\n );\n return (\n <Text variant=\"body-large\" as=\"p\" key={vulnerability}>\n {translatedVulnerability}\n </Text>\n );\n })\n ) : (\n <Text variant=\"body-large\" style={{ fontStyle: 'italic' }}>\n {t('dictionary.emptyField', {\n field: t('dictionary.vulnerabilities').toLowerCase(),\n })}\n </Text>\n )}\n </Box>\n </Box>\n </Paper>\n );\n}\n"],"names":["styles"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".
|
|
4
|
-
var
|
|
3
|
+
var css_248z = ".scenarioDrawer_section__f30b5ac44d {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n padding: 16px;\n position: relative;\n}\n\n.scenarioDrawer_riscSection__f30b5ac44d {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n gap: 16px;\n width: 100%;\n padding: 16px;\n position: relative;\n box-shadow: none !important;\n}\n\n.scenarioDrawer_headerSection__f30b5ac44d {\n display: flex;\n flex-direction: column;\n gap: 4px;\n width: 100%;\n}\n\n.scenarioDrawer_selectSection__f30b5ac44d {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 24px;\n row-gap: 16px;\n}\n\n.scenarioDrawer_deleteConfirmationDialog__f30b5ac44d {\n width: 500px;\n padding: 16px;\n}\n\n.scenarioDrawer_deleteConfirmationDialogBody__f30b5ac44d {\n display: flex;\n justify-content: space-between;\n}\n\n.scenarioDrawer_topButtons__f30b5ac44d {\n display: flex;\n gap: 16px;\n margin-left: auto;\n}\n\n.scenarioDrawer_bottomButtons__f30b5ac44d {\n display: flex;\n gap: 16px;\n}\n\n.scenarioDrawer_spinner__f30b5ac44d {\n margin-left: 8px;\n color: inherit;\n}\n";
|
|
4
|
+
var drawerStyles = {"section":"scenarioDrawer_section__f30b5ac44d","riscSection":"scenarioDrawer_riscSection__f30b5ac44d","headerSection":"scenarioDrawer_headerSection__f30b5ac44d","selectSection":"scenarioDrawer_selectSection__f30b5ac44d","deleteConfirmationDialog":"scenarioDrawer_deleteConfirmationDialog__f30b5ac44d","topButtons":"scenarioDrawer_topButtons__f30b5ac44d","bottomButtons":"scenarioDrawer_bottomButtons__f30b5ac44d","spinner":"scenarioDrawer_spinner__f30b5ac44d"};
|
|
5
5
|
styleInject(css_248z);
|
|
6
6
|
|
|
7
|
-
export {
|
|
7
|
+
export { drawerStyles as default };
|
|
8
8
|
//# sourceMappingURL=scenarioDrawer.module.css.esm.js.map
|
|
@@ -22,6 +22,7 @@ import { useSearchParams } from 'react-router-dom';
|
|
|
22
22
|
import { validateRemainingRiskNotHigher, getAlertSeverity } from '../../utils/utilityfunctions.esm.js';
|
|
23
23
|
import { Flex, Text, Button } from '@backstage/ui';
|
|
24
24
|
import { useBackstageContext } from '../../contexts/BackstageContext.esm.js';
|
|
25
|
+
import styles from './ScenarioWizard.module.css.esm.js';
|
|
25
26
|
|
|
26
27
|
function ScenarioWizard({ step }) {
|
|
27
28
|
const { profileInfo } = useBackstageContext();
|
|
@@ -101,81 +102,70 @@ function ScenarioWizard({ step }) {
|
|
|
101
102
|
measure: /* @__PURE__ */ jsx(ActionsStep, { formMethods }),
|
|
102
103
|
restRisk: /* @__PURE__ */ jsx(RiskStep, { formMethods, riskType: "remainingRisk" })
|
|
103
104
|
};
|
|
104
|
-
return /* @__PURE__ */ jsxs(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
105
|
+
return /* @__PURE__ */ jsxs(Container, { maxWidth: "md", className: styles.container, children: [
|
|
106
|
+
/* @__PURE__ */ jsxs(Flex, { justify: "between", children: [
|
|
107
|
+
/* @__PURE__ */ jsx(Text, { variant: "title-medium", weight: "bold", children: t("scenarioDrawer.newTitle") }),
|
|
108
|
+
/* @__PURE__ */ jsx(Button, { size: "medium", variant: "secondary", onClick: handleCloseStepper, children: t("dictionary.cancel") })
|
|
109
|
+
] }),
|
|
110
|
+
/* @__PURE__ */ jsx(
|
|
111
|
+
Stepper,
|
|
112
|
+
{
|
|
113
|
+
activeStep: scenarioWizardSteps.indexOf(step),
|
|
114
|
+
alternativeLabel: true,
|
|
115
|
+
nonLinear: true,
|
|
116
|
+
children: scenarioWizardSteps.map((wizardStep) => /* @__PURE__ */ jsx(Step, { completed: false, children: /* @__PURE__ */ jsx(StepButton, { onClick: () => selectStep(wizardStep), children: /* @__PURE__ */ jsx(Text, { children: t(`dictionary.${wizardStep}`) }) }) }, wizardStep))
|
|
117
|
+
}
|
|
118
|
+
),
|
|
119
|
+
/* @__PURE__ */ jsx(Divider, {}),
|
|
120
|
+
isFetching ? /* @__PURE__ */ jsx(Spinner, { size: 80 }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
121
|
+
stepComponents[step],
|
|
122
|
+
response && /* @__PURE__ */ jsx(Alert, { severity: getAlertSeverity(updateStatus, response), children: /* @__PURE__ */ jsx(Text, { variant: "body-large", children: response.statusMessage }) }),
|
|
123
|
+
riskValidationError.length > 0 && /* @__PURE__ */ jsx(Alert, { severity: "error", children: riskValidationError.map((line, index) => /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Text, { variant: "body-large", children: line }) }, index)) }),
|
|
124
|
+
/* @__PURE__ */ jsxs(Flex, { justify: isFirstStep ? "end" : "between", children: [
|
|
125
|
+
!isFirstStep && /* @__PURE__ */ jsx(
|
|
126
|
+
Button,
|
|
120
127
|
{
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
size: "medium",
|
|
129
|
+
variant: "tertiary",
|
|
130
|
+
onClick: previousStep,
|
|
131
|
+
iconStart: /* @__PURE__ */ jsx(KeyboardArrowLeft, {}),
|
|
132
|
+
children: t("dictionary.previous")
|
|
125
133
|
}
|
|
126
134
|
),
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
/* @__PURE__ */ jsx(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
children: t("dictionary.next")
|
|
162
|
-
}
|
|
163
|
-
)
|
|
164
|
-
] })
|
|
165
|
-
] })
|
|
166
|
-
] }),
|
|
167
|
-
/* @__PURE__ */ jsx(
|
|
168
|
-
CloseConfirmation,
|
|
169
|
-
{
|
|
170
|
-
isOpen: showCloseConfirmation,
|
|
171
|
-
onCloseDialog: () => setShowCloseConfirmation(false),
|
|
172
|
-
close,
|
|
173
|
-
save: onSubmit
|
|
174
|
-
}
|
|
175
|
-
)
|
|
176
|
-
]
|
|
177
|
-
}
|
|
178
|
-
);
|
|
135
|
+
/* @__PURE__ */ jsxs(Flex, { gap: "16px", children: [
|
|
136
|
+
/* @__PURE__ */ jsx(
|
|
137
|
+
Button,
|
|
138
|
+
{
|
|
139
|
+
variant: isLastStep ? "primary" : "secondary",
|
|
140
|
+
onClick: onSubmit,
|
|
141
|
+
size: "medium",
|
|
142
|
+
isDisabled: !isDirty || updateStatus.isLoading,
|
|
143
|
+
children: isLastStep ? t("scenarioDrawer.createNewScenario") : t("scenarioDrawer.saveAsDraft")
|
|
144
|
+
}
|
|
145
|
+
),
|
|
146
|
+
!isLastStep && /* @__PURE__ */ jsx(
|
|
147
|
+
Button,
|
|
148
|
+
{
|
|
149
|
+
variant: "primary",
|
|
150
|
+
size: "medium",
|
|
151
|
+
onClick: nextStep,
|
|
152
|
+
iconEnd: /* @__PURE__ */ jsx(KeyboardArrowRight, {}),
|
|
153
|
+
children: t("dictionary.next")
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
] })
|
|
157
|
+
] })
|
|
158
|
+
] }),
|
|
159
|
+
/* @__PURE__ */ jsx(
|
|
160
|
+
CloseConfirmation,
|
|
161
|
+
{
|
|
162
|
+
isOpen: showCloseConfirmation,
|
|
163
|
+
onCloseDialog: () => setShowCloseConfirmation(false),
|
|
164
|
+
close,
|
|
165
|
+
save: onSubmit
|
|
166
|
+
}
|
|
167
|
+
)
|
|
168
|
+
] });
|
|
179
169
|
}
|
|
180
170
|
|
|
181
171
|
export { ScenarioWizard };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioWizard.esm.js","sources":["../../../src/components/scenarioWizard/ScenarioWizard.tsx"],"sourcesContent":["import { ReactNode, useCallback, useState } from 'react';\nimport Step from '@mui/material/Step';\nimport StepButton from '@mui/material/StepButton';\nimport Stepper from '@mui/material/Stepper';\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';\nimport { ScenarioStep } from './steps/ScenarioStep';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Divider from '@mui/material/Divider';\nimport { ActionsStep } from './steps/ActionsStep';\nimport { RiskStep } from './steps/RiskStep';\nimport Alert from '@mui/material/Alert';\nimport { Spinner } from '../common/Spinner';\nimport { CloseConfirmation } from './components/CloseConfirmation';\nimport {\n scenarioWizardSteps,\n ScenarioWizardSteps,\n useScenario,\n} from '../../contexts/ScenarioContext';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Container from '@mui/material/Container';\nimport { useForm } from 'react-hook-form';\nimport { FormScenario, Scenario } from '../../utils/types';\nimport { useSearchParams } from 'react-router-dom';\nimport {\n getAlertSeverity,\n validateRemainingRiskNotHigher,\n} from '../../utils/utilityfunctions';\nimport { Text, Button, Flex } from '@backstage/ui';\nimport { useBackstageContext } from '../../contexts/BackstageContext.tsx';\n\nexport function ScenarioWizard({ step }: { step: ScenarioWizardSteps }) {\n const { profileInfo } = useBackstageContext();\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { isFetching, response, updateStatus } = useRiScs();\n const [, setSearchParams] = useSearchParams();\n\n const { scenario, emptyFormScenario, closeScenarioForm, submitNewScenario } =\n useScenario();\n\n const [showCloseConfirmation, setShowCloseConfirmation] = useState(false);\n const [riskValidationError, setRiskValidationError] = useState<string[]>([]);\n\n const formMethods = useForm<FormScenario>({\n defaultValues: emptyFormScenario(scenario),\n mode: 'onBlur',\n });\n\n const { isDirty, isValid } = formMethods.formState;\n\n const onSubmit = formMethods.handleSubmit((data: FormScenario) => {\n const validation = validateRemainingRiskNotHigher(data, t);\n\n if (!validation.isValid) {\n setRiskValidationError(validation.errors);\n return;\n }\n\n setRiskValidationError([]);\n\n const submitScenario: Scenario = {\n ...data,\n risk: {\n ...data.risk,\n probability: Number(data.risk.probability),\n consequence: Number(data.risk.consequence),\n },\n remainingRisk: {\n ...data.remainingRisk,\n probability: Number(data.remainingRisk.probability),\n consequence: Number(data.remainingRisk.consequence),\n },\n };\n\n formMethods.trigger();\n\n if (isValid) {\n submitNewScenario(submitScenario, profileInfo, () => closeScenarioForm());\n } else {\n formMethods.trigger();\n }\n });\n\n const close = useCallback(() => {\n closeScenarioForm();\n setShowCloseConfirmation(false);\n }, [closeScenarioForm]);\n\n function handleCloseStepper() {\n if (isDirty) {\n setShowCloseConfirmation(true);\n } else {\n close();\n }\n }\n\n function selectStep(newStep: ScenarioWizardSteps) {\n if (isValid) {\n setSearchParams({ step: newStep });\n } else {\n formMethods.trigger();\n }\n }\n\n function nextStep() {\n const currentIndex = scenarioWizardSteps.indexOf(step);\n if (currentIndex < scenarioWizardSteps.length - 1) {\n selectStep(scenarioWizardSteps[currentIndex + 1]);\n }\n }\n\n function previousStep() {\n const currentIndex = scenarioWizardSteps.indexOf(step);\n if (currentIndex > 0) {\n selectStep(scenarioWizardSteps[currentIndex - 1]);\n }\n }\n\n const isFirstStep = step === scenarioWizardSteps.at(0);\n const isLastStep = step === scenarioWizardSteps.at(-1);\n\n const stepComponents: Record<ScenarioWizardSteps, ReactNode> = {\n scenario: <ScenarioStep formMethods={formMethods} />,\n initialRisk: <RiskStep formMethods={formMethods} riskType=\"risk\" />,\n measure: <ActionsStep formMethods={formMethods} />,\n restRisk: <RiskStep formMethods={formMethods} riskType=\"remainingRisk\" />,\n };\n\n return (\n <Container\n maxWidth=\"md\"\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '32px',\n }}\n >\n <Flex justify=\"between\">\n <Text variant=\"title-medium\" weight=\"bold\">\n {t('scenarioDrawer.newTitle')}\n </Text>\n <Button size=\"medium\" variant=\"secondary\" onClick={handleCloseStepper}>\n {t('dictionary.cancel')}\n </Button>\n </Flex>\n <Stepper\n activeStep={scenarioWizardSteps.indexOf(step)}\n alternativeLabel\n nonLinear\n >\n {scenarioWizardSteps.map(wizardStep => (\n <Step key={wizardStep} completed={false}>\n <StepButton onClick={() => selectStep(wizardStep)}>\n <Text>{t(`dictionary.${wizardStep}`)}</Text>\n </StepButton>\n </Step>\n ))}\n </Stepper>\n <Divider />\n {isFetching ? (\n <Spinner size={80} />\n ) : (\n <>\n {stepComponents[step]}\n\n {response && (\n <Alert severity={getAlertSeverity(updateStatus, response)}>\n <Text variant=\"body-large\">{response.statusMessage}</Text>\n </Alert>\n )}\n {riskValidationError.length > 0 && (\n <Alert severity=\"error\">\n {riskValidationError.map((line, index) => (\n <div key={index}>\n <Text variant=\"body-large\">{line}</Text>\n </div>\n ))}\n </Alert>\n )}\n <Flex justify={isFirstStep ? 'end' : 'between'}>\n {!isFirstStep && (\n <Button\n size=\"medium\"\n variant=\"tertiary\"\n onClick={previousStep}\n iconStart={<KeyboardArrowLeft />}\n >\n {t('dictionary.previous')}\n </Button>\n )}\n <Flex gap=\"16px\">\n <Button\n variant={isLastStep ? 'primary' : 'secondary'}\n onClick={onSubmit}\n size=\"medium\"\n isDisabled={!isDirty || updateStatus.isLoading}\n >\n {isLastStep\n ? t('scenarioDrawer.createNewScenario')\n : t('scenarioDrawer.saveAsDraft')}\n </Button>\n\n {!isLastStep && (\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={nextStep}\n iconEnd={<KeyboardArrowRight />}\n >\n {t('dictionary.next')}\n </Button>\n )}\n </Flex>\n </Flex>\n </>\n )}\n <CloseConfirmation\n isOpen={showCloseConfirmation}\n onCloseDialog={() => setShowCloseConfirmation(false)}\n close={close}\n save={onSubmit}\n />\n </Container>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ScenarioWizard.esm.js","sources":["../../../src/components/scenarioWizard/ScenarioWizard.tsx"],"sourcesContent":["import { ReactNode, useCallback, useState } from 'react';\nimport Step from '@mui/material/Step';\nimport StepButton from '@mui/material/StepButton';\nimport Stepper from '@mui/material/Stepper';\nimport KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';\nimport KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';\nimport { ScenarioStep } from './steps/ScenarioStep';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Divider from '@mui/material/Divider';\nimport { ActionsStep } from './steps/ActionsStep';\nimport { RiskStep } from './steps/RiskStep';\nimport Alert from '@mui/material/Alert';\nimport { Spinner } from '../common/Spinner';\nimport { CloseConfirmation } from './components/CloseConfirmation';\nimport {\n scenarioWizardSteps,\n ScenarioWizardSteps,\n useScenario,\n} from '../../contexts/ScenarioContext';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Container from '@mui/material/Container';\nimport { useForm } from 'react-hook-form';\nimport { FormScenario, Scenario } from '../../utils/types';\nimport { useSearchParams } from 'react-router-dom';\nimport {\n getAlertSeverity,\n validateRemainingRiskNotHigher,\n} from '../../utils/utilityfunctions';\nimport { Text, Button, Flex } from '@backstage/ui';\nimport { useBackstageContext } from '../../contexts/BackstageContext.tsx';\nimport styles from './ScenarioWizard.module.css';\n\nexport function ScenarioWizard({ step }: { step: ScenarioWizardSteps }) {\n const { profileInfo } = useBackstageContext();\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { isFetching, response, updateStatus } = useRiScs();\n const [, setSearchParams] = useSearchParams();\n\n const { scenario, emptyFormScenario, closeScenarioForm, submitNewScenario } =\n useScenario();\n\n const [showCloseConfirmation, setShowCloseConfirmation] = useState(false);\n const [riskValidationError, setRiskValidationError] = useState<string[]>([]);\n\n const formMethods = useForm<FormScenario>({\n defaultValues: emptyFormScenario(scenario),\n mode: 'onBlur',\n });\n\n const { isDirty, isValid } = formMethods.formState;\n\n const onSubmit = formMethods.handleSubmit((data: FormScenario) => {\n const validation = validateRemainingRiskNotHigher(data, t);\n\n if (!validation.isValid) {\n setRiskValidationError(validation.errors);\n return;\n }\n\n setRiskValidationError([]);\n\n const submitScenario: Scenario = {\n ...data,\n risk: {\n ...data.risk,\n probability: Number(data.risk.probability),\n consequence: Number(data.risk.consequence),\n },\n remainingRisk: {\n ...data.remainingRisk,\n probability: Number(data.remainingRisk.probability),\n consequence: Number(data.remainingRisk.consequence),\n },\n };\n\n formMethods.trigger();\n\n if (isValid) {\n submitNewScenario(submitScenario, profileInfo, () => closeScenarioForm());\n } else {\n formMethods.trigger();\n }\n });\n\n const close = useCallback(() => {\n closeScenarioForm();\n setShowCloseConfirmation(false);\n }, [closeScenarioForm]);\n\n function handleCloseStepper() {\n if (isDirty) {\n setShowCloseConfirmation(true);\n } else {\n close();\n }\n }\n\n function selectStep(newStep: ScenarioWizardSteps) {\n if (isValid) {\n setSearchParams({ step: newStep });\n } else {\n formMethods.trigger();\n }\n }\n\n function nextStep() {\n const currentIndex = scenarioWizardSteps.indexOf(step);\n if (currentIndex < scenarioWizardSteps.length - 1) {\n selectStep(scenarioWizardSteps[currentIndex + 1]);\n }\n }\n\n function previousStep() {\n const currentIndex = scenarioWizardSteps.indexOf(step);\n if (currentIndex > 0) {\n selectStep(scenarioWizardSteps[currentIndex - 1]);\n }\n }\n\n const isFirstStep = step === scenarioWizardSteps.at(0);\n const isLastStep = step === scenarioWizardSteps.at(-1);\n\n const stepComponents: Record<ScenarioWizardSteps, ReactNode> = {\n scenario: <ScenarioStep formMethods={formMethods} />,\n initialRisk: <RiskStep formMethods={formMethods} riskType=\"risk\" />,\n measure: <ActionsStep formMethods={formMethods} />,\n restRisk: <RiskStep formMethods={formMethods} riskType=\"remainingRisk\" />,\n };\n\n return (\n <Container maxWidth=\"md\" className={styles.container}>\n <Flex justify=\"between\">\n <Text variant=\"title-medium\" weight=\"bold\">\n {t('scenarioDrawer.newTitle')}\n </Text>\n <Button size=\"medium\" variant=\"secondary\" onClick={handleCloseStepper}>\n {t('dictionary.cancel')}\n </Button>\n </Flex>\n <Stepper\n activeStep={scenarioWizardSteps.indexOf(step)}\n alternativeLabel\n nonLinear\n >\n {scenarioWizardSteps.map(wizardStep => (\n <Step key={wizardStep} completed={false}>\n <StepButton onClick={() => selectStep(wizardStep)}>\n <Text>{t(`dictionary.${wizardStep}`)}</Text>\n </StepButton>\n </Step>\n ))}\n </Stepper>\n <Divider />\n {isFetching ? (\n <Spinner size={80} />\n ) : (\n <>\n {stepComponents[step]}\n\n {response && (\n <Alert severity={getAlertSeverity(updateStatus, response)}>\n <Text variant=\"body-large\">{response.statusMessage}</Text>\n </Alert>\n )}\n {riskValidationError.length > 0 && (\n <Alert severity=\"error\">\n {riskValidationError.map((line, index) => (\n <div key={index}>\n <Text variant=\"body-large\">{line}</Text>\n </div>\n ))}\n </Alert>\n )}\n <Flex justify={isFirstStep ? 'end' : 'between'}>\n {!isFirstStep && (\n <Button\n size=\"medium\"\n variant=\"tertiary\"\n onClick={previousStep}\n iconStart={<KeyboardArrowLeft />}\n >\n {t('dictionary.previous')}\n </Button>\n )}\n <Flex gap=\"16px\">\n <Button\n variant={isLastStep ? 'primary' : 'secondary'}\n onClick={onSubmit}\n size=\"medium\"\n isDisabled={!isDirty || updateStatus.isLoading}\n >\n {isLastStep\n ? t('scenarioDrawer.createNewScenario')\n : t('scenarioDrawer.saveAsDraft')}\n </Button>\n\n {!isLastStep && (\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={nextStep}\n iconEnd={<KeyboardArrowRight />}\n >\n {t('dictionary.next')}\n </Button>\n )}\n </Flex>\n </Flex>\n </>\n )}\n <CloseConfirmation\n isOpen={showCloseConfirmation}\n onCloseDialog={() => setShowCloseConfirmation(false)}\n close={close}\n save={onSubmit}\n />\n </Container>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
|
|
2
2
|
|
|
3
|
-
var css_248z = ".
|
|
4
|
-
var styles = {"scenarioWizardDialog":"
|
|
3
|
+
var css_248z = ".ScenarioWizard_container__88329bea1d {\n display: flex;\n flex-direction: column;\n gap: 32px;\n}\n\n.ScenarioWizard_scenarioWizardDialog__88329bea1d {\n padding: 16px;\n}\n\n.ScenarioWizard_scenarioWizardDialogBody__88329bea1d {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 0 0 0;\n}\n";
|
|
4
|
+
var styles = {"container":"ScenarioWizard_container__88329bea1d","scenarioWizardDialog":"ScenarioWizard_scenarioWizardDialog__88329bea1d"};
|
|
5
5
|
styleInject(css_248z);
|
|
6
6
|
|
|
7
7
|
export { styles as default };
|
package/package.json
CHANGED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import styleInject from '../../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
|
|
2
|
-
|
|
3
|
-
var css_248z = ".ScenarioDrawer_deleteConfirmationDialog__62ea4bf46c {\n width: 500px;\n padding: 16px;\n}\n\n.ScenarioDrawer_deleteConfirmationDialogBody__62ea4bf46c {\n display: flex;\n justify-content: space-between;\n}\n";
|
|
4
|
-
var styles = {"deleteConfirmationDialog":"ScenarioDrawer_deleteConfirmationDialog__62ea4bf46c"};
|
|
5
|
-
styleInject(css_248z);
|
|
6
|
-
|
|
7
|
-
export { styles as default };
|
|
8
|
-
//# sourceMappingURL=ScenarioDrawer.module.css.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioDrawer.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|