@kartverket/backstage-plugin-risk-scorecard 3.1.0 → 3.1.1
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/PluginRoot.esm.js +10 -6
- package/dist/PluginRoot.esm.js.map +1 -1
- package/dist/components/common/EditButton.esm.js +2 -2
- package/dist/components/common/EditButton.esm.js.map +1 -1
- package/dist/components/common/Markdown.esm.js +12 -0
- package/dist/components/common/Markdown.esm.js.map +1 -0
- package/dist/components/common/MarkdownInput.esm.js +16 -33
- package/dist/components/common/MarkdownInput.esm.js.map +1 -1
- package/dist/components/common/Select.esm.js +32 -25
- package/dist/components/common/Select.esm.js.map +1 -1
- package/dist/components/common/Spinner.esm.js +23 -21
- package/dist/components/common/Spinner.esm.js.map +1 -1
- package/dist/components/riScDialog/ConfigEncryptionDialog.esm.js +7 -7
- package/dist/components/riScDialog/ConfigEncryptionDialog.esm.js.map +1 -1
- package/dist/components/riScDialog/ConfigRiscInfo.esm.js +4 -4
- package/dist/components/riScDialog/ConfigRiscInfo.esm.js.map +1 -1
- package/dist/components/riScDialog/MatrixDialog.esm.js +3 -3
- package/dist/components/riScDialog/MatrixDialog.esm.js.map +1 -1
- package/dist/components/riScDialog/RiScDialog.esm.js +7 -7
- package/dist/components/riScDialog/RiScDialog.esm.js.map +1 -1
- package/dist/components/riScInfo/MigrationDialog.esm.js +2 -2
- package/dist/components/riScInfo/MigrationDialog.esm.js.map +1 -1
- package/dist/components/riScInfo/PublishDialog.esm.js +2 -2
- package/dist/components/riScInfo/PublishDialog.esm.js.map +1 -1
- package/dist/components/riScInfo/RiScInfo.esm.js +5 -5
- package/dist/components/riScInfo/RiScInfo.esm.js.map +1 -1
- package/dist/components/riScInfo/riScStatus/DifferenceText.esm.js +2 -4
- package/dist/components/riScInfo/riScStatus/DifferenceText.esm.js.map +1 -1
- package/dist/components/riScInfo/riScStatus/Progress.esm.js +4 -4
- package/dist/components/riScInfo/riScStatus/Progress.esm.js.map +1 -1
- package/dist/components/riScInfo/riScStatus/RiScDifferenceDialog.esm.js +3 -3
- package/dist/components/riScInfo/riScStatus/RiScDifferenceDialog.esm.js.map +1 -1
- package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js +62 -28
- package/dist/components/riScInfo/riScStatus/RiScStatusComponent.esm.js.map +1 -1
- package/dist/components/riScInfo/riScStatus/icons/disabled.svg +6 -0
- package/dist/components/riScPlugin/RiScPlugin.esm.js +14 -6
- package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
- package/dist/components/riskMatrix/AggregatedCost.esm.js +2 -2
- package/dist/components/riskMatrix/AggregatedCost.esm.js.map +1 -1
- package/dist/components/riskMatrix/EstimatedRiskInfoDialog.esm.js +3 -3
- package/dist/components/riskMatrix/EstimatedRiskInfoDialog.esm.js.map +1 -1
- package/dist/components/riskMatrix/RiskMatrix.esm.js +7 -11
- package/dist/components/riskMatrix/RiskMatrix.esm.js.map +1 -1
- package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js +5 -5
- package/dist/components/riskMatrix/RiskMatrixScenarioCount.esm.js.map +1 -1
- package/dist/components/riskMatrix/Tabs.esm.js +3 -3
- package/dist/components/riskMatrix/Tabs.esm.js.map +1 -1
- package/dist/components/riskMatrix/utils.esm.js +8 -0
- package/dist/components/riskMatrix/utils.esm.js.map +1 -0
- package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js +10 -10
- package/dist/components/scenarioDrawer/ScenarioDrawer.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionBox.esm.js +11 -20
- package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js +15 -8
- package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js +3 -3
- 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 +3 -3
- package/dist/components/scenarioDrawer/components/RiskFormSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/RiskSection.esm.js +4 -4
- package/dist/components/scenarioDrawer/components/RiskSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js +17 -12
- package/dist/components/scenarioDrawer/components/ScopeFormSection.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ScopeSection.esm.js +5 -5
- package/dist/components/scenarioDrawer/components/ScopeSection.esm.js.map +1 -1
- package/dist/components/scenarioTable/ScenarioTable.esm.js +9 -9
- package/dist/components/scenarioTable/ScenarioTable.esm.js.map +1 -1
- package/dist/components/scenarioTable/ScenarioTableRow.esm.js +3 -3
- package/dist/components/scenarioTable/ScenarioTableRow.esm.js.map +1 -1
- package/dist/components/scenarioWizard/ScenarioWizard.esm.js +10 -10
- package/dist/components/scenarioWizard/ScenarioWizard.esm.js.map +1 -1
- package/dist/components/scenarioWizard/components/CloseConfirmation.esm.js +3 -3
- package/dist/components/scenarioWizard/components/CloseConfirmation.esm.js.map +1 -1
- package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js +34 -28
- package/dist/components/scenarioWizard/components/ConsequenceTable.esm.js.map +1 -1
- package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js +24 -20
- package/dist/components/scenarioWizard/components/ProbabilityTable.esm.js.map +1 -1
- package/dist/components/scenarioWizard/steps/ActionsStep.esm.js +3 -3
- package/dist/components/scenarioWizard/steps/ActionsStep.esm.js.map +1 -1
- package/dist/components/scenarioWizard/steps/RiskStep.esm.js +2 -2
- package/dist/components/scenarioWizard/steps/RiskStep.esm.js.map +1 -1
- package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js +3 -3
- package/dist/components/scenarioWizard/steps/ScenarioStep.esm.js.map +1 -1
- package/dist/components/sopsConfigDialog/GcpCryptoKeyMenu.esm.js +7 -7
- package/dist/components/sopsConfigDialog/GcpCryptoKeyMenu.esm.js.map +1 -1
- package/dist/components/sopsConfigDialog/GcpCryptoKeyMenuItem.esm.js +3 -3
- package/dist/components/sopsConfigDialog/GcpCryptoKeyMenuItem.esm.js.map +1 -1
- package/dist/contexts/RiScContext.esm.js +12 -12
- package/dist/contexts/RiScContext.esm.js.map +1 -1
- package/dist/contexts/ScenarioContext.esm.js +39 -37
- package/dist/contexts/ScenarioContext.esm.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/urls/backend.esm.js +1 -3
- package/dist/urls/backend.esm.js.map +1 -1
- package/dist/utils/DTOs.esm.js +1 -11
- package/dist/utils/DTOs.esm.js.map +1 -1
- package/dist/utils/hooks.esm.js +83 -132
- package/dist/utils/hooks.esm.js.map +1 -1
- package/dist/utils/translations.esm.js +16 -0
- package/dist/utils/translations.esm.js.map +1 -1
- package/dist/utils/types.esm.js +0 -6
- package/dist/utils/types.esm.js.map +1 -1
- package/dist/utils/utilityfunctions.esm.js +25 -19
- package/dist/utils/utilityfunctions.esm.js.map +1 -1
- package/package.json +5 -3
package/dist/PluginRoot.esm.js
CHANGED
|
@@ -14,12 +14,16 @@ const cache = createCache({
|
|
|
14
14
|
key: "css",
|
|
15
15
|
insertionPoint: emotionInsertionPoint
|
|
16
16
|
});
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/* @__PURE__ */
|
|
22
|
-
|
|
17
|
+
function ProvidedPlugin() {
|
|
18
|
+
return /* @__PURE__ */ jsx(CacheProvider, { value: cache, children: /* @__PURE__ */ jsx(RiScProvider, { children: /* @__PURE__ */ jsx(ScenarioProvider, { children: /* @__PURE__ */ jsx(RiScPlugin, {}) }) }) });
|
|
19
|
+
}
|
|
20
|
+
function PluginRoot() {
|
|
21
|
+
return /* @__PURE__ */ jsxs(Routes, { children: [
|
|
22
|
+
/* @__PURE__ */ jsx(Route, { path: "/", element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) }),
|
|
23
|
+
/* @__PURE__ */ jsx(Route, { path: riScRouteRef.path, element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) }),
|
|
24
|
+
/* @__PURE__ */ jsx(Route, { path: scenarioRouteRef.path, element: /* @__PURE__ */ jsx(ProvidedPlugin, {}) })
|
|
25
|
+
] });
|
|
26
|
+
}
|
|
23
27
|
|
|
24
28
|
export { PluginRoot };
|
|
25
29
|
//# sourceMappingURL=PluginRoot.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginRoot.esm.js","sources":["../src/PluginRoot.tsx"],"sourcesContent":["import { Route, Routes } from 'react-router-dom';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport { RiScPlugin } from './components/riScPlugin/RiScPlugin';\nimport { ScenarioProvider } from './contexts/ScenarioContext';\nimport { riScRouteRef, scenarioRouteRef } from './routes';\nimport { RiScProvider } from './contexts/RiScContext';\n\nconst emotionInsertionPoint = document.createElement('meta');\nemotionInsertionPoint.setAttribute('name', 'emotion-insertion-point');\ndocument.querySelector('head')?.appendChild(emotionInsertionPoint);\n\nconst cache = createCache({\n key: 'css',\n insertionPoint: emotionInsertionPoint,\n});\n\
|
|
1
|
+
{"version":3,"file":"PluginRoot.esm.js","sources":["../src/PluginRoot.tsx"],"sourcesContent":["import { Route, Routes } from 'react-router-dom';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nimport { RiScPlugin } from './components/riScPlugin/RiScPlugin';\nimport { ScenarioProvider } from './contexts/ScenarioContext';\nimport { riScRouteRef, scenarioRouteRef } from './routes';\nimport { RiScProvider } from './contexts/RiScContext';\n\nconst emotionInsertionPoint = document.createElement('meta');\nemotionInsertionPoint.setAttribute('name', 'emotion-insertion-point');\ndocument.querySelector('head')?.appendChild(emotionInsertionPoint);\n\nconst cache = createCache({\n key: 'css',\n insertionPoint: emotionInsertionPoint,\n});\n\nfunction ProvidedPlugin() {\n return (\n <CacheProvider value={cache}>\n <RiScProvider>\n <ScenarioProvider>\n <RiScPlugin />\n </ScenarioProvider>\n </RiScProvider>\n </CacheProvider>\n );\n}\n\nexport function PluginRoot() {\n return (\n <Routes>\n <Route path=\"/\" element={<ProvidedPlugin />} />\n <Route path={riScRouteRef.path} element={<ProvidedPlugin />} />\n <Route path={scenarioRouteRef.path} element={<ProvidedPlugin />} />\n </Routes>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAQA,MAAM,qBAAA,GAAwB,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA;AAC3D,qBAAsB,CAAA,YAAA,CAAa,QAAQ,yBAAyB,CAAA;AACpE,QAAA,CAAS,aAAc,CAAA,MAAM,CAAG,EAAA,WAAA,CAAY,qBAAqB,CAAA;AAEjE,MAAM,QAAQ,WAAY,CAAA;AAAA,EACxB,GAAK,EAAA,KAAA;AAAA,EACL,cAAgB,EAAA;AAClB,CAAC,CAAA;AAED,SAAS,cAAiB,GAAA;AACxB,EAAA,uBACG,GAAA,CAAA,aAAA,EAAA,EAAc,KAAO,EAAA,KAAA,EACpB,QAAC,kBAAA,GAAA,CAAA,YAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,gBAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,UAAA,EAAA,EAAW,CACd,EAAA,CAAA,EACF,CACF,EAAA,CAAA;AAEJ;AAEO,SAAS,UAAa,GAAA;AAC3B,EAAA,4BACG,MACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAM,IAAK,EAAA,GAAA,EAAI,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA,CAAA;AAAA,oBAC7C,GAAA,CAAC,SAAM,IAAM,EAAA,YAAA,CAAa,MAAM,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA,CAAA;AAAA,oBAC7D,GAAA,CAAC,SAAM,IAAM,EAAA,gBAAA,CAAiB,MAAM,OAAS,kBAAA,GAAA,CAAC,kBAAe,CAAI,EAAA;AAAA,GACnE,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -7,10 +7,10 @@ const useEditButtonStyle = makeStyles((theme) => ({
|
|
|
7
7
|
color: theme.palette.type === "dark" ? "#fff" : "rgba(0, 0, 0, 0.54)"
|
|
8
8
|
}
|
|
9
9
|
}));
|
|
10
|
-
|
|
10
|
+
function EditButton(props) {
|
|
11
11
|
const { icon } = useEditButtonStyle();
|
|
12
12
|
return /* @__PURE__ */ jsx(IconButton, { size: "small", ...props, children: /* @__PURE__ */ jsx(EditIcon, { className: icon, "aria-label": "Edit" }) });
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
|
|
15
15
|
export { EditButton as default };
|
|
16
16
|
//# sourceMappingURL=EditButton.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditButton.esm.js","sources":["../../../src/components/common/EditButton.tsx"],"sourcesContent":["import {\n IconButton,\n IconButtonProps,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport EditIcon from '@mui/icons-material/Edit';\n\nconst useEditButtonStyle = makeStyles((theme: Theme) => ({\n icon: {\n color: theme.palette.type === 'dark' ? '#fff' : 'rgba(0, 0, 0, 0.54)',\n },\n}));\n\
|
|
1
|
+
{"version":3,"file":"EditButton.esm.js","sources":["../../../src/components/common/EditButton.tsx"],"sourcesContent":["import {\n IconButton,\n IconButtonProps,\n makeStyles,\n Theme,\n} from '@material-ui/core';\nimport EditIcon from '@mui/icons-material/Edit';\n\nconst useEditButtonStyle = makeStyles((theme: Theme) => ({\n icon: {\n color: theme.palette.type === 'dark' ? '#fff' : 'rgba(0, 0, 0, 0.54)',\n },\n}));\n\nfunction EditButton(props: IconButtonProps) {\n const { icon } = useEditButtonStyle();\n\n return (\n <IconButton size=\"small\" {...props}>\n <EditIcon className={icon} aria-label=\"Edit\" />\n </IconButton>\n );\n}\n\nexport default EditButton;\n"],"names":[],"mappings":";;;;AAQA,MAAM,kBAAA,GAAqB,UAAW,CAAA,CAAC,KAAkB,MAAA;AAAA,EACvD,IAAM,EAAA;AAAA,IACJ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,MAAS,GAAA;AAAA;AAEpD,CAAE,CAAA,CAAA;AAEF,SAAS,WAAW,KAAwB,EAAA;AAC1C,EAAM,MAAA,EAAE,IAAK,EAAA,GAAI,kBAAmB,EAAA;AAEpC,EAAA,uBACG,GAAA,CAAA,UAAA,EAAA,EAAW,IAAK,EAAA,OAAA,EAAS,GAAG,KAAA,EAC3B,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EAAS,SAAW,EAAA,IAAA,EAAM,YAAW,EAAA,MAAA,EAAO,CAC/C,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import Typography from '@mui/material/Typography';
|
|
3
|
+
import ReactMarkdown from 'react-markdown';
|
|
4
|
+
import 'github-markdown-css/github-markdown.css';
|
|
5
|
+
import remarkBreaks from 'remark-breaks';
|
|
6
|
+
|
|
7
|
+
function Markdown({ description }) {
|
|
8
|
+
return /* @__PURE__ */ jsx(Typography, { className: "markdown-body", children: /* @__PURE__ */ jsx(ReactMarkdown, { remarkPlugins: [remarkBreaks], children: description }) });
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { Markdown };
|
|
12
|
+
//# sourceMappingURL=Markdown.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Markdown.esm.js","sources":["../../../src/components/common/Markdown.tsx"],"sourcesContent":["import Typography from '@mui/material/Typography';\nimport ReactMarkdown from 'react-markdown';\nimport 'github-markdown-css/github-markdown.css';\nimport remarkBreaks from 'remark-breaks';\n\ntype Props = {\n description: string;\n};\n\nexport function Markdown({ description }: Props) {\n return (\n <Typography className=\"markdown-body\">\n <ReactMarkdown remarkPlugins={[remarkBreaks]}>\n {description}\n </ReactMarkdown>\n </Typography>\n );\n}\n"],"names":[],"mappings":";;;;;;AASgB,SAAA,QAAA,CAAS,EAAE,WAAA,EAAsB,EAAA;AAC/C,EACE,uBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,SAAA,EAAU,eACpB,EAAA,QAAA,kBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,aAAA,EAAe,CAAC,YAAY,CACxC,EAAA,QAAA,EAAA,WAAA,EACH,CACF,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -7,16 +7,7 @@ import MDEditor from '@uiw/react-md-editor';
|
|
|
7
7
|
import { formLabel, formHelperText } from './typography.esm.js';
|
|
8
8
|
|
|
9
9
|
const MarkdownInput = forwardRef(
|
|
10
|
-
({
|
|
11
|
-
label,
|
|
12
|
-
sublabel,
|
|
13
|
-
error,
|
|
14
|
-
helperText,
|
|
15
|
-
required,
|
|
16
|
-
minRows,
|
|
17
|
-
value,
|
|
18
|
-
onMarkdownChange
|
|
19
|
-
}, ref) => {
|
|
10
|
+
({ label, sublabel, error, helperText, minRows, value, onMarkdownChange }, ref) => {
|
|
20
11
|
const [markdownContent, setMarkdownContent] = useState(
|
|
21
12
|
value
|
|
22
13
|
);
|
|
@@ -27,29 +18,21 @@ const MarkdownInput = forwardRef(
|
|
|
27
18
|
setMarkdownContent(newValue || "");
|
|
28
19
|
onMarkdownChange?.(newValue || "");
|
|
29
20
|
};
|
|
30
|
-
return /* @__PURE__ */ jsxs(
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
preview: "edit",
|
|
46
|
-
height: minRows ? minRows * 24 : 64
|
|
47
|
-
}
|
|
48
|
-
),
|
|
49
|
-
helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
|
|
50
|
-
]
|
|
51
|
-
}
|
|
52
|
-
);
|
|
21
|
+
return /* @__PURE__ */ jsxs(FormControl, { sx: { width: "100%", gap: "4px" }, error, children: [
|
|
22
|
+
label && /* @__PURE__ */ jsx(FormLabel, { sx: formLabel, children: label }),
|
|
23
|
+
sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
|
|
24
|
+
/* @__PURE__ */ jsx(
|
|
25
|
+
MDEditor,
|
|
26
|
+
{
|
|
27
|
+
ref,
|
|
28
|
+
value: markdownContent,
|
|
29
|
+
onChange: handleMarkdownChange,
|
|
30
|
+
preview: "edit",
|
|
31
|
+
height: minRows ? minRows * 24 : 64
|
|
32
|
+
}
|
|
33
|
+
),
|
|
34
|
+
helperText && /* @__PURE__ */ jsx(FormHelperText, { children: helperText })
|
|
35
|
+
] });
|
|
53
36
|
}
|
|
54
37
|
);
|
|
55
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownInput.esm.js","sources":["../../../src/components/common/MarkdownInput.tsx"],"sourcesContent":["import { forwardRef, useState, useEffect } from 'react';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MDEditor from '@uiw/react-md-editor';\nimport { formHelperText, formLabel } from './typography';\nimport { TextFieldProps } from '@material-ui/core';\n\ntype Props = TextFieldProps & {\n sublabel?: string;\n value?: string;\n onMarkdownChange?: (markdown: string) => void;\n minRows?: number;\n};\n\nexport const MarkdownInput = forwardRef<HTMLDivElement, Props>(\n (\n {
|
|
1
|
+
{"version":3,"file":"MarkdownInput.esm.js","sources":["../../../src/components/common/MarkdownInput.tsx"],"sourcesContent":["import { forwardRef, useState, useEffect } from 'react';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MDEditor from '@uiw/react-md-editor';\nimport { formHelperText, formLabel } from './typography';\nimport { TextFieldProps } from '@material-ui/core';\n\ntype Props = TextFieldProps & {\n sublabel?: string;\n value?: string;\n onMarkdownChange?: (markdown: string) => void;\n minRows?: number;\n};\n\nexport const MarkdownInput = forwardRef<HTMLDivElement, Props>(\n (\n { label, sublabel, error, helperText, minRows, value, onMarkdownChange },\n ref,\n ) => {\n const [markdownContent, setMarkdownContent] = useState<string | undefined>(\n value,\n );\n\n useEffect(() => {\n setMarkdownContent(value);\n }, [value]);\n\n const handleMarkdownChange = (newValue: string | undefined) => {\n setMarkdownContent(newValue || '');\n onMarkdownChange?.(newValue || '');\n };\n\n return (\n <FormControl sx={{ width: '100%', gap: '4px' }} error={error}>\n {label && <FormLabel sx={formLabel}>{label}</FormLabel>}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n <MDEditor\n ref={ref}\n value={markdownContent}\n onChange={handleMarkdownChange}\n preview=\"edit\"\n height={minRows ? minRows * 24 : 64}\n />\n {helperText && <FormHelperText>{helperText}</FormHelperText>}\n </FormControl>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;AAeO,MAAM,aAAgB,GAAA,UAAA;AAAA,EAC3B,CACE,EAAE,KAAA,EAAO,QAAU,EAAA,KAAA,EAAO,YAAY,OAAS,EAAA,KAAA,EAAO,gBAAiB,EAAA,EACvE,GACG,KAAA;AACH,IAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,MAC5C;AAAA,KACF;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,kBAAA,CAAmB,KAAK,CAAA;AAAA,KAC1B,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,IAAM,MAAA,oBAAA,GAAuB,CAAC,QAAiC,KAAA;AAC7D,MAAA,kBAAA,CAAmB,YAAY,EAAE,CAAA;AACjC,MAAA,gBAAA,GAAmB,YAAY,EAAE,CAAA;AAAA,KACnC;AAEA,IACE,uBAAA,IAAA,CAAC,eAAY,EAAI,EAAA,EAAE,OAAO,MAAQ,EAAA,GAAA,EAAK,KAAM,EAAA,EAAG,KAC7C,EAAA,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAU,GAAA,CAAA,SAAA,EAAA,EAAU,EAAI,EAAA,SAAA,EAAY,QAAM,EAAA,KAAA,EAAA,CAAA;AAAA,MAC1C,QACC,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,EAAA,EAAI,gBAAiB,QAAS,EAAA,QAAA,EAAA,CAAA;AAAA,sBAEhD,GAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,KAAO,EAAA,eAAA;AAAA,UACP,QAAU,EAAA,oBAAA;AAAA,UACV,OAAQ,EAAA,MAAA;AAAA,UACR,MAAA,EAAQ,OAAU,GAAA,OAAA,GAAU,EAAK,GAAA;AAAA;AAAA,OACnC;AAAA,MACC,UAAA,oBAAe,GAAA,CAAA,cAAA,EAAA,EAAgB,QAAW,EAAA,UAAA,EAAA;AAAA,KAC7C,EAAA,CAAA;AAAA;AAGN;;;;"}
|
|
@@ -13,7 +13,7 @@ import MenuItem from '@mui/material/MenuItem';
|
|
|
13
13
|
import ListItemText from '@mui/material/ListItemText';
|
|
14
14
|
import { formLabel, formHelperText } from './typography.esm.js';
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
function Select({
|
|
17
17
|
label,
|
|
18
18
|
sublabel,
|
|
19
19
|
error,
|
|
@@ -25,38 +25,45 @@ const Select = ({
|
|
|
25
25
|
labelTranslationKey,
|
|
26
26
|
options,
|
|
27
27
|
...props
|
|
28
|
-
})
|
|
28
|
+
}) {
|
|
29
29
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
30
30
|
const { field } = useController({
|
|
31
31
|
name,
|
|
32
32
|
control,
|
|
33
33
|
rules: { required }
|
|
34
34
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
label: (
|
|
48
|
-
/* @ts-ignore Because ts can't typecheck strings against our keys */
|
|
49
|
-
labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value
|
|
50
|
-
)
|
|
35
|
+
function renderValue(values) {
|
|
36
|
+
if (!multiple) {
|
|
37
|
+
return options.find((option) => option.value === values)?.renderedValue;
|
|
38
|
+
}
|
|
39
|
+
return /* @__PURE__ */ jsx(
|
|
40
|
+
Box,
|
|
41
|
+
{
|
|
42
|
+
sx: {
|
|
43
|
+
display: "flex",
|
|
44
|
+
flexWrap: "wrap",
|
|
45
|
+
marginBottom: 0,
|
|
46
|
+
paddingBottom: 0
|
|
51
47
|
},
|
|
52
|
-
value
|
|
53
|
-
|
|
48
|
+
children: values.map((value) => /* @__PURE__ */ jsx(
|
|
49
|
+
Chip,
|
|
50
|
+
{
|
|
51
|
+
label: (
|
|
52
|
+
/* @ts-ignore Because ts can't typecheck strings against our keys */
|
|
53
|
+
labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value
|
|
54
|
+
)
|
|
55
|
+
},
|
|
56
|
+
value
|
|
57
|
+
))
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
function handleChecked(fieldValue, optionValue) {
|
|
62
|
+
if (Array.isArray(fieldValue)) {
|
|
63
|
+
return fieldValue.includes(optionValue);
|
|
54
64
|
}
|
|
55
|
-
) : options.find((option) => option.value === values)?.renderedValue;
|
|
56
|
-
const handleChecked = (fieldValue, optionValue) => {
|
|
57
|
-
if (Array.isArray(fieldValue)) return fieldValue.includes(optionValue);
|
|
58
65
|
return fieldValue === optionValue;
|
|
59
|
-
}
|
|
66
|
+
}
|
|
60
67
|
return /* @__PURE__ */ jsxs(FormControl, { sx: { width: "100%", gap: "4px" }, children: [
|
|
61
68
|
label && /* @__PURE__ */ jsx(FormLabel, { sx: formLabel, required, children: label }),
|
|
62
69
|
sublabel && /* @__PURE__ */ jsx(FormHelperText, { sx: formHelperText, children: sublabel }),
|
|
@@ -87,7 +94,7 @@ const Select = ({
|
|
|
87
94
|
),
|
|
88
95
|
error && /* @__PURE__ */ jsx(FormHelperText, { error: true, children: helperText })
|
|
89
96
|
] });
|
|
90
|
-
}
|
|
97
|
+
}
|
|
91
98
|
|
|
92
99
|
export { Select };
|
|
93
100
|
//# sourceMappingURL=Select.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.esm.js","sources":["../../../src/components/common/Select.tsx"],"sourcesContent":["import {\n Control,\n FieldValues,\n Path,\n useController,\n type UseControllerReturn,\n} from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MUISelect, { SelectProps } from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props<T extends FieldValues> = SelectProps & {\n sublabel?: string;\n helperText?: string;\n control?: Control<T, any>;\n name: Path<T>;\n labelTranslationKey?: string;\n options: { value: string | number; renderedValue: string | number }[];\n};\n\nexport
|
|
1
|
+
{"version":3,"file":"Select.esm.js","sources":["../../../src/components/common/Select.tsx"],"sourcesContent":["import {\n Control,\n FieldValues,\n Path,\n useController,\n type UseControllerReturn,\n} from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport Chip from '@mui/material/Chip';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport MUISelect, { SelectProps } from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { formHelperText, formLabel } from './typography';\n\ntype Props<T extends FieldValues> = SelectProps & {\n sublabel?: string;\n helperText?: string;\n control?: Control<T, any>;\n name: Path<T>;\n labelTranslationKey?: string;\n options: { value: string | number; renderedValue: string | number }[];\n};\n\nexport function Select<T extends FieldValues>({\n label,\n sublabel,\n error,\n helperText,\n required,\n control,\n name,\n multiple,\n labelTranslationKey,\n options,\n ...props\n}: Props<T>) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { field } = useController({\n name,\n control,\n rules: { required },\n });\n\n // values er strengt tatt unknown, men da må vi bruke mye ts-ignore for å komme i mål\n function renderValue(values: any) {\n if (!multiple) {\n return options.find(option => option.value === values)?.renderedValue;\n }\n return (\n <Box\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n marginBottom: 0,\n paddingBottom: 0,\n }}\n >\n {values.map((value: string) => (\n <Chip\n key={value}\n label={\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n labelTranslationKey ? t(`${labelTranslationKey}.${value}`) : value\n }\n />\n ))}\n </Box>\n );\n }\n\n function handleChecked(\n fieldValue: UseControllerReturn['field']['value'],\n optionValue: Props<T>['options'][number]['value'],\n ) {\n if (Array.isArray(fieldValue)) {\n return fieldValue.includes(optionValue);\n }\n return fieldValue === optionValue;\n }\n\n return (\n <FormControl sx={{ width: '100%', gap: '4px' }}>\n {label && (\n <FormLabel sx={formLabel} required={required}>\n {label}\n </FormLabel>\n )}\n {sublabel && (\n <FormHelperText sx={formHelperText}>{sublabel}</FormHelperText>\n )}\n\n <MUISelect\n MenuProps={{\n disablePortal: true,\n }}\n variant=\"outlined\"\n renderValue={renderValue}\n multiple={multiple}\n SelectDisplayProps={\n multiple\n ? {\n style: {\n paddingBottom: 8,\n paddingTop: 16,\n minHeight: 40,\n },\n }\n : {}\n }\n inputRef={field.ref}\n {...field}\n {...props}\n >\n {options.map(option => (\n <MenuItem key={option.value} value={option.value}>\n {multiple && (\n <Checkbox checked={handleChecked(field.value, option.value)} />\n )}\n <ListItemText primary={option.renderedValue} />\n </MenuItem>\n ))}\n </MUISelect>\n {error && <FormHelperText error>{helperText}</FormHelperText>}\n </FormControl>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -2,28 +2,30 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import Box from '@mui/material/Box';
|
|
3
3
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
5
|
+
function Spinner({ size }) {
|
|
6
|
+
return /* @__PURE__ */ jsx(
|
|
7
|
+
Box,
|
|
8
|
+
{
|
|
9
|
+
sx: {
|
|
10
|
+
display: "flex",
|
|
11
|
+
minWidth: "100wh",
|
|
12
|
+
height: "100vh",
|
|
13
|
+
justifyContent: "center",
|
|
14
|
+
alignItems: "flex-start"
|
|
15
|
+
},
|
|
16
|
+
children: /* @__PURE__ */ jsx(
|
|
17
|
+
CircularProgress,
|
|
18
|
+
{
|
|
19
|
+
size,
|
|
20
|
+
sx: {
|
|
21
|
+
display: "flex",
|
|
22
|
+
marginTop: "200px"
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
}
|
|
27
29
|
|
|
28
30
|
export { Spinner };
|
|
29
31
|
//# sourceMappingURL=Spinner.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport
|
|
1
|
+
{"version":3,"file":"Spinner.esm.js","sources":["../../../src/components/common/Spinner.tsx"],"sourcesContent":["import Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport function Spinner({ size }: { size?: string | number }) {\n return (\n <Box\n sx={{\n display: 'flex',\n minWidth: '100wh',\n height: '100vh',\n justifyContent: 'center',\n alignItems: 'flex-start',\n }}\n >\n <CircularProgress\n size={size}\n sx={{\n display: 'flex',\n marginTop: '200px',\n }}\n />\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;AAGgB,SAAA,OAAA,CAAQ,EAAE,IAAA,EAAoC,EAAA;AAC5D,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAI,EAAA;AAAA,QACF,OAAS,EAAA,MAAA;AAAA,QACT,QAAU,EAAA,OAAA;AAAA,QACV,MAAQ,EAAA,OAAA;AAAA,QACR,cAAgB,EAAA,QAAA;AAAA,QAChB,UAAY,EAAA;AAAA,OACd;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,IAAA;AAAA,UACA,EAAI,EAAA;AAAA,YACF,OAAS,EAAA,MAAA;AAAA,YACT,SAAW,EAAA;AAAA;AACb;AAAA;AACF;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -11,14 +11,14 @@ import { isPublicAgeKeyValid } from '../../utils/utilityfunctions.esm.js';
|
|
|
11
11
|
import FormHelperText from '@mui/material/FormHelperText';
|
|
12
12
|
import { URLS } from '../../urls/index.esm.js';
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
function ConfigEncryptionDialog({
|
|
15
15
|
gcpCryptoKeys,
|
|
16
16
|
sopsData,
|
|
17
17
|
setValue,
|
|
18
18
|
register,
|
|
19
19
|
errors,
|
|
20
20
|
state
|
|
21
|
-
})
|
|
21
|
+
}) {
|
|
22
22
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
23
23
|
const [publicAgeKeyHelperText, setPublicKeyTextFieldHelperText] = useState("");
|
|
24
24
|
const [publicAgeKeyError, setPublicKeyTextFieldError] = useState(false);
|
|
@@ -64,10 +64,10 @@ const ConfigEncryptionDialog = ({
|
|
|
64
64
|
register("sopsConfig.gcp_kms", {
|
|
65
65
|
validate: (gcpKeys) => gcpKeys.length > 0
|
|
66
66
|
});
|
|
67
|
-
|
|
67
|
+
function handleChangeGcpCryptoKey(newKey) {
|
|
68
68
|
setChosenGcpCryptoKey(newKey);
|
|
69
|
-
}
|
|
70
|
-
|
|
69
|
+
}
|
|
70
|
+
function handleAddPublicAgeKey() {
|
|
71
71
|
if (isPublicAgeKeyValid(newPublicAgeKey)) {
|
|
72
72
|
if (publicAgeKeys.includes(newPublicAgeKey)) {
|
|
73
73
|
setPublicKeyTextFieldHelperText(
|
|
@@ -84,7 +84,7 @@ const ConfigEncryptionDialog = ({
|
|
|
84
84
|
);
|
|
85
85
|
setPublicKeyTextFieldError(true);
|
|
86
86
|
}
|
|
87
|
-
}
|
|
87
|
+
}
|
|
88
88
|
return /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", flexDirection: "column", gap: "16px" }, children: [
|
|
89
89
|
/* @__PURE__ */ jsx(DialogContentText, { children: state === RiScDialogStates.Create ? t("sopsConfigDialog.description.new") : t("sopsConfigDialog.description.edit") }),
|
|
90
90
|
/* @__PURE__ */ jsx(Typography, { variant: "subtitle2", children: t("sopsConfigDialog.selectKeysTitle") }),
|
|
@@ -195,7 +195,7 @@ const ConfigEncryptionDialog = ({
|
|
|
195
195
|
] }) })
|
|
196
196
|
] }) })
|
|
197
197
|
] });
|
|
198
|
-
}
|
|
198
|
+
}
|
|
199
199
|
|
|
200
200
|
export { ConfigEncryptionDialog as default };
|
|
201
201
|
//# sourceMappingURL=ConfigEncryptionDialog.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigEncryptionDialog.esm.js","sources":["../../../src/components/riScDialog/ConfigEncryptionDialog.tsx"],"sourcesContent":["import {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Button,\n DialogContentText,\n FormLabel,\n IconButton,\n Link,\n List,\n ListItem,\n ListItemSecondaryAction,\n ListItemText,\n TextField,\n Typography,\n} from '@mui/material';\nimport { GcpCryptoKeyMenu } from '../sopsConfigDialog/GcpCryptoKeyMenu';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { AddCircle, ExpandMore } from '@mui/icons-material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { GcpCryptoKeyObject, SopsConfigDTO } from '../../utils/DTOs';\nimport { useEffect, useState } from 'react';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { UseFormRegister, UseFormSetValue } from 'react-hook-form';\nimport { RiScDialogStates } from './RiScDialog';\nimport { isPublicAgeKeyValid } from '../../utils/utilityfunctions';\nimport { FieldErrors } from 'react-hook-form/dist/types/errors';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport { URLS } from '../../urls';\n\ninterface ConfigEncryptionDialogProps {\n gcpCryptoKeys: GcpCryptoKeyObject[];\n sopsData?: SopsConfigDTO;\n setValue: UseFormSetValue<RiScWithMetadata>;\n register: UseFormRegister<RiScWithMetadata>;\n errors: FieldErrors<RiScWithMetadata>;\n state: RiScDialogStates;\n}\n\nconst ConfigEncryptionDialog = ({\n gcpCryptoKeys,\n sopsData,\n setValue,\n register,\n errors,\n state,\n}: ConfigEncryptionDialogProps) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [publicAgeKeyHelperText, setPublicKeyTextFieldHelperText] =\n useState('');\n const [publicAgeKeyError, setPublicKeyTextFieldError] = useState(false);\n const [newPublicAgeKey, setNewPublicAgeKey] = useState('');\n const [publicAgeKeys, setPublicAgeKeys] = useState<string[]>(() => {\n if (sopsData?.age) {\n return sopsData.age.map(age => age.recipient);\n }\n return [];\n });\n\n const [chosenGcpCryptoKey, setChosenGcpCryptoKey] =\n useState<GcpCryptoKeyObject>(() => {\n if (state === RiScDialogStates.EditEncryption && sopsData?.gcp_kms) {\n const gcpKms = sopsData.gcp_kms[0];\n if (gcpKms?.resource_id) {\n const resourceParts = gcpKms.resource_id.split('/');\n if (resourceParts.length === 8) {\n return {\n projectId: resourceParts[1],\n keyRing: resourceParts[5],\n keyName: resourceParts[7],\n locations: resourceParts[3],\n resourceId: gcpKms.resource_id,\n createdAt: gcpKms.created_at,\n hasEncryptDecryptAccess: true,\n };\n }\n }\n }\n return gcpCryptoKeys[0];\n });\n\n useEffect(() => {\n setValue('sopsConfig', {\n shamir_threshold: 2,\n gcp_kms: chosenGcpCryptoKey\n ? [\n {\n resource_id: chosenGcpCryptoKey.resourceId,\n created_at: chosenGcpCryptoKey.createdAt,\n },\n ]\n : [],\n age: publicAgeKeys.map(key => ({ recipient: key })),\n });\n }, [chosenGcpCryptoKey, publicAgeKeys, setValue]);\n\n // Require one key group to contain a GCP key\n register('sopsConfig.gcp_kms', {\n validate: gcpKeys => gcpKeys.length > 0,\n });\n\n const handleChangeGcpCryptoKey = (newKey: GcpCryptoKeyObject) => {\n setChosenGcpCryptoKey(newKey);\n };\n\n const handleAddPublicAgeKey = () => {\n if (isPublicAgeKeyValid(newPublicAgeKey)) {\n if (publicAgeKeys.includes(newPublicAgeKey)) {\n setPublicKeyTextFieldHelperText(\n t('sopsConfigDialog.publicKeyHelperTextKeyAlreadyExistInSopsConfig'),\n );\n setPublicKeyTextFieldError(true);\n } else {\n setPublicAgeKeys([...publicAgeKeys, newPublicAgeKey]);\n setNewPublicAgeKey('');\n }\n } else {\n setPublicKeyTextFieldHelperText(\n t('sopsConfigDialog.publicKeyHelperTextKeyNotValid'),\n );\n setPublicKeyTextFieldError(true);\n }\n };\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <DialogContentText>\n {state === RiScDialogStates.Create\n ? t('sopsConfigDialog.description.new')\n : t('sopsConfigDialog.description.edit')}\n </DialogContentText>\n <Typography variant=\"subtitle2\">\n {t('sopsConfigDialog.selectKeysTitle')}\n </Typography>\n\n {chosenGcpCryptoKey !== undefined ? (\n <>\n {t('sopsConfigDialog.gcpCryptoKeyDescription')}\n <GcpCryptoKeyMenu\n chosenGcpCryptoKey={chosenGcpCryptoKey}\n onChange={handleChangeGcpCryptoKey}\n gcpCryptoKeys={\n gcpCryptoKeys.includes(chosenGcpCryptoKey)\n ? gcpCryptoKeys\n : [...gcpCryptoKeys, chosenGcpCryptoKey]\n }\n />\n </>\n ) : (\n <Typography variant=\"body1\">\n {t('sopsConfigDialog.gcpCryptoKeyNoSelectableKey')}\n </Typography>\n )}\n {errors.sopsConfig !== undefined && (\n <FormHelperText error={true}>\n {t('sopsConfigDialog.gcpCryptoKeyNonSelectedErrorMessage')}\n </FormHelperText>\n )}\n <Box>\n <Accordion elevation={1} defaultExpanded={publicAgeKeys.length > 0}>\n <AccordionSummary\n expandIcon={<ExpandMore />}\n aria-controls=\"panel1-content\"\n id=\"panel1-header\"\n >\n {t('sopsConfigDialog.publicAgeKeyQuestion')}\n </AccordionSummary>\n <AccordionDetails>\n <Box>\n {publicAgeKeys.length > 0 && (\n <FormLabel>\n {t('sopsConfigDialog.publicAgeKeysAlreadyPresent')}\n </FormLabel>\n )}\n <List>\n {publicAgeKeys.map(key => (\n <ListItem key={key} dense>\n <ListItemText>{key}</ListItemText>\n <ListItemSecondaryAction>\n <IconButton\n onClick={() => {\n setPublicAgeKeys(\n publicAgeKeys.filter(k => k !== key),\n );\n }}\n >\n <DeleteIcon />\n </IconButton>\n </ListItemSecondaryAction>\n </ListItem>\n ))}\n </List>\n <Typography>\n {t('dictionary.click')}{' '}\n <Link\n href={\n URLS.external.kartverket_atlassian_net__write_ros_locally\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"primary\"\n underline=\"hover\"\n >\n {t('dictionary.here')}\n </Link>{' '}\n {t('sopsConfigDialog.writeLocalRiscSuffix')}\n </Typography>\n <Typography>\n {`${t('sopsConfigDialog.publicAgeKeyDescription')} (${t(\n 'dictionary.optional',\n )})`}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'space-between',\n gap: 2,\n }}\n >\n <TextField\n label={t('sopsConfigDialog.publicAgeKey')}\n helperText={publicAgeKeyHelperText}\n error={publicAgeKeyError}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n handleAddPublicAgeKey();\n }\n }}\n onFocus={() => {\n setPublicKeyTextFieldError(false);\n setPublicKeyTextFieldHelperText('');\n }}\n value={newPublicAgeKey}\n onChange={e => setNewPublicAgeKey(e.target.value)}\n />\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"primary\"\n onClick={handleAddPublicAgeKey}\n sx={{\n maxWidth: 200,\n mt: 1,\n }}\n >\n {t('sopsConfigDialog.addPublicAgeKey')}\n </Button>\n </Box>\n </Box>\n </AccordionDetails>\n </Accordion>\n </Box>\n </Box>\n );\n};\n\nexport default ConfigEncryptionDialog;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConfigEncryptionDialog.esm.js","sources":["../../../src/components/riScDialog/ConfigEncryptionDialog.tsx"],"sourcesContent":["import {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Box,\n Button,\n DialogContentText,\n FormLabel,\n IconButton,\n Link,\n List,\n ListItem,\n ListItemSecondaryAction,\n ListItemText,\n TextField,\n Typography,\n} from '@mui/material';\nimport { GcpCryptoKeyMenu } from '../sopsConfigDialog/GcpCryptoKeyMenu';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { AddCircle, ExpandMore } from '@mui/icons-material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { GcpCryptoKeyObject, SopsConfigDTO } from '../../utils/DTOs';\nimport { useEffect, useState } from 'react';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { UseFormRegister, UseFormSetValue } from 'react-hook-form';\nimport { RiScDialogStates } from './RiScDialog';\nimport { isPublicAgeKeyValid } from '../../utils/utilityfunctions';\nimport { FieldErrors } from 'react-hook-form/dist/types/errors';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport { URLS } from '../../urls';\n\ninterface ConfigEncryptionDialogProps {\n gcpCryptoKeys: GcpCryptoKeyObject[];\n sopsData?: SopsConfigDTO;\n setValue: UseFormSetValue<RiScWithMetadata>;\n register: UseFormRegister<RiScWithMetadata>;\n errors: FieldErrors<RiScWithMetadata>;\n state: RiScDialogStates;\n}\n\nfunction ConfigEncryptionDialog({\n gcpCryptoKeys,\n sopsData,\n setValue,\n register,\n errors,\n state,\n}: ConfigEncryptionDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const [publicAgeKeyHelperText, setPublicKeyTextFieldHelperText] =\n useState('');\n const [publicAgeKeyError, setPublicKeyTextFieldError] = useState(false);\n const [newPublicAgeKey, setNewPublicAgeKey] = useState('');\n const [publicAgeKeys, setPublicAgeKeys] = useState<string[]>(() => {\n if (sopsData?.age) {\n return sopsData.age.map(age => age.recipient);\n }\n return [];\n });\n\n const [chosenGcpCryptoKey, setChosenGcpCryptoKey] =\n useState<GcpCryptoKeyObject>(() => {\n if (state === RiScDialogStates.EditEncryption && sopsData?.gcp_kms) {\n const gcpKms = sopsData.gcp_kms[0];\n if (gcpKms?.resource_id) {\n const resourceParts = gcpKms.resource_id.split('/');\n if (resourceParts.length === 8) {\n return {\n projectId: resourceParts[1],\n keyRing: resourceParts[5],\n keyName: resourceParts[7],\n locations: resourceParts[3],\n resourceId: gcpKms.resource_id,\n createdAt: gcpKms.created_at,\n hasEncryptDecryptAccess: true,\n };\n }\n }\n }\n return gcpCryptoKeys[0];\n });\n\n useEffect(() => {\n setValue('sopsConfig', {\n shamir_threshold: 2,\n gcp_kms: chosenGcpCryptoKey\n ? [\n {\n resource_id: chosenGcpCryptoKey.resourceId,\n created_at: chosenGcpCryptoKey.createdAt,\n },\n ]\n : [],\n age: publicAgeKeys.map(key => ({ recipient: key })),\n });\n }, [chosenGcpCryptoKey, publicAgeKeys, setValue]);\n\n // Require one key group to contain a GCP key\n register('sopsConfig.gcp_kms', {\n validate: gcpKeys => gcpKeys.length > 0,\n });\n\n function handleChangeGcpCryptoKey(newKey: GcpCryptoKeyObject) {\n setChosenGcpCryptoKey(newKey);\n }\n\n function handleAddPublicAgeKey() {\n if (isPublicAgeKeyValid(newPublicAgeKey)) {\n if (publicAgeKeys.includes(newPublicAgeKey)) {\n setPublicKeyTextFieldHelperText(\n t('sopsConfigDialog.publicKeyHelperTextKeyAlreadyExistInSopsConfig'),\n );\n setPublicKeyTextFieldError(true);\n } else {\n setPublicAgeKeys([...publicAgeKeys, newPublicAgeKey]);\n setNewPublicAgeKey('');\n }\n } else {\n setPublicKeyTextFieldHelperText(\n t('sopsConfigDialog.publicKeyHelperTextKeyNotValid'),\n );\n setPublicKeyTextFieldError(true);\n }\n }\n\n return (\n <Box sx={{ display: 'flex', flexDirection: 'column', gap: '16px' }}>\n <DialogContentText>\n {state === RiScDialogStates.Create\n ? t('sopsConfigDialog.description.new')\n : t('sopsConfigDialog.description.edit')}\n </DialogContentText>\n <Typography variant=\"subtitle2\">\n {t('sopsConfigDialog.selectKeysTitle')}\n </Typography>\n\n {chosenGcpCryptoKey !== undefined ? (\n <>\n {t('sopsConfigDialog.gcpCryptoKeyDescription')}\n <GcpCryptoKeyMenu\n chosenGcpCryptoKey={chosenGcpCryptoKey}\n onChange={handleChangeGcpCryptoKey}\n gcpCryptoKeys={\n gcpCryptoKeys.includes(chosenGcpCryptoKey)\n ? gcpCryptoKeys\n : [...gcpCryptoKeys, chosenGcpCryptoKey]\n }\n />\n </>\n ) : (\n <Typography variant=\"body1\">\n {t('sopsConfigDialog.gcpCryptoKeyNoSelectableKey')}\n </Typography>\n )}\n {errors.sopsConfig !== undefined && (\n <FormHelperText error={true}>\n {t('sopsConfigDialog.gcpCryptoKeyNonSelectedErrorMessage')}\n </FormHelperText>\n )}\n <Box>\n <Accordion elevation={1} defaultExpanded={publicAgeKeys.length > 0}>\n <AccordionSummary\n expandIcon={<ExpandMore />}\n aria-controls=\"panel1-content\"\n id=\"panel1-header\"\n >\n {t('sopsConfigDialog.publicAgeKeyQuestion')}\n </AccordionSummary>\n <AccordionDetails>\n <Box>\n {publicAgeKeys.length > 0 && (\n <FormLabel>\n {t('sopsConfigDialog.publicAgeKeysAlreadyPresent')}\n </FormLabel>\n )}\n <List>\n {publicAgeKeys.map(key => (\n <ListItem key={key} dense>\n <ListItemText>{key}</ListItemText>\n <ListItemSecondaryAction>\n <IconButton\n onClick={() => {\n setPublicAgeKeys(\n publicAgeKeys.filter(k => k !== key),\n );\n }}\n >\n <DeleteIcon />\n </IconButton>\n </ListItemSecondaryAction>\n </ListItem>\n ))}\n </List>\n <Typography>\n {t('dictionary.click')}{' '}\n <Link\n href={\n URLS.external.kartverket_atlassian_net__write_ros_locally\n }\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n color=\"primary\"\n underline=\"hover\"\n >\n {t('dictionary.here')}\n </Link>{' '}\n {t('sopsConfigDialog.writeLocalRiscSuffix')}\n </Typography>\n <Typography>\n {`${t('sopsConfigDialog.publicAgeKeyDescription')} (${t(\n 'dictionary.optional',\n )})`}\n </Typography>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'space-between',\n gap: 2,\n }}\n >\n <TextField\n label={t('sopsConfigDialog.publicAgeKey')}\n helperText={publicAgeKeyHelperText}\n error={publicAgeKeyError}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n handleAddPublicAgeKey();\n }\n }}\n onFocus={() => {\n setPublicKeyTextFieldError(false);\n setPublicKeyTextFieldHelperText('');\n }}\n value={newPublicAgeKey}\n onChange={e => setNewPublicAgeKey(e.target.value)}\n />\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"primary\"\n onClick={handleAddPublicAgeKey}\n sx={{\n maxWidth: 200,\n mt: 1,\n }}\n >\n {t('sopsConfigDialog.addPublicAgeKey')}\n </Button>\n </Box>\n </Box>\n </AccordionDetails>\n </Accordion>\n </Box>\n </Box>\n );\n}\n\nexport default ConfigEncryptionDialog;\n"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import Switch from '@mui/material/Switch';
|
|
|
10
10
|
import Typography from '@mui/material/Typography';
|
|
11
11
|
import { DialogContentText } from '@mui/material';
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
function ConfigRiscInfo({
|
|
14
14
|
dialogState,
|
|
15
15
|
createRiScFrom,
|
|
16
16
|
handleChangeCreateRiScFrom,
|
|
@@ -18,7 +18,7 @@ const ConfigRiscInfo = ({
|
|
|
18
18
|
errors,
|
|
19
19
|
setValue,
|
|
20
20
|
watch
|
|
21
|
-
})
|
|
21
|
+
}) {
|
|
22
22
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
23
23
|
const currentScope = watch("content.scope");
|
|
24
24
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -69,7 +69,7 @@ const ConfigRiscInfo = ({
|
|
|
69
69
|
/* @__PURE__ */ jsx(
|
|
70
70
|
FormControlLabel,
|
|
71
71
|
{
|
|
72
|
-
control: /* @__PURE__ */ jsx(Switch, { onChange:
|
|
72
|
+
control: /* @__PURE__ */ jsx(Switch, { onChange: handleChangeCreateRiScFrom }),
|
|
73
73
|
label: createRiScFrom === CreateRiScFrom.Scratch ? t("dictionary.no") : t("dictionary.yes")
|
|
74
74
|
}
|
|
75
75
|
)
|
|
@@ -78,7 +78,7 @@ const ConfigRiscInfo = ({
|
|
|
78
78
|
)
|
|
79
79
|
] })
|
|
80
80
|
] });
|
|
81
|
-
}
|
|
81
|
+
}
|
|
82
82
|
|
|
83
83
|
export { ConfigRiscInfo as default };
|
|
84
84
|
//# sourceMappingURL=ConfigRiscInfo.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigRiscInfo.esm.js","sources":["../../../src/components/riScDialog/ConfigRiscInfo.tsx"],"sourcesContent":["import { MarkdownInput } from '../common/MarkdownInput';\nimport { Input } from '../common/Input';\nimport {\n UseFormRegister,\n UseFormSetValue,\n UseFormWatch,\n} from 'react-hook-form/dist/types/form';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { CreateRiScFrom, RiScDialogStates } from './RiScDialog';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport Typography from '@mui/material/Typography';\nimport { DialogContentText } from '@mui/material';\nimport { FieldErrors } from 'react-hook-form/dist/types/errors';\n\ninterface ConfigRiscInfoProps {\n dialogState: RiScDialogStates;\n createRiScFrom: CreateRiScFrom;\n handleChangeCreateRiScFrom: () => void;\n register: UseFormRegister<RiScWithMetadata>;\n errors: FieldErrors<RiScWithMetadata>;\n setValue: UseFormSetValue<RiScWithMetadata>;\n watch: UseFormWatch<RiScWithMetadata>;\n}\n\
|
|
1
|
+
{"version":3,"file":"ConfigRiscInfo.esm.js","sources":["../../../src/components/riScDialog/ConfigRiscInfo.tsx"],"sourcesContent":["import { MarkdownInput } from '../common/MarkdownInput';\nimport { Input } from '../common/Input';\nimport {\n UseFormRegister,\n UseFormSetValue,\n UseFormWatch,\n} from 'react-hook-form/dist/types/form';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { CreateRiScFrom, RiScDialogStates } from './RiScDialog';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport Box from '@mui/material/Box';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport Typography from '@mui/material/Typography';\nimport { DialogContentText } from '@mui/material';\nimport { FieldErrors } from 'react-hook-form/dist/types/errors';\n\ninterface ConfigRiscInfoProps {\n dialogState: RiScDialogStates;\n createRiScFrom: CreateRiScFrom;\n handleChangeCreateRiScFrom: () => void;\n register: UseFormRegister<RiScWithMetadata>;\n errors: FieldErrors<RiScWithMetadata>;\n setValue: UseFormSetValue<RiScWithMetadata>;\n watch: UseFormWatch<RiScWithMetadata>;\n}\n\nfunction ConfigRiscInfo({\n dialogState,\n createRiScFrom,\n handleChangeCreateRiScFrom,\n register,\n errors,\n setValue,\n watch,\n}: ConfigRiscInfoProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const currentScope = watch('content.scope');\n\n return (\n <>\n <Input\n required\n {...register('content.title', { required: true })}\n error={errors?.content?.title !== undefined}\n label={t('dictionary.title')}\n minRows={4}\n />\n <MarkdownInput\n required\n {...register('content.scope', { required: true })}\n value={currentScope}\n label={t('dictionary.scope')}\n sublabel={t('rosDialog.scopeDescription')}\n error={errors?.content?.scope !== undefined}\n minRows={8}\n onMarkdownChange={value => setValue('content.scope', value)}\n />\n\n {dialogState === RiScDialogStates.Create && (\n <div>\n <DialogContentText>\n {t('rosDialog.generateInitialDescription')}\n </DialogContentText>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 4,\n }}\n >\n <Typography\n sx={{\n fontWeight: 'bold',\n }}\n >\n {t('rosDialog.generateInitialToggleDescription')}\n </Typography>\n <FormControlLabel\n control={<Switch onChange={handleChangeCreateRiScFrom} />}\n label={\n createRiScFrom === CreateRiScFrom.Scratch\n ? t('dictionary.no')\n : t('dictionary.yes')\n }\n />\n </Box>\n </div>\n )}\n </>\n );\n}\n\nexport default ConfigRiscInfo;\n"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,SAAS,cAAe,CAAA;AAAA,EACtB,WAAA;AAAA,EACA,cAAA;AAAA,EACA,0BAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAwB,EAAA;AACtB,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAM,MAAA,YAAA,GAAe,MAAM,eAAe,CAAA;AAE1C,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,QAAQ,EAAA,IAAA;AAAA,QACP,GAAG,QAAS,CAAA,eAAA,EAAiB,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,QAChD,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,KAAU,KAAA,MAAA;AAAA,QAClC,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,OAAS,EAAA;AAAA;AAAA,KACX;AAAA,oBACA,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,QAAQ,EAAA,IAAA;AAAA,QACP,GAAG,QAAS,CAAA,eAAA,EAAiB,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,QAChD,KAAO,EAAA,YAAA;AAAA,QACP,KAAA,EAAO,EAAE,kBAAkB,CAAA;AAAA,QAC3B,QAAA,EAAU,EAAE,4BAA4B,CAAA;AAAA,QACxC,KAAA,EAAO,MAAQ,EAAA,OAAA,EAAS,KAAU,KAAA,MAAA;AAAA,QAClC,OAAS,EAAA,CAAA;AAAA,QACT,gBAAkB,EAAA,CAAA,KAAA,KAAS,QAAS,CAAA,eAAA,EAAiB,KAAK;AAAA;AAAA,KAC5D;AAAA,IAEC,WAAgB,KAAA,gBAAA,CAAiB,MAChC,oBAAA,IAAA,CAAC,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,iBAAA,EAAA,EACE,QAAE,EAAA,CAAA,CAAA,sCAAsC,CAC3C,EAAA,CAAA;AAAA,sBACA,IAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA;AAAA,YACF,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA,KAAA;AAAA,YACf,UAAY,EAAA,QAAA;AAAA,YACZ,GAAK,EAAA;AAAA,WACP;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,UAAA;AAAA,cAAA;AAAA,gBACC,EAAI,EAAA;AAAA,kBACF,UAAY,EAAA;AAAA,iBACd;AAAA,gBAEC,YAAE,4CAA4C;AAAA;AAAA,aACjD;AAAA,4BACA,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,OAAS,kBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,QAAA,EAAU,0BAA4B,EAAA,CAAA;AAAA,gBACvD,KAAA,EACE,mBAAmB,cAAe,CAAA,OAAA,GAC9B,EAAE,eAAe,CAAA,GACjB,EAAE,gBAAgB;AAAA;AAAA;AAE1B;AAAA;AAAA;AACF,KACF,EAAA;AAAA,GAEJ,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -14,10 +14,10 @@ import Typography from '@mui/material/Typography';
|
|
|
14
14
|
import DialogActions from '@mui/material/DialogActions';
|
|
15
15
|
import Button from '@mui/material/Button';
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
function MatrixDialog({
|
|
18
18
|
open,
|
|
19
19
|
close
|
|
20
|
-
})
|
|
20
|
+
}) {
|
|
21
21
|
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
22
22
|
return /* @__PURE__ */ jsxs(Dialog, { maxWidth: "lg", open, onClose: close, children: [
|
|
23
23
|
/* @__PURE__ */ jsx(DialogTitle, { children: t("scenarioDrawer.riskMatrixModal.title") }),
|
|
@@ -58,7 +58,7 @@ const MatrixDialog = ({
|
|
|
58
58
|
] }),
|
|
59
59
|
/* @__PURE__ */ jsx(DialogActions, { children: /* @__PURE__ */ jsx(Button, { onClick: close, children: t("dictionary.close") }) })
|
|
60
60
|
] });
|
|
61
|
-
}
|
|
61
|
+
}
|
|
62
62
|
|
|
63
63
|
export { MatrixDialog };
|
|
64
64
|
//# sourceMappingURL=MatrixDialog.esm.js.map
|
|
@@ -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 { heading3 } from '../common/typography';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport DialogContent from '@mui/material/DialogContent';\nimport Typography from '@mui/material/Typography';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\n\nexport
|
|
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 { heading3 } from '../common/typography';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport DialogContent from '@mui/material/DialogContent';\nimport Typography from '@mui/material/Typography';\nimport DialogActions from '@mui/material/DialogActions';\nimport Button from '@mui/material/Button';\n\nexport 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 <Typography\n sx={{\n paddingBottom: '32px',\n }}\n >\n {t('scenarioStepper.initialRiskStep.subtitle')}\n </Typography>\n <Box>\n <Typography sx={{ ...heading3, paddingBottom: '4px' }}>\n {t('dictionary.probability')}\n </Typography>\n </Box>\n <ProbabilityTableInfoWithHeaders />\n <Box>\n <Typography\n sx={{ ...heading3, paddingTop: '16px', paddingBottom: '4px' }}\n >\n {t('dictionary.consequence')}\n </Typography>\n </Box>\n <ConsequenceTableInfoWithHeaders />\n </DialogContent>\n <DialogActions>\n <Button onClick={close}>{t('dictionary.close')}</Button>\n </DialogActions>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAeO,SAAS,YAAa,CAAA;AAAA,EAC3B,IAAA;AAAA,EACA;AACF,CAGG,EAAA;AACD,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,4BACG,MAAO,EAAA,EAAA,QAAA,EAAS,IAAK,EAAA,IAAA,EAAY,SAAS,KACzC,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,WAAA,EAAA,EAAa,QAAE,EAAA,CAAA,CAAA,sCAAsC,CAAE,EAAA,CAAA;AAAA,oBACxD,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,YAAW,EAAA,OAAA;AAAA,QACX,OAAS,EAAA,KAAA;AAAA,QACT,EAAI,EAAA;AAAA,UACF,QAAU,EAAA,UAAA;AAAA,UACV,KAAO,EAAA,CAAA;AAAA,UACP,GAAK,EAAA,CAAA;AAAA,UACL,KAAO,EAAA,CAAA,KAAA,KAAS,KAAM,CAAA,OAAA,CAAQ,KAAK,GAAG;AAAA,SACxC;AAAA,QAEA,8BAAC,SAAU,EAAA,EAAA;AAAA;AAAA,KACb;AAAA,yBACC,aACC,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA;AAAA,YACF,aAAe,EAAA;AAAA,WACjB;AAAA,UAEC,YAAE,0CAA0C;AAAA;AAAA,OAC/C;AAAA,sBACC,GAAA,CAAA,GAAA,EAAA,EACC,QAAC,kBAAA,GAAA,CAAA,UAAA,EAAA,EAAW,IAAI,EAAE,GAAG,QAAU,EAAA,aAAA,EAAe,KAAM,EAAA,EACjD,QAAE,EAAA,CAAA,CAAA,wBAAwB,GAC7B,CACF,EAAA,CAAA;AAAA,0BACC,+BAAgC,EAAA,EAAA,CAAA;AAAA,0BAChC,GACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,IAAI,EAAE,GAAG,UAAU,UAAY,EAAA,MAAA,EAAQ,eAAe,KAAM,EAAA;AAAA,UAE3D,YAAE,wBAAwB;AAAA;AAAA,OAE/B,EAAA,CAAA;AAAA,0BACC,+BAAgC,EAAA,EAAA;AAAA,KACnC,EAAA,CAAA;AAAA,oBACA,GAAA,CAAC,iBACC,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAO,SAAS,KAAQ,EAAA,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CACjD,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;;;;"}
|