@kartverket/backstage-plugin-risk-scorecard 3.9.3 → 3.9.4

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.
@@ -17,7 +17,7 @@ function MatrixDialog({
17
17
  close
18
18
  }) {
19
19
  const { t } = useTranslationRef(pluginRiScTranslationRef);
20
- return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "lg", open, onClose: close, children: [
20
+ return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "lg", open, onClose: close, disablePortal: true, children: [
21
21
  /* @__PURE__ */ jsx(DialogTitle, { children: t("scenarioDrawer.riskMatrixModal.title") }),
22
22
  /* @__PURE__ */ jsx(
23
23
  IconButton,
@@ -1 +1 @@
1
- {"version":3,"file":"MatrixDialog.esm.js","sources":["../../../src/components/riScDialog/MatrixDialog.tsx"],"sourcesContent":["import { ConsequenceTableInfoWithHeaders } from '../scenarioWizard/components/ConsequenceTable';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { ProbabilityTableInfoWithHeaders } from '../scenarioWizard/components/ProbabilityTable';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport { Button, Text } from '@backstage/ui';\n\nexport function MatrixDialog({\n open,\n close,\n}: {\n open: boolean;\n close: () => void;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Dialog maxWidth=\"lg\" open={open} onClose={close}>\n <DialogTitle>{t('scenarioDrawer.riskMatrixModal.title')}</DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={close}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n <DialogContent>\n <Text as=\"p\" variant=\"body-large\" style={{ paddingBottom: '32px' }}>\n {t('scenarioStepper.initialRiskStep.subtitle')}\n </Text>\n <Box>\n <Text\n variant=\"title-x-small\"\n weight=\"bold\"\n style={{ paddingBottom: '4px' }}\n >\n {t('dictionary.probability')}\n </Text>\n </Box>\n <ProbabilityTableInfoWithHeaders />\n <Box>\n <Text\n variant=\"title-x-small\"\n weight=\"bold\"\n style={{ paddingTop: '32px', paddingBottom: '4px' }}\n >\n {t('dictionary.consequence')}\n </Text>\n </Box>\n <ConsequenceTableInfoWithHeaders />\n </DialogContent>\n <DialogActions>\n <Button onClick={close}>{t('dictionary.close')}</Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAaO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,4BACG,MAAA,EAAA,EAAO,QAAA,EAAS,IAAA,EAAK,IAAA,EAAY,SAAS,KAAA,EACzC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,CAAA,CAAE,sCAAsC,CAAA,EAAE,CAAA;AAAA,oBACxD,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAW,OAAA;AAAA,QACX,OAAA,EAAS,KAAA;AAAA,QACT,EAAA,EAAI;AAAA,UACF,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,CAAA;AAAA,UACP,GAAA,EAAK,CAAA;AAAA,UACL,KAAA,EAAO,CAAA,KAAA,KAAS,KAAA,CAAM,OAAA,CAAQ,KAAK,GAAG;AAAA,SACxC;AAAA,QAEA,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA,KACb;AAAA,yBACC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,OAAA,EAAQ,YAAA,EAAa,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO,EAC9D,QAAA,EAAA,CAAA,CAAE,0CAA0C,CAAA,EAC/C,CAAA;AAAA,0BACC,GAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,eAAA;AAAA,UACR,MAAA,EAAO,MAAA;AAAA,UACP,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAM;AAAA,UAE7B,YAAE,wBAAwB;AAAA;AAAA,OAC7B,EACF,CAAA;AAAA,0BACC,+BAAA,EAAA,EAAgC,CAAA;AAAA,0BAChC,GAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,eAAA;AAAA,UACR,MAAA,EAAO,MAAA;AAAA,UACP,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,eAAe,KAAA,EAAM;AAAA,UAEjD,YAAE,wBAAwB;AAAA;AAAA,OAC7B,EACF,CAAA;AAAA,0BACC,+BAAA,EAAA,EAAgC;AAAA,KAAA,EACnC,CAAA;AAAA,oBACA,GAAA,CAAC,iBACC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAS,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA,EACjD;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"MatrixDialog.esm.js","sources":["../../../src/components/riScDialog/MatrixDialog.tsx"],"sourcesContent":["import { ConsequenceTableInfoWithHeaders } from '../scenarioWizard/components/ConsequenceTable';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { ProbabilityTableInfoWithHeaders } from '../scenarioWizard/components/ProbabilityTable';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport { Button, Text } from '@backstage/ui';\n\nexport function MatrixDialog({\n open,\n close,\n}: {\n open: boolean;\n close: () => void;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Dialog maxWidth=\"lg\" open={open} onClose={close} disablePortal>\n <DialogTitle>{t('scenarioDrawer.riskMatrixModal.title')}</DialogTitle>\n <IconButton\n aria-label=\"close\"\n onClick={close}\n sx={{\n position: 'absolute',\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500],\n }}\n >\n <CloseIcon />\n </IconButton>\n <DialogContent>\n <Text as=\"p\" variant=\"body-large\" style={{ paddingBottom: '32px' }}>\n {t('scenarioStepper.initialRiskStep.subtitle')}\n </Text>\n <Box>\n <Text\n variant=\"title-x-small\"\n weight=\"bold\"\n style={{ paddingBottom: '4px' }}\n >\n {t('dictionary.probability')}\n </Text>\n </Box>\n <ProbabilityTableInfoWithHeaders />\n <Box>\n <Text\n variant=\"title-x-small\"\n weight=\"bold\"\n style={{ paddingTop: '32px', paddingBottom: '4px' }}\n >\n {t('dictionary.consequence')}\n </Text>\n </Box>\n <ConsequenceTableInfoWithHeaders />\n </DialogContent>\n <DialogActions>\n <Button onClick={close}>{t('dictionary.close')}</Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAaO,SAAS,YAAA,CAAa;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,IAAA,CAAC,UAAO,QAAA,EAAS,IAAA,EAAK,MAAY,OAAA,EAAS,KAAA,EAAO,eAAa,IAAA,EAC7D,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,CAAA,CAAE,sCAAsC,CAAA,EAAE,CAAA;AAAA,oBACxD,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAW,OAAA;AAAA,QACX,OAAA,EAAS,KAAA;AAAA,QACT,EAAA,EAAI;AAAA,UACF,QAAA,EAAU,UAAA;AAAA,UACV,KAAA,EAAO,CAAA;AAAA,UACP,GAAA,EAAK,CAAA;AAAA,UACL,KAAA,EAAO,CAAA,KAAA,KAAS,KAAA,CAAM,OAAA,CAAQ,KAAK,GAAG;AAAA,SACxC;AAAA,QAEA,8BAAC,SAAA,EAAA,EAAU;AAAA;AAAA,KACb;AAAA,yBACC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,GAAA,EAAI,OAAA,EAAQ,YAAA,EAAa,KAAA,EAAO,EAAE,aAAA,EAAe,MAAA,EAAO,EAC9D,QAAA,EAAA,CAAA,CAAE,0CAA0C,CAAA,EAC/C,CAAA;AAAA,0BACC,GAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,eAAA;AAAA,UACR,MAAA,EAAO,MAAA;AAAA,UACP,KAAA,EAAO,EAAE,aAAA,EAAe,KAAA,EAAM;AAAA,UAE7B,YAAE,wBAAwB;AAAA;AAAA,OAC7B,EACF,CAAA;AAAA,0BACC,+BAAA,EAAA,EAAgC,CAAA;AAAA,0BAChC,GAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,eAAA;AAAA,UACR,MAAA,EAAO,MAAA;AAAA,UACP,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,eAAe,KAAA,EAAM;AAAA,UAEjD,YAAE,wBAAwB;AAAA;AAAA,OAC7B,EACF,CAAA;AAAA,0BACC,+BAAA,EAAA,EAAgC;AAAA,KAAA,EACnC,CAAA;AAAA,oBACA,GAAA,CAAC,iBACC,QAAA,kBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAS,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA,EACjD;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -133,7 +133,7 @@ function RiScDialog({
133
133
  onClose();
134
134
  });
135
135
  if (dialogState === 1 /* Create */) {
136
- return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, children: [
136
+ return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, disablePortal: true, children: [
137
137
  /* @__PURE__ */ jsx(DialogTitle, { children: t("rosDialog.titleNew") }),
138
138
  /* @__PURE__ */ jsx(RiScStepper, { activeStep, children: /* @__PURE__ */ jsxs(
139
139
  DialogContent,
@@ -199,7 +199,7 @@ function RiScDialog({
199
199
  ] });
200
200
  }
201
201
  if (dialogState === 5 /* Delete */) {
202
- return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, children: [
202
+ return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, disablePortal: true, children: [
203
203
  /* @__PURE__ */ jsx(DialogTitle, { children: t("deleteDialog.title") }),
204
204
  /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsx(DialogContent, { children: t("deleteDialog.confirmationMessage") }) }),
205
205
  /* @__PURE__ */ jsxs(DialogActions, { children: [
@@ -209,7 +209,7 @@ function RiScDialog({
209
209
  ] });
210
210
  }
211
211
  if (dialogState === 2 /* EditRiscInfo */) {
212
- return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, children: [
212
+ return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, disablePortal: true, children: [
213
213
  /* @__PURE__ */ jsx(DialogTitle, { children: /* @__PURE__ */ jsx(Flex, { direction: "column", children: t("rosDialog.titleEdit") }) }),
214
214
  /* @__PURE__ */ jsx(
215
215
  DialogContent,
@@ -256,7 +256,7 @@ function RiScDialog({
256
256
  ] });
257
257
  }
258
258
  if (dialogState === 4 /* EditEncryption */) {
259
- return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, children: [
259
+ return /* @__PURE__ */ jsxs(Dialog, { open: true, onClose, disablePortal: true, children: [
260
260
  /* @__PURE__ */ jsx(DialogTitle, { children: t("rosDialog.editEncryption") }),
261
261
  /* @__PURE__ */ jsx(
262
262
  DialogContent,
@@ -1 +1 @@
1
- {"version":3,"file":"RiScDialog.esm.js","sources":["../../../src/components/riScDialog/RiScDialog.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { DefaultRiScType, RiScWithMetadata } from '../../utils/types';\nimport { emptyRiSc, isDeeplyEqual } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { useForm } from 'react-hook-form';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../common/mixins';\nimport { Step, StepLabel, Stepper } from '@mui/material';\nimport ConfigEncryptionDialog from './ConfigEncryptionDialog';\nimport ConfigRiscInfo from './ConfigRiscInfo';\nimport ConfigInitialRisc from './ConfigInitialRisc';\nimport { Flex, Box, Button } from '@backstage/ui';\n\nexport enum RiScDialogStates {\n Closed = 0,\n Create = 1,\n EditRiscInfo = 2,\n SelectInitialRisc = 3,\n EditEncryption = 4,\n Delete = 5,\n}\n\ninterface RiScDialogProps {\n onClose: () => void;\n dialogState: RiScDialogStates;\n onDelete: () => void;\n}\n\nfunction RiScStepper({\n children,\n activeStep,\n}: {\n children: React.ReactNode;\n activeStep: number;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const steps = [\n t('rosDialog.initialRiscTitle'),\n t('rosDialog.stepRiscDetails'),\n t('rosDialog.stepEncryption'),\n ];\n return (\n <Box style={{ width: '100%', padding: '24px' }}>\n <Stepper activeStep={activeStep} alternativeLabel>\n {steps.map(label => (\n <Step key={label}>\n <StepLabel>{label}</StepLabel>\n </Step>\n ))}\n </Stepper>\n {children}\n </Box>\n );\n}\n\nexport function RiScDialog({\n onClose,\n dialogState,\n onDelete,\n}: RiScDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n createNewRiSc,\n deleteRiSc,\n updateRiSc,\n gcpCryptoKeys,\n } = useRiScs();\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n setValue,\n } = useForm<RiScWithMetadata>({\n defaultValues:\n dialogState === RiScDialogStates.EditRiscInfo ||\n dialogState === RiScDialogStates.EditEncryption\n ? selectedRiSc!\n : {\n content: emptyRiSc(),\n sopsConfig: {\n shamir_threshold: 2,\n },\n },\n mode: 'onBlur',\n });\n\n const [activeStep, setActiveStep] = useState(0);\n\n const [switchOn, setSwitchOn] = useState(false);\n\n const [selectedRiScType, setSelectedRiScType] = useState<DefaultRiScType>(\n DefaultRiScType.Standard,\n );\n\n const handleNext = handleSubmit(\n () => {\n if (activeStep === 0) {\n setActiveStep(1);\n }\n if (activeStep === 1) {\n setActiveStep(2);\n }\n },\n // Continue to step 1 even if there are errors, as long as there are no errors in step 0 (the content)\n validationErrors => {\n if (activeStep === 0 && validationErrors.content === undefined) {\n setActiveStep(1);\n }\n },\n );\n\n function handleBack() {\n if (activeStep === 1) {\n setActiveStep(0);\n }\n if (activeStep === 2) {\n setActiveStep(1);\n }\n }\n\n const handleFinish = handleSubmit((data: RiScWithMetadata) => {\n if (dialogState === RiScDialogStates.Create) {\n createNewRiSc(data, switchOn, [selectedRiScType]);\n } else if (dialogState === RiScDialogStates.Delete) {\n deleteRiSc(() =>\n selectRiSc(riScs && riScs.length > 0 ? riScs[0].id : ''),\n );\n } else {\n // Do manual comparison of contents, as the sopsConfig field contains many values from the backend that are not\n // used or set by the frontend.\n // Check if the additional Age keys are equal, using the single important field, `recipient`\n const areAgeKeysEqual = isDeeplyEqual(\n data.sopsConfig.age?.map(age => age.recipient).sort(),\n selectedRiSc?.sopsConfig.age?.map(age => age.recipient).sort(),\n );\n\n // Check if the GCP keys are equal, using the two important fields, `resource_id` and `created_at`.\n // Comparison uses dictionaries, where resource ids are keys and created at dates are values\n const areGCPKeysEqual = isDeeplyEqual(\n Object.fromEntries(\n data.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n Object.fromEntries(\n selectedRiSc?.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n );\n\n // Only update the risc if it has changed\n if (\n !isDeeplyEqual(data, selectedRiSc, ['sopsConfig']) ||\n !areGCPKeysEqual ||\n !areAgeKeysEqual\n ) {\n updateRiSc(data);\n }\n }\n onClose();\n });\n\n if (dialogState === RiScDialogStates.Create) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.titleNew')}</DialogTitle>\n <RiScStepper activeStep={activeStep}>\n <DialogContent\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n paddingX: 1,\n paddingY: 0.5,\n }}\n >\n {activeStep === 0 && (\n <ConfigInitialRisc\n dialogState={dialogState}\n switchOn={switchOn}\n setSwitchOn={setSwitchOn}\n setValue={setValue}\n selectedRiScType={selectedRiScType}\n setSelectedRiScType={setSelectedRiScType}\n />\n )}\n {activeStep === 1 && (\n <ConfigRiscInfo\n dialogState={dialogState}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n )}\n {activeStep === 2 && (\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n )}\n </DialogContent>\n </RiScStepper>\n <DialogActions sx={dialogActions}>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Flex>\n <Button\n size=\"medium\"\n variant=\"secondary\"\n isDisabled={activeStep === 0}\n onClick={handleBack}\n >\n {t('dictionary.previous')}\n </Button>\n {activeStep < 2 ? (\n <Button size=\"medium\" variant=\"primary\" onClick={handleNext}>\n {t('dictionary.next')}\n </Button>\n ) : (\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n )}\n </Flex>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.Delete) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('deleteDialog.title')}</DialogTitle>\n <DialogContent>\n <DialogContent>{t('deleteDialog.confirmationMessage')}</DialogContent>\n </DialogContent>\n <DialogActions>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.delete')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditRiscInfo) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>\n <Flex direction=\"column\">{t('rosDialog.titleEdit')}</Flex>\n </DialogTitle>\n <DialogContent\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n width: '100%',\n paddingX: 4,\n paddingY: 3,\n }}\n >\n <ConfigRiscInfo\n dialogState={dialogState}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n size=\"medium\"\n variant=\"tertiary\"\n onClick={onDelete}\n style={{ color: '#d32f2f', paddingLeft: 0 }}\n >\n <i className=\"ri-delete-bin-line\" style={{ fontSize: '16px' }} />\n {t('contentHeader.deleteButton')}\n </Button>\n <Flex>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </Flex>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditEncryption) {\n return (\n <Dialog open={true} onClose={onClose}>\n <DialogTitle>{t('rosDialog.editEncryption')}</DialogTitle>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n sopsData={selectedRiSc?.sopsConfig}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n return null;\n}\n"],"names":["RiScDialogStates"],"mappings":"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"}
1
+ {"version":3,"file":"RiScDialog.esm.js","sources":["../../../src/components/riScDialog/RiScDialog.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { DefaultRiScType, RiScWithMetadata } from '../../utils/types';\nimport { emptyRiSc, isDeeplyEqual } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport { useForm } from 'react-hook-form';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../common/mixins';\nimport { Step, StepLabel, Stepper } from '@mui/material';\nimport ConfigEncryptionDialog from './ConfigEncryptionDialog';\nimport ConfigRiscInfo from './ConfigRiscInfo';\nimport ConfigInitialRisc from './ConfigInitialRisc';\nimport { Flex, Box, Button } from '@backstage/ui';\n\nexport enum RiScDialogStates {\n Closed = 0,\n Create = 1,\n EditRiscInfo = 2,\n SelectInitialRisc = 3,\n EditEncryption = 4,\n Delete = 5,\n}\n\ninterface RiScDialogProps {\n onClose: () => void;\n dialogState: RiScDialogStates;\n onDelete: () => void;\n}\n\nfunction RiScStepper({\n children,\n activeStep,\n}: {\n children: React.ReactNode;\n activeStep: number;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const steps = [\n t('rosDialog.initialRiscTitle'),\n t('rosDialog.stepRiscDetails'),\n t('rosDialog.stepEncryption'),\n ];\n return (\n <Box style={{ width: '100%', padding: '24px' }}>\n <Stepper activeStep={activeStep} alternativeLabel>\n {steps.map(label => (\n <Step key={label}>\n <StepLabel>{label}</StepLabel>\n </Step>\n ))}\n </Stepper>\n {children}\n </Box>\n );\n}\n\nexport function RiScDialog({\n onClose,\n dialogState,\n onDelete,\n}: RiScDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n createNewRiSc,\n deleteRiSc,\n updateRiSc,\n gcpCryptoKeys,\n } = useRiScs();\n const {\n register,\n handleSubmit,\n watch,\n formState: { errors },\n setValue,\n } = useForm<RiScWithMetadata>({\n defaultValues:\n dialogState === RiScDialogStates.EditRiscInfo ||\n dialogState === RiScDialogStates.EditEncryption\n ? selectedRiSc!\n : {\n content: emptyRiSc(),\n sopsConfig: {\n shamir_threshold: 2,\n },\n },\n mode: 'onBlur',\n });\n\n const [activeStep, setActiveStep] = useState(0);\n\n const [switchOn, setSwitchOn] = useState(false);\n\n const [selectedRiScType, setSelectedRiScType] = useState<DefaultRiScType>(\n DefaultRiScType.Standard,\n );\n\n const handleNext = handleSubmit(\n () => {\n if (activeStep === 0) {\n setActiveStep(1);\n }\n if (activeStep === 1) {\n setActiveStep(2);\n }\n },\n // Continue to step 1 even if there are errors, as long as there are no errors in step 0 (the content)\n validationErrors => {\n if (activeStep === 0 && validationErrors.content === undefined) {\n setActiveStep(1);\n }\n },\n );\n\n function handleBack() {\n if (activeStep === 1) {\n setActiveStep(0);\n }\n if (activeStep === 2) {\n setActiveStep(1);\n }\n }\n\n const handleFinish = handleSubmit((data: RiScWithMetadata) => {\n if (dialogState === RiScDialogStates.Create) {\n createNewRiSc(data, switchOn, [selectedRiScType]);\n } else if (dialogState === RiScDialogStates.Delete) {\n deleteRiSc(() =>\n selectRiSc(riScs && riScs.length > 0 ? riScs[0].id : ''),\n );\n } else {\n // Do manual comparison of contents, as the sopsConfig field contains many values from the backend that are not\n // used or set by the frontend.\n // Check if the additional Age keys are equal, using the single important field, `recipient`\n const areAgeKeysEqual = isDeeplyEqual(\n data.sopsConfig.age?.map(age => age.recipient).sort(),\n selectedRiSc?.sopsConfig.age?.map(age => age.recipient).sort(),\n );\n\n // Check if the GCP keys are equal, using the two important fields, `resource_id` and `created_at`.\n // Comparison uses dictionaries, where resource ids are keys and created at dates are values\n const areGCPKeysEqual = isDeeplyEqual(\n Object.fromEntries(\n data.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n Object.fromEntries(\n selectedRiSc?.sopsConfig.gcp_kms?.map(key => [\n key.resource_id,\n key.created_at,\n ]) ?? [],\n ),\n );\n\n // Only update the risc if it has changed\n if (\n !isDeeplyEqual(data, selectedRiSc, ['sopsConfig']) ||\n !areGCPKeysEqual ||\n !areAgeKeysEqual\n ) {\n updateRiSc(data);\n }\n }\n onClose();\n });\n\n if (dialogState === RiScDialogStates.Create) {\n return (\n <Dialog open={true} onClose={onClose} disablePortal>\n <DialogTitle>{t('rosDialog.titleNew')}</DialogTitle>\n <RiScStepper activeStep={activeStep}>\n <DialogContent\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n paddingX: 1,\n paddingY: 0.5,\n }}\n >\n {activeStep === 0 && (\n <ConfigInitialRisc\n dialogState={dialogState}\n switchOn={switchOn}\n setSwitchOn={setSwitchOn}\n setValue={setValue}\n selectedRiScType={selectedRiScType}\n setSelectedRiScType={setSelectedRiScType}\n />\n )}\n {activeStep === 1 && (\n <ConfigRiscInfo\n dialogState={dialogState}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n )}\n {activeStep === 2 && (\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n )}\n </DialogContent>\n </RiScStepper>\n <DialogActions sx={dialogActions}>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Flex>\n <Button\n size=\"medium\"\n variant=\"secondary\"\n isDisabled={activeStep === 0}\n onClick={handleBack}\n >\n {t('dictionary.previous')}\n </Button>\n {activeStep < 2 ? (\n <Button size=\"medium\" variant=\"primary\" onClick={handleNext}>\n {t('dictionary.next')}\n </Button>\n ) : (\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n )}\n </Flex>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.Delete) {\n return (\n <Dialog open={true} onClose={onClose} disablePortal>\n <DialogTitle>{t('deleteDialog.title')}</DialogTitle>\n <DialogContent>\n <DialogContent>{t('deleteDialog.confirmationMessage')}</DialogContent>\n </DialogContent>\n <DialogActions>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.delete')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditRiscInfo) {\n return (\n <Dialog open={true} onClose={onClose} disablePortal>\n <DialogTitle>\n <Flex direction=\"column\">{t('rosDialog.titleEdit')}</Flex>\n </DialogTitle>\n <DialogContent\n sx={{\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n width: '100%',\n paddingX: 4,\n paddingY: 3,\n }}\n >\n <ConfigRiscInfo\n dialogState={dialogState}\n register={register}\n errors={errors}\n setValue={setValue}\n watch={watch}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button\n size=\"medium\"\n variant=\"tertiary\"\n onClick={onDelete}\n style={{ color: '#d32f2f', paddingLeft: 0 }}\n >\n <i className=\"ri-delete-bin-line\" style={{ fontSize: '16px' }} />\n {t('contentHeader.deleteButton')}\n </Button>\n <Flex>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </Flex>\n </DialogActions>\n </Dialog>\n );\n }\n\n if (dialogState === RiScDialogStates.EditEncryption) {\n return (\n <Dialog open={true} onClose={onClose} disablePortal>\n <DialogTitle>{t('rosDialog.editEncryption')}</DialogTitle>\n <DialogContent\n sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}\n >\n <ConfigEncryptionDialog\n gcpCryptoKeys={gcpCryptoKeys}\n sopsData={selectedRiSc?.sopsConfig}\n setValue={setValue}\n state={dialogState}\n register={register}\n errors={errors}\n />\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button size=\"medium\" variant=\"secondary\" onClick={onClose}>\n {t('dictionary.cancel')}\n </Button>\n <Button size=\"medium\" variant=\"primary\" onClick={handleFinish}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n\n return null;\n}\n"],"names":["RiScDialogStates"],"mappings":"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"}
@@ -20,42 +20,51 @@ function SupportDialog() {
20
20
  children: t("supportDialog.title")
21
21
  }
22
22
  ),
23
- /* @__PURE__ */ jsxs(Dialog, { open, onClose: () => setOpen(false), fullWidth: true, children: [
24
- /* @__PURE__ */ jsx(Flex, { px: "24px", pt: "18px", pb: "10px", children: /* @__PURE__ */ jsx(Text, { as: "h3", variant: "title-small", weight: "bold", children: t("supportDialog.title") }) }),
25
- /* @__PURE__ */ jsxs(DialogContent, { children: [
26
- /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8px", children: [
27
- /* @__PURE__ */ jsx(
28
- SupportEntry,
29
- {
30
- label: t("supportDialog.entries.riscFeedbackChannel.title"),
31
- url: "https://kartverketgroup.slack.com/archives/C075KCPTURY",
32
- icon: /* @__PURE__ */ jsx("i", { className: "ri-slack-fill", style: { fontSize: "x-large" } }),
33
- description: t(
34
- "supportDialog.entries.riscFeedbackChannel.description"
35
- )
36
- }
37
- ),
38
- /* @__PURE__ */ jsx(
39
- SupportEntry,
40
- {
41
- label: t("supportDialog.entries.riscDocumentation.title"),
42
- url: "https://kartverket.atlassian.net/wiki/spaces/SIK/pages/1645608980/Koden+r+RoS",
43
- icon: /* @__PURE__ */ jsx(
44
- "i",
23
+ /* @__PURE__ */ jsxs(
24
+ Dialog,
25
+ {
26
+ open,
27
+ onClose: () => setOpen(false),
28
+ fullWidth: true,
29
+ disablePortal: true,
30
+ children: [
31
+ /* @__PURE__ */ jsx(Flex, { px: "24px", pt: "18px", pb: "10px", children: /* @__PURE__ */ jsx(Text, { as: "h3", variant: "title-small", weight: "bold", children: t("supportDialog.title") }) }),
32
+ /* @__PURE__ */ jsxs(DialogContent, { children: [
33
+ /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8px", children: [
34
+ /* @__PURE__ */ jsx(
35
+ SupportEntry,
45
36
  {
46
- className: "ri-article-line",
47
- style: { fontSize: "x-large" }
37
+ label: t("supportDialog.entries.riscFeedbackChannel.title"),
38
+ url: "https://kartverketgroup.slack.com/archives/C075KCPTURY",
39
+ icon: /* @__PURE__ */ jsx("i", { className: "ri-slack-fill", style: { fontSize: "x-large" } }),
40
+ description: t(
41
+ "supportDialog.entries.riscFeedbackChannel.description"
42
+ )
48
43
  }
49
44
  ),
50
- description: t(
51
- "supportDialog.entries.riscDocumentation.description"
45
+ /* @__PURE__ */ jsx(
46
+ SupportEntry,
47
+ {
48
+ label: t("supportDialog.entries.riscDocumentation.title"),
49
+ url: "https://kartverket.atlassian.net/wiki/spaces/SIK/pages/1645608980/Koden+r+RoS",
50
+ icon: /* @__PURE__ */ jsx(
51
+ "i",
52
+ {
53
+ className: "ri-article-line",
54
+ style: { fontSize: "x-large" }
55
+ }
56
+ ),
57
+ description: t(
58
+ "supportDialog.entries.riscDocumentation.description"
59
+ )
60
+ }
52
61
  )
53
- }
54
- )
55
- ] }),
56
- /* @__PURE__ */ jsx("div", { style: { marginTop: "24px" }, children: /* @__PURE__ */ jsx(FeedbackDialog, { open, setOpen }) })
57
- ] })
58
- ] })
62
+ ] }),
63
+ /* @__PURE__ */ jsx("div", { style: { marginTop: "24px" }, children: /* @__PURE__ */ jsx(FeedbackDialog, { open, setOpen }) })
64
+ ] })
65
+ ]
66
+ }
67
+ )
59
68
  ] });
60
69
  }
61
70
  function SupportEntry(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"SupportDialog.esm.js","sources":["../../../src/components/riScDialog/SupportDialog.tsx"],"sourcesContent":["import { ReactElement, useState } from 'react';\nimport { Button, Card, CardHeader, Flex, Text } from '@backstage/ui';\nimport { Dialog, DialogContent } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { Link } from '@mui/material';\nimport { FeedbackDialog } from '../riScPlugin/FeedbackDialog.tsx';\n\nexport function SupportDialog() {\n const [open, setOpen] = useState(false);\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <>\n <Button\n onClick={() => setOpen(true)}\n variant=\"secondary\"\n iconStart={<i className=\"ri-question-line\" />}\n >\n {t('supportDialog.title')}\n </Button>\n <Dialog open={open} onClose={() => setOpen(false)} fullWidth>\n <Flex px=\"24px\" pt=\"18px\" pb=\"10px\">\n <Text as=\"h3\" variant=\"title-small\" weight=\"bold\">\n {t('supportDialog.title')}\n </Text>\n </Flex>\n <DialogContent>\n <Flex direction=\"column\" gap=\"8px\">\n <SupportEntry\n label={t('supportDialog.entries.riscFeedbackChannel.title')}\n url=\"https://kartverketgroup.slack.com/archives/C075KCPTURY\"\n icon={\n <i className=\"ri-slack-fill\" style={{ fontSize: 'x-large' }} />\n }\n description={t(\n 'supportDialog.entries.riscFeedbackChannel.description',\n )}\n />\n <SupportEntry\n label={t('supportDialog.entries.riscDocumentation.title')}\n url=\"https://kartverket.atlassian.net/wiki/spaces/SIK/pages/1645608980/Koden+r+RoS\"\n icon={\n <i\n className=\"ri-article-line\"\n style={{ fontSize: 'x-large' }}\n />\n }\n description={t(\n 'supportDialog.entries.riscDocumentation.description',\n )}\n />\n </Flex>\n <div style={{ marginTop: '24px' }}>\n <FeedbackDialog open={open} setOpen={setOpen} />\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\ntype SupportEntryProps = {\n label: string;\n url: string;\n description: string;\n icon: ReactElement;\n};\n\nfunction SupportEntry(props: SupportEntryProps) {\n return (\n <Card>\n <CardHeader>\n <Flex align=\"center\">\n {props.icon}\n <Flex direction=\"column\" gap=\"0\">\n <Text weight=\"bold\">{props.label}</Text>\n <Link href={props.url} target=\"_blank\">\n {props.description}\n </Link>\n </Flex>\n </Flex>\n </CardHeader>\n </Card>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SupportDialog.esm.js","sources":["../../../src/components/riScDialog/SupportDialog.tsx"],"sourcesContent":["import { ReactElement, useState } from 'react';\nimport { Button, Card, CardHeader, Flex, Text } from '@backstage/ui';\nimport { Dialog, DialogContent } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { Link } from '@mui/material';\nimport { FeedbackDialog } from '../riScPlugin/FeedbackDialog.tsx';\n\nexport function SupportDialog() {\n const [open, setOpen] = useState(false);\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <>\n <Button\n onClick={() => setOpen(true)}\n variant=\"secondary\"\n iconStart={<i className=\"ri-question-line\" />}\n >\n {t('supportDialog.title')}\n </Button>\n <Dialog\n open={open}\n onClose={() => setOpen(false)}\n fullWidth\n disablePortal\n >\n <Flex px=\"24px\" pt=\"18px\" pb=\"10px\">\n <Text as=\"h3\" variant=\"title-small\" weight=\"bold\">\n {t('supportDialog.title')}\n </Text>\n </Flex>\n <DialogContent>\n <Flex direction=\"column\" gap=\"8px\">\n <SupportEntry\n label={t('supportDialog.entries.riscFeedbackChannel.title')}\n url=\"https://kartverketgroup.slack.com/archives/C075KCPTURY\"\n icon={\n <i className=\"ri-slack-fill\" style={{ fontSize: 'x-large' }} />\n }\n description={t(\n 'supportDialog.entries.riscFeedbackChannel.description',\n )}\n />\n <SupportEntry\n label={t('supportDialog.entries.riscDocumentation.title')}\n url=\"https://kartverket.atlassian.net/wiki/spaces/SIK/pages/1645608980/Koden+r+RoS\"\n icon={\n <i\n className=\"ri-article-line\"\n style={{ fontSize: 'x-large' }}\n />\n }\n description={t(\n 'supportDialog.entries.riscDocumentation.description',\n )}\n />\n </Flex>\n <div style={{ marginTop: '24px' }}>\n <FeedbackDialog open={open} setOpen={setOpen} />\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\ntype SupportEntryProps = {\n label: string;\n url: string;\n description: string;\n icon: ReactElement;\n};\n\nfunction SupportEntry(props: SupportEntryProps) {\n return (\n <Card>\n <CardHeader>\n <Flex align=\"center\">\n {props.icon}\n <Flex direction=\"column\" gap=\"0\">\n <Text weight=\"bold\">{props.label}</Text>\n <Link href={props.url} target=\"_blank\">\n {props.description}\n </Link>\n </Flex>\n </Flex>\n </CardHeader>\n </Card>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ const RiScMigrationDialog = ({
26
26
  function handleCheckboxInput(event) {
27
27
  setSaveMigration(event.target.checked);
28
28
  }
29
- return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: openDialog, children: [
29
+ return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: openDialog, disablePortal: true, children: [
30
30
  /* @__PURE__ */ jsx(DialogTitle, { children: t("migrationDialog.title") }),
31
31
  /* @__PURE__ */ jsxs(DialogContent, { children: [
32
32
  /* @__PURE__ */ jsx(Box, { sx: { marginBottom: "16px" }, children: /* @__PURE__ */ jsx(Text, { variant: "body-large", children: t("migrationDialog.description") }) }),
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationDialog.esm.js","sources":["../../../src/components/riScInfo/MigrationDialog.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Box from '@mui/material/Box';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { MigrationStatus } from '../../utils/types';\nimport { dialogActions } from '../common/mixins';\nimport { RiScMigrationChanges } from './migrations/RiScMigrationChanges.tsx';\nimport { Text } from '@backstage/ui';\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n migrationStatus: MigrationStatus;\n}\n\nexport const RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n migrationStatus,\n}: RiScMigrationDialogProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setSaveMigration(event.target.checked);\n }\n\n return (\n <Dialog maxWidth=\"md\" open={openDialog}>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Box sx={{ marginBottom: '16px' }}>\n <Text variant=\"body-large\">{t('migrationDialog.description')}</Text>\n </Box>\n <RiScMigrationChanges migrationStatus={migrationStatus} />\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions} style={{ paddingTop: '16px' }}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBO,MAAM,sBAAsB,CAAC;AAAA,EAClC,UAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAgC;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEjE,EAAA,SAAS,oBAAoB,KAAA,EAA4C;AACvE,IAAA,gBAAA,CAAiB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,EACvC;AAEA,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAS,IAAA,EAAK,MAAM,UAAA,EAC1B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAAA,EAAE,CAAA;AAAA,yBACxC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,YAAA,EAAc,MAAA,EAAO,EAC9B,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAc,QAAA,EAAA,CAAA,CAAE,6BAA6B,GAAE,CAAA,EAC/D,CAAA;AAAA,sBACA,GAAA,CAAC,wBAAqB,eAAA,EAAkC,CAAA;AAAA,sBACxD,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,MAAM,KAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAA,kBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,aAAA;AAAA,cACT,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAEF,KAAA,EAAO,EAAE,+BAA+B;AAAA;AAAA,OAC1C,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,iBAAc,EAAA,EAAI,aAAA,EAAe,OAAO,EAAE,UAAA,EAAY,QAAO,EAC5D,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,UAAA,EAAW,KAAA,EAAM,WAAU,OAAA,EAAS,YAAA,EACjD,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS,YAAA;AAAA,UACT,UAAU,CAAC,aAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"MigrationDialog.esm.js","sources":["../../../src/components/riScInfo/MigrationDialog.tsx"],"sourcesContent":["import { useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Box from '@mui/material/Box';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { MigrationStatus } from '../../utils/types';\nimport { dialogActions } from '../common/mixins';\nimport { RiScMigrationChanges } from './migrations/RiScMigrationChanges.tsx';\nimport { Text } from '@backstage/ui';\n\ninterface RiScMigrationDialogProps {\n openDialog: boolean;\n handleCancel: () => void;\n handleUpdate: () => void;\n migrationStatus: MigrationStatus;\n}\n\nexport const RiScMigrationDialog = ({\n openDialog,\n handleCancel,\n handleUpdate,\n migrationStatus,\n}: RiScMigrationDialogProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [saveMigration, setSaveMigration] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setSaveMigration(event.target.checked);\n }\n\n return (\n <Dialog maxWidth=\"md\" open={openDialog} disablePortal>\n <DialogTitle>{t('migrationDialog.title')}</DialogTitle>\n <DialogContent>\n <Box sx={{ marginBottom: '16px' }}>\n <Text variant=\"body-large\">{t('migrationDialog.description')}</Text>\n </Box>\n <RiScMigrationChanges migrationStatus={migrationStatus} />\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n checked={saveMigration}\n onChange={handleCheckboxInput}\n />\n }\n label={t('migrationDialog.checkboxLabel')}\n />\n </Alert>\n </DialogContent>\n <DialogActions sx={dialogActions} style={{ paddingTop: '16px' }}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={handleUpdate}\n disabled={!saveMigration}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAwBO,MAAM,sBAAsB,CAAC;AAAA,EAClC,UAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAAgC;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEjE,EAAA,SAAS,oBAAoB,KAAA,EAA4C;AACvE,IAAA,gBAAA,CAAiB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,EACvC;AAEA,EAAA,4BACG,MAAA,EAAA,EAAO,QAAA,EAAS,MAAK,IAAA,EAAM,UAAA,EAAY,eAAa,IAAA,EACnD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,CAAA,CAAE,uBAAuB,CAAA,EAAE,CAAA;AAAA,yBACxC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAI,EAAE,YAAA,EAAc,MAAA,EAAO,EAC9B,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAc,QAAA,EAAA,CAAA,CAAE,6BAA6B,GAAE,CAAA,EAC/D,CAAA;AAAA,sBACA,GAAA,CAAC,wBAAqB,eAAA,EAAkC,CAAA;AAAA,sBACxD,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,MAAM,KAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAA,kBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,aAAA;AAAA,cACT,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAEF,KAAA,EAAO,EAAE,+BAA+B;AAAA;AAAA,OAC1C,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,iBAAc,EAAA,EAAI,aAAA,EAAe,OAAO,EAAE,UAAA,EAAY,QAAO,EAC5D,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,UAAA,EAAW,KAAA,EAAM,WAAU,OAAA,EAAS,YAAA,EACjD,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS,YAAA;AAAA,UACT,UAAU,CAAC,aAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -25,7 +25,7 @@ const RiScPublishDialog = ({
25
25
  function handleCheckboxInput(event) {
26
26
  setRiskOwnerApproves(event.target.checked);
27
27
  }
28
- return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: openDialog, children: [
28
+ return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "md", open: openDialog, disablePortal: true, children: [
29
29
  /* @__PURE__ */ jsx(DialogTitle, { children: isDeletion ? t("publishDialog.titleDelete") : t("publishDialog.titleUpdate") }),
30
30
  /* @__PURE__ */ jsx(DialogContent, { sx: { marginBottom: "16px" }, children: /* @__PURE__ */ jsxs(Fragment, { children: [
31
31
  !isDeletion && /* @__PURE__ */ jsx(RiScDifferenceDialog, { differenceFetchState }),
@@ -1 +1 @@
1
- {"version":3,"file":"PublishDialog.esm.js","sources":["../../../src/components/riScInfo/PublishDialog.tsx"],"sourcesContent":["import { ReactComponentElement, useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { DifferenceFetchState } from '../../utils/types';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDifferenceDialog } from './riScStatus/RiScDifferenceDialog';\nimport { dialogActions } from '../common/mixins';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n isDeletion: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n differenceFetchState: DifferenceFetchState;\n}\n\nexport const RiScPublishDialog = ({\n openDialog,\n isDeletion,\n handleCancel,\n handlePublish,\n differenceFetchState,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setRiskOwnerApproves(event.target.checked);\n }\n\n return (\n <Dialog maxWidth=\"md\" open={openDialog}>\n <DialogTitle>\n {isDeletion\n ? t('publishDialog.titleDelete')\n : t('publishDialog.titleUpdate')}\n </DialogTitle>\n <DialogContent sx={{ marginBottom: '16px' }}>\n <>\n {!isDeletion && (\n <RiScDifferenceDialog differenceFetchState={differenceFetchState} />\n )}\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={\n isDeletion\n ? t('publishDialog.checkboxLabelDelete')\n : t('publishDialog.checkboxLabelUpdate')\n }\n />\n </Alert>\n </>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAuBO,MAAM,oBAAoB,CAAC;AAAA,EAChC,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAA0D;AACxD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEzE,EAAA,SAAS,oBAAoB,KAAA,EAA4C;AACvE,IAAA,oBAAA,CAAqB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,EAC3C;AAEA,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAS,IAAA,EAAK,MAAM,UAAA,EAC1B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eACE,QAAA,EAAA,UAAA,GACG,CAAA,CAAE,2BAA2B,CAAA,GAC7B,CAAA,CAAE,2BAA2B,CAAA,EACnC,CAAA;AAAA,wBACC,aAAA,EAAA,EAAc,EAAA,EAAI,EAAE,YAAA,EAAc,MAAA,IACjC,QAAA,kBAAA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,CAAC,UAAA,oBACA,GAAA,CAAC,oBAAA,EAAA,EAAqB,oBAAA,EAA4C,CAAA;AAAA,sBAEpE,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,MAAM,KAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAA,kBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,SAAA;AAAA,cACN,OAAA,EAAS,iBAAA;AAAA,cACT,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAEF,OACE,UAAA,GACI,CAAA,CAAE,mCAAmC,CAAA,GACrC,EAAE,mCAAmC;AAAA;AAAA,OAE7C,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,UAAA,EAAW,KAAA,EAAM,WAAU,OAAA,EAAS,YAAA,EACjD,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,WAAA;AAAA,UACR,KAAA,EAAM,SAAA;AAAA,UACN,OAAA,EAAS,aAAA;AAAA,UACT,UAAU,CAAC,iBAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PublishDialog.esm.js","sources":["../../../src/components/riScInfo/PublishDialog.tsx"],"sourcesContent":["import { ReactComponentElement, useState } from 'react';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport Checkbox from '@mui/material/Checkbox';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport { DifferenceFetchState } from '../../utils/types';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDifferenceDialog } from './riScStatus/RiScDifferenceDialog';\nimport { dialogActions } from '../common/mixins';\n\ninterface RiScPublishDialogProps {\n openDialog: boolean;\n isDeletion: boolean;\n handleCancel: () => void;\n handlePublish: () => void;\n differenceFetchState: DifferenceFetchState;\n}\n\nexport const RiScPublishDialog = ({\n openDialog,\n isDeletion,\n handleCancel,\n handlePublish,\n differenceFetchState,\n}: RiScPublishDialogProps): ReactComponentElement<any> => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riskOwnerApproves, setRiskOwnerApproves] = useState<boolean>(false);\n\n function handleCheckboxInput(event: React.ChangeEvent<HTMLInputElement>) {\n setRiskOwnerApproves(event.target.checked);\n }\n\n return (\n <Dialog maxWidth=\"md\" open={openDialog} disablePortal>\n <DialogTitle>\n {isDeletion\n ? t('publishDialog.titleDelete')\n : t('publishDialog.titleUpdate')}\n </DialogTitle>\n <DialogContent sx={{ marginBottom: '16px' }}>\n <>\n {!isDeletion && (\n <RiScDifferenceDialog differenceFetchState={differenceFetchState} />\n )}\n <Alert severity=\"info\" icon={false}>\n <FormControlLabel\n control={\n <Checkbox\n color=\"primary\"\n checked={riskOwnerApproves}\n onChange={handleCheckboxInput}\n />\n }\n label={\n isDeletion\n ? t('publishDialog.checkboxLabelDelete')\n : t('publishDialog.checkboxLabelUpdate')\n }\n />\n </Alert>\n </>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" color=\"primary\" onClick={handleCancel}>\n {t('dictionary.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handlePublish}\n disabled={!riskOwnerApproves}\n >\n {t('dictionary.confirm')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAuBO,MAAM,oBAAoB,CAAC;AAAA,EAChC,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,KAA0D;AACxD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEzE,EAAA,SAAS,oBAAoB,KAAA,EAA4C;AACvE,IAAA,oBAAA,CAAqB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,EAC3C;AAEA,EAAA,4BACG,MAAA,EAAA,EAAO,QAAA,EAAS,MAAK,IAAA,EAAM,UAAA,EAAY,eAAa,IAAA,EACnD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eACE,QAAA,EAAA,UAAA,GACG,CAAA,CAAE,2BAA2B,CAAA,GAC7B,CAAA,CAAE,2BAA2B,CAAA,EACnC,CAAA;AAAA,wBACC,aAAA,EAAA,EAAc,EAAA,EAAI,EAAE,YAAA,EAAc,MAAA,IACjC,QAAA,kBAAA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,CAAC,UAAA,oBACA,GAAA,CAAC,oBAAA,EAAA,EAAqB,oBAAA,EAA4C,CAAA;AAAA,sBAEpE,GAAA,CAAC,KAAA,EAAA,EAAM,QAAA,EAAS,MAAA,EAAO,MAAM,KAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,OAAA,kBACE,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAM,SAAA;AAAA,cACN,OAAA,EAAS,iBAAA;AAAA,cACT,QAAA,EAAU;AAAA;AAAA,WACZ;AAAA,UAEF,OACE,UAAA,GACI,CAAA,CAAE,mCAAmC,CAAA,GACrC,EAAE,mCAAmC;AAAA;AAAA,OAE7C,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,UAAA,EAAW,KAAA,EAAM,WAAU,OAAA,EAAS,YAAA,EACjD,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,WAAA;AAAA,UACR,KAAA,EAAM,SAAA;AAAA,UACN,OAAA,EAAS,aAAA;AAAA,UACT,UAAU,CAAC,iBAAA;AAAA,UAEV,YAAE,oBAAoB;AAAA;AAAA;AACzB,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -120,6 +120,7 @@ function ScenarioDrawer() {
120
120
  return /* @__PURE__ */ jsxs(
121
121
  Drawer,
122
122
  {
123
+ disablePortal: true,
123
124
  PaperProps: {
124
125
  sx: (theme) => ({
125
126
  padding: theme.spacing(4),
@@ -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 Alert from '@mui/material/Alert';\nimport { AlertTitle } from '@mui/material';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\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, ProcessingStatus } from '../../utils/types';\nimport { deleteScenario, getAlertSeverity } 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 { RiskSection } from './components/RiskSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport { ScopeSection } from './components/ScopeSection';\nimport { useCallback } from 'react';\nimport { useDebounce } from '../../utils/hooks';\nimport { Text, Flex } from '@backstage/ui';\nimport { getAlertStyle } from './scenarioDrawerComponents';\n\nexport function ScenarioDrawer() {\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 const debounceCallback = useCallback(\n (updatedIDs: string[]) => {\n const indexOfAction = (ID: string) => {\n return scenario.actions.findIndex(a => a.ID === ID);\n };\n if (updatedIDs.length === 0) return;\n\n const formValues = formMethods.getValues();\n const updatedScenario = {\n ...scenario,\n actions: scenario.actions.map(a =>\n updatedIDs.includes(a.ID)\n ? {\n ...a,\n status:\n formValues.actions?.[indexOfAction(a.ID)]?.status ?? a.status,\n }\n : a,\n ),\n };\n submitEditedScenarioToRiSc(updatedScenario, {\n idsOfActionsToForceUpdateLastUpdatedValue: updatedIDs,\n });\n setCurrentUpdatedActionIDs([]);\n },\n [scenario, formMethods, submitEditedScenarioToRiSc],\n );\n const { flush } = useDebounce(\n currentUpdatedActionIDs,\n 6000,\n debounceCallback,\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 flush();\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 });\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 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 color=\"primary\"\n variant=\"contained\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={isEditing ? onCancel : onClose}\n >\n {t(isEditing ? 'dictionary.cancel' : 'dictionary.close')}\n </Button>\n </Box>\n\n {isEditing ? (\n <>\n <ScopeFormSection formMethods={formMethods} />\n <RiskFormSection\n formMethods={formMethods}\n setIsMatrixDialogOpen={setIsMatrixDialogOpen}\n />\n </>\n ) : (\n <>\n {updateStatus.isLoading && (\n <Flex\n style={{\n position: 'fixed',\n width: '45%',\n zIndex: 20,\n border: '1px solid #439CCD',\n borderRadius: '4px',\n }}\n >\n <Alert\n severity=\"info\"\n style={{\n width: '100%',\n }}\n icon={<CircularProgress size={16} sx={{ color: 'inherit' }} />}\n >\n <AlertTitle>{t('infoMessages.UpdateAction')}</AlertTitle>\n <Text variant=\"body-large\">\n {' '}\n {t('infoMessages.UpdateInfoMessage')}\n </Text>\n </Alert>\n </Flex>\n )}\n {currentUpdatedActionIDs.length === 0 &&\n response &&\n response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && (\n <Flex\n style={{\n position: 'fixed',\n ...getAlertStyle(getAlertSeverity(updateStatus)),\n }}\n >\n <Alert\n severity={getAlertSeverity(updateStatus)}\n style={{ width: '100%' }}\n >\n <Text variant=\"body-large\">{response.statusMessage}</Text>\n </Alert>\n </Flex>\n )}\n <ScopeSection />\n <RiskSection />\n </>\n )}\n <ActionsSection\n formMethods={formMethods}\n isEditing={isEditing}\n onSubmit={onSubmit}\n setCurrentUpdatedActionIDs={setCurrentUpdatedActionIDs}\n />\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n }}\n >\n {isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n disabled={!formMethods.formState.isDirty || updateStatus.isLoading}\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 startIcon={<DeleteIcon />}\n variant=\"text\"\n color=\"primary\"\n onClick={() => setDeleteConfirmationIsOpen(true)}\n sx={{ marginLeft: 'auto' }}\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 Alert from '@mui/material/Alert';\nimport { AlertTitle } from '@mui/material';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\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, ProcessingStatus } from '../../utils/types';\nimport { deleteScenario, getAlertSeverity } 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 { RiskSection } from './components/RiskSection';\nimport ScopeFormSection from './components/ScopeFormSection';\nimport { ScopeSection } from './components/ScopeSection';\nimport { useCallback } from 'react';\nimport { useDebounce } from '../../utils/hooks';\nimport { Text, Flex } from '@backstage/ui';\nimport { getAlertStyle } from './scenarioDrawerComponents';\n\nexport function ScenarioDrawer() {\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 const debounceCallback = useCallback(\n (updatedIDs: string[]) => {\n const indexOfAction = (ID: string) => {\n return scenario.actions.findIndex(a => a.ID === ID);\n };\n if (updatedIDs.length === 0) return;\n\n const formValues = formMethods.getValues();\n const updatedScenario = {\n ...scenario,\n actions: scenario.actions.map(a =>\n updatedIDs.includes(a.ID)\n ? {\n ...a,\n status:\n formValues.actions?.[indexOfAction(a.ID)]?.status ?? a.status,\n }\n : a,\n ),\n };\n submitEditedScenarioToRiSc(updatedScenario, {\n idsOfActionsToForceUpdateLastUpdatedValue: updatedIDs,\n });\n setCurrentUpdatedActionIDs([]);\n },\n [scenario, formMethods, submitEditedScenarioToRiSc],\n );\n const { flush } = useDebounce(\n currentUpdatedActionIDs,\n 6000,\n debounceCallback,\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 flush();\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 });\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 disablePortal\n PaperProps={{\n sx: theme => ({\n padding: theme.spacing(4),\n width: '50%',\n gap: theme.spacing(3),\n [theme.breakpoints.down('sm')]: {\n width: '90%',\n padding: theme.spacing(2),\n },\n backgroundColor:\n theme.palette.mode === 'dark' ? '#333333' : '#f8f8f8',\n }),\n }}\n variant=\"temporary\"\n anchor=\"right\"\n open={isDrawerOpen}\n onClose={onClose}\n >\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n marginLeft: 'auto',\n }}\n >\n {!isEditing && isEditingAllowed && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={() => setIsEditing(true)}\n >\n {t('dictionary.edit')}\n </Button>\n )}\n <Button\n variant=\"outlined\"\n color=\"primary\"\n onClick={isEditing ? onCancel : onClose}\n >\n {t(isEditing ? 'dictionary.cancel' : 'dictionary.close')}\n </Button>\n </Box>\n\n {isEditing ? (\n <>\n <ScopeFormSection formMethods={formMethods} />\n <RiskFormSection\n formMethods={formMethods}\n setIsMatrixDialogOpen={setIsMatrixDialogOpen}\n />\n </>\n ) : (\n <>\n {updateStatus.isLoading && (\n <Flex\n style={{\n position: 'fixed',\n width: '45%',\n zIndex: 20,\n border: '1px solid #439CCD',\n borderRadius: '4px',\n }}\n >\n <Alert\n severity=\"info\"\n style={{\n width: '100%',\n }}\n icon={<CircularProgress size={16} sx={{ color: 'inherit' }} />}\n >\n <AlertTitle>{t('infoMessages.UpdateAction')}</AlertTitle>\n <Text variant=\"body-large\">\n {' '}\n {t('infoMessages.UpdateInfoMessage')}\n </Text>\n </Alert>\n </Flex>\n )}\n {currentUpdatedActionIDs.length === 0 &&\n response &&\n response.status !== ProcessingStatus.ErrorWhenFetchingRiScs && (\n <Flex\n style={{\n position: 'fixed',\n ...getAlertStyle(getAlertSeverity(updateStatus)),\n }}\n >\n <Alert\n severity={getAlertSeverity(updateStatus)}\n style={{ width: '100%' }}\n >\n <Text variant=\"body-large\">{response.statusMessage}</Text>\n </Alert>\n </Flex>\n )}\n <ScopeSection />\n <RiskSection />\n </>\n )}\n <ActionsSection\n formMethods={formMethods}\n isEditing={isEditing}\n onSubmit={onSubmit}\n setCurrentUpdatedActionIDs={setCurrentUpdatedActionIDs}\n />\n <Box\n sx={{\n display: 'flex',\n gap: '16px',\n }}\n >\n {isEditing && (\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={onSubmit}\n disabled={!formMethods.formState.isDirty || updateStatus.isLoading}\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 startIcon={<DeleteIcon />}\n variant=\"text\"\n color=\"primary\"\n onClick={() => setDeleteConfirmationIsOpen(true)}\n sx={{ marginLeft: 'auto' }}\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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"}
@@ -55,7 +55,7 @@ function ConfirmationDialog({
55
55
  confirmButtonText
56
56
  }) {
57
57
  const { t } = useTranslationRef(pluginRiScTranslationRef);
58
- return /* @__PURE__ */ jsxs(Dialog, { open: isOpen, onClose, children: [
58
+ return /* @__PURE__ */ jsxs(Dialog, { open: isOpen, onClose, disablePortal: true, children: [
59
59
  /* @__PURE__ */ jsx(DialogTitle, { children: title }),
60
60
  /* @__PURE__ */ jsxs(DialogActions, { sx: dialogActions, children: [
61
61
  /* @__PURE__ */ jsx(
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { dialogActions } from '../../common/mixins';\nimport type { SetState } from '../../../utils/types';\n\ntype DeleteScenarioConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteScenarioConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteScenarioConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteScenarioConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteScenarioButton')}\n />\n );\n}\n\n// #####################################################\n\ntype DeleteActionConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteActionConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteActionConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteActionConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteActionButton')}\n />\n );\n}\n\n// #####################################################\n\ntype ConfirmationDialogProps = {\n isOpen: boolean;\n onClose?: () => void;\n onConfirm?: () => void;\n title: string;\n confirmButtonText: string;\n};\n\n/**\n * Helper component.\n */\nfunction ConfirmationDialog({\n isOpen,\n onClose,\n onConfirm,\n title,\n confirmButtonText,\n}: ConfirmationDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Dialog open={isOpen} onClose={onClose}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"outlined\"\n onClick={event => {\n event.stopPropagation();\n onClose?.();\n }}\n >\n {t('dictionary.cancel')}\n </Button>\n <Button\n onClick={event => {\n event.stopPropagation();\n onConfirm?.();\n }}\n variant=\"contained\"\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAeO,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,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,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;AAAA;AAAA,GAC5D;AAEJ;AAUO,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,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,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;AAAA;AAAA,GAC1D;AAEJ;AAeA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,OAAA,EACpB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACpB,IAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,UAAA;AAAA,UACR,SAAS,CAAA,KAAA,KAAS;AAChB,YAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,YAAA,OAAA,IAAU;AAAA,UACZ,CAAA;AAAA,UAEC,YAAE,mBAAmB;AAAA;AAAA,OACxB;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAS,CAAA,KAAA,KAAS;AAChB,YAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,YAAA,SAAA,IAAY;AAAA,UACd,CAAA;AAAA,UACA,OAAA,EAAQ,WAAA;AAAA,UAEP,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { dialogActions } from '../../common/mixins';\nimport type { SetState } from '../../../utils/types';\n\ntype DeleteScenarioConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteScenarioConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteScenarioConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteScenarioConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteScenarioButton')}\n />\n );\n}\n\n// #####################################################\n\ntype DeleteActionConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteActionConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteActionConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteActionConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteActionButton')}\n />\n );\n}\n\n// #####################################################\n\ntype ConfirmationDialogProps = {\n isOpen: boolean;\n onClose?: () => void;\n onConfirm?: () => void;\n title: string;\n confirmButtonText: string;\n};\n\n/**\n * Helper component.\n */\nfunction ConfirmationDialog({\n isOpen,\n onClose,\n onConfirm,\n title,\n confirmButtonText,\n}: ConfirmationDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Dialog open={isOpen} onClose={onClose} disablePortal>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions sx={dialogActions}>\n <Button\n variant=\"outlined\"\n onClick={event => {\n event.stopPropagation();\n onClose?.();\n }}\n >\n {t('dictionary.cancel')}\n </Button>\n <Button\n onClick={event => {\n event.stopPropagation();\n onConfirm?.();\n }}\n variant=\"contained\"\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAeO,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,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,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;AAAA;AAAA,GAC5D;AAEJ;AAUO,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,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,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;AAAA;AAAA,GAC1D;AAEJ;AAeA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,4BACG,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAkB,eAAa,IAAA,EACnD,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eAAa,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACpB,IAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,UAAA;AAAA,UACR,SAAS,CAAA,KAAA,KAAS;AAChB,YAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,YAAA,OAAA,IAAU;AAAA,UACZ,CAAA;AAAA,UAEC,YAAE,mBAAmB;AAAA;AAAA,OACxB;AAAA,sBACA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,SAAS,CAAA,KAAA,KAAS;AAChB,YAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,YAAA,SAAA,IAAY;AAAA,UACd,CAAA;AAAA,UACA,OAAA,EAAQ,WAAA;AAAA,UAEP,QAAA,EAAA;AAAA;AAAA;AACH,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -15,7 +15,7 @@ function CloseConfirmation({
15
15
  save
16
16
  }) {
17
17
  const { t } = useTranslationRef(pluginRiScTranslationRef);
18
- return /* @__PURE__ */ jsxs(Dialog, { open: isOpen, children: [
18
+ return /* @__PURE__ */ jsxs(Dialog, { open: isOpen, disablePortal: true, children: [
19
19
  /* @__PURE__ */ jsxs(Flex, { children: [
20
20
  /* @__PURE__ */ jsx(DialogTitle, { children: t("scenarioDrawer.closeConfirmation") }),
21
21
  /* @__PURE__ */ jsx(Button, { onClick: onCloseDialog, children: /* @__PURE__ */ jsx("i", { className: "ri-close-large-line" }) })
@@ -1 +1 @@
1
- {"version":3,"file":"CloseConfirmation.esm.js","sources":["../../../../src/components/scenarioWizard/components/CloseConfirmation.tsx"],"sourcesContent":["import { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../../common/mixins';\nimport { Flex } from '@backstage/ui';\n\ninterface CloseConfirmationProps {\n isOpen: boolean;\n onCloseDialog?: () => void;\n close: () => void;\n save: () => void;\n}\n\nexport function CloseConfirmation({\n isOpen,\n onCloseDialog,\n close,\n save,\n}: CloseConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <Dialog open={isOpen}>\n <Flex>\n <DialogTitle>{t('scenarioDrawer.closeConfirmation')}</DialogTitle>\n <Button onClick={onCloseDialog}>\n <i className=\"ri-close-large-line\" />\n </Button>\n </Flex>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" onClick={close}>\n {t('dictionary.discardChanges')}\n </Button>\n\n <Button variant=\"contained\" onClick={save}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAgBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,MAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EACZ,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,CAAA,CAAE,kCAAkC,CAAA,EAAE,CAAA;AAAA,sBACpD,GAAA,CAAC,UAAO,OAAA,EAAS,aAAA,EACf,8BAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAsB,CAAA,EACrC;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAO,OAAA,EAAQ,UAAA,EAAW,SAAS,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,2BAA2B,CAAA,EAChC,CAAA;AAAA,sBAEA,GAAA,CAAC,UAAO,OAAA,EAAQ,WAAA,EAAY,SAAS,IAAA,EAClC,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CloseConfirmation.esm.js","sources":["../../../../src/components/scenarioWizard/components/CloseConfirmation.tsx"],"sourcesContent":["import { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { dialogActions } from '../../common/mixins';\nimport { Flex } from '@backstage/ui';\n\ninterface CloseConfirmationProps {\n isOpen: boolean;\n onCloseDialog?: () => void;\n close: () => void;\n save: () => void;\n}\n\nexport function CloseConfirmation({\n isOpen,\n onCloseDialog,\n close,\n save,\n}: CloseConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <Dialog open={isOpen} disablePortal>\n <Flex>\n <DialogTitle>{t('scenarioDrawer.closeConfirmation')}</DialogTitle>\n <Button onClick={onCloseDialog}>\n <i className=\"ri-close-large-line\" />\n </Button>\n </Flex>\n <DialogActions sx={dialogActions}>\n <Button variant=\"outlined\" onClick={close}>\n {t('dictionary.discardChanges')}\n </Button>\n\n <Button variant=\"contained\" onClick={save}>\n {t('dictionary.save')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAgBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,MAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,uBACE,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,eAAa,IAAA,EACjC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,CAAA,CAAE,kCAAkC,CAAA,EAAE,CAAA;AAAA,sBACpD,GAAA,CAAC,UAAO,OAAA,EAAS,aAAA,EACf,8BAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAsB,CAAA,EACrC;AAAA,KAAA,EACF,CAAA;AAAA,oBACA,IAAA,CAAC,aAAA,EAAA,EAAc,EAAA,EAAI,aAAA,EACjB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAO,OAAA,EAAQ,UAAA,EAAW,SAAS,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,2BAA2B,CAAA,EAChC,CAAA;AAAA,sBAEA,GAAA,CAAC,UAAO,OAAA,EAAQ,WAAA,EAAY,SAAS,IAAA,EAClC,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kartverket/backstage-plugin-risk-scorecard",
3
- "version": "3.9.3",
3
+ "version": "3.9.4",
4
4
  "main": "dist/index.esm.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",