@kartverket/backstage-plugin-risk-scorecard 3.1.7 → 3.3.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.
- package/dist/components/common/DualButton.esm.js +58 -0
- package/dist/components/common/DualButton.esm.js.map +1 -0
- package/dist/components/riScInfo/changeset/RiScActionChange.esm.js +9 -0
- package/dist/components/riScInfo/changeset/RiScActionChange.esm.js.map +1 -1
- package/dist/components/riScInfo/changeset/RiScActionChangeSet.esm.js +9 -0
- package/dist/components/riScInfo/changeset/RiScActionChangeSet.esm.js.map +1 -1
- package/dist/components/riScInfo/changeset/components/ChangeSetAddedProperty.esm.js +14 -0
- package/dist/components/riScInfo/changeset/components/ChangeSetAddedProperty.esm.js.map +1 -0
- package/dist/components/riScInfo/changeset/components/changeSetStyles.esm.js +0 -1
- package/dist/components/riScInfo/changeset/components/changeSetStyles.esm.js.map +1 -1
- package/dist/components/riScInfo/migrations/RiScMigrationChanges.esm.js +5 -1
- package/dist/components/riScInfo/migrations/RiScMigrationChanges.esm.js.map +1 -1
- package/dist/components/riScInfo/migrations/RiScMigrationChanges42.esm.js +47 -0
- package/dist/components/riScInfo/migrations/RiScMigrationChanges42.esm.js.map +1 -0
- package/dist/components/riScInfo/migrations/RiScMigrationChanges50.esm.js +54 -0
- package/dist/components/riScInfo/migrations/RiScMigrationChanges50.esm.js.map +1 -0
- package/dist/components/riScPlugin/FeedbackDialog.esm.js +78 -0
- package/dist/components/riScPlugin/FeedbackDialog.esm.js.map +1 -0
- package/dist/components/riScPlugin/RiScPlugin.esm.js +6 -2
- package/dist/components/riScPlugin/RiScPlugin.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionBox.esm.js +176 -73
- package/dist/components/scenarioDrawer/components/ActionBox.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js +8 -0
- package/dist/components/scenarioDrawer/components/ActionFormItem.esm.js.map +1 -1
- package/dist/components/scenarioTable/ScenarioTableRow.esm.js +1 -1
- package/dist/components/scenarioTable/ScenarioTableRow.esm.js.map +1 -1
- package/dist/components/scenarioWizard/steps/ActionsStep.esm.js +8 -0
- package/dist/components/scenarioWizard/steps/ActionsStep.esm.js.map +1 -1
- package/dist/contexts/ScenarioContext.esm.js +6 -5
- package/dist/contexts/ScenarioContext.esm.js.map +1 -1
- package/dist/utils/DTOs.esm.js +2 -1
- package/dist/utils/DTOs.esm.js.map +1 -1
- package/dist/utils/constants.esm.js +4 -6
- package/dist/utils/constants.esm.js.map +1 -1
- package/dist/utils/hooks.esm.js +13 -1
- package/dist/utils/hooks.esm.js.map +1 -1
- package/dist/utils/translations.esm.js +41 -8
- package/dist/utils/translations.esm.js.map +1 -1
- package/dist/utils/types.esm.js.map +1 -1
- package/dist/utils/utilityfunctions.esm.js +15 -6
- package/dist/utils/utilityfunctions.esm.js.map +1 -1
- 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":"
|
|
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":"
|
|
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;;;;"}
|
|
@@ -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
|
|
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":"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"}
|
|
@@ -6,6 +6,8 @@ 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';
|
|
10
|
+
import { RiScMigrationChanges50 } from './RiScMigrationChanges50.esm.js';
|
|
9
11
|
|
|
10
12
|
function RiScMigrationChanges({
|
|
11
13
|
migrationStatus
|
|
@@ -23,7 +25,9 @@ function RiScMigrationChanges({
|
|
|
23
25
|
}
|
|
24
26
|
) }),
|
|
25
27
|
migrationStatus.migrationChanges40 && /* @__PURE__ */ jsx(RiScMigrationChanges40, { changes: migrationStatus.migrationChanges40 }),
|
|
26
|
-
migrationStatus.migrationChanges41 && /* @__PURE__ */ jsx(RiScMigrationChanges41, { changes: migrationStatus.migrationChanges41 })
|
|
28
|
+
migrationStatus.migrationChanges41 && /* @__PURE__ */ jsx(RiScMigrationChanges41, { changes: migrationStatus.migrationChanges41 }),
|
|
29
|
+
migrationStatus.migrationChanges42 && /* @__PURE__ */ jsx(RiScMigrationChanges42, { changes: migrationStatus.migrationChanges42 }),
|
|
30
|
+
migrationStatus.migrationChanges50 && /* @__PURE__ */ jsx(RiScMigrationChanges50, { changes: migrationStatus.migrationChanges50 })
|
|
27
31
|
] });
|
|
28
32
|
}
|
|
29
33
|
|
|
@@ -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":"
|
|
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';\nimport { RiScMigrationChanges50 } from './RiScMigrationChanges50.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 {migrationStatus.migrationChanges50 && (\n <RiScMigrationChanges50 changes={migrationStatus.migrationChanges50} />\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAeO,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,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,54 @@
|
|
|
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 { ChangeSetChangedProperty } from '../changeset/components/ChangeSetChangedProperty.esm.js';
|
|
10
|
+
import { getTranslatedActionStatus } from '../../../utils/utilityfunctions.esm.js';
|
|
11
|
+
|
|
12
|
+
function RiScMigrationChanges50({
|
|
13
|
+
changes
|
|
14
|
+
}) {
|
|
15
|
+
const { t } = useTranslationRef(pluginRiScTranslationRef);
|
|
16
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
17
|
+
/* @__PURE__ */ jsx(
|
|
18
|
+
MigrationTitle,
|
|
19
|
+
{
|
|
20
|
+
from: "4.2",
|
|
21
|
+
to: "5.0",
|
|
22
|
+
migrationExplanation: t(
|
|
23
|
+
"migrationDialog.migration50.changeExplanation"
|
|
24
|
+
),
|
|
25
|
+
changelogUrl: "https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md#50"
|
|
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
|
+
ChangeSetChangedProperty,
|
|
36
|
+
{
|
|
37
|
+
propertyName: t("dictionary.status"),
|
|
38
|
+
oldValue: getTranslatedActionStatus(
|
|
39
|
+
action.changedActionStatus.oldValue,
|
|
40
|
+
t
|
|
41
|
+
),
|
|
42
|
+
newValue: getTranslatedActionStatus(
|
|
43
|
+
action.changedActionStatus.newValue,
|
|
44
|
+
t
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
] }))
|
|
49
|
+
] }))
|
|
50
|
+
] });
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { RiScMigrationChanges50 };
|
|
54
|
+
//# sourceMappingURL=RiScMigrationChanges50.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RiScMigrationChanges50.esm.js","sources":["../../../../src/components/riScInfo/migrations/RiScMigrationChanges50.tsx"],"sourcesContent":["import { MigrationChanges50 } 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 { ChangeSetChangedProperty } from '../changeset/components/ChangeSetChangedProperty.tsx';\nimport { getTranslatedActionStatus } from '../../../utils/utilityfunctions.ts';\n\ninterface RiScMigrationChanges50Props {\n changes: MigrationChanges50;\n}\n\nexport function RiScMigrationChanges50({\n changes,\n}: RiScMigrationChanges50Props) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <>\n <MigrationTitle\n from=\"4.2\"\n to=\"5.0\"\n migrationExplanation={t(\n 'migrationDialog.migration50.changeExplanation',\n )}\n changelogUrl=\"https://github.com/kartverket/backstage-plugin-risk-scorecard-backend/blob/main/docs/schemaChangelog.md#50\"\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 <ChangeSetChangedProperty\n propertyName={t('dictionary.status')}\n oldValue={getTranslatedActionStatus(\n action.changedActionStatus.oldValue,\n t,\n )}\n newValue={getTranslatedActionStatus(\n action.changedActionStatus.newValue,\n t,\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,wBAAA;AAAA,UAAA;AAAA,YACC,YAAA,EAAc,EAAE,mBAAmB,CAAA;AAAA,YACnC,QAAU,EAAA,yBAAA;AAAA,cACR,OAAO,mBAAoB,CAAA,QAAA;AAAA,cAC3B;AAAA,aACF;AAAA,YACA,QAAU,EAAA,yBAAA;AAAA,cACR,OAAO,mBAAoB,CAAA,QAAA;AAAA,cAC3B;AAAA;AACF;AAAA;AACF,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__ */
|
|
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:
|
|
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":"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"}
|