@kartverket/backstage-plugin-risk-scorecard 3.1.7 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/components/common/DualButton.esm.js +58 -0
  2. package/dist/components/common/DualButton.esm.js.map +1 -0
  3. package/dist/components/riScInfo/changeset/RiScActionChange.esm.js +9 -0
  4. package/dist/components/riScInfo/changeset/RiScActionChange.esm.js.map +1 -1
  5. package/dist/components/riScInfo/changeset/RiScActionChangeSet.esm.js +9 -0
  6. package/dist/components/riScInfo/changeset/RiScActionChangeSet.esm.js.map +1 -1
  7. package/dist/components/riScInfo/changeset/components/ChangeSetAddedProperty.esm.js +14 -0
  8. package/dist/components/riScInfo/changeset/components/ChangeSetAddedProperty.esm.js.map +1 -0
  9. package/dist/components/riScInfo/changeset/components/changeSetStyles.esm.js +0 -1
  10. package/dist/components/riScInfo/changeset/components/changeSetStyles.esm.js.map +1 -1
  11. package/dist/components/riScInfo/migrations/RiScMigrationChanges.esm.js +3 -1
  12. package/dist/components/riScInfo/migrations/RiScMigrationChanges.esm.js.map +1 -1
  13. package/dist/components/riScInfo/migrations/RiScMigrationChanges42.esm.js +47 -0
  14. package/dist/components/riScInfo/migrations/RiScMigrationChanges42.esm.js.map +1 -0
  15. package/dist/components/riScPlugin/FeedbackDialog.esm.js +78 -0
  16. package/dist/components/riScPlugin/FeedbackDialog.esm.js.map +1 -0
  17. package/dist/components/riScPlugin/RiScPlugin.esm.js +6 -2
  18. package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
  19. package/dist/components/scenarioDrawer/components/ActionBox.esm.js +175 -70
  20. package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
  21. package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js +8 -0
  22. package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js.map +1 -1
  23. package/dist/components/scenarioWizard/steps/ActionsStep.esm.js +8 -0
  24. package/dist/components/scenarioWizard/steps/ActionsStep.esm.js.map +1 -1
  25. package/dist/contexts/ScenarioContext.esm.js +5 -4
  26. package/dist/contexts/ScenarioContext.esm.js.map +1 -1
  27. package/dist/utils/DTOs.esm.js +2 -1
  28. package/dist/utils/DTOs.esm.js.map +1 -1
  29. package/dist/utils/constants.esm.js +1 -1
  30. package/dist/utils/constants.esm.js.map +1 -1
  31. package/dist/utils/hooks.esm.js +13 -1
  32. package/dist/utils/hooks.esm.js.map +1 -1
  33. package/dist/utils/translations.esm.js +31 -3
  34. package/dist/utils/translations.esm.js.map +1 -1
  35. package/dist/utils/types.esm.js.map +1 -1
  36. package/dist/utils/utilityfunctions.esm.js +4 -1
  37. package/dist/utils/utilityfunctions.esm.js.map +1 -1
  38. package/package.json +2 -2
@@ -0,0 +1,58 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Button } from '@mui/material';
3
+
4
+ function DualButton({
5
+ propsLeft,
6
+ propsRight,
7
+ className,
8
+ propsCommon,
9
+ ...props
10
+ }) {
11
+ return /* @__PURE__ */ jsxs(
12
+ "div",
13
+ {
14
+ ...props,
15
+ style: {
16
+ display: "flex",
17
+ textWrap: "nowrap",
18
+ gap: "4px",
19
+ ...props.style
20
+ },
21
+ children: [
22
+ /* @__PURE__ */ jsx(
23
+ Button,
24
+ {
25
+ variant: "contained",
26
+ disableElevation: true,
27
+ ...propsCommon,
28
+ ...propsLeft,
29
+ sx: {
30
+ borderTopLeftRadius: "1000px",
31
+ borderBottomLeftRadius: "1000px",
32
+ ...propsLeft?.sx,
33
+ textTransform: "none"
34
+ }
35
+ }
36
+ ),
37
+ /* @__PURE__ */ jsx(
38
+ Button,
39
+ {
40
+ variant: "contained",
41
+ disableElevation: true,
42
+ ...propsCommon,
43
+ ...propsRight,
44
+ sx: {
45
+ borderTopRightRadius: "1000px",
46
+ borderBottomRightRadius: "1000px",
47
+ ...propsRight?.sx,
48
+ textTransform: "none"
49
+ }
50
+ }
51
+ )
52
+ ]
53
+ }
54
+ );
55
+ }
56
+
57
+ export { DualButton };
58
+ //# sourceMappingURL=DualButton.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DualButton.esm.js","sources":["../../../src/components/common/DualButton.tsx"],"sourcesContent":["import { Button, ButtonProps } from '@mui/material';\n\ntype DualButtonProps = {\n propsLeft?: ButtonProps;\n propsRight?: ButtonProps;\n propsCommon?: ButtonProps;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/** Base component for dual sided button component.\n * props provided serves as configuration for the left and right button.\n * propsCommon applies to both sides.\n * Specificity takes precedence.\n */\nexport function DualButton({\n propsLeft,\n propsRight,\n className,\n propsCommon,\n ...props\n}: DualButtonProps) {\n return (\n <div\n {...props}\n style={{\n display: 'flex',\n textWrap: 'nowrap',\n gap: '4px',\n ...props.style,\n }}\n >\n <Button\n variant=\"contained\"\n disableElevation\n {...propsCommon}\n {...propsLeft}\n sx={{\n borderTopLeftRadius: '1000px',\n borderBottomLeftRadius: '1000px',\n ...propsLeft?.sx,\n textTransform: 'none',\n }}\n />\n <Button\n variant=\"contained\"\n disableElevation\n {...propsCommon}\n {...propsRight}\n sx={{\n borderTopRightRadius: '1000px',\n borderBottomRightRadius: '1000px',\n ...propsRight?.sx,\n textTransform: 'none',\n }}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAaO,SAAS,UAAW,CAAA;AAAA,EACzB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAG;AACL,CAAoB,EAAA;AAClB,EACE,uBAAA,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,KAAO,EAAA;AAAA,QACL,OAAS,EAAA,MAAA;AAAA,QACT,QAAU,EAAA,QAAA;AAAA,QACV,GAAK,EAAA,KAAA;AAAA,QACL,GAAG,KAAM,CAAA;AAAA,OACX;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAQ,EAAA,WAAA;AAAA,YACR,gBAAgB,EAAA,IAAA;AAAA,YACf,GAAG,WAAA;AAAA,YACH,GAAG,SAAA;AAAA,YACJ,EAAI,EAAA;AAAA,cACF,mBAAqB,EAAA,QAAA;AAAA,cACrB,sBAAwB,EAAA,QAAA;AAAA,cACxB,GAAG,SAAW,EAAA,EAAA;AAAA,cACd,aAAe,EAAA;AAAA;AACjB;AAAA,SACF;AAAA,wBACA,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,OAAQ,EAAA,WAAA;AAAA,YACR,gBAAgB,EAAA,IAAA;AAAA,YACf,GAAG,WAAA;AAAA,YACH,GAAG,UAAA;AAAA,YACJ,EAAI,EAAA;AAAA,cACF,oBAAsB,EAAA,QAAA;AAAA,cACtB,uBAAyB,EAAA,QAAA;AAAA,cACzB,GAAG,UAAY,EAAA,EAAA;AAAA,cACf,aAAe,EAAA;AAAA;AACjB;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -6,9 +6,11 @@ import { ChangeSetBoxTitle } from './components/ChangeSetBoxTitle.esm.js';
6
6
  import { ChangeSetProperty } from './components/ChangeSetProperty.esm.js';
7
7
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
8
8
  import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
9
+ import { formatDate } from '../../../utils/utilityfunctions.esm.js';
9
10
 
10
11
  function RiScActionChange({ action, type }) {
11
12
  const { t } = useTranslationRef(pluginRiScTranslationRef);
13
+ const parsedDateTime = action.lastUpdated ? formatDate(action.lastUpdated) : t("scenarioDrawer.action.notUpdated");
12
14
  return /* @__PURE__ */ jsxs(ChangeSetBox, { type: "secondary", children: [
13
15
  /* @__PURE__ */ jsxs(ChangeSetTags, { children: [
14
16
  type === "ADDED" ? /* @__PURE__ */ jsx(ChangeSetTag, { text: t("dictionary.added"), type: "added" }) : /* @__PURE__ */ jsx(ChangeSetTag, { text: t("dictionary.removed"), type: "delete" }),
@@ -29,6 +31,13 @@ function RiScActionChange({ action, type }) {
29
31
  title: t("dictionary.status"),
30
32
  value: t(`actionStatus.${action.status}`)
31
33
  }
34
+ ),
35
+ /* @__PURE__ */ jsx(
36
+ ChangeSetProperty,
37
+ {
38
+ title: t("scenarioDrawer.action.lastUpdated"),
39
+ value: parsedDateTime
40
+ }
32
41
  )
33
42
  ] });
34
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RiScActionChange.esm.js","sources":["../../../../src/components/riScInfo/changeset/RiScActionChange.tsx"],"sourcesContent":["import { Action } from '../../../utils/types';\nimport { ChangeSetBox } from './components/ChangeSetBox.tsx';\nimport { ChangeSetTag } from './components/ChangeSetTag.tsx';\nimport { ChangeSetTags } from './components/ChangeSetTags.tsx';\nimport { ChangeSetBoxTitle } from './components/ChangeSetBoxTitle.tsx';\nimport { ChangeSetProperty } from './components/ChangeSetProperty.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\n\ninterface RiScWholeActionChangeProps {\n action: Action;\n type: 'ADDED' | 'DELETED';\n}\n\nexport function RiScActionChange({ action, type }: RiScWholeActionChangeProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n {type === 'ADDED' ? (\n <ChangeSetTag text={t('dictionary.added')} type=\"added\" />\n ) : (\n <ChangeSetTag text={t('dictionary.removed')} type=\"delete\" />\n )}\n <ChangeSetTag text={t('dictionary.action')} type=\"primary\" />\n </ChangeSetTags>\n <ChangeSetBoxTitle title={action.title} />\n <ChangeSetProperty\n title={t('dictionary.description')}\n value={action.description}\n />\n {action.url && (\n <ChangeSetProperty title={t('dictionary.url')} value={action.url} />\n )}\n <ChangeSetProperty\n title={t('dictionary.status')}\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n value={t(`actionStatus.${action.status}`)}\n />\n </ChangeSetBox>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAcO,SAAS,gBAAiB,CAAA,EAAE,MAAQ,EAAA,IAAA,EAAoC,EAAA;AAC7E,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EACE,uBAAA,IAAA,CAAC,YAAa,EAAA,EAAA,IAAA,EAAK,WACjB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,aACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,IAAA,KAAS,0BACP,GAAA,CAAA,YAAA,EAAA,EAAa,IAAM,EAAA,CAAA,CAAE,kBAAkB,CAAG,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA,uBAEvD,YAAa,EAAA,EAAA,IAAA,EAAM,EAAE,oBAAoB,CAAA,EAAG,MAAK,QAAS,EAAA,CAAA;AAAA,0BAE5D,YAAa,EAAA,EAAA,IAAA,EAAM,EAAE,mBAAmB,CAAA,EAAG,MAAK,SAAU,EAAA;AAAA,KAC7D,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,iBAAA,EAAA,EAAkB,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,CAAA;AAAA,oBACxC,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,QACjC,OAAO,MAAO,CAAA;AAAA;AAAA,KAChB;AAAA,IACC,MAAA,CAAO,GACN,oBAAA,GAAA,CAAC,iBAAkB,EAAA,EAAA,KAAA,EAAO,EAAE,gBAAgB,CAAA,EAAG,KAAO,EAAA,MAAA,CAAO,GAAK,EAAA,CAAA;AAAA,oBAEpE,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAE5B,KAAO,EAAA,CAAA,CAAE,CAAgB,aAAA,EAAA,MAAA,CAAO,MAAM,CAAE,CAAA;AAAA;AAAA;AAC1C,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RiScActionChange.esm.js","sources":["../../../../src/components/riScInfo/changeset/RiScActionChange.tsx"],"sourcesContent":["import { Action } from '../../../utils/types';\nimport { ChangeSetBox } from './components/ChangeSetBox.tsx';\nimport { ChangeSetTag } from './components/ChangeSetTag.tsx';\nimport { ChangeSetTags } from './components/ChangeSetTags.tsx';\nimport { ChangeSetBoxTitle } from './components/ChangeSetBoxTitle.tsx';\nimport { ChangeSetProperty } from './components/ChangeSetProperty.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\nimport { formatDate } from '../../../utils/utilityfunctions.ts';\n\ninterface RiScWholeActionChangeProps {\n action: Action;\n type: 'ADDED' | 'DELETED';\n}\n\nexport function RiScActionChange({ action, type }: RiScWholeActionChangeProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const parsedDateTime = action.lastUpdated\n ? formatDate(action.lastUpdated)\n : t('scenarioDrawer.action.notUpdated');\n\n return (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n {type === 'ADDED' ? (\n <ChangeSetTag text={t('dictionary.added')} type=\"added\" />\n ) : (\n <ChangeSetTag text={t('dictionary.removed')} type=\"delete\" />\n )}\n <ChangeSetTag text={t('dictionary.action')} type=\"primary\" />\n </ChangeSetTags>\n <ChangeSetBoxTitle title={action.title} />\n <ChangeSetProperty\n title={t('dictionary.description')}\n value={action.description}\n />\n {action.url && (\n <ChangeSetProperty title={t('dictionary.url')} value={action.url} />\n )}\n <ChangeSetProperty\n title={t('dictionary.status')}\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n value={t(`actionStatus.${action.status}`)}\n />\n <ChangeSetProperty\n title={t('scenarioDrawer.action.lastUpdated')}\n value={parsedDateTime}\n />\n </ChangeSetBox>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAeO,SAAS,gBAAiB,CAAA,EAAE,MAAQ,EAAA,IAAA,EAAoC,EAAA;AAC7E,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAM,MAAA,cAAA,GAAiB,OAAO,WAC1B,GAAA,UAAA,CAAW,OAAO,WAAW,CAAA,GAC7B,EAAE,kCAAkC,CAAA;AAExC,EACE,uBAAA,IAAA,CAAC,YAAa,EAAA,EAAA,IAAA,EAAK,WACjB,EAAA,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,aACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,IAAA,KAAS,0BACP,GAAA,CAAA,YAAA,EAAA,EAAa,IAAM,EAAA,CAAA,CAAE,kBAAkB,CAAG,EAAA,IAAA,EAAK,OAAQ,EAAA,CAAA,uBAEvD,YAAa,EAAA,EAAA,IAAA,EAAM,EAAE,oBAAoB,CAAA,EAAG,MAAK,QAAS,EAAA,CAAA;AAAA,0BAE5D,YAAa,EAAA,EAAA,IAAA,EAAM,EAAE,mBAAmB,CAAA,EAAG,MAAK,SAAU,EAAA;AAAA,KAC7D,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,iBAAA,EAAA,EAAkB,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,CAAA;AAAA,oBACxC,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,QACjC,OAAO,MAAO,CAAA;AAAA;AAAA,KAChB;AAAA,IACC,MAAA,CAAO,GACN,oBAAA,GAAA,CAAC,iBAAkB,EAAA,EAAA,KAAA,EAAO,EAAE,gBAAgB,CAAA,EAAG,KAAO,EAAA,MAAA,CAAO,GAAK,EAAA,CAAA;AAAA,oBAEpE,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAE5B,KAAO,EAAA,CAAA,CAAE,CAAgB,aAAA,EAAA,MAAA,CAAO,MAAM,CAAE,CAAA;AAAA;AAAA,KAC1C;AAAA,oBACA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,mCAAmC,CAAA;AAAA,QAC5C,KAAO,EAAA;AAAA;AAAA;AACT,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -6,6 +6,7 @@ import { ChangeSetTrackedProperty } from './components/ChangeSetTrackedProperty.
6
6
  import { ChangeSetChangedTitle } from './components/ChangeSetChangedTitle.esm.js';
7
7
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
8
8
  import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
9
+ import { formatDate } from '../../../utils/utilityfunctions.esm.js';
9
10
 
10
11
  function RiScActionChangeSet({ action }) {
11
12
  const { t } = useTranslationRef(pluginRiScTranslationRef);
@@ -36,6 +37,14 @@ function RiScActionChangeSet({ action }) {
36
37
  property: action.status,
37
38
  valueFormatter: (actionValue) => t(`actionStatus.${actionValue}`)
38
39
  }
40
+ ),
41
+ /* @__PURE__ */ jsx(
42
+ ChangeSetTrackedProperty,
43
+ {
44
+ title: t("scenarioDrawer.action.lastUpdated"),
45
+ property: action.lastUpdated,
46
+ valueFormatter: (actionValue) => actionValue ? formatDate(actionValue) : t("scenarioDrawer.action.notUpdated")
47
+ }
39
48
  )
40
49
  ] });
41
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RiScActionChangeSet.esm.js","sources":["../../../../src/components/riScInfo/changeset/RiScActionChangeSet.tsx"],"sourcesContent":["import { ActionChange } from '../../../utils/types.ts';\nimport { ChangeSetBox } from './components/ChangeSetBox.tsx';\nimport { ChangeSetTags } from './components/ChangeSetTags.tsx';\nimport { ChangeSetTag } from './components/ChangeSetTag.tsx';\nimport { ChangeSetTrackedProperty } from './components/ChangeSetTrackedProperty.tsx';\nimport { ChangeSetChangedTitle } from './components/ChangeSetChangedTitle.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\n\ninterface RiScActionChangeSetProps {\n action: ActionChange;\n}\n\nexport function RiScActionChangeSet({ action }: RiScActionChangeSetProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n <ChangeSetTag text={t('dictionary.action')} type=\"primary\" />\n </ChangeSetTags>\n <ChangeSetChangedTitle title={action.title} />\n <ChangeSetTrackedProperty\n title={t('dictionary.description')}\n property={action.description}\n multiline={true}\n stringOnUndefinedProperty={t('comparisonDialog.noDescription')}\n />\n <ChangeSetTrackedProperty\n title={t('dictionary.url')}\n property={action.url}\n stringOnUndefinedProperty={t('comparisonDialog.noURL')}\n />\n <ChangeSetTrackedProperty\n title={t('dictionary.status')}\n property={action.status}\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n valueFormatter={actionValue => t(`actionStatus.${actionValue}`)}\n />\n </ChangeSetBox>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAagB,SAAA,mBAAA,CAAoB,EAAE,MAAA,EAAoC,EAAA;AACxE,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EACE,uBAAA,IAAA,CAAC,YAAa,EAAA,EAAA,IAAA,EAAK,WACjB,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,aAAA,EAAA,EACC,8BAAC,YAAa,EAAA,EAAA,IAAA,EAAM,EAAE,mBAAmB,CAAA,EAAG,IAAK,EAAA,SAAA,EAAU,CAC7D,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,qBAAA,EAAA,EAAsB,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,CAAA;AAAA,oBAC5C,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,QACjC,UAAU,MAAO,CAAA,WAAA;AAAA,QACjB,SAAW,EAAA,IAAA;AAAA,QACX,yBAAA,EAA2B,EAAE,gCAAgC;AAAA;AAAA,KAC/D;AAAA,oBACA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,QACzB,UAAU,MAAO,CAAA,GAAA;AAAA,QACjB,yBAAA,EAA2B,EAAE,wBAAwB;AAAA;AAAA,KACvD;AAAA,oBACA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAC5B,UAAU,MAAO,CAAA,MAAA;AAAA,QAEjB,cAAgB,EAAA,CAAA,WAAA,KAAe,CAAE,CAAA,CAAA,aAAA,EAAgB,WAAW,CAAE,CAAA;AAAA;AAAA;AAChE,GACF,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RiScActionChangeSet.esm.js","sources":["../../../../src/components/riScInfo/changeset/RiScActionChangeSet.tsx"],"sourcesContent":["import { ActionChange } from '../../../utils/types.ts';\nimport { ChangeSetBox } from './components/ChangeSetBox.tsx';\nimport { ChangeSetTags } from './components/ChangeSetTags.tsx';\nimport { ChangeSetTag } from './components/ChangeSetTag.tsx';\nimport { ChangeSetTrackedProperty } from './components/ChangeSetTrackedProperty.tsx';\nimport { ChangeSetChangedTitle } from './components/ChangeSetChangedTitle.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\nimport { formatDate } from '../../../utils/utilityfunctions.ts';\n\ninterface RiScActionChangeSetProps {\n action: ActionChange;\n}\n\nexport function RiScActionChangeSet({ action }: RiScActionChangeSetProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n <ChangeSetTag text={t('dictionary.action')} type=\"primary\" />\n </ChangeSetTags>\n <ChangeSetChangedTitle title={action.title} />\n <ChangeSetTrackedProperty\n title={t('dictionary.description')}\n property={action.description}\n multiline={true}\n stringOnUndefinedProperty={t('comparisonDialog.noDescription')}\n />\n <ChangeSetTrackedProperty\n title={t('dictionary.url')}\n property={action.url}\n stringOnUndefinedProperty={t('comparisonDialog.noURL')}\n />\n <ChangeSetTrackedProperty\n title={t('dictionary.status')}\n property={action.status}\n /* @ts-ignore Because ts can't typecheck strings against our keys */\n valueFormatter={actionValue => t(`actionStatus.${actionValue}`)}\n />\n <ChangeSetTrackedProperty\n title={t('scenarioDrawer.action.lastUpdated')}\n property={action.lastUpdated}\n valueFormatter={actionValue =>\n actionValue\n ? formatDate(actionValue)\n : t('scenarioDrawer.action.notUpdated')\n }\n />\n </ChangeSetBox>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAcgB,SAAA,mBAAA,CAAoB,EAAE,MAAA,EAAoC,EAAA;AACxE,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EACE,uBAAA,IAAA,CAAC,YAAa,EAAA,EAAA,IAAA,EAAK,WACjB,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,aAAA,EAAA,EACC,8BAAC,YAAa,EAAA,EAAA,IAAA,EAAM,EAAE,mBAAmB,CAAA,EAAG,IAAK,EAAA,SAAA,EAAU,CAC7D,EAAA,CAAA;AAAA,oBACC,GAAA,CAAA,qBAAA,EAAA,EAAsB,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,CAAA;AAAA,oBAC5C,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,QACjC,UAAU,MAAO,CAAA,WAAA;AAAA,QACjB,SAAW,EAAA,IAAA;AAAA,QACX,yBAAA,EAA2B,EAAE,gCAAgC;AAAA;AAAA,KAC/D;AAAA,oBACA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,gBAAgB,CAAA;AAAA,QACzB,UAAU,MAAO,CAAA,GAAA;AAAA,QACjB,yBAAA,EAA2B,EAAE,wBAAwB;AAAA;AAAA,KACvD;AAAA,oBACA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,mBAAmB,CAAA;AAAA,QAC5B,UAAU,MAAO,CAAA,MAAA;AAAA,QAEjB,cAAgB,EAAA,CAAA,WAAA,KAAe,CAAE,CAAA,CAAA,aAAA,EAAgB,WAAW,CAAE,CAAA;AAAA;AAAA,KAChE;AAAA,oBACA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,EAAE,mCAAmC,CAAA;AAAA,QAC5C,UAAU,MAAO,CAAA,WAAA;AAAA,QACjB,gBAAgB,CACd,WAAA,KAAA,WAAA,GACI,WAAW,WAAW,CAAA,GACtB,EAAE,kCAAkC;AAAA;AAAA;AAE5C,GACF,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,14 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { ChangeSetAddedValue } from './ChangeSetAddedValue.esm.js';
3
+ import { ChangeSetPropertyBase } from './ChangeSetPropertyBase.esm.js';
4
+
5
+ function ChangeSetAddedProperty({
6
+ propertyName,
7
+ newValue,
8
+ compact = false
9
+ }) {
10
+ return /* @__PURE__ */ jsx(ChangeSetPropertyBase, { propertyName, compact, children: /* @__PURE__ */ jsx(ChangeSetAddedValue, { newValue }) });
11
+ }
12
+
13
+ export { ChangeSetAddedProperty };
14
+ //# sourceMappingURL=ChangeSetAddedProperty.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeSetAddedProperty.esm.js","sources":["../../../../../src/components/riScInfo/changeset/components/ChangeSetAddedProperty.tsx"],"sourcesContent":["import { ChangeSetAddedValue } from './ChangeSetAddedValue.tsx';\nimport { ChangeSetPropertyBase } from './ChangeSetPropertyBase.tsx';\n\ninterface ChangeSetAddedPropertyProps {\n propertyName: string;\n newValue: string;\n compact?: boolean;\n}\n\nexport function ChangeSetAddedProperty({\n propertyName,\n newValue,\n compact = false,\n}: ChangeSetAddedPropertyProps) {\n return (\n <ChangeSetPropertyBase propertyName={propertyName} compact={compact}>\n <ChangeSetAddedValue newValue={newValue} />\n </ChangeSetPropertyBase>\n );\n}\n"],"names":[],"mappings":";;;;AASO,SAAS,sBAAuB,CAAA;AAAA,EACrC,YAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAU,GAAA;AACZ,CAAgC,EAAA;AAC9B,EAAA,2BACG,qBAAsB,EAAA,EAAA,YAAA,EAA4B,SACjD,QAAC,kBAAA,GAAA,CAAA,mBAAA,EAAA,EAAoB,UAAoB,CAC3C,EAAA,CAAA;AAEJ;;;;"}
@@ -93,7 +93,6 @@ const useChangeSetStyles = makeStyles((theme) => ({
93
93
  addedValue: {
94
94
  fontWeight: fontWeightSemiBold,
95
95
  color: addedColor(theme),
96
- textDecoration: "line-through",
97
96
  fontSize: fontSizeNormal
98
97
  },
99
98
  // ChangeSetTag
@@ -1 +1 @@
1
- {"version":3,"file":"changeSetStyles.esm.js","sources":["../../../../../src/components/riScInfo/changeset/components/changeSetStyles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core';\n\n// Retrieved from Kartverket's colour profile\nconst white = '#FFFFFF';\nconst orange50 = '#FCEBCD';\nconst orange100 = '#FFDD9D';\nconst orange300 = '#CF914A';\nconst red100 = '#FFE2D4';\nconst red200 = '#EBB095';\nconst red400 = '#D04A14';\nconst red500 = '#A32F00';\nconst green100 = '#D0ECD6';\nconst green200 = '#9FD2AB';\nconst green300 = '#66B077';\nconst green500 = '#156630';\nconst gray50 = '#F5F2F2';\nconst gray400 = '#706F6E';\nconst gray600 = '#4A4848';\nconst gray900 = '#212121';\n\nconst removedColor = (theme: Theme) =>\n theme.palette.type === 'dark' ? red100 : red500;\nconst addedColor = (theme: Theme) =>\n theme.palette.type === 'dark' ? green100 : green500;\n\nexport const interactiveColor = (theme: Theme) =>\n theme.palette.type === 'dark' ? green200 : green500;\n\nconst fontColorLight = gray50;\nconst fontColorDark = gray900;\n\nconst fontSizeTitle = '18px';\nconst lineHeightTitle = '26px';\nconst fontSizeNormal = '14px';\nexport const fontWeightBold = 700;\nconst fontWeightSemiBold = 500;\n\nexport const useChangeSetStyles = makeStyles((theme: Theme) => ({\n // ChangeSetBox\n box: {\n padding: '14px 18px',\n height: '100%',\n borderRadius: '24px',\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n fontSize: fontSizeNormal,\n },\n boxPrimary: {\n backgroundColor: theme.palette.type === 'dark' ? gray400 : orange50,\n marginBottom: '24px',\n },\n boxSecondary: {\n backgroundColor: theme.palette.type === 'dark' ? gray600 : white,\n marginBottom: '12px',\n },\n\n // ChangeSetBoxTitle\n boxTitle: {\n fontWeight: fontWeightBold,\n fontSize: fontSizeTitle,\n lineHeight: '26px',\n marginBottom: '12px',\n },\n\n // ChangeSetPropertyBase\n property: {\n marginBottom: '12px',\n },\n propertyTitle: {\n fontWeight: fontWeightBold,\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n },\n\n // ChangeSetChangedValue\n changedProperty: {\n fontWeight: fontWeightBold,\n },\n oldValue: {\n fontWeight: fontWeightBold,\n color: removedColor(theme),\n textDecoration: 'line-through',\n },\n newValue: {\n fontWeight: fontWeightBold,\n color: addedColor(theme),\n },\n\n // ChangeSetRemovedProperty\n removedPropertyContainer: {\n marginBottom: '8px',\n },\n removedProperty: {\n fontWeight: fontWeightBold,\n color: removedColor(theme),\n textDecoration: 'line-through',\n fontSize: fontSizeTitle,\n lineHeight: lineHeightTitle,\n },\n\n // ChangeSetRemovedValue\n removedValue: {\n fontWeight: fontWeightSemiBold,\n color: removedColor(theme),\n textDecoration: 'line-through',\n fontSize: fontSizeNormal,\n },\n\n // ChangeSetAddedValue\n addedValue: {\n fontWeight: fontWeightSemiBold,\n color: addedColor(theme),\n textDecoration: 'line-through',\n fontSize: fontSizeNormal,\n },\n\n // ChangeSetTag\n tag: {\n borderRadius: '24px',\n width: 'fit-content',\n padding: '1px 8px',\n border: '1px solid',\n color: fontColorDark,\n },\n tagPrimary: {\n backgroundColor: orange100,\n borderColor: orange300,\n },\n tagDelete: {\n backgroundColor: red200,\n borderColor: red400,\n },\n tagAdded: {\n backgroundColor: green100,\n borderColor: green300,\n },\n\n // ChangeSetTags\n tags: {\n marginBottom: '4px',\n display: 'flex',\n gap: '4px',\n },\n\n // ChangeSetText\n text: {\n fontWeight: fontWeightSemiBold,\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n },\n\n // ChangeSetText\n bodyText: {\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n marginTop: 0,\n marginBottom: '4px',\n },\n\n // ChangeSetTitle\n title: {\n textTransform: 'uppercase',\n letterSpacing: '1px',\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n fontWeight: fontWeightBold,\n fontSize: fontSizeNormal,\n marginBottom: '12px',\n },\n\n // ChangeSetTwoColumnSplit\n twoColumnSplit: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '18px',\n marginBottom: '12px',\n },\n\n // ChangeSetColumn\n firstColumn: {\n gridColumn: 1,\n },\n\n secondColumn: {\n gridColumn: 2,\n },\n}));\n"],"names":[],"mappings":";;AAGA,MAAM,KAAQ,GAAA,SAAA;AACd,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,SAAY,GAAA,SAAA;AAClB,MAAM,SAAY,GAAA,SAAA;AAClB,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,OAAU,GAAA,SAAA;AAChB,MAAM,OAAU,GAAA,SAAA;AAChB,MAAM,OAAU,GAAA,SAAA;AAEhB,MAAM,eAAe,CAAC,KAAA,KACpB,MAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,MAAS,GAAA,MAAA;AAC3C,MAAM,aAAa,CAAC,KAAA,KAClB,MAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,QAAW,GAAA,QAAA;AAEtC,MAAM,mBAAmB,CAAC,KAAA,KAC/B,MAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,QAAW,GAAA;AAE7C,MAAM,cAAiB,GAAA,MAAA;AACvB,MAAM,aAAgB,GAAA,OAAA;AAEtB,MAAM,aAAgB,GAAA,MAAA;AACtB,MAAM,eAAkB,GAAA,MAAA;AACxB,MAAM,cAAiB,GAAA,MAAA;AAChB,MAAM,cAAiB,GAAA;AAC9B,MAAM,kBAAqB,GAAA,GAAA;AAEd,MAAA,kBAAA,GAAqB,UAAW,CAAA,CAAC,KAAkB,MAAA;AAAA;AAAA,EAE9D,GAAK,EAAA;AAAA,IACH,OAAS,EAAA,WAAA;AAAA,IACT,MAAQ,EAAA,MAAA;AAAA,IACR,YAAc,EAAA,MAAA;AAAA,IACd,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA,aAAA;AAAA,IACxD,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,UAAY,EAAA;AAAA,IACV,eAAiB,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,OAAU,GAAA,QAAA;AAAA,IAC3D,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,eAAiB,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,OAAU,GAAA,KAAA;AAAA,IAC3D,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,cAAA;AAAA,IACZ,QAAU,EAAA,aAAA;AAAA,IACV,UAAY,EAAA,MAAA;AAAA,IACZ,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,aAAe,EAAA;AAAA,IACb,UAAY,EAAA,cAAA;AAAA,IACZ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA;AAAA,GAC1D;AAAA;AAAA,EAGA,eAAiB,EAAA;AAAA,IACf,UAAY,EAAA;AAAA,GACd;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,IACzB,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA,EAAO,WAAW,KAAK;AAAA,GACzB;AAAA;AAAA,EAGA,wBAA0B,EAAA;AAAA,IACxB,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,IACzB,cAAgB,EAAA,cAAA;AAAA,IAChB,QAAU,EAAA,aAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACd;AAAA;AAAA,EAGA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA,kBAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,IACzB,cAAgB,EAAA,cAAA;AAAA,IAChB,QAAU,EAAA;AAAA,GACZ;AAAA;AAAA,EAGA,UAAY,EAAA;AAAA,IACV,UAAY,EAAA,kBAAA;AAAA,IACZ,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA,IACvB,cAAgB,EAAA,cAAA;AAAA,IAChB,QAAU,EAAA;AAAA,GACZ;AAAA;AAAA,EAGA,GAAK,EAAA;AAAA,IACH,YAAc,EAAA,MAAA;AAAA,IACd,KAAO,EAAA,aAAA;AAAA,IACP,OAAS,EAAA,SAAA;AAAA,IACT,MAAQ,EAAA,WAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAAA,EACA,UAAY,EAAA;AAAA,IACV,eAAiB,EAAA,SAAA;AAAA,IACjB,WAAa,EAAA;AAAA,GACf;AAAA,EACA,SAAW,EAAA;AAAA,IACT,eAAiB,EAAA,MAAA;AAAA,IACjB,WAAa,EAAA;AAAA,GACf;AAAA,EACA,QAAU,EAAA;AAAA,IACR,eAAiB,EAAA,QAAA;AAAA,IACjB,WAAa,EAAA;AAAA,GACf;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,YAAc,EAAA,KAAA;AAAA,IACd,OAAS,EAAA,MAAA;AAAA,IACT,GAAK,EAAA;AAAA,GACP;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,UAAY,EAAA,kBAAA;AAAA,IACZ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA;AAAA,GAC1D;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA,aAAA;AAAA,IACxD,SAAW,EAAA,CAAA;AAAA,IACX,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,KAAO,EAAA;AAAA,IACL,aAAe,EAAA,WAAA;AAAA,IACf,aAAe,EAAA,KAAA;AAAA,IACf,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA,aAAA;AAAA,IACxD,UAAY,EAAA,cAAA;AAAA,IACZ,QAAU,EAAA,cAAA;AAAA,IACV,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,cAAgB,EAAA;AAAA,IACd,OAAS,EAAA,MAAA;AAAA,IACT,mBAAqB,EAAA,SAAA;AAAA,IACrB,GAAK,EAAA,MAAA;AAAA,IACL,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,WAAa,EAAA;AAAA,IACX,UAAY,EAAA;AAAA,GACd;AAAA,EAEA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA;AAAA;AAEhB,CAAE,CAAA;;;;"}
1
+ {"version":3,"file":"changeSetStyles.esm.js","sources":["../../../../../src/components/riScInfo/changeset/components/changeSetStyles.ts"],"sourcesContent":["import { makeStyles, Theme } from '@material-ui/core';\n\n// Retrieved from Kartverket's colour profile\nconst white = '#FFFFFF';\nconst orange50 = '#FCEBCD';\nconst orange100 = '#FFDD9D';\nconst orange300 = '#CF914A';\nconst red100 = '#FFE2D4';\nconst red200 = '#EBB095';\nconst red400 = '#D04A14';\nconst red500 = '#A32F00';\nconst green100 = '#D0ECD6';\nconst green200 = '#9FD2AB';\nconst green300 = '#66B077';\nconst green500 = '#156630';\nconst gray50 = '#F5F2F2';\nconst gray400 = '#706F6E';\nconst gray600 = '#4A4848';\nconst gray900 = '#212121';\n\nconst removedColor = (theme: Theme) =>\n theme.palette.type === 'dark' ? red100 : red500;\nconst addedColor = (theme: Theme) =>\n theme.palette.type === 'dark' ? green100 : green500;\n\nexport const interactiveColor = (theme: Theme) =>\n theme.palette.type === 'dark' ? green200 : green500;\n\nconst fontColorLight = gray50;\nconst fontColorDark = gray900;\n\nconst fontSizeTitle = '18px';\nconst lineHeightTitle = '26px';\nconst fontSizeNormal = '14px';\nexport const fontWeightBold = 700;\nconst fontWeightSemiBold = 500;\n\nexport const useChangeSetStyles = makeStyles((theme: Theme) => ({\n // ChangeSetBox\n box: {\n padding: '14px 18px',\n height: '100%',\n borderRadius: '24px',\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n fontSize: fontSizeNormal,\n },\n boxPrimary: {\n backgroundColor: theme.palette.type === 'dark' ? gray400 : orange50,\n marginBottom: '24px',\n },\n boxSecondary: {\n backgroundColor: theme.palette.type === 'dark' ? gray600 : white,\n marginBottom: '12px',\n },\n\n // ChangeSetBoxTitle\n boxTitle: {\n fontWeight: fontWeightBold,\n fontSize: fontSizeTitle,\n lineHeight: '26px',\n marginBottom: '12px',\n },\n\n // ChangeSetPropertyBase\n property: {\n marginBottom: '12px',\n },\n propertyTitle: {\n fontWeight: fontWeightBold,\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n },\n\n // ChangeSetChangedValue\n changedProperty: {\n fontWeight: fontWeightBold,\n },\n oldValue: {\n fontWeight: fontWeightBold,\n color: removedColor(theme),\n textDecoration: 'line-through',\n },\n newValue: {\n fontWeight: fontWeightBold,\n color: addedColor(theme),\n },\n\n // ChangeSetRemovedProperty\n removedPropertyContainer: {\n marginBottom: '8px',\n },\n removedProperty: {\n fontWeight: fontWeightBold,\n color: removedColor(theme),\n textDecoration: 'line-through',\n fontSize: fontSizeTitle,\n lineHeight: lineHeightTitle,\n },\n\n // ChangeSetRemovedValue\n removedValue: {\n fontWeight: fontWeightSemiBold,\n color: removedColor(theme),\n textDecoration: 'line-through',\n fontSize: fontSizeNormal,\n },\n\n // ChangeSetAddedValue\n addedValue: {\n fontWeight: fontWeightSemiBold,\n color: addedColor(theme),\n fontSize: fontSizeNormal,\n },\n\n // ChangeSetTag\n tag: {\n borderRadius: '24px',\n width: 'fit-content',\n padding: '1px 8px',\n border: '1px solid',\n color: fontColorDark,\n },\n tagPrimary: {\n backgroundColor: orange100,\n borderColor: orange300,\n },\n tagDelete: {\n backgroundColor: red200,\n borderColor: red400,\n },\n tagAdded: {\n backgroundColor: green100,\n borderColor: green300,\n },\n\n // ChangeSetTags\n tags: {\n marginBottom: '4px',\n display: 'flex',\n gap: '4px',\n },\n\n // ChangeSetText\n text: {\n fontWeight: fontWeightSemiBold,\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n },\n\n // ChangeSetText\n bodyText: {\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n marginTop: 0,\n marginBottom: '4px',\n },\n\n // ChangeSetTitle\n title: {\n textTransform: 'uppercase',\n letterSpacing: '1px',\n color: theme.palette.type === 'dark' ? fontColorLight : fontColorDark,\n fontWeight: fontWeightBold,\n fontSize: fontSizeNormal,\n marginBottom: '12px',\n },\n\n // ChangeSetTwoColumnSplit\n twoColumnSplit: {\n display: 'grid',\n gridTemplateColumns: '1fr 1fr',\n gap: '18px',\n marginBottom: '12px',\n },\n\n // ChangeSetColumn\n firstColumn: {\n gridColumn: 1,\n },\n\n secondColumn: {\n gridColumn: 2,\n },\n}));\n"],"names":[],"mappings":";;AAGA,MAAM,KAAQ,GAAA,SAAA;AACd,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,SAAY,GAAA,SAAA;AAClB,MAAM,SAAY,GAAA,SAAA;AAClB,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,QAAW,GAAA,SAAA;AACjB,MAAM,MAAS,GAAA,SAAA;AACf,MAAM,OAAU,GAAA,SAAA;AAChB,MAAM,OAAU,GAAA,SAAA;AAChB,MAAM,OAAU,GAAA,SAAA;AAEhB,MAAM,eAAe,CAAC,KAAA,KACpB,MAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,MAAS,GAAA,MAAA;AAC3C,MAAM,aAAa,CAAC,KAAA,KAClB,MAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,QAAW,GAAA,QAAA;AAEtC,MAAM,mBAAmB,CAAC,KAAA,KAC/B,MAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,QAAW,GAAA;AAE7C,MAAM,cAAiB,GAAA,MAAA;AACvB,MAAM,aAAgB,GAAA,OAAA;AAEtB,MAAM,aAAgB,GAAA,MAAA;AACtB,MAAM,eAAkB,GAAA,MAAA;AACxB,MAAM,cAAiB,GAAA,MAAA;AAChB,MAAM,cAAiB,GAAA;AAC9B,MAAM,kBAAqB,GAAA,GAAA;AAEd,MAAA,kBAAA,GAAqB,UAAW,CAAA,CAAC,KAAkB,MAAA;AAAA;AAAA,EAE9D,GAAK,EAAA;AAAA,IACH,OAAS,EAAA,WAAA;AAAA,IACT,MAAQ,EAAA,MAAA;AAAA,IACR,YAAc,EAAA,MAAA;AAAA,IACd,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA,aAAA;AAAA,IACxD,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,UAAY,EAAA;AAAA,IACV,eAAiB,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,OAAU,GAAA,QAAA;AAAA,IAC3D,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,eAAiB,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,OAAU,GAAA,KAAA;AAAA,IAC3D,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,cAAA;AAAA,IACZ,QAAU,EAAA,aAAA;AAAA,IACV,UAAY,EAAA,MAAA;AAAA,IACZ,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,aAAe,EAAA;AAAA,IACb,UAAY,EAAA,cAAA;AAAA,IACZ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA;AAAA,GAC1D;AAAA;AAAA,EAGA,eAAiB,EAAA;AAAA,IACf,UAAY,EAAA;AAAA,GACd;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,IACzB,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA,EAAO,WAAW,KAAK;AAAA,GACzB;AAAA;AAAA,EAGA,wBAA0B,EAAA;AAAA,IACxB,YAAc,EAAA;AAAA,GAChB;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,UAAY,EAAA,cAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,IACzB,cAAgB,EAAA,cAAA;AAAA,IAChB,QAAU,EAAA,aAAA;AAAA,IACV,UAAY,EAAA;AAAA,GACd;AAAA;AAAA,EAGA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA,kBAAA;AAAA,IACZ,KAAA,EAAO,aAAa,KAAK,CAAA;AAAA,IACzB,cAAgB,EAAA,cAAA;AAAA,IAChB,QAAU,EAAA;AAAA,GACZ;AAAA;AAAA,EAGA,UAAY,EAAA;AAAA,IACV,UAAY,EAAA,kBAAA;AAAA,IACZ,KAAA,EAAO,WAAW,KAAK,CAAA;AAAA,IACvB,QAAU,EAAA;AAAA,GACZ;AAAA;AAAA,EAGA,GAAK,EAAA;AAAA,IACH,YAAc,EAAA,MAAA;AAAA,IACd,KAAO,EAAA,aAAA;AAAA,IACP,OAAS,EAAA,SAAA;AAAA,IACT,MAAQ,EAAA,WAAA;AAAA,IACR,KAAO,EAAA;AAAA,GACT;AAAA,EACA,UAAY,EAAA;AAAA,IACV,eAAiB,EAAA,SAAA;AAAA,IACjB,WAAa,EAAA;AAAA,GACf;AAAA,EACA,SAAW,EAAA;AAAA,IACT,eAAiB,EAAA,MAAA;AAAA,IACjB,WAAa,EAAA;AAAA,GACf;AAAA,EACA,QAAU,EAAA;AAAA,IACR,eAAiB,EAAA,QAAA;AAAA,IACjB,WAAa,EAAA;AAAA,GACf;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,YAAc,EAAA,KAAA;AAAA,IACd,OAAS,EAAA,MAAA;AAAA,IACT,GAAK,EAAA;AAAA,GACP;AAAA;AAAA,EAGA,IAAM,EAAA;AAAA,IACJ,UAAY,EAAA,kBAAA;AAAA,IACZ,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA;AAAA,GAC1D;AAAA;AAAA,EAGA,QAAU,EAAA;AAAA,IACR,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA,aAAA;AAAA,IACxD,SAAW,EAAA,CAAA;AAAA,IACX,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,KAAO,EAAA;AAAA,IACL,aAAe,EAAA,WAAA;AAAA,IACf,aAAe,EAAA,KAAA;AAAA,IACf,KAAO,EAAA,KAAA,CAAM,OAAQ,CAAA,IAAA,KAAS,SAAS,cAAiB,GAAA,aAAA;AAAA,IACxD,UAAY,EAAA,cAAA;AAAA,IACZ,QAAU,EAAA,cAAA;AAAA,IACV,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,cAAgB,EAAA;AAAA,IACd,OAAS,EAAA,MAAA;AAAA,IACT,mBAAqB,EAAA,SAAA;AAAA,IACrB,GAAK,EAAA,MAAA;AAAA,IACL,YAAc,EAAA;AAAA,GAChB;AAAA;AAAA,EAGA,WAAa,EAAA;AAAA,IACX,UAAY,EAAA;AAAA,GACd;AAAA,EAEA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA;AAAA;AAEhB,CAAE,CAAA;;;;"}
@@ -6,6 +6,7 @@ import { RiScMigrationChanges41 } from './RiScMigrationChanges41.esm.js';
6
6
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
7
7
  import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
8
8
  import { ChangeSetChangedProperty } from '../changeset/components/ChangeSetChangedProperty.esm.js';
9
+ import { RiScMigrationChanges42 } from './RiScMigrationChanges42.esm.js';
9
10
 
10
11
  function RiScMigrationChanges({
11
12
  migrationStatus
@@ -23,7 +24,8 @@ function RiScMigrationChanges({
23
24
  }
24
25
  ) }),
25
26
  migrationStatus.migrationChanges40 && /* @__PURE__ */ jsx(RiScMigrationChanges40, { changes: migrationStatus.migrationChanges40 }),
26
- migrationStatus.migrationChanges41 && /* @__PURE__ */ jsx(RiScMigrationChanges41, { changes: migrationStatus.migrationChanges41 })
27
+ migrationStatus.migrationChanges41 && /* @__PURE__ */ jsx(RiScMigrationChanges41, { changes: migrationStatus.migrationChanges41 }),
28
+ migrationStatus.migrationChanges42 && /* @__PURE__ */ jsx(RiScMigrationChanges42, { changes: migrationStatus.migrationChanges42 })
27
29
  ] });
28
30
  }
29
31
 
@@ -1 +1 @@
1
- {"version":3,"file":"RiScMigrationChanges.esm.js","sources":["../../../../src/components/riScInfo/migrations/RiScMigrationChanges.tsx"],"sourcesContent":["import { ChangeSetTitle } from '../changeset/components/ChangeSetTitle.tsx';\nimport { ChangeSetBox } from '../changeset/components/ChangeSetBox.tsx';\nimport { RiScMigrationChanges40 } from './RiScMigrationChanges40.tsx';\nimport { RiScMigrationChanges41 } from './RiScMigrationChanges41.tsx';\nimport { MigrationStatus } from '../../../utils/types.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\nimport { ChangeSetChangedProperty } from '../changeset/components/ChangeSetChangedProperty.tsx';\n\ninterface RiScMigrationChangesProps {\n migrationStatus: MigrationStatus;\n}\n\nexport function RiScMigrationChanges({\n migrationStatus,\n}: RiScMigrationChangesProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <div>\n <ChangeSetTitle text={t('migrationDialog.schemaVersion')} />\n <ChangeSetBox type=\"primary\">\n <ChangeSetChangedProperty\n propertyName={t('migrationDialog.schemaVersion')}\n oldValue={migrationStatus.migrationVersions?.fromVersion || ''}\n newValue={migrationStatus.migrationVersions?.toVersion || ''}\n compact={true}\n />\n </ChangeSetBox>\n {migrationStatus.migrationChanges40 && (\n <RiScMigrationChanges40 changes={migrationStatus.migrationChanges40} />\n )}\n {migrationStatus.migrationChanges41 && (\n <RiScMigrationChanges41 changes={migrationStatus.migrationChanges41} />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAaO,SAAS,oBAAqB,CAAA;AAAA,EACnC;AACF,CAA8B,EAAA;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,4BACG,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,IAAA,EAAM,CAAE,CAAA,+BAA+B,CAAG,EAAA,CAAA;AAAA,oBAC1D,GAAA,CAAC,YAAa,EAAA,EAAA,IAAA,EAAK,SACjB,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAc,EAAE,+BAA+B,CAAA;AAAA,QAC/C,QAAA,EAAU,eAAgB,CAAA,iBAAA,EAAmB,WAAe,IAAA,EAAA;AAAA,QAC5D,QAAA,EAAU,eAAgB,CAAA,iBAAA,EAAmB,SAAa,IAAA,EAAA;AAAA,QAC1D,OAAS,EAAA;AAAA;AAAA,KAEb,EAAA,CAAA;AAAA,IACC,gBAAgB,kBACf,oBAAA,GAAA,CAAC,sBAAuB,EAAA,EAAA,OAAA,EAAS,gBAAgB,kBAAoB,EAAA,CAAA;AAAA,IAEtE,gBAAgB,kBACf,oBAAA,GAAA,CAAC,sBAAuB,EAAA,EAAA,OAAA,EAAS,gBAAgB,kBAAoB,EAAA;AAAA,GAEzE,EAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"RiScMigrationChanges.esm.js","sources":["../../../../src/components/riScInfo/migrations/RiScMigrationChanges.tsx"],"sourcesContent":["import { ChangeSetTitle } from '../changeset/components/ChangeSetTitle.tsx';\nimport { ChangeSetBox } from '../changeset/components/ChangeSetBox.tsx';\nimport { RiScMigrationChanges40 } from './RiScMigrationChanges40.tsx';\nimport { RiScMigrationChanges41 } from './RiScMigrationChanges41.tsx';\nimport { MigrationStatus } from '../../../utils/types.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\nimport { ChangeSetChangedProperty } from '../changeset/components/ChangeSetChangedProperty.tsx';\nimport { RiScMigrationChanges42 } from './RiScMigrationChanges42.tsx';\n\ninterface RiScMigrationChangesProps {\n migrationStatus: MigrationStatus;\n}\n\nexport function RiScMigrationChanges({\n migrationStatus,\n}: RiScMigrationChangesProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <div>\n <ChangeSetTitle text={t('migrationDialog.schemaVersion')} />\n <ChangeSetBox type=\"primary\">\n <ChangeSetChangedProperty\n propertyName={t('migrationDialog.schemaVersion')}\n oldValue={migrationStatus.migrationVersions?.fromVersion || ''}\n newValue={migrationStatus.migrationVersions?.toVersion || ''}\n compact={true}\n />\n </ChangeSetBox>\n {migrationStatus.migrationChanges40 && (\n <RiScMigrationChanges40 changes={migrationStatus.migrationChanges40} />\n )}\n {migrationStatus.migrationChanges41 && (\n <RiScMigrationChanges41 changes={migrationStatus.migrationChanges41} />\n )}\n {migrationStatus.migrationChanges42 && (\n <RiScMigrationChanges42 changes={migrationStatus.migrationChanges42} />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAcO,SAAS,oBAAqB,CAAA;AAAA,EACnC;AACF,CAA8B,EAAA;AAC5B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,4BACG,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA,IAAA,EAAM,CAAE,CAAA,+BAA+B,CAAG,EAAA,CAAA;AAAA,oBAC1D,GAAA,CAAC,YAAa,EAAA,EAAA,IAAA,EAAK,SACjB,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAc,EAAE,+BAA+B,CAAA;AAAA,QAC/C,QAAA,EAAU,eAAgB,CAAA,iBAAA,EAAmB,WAAe,IAAA,EAAA;AAAA,QAC5D,QAAA,EAAU,eAAgB,CAAA,iBAAA,EAAmB,SAAa,IAAA,EAAA;AAAA,QAC1D,OAAS,EAAA;AAAA;AAAA,KAEb,EAAA,CAAA;AAAA,IACC,gBAAgB,kBACf,oBAAA,GAAA,CAAC,sBAAuB,EAAA,EAAA,OAAA,EAAS,gBAAgB,kBAAoB,EAAA,CAAA;AAAA,IAEtE,gBAAgB,kBACf,oBAAA,GAAA,CAAC,sBAAuB,EAAA,EAAA,OAAA,EAAS,gBAAgB,kBAAoB,EAAA,CAAA;AAAA,IAEtE,gBAAgB,kBACf,oBAAA,GAAA,CAAC,sBAAuB,EAAA,EAAA,OAAA,EAAS,gBAAgB,kBAAoB,EAAA;AAAA,GAEzE,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,47 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { ChangeSetBox } from '../changeset/components/ChangeSetBox.esm.js';
3
+ import { MigrationTitle } from './components/MigrationTitle.esm.js';
4
+ import { ChangeSetTag } from '../changeset/components/ChangeSetTag.esm.js';
5
+ import { ChangeSetBoxTitle } from '../changeset/components/ChangeSetBoxTitle.esm.js';
6
+ import { ChangeSetTags } from '../changeset/components/ChangeSetTags.esm.js';
7
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
8
+ import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
9
+ import { ChangeSetAddedProperty } from '../changeset/components/ChangeSetAddedProperty.esm.js';
10
+ import { formatDate } from '../../../utils/utilityfunctions.esm.js';
11
+
12
+ function RiScMigrationChanges42({
13
+ changes
14
+ }) {
15
+ const { t } = useTranslationRef(pluginRiScTranslationRef);
16
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
17
+ /* @__PURE__ */ jsx(
18
+ MigrationTitle,
19
+ {
20
+ from: "4.1",
21
+ to: "4.2",
22
+ migrationExplanation: t(
23
+ "migrationDialog.migration42.changeExplanation"
24
+ ),
25
+ changelogUrl: "https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md#42"
26
+ }
27
+ ),
28
+ changes.scenarios.map((scenario) => /* @__PURE__ */ jsxs(ChangeSetBox, { type: "primary", children: [
29
+ /* @__PURE__ */ jsx(ChangeSetTags, { children: /* @__PURE__ */ jsx(ChangeSetTag, { type: "primary", text: t("dictionary.scenario") }) }),
30
+ /* @__PURE__ */ jsx(ChangeSetBoxTitle, { title: scenario.title }),
31
+ scenario.changedActions.map((action) => /* @__PURE__ */ jsxs(ChangeSetBox, { type: "secondary", children: [
32
+ /* @__PURE__ */ jsx(ChangeSetTags, { children: /* @__PURE__ */ jsx(ChangeSetTag, { type: "primary", text: t("dictionary.action") }) }),
33
+ /* @__PURE__ */ jsx(ChangeSetBoxTitle, { title: action.title }),
34
+ /* @__PURE__ */ jsx(
35
+ ChangeSetAddedProperty,
36
+ {
37
+ propertyName: t("scenarioDrawer.action.lastUpdated"),
38
+ newValue: action.lastUpdated ? formatDate(action.lastUpdated) : t("scenarioDrawer.action.notUpdated")
39
+ }
40
+ )
41
+ ] }))
42
+ ] }))
43
+ ] });
44
+ }
45
+
46
+ export { RiScMigrationChanges42 };
47
+ //# sourceMappingURL=RiScMigrationChanges42.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiScMigrationChanges42.esm.js","sources":["../../../../src/components/riScInfo/migrations/RiScMigrationChanges42.tsx"],"sourcesContent":["import { MigrationChanges42 } from '../../../utils/types.ts';\nimport { ChangeSetBox } from '../changeset/components/ChangeSetBox.tsx';\nimport { MigrationTitle } from './components/MigrationTitle.tsx';\nimport { ChangeSetTag } from '../changeset/components/ChangeSetTag.tsx';\nimport { ChangeSetBoxTitle } from '../changeset/components/ChangeSetBoxTitle.tsx';\nimport { ChangeSetTags } from '../changeset/components/ChangeSetTags.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations.ts';\nimport { ChangeSetAddedProperty } from '../changeset/components/ChangeSetAddedProperty.tsx';\nimport { formatDate } from '../../../utils/utilityfunctions.ts';\n\ninterface RiScMigrationChanges42Props {\n changes: MigrationChanges42;\n}\n\nexport function RiScMigrationChanges42({\n changes,\n}: RiScMigrationChanges42Props) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <>\n <MigrationTitle\n from=\"4.1\"\n to=\"4.2\"\n migrationExplanation={t(\n 'migrationDialog.migration42.changeExplanation',\n )}\n changelogUrl=\"https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md#42\"\n />\n {changes.scenarios.map(scenario => (\n <ChangeSetBox type=\"primary\">\n <ChangeSetTags>\n <ChangeSetTag type=\"primary\" text={t('dictionary.scenario')} />\n </ChangeSetTags>\n <ChangeSetBoxTitle title={scenario.title} />\n {scenario.changedActions.map(action => (\n <ChangeSetBox type=\"secondary\">\n <ChangeSetTags>\n <ChangeSetTag type=\"primary\" text={t('dictionary.action')} />\n </ChangeSetTags>\n <ChangeSetBoxTitle title={action.title} />\n <ChangeSetAddedProperty\n propertyName={t('scenarioDrawer.action.lastUpdated')}\n newValue={\n action.lastUpdated\n ? formatDate(action.lastUpdated)\n : t('scenarioDrawer.action.notUpdated')\n }\n />\n </ChangeSetBox>\n ))}\n </ChangeSetBox>\n ))}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAeO,SAAS,sBAAuB,CAAA;AAAA,EACrC;AACF,CAAgC,EAAA;AAC9B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,KAAA;AAAA,QACL,EAAG,EAAA,KAAA;AAAA,QACH,oBAAsB,EAAA,CAAA;AAAA,UACpB;AAAA,SACF;AAAA,QACA,YAAa,EAAA;AAAA;AAAA,KACf;AAAA,IACC,QAAQ,SAAU,CAAA,GAAA,CAAI,8BACpB,IAAA,CAAA,YAAA,EAAA,EAAa,MAAK,SACjB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,aAAA,EAAA,EACC,8BAAC,YAAa,EAAA,EAAA,IAAA,EAAK,WAAU,IAAM,EAAA,CAAA,CAAE,qBAAqB,CAAA,EAAG,CAC/D,EAAA,CAAA;AAAA,sBACC,GAAA,CAAA,iBAAA,EAAA,EAAkB,KAAO,EAAA,QAAA,CAAS,KAAO,EAAA,CAAA;AAAA,MACzC,SAAS,cAAe,CAAA,GAAA,CAAI,4BAC1B,IAAA,CAAA,YAAA,EAAA,EAAa,MAAK,WACjB,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,aAAA,EAAA,EACC,8BAAC,YAAa,EAAA,EAAA,IAAA,EAAK,WAAU,IAAM,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAG,CAC7D,EAAA,CAAA;AAAA,wBACC,GAAA,CAAA,iBAAA,EAAA,EAAkB,KAAO,EAAA,MAAA,CAAO,KAAO,EAAA,CAAA;AAAA,wBACxC,GAAA;AAAA,UAAC,sBAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,EAAE,mCAAmC,CAAA;AAAA,YACnD,QAAA,EACE,OAAO,WACH,GAAA,UAAA,CAAW,OAAO,WAAW,CAAA,GAC7B,EAAE,kCAAkC;AAAA;AAAA;AAE5C,OAAA,EACF,CACD;AAAA,KAAA,EACH,CACD;AAAA,GACH,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,78 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { Button, Dialog, DialogTitle, DialogContent, TextField, DialogActions } from '@mui/material/';
3
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
4
+ import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
5
+ import { useState } from 'react';
6
+ import { dialogActions } from '../common/mixins.esm.js';
7
+ import { AddComment } from '@material-ui/icons';
8
+ import { useAuthenticatedFetch } from '../../utils/hooks.esm.js';
9
+ import Alert from '@mui/material/Alert';
10
+
11
+ function FeedbackDialog() {
12
+ const { t } = useTranslationRef(pluginRiScTranslationRef);
13
+ const { postFeedback } = useAuthenticatedFetch();
14
+ const [open, setOpen] = useState(false);
15
+ const [feedbackText, setFeedbackText] = useState("");
16
+ const [feedbackSent, setFeedbackSent] = useState(false);
17
+ const [feedbackError, setFeedbackError] = useState(null);
18
+ const onClose = () => {
19
+ setOpen(false);
20
+ setFeedbackText("");
21
+ setFeedbackSent(false);
22
+ setFeedbackError(null);
23
+ };
24
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
25
+ /* @__PURE__ */ jsx(
26
+ Button,
27
+ {
28
+ variant: "text",
29
+ startIcon: /* @__PURE__ */ jsx(AddComment, {}),
30
+ color: "primary",
31
+ onClick: () => setOpen(true),
32
+ children: t("feedbackDialog.feedbackButton")
33
+ }
34
+ ),
35
+ /* @__PURE__ */ jsxs(Dialog, { open, onClose, fullWidth: true, children: [
36
+ /* @__PURE__ */ jsx(DialogTitle, { children: t("feedbackDialog.title") }),
37
+ /* @__PURE__ */ jsx(DialogContent, { children: /* @__PURE__ */ jsxs(Fragment, { children: [
38
+ /* @__PURE__ */ jsx(
39
+ TextField,
40
+ {
41
+ margin: "dense",
42
+ label: t("feedbackDialog.description"),
43
+ fullWidth: true,
44
+ multiline: true,
45
+ minRows: 4,
46
+ value: feedbackText,
47
+ onChange: (e) => setFeedbackText(e.target.value),
48
+ disabled: feedbackSent
49
+ }
50
+ ),
51
+ feedbackError && /* @__PURE__ */ jsx(Alert, { severity: "error", sx: { mt: 2 }, children: feedbackError }),
52
+ feedbackSent && /* @__PURE__ */ jsx(Alert, { severity: "success", sx: { mt: 2 }, children: t("feedbackDialog.confirmationMessage") })
53
+ ] }) }),
54
+ /* @__PURE__ */ jsx(DialogActions, { sx: dialogActions, children: feedbackSent ? /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "outlined", children: t("dictionary.close") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
55
+ /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "outlined", children: t("dictionary.cancel") }),
56
+ /* @__PURE__ */ jsx(
57
+ Button,
58
+ {
59
+ onClick: async () => {
60
+ try {
61
+ await postFeedback(feedbackText);
62
+ setFeedbackSent(true);
63
+ } catch (error) {
64
+ setFeedbackError(t("feedbackDialog.errorMessage"));
65
+ }
66
+ },
67
+ disabled: !feedbackText.trim(),
68
+ variant: "contained",
69
+ children: t("feedbackDialog.sendButton")
70
+ }
71
+ )
72
+ ] }) })
73
+ ] })
74
+ ] });
75
+ }
76
+
77
+ export { FeedbackDialog };
78
+ //# sourceMappingURL=FeedbackDialog.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeedbackDialog.esm.js","sources":["../../../src/components/riScPlugin/FeedbackDialog.tsx"],"sourcesContent":["import {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n TextField,\n Button,\n} from '@mui/material/';\n\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useState } from 'react';\nimport { dialogActions } from '../common/mixins.ts';\nimport { AddComment } from '@material-ui/icons';\nimport { useAuthenticatedFetch } from '../../utils/hooks.ts';\nimport Alert from '@mui/material/Alert';\n\nexport function FeedbackDialog() {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { postFeedback } = useAuthenticatedFetch();\n\n const [open, setOpen] = useState(false);\n const [feedbackText, setFeedbackText] = useState('');\n const [feedbackSent, setFeedbackSent] = useState(false);\n const [feedbackError, setFeedbackError] = useState<string | null>(null);\n\n const onClose = () => {\n setOpen(false);\n setFeedbackText('');\n setFeedbackSent(false);\n setFeedbackError(null);\n };\n\n return (\n <>\n <Button\n variant=\"text\"\n startIcon={<AddComment />}\n color=\"primary\"\n onClick={() => setOpen(true)}\n >\n {t('feedbackDialog.feedbackButton')}\n </Button>\n\n <Dialog open={open} onClose={onClose} fullWidth>\n <DialogTitle>{t('feedbackDialog.title')}</DialogTitle>\n <DialogContent>\n <>\n <TextField\n margin=\"dense\"\n label={t('feedbackDialog.description')}\n fullWidth\n multiline\n minRows={4}\n value={feedbackText}\n onChange={e => setFeedbackText(e.target.value)}\n disabled={feedbackSent}\n />\n {feedbackError && (\n <Alert severity=\"error\" sx={{ mt: 2 }}>\n {feedbackError}\n </Alert>\n )}\n {feedbackSent && (\n <Alert severity=\"success\" sx={{ mt: 2 }}>\n {t('feedbackDialog.confirmationMessage')}\n </Alert>\n )}\n </>\n </DialogContent>\n <DialogActions sx={dialogActions}>\n {feedbackSent ? (\n <Button onClick={onClose} variant=\"outlined\">\n {t('dictionary.close')}\n </Button>\n ) : (\n <>\n <Button onClick={onClose} variant=\"outlined\">\n {t('dictionary.cancel')}\n </Button>\n <Button\n onClick={async () => {\n try {\n await postFeedback(feedbackText);\n setFeedbackSent(true);\n } catch (error: any) {\n setFeedbackError(t('feedbackDialog.errorMessage'));\n }\n }}\n disabled={!feedbackText.trim()}\n variant=\"contained\"\n >\n {t('feedbackDialog.sendButton')}\n </Button>\n </>\n )}\n </DialogActions>\n </Dialog>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import ListItemText from '@mui/material/ListItemText';
24
24
  import { ScenarioTableWrapper } from '../scenarioTable/ScenarioTable.esm.js';
25
25
  import { Delete, Settings } from '@mui/icons-material';
26
26
  import { RiScStatus } from '../../utils/types.esm.js';
27
+ import { FeedbackDialog } from './FeedbackDialog.esm.js';
27
28
 
28
29
  function RiScPlugin() {
29
30
  const { t } = useTranslationRef(pluginRiScTranslationRef);
@@ -85,14 +86,17 @@ function RiScPlugin() {
85
86
  }
86
87
  ),
87
88
  scenarioWizardStep !== null ? /* @__PURE__ */ jsx(ScenarioWizard, { step: scenarioWizardStep }) : /* @__PURE__ */ jsxs(Fragment, { children: [
88
- /* @__PURE__ */ jsx(ContentHeader, { title: t("contentHeader.title"), children: /* @__PURE__ */ jsx(
89
+ /* @__PURE__ */ jsx(ContentHeader, { title: t("contentHeader.title"), children: /* @__PURE__ */ jsxs(
89
90
  Grid,
90
91
  {
91
92
  sx: {
92
93
  display: "flex",
93
94
  flexDirection: "row"
94
95
  },
95
- children: /* @__PURE__ */ jsx(SupportButton, {})
96
+ children: [
97
+ /* @__PURE__ */ jsx(SupportButton, {}),
98
+ /* @__PURE__ */ jsx(FeedbackDialog, {})
99
+ ]
96
100
  }
97
101
  ) }),
98
102
  isFetching && /* @__PURE__ */ jsx(Spinner, { size: 80 }),
@@ -1 +1 @@
1
- {"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { ContentHeader, SupportButton } from '@backstage/core-components';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { RiScInfo } from '../riScInfo/RiScInfo';\nimport AddCircle from '@mui/icons-material/AddCircle';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\nimport { ScenarioTableWrapper } from '../scenarioTable/ScenarioTable';\nimport { Delete, Settings } from '@mui/icons-material';\nimport { RiScStatus } from '../../utils/types';\n\nexport function RiScPlugin() {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n function openCreateRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Create);\n }\n\n function openDeleteRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Delete);\n }\n\n function openEditRiScDialog() {\n return setRiScDialogState(RiScDialogStates.EditRiscInfo);\n }\n\n function openEditEncryptionDialog() {\n return setRiScDialogState(RiScDialogStates.EditEncryption);\n }\n\n function closeRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Closed);\n }\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n isFetching,\n resetResponse,\n resetRiScStatus,\n response,\n updateStatus,\n } = useRiScs();\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) {\n resetRiScStatus();\n resetResponse();\n }\n }, [resetRiScStatus, resetResponse, scenarioWizardStep]);\n\n return (\n <>\n {response && !updateStatus.isLoading && (\n <Alert\n severity={getAlertSeverity(updateStatus)}\n sx={{ marginBottom: 2 }}\n >\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n {updateStatus.isLoading && (\n <LinearProgress\n sx={{\n position: 'sticky',\n top: 0,\n margin: 2,\n }}\n />\n )}\n\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <ContentHeader title={t('contentHeader.title')}>\n <Grid\n sx={{\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <SupportButton />\n </Grid>\n </ContentHeader>\n\n {isFetching && <Spinner size={80} />}\n\n <Grid container spacing={4}>\n {riScs !== null && riScs.length !== 0 && (\n <Grid item xs={12} sm={6}>\n <Select\n variant=\"standard\"\n value={selectedRiSc?.id ?? ''}\n onChange={e => selectRiSc(e.target.value)}\n sx={{ width: '100%' }}\n >\n {riScs.map(riSc => (\n <MenuItem key={riSc.id} value={riSc.id}>\n <ListItemText primary={riSc.content.title} />\n </MenuItem>\n )) ?? []}\n </Select>\n </Grid>\n )}\n\n {!isFetching && (\n <Grid item xs>\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"success\"\n onClick={openCreateRiScDialog}\n sx={{\n minWidth: '205px',\n }}\n >\n {t('contentHeader.createNewButton')}\n </Button>\n {selectedRiSc &&\n selectedRiSc.status !== RiScStatus.DeletionDraft &&\n selectedRiSc.status !==\n RiScStatus.DeletionSentForApproval && (\n <>\n <Button\n startIcon={<Delete />}\n variant=\"text\"\n color=\"error\"\n onClick={openDeleteRiScDialog}\n >\n {t('contentHeader.deleteButton')}\n </Button>\n <Button\n startIcon={<Settings />}\n variant=\"text\"\n color=\"primary\"\n onClick={openEditEncryptionDialog}\n >\n {t('contentHeader.editEncryption')}\n </Button>\n </>\n )}\n </Grid>\n )}\n\n {selectedRiSc && (\n <>\n <Grid item xs={12}>\n <RiScInfo\n riScWithMetadata={selectedRiSc}\n edit={openEditRiScDialog}\n />\n </Grid>\n <Grid item xs md={7} lg={8}>\n <ScenarioTableWrapper riScWithMetadata={selectedRiSc} />\n </Grid>\n <Grid item xs md={5} lg={4}>\n <RiskMatrix riScWithMetadata={selectedRiSc} />\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog onClose={closeRiScDialog} dialogState={riScDialogState} />\n )}\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n}\n"],"names":["Select"],"mappings":"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"}
1
+ {"version":3,"file":"RiScPlugin.esm.js","sources":["../../../src/components/riScPlugin/RiScPlugin.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { ContentHeader, SupportButton } from '@backstage/core-components';\nimport { useSearchParams } from 'react-router-dom';\nimport { ScenarioWizard } from '../scenarioWizard/ScenarioWizard';\nimport { ScenarioDrawer } from '../scenarioDrawer/ScenarioDrawer';\nimport { RiskMatrix } from '../riskMatrix/RiskMatrix';\nimport Alert from '@mui/material/Alert';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\nimport LinearProgress from '@mui/material/LinearProgress';\nimport Typography from '@mui/material/Typography';\nimport { getAlertSeverity } from '../../utils/utilityfunctions';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { RiScDialog, RiScDialogStates } from '../riScDialog/RiScDialog';\nimport { RiScInfo } from '../riScInfo/RiScInfo';\nimport AddCircle from '@mui/icons-material/AddCircle';\nimport { Spinner } from '../common/Spinner';\nimport { useRiScs } from '../../contexts/RiScContext';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport { ScenarioWizardSteps } from '../../contexts/ScenarioContext';\nimport { ScenarioTableWrapper } from '../scenarioTable/ScenarioTable';\nimport { Delete, Settings } from '@mui/icons-material';\nimport { RiScStatus } from '../../utils/types';\nimport { FeedbackDialog } from './FeedbackDialog.tsx';\n\nexport function RiScPlugin() {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const [riScDialogState, setRiScDialogState] = useState<RiScDialogStates>(\n RiScDialogStates.Closed,\n );\n\n function openCreateRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Create);\n }\n\n function openDeleteRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Delete);\n }\n\n function openEditRiScDialog() {\n return setRiScDialogState(RiScDialogStates.EditRiscInfo);\n }\n\n function openEditEncryptionDialog() {\n return setRiScDialogState(RiScDialogStates.EditEncryption);\n }\n\n function closeRiScDialog() {\n return setRiScDialogState(RiScDialogStates.Closed);\n }\n\n const {\n selectedRiSc,\n riScs,\n selectRiSc,\n isFetching,\n resetResponse,\n resetRiScStatus,\n response,\n updateStatus,\n } = useRiScs();\n\n const [searchParams] = useSearchParams();\n const scenarioWizardStep = searchParams.get(\n 'step',\n ) as ScenarioWizardSteps | null;\n\n useEffect(() => {\n if (scenarioWizardStep !== null) {\n resetRiScStatus();\n resetResponse();\n }\n }, [resetRiScStatus, resetResponse, scenarioWizardStep]);\n\n return (\n <>\n {response && !updateStatus.isLoading && (\n <Alert\n severity={getAlertSeverity(updateStatus)}\n sx={{ marginBottom: 2 }}\n >\n <Typography>{response.statusMessage}</Typography>\n </Alert>\n )}\n {updateStatus.isLoading && (\n <LinearProgress\n sx={{\n position: 'sticky',\n top: 0,\n margin: 2,\n }}\n />\n )}\n\n {scenarioWizardStep !== null ? (\n <ScenarioWizard step={scenarioWizardStep} />\n ) : (\n <>\n <ContentHeader title={t('contentHeader.title')}>\n <Grid\n sx={{\n display: 'flex',\n flexDirection: 'row',\n }}\n >\n <SupportButton />\n <FeedbackDialog />\n </Grid>\n </ContentHeader>\n\n {isFetching && <Spinner size={80} />}\n\n <Grid container spacing={4}>\n {riScs !== null && riScs.length !== 0 && (\n <Grid item xs={12} sm={6}>\n <Select\n variant=\"standard\"\n value={selectedRiSc?.id ?? ''}\n onChange={e => selectRiSc(e.target.value)}\n sx={{ width: '100%' }}\n >\n {riScs.map(riSc => (\n <MenuItem key={riSc.id} value={riSc.id}>\n <ListItemText primary={riSc.content.title} />\n </MenuItem>\n )) ?? []}\n </Select>\n </Grid>\n )}\n\n {!isFetching && (\n <Grid item xs>\n <Button\n startIcon={<AddCircle />}\n variant=\"text\"\n color=\"success\"\n onClick={openCreateRiScDialog}\n sx={{\n minWidth: '205px',\n }}\n >\n {t('contentHeader.createNewButton')}\n </Button>\n {selectedRiSc &&\n selectedRiSc.status !== RiScStatus.DeletionDraft &&\n selectedRiSc.status !==\n RiScStatus.DeletionSentForApproval && (\n <>\n <Button\n startIcon={<Delete />}\n variant=\"text\"\n color=\"error\"\n onClick={openDeleteRiScDialog}\n >\n {t('contentHeader.deleteButton')}\n </Button>\n <Button\n startIcon={<Settings />}\n variant=\"text\"\n color=\"primary\"\n onClick={openEditEncryptionDialog}\n >\n {t('contentHeader.editEncryption')}\n </Button>\n </>\n )}\n </Grid>\n )}\n\n {selectedRiSc && (\n <>\n <Grid item xs={12}>\n <RiScInfo\n riScWithMetadata={selectedRiSc}\n edit={openEditRiScDialog}\n />\n </Grid>\n <Grid item xs md={7} lg={8}>\n <ScenarioTableWrapper riScWithMetadata={selectedRiSc} />\n </Grid>\n <Grid item xs md={5} lg={4}>\n <RiskMatrix riScWithMetadata={selectedRiSc} />\n </Grid>\n </>\n )}\n </Grid>\n </>\n )}\n\n {riScDialogState !== RiScDialogStates.Closed && (\n <RiScDialog onClose={closeRiScDialog} dialogState={riScDialogState} />\n )}\n\n {!scenarioWizardStep && <ScenarioDrawer />}\n </>\n );\n}\n"],"names":["Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,SAAS,UAAa,GAAA;AAC3B,EAAA,MAAM,EAAE,CAAA,EAAM,GAAA,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAM,MAAA,CAAC,eAAiB,EAAA,kBAAkB,CAAI,GAAA,QAAA;AAAA,IAC5C,gBAAiB,CAAA;AAAA,GACnB;AAEA,EAAA,SAAS,oBAAuB,GAAA;AAC9B,IAAO,OAAA,kBAAA,CAAmB,iBAAiB,MAAM,CAAA;AAAA;AAGnD,EAAA,SAAS,oBAAuB,GAAA;AAC9B,IAAO,OAAA,kBAAA,CAAmB,iBAAiB,MAAM,CAAA;AAAA;AAGnD,EAAA,SAAS,kBAAqB,GAAA;AAC5B,IAAO,OAAA,kBAAA,CAAmB,iBAAiB,YAAY,CAAA;AAAA;AAGzD,EAAA,SAAS,wBAA2B,GAAA;AAClC,IAAO,OAAA,kBAAA,CAAmB,iBAAiB,cAAc,CAAA;AAAA;AAG3D,EAAA,SAAS,eAAkB,GAAA;AACzB,IAAO,OAAA,kBAAA,CAAmB,iBAAiB,MAAM,CAAA;AAAA;AAGnD,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,MACE,QAAS,EAAA;AAEb,EAAM,MAAA,CAAC,YAAY,CAAA,GAAI,eAAgB,EAAA;AACvC,EAAA,MAAM,qBAAqB,YAAa,CAAA,GAAA;AAAA,IACtC;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,uBAAuB,IAAM,EAAA;AAC/B,MAAgB,eAAA,EAAA;AAChB,MAAc,aAAA,EAAA;AAAA;AAChB,GACC,EAAA,CAAC,eAAiB,EAAA,aAAA,EAAe,kBAAkB,CAAC,CAAA;AAEvD,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAY,QAAA,IAAA,CAAC,aAAa,SACzB,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAU,iBAAiB,YAAY,CAAA;AAAA,QACvC,EAAA,EAAI,EAAE,YAAA,EAAc,CAAE,EAAA;AAAA,QAEtB,QAAA,kBAAA,GAAA,CAAC,UAAY,EAAA,EAAA,QAAA,EAAA,QAAA,CAAS,aAAc,EAAA;AAAA;AAAA,KACtC;AAAA,IAED,aAAa,SACZ,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,EAAI,EAAA;AAAA,UACF,QAAU,EAAA,QAAA;AAAA,UACV,GAAK,EAAA,CAAA;AAAA,UACL,MAAQ,EAAA;AAAA;AACV;AAAA,KACF;AAAA,IAGD,uBAAuB,IACtB,mBAAA,GAAA,CAAC,kBAAe,IAAM,EAAA,kBAAA,EAAoB,oBAGxC,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,KAAA,EAAO,CAAE,CAAA,qBAAqB,CAC3C,EAAA,QAAA,kBAAA,IAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,EAAI,EAAA;AAAA,YACF,OAAS,EAAA,MAAA;AAAA,YACT,aAAe,EAAA;AAAA,WACjB;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,aAAc,EAAA,EAAA,CAAA;AAAA,gCACd,cAAe,EAAA,EAAA;AAAA;AAAA;AAAA,OAEpB,EAAA,CAAA;AAAA,MAEC,UAAc,oBAAA,GAAA,CAAC,OAAQ,EAAA,EAAA,IAAA,EAAM,EAAI,EAAA,CAAA;AAAA,sBAEjC,IAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CACtB,EAAA,QAAA,EAAA;AAAA,QAAU,KAAA,KAAA,IAAA,IAAQ,KAAM,CAAA,MAAA,KAAW,CAClC,oBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,CACrB,EAAA,QAAA,kBAAA,GAAA;AAAA,UAACA,SAAA;AAAA,UAAA;AAAA,YACC,OAAQ,EAAA,UAAA;AAAA,YACR,KAAA,EAAO,cAAc,EAAM,IAAA,EAAA;AAAA,YAC3B,QAAU,EAAA,CAAA,CAAA,KAAK,UAAW,CAAA,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACxC,EAAA,EAAI,EAAE,KAAA,EAAO,MAAO,EAAA;AAAA,YAEnB,gBAAM,GAAI,CAAA,CAAA,IAAA,yBACR,QAAuB,EAAA,EAAA,KAAA,EAAO,KAAK,EAClC,EAAA,QAAA,kBAAA,GAAA,CAAC,gBAAa,OAAS,EAAA,IAAA,CAAK,QAAQ,KAAO,EAAA,CAAA,EAAA,EAD9B,KAAK,EAEpB,CACD,KAAK;AAAC;AAAA,SAEX,EAAA,CAAA;AAAA,QAGD,CAAC,UACA,oBAAA,IAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAE,IACX,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,sBAAY,SAAU,EAAA,EAAA,CAAA;AAAA,cACtB,OAAQ,EAAA,MAAA;AAAA,cACR,KAAM,EAAA,SAAA;AAAA,cACN,OAAS,EAAA,oBAAA;AAAA,cACT,EAAI,EAAA;AAAA,gBACF,QAAU,EAAA;AAAA,eACZ;AAAA,cAEC,YAAE,+BAA+B;AAAA;AAAA,WACpC;AAAA,UACC,YAAA,IACC,aAAa,MAAW,KAAA,UAAA,CAAW,iBACnC,YAAa,CAAA,MAAA,KACX,UAAW,CAAA,uBAAA,oBAET,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,sBAAY,MAAO,EAAA,EAAA,CAAA;AAAA,gBACnB,OAAQ,EAAA,MAAA;AAAA,gBACR,KAAM,EAAA,OAAA;AAAA,gBACN,OAAS,EAAA,oBAAA;AAAA,gBAER,YAAE,4BAA4B;AAAA;AAAA,aACjC;AAAA,4BACA,GAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,SAAA,sBAAY,QAAS,EAAA,EAAA,CAAA;AAAA,gBACrB,OAAQ,EAAA,MAAA;AAAA,gBACR,KAAM,EAAA,SAAA;AAAA,gBACN,OAAS,EAAA,wBAAA;AAAA,gBAER,YAAE,8BAA8B;AAAA;AAAA;AACnC,WACF,EAAA;AAAA,SAEN,EAAA,CAAA;AAAA,QAGD,gCAEG,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EACb,EAAA,QAAA,kBAAA,GAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,gBAAkB,EAAA,YAAA;AAAA,cAClB,IAAM,EAAA;AAAA;AAAA,WAEV,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAE,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,CACvB,EAAA,QAAA,kBAAA,GAAA,CAAC,oBAAqB,EAAA,EAAA,gBAAA,EAAkB,cAAc,CACxD,EAAA,CAAA;AAAA,0BACC,GAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,IAAE,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,CACvB,EAAA,QAAA,kBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,gBAAA,EAAkB,cAAc,CAC9C,EAAA;AAAA,SACF,EAAA;AAAA,OAEJ,EAAA;AAAA,KACF,EAAA,CAAA;AAAA,IAGD,eAAA,KAAoB,iBAAiB,MACpC,oBAAA,GAAA,CAAC,cAAW,OAAS,EAAA,eAAA,EAAiB,aAAa,eAAiB,EAAA,CAAA;AAAA,IAGrE,CAAC,kBAAsB,oBAAA,GAAA,CAAC,cAAe,EAAA,EAAA;AAAA,GAC1C,EAAA,CAAA;AAEJ;;;;"}