@kartverket/backstage-plugin-risk-scorecard 3.10.5 → 3.10.6

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 (35) hide show
  1. package/css/theme.css +43 -3
  2. package/dist/components/action/ActionEdit.esm.js +4 -4
  3. package/dist/components/action/ActionEdit.esm.js.map +1 -1
  4. package/dist/components/action/ActionRowList.esm.js +11 -1
  5. package/dist/components/action/ActionRowList.esm.js.map +1 -1
  6. package/dist/components/action/ActionRowList.module.css.esm.js +8 -0
  7. package/dist/components/action/ActionRowList.module.css.esm.js.map +1 -0
  8. package/dist/components/riskMatrix/RiskMatrix.esm.js +12 -25
  9. package/dist/components/riskMatrix/RiskMatrix.esm.js.map +1 -1
  10. package/dist/components/riskMatrix/RiskMatrixSquare.esm.js +31 -0
  11. package/dist/components/riskMatrix/RiskMatrixSquare.esm.js.map +1 -0
  12. package/dist/components/riskMatrix/RiskMatrixSquare.module.css.esm.js +8 -0
  13. package/dist/components/riskMatrix/RiskMatrixSquare.module.css.esm.js.map +1 -0
  14. package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js +3 -3
  15. package/dist/components/scenarioDrawer/components/DeleteConfirmation.esm.js.map +1 -1
  16. package/dist/components/scenarioTable/OutdatedActionsCounts.esm.js +10 -1
  17. package/dist/components/scenarioTable/OutdatedActionsCounts.esm.js.map +1 -1
  18. package/dist/components/scenarioTable/ScenarioTable.esm.js +10 -1
  19. package/dist/components/scenarioTable/ScenarioTable.esm.js.map +1 -1
  20. package/dist/components/scenarioTable/ScenarioTableCard.esm.js +2 -1
  21. package/dist/components/scenarioTable/ScenarioTableCard.esm.js.map +1 -1
  22. package/dist/components/scenarioTable/ScenarioTableFilter.esm.js +1 -0
  23. package/dist/components/scenarioTable/ScenarioTableFilter.esm.js.map +1 -1
  24. package/dist/components/scenarioTable/ScenarioTableRow.esm.js +42 -28
  25. package/dist/components/scenarioTable/ScenarioTableRow.esm.js.map +1 -1
  26. package/dist/components/scenarioTable/components/OutdatedActionsCountButton/OutdatedActionsCountButton.esm.js +20 -16
  27. package/dist/components/scenarioTable/components/OutdatedActionsCountButton/OutdatedActionsCountButton.esm.js.map +1 -1
  28. package/dist/components/scenarioTable/components/OutdatedActionsCountButton/OutdatedActionsCountButton.module.css.esm.js +2 -2
  29. package/dist/utils/constants.esm.js +21 -6
  30. package/dist/utils/constants.esm.js.map +1 -1
  31. package/dist/utils/translations.esm.js +8 -4
  32. package/dist/utils/translations.esm.js.map +1 -1
  33. package/dist/utils/utilityfunctions.esm.js +5 -2
  34. package/dist/utils/utilityfunctions.esm.js.map +1 -1
  35. package/package.json +1 -1
package/css/theme.css CHANGED
@@ -18,6 +18,7 @@ Remember to prefix custom styles with 'ros-' to avoid conflicts with other plugi
18
18
 
19
19
  --ros-blue-600: #1f5492;
20
20
 
21
+ --ros-red-50: #fcf1e8;
21
22
  --ros-red-100: #ffe2d4;
22
23
  --ros-red-200: #ebb095;
23
24
  --ros-red-300: #e58869;
@@ -55,6 +56,27 @@ Remember to prefix custom styles with 'ros-' to avoid conflicts with other plugi
55
56
  --ros-risc-status-not-published: var(--ros-orange-400);
56
57
  --ros-risc-status-error: var(--ros-red-700);
57
58
 
59
+ /*--------Custom updated/outdated styles---------*/
60
+ --ros-very-outdated: var(--ros-red-600);
61
+ --ros-very-outdated-hover: var(--ros-red-50);
62
+ --ros-very-outdated-hover-text: var(--ros-red-600);
63
+ --ros-very-outdated-selected-text: var(--bui-white);
64
+ --ros-very-outdated-selected-bg: var(--ros-red-600);
65
+
66
+ --ros-outdated: var(--ros-orange-400);
67
+ --ros-outdated-hover-bg: var(--ros-orange-50);
68
+ --ros-outdated-hover-text: var(--ros-orange-400);
69
+ --ros-outdated-selected-bg: var(--ros-orange-300);
70
+ --ros-outdated-selected-border: transparent;
71
+ --ros-outdated-selected-text: var(--bui-white);
72
+
73
+ --ros-updated: var(--ros-green-500);
74
+ --ros-updated-hover: var(--ros-green-500);
75
+ --ros-updated-hover-bg: var(--ros-green-100);
76
+ --ros-updated-selected-text: var(--bui-white);
77
+ --ros-updated-selected-bg: var(--ros-green-500);
78
+ --ros-updated-selected-border: var(--ros-green-500);
79
+
58
80
  --ros-input-text-color: #757575;
59
81
  --ros-input-disabledBackground: rgba(0, 0, 0, 0.12);
60
82
 
@@ -79,11 +101,29 @@ Remember to prefix custom styles with 'ros-' to avoid conflicts with other plugi
79
101
  /* Dark mode custom styles can be added here */
80
102
  [data-theme-mode='dark'] {
81
103
  --ros-risc-status-updated: var(--ros-green-200);
82
- --ros-risc-status-little-outdated: var(--ros-orange-400);
83
- --ros-risc-status-outdated: var(--ros-red-700);
84
104
  --ros-risc-status-very-outdated: var(--ros-red-300);
85
105
  --ros-risc-status-not-published: var(--ros-orange-100);
86
- --ros-risc-status-error: var(--ros-red-700);
106
+
107
+ /* Dark mode custom styles for outdate/updated badges */
108
+ --ros-very-outdated: var(--ros-red-200);
109
+ --ros-very-outdated-hover: transparent;
110
+ --ros-very-outdated-hover-text: var(--ros-red-300);
111
+ --ros-very-outdated-selected-bg: var(--ros-red-200);
112
+ --ros-very-outdated-selected-text: var(--ros-gray-700);
113
+
114
+ --ros-outdated: var(--ros-orange-100);
115
+ --ros-outdated-hover-bg: transparent;
116
+ --ros-outdated-hover: var(--ros-orange-200);
117
+ --ros-outdated-selected: var(--ros-orange-100);
118
+ --ros-outdated-selected-text: var(--ros-gray-700);
119
+ --ros-outdated-selected-border: var(--ros-gray-700);
120
+
121
+ --ros-updated: var(--ros-green-200);
122
+ --ros-updated-hover: var(--ros-green-300);
123
+ --ros-updated-hover-bg: transparent;
124
+ --ros-updated-selected-text: var(--ros-gray-700);
125
+ --ros-updated-selected-bg: var(--ros-green-200);
126
+ --ros-updated-selected-border: var(--ros-green-200);
87
127
 
88
128
  --ros-input-text-color: #ffffff80;
89
129
  --ros-input-disabledBackground: rgba(255, 255, 255, 0.12);
@@ -1,12 +1,12 @@
1
- import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import Button from '@mui/material/Button';
3
3
  import { useForm } from 'react-hook-form';
4
4
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
5
5
  import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
6
- import Box from '@mui/material/Box';
7
6
  import CircularProgress from '@mui/material/CircularProgress';
8
7
  import { useRiScs } from '../../contexts/RiScContext.esm.js';
9
8
  import { ActionFormItem } from '../scenarioDrawer/components/ActionFormItem.esm.js';
9
+ import { Flex } from '@backstage/ui';
10
10
 
11
11
  function ActionEdit(props) {
12
12
  const { t } = useTranslationRef(pluginRiScTranslationRef);
@@ -26,7 +26,7 @@ function ActionEdit(props) {
26
26
  };
27
27
  props.onSaveAction(newAction);
28
28
  };
29
- return /* @__PURE__ */ jsxs(Fragment, { children: [
29
+ return /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "24px", children: [
30
30
  /* @__PURE__ */ jsx(
31
31
  ActionFormItem,
32
32
  {
@@ -34,7 +34,7 @@ function ActionEdit(props) {
34
34
  handleDelete: props.onDeleteAction
35
35
  }
36
36
  ),
37
- /* @__PURE__ */ jsxs(Box, { display: "flex", gap: 1, children: [
37
+ /* @__PURE__ */ jsxs(Flex, { gap: "8px", children: [
38
38
  /* @__PURE__ */ jsxs(
39
39
  Button,
40
40
  {
@@ -1 +1 @@
1
- {"version":3,"file":"ActionEdit.esm.js","sources":["../../../src/components/action/ActionEdit.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport { Action } from '../../utils/types.ts';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { useRiScs } from '../../contexts/RiScContext.tsx';\nimport { ActionFormItem } from '../scenarioDrawer/components/ActionFormItem.tsx';\n\ntype ActionEditProps = {\n action: Action;\n onCancelEdit: () => void;\n onSaveAction: (newAction: Action) => void;\n onDeleteAction: () => void;\n onFormSubmitted?: () => void;\n};\n\ntype ActionEditForm = {\n title: string;\n description: string;\n status: string;\n url: string;\n};\n\nexport function ActionEdit(props: ActionEditProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const formMethods = useForm<ActionEditForm>({\n defaultValues: {\n title: props.action.title,\n description: props.action.description,\n status: props.action.status,\n url: props.action.url,\n },\n });\n const { updateStatus } = useRiScs();\n\n const onSubmit: SubmitHandler<ActionEditForm> = data => {\n const newAction = {\n ...props.action,\n ...data,\n };\n props.onSaveAction(newAction);\n };\n\n return (\n <>\n <ActionFormItem\n formMethods={formMethods}\n handleDelete={props.onDeleteAction}\n />\n <Box display=\"flex\" gap={1}>\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={formMethods.handleSubmit(onSubmit)}\n disabled={!formMethods.formState.isDirty || updateStatus.isLoading}\n >\n {t('dictionary.save')}\n {updateStatus.isLoading && (\n <CircularProgress\n size={16}\n sx={{ marginLeft: 8, color: 'inherit' }}\n />\n )}\n </Button>\n <Button onClick={props.onCancelEdit}>{t('dictionary.cancel')}</Button>\n </Box>\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAyBO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,cAAc,OAAA,CAAwB;AAAA,IAC1C,aAAA,EAAe;AAAA,MACb,KAAA,EAAO,MAAM,MAAA,CAAO,KAAA;AAAA,MACpB,WAAA,EAAa,MAAM,MAAA,CAAO,WAAA;AAAA,MAC1B,MAAA,EAAQ,MAAM,MAAA,CAAO,MAAA;AAAA,MACrB,GAAA,EAAK,MAAM,MAAA,CAAO;AAAA;AACpB,GACD,CAAA;AACD,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,QAAA,EAAS;AAElC,EAAA,MAAM,WAA0C,CAAA,IAAA,KAAQ;AACtD,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,GAAG,KAAA,CAAM,MAAA;AAAA,MACT,GAAG;AAAA,KACL;AACA,IAAA,KAAA,CAAM,aAAa,SAAS,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,cAAc,KAAA,CAAM;AAAA;AAAA,KACtB;AAAA,oBACA,IAAA,CAAC,GAAA,EAAA,EAAI,OAAA,EAAQ,MAAA,EAAO,KAAK,CAAA,EACvB,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,SAAA;AAAA,UACN,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS,WAAA,CAAY,YAAA,CAAa,QAAQ,CAAA;AAAA,UAC1C,QAAA,EAAU,CAAC,WAAA,CAAY,SAAA,CAAU,WAAW,YAAA,CAAa,SAAA;AAAA,UAExD,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,iBAAiB,CAAA;AAAA,YACnB,aAAa,SAAA,oBACZ,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,EAAA;AAAA,gBACN,EAAA,EAAI,EAAE,UAAA,EAAY,CAAA,EAAG,OAAO,SAAA;AAAU;AAAA;AACxC;AAAA;AAAA,OAEJ;AAAA,0BACC,MAAA,EAAA,EAAO,OAAA,EAAS,MAAM,YAAA,EAAe,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAE;AAAA,KAAA,EAC/D;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ActionEdit.esm.js","sources":["../../../src/components/action/ActionEdit.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport { Action } from '../../utils/types.ts';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { useRiScs } from '../../contexts/RiScContext.tsx';\nimport { ActionFormItem } from '../scenarioDrawer/components/ActionFormItem.tsx';\nimport { Flex } from '@backstage/ui';\n\ntype ActionEditProps = {\n action: Action;\n onCancelEdit: () => void;\n onSaveAction: (newAction: Action) => void;\n onDeleteAction: () => void;\n onFormSubmitted?: () => void;\n};\n\ntype ActionEditForm = {\n title: string;\n description: string;\n status: string;\n url: string;\n};\n\nexport function ActionEdit(props: ActionEditProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const formMethods = useForm<ActionEditForm>({\n defaultValues: {\n title: props.action.title,\n description: props.action.description,\n status: props.action.status,\n url: props.action.url,\n },\n });\n const { updateStatus } = useRiScs();\n\n const onSubmit: SubmitHandler<ActionEditForm> = data => {\n const newAction = {\n ...props.action,\n ...data,\n };\n props.onSaveAction(newAction);\n };\n\n return (\n <Flex direction=\"column\" gap=\"24px\">\n <ActionFormItem\n formMethods={formMethods}\n handleDelete={props.onDeleteAction}\n />\n <Flex gap=\"8px\">\n <Button\n color=\"primary\"\n variant=\"contained\"\n onClick={formMethods.handleSubmit(onSubmit)}\n disabled={!formMethods.formState.isDirty || updateStatus.isLoading}\n >\n {t('dictionary.save')}\n {updateStatus.isLoading && (\n <CircularProgress\n size={16}\n sx={{ marginLeft: 8, color: 'inherit' }}\n />\n )}\n </Button>\n <Button onClick={props.onCancelEdit}>{t('dictionary.cancel')}</Button>\n </Flex>\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;AAyBO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,MAAM,cAAc,OAAA,CAAwB;AAAA,IAC1C,aAAA,EAAe;AAAA,MACb,KAAA,EAAO,MAAM,MAAA,CAAO,KAAA;AAAA,MACpB,WAAA,EAAa,MAAM,MAAA,CAAO,WAAA;AAAA,MAC1B,MAAA,EAAQ,MAAM,MAAA,CAAO,MAAA;AAAA,MACrB,GAAA,EAAK,MAAM,MAAA,CAAO;AAAA;AACpB,GACD,CAAA;AACD,EAAA,MAAM,EAAE,YAAA,EAAa,GAAI,QAAA,EAAS;AAElC,EAAA,MAAM,WAA0C,CAAA,IAAA,KAAQ;AACtD,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,GAAG,KAAA,CAAM,MAAA;AAAA,MACT,GAAG;AAAA,KACL;AACA,IAAA,KAAA,CAAM,aAAa,SAAS,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAI,MAAA,EAC3B,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,WAAA;AAAA,QACA,cAAc,KAAA,CAAM;AAAA;AAAA,KACtB;AAAA,oBACA,IAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAI,KAAA,EACR,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAM,SAAA;AAAA,UACN,OAAA,EAAQ,WAAA;AAAA,UACR,OAAA,EAAS,WAAA,CAAY,YAAA,CAAa,QAAQ,CAAA;AAAA,UAC1C,QAAA,EAAU,CAAC,WAAA,CAAY,SAAA,CAAU,WAAW,YAAA,CAAa,SAAA;AAAA,UAExD,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,iBAAiB,CAAA;AAAA,YACnB,aAAa,SAAA,oBACZ,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,EAAA;AAAA,gBACN,EAAA,EAAI,EAAE,UAAA,EAAY,CAAA,EAAG,OAAO,SAAA;AAAU;AAAA;AACxC;AAAA;AAAA,OAEJ;AAAA,0BACC,MAAA,EAAA,EAAO,OAAA,EAAS,MAAM,YAAA,EAAe,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAE;AAAA,KAAA,EAC/D;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -3,15 +3,19 @@ import { ActionRow } from './ActionRow.esm.js';
3
3
  import { useState, useCallback, useEffect, Fragment } from 'react';
4
4
  import { isToday } from '../../utils/date.esm.js';
5
5
  import { useScenario } from '../../contexts/ScenarioContext.esm.js';
6
- import { Flex } from '@backstage/ui';
6
+ import { Flex, Text } from '@backstage/ui';
7
7
  import Divider from '@mui/material/Divider';
8
8
  import { useDebounce } from '../../utils/hooks.esm.js';
9
9
  import { useBackstageContext } from '../../contexts/BackstageContext.esm.js';
10
10
  import { UpdatedStatusEnum } from '../../utils/utilityfunctions.esm.js';
11
11
  import { useRiScs } from '../../contexts/RiScContext.esm.js';
12
12
  import { getScenarioOfIdFromRiSc } from '../../utils/scenario.esm.js';
13
+ import styles from './ActionRowList.module.css.esm.js';
14
+ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
15
+ import { pluginRiScTranslationRef } from '../../utils/translations.esm.js';
13
16
 
14
17
  function ActionRowList(props) {
18
+ const { t } = useTranslationRef(pluginRiScTranslationRef);
15
19
  const { selectedRiSc } = useRiScs();
16
20
  const { submitEditedScenarioToRiSc } = useScenario();
17
21
  const { profileInfo } = useBackstageContext();
@@ -110,6 +114,12 @@ function ActionRowList(props) {
110
114
  flush();
111
115
  };
112
116
  }, [flush]);
117
+ if (actions.length === 0) {
118
+ return /* @__PURE__ */ jsxs(Flex, { align: "center", direction: "column", children: [
119
+ /* @__PURE__ */ jsx(Divider, { flexItem: true }),
120
+ /* @__PURE__ */ jsx(Text, { className: styles.noActionsText, children: t("scenarioTable.noActionsLong") })
121
+ ] });
122
+ }
113
123
  return /* @__PURE__ */ jsxs(Flex, { direction: "column", children: [
114
124
  /* @__PURE__ */ jsx(Divider, {}),
115
125
  actions.map((action, index) => /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -1 +1 @@
1
- {"version":3,"file":"ActionRowList.esm.js","sources":["../../../src/components/action/ActionRowList.tsx"],"sourcesContent":["import { Action } from '../../utils/types.ts';\nimport { ActionRow } from './ActionRow.tsx';\nimport { Fragment, useCallback, useEffect, useState } from 'react';\nimport { isToday } from '../../utils/date.ts';\nimport { ActionStatusOptions } from '../../utils/constants.ts';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { Flex } from '@backstage/ui';\nimport Divider from '@mui/material/Divider';\nimport { useDebounce } from '../../utils/hooks.ts';\nimport { useBackstageContext } from '../../contexts/BackstageContext.tsx';\nimport { UpdatedStatusEnum } from '../../utils/utilityfunctions.ts';\nimport { useRiScs } from '../../contexts/RiScContext.tsx';\nimport { getScenarioOfIdFromRiSc } from '../../utils/scenario.ts';\n\ntype ActionRowListProps = {\n scenarioId: string;\n displayedActions?: Action[]; // Specify if not every action of scenario is to be displayed\n allowDeletion?: boolean;\n allowEdit?: boolean;\n};\n\nexport function ActionRowList(props: ActionRowListProps) {\n const { selectedRiSc } = useRiScs();\n const { submitEditedScenarioToRiSc } = useScenario();\n const { profileInfo } = useBackstageContext();\n const [pendingActionStatusUpdates, setPendingActionStatusUpdates] = useState<\n Record<string, Record<string, ActionStatusOptions>>\n >({});\n const [pendingActionUpdatesHistory, setPendingActionUpdatesHistory] =\n useState<string[]>([]);\n\n const onRefreshActionStatus = (action: Action) => {\n if (isToday(action.lastUpdated ?? null)) return;\n\n setPendingActionStatusUpdates(prev => ({\n ...prev,\n [props.scenarioId]: {\n ...prev[props.scenarioId],\n [action.ID]: action.status as ActionStatusOptions,\n },\n }));\n setPendingActionUpdatesHistory(prev => [...prev, action.ID]);\n };\n\n const onNewActionStatus = (\n actionId: string,\n newStatus: ActionStatusOptions,\n ) => {\n setPendingActionStatusUpdates(prev => ({\n ...prev,\n [props.scenarioId]: {\n ...prev[props.scenarioId],\n [actionId]: newStatus,\n },\n }));\n setPendingActionUpdatesHistory(prev => [...prev, actionId]);\n };\n\n const onDeleteAction = (actionId: string) => {\n const oldScenario = getScenarioOfIdFromRiSc(props.scenarioId, selectedRiSc);\n if (!oldScenario) return;\n const newScenario = {\n ...oldScenario,\n actions: oldScenario.actions.filter(a => a.ID !== actionId),\n };\n submitEditedScenarioToRiSc(newScenario);\n };\n\n const onSaveAction = (newAction: Action) => {\n const oldScenario = getScenarioOfIdFromRiSc(props.scenarioId, selectedRiSc);\n if (!oldScenario) return;\n submitEditedScenarioToRiSc(\n {\n ...oldScenario,\n actions: oldScenario.actions.map(a =>\n a.ID === newAction.ID ? newAction : a,\n ),\n },\n {\n profileInfo: profileInfo,\n },\n );\n };\n\n const debounceCallback = useCallback(\n (updates: Record<string, Record<string, ActionStatusOptions>>) => {\n if (Object.keys(updates).length === 0) return;\n\n Object.keys(updates).forEach(scenarioId => {\n const oldScenario = getScenarioOfIdFromRiSc(scenarioId, selectedRiSc);\n if (!oldScenario) return;\n const newActionArray = oldScenario.actions.map(a =>\n a.ID in updates[scenarioId]\n ? {\n ...a,\n status: updates[scenarioId][a.ID] ?? a.status,\n }\n : a,\n );\n\n const updatedScenario = {\n ...oldScenario,\n actions: newActionArray,\n };\n\n submitEditedScenarioToRiSc(updatedScenario, {\n idsOfActionsToForceUpdateLastUpdatedValue: Object.keys(\n updates[scenarioId],\n ),\n profileInfo: profileInfo,\n onSuccess: () => {\n setPendingActionStatusUpdates({});\n },\n onError: () => {\n // TODO: Should probably retry once before canceling updates\n setPendingActionStatusUpdates(prevStatusUpdates => {\n setPendingActionUpdatesHistory(prevHistory =>\n prevHistory.filter(actionId =>\n Object.keys(prevStatusUpdates[scenarioId] ?? {}).includes(\n actionId,\n ),\n ),\n );\n return {};\n });\n },\n });\n });\n },\n [submitEditedScenarioToRiSc, profileInfo, selectedRiSc],\n );\n\n const { flush } = useDebounce<\n Record<string, Record<string, ActionStatusOptions>>\n >(pendingActionStatusUpdates, 6000, debounceCallback);\n\n const actions =\n props.displayedActions ??\n getScenarioOfIdFromRiSc(props.scenarioId, selectedRiSc)?.actions ??\n [];\n\n useEffect(() => {\n return () => {\n // flush on unmount. makes sure changes are saved\n flush();\n };\n }, [flush]);\n\n return (\n <Flex direction=\"column\">\n <Divider />\n {actions.map((action, index) => (\n <Fragment key={`Action-${action.ID}-${index}`}>\n <ActionRow\n action={action}\n index={index}\n onRefreshActionStatus={onRefreshActionStatus}\n onNewActionStatus={onNewActionStatus}\n onDeleteAction={onDeleteAction}\n onSaveAction={onSaveAction}\n optimisticUpdatedStatus={\n pendingActionUpdatesHistory.includes(action.ID)\n ? UpdatedStatusEnum.UPDATED\n : undefined\n }\n optimisticStatus={\n pendingActionStatusUpdates[props.scenarioId]?.[action.ID]\n }\n allowDeletion={props.allowDeletion}\n allowEdit={props.allowEdit}\n />\n <Divider />\n </Fragment>\n ))}\n </Flex>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionRowList.esm.js","sources":["../../../src/components/action/ActionRowList.tsx"],"sourcesContent":["import { Action } from '../../utils/types.ts';\nimport { ActionRow } from './ActionRow.tsx';\nimport { Fragment, useCallback, useEffect, useState } from 'react';\nimport { isToday } from '../../utils/date.ts';\nimport { ActionStatusOptions } from '../../utils/constants.ts';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { Flex, Text } from '@backstage/ui';\nimport Divider from '@mui/material/Divider';\nimport { useDebounce } from '../../utils/hooks.ts';\nimport { useBackstageContext } from '../../contexts/BackstageContext.tsx';\nimport { UpdatedStatusEnum } from '../../utils/utilityfunctions.ts';\nimport { useRiScs } from '../../contexts/RiScContext.tsx';\nimport { getScenarioOfIdFromRiSc } from '../../utils/scenario.ts';\nimport styles from './ActionRowList.module.css';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\n\ntype ActionRowListProps = {\n scenarioId: string;\n displayedActions?: Action[]; // Specify if not every action of scenario is to be displayed\n allowDeletion?: boolean;\n allowEdit?: boolean;\n};\n\nexport function ActionRowList(props: ActionRowListProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { selectedRiSc } = useRiScs();\n const { submitEditedScenarioToRiSc } = useScenario();\n const { profileInfo } = useBackstageContext();\n const [pendingActionStatusUpdates, setPendingActionStatusUpdates] = useState<\n Record<string, Record<string, ActionStatusOptions>>\n >({});\n const [pendingActionUpdatesHistory, setPendingActionUpdatesHistory] =\n useState<string[]>([]);\n\n const onRefreshActionStatus = (action: Action) => {\n if (isToday(action.lastUpdated ?? null)) return;\n\n setPendingActionStatusUpdates(prev => ({\n ...prev,\n [props.scenarioId]: {\n ...prev[props.scenarioId],\n [action.ID]: action.status as ActionStatusOptions,\n },\n }));\n setPendingActionUpdatesHistory(prev => [...prev, action.ID]);\n };\n\n const onNewActionStatus = (\n actionId: string,\n newStatus: ActionStatusOptions,\n ) => {\n setPendingActionStatusUpdates(prev => ({\n ...prev,\n [props.scenarioId]: {\n ...prev[props.scenarioId],\n [actionId]: newStatus,\n },\n }));\n setPendingActionUpdatesHistory(prev => [...prev, actionId]);\n };\n\n const onDeleteAction = (actionId: string) => {\n const oldScenario = getScenarioOfIdFromRiSc(props.scenarioId, selectedRiSc);\n if (!oldScenario) return;\n const newScenario = {\n ...oldScenario,\n actions: oldScenario.actions.filter(a => a.ID !== actionId),\n };\n submitEditedScenarioToRiSc(newScenario);\n };\n\n const onSaveAction = (newAction: Action) => {\n const oldScenario = getScenarioOfIdFromRiSc(props.scenarioId, selectedRiSc);\n if (!oldScenario) return;\n submitEditedScenarioToRiSc(\n {\n ...oldScenario,\n actions: oldScenario.actions.map(a =>\n a.ID === newAction.ID ? newAction : a,\n ),\n },\n {\n profileInfo: profileInfo,\n },\n );\n };\n\n const debounceCallback = useCallback(\n (updates: Record<string, Record<string, ActionStatusOptions>>) => {\n if (Object.keys(updates).length === 0) return;\n\n Object.keys(updates).forEach(scenarioId => {\n const oldScenario = getScenarioOfIdFromRiSc(scenarioId, selectedRiSc);\n if (!oldScenario) return;\n const newActionArray = oldScenario.actions.map(a =>\n a.ID in updates[scenarioId]\n ? {\n ...a,\n status: updates[scenarioId][a.ID] ?? a.status,\n }\n : a,\n );\n\n const updatedScenario = {\n ...oldScenario,\n actions: newActionArray,\n };\n\n submitEditedScenarioToRiSc(updatedScenario, {\n idsOfActionsToForceUpdateLastUpdatedValue: Object.keys(\n updates[scenarioId],\n ),\n profileInfo: profileInfo,\n onSuccess: () => {\n setPendingActionStatusUpdates({});\n },\n onError: () => {\n // TODO: Should probably retry once before canceling updates\n setPendingActionStatusUpdates(prevStatusUpdates => {\n setPendingActionUpdatesHistory(prevHistory =>\n prevHistory.filter(actionId =>\n Object.keys(prevStatusUpdates[scenarioId] ?? {}).includes(\n actionId,\n ),\n ),\n );\n return {};\n });\n },\n });\n });\n },\n [submitEditedScenarioToRiSc, profileInfo, selectedRiSc],\n );\n\n const { flush } = useDebounce<\n Record<string, Record<string, ActionStatusOptions>>\n >(pendingActionStatusUpdates, 6000, debounceCallback);\n\n const actions =\n props.displayedActions ??\n getScenarioOfIdFromRiSc(props.scenarioId, selectedRiSc)?.actions ??\n [];\n\n useEffect(() => {\n return () => {\n // flush on unmount. makes sure changes are saved\n flush();\n };\n }, [flush]);\n\n if (actions.length === 0) {\n return (\n <Flex align=\"center\" direction=\"column\">\n <Divider flexItem />\n <Text className={styles.noActionsText}>\n {t('scenarioTable.noActionsLong')}\n </Text>\n </Flex>\n );\n }\n\n return (\n <Flex direction=\"column\">\n <Divider />\n {actions.map((action, index) => (\n <Fragment key={`Action-${action.ID}-${index}`}>\n <ActionRow\n action={action}\n index={index}\n onRefreshActionStatus={onRefreshActionStatus}\n onNewActionStatus={onNewActionStatus}\n onDeleteAction={onDeleteAction}\n onSaveAction={onSaveAction}\n optimisticUpdatedStatus={\n pendingActionUpdatesHistory.includes(action.ID)\n ? UpdatedStatusEnum.UPDATED\n : undefined\n }\n optimisticStatus={\n pendingActionStatusUpdates[props.scenarioId]?.[action.ID]\n }\n allowDeletion={props.allowDeletion}\n allowEdit={props.allowEdit}\n />\n <Divider />\n </Fragment>\n ))}\n </Flex>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
+
3
+ var css_248z = ".ActionRowList-module_noActionsText__2jBWU {\n font-style: italic;\n}\n";
4
+ var styles = {"noActionsText":"ActionRowList-module_noActionsText__2jBWU"};
5
+ styleInject(css_248z);
6
+
7
+ export { styles as default };
8
+ //# sourceMappingURL=ActionRowList.module.css.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionRowList.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1,7 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, Fragment } from 'react';
3
3
  import Box from '@mui/material/Box';
4
- import { RiskMatrixScenarioCount } from './RiskMatrixScenarioCount.esm.js';
5
4
  import { AggregatedCost } from './AggregatedCost.esm.js';
6
5
  import { MatrixTabs } from './Tabs.esm.js';
7
6
  import { riskMatrix } from '../../utils/constants.esm.js';
@@ -11,21 +10,14 @@ import { useFontStyles } from '../../utils/style.esm.js';
11
10
  import { useRiskMatrixStyles } from './riskMatrixStyle.esm.js';
12
11
  import { RiskMatrixTabs } from './utils.esm.js';
13
12
  import { Card, CardHeader, Text, CardBody } from '@backstage/ui';
13
+ import { RiskMatrixSquare } from './RiskMatrixSquare.esm.js';
14
14
 
15
15
  function RiskMatrix({
16
16
  riScWithMetadata
17
17
  }) {
18
18
  const { t } = useTranslationRef(pluginRiScTranslationRef);
19
19
  const { label2 } = useFontStyles();
20
- const {
21
- grid,
22
- gridWrapper,
23
- konsekvens,
24
- sannsynlighet,
25
- square,
26
- text,
27
- centered
28
- } = useRiskMatrixStyles();
20
+ const { grid, gridWrapper, konsekvens, sannsynlighet, text, centered } = useRiskMatrixStyles();
29
21
  const [tab, setTab] = useState(RiskMatrixTabs.initialRisk);
30
22
  return /* @__PURE__ */ jsxs(Card, { children: [
31
23
  /* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(Text, { variant: "title-small", weight: "bold", children: t("riskMatrix.title") }) }),
@@ -58,22 +50,17 @@ function RiskMatrix({
58
50
  ) }),
59
51
  riskMatrix.map((row, rowIndex) => /* @__PURE__ */ jsxs(Fragment, { children: [
60
52
  /* @__PURE__ */ jsx(Box, { className: centered, children: /* @__PURE__ */ jsx(Text, { variant: "title-x-small", weight: "bold", className: text, children: 5 - rowIndex }) }),
61
- row.map((col, colIndex) => /* @__PURE__ */ jsx(
62
- Box,
53
+ row.map((_, colIndex) => /* @__PURE__ */ jsx(
54
+ RiskMatrixSquare,
63
55
  {
64
- className: `${square} ${centered}`,
65
- style: { backgroundColor: col },
66
- children: /* @__PURE__ */ jsx(
67
- RiskMatrixScenarioCount,
68
- {
69
- riScWithMetadata,
70
- probability: colIndex,
71
- consequence: 4 - rowIndex,
72
- initialRisk: tab === RiskMatrixTabs.initialRisk
73
- }
74
- )
75
- },
76
- colIndex
56
+ size: "grid",
57
+ consequence: 4 - rowIndex,
58
+ probability: colIndex,
59
+ riScCountObject: {
60
+ isInitialRisk: tab === RiskMatrixTabs.initialRisk,
61
+ riSc: riScWithMetadata
62
+ }
63
+ }
77
64
  ))
78
65
  ] }, rowIndex)),
79
66
  /* @__PURE__ */ jsx(Box, { className: centered }),
@@ -1 +1 @@
1
- {"version":3,"file":"RiskMatrix.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrix.tsx"],"sourcesContent":["import { Fragment, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { RiskMatrixScenarioCount } from './RiskMatrixScenarioCount';\nimport { AggregatedCost } from './AggregatedCost';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { MatrixTabs } from './Tabs';\nimport { riskMatrix } from '../../utils/constants';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useFontStyles } from '../../utils/style';\nimport { useRiskMatrixStyles } from './riskMatrixStyle';\nimport { RiskMatrixTabs } from './utils';\nimport { Card, CardBody, CardHeader, Text } from '@backstage/ui';\n\nexport function RiskMatrix({\n riScWithMetadata,\n}: {\n riScWithMetadata: RiScWithMetadata;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { label2 } = useFontStyles();\n const {\n grid,\n gridWrapper,\n konsekvens,\n sannsynlighet,\n square,\n text,\n centered,\n } = useRiskMatrixStyles();\n\n const [tab, setTab] = useState<RiskMatrixTabs>(RiskMatrixTabs.initialRisk);\n\n return (\n <Card>\n <CardHeader>\n <Text variant=\"title-small\" weight=\"bold\">\n {t('riskMatrix.title')}\n </Text>\n </CardHeader>\n <CardBody>\n <MatrixTabs setTab={setTab} currentTab={tab} />\n {riScWithMetadata.content.scenarios.length > 0 && (\n <Box\n style={{\n marginTop: '18px',\n }}\n >\n <AggregatedCost\n riSc={riScWithMetadata.content}\n initialRisk={tab === RiskMatrixTabs.initialRisk}\n />\n </Box>\n )}\n <Box className={gridWrapper}>\n <Box className={grid}>\n <Box className={konsekvens}>\n <Text\n variant=\"body-large\"\n weight=\"bold\"\n className={`${centered} ${label2}`}\n >\n {t('dictionary.consequence')}\n </Text>\n </Box>\n {riskMatrix.map((row, rowIndex) => (\n <Fragment key={rowIndex}>\n <Box className={centered}>\n <Text variant=\"title-x-small\" weight=\"bold\" className={text}>\n {5 - rowIndex}\n </Text>\n </Box>\n {row.map((col, colIndex) => (\n <Box\n className={`${square} ${centered}`}\n style={{ backgroundColor: col }}\n key={colIndex}\n >\n <RiskMatrixScenarioCount\n riScWithMetadata={riScWithMetadata}\n probability={colIndex}\n consequence={4 - rowIndex}\n initialRisk={tab === RiskMatrixTabs.initialRisk}\n />\n </Box>\n ))}\n </Fragment>\n ))}\n <Box className={centered} />\n <Box className={centered} />\n {riskMatrix.map((_, col) => (\n <Box className={centered} key={col}>\n <Text variant=\"title-x-small\" weight=\"bold\" className={text}>\n {col + 1}\n </Text>\n </Box>\n ))}\n <Box className={sannsynlighet}>\n <Text\n weight=\"bold\"\n variant=\"body-large\"\n className={`${centered} ${label2}`}\n >\n {t('dictionary.probability')}\n </Text>\n </Box>\n </Box>\n </Box>\n </CardBody>\n </Card>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RiskMatrix.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrix.tsx"],"sourcesContent":["import { Fragment, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { AggregatedCost } from './AggregatedCost';\nimport { RiScWithMetadata } from '../../utils/types';\nimport { MatrixTabs } from './Tabs';\nimport { riskMatrix } from '../../utils/constants';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations';\nimport { useFontStyles } from '../../utils/style';\nimport { useRiskMatrixStyles } from './riskMatrixStyle';\nimport { RiskMatrixTabs } from './utils';\nimport { Card, CardBody, CardHeader, Text } from '@backstage/ui';\nimport { RiskMatrixSquare } from './RiskMatrixSquare.tsx';\n\nexport function RiskMatrix({\n riScWithMetadata,\n}: {\n riScWithMetadata: RiScWithMetadata;\n}) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { label2 } = useFontStyles();\n const { grid, gridWrapper, konsekvens, sannsynlighet, text, centered } =\n useRiskMatrixStyles();\n\n const [tab, setTab] = useState<RiskMatrixTabs>(RiskMatrixTabs.initialRisk);\n\n return (\n <Card>\n <CardHeader>\n <Text variant=\"title-small\" weight=\"bold\">\n {t('riskMatrix.title')}\n </Text>\n </CardHeader>\n <CardBody>\n <MatrixTabs setTab={setTab} currentTab={tab} />\n {riScWithMetadata.content.scenarios.length > 0 && (\n <Box\n style={{\n marginTop: '18px',\n }}\n >\n <AggregatedCost\n riSc={riScWithMetadata.content}\n initialRisk={tab === RiskMatrixTabs.initialRisk}\n />\n </Box>\n )}\n <Box className={gridWrapper}>\n <Box className={grid}>\n <Box className={konsekvens}>\n <Text\n variant=\"body-large\"\n weight=\"bold\"\n className={`${centered} ${label2}`}\n >\n {t('dictionary.consequence')}\n </Text>\n </Box>\n {riskMatrix.map((row, rowIndex) => (\n <Fragment key={rowIndex}>\n <Box className={centered}>\n <Text variant=\"title-x-small\" weight=\"bold\" className={text}>\n {5 - rowIndex}\n </Text>\n </Box>\n {row.map((_, colIndex) => (\n <RiskMatrixSquare\n size=\"grid\"\n consequence={4 - rowIndex}\n probability={colIndex}\n riScCountObject={{\n isInitialRisk: tab === RiskMatrixTabs.initialRisk,\n riSc: riScWithMetadata,\n }}\n />\n ))}\n </Fragment>\n ))}\n <Box className={centered} />\n <Box className={centered} />\n {riskMatrix.map((_, col) => (\n <Box className={centered} key={col}>\n <Text variant=\"title-x-small\" weight=\"bold\" className={text}>\n {col + 1}\n </Text>\n </Box>\n ))}\n <Box className={sannsynlighet}>\n <Text\n weight=\"bold\"\n variant=\"body-large\"\n className={`${centered} ${label2}`}\n >\n {t('dictionary.probability')}\n </Text>\n </Box>\n </Box>\n </Box>\n </CardBody>\n </Card>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import Box from '@mui/material/Box';
3
+ import { riskMatrixStroke, riskMatrix } from '../../utils/constants.esm.js';
4
+ import { RiskMatrixScenarioCount } from './RiskMatrixScenarioCount.esm.js';
5
+ import styles from './RiskMatrixSquare.module.css.esm.js';
6
+
7
+ function RiskMatrixSquare(props) {
8
+ return /* @__PURE__ */ jsx(
9
+ Box,
10
+ {
11
+ className: `${styles.squareWithRiScCount} ${props.size === "small" ? styles.smallSquare : ""}`,
12
+ style: {
13
+ backgroundColor: riskMatrix[4 - props.consequence][props.probability],
14
+ borderColor: riskMatrixStroke[4 - props.consequence][props.probability]
15
+ },
16
+ children: props.riScCountObject && /* @__PURE__ */ jsx(
17
+ RiskMatrixScenarioCount,
18
+ {
19
+ riScWithMetadata: props.riScCountObject.riSc,
20
+ probability: props.probability,
21
+ consequence: props.consequence,
22
+ initialRisk: props.riScCountObject.isInitialRisk
23
+ }
24
+ )
25
+ },
26
+ `S:${props.probability} K:${props.consequence}`
27
+ );
28
+ }
29
+
30
+ export { RiskMatrixSquare };
31
+ //# sourceMappingURL=RiskMatrixSquare.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiskMatrixSquare.esm.js","sources":["../../../src/components/riskMatrix/RiskMatrixSquare.tsx"],"sourcesContent":["import { RiScWithMetadata } from '../../utils/types.ts';\nimport Box from '@mui/material/Box';\nimport { riskMatrix, riskMatrixStroke } from '../../utils/constants.ts';\nimport { RiskMatrixScenarioCount } from './RiskMatrixScenarioCount.tsx';\nimport styles from './RiskMatrixSquare.module.css';\n\ntype RiskMatrixSquareProps = {\n size: 'small' | 'grid';\n probability: number; // 0 - 4\n consequence: number; // 0 - 4\n riScCountObject?: {\n riSc: RiScWithMetadata;\n isInitialRisk: boolean;\n };\n};\n\nexport function RiskMatrixSquare(props: RiskMatrixSquareProps) {\n return (\n <Box\n className={`${styles.squareWithRiScCount} ${props.size === 'small' ? styles.smallSquare : ''}`}\n style={{\n backgroundColor: riskMatrix[4 - props.consequence][props.probability],\n borderColor: riskMatrixStroke[4 - props.consequence][props.probability],\n }}\n key={`S:${props.probability} K:${props.consequence}`}\n >\n {props.riScCountObject && (\n <RiskMatrixScenarioCount\n riScWithMetadata={props.riScCountObject.riSc}\n probability={props.probability}\n consequence={props.consequence}\n initialRisk={props.riScCountObject.isInitialRisk}\n />\n )}\n </Box>\n );\n}\n"],"names":[],"mappings":";;;;;;AAgBO,SAAS,iBAAiB,KAAA,EAA8B;AAC7D,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,CAAA,EAAG,MAAA,CAAO,mBAAmB,CAAA,CAAA,EAAI,MAAM,IAAA,KAAS,OAAA,GAAU,MAAA,CAAO,WAAA,GAAc,EAAE,CAAA,CAAA;AAAA,MAC5F,KAAA,EAAO;AAAA,QACL,iBAAiB,UAAA,CAAW,CAAA,GAAI,MAAM,WAAW,CAAA,CAAE,MAAM,WAAW,CAAA;AAAA,QACpE,aAAa,gBAAA,CAAiB,CAAA,GAAI,MAAM,WAAW,CAAA,CAAE,MAAM,WAAW;AAAA,OACxE;AAAA,MAGC,gBAAM,eAAA,oBACL,GAAA;AAAA,QAAC,uBAAA;AAAA,QAAA;AAAA,UACC,gBAAA,EAAkB,MAAM,eAAA,CAAgB,IAAA;AAAA,UACxC,aAAa,KAAA,CAAM,WAAA;AAAA,UACnB,aAAa,KAAA,CAAM,WAAA;AAAA,UACnB,WAAA,EAAa,MAAM,eAAA,CAAgB;AAAA;AAAA;AACrC,KAAA;AAAA,IARG,CAAA,EAAA,EAAK,KAAA,CAAM,WAAW,CAAA,GAAA,EAAM,MAAM,WAAW,CAAA;AAAA,GAUpD;AAEJ;;;;"}
@@ -0,0 +1,8 @@
1
+ import styleInject from '../../node_modules_dist/style-inject/dist/style-inject.es.esm.js';
2
+
3
+ var css_248z = ".RiskMatrixSquare-module_squareWithRiScCount__NW-Vi {\n display: flex;\n align-items: center;\n justify-content: center;\n aspect-ratio: 1;\n border-style: solid;\n border-width: 1px;\n border-radius: 10%;\n}\n\n.RiskMatrixSquare-module_smallSquare__iZdIf {\n width: 16px;\n height: 16px;\n border-radius: 4px;\n}\n";
4
+ var styles = {"squareWithRiScCount":"RiskMatrixSquare-module_squareWithRiScCount__NW-Vi","smallSquare":"RiskMatrixSquare-module_smallSquare__iZdIf"};
5
+ styleInject(css_248z);
6
+
7
+ export { styles as default };
8
+ //# sourceMappingURL=RiskMatrixSquare.module.css.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RiskMatrixSquare.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -2,7 +2,7 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import Button from '@mui/material/Button';
3
3
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
4
4
  import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
5
- import { DialogTrigger, Dialog, DialogHeader, Text, DialogBody } from '@backstage/ui';
5
+ import { Dialog, DialogHeader, Text, DialogBody } from '@backstage/ui';
6
6
  import styles from './ScenarioDrawer.module.css.esm.js';
7
7
 
8
8
  function DeleteScenarioConfirmation({
@@ -53,7 +53,7 @@ function ConfirmationDialog({
53
53
  confirmButtonText
54
54
  }) {
55
55
  const { t } = useTranslationRef(pluginRiScTranslationRef);
56
- return /* @__PURE__ */ jsx(DialogTrigger, { children: /* @__PURE__ */ jsxs(
56
+ return /* @__PURE__ */ jsxs(
57
57
  Dialog,
58
58
  {
59
59
  isOpen,
@@ -87,7 +87,7 @@ function ConfirmationDialog({
87
87
  ] })
88
88
  ]
89
89
  }
90
- ) });
90
+ );
91
91
  }
92
92
 
93
93
  export { DeleteActionConfirmation, DeleteScenarioConfirmation };
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport type { SetState } from '../../../utils/types';\nimport {\n Text,\n Dialog,\n DialogTrigger,\n DialogHeader,\n DialogBody,\n} from '@backstage/ui';\nimport styles from '../components/ScenarioDrawer.module.css';\n\ntype DeleteScenarioConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteScenarioConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteScenarioConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteScenarioConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteScenarioButton')}\n />\n );\n}\n\n// #####################################################\n\ntype DeleteActionConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteActionConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteActionConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteActionConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteActionButton')}\n />\n );\n}\n\n// #####################################################\n\ntype ConfirmationDialogProps = {\n isOpen: boolean;\n onClose?: () => void;\n onConfirm?: () => void;\n title: string;\n confirmButtonText: string;\n};\n\n/**\n * Helper component.\n */\nfunction ConfirmationDialog({\n isOpen,\n onClose,\n onConfirm,\n title,\n confirmButtonText,\n}: ConfirmationDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <DialogTrigger>\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n className={styles.deleteConfirmationDialog}\n >\n <DialogHeader>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {title}\n </Text>\n </DialogHeader>\n <DialogBody className={styles.deleteConfirmationDialogBody}>\n <Button\n variant=\"outlined\"\n onClick={event => {\n event.stopPropagation();\n onClose?.();\n }}\n >\n {t('dictionary.cancel')}\n </Button>\n <Button\n onClick={event => {\n event.stopPropagation();\n onConfirm?.();\n }}\n variant=\"contained\"\n >\n {confirmButtonText}\n </Button>\n </DialogBody>\n </Dialog>\n </DialogTrigger>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAmBO,SAAS,0BAAA,CAA2B;AAAA,EACzC,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAoC;AAClC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA;AAAA,MACA,KAAA,EAAO,EAAE,2CAA2C,CAAA;AAAA,MACpD,iBAAA,EAAmB,EAAE,qCAAqC;AAAA;AAAA,GAC5D;AAEJ;AAUO,SAAS,wBAAA,CAAyB;AAAA,EACvC,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA;AAAA,MACA,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,MAClD,iBAAA,EAAmB,EAAE,mCAAmC;AAAA;AAAA,GAC1D;AAEJ;AAeA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,2BACG,aAAA,EAAA,EACC,QAAA,kBAAA,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,YAAA,EAAc,OAAA;AAAA,MACd,WAAW,MAAA,CAAO,wBAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,YAAA,EAAA,EACC,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,iBAAgB,MAAA,EAAO,MAAA,EAClC,iBACH,CAAA,EACF,CAAA;AAAA,wBACA,IAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,MAAA,CAAO,4BAAA,EAC5B,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,UAAA;AAAA,cACR,SAAS,CAAA,KAAA,KAAS;AAChB,gBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,gBAAA,OAAA,IAAU;AAAA,cACZ,CAAA;AAAA,cAEC,YAAE,mBAAmB;AAAA;AAAA,WACxB;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAS,CAAA,KAAA,KAAS;AAChB,gBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,gBAAA,SAAA,IAAY;AAAA,cACd,CAAA;AAAA,cACA,OAAA,EAAQ,WAAA;AAAA,cAEP,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"DeleteConfirmation.esm.js","sources":["../../../../src/components/scenarioDrawer/components/DeleteConfirmation.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport type { SetState } from '../../../utils/types';\nimport { Text, Dialog, DialogHeader, DialogBody } from '@backstage/ui';\nimport styles from '../components/ScenarioDrawer.module.css';\n\ntype DeleteScenarioConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteScenarioConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteScenarioConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteScenarioConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteScenarioButton')}\n />\n );\n}\n\n// #####################################################\n\ntype DeleteActionConfirmationProps = {\n isOpen: ConfirmationDialogProps['isOpen'];\n setIsOpen: SetState<ConfirmationDialogProps['isOpen']>;\n onConfirm?: ConfirmationDialogProps['onConfirm'];\n};\n\nexport function DeleteActionConfirmation({\n isOpen,\n setIsOpen,\n onConfirm,\n}: DeleteActionConfirmationProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <ConfirmationDialog\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n onConfirm={() => {\n setIsOpen(false);\n onConfirm?.();\n }}\n title={t('scenarioDrawer.deleteActionConfirmation')}\n confirmButtonText={t('scenarioDrawer.deleteActionButton')}\n />\n );\n}\n\n// #####################################################\n\ntype ConfirmationDialogProps = {\n isOpen: boolean;\n onClose?: () => void;\n onConfirm?: () => void;\n title: string;\n confirmButtonText: string;\n};\n\n/**\n * Helper component.\n */\nfunction ConfirmationDialog({\n isOpen,\n onClose,\n onConfirm,\n title,\n confirmButtonText,\n}: ConfirmationDialogProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n className={styles.deleteConfirmationDialog}\n >\n <DialogHeader>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {title}\n </Text>\n </DialogHeader>\n <DialogBody className={styles.deleteConfirmationDialogBody}>\n <Button\n variant=\"outlined\"\n onClick={event => {\n event.stopPropagation();\n onClose?.();\n }}\n >\n {t('dictionary.cancel')}\n </Button>\n <Button\n onClick={event => {\n event.stopPropagation();\n onConfirm?.();\n }}\n variant=\"contained\"\n >\n {confirmButtonText}\n </Button>\n </DialogBody>\n </Dialog>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAaO,SAAS,0BAAA,CAA2B;AAAA,EACzC,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAoC;AAClC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA;AAAA,MACA,KAAA,EAAO,EAAE,2CAA2C,CAAA;AAAA,MACpD,iBAAA,EAAmB,EAAE,qCAAqC;AAAA;AAAA,GAC5D;AAEJ;AAUO,SAAS,wBAAA,CAAyB;AAAA,EACvC,MAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAkC;AAChC,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,OAAA,EAAS,MAAM,SAAA,CAAU,KAAK,CAAA;AAAA,MAC9B,WAAW,MAAM;AACf,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,SAAA,IAAY;AAAA,MACd,CAAA;AAAA,MACA,KAAA,EAAO,EAAE,yCAAyC,CAAA;AAAA,MAClD,iBAAA,EAAmB,EAAE,mCAAmC;AAAA;AAAA,GAC1D;AAEJ;AAeA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AAExD,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,MAAA;AAAA,MACA,YAAA,EAAc,OAAA;AAAA,MACd,WAAW,MAAA,CAAO,wBAAA;AAAA,MAElB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,YAAA,EAAA,EACC,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,iBAAgB,MAAA,EAAO,MAAA,EAClC,iBACH,CAAA,EACF,CAAA;AAAA,wBACA,IAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAW,MAAA,CAAO,4BAAA,EAC5B,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAQ,UAAA;AAAA,cACR,SAAS,CAAA,KAAA,KAAS;AAChB,gBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,gBAAA,OAAA,IAAU;AAAA,cACZ,CAAA;AAAA,cAEC,YAAE,mBAAmB;AAAA;AAAA,WACxB;AAAA,0BACA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAS,CAAA,KAAA,KAAS;AAChB,gBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,gBAAA,SAAA,IAAY;AAAA,cACd,CAAA;AAAA,cACA,OAAA,EAAQ,WAAA;AAAA,cAEP,QAAA,EAAA;AAAA;AAAA;AACH,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -4,7 +4,7 @@ import { UpdatedStatusEnum } from '../../utils/utilityfunctions.esm.js';
4
4
  import { OutdatedActionsCountButton } from './components/OutdatedActionsCountButton/OutdatedActionsCountButton.esm.js';
5
5
 
6
6
  function OutdatedActionsCounts(props) {
7
- return /* @__PURE__ */ jsxs(Flex, { mb: "24px", children: [
7
+ return /* @__PURE__ */ jsxs(Flex, { mb: "24px", style: { flexWrap: "wrap" }, children: [
8
8
  props.veryOutdatedCount > 0 && /* @__PURE__ */ jsx(
9
9
  OutdatedActionsCountButton,
10
10
  {
@@ -22,6 +22,15 @@ function OutdatedActionsCounts(props) {
22
22
  onToggle: props.onToggle,
23
23
  isSelected: props.visibleType === UpdatedStatusEnum.OUTDATED
24
24
  }
25
+ ),
26
+ props.updatedCount > 0 && /* @__PURE__ */ jsx(
27
+ OutdatedActionsCountButton,
28
+ {
29
+ type: UpdatedStatusEnum.UPDATED,
30
+ count: props.updatedCount,
31
+ onToggle: props.onToggle,
32
+ isSelected: props.visibleType === UpdatedStatusEnum.UPDATED
33
+ }
25
34
  )
26
35
  ] });
27
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OutdatedActionsCounts.esm.js","sources":["../../../src/components/scenarioTable/OutdatedActionsCounts.tsx"],"sourcesContent":["import { Flex } from '@backstage/ui';\nimport {\n UpdatedStatusEnum,\n UpdatedStatusEnumType,\n} from '../../utils/utilityfunctions.ts';\nimport { OutdatedActionsCountButton } from './components/OutdatedActionsCountButton';\n\ntype OutdatedActionsCountsProps = {\n veryOutdatedCount: number;\n outdatedCount: number;\n onToggle: (type: UpdatedStatusEnumType) => void;\n visibleType: UpdatedStatusEnumType | null;\n};\nexport function OutdatedActionsCounts(props: OutdatedActionsCountsProps) {\n return (\n <Flex mb=\"24px\">\n {props.veryOutdatedCount > 0 && (\n <OutdatedActionsCountButton\n type={UpdatedStatusEnum.VERY_OUTDATED}\n count={props.veryOutdatedCount}\n onToggle={props.onToggle}\n isSelected={props.visibleType === UpdatedStatusEnum.VERY_OUTDATED}\n />\n )}\n {props.outdatedCount > 0 && (\n <OutdatedActionsCountButton\n type={UpdatedStatusEnum.OUTDATED}\n count={props.outdatedCount}\n onToggle={props.onToggle}\n isSelected={props.visibleType === UpdatedStatusEnum.OUTDATED}\n />\n )}\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;AAaO,SAAS,sBAAsB,KAAA,EAAmC;AACvE,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,EAAA,EAAG,MAAA,EACN,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,oBAAoB,CAAA,oBACzB,GAAA;AAAA,MAAC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAM,iBAAA,CAAkB,aAAA;AAAA,QACxB,OAAO,KAAA,CAAM,iBAAA;AAAA,QACb,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,UAAA,EAAY,KAAA,CAAM,WAAA,KAAgB,iBAAA,CAAkB;AAAA;AAAA,KACtD;AAAA,IAED,KAAA,CAAM,gBAAgB,CAAA,oBACrB,GAAA;AAAA,MAAC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAM,iBAAA,CAAkB,QAAA;AAAA,QACxB,OAAO,KAAA,CAAM,aAAA;AAAA,QACb,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,UAAA,EAAY,KAAA,CAAM,WAAA,KAAgB,iBAAA,CAAkB;AAAA;AAAA;AACtD,GAAA,EAEJ,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"OutdatedActionsCounts.esm.js","sources":["../../../src/components/scenarioTable/OutdatedActionsCounts.tsx"],"sourcesContent":["import { Flex } from '@backstage/ui';\nimport {\n UpdatedStatusEnum,\n UpdatedStatusEnumType,\n} from '../../utils/utilityfunctions.ts';\nimport { OutdatedActionsCountButton } from './components/OutdatedActionsCountButton';\n\ntype OutdatedActionsCountsProps = {\n veryOutdatedCount: number;\n outdatedCount: number;\n updatedCount: number;\n onToggle: (type: UpdatedStatusEnumType) => void;\n visibleType: UpdatedStatusEnumType | null;\n};\nexport function OutdatedActionsCounts(props: OutdatedActionsCountsProps) {\n return (\n <Flex mb=\"24px\" style={{ flexWrap: 'wrap' }}>\n {props.veryOutdatedCount > 0 && (\n <OutdatedActionsCountButton\n type={UpdatedStatusEnum.VERY_OUTDATED}\n count={props.veryOutdatedCount}\n onToggle={props.onToggle}\n isSelected={props.visibleType === UpdatedStatusEnum.VERY_OUTDATED}\n />\n )}\n {props.outdatedCount > 0 && (\n <OutdatedActionsCountButton\n type={UpdatedStatusEnum.OUTDATED}\n count={props.outdatedCount}\n onToggle={props.onToggle}\n isSelected={props.visibleType === UpdatedStatusEnum.OUTDATED}\n />\n )}\n {props.updatedCount > 0 && (\n <OutdatedActionsCountButton\n type={UpdatedStatusEnum.UPDATED}\n count={props.updatedCount}\n onToggle={props.onToggle}\n isSelected={props.visibleType === UpdatedStatusEnum.UPDATED}\n />\n )}\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;AAcO,SAAS,sBAAsB,KAAA,EAAmC;AACvE,EAAA,uBACE,IAAA,CAAC,QAAK,EAAA,EAAG,MAAA,EAAO,OAAO,EAAE,QAAA,EAAU,QAAO,EACvC,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,oBAAoB,CAAA,oBACzB,GAAA;AAAA,MAAC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAM,iBAAA,CAAkB,aAAA;AAAA,QACxB,OAAO,KAAA,CAAM,iBAAA;AAAA,QACb,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,UAAA,EAAY,KAAA,CAAM,WAAA,KAAgB,iBAAA,CAAkB;AAAA;AAAA,KACtD;AAAA,IAED,KAAA,CAAM,gBAAgB,CAAA,oBACrB,GAAA;AAAA,MAAC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAM,iBAAA,CAAkB,QAAA;AAAA,QACxB,OAAO,KAAA,CAAM,aAAA;AAAA,QACb,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,UAAA,EAAY,KAAA,CAAM,WAAA,KAAgB,iBAAA,CAAkB;AAAA;AAAA,KACtD;AAAA,IAED,KAAA,CAAM,eAAe,CAAA,oBACpB,GAAA;AAAA,MAAC,0BAAA;AAAA,MAAA;AAAA,QACC,MAAM,iBAAA,CAAkB,OAAA;AAAA,QACxB,OAAO,KAAA,CAAM,YAAA;AAAA,QACb,UAAU,KAAA,CAAM,QAAA;AAAA,QAChB,UAAA,EAAY,KAAA,CAAM,WAAA,KAAgB,iBAAA,CAAkB;AAAA;AAAA;AACtD,GAAA,EAEJ,CAAA;AAEJ;;;;"}
@@ -78,7 +78,16 @@ function ScenarioTable(props) {
78
78
  return /* @__PURE__ */ jsxs(Fragment, { children: [
79
79
  /* @__PURE__ */ jsxs(Flex, { p: "24px 24px 18px 24px", children: [
80
80
  props.isEditing && allowDrag && /* @__PURE__ */ jsx("div", { className: tableCellDragIcon }),
81
- /* @__PURE__ */ jsx(Box, { style: { width: props.isEditing && allowDrag ? "30%" : "35%" }, children: /* @__PURE__ */ jsx(Text, { weight: "bold", variant: "body-large", children: t("dictionary.title") }) }),
81
+ /* @__PURE__ */ jsx(
82
+ Box,
83
+ {
84
+ style: {
85
+ width: props.isEditing && allowDrag ? "33%" : "40%",
86
+ paddingLeft: "5%"
87
+ },
88
+ children: /* @__PURE__ */ jsx(Text, { weight: "bold", variant: "body-large", children: t("dictionary.title") })
89
+ }
90
+ ),
82
91
  /* @__PURE__ */ jsx(Box, { style: { width: "15%" }, children: /* @__PURE__ */ jsx(Text, { weight: "bold", variant: "body-large", children: t("dictionary.initialRisk") }) }),
83
92
  /* @__PURE__ */ jsx(Box, { style: { width: props.isEditing ? "25%" : "35%" }, children: /* @__PURE__ */ jsx(Text, { weight: "bold", variant: "body-large", children: t("dictionary.actionsWithStatus") }) }),
84
93
  /* @__PURE__ */ jsx(Box, { style: { width: "15%" }, children: /* @__PURE__ */ jsx(Text, { weight: "bold", variant: "body-large", children: t("dictionary.restRisk") }) })
@@ -1 +1 @@
1
- {"version":3,"file":"ScenarioTable.esm.js","sources":["../../../src/components/scenarioTable/ScenarioTable.tsx"],"sourcesContent":["import { useTableStyles } from './ScenarioTableStyles.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { RiSc, RiScWithMetadata } from '../../utils/types.ts';\nimport { useEffect, useState } from 'react';\nimport { useDisplayScenarios, useSearchActions } from '../../utils/hooks.ts';\nimport { useRiScs } from '../../contexts/RiScContext.tsx';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { Text, Flex, Box, Card } from '@backstage/ui';\nimport { ScenarioTableRow } from './ScenarioTableRow.tsx';\nimport { UpdatedStatusEnumType } from '../../utils/utilityfunctions.ts';\n\ntype ScenarioTableProps = {\n sortOrder?: string | null;\n isEditing: boolean;\n isEditingAllowed: boolean;\n riScWithMetadata: RiScWithMetadata;\n visibleType: UpdatedStatusEnumType | null;\n searchQuery: string;\n};\n\nexport function ScenarioTable(props: ScenarioTableProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { tableCellDragIcon, tableCard } = useTableStyles();\n const riSc = props.riScWithMetadata.content;\n const [tempScenarios, setTempScenarios] = useState(riSc.scenarios);\n const { updateRiSc, updateStatus } = useRiScs();\n const visibleType = props.visibleType;\n const sortOrder = props.sortOrder;\n\n const { openScenarioDrawer } = useScenario();\n\n useEffect(() => {\n if (!updateStatus.isSuccess) {\n return;\n }\n const updatedScenarios = tempScenarios\n .map(scenario => {\n const ordered = riSc.scenarios.find(s => s.ID === scenario.ID);\n return ordered ? ordered : null;\n })\n .filter(scenario => scenario !== null) as RiSc['scenarios'];\n\n const scenariosNotInTemp = riSc.scenarios.filter(\n scenario => !updatedScenarios.find(s => s.ID === scenario.ID),\n );\n\n setTempScenarios([...updatedScenarios, ...scenariosNotInTemp]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [riSc.scenarios, updateStatus.isSuccess]);\n\n function moveRowLocal(dragId: string, hoverId: string) {\n setTempScenarios(prev => {\n const dragIndex = prev.findIndex(s => s.ID === dragId);\n const hoverIndex = prev.findIndex(s => s.ID === hoverId);\n\n if (dragIndex === -1 || hoverIndex === -1) return prev;\n\n const updated = [...prev];\n const [removed] = updated.splice(dragIndex, 1);\n\n updated.splice(hoverIndex, 0, removed);\n return updated;\n });\n }\n\n function moveRowFinal(dragId: string, dropId: string) {\n setTempScenarios(prev => {\n const dragIndex = prev.findIndex(item => item.ID === dragId);\n const dropIndex = prev.findIndex(item => item.ID === dropId);\n\n if (dragIndex === -1 || dropIndex === -1) return prev;\n\n const updatedScenarios = [...prev];\n const [removed] = updatedScenarios.splice(dragIndex, 1);\n updatedScenarios.splice(dropIndex, 0, removed);\n\n const updatedRiSc = {\n ...props.riScWithMetadata,\n content: {\n ...riSc,\n scenarios: updatedScenarios,\n },\n };\n updateRiSc(updatedRiSc, () => {});\n return updatedScenarios;\n });\n }\n\n const lastPublishedCommits =\n props.riScWithMetadata.lastPublished?.numberOfCommits ?? null;\n\n const displayScenarios: RiSc['scenarios'] = useDisplayScenarios(\n tempScenarios,\n visibleType,\n lastPublishedCommits,\n sortOrder ?? undefined,\n );\n\n const { matches: searchedActions } = useSearchActions(\n riSc.scenarios,\n props.searchQuery,\n );\n const scenariosToRender =\n (props.searchQuery ?? '')\n ? displayScenarios.filter(search => Boolean(searchedActions[search.ID]))\n : displayScenarios;\n\n const allowDrag = (sortOrder ?? '') === '';\n\n return (\n <>\n <Flex p=\"24px 24px 18px 24px\">\n {props.isEditing && allowDrag && <div className={tableCellDragIcon} />}\n <Box style={{ width: props.isEditing && allowDrag ? '30%' : '35%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.title')}\n </Text>\n </Box>\n <Box style={{ width: '15%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.initialRisk')}\n </Text>\n </Box>\n <Box style={{ width: props.isEditing ? '25%' : '35%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.actionsWithStatus')}\n </Text>\n </Box>\n <Box style={{ width: '15%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.restRisk')}\n </Text>\n </Box>\n </Flex>\n {scenariosToRender.map((scenario, idx) => (\n <ScenarioTableRow\n key={scenario.ID}\n scenario={scenario}\n id={scenario.ID}\n index={idx}\n visibleType={visibleType}\n viewRow={(id: string) =>\n openScenarioDrawer(id, props.isEditingAllowed)\n }\n moveRowFinal={moveRowFinal}\n moveRowLocal={moveRowLocal}\n isEditing={props.isEditing}\n allowDrag={allowDrag}\n searchMatches={searchedActions[scenario.ID]}\n />\n ))}\n {props.searchQuery && scenariosToRender.length === 0 && (\n <Card className={tableCard}>\n <Flex align=\"center\" justify=\"center\">\n {t('dictionary.searchQuery')} \"{props.searchQuery}\"\n </Flex>\n </Card>\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScenarioTable.esm.js","sources":["../../../src/components/scenarioTable/ScenarioTable.tsx"],"sourcesContent":["import { useTableStyles } from './ScenarioTableStyles.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { RiSc, RiScWithMetadata } from '../../utils/types.ts';\nimport { useEffect, useState } from 'react';\nimport { useDisplayScenarios, useSearchActions } from '../../utils/hooks.ts';\nimport { useRiScs } from '../../contexts/RiScContext.tsx';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { Text, Flex, Box, Card } from '@backstage/ui';\nimport { ScenarioTableRow } from './ScenarioTableRow.tsx';\nimport { UpdatedStatusEnumType } from '../../utils/utilityfunctions.ts';\n\ntype ScenarioTableProps = {\n sortOrder?: string | null;\n isEditing: boolean;\n isEditingAllowed: boolean;\n riScWithMetadata: RiScWithMetadata;\n visibleType: UpdatedStatusEnumType | null;\n searchQuery: string;\n};\n\nexport function ScenarioTable(props: ScenarioTableProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { tableCellDragIcon, tableCard } = useTableStyles();\n const riSc = props.riScWithMetadata.content;\n const [tempScenarios, setTempScenarios] = useState(riSc.scenarios);\n const { updateRiSc, updateStatus } = useRiScs();\n const visibleType = props.visibleType;\n const sortOrder = props.sortOrder;\n\n const { openScenarioDrawer } = useScenario();\n\n useEffect(() => {\n if (!updateStatus.isSuccess) {\n return;\n }\n const updatedScenarios = tempScenarios\n .map(scenario => {\n const ordered = riSc.scenarios.find(s => s.ID === scenario.ID);\n return ordered ? ordered : null;\n })\n .filter(scenario => scenario !== null) as RiSc['scenarios'];\n\n const scenariosNotInTemp = riSc.scenarios.filter(\n scenario => !updatedScenarios.find(s => s.ID === scenario.ID),\n );\n\n setTempScenarios([...updatedScenarios, ...scenariosNotInTemp]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [riSc.scenarios, updateStatus.isSuccess]);\n\n function moveRowLocal(dragId: string, hoverId: string) {\n setTempScenarios(prev => {\n const dragIndex = prev.findIndex(s => s.ID === dragId);\n const hoverIndex = prev.findIndex(s => s.ID === hoverId);\n\n if (dragIndex === -1 || hoverIndex === -1) return prev;\n\n const updated = [...prev];\n const [removed] = updated.splice(dragIndex, 1);\n\n updated.splice(hoverIndex, 0, removed);\n return updated;\n });\n }\n\n function moveRowFinal(dragId: string, dropId: string) {\n setTempScenarios(prev => {\n const dragIndex = prev.findIndex(item => item.ID === dragId);\n const dropIndex = prev.findIndex(item => item.ID === dropId);\n\n if (dragIndex === -1 || dropIndex === -1) return prev;\n\n const updatedScenarios = [...prev];\n const [removed] = updatedScenarios.splice(dragIndex, 1);\n updatedScenarios.splice(dropIndex, 0, removed);\n\n const updatedRiSc = {\n ...props.riScWithMetadata,\n content: {\n ...riSc,\n scenarios: updatedScenarios,\n },\n };\n updateRiSc(updatedRiSc, () => {});\n return updatedScenarios;\n });\n }\n\n const lastPublishedCommits =\n props.riScWithMetadata.lastPublished?.numberOfCommits ?? null;\n\n const displayScenarios: RiSc['scenarios'] = useDisplayScenarios(\n tempScenarios,\n visibleType,\n lastPublishedCommits,\n sortOrder ?? undefined,\n );\n\n const { matches: searchedActions } = useSearchActions(\n riSc.scenarios,\n props.searchQuery,\n );\n const scenariosToRender =\n (props.searchQuery ?? '')\n ? displayScenarios.filter(search => Boolean(searchedActions[search.ID]))\n : displayScenarios;\n\n const allowDrag = (sortOrder ?? '') === '';\n\n return (\n <>\n <Flex p=\"24px 24px 18px 24px\">\n {props.isEditing && allowDrag && <div className={tableCellDragIcon} />}\n <Box\n style={{\n width: props.isEditing && allowDrag ? '33%' : '40%',\n paddingLeft: '5%',\n }}\n >\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.title')}\n </Text>\n </Box>\n <Box style={{ width: '15%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.initialRisk')}\n </Text>\n </Box>\n <Box style={{ width: props.isEditing ? '25%' : '35%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.actionsWithStatus')}\n </Text>\n </Box>\n <Box style={{ width: '15%' }}>\n <Text weight=\"bold\" variant=\"body-large\">\n {t('dictionary.restRisk')}\n </Text>\n </Box>\n </Flex>\n {scenariosToRender.map((scenario, idx) => (\n <ScenarioTableRow\n key={scenario.ID}\n scenario={scenario}\n id={scenario.ID}\n index={idx}\n visibleType={visibleType}\n viewRow={(id: string) =>\n openScenarioDrawer(id, props.isEditingAllowed)\n }\n moveRowFinal={moveRowFinal}\n moveRowLocal={moveRowLocal}\n isEditing={props.isEditing}\n allowDrag={allowDrag}\n searchMatches={searchedActions[scenario.ID]}\n />\n ))}\n {props.searchQuery && scenariosToRender.length === 0 && (\n <Card className={tableCard}>\n <Flex align=\"center\" justify=\"center\">\n {t('dictionary.searchQuery')} \"{props.searchQuery}\"\n </Flex>\n </Card>\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ function ScenarioTableCard({
15
15
  }) {
16
16
  const riSc = riScWithMetadata.content;
17
17
  const { openNewScenarioWizard } = useScenario();
18
- const { veryOutdatedCount, outdatedCount } = computeStatusCount(riScWithMetadata);
18
+ const { veryOutdatedCount, outdatedCount, updatedCount } = computeStatusCount(riScWithMetadata);
19
19
  const [isEditing, setIsEditing] = useState(false);
20
20
  const [visibleType, setVisibleType] = useState(
21
21
  null
@@ -41,6 +41,7 @@ function ScenarioTableCard({
41
41
  {
42
42
  veryOutdatedCount,
43
43
  outdatedCount,
44
+ updatedCount,
44
45
  onToggle: handleToggle,
45
46
  visibleType
46
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ScenarioTableCard.esm.js","sources":["../../../src/components/scenarioTable/ScenarioTableCard.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { RiScWithMetadata } from '../../utils/types';\nimport {\n computeStatusCount,\n UpdatedStatusEnumType,\n UpdatedStatusEnum,\n} from '../../utils/utilityfunctions';\nimport { Card, CardBody, CardHeader, Flex } from '@backstage/ui';\nimport { ScenarioTableCardHeader } from './ScenarioTableCardHeader.tsx';\nimport { OutdatedActionsCounts } from './OutdatedActionsCounts.tsx';\nimport { AddScenarioButton } from './AddScenarioButton.tsx';\nimport { ScenarioTable } from './ScenarioTable.tsx';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { ScenarioTableFilter } from './ScenarioTableFilter.tsx';\n\ninterface ScenarioTableProps {\n riScWithMetadata: RiScWithMetadata;\n editingAllowed: boolean;\n}\n\nexport function ScenarioTableCard({\n riScWithMetadata,\n editingAllowed,\n}: ScenarioTableProps) {\n const riSc = riScWithMetadata.content;\n const { openNewScenarioWizard } = useScenario();\n const { veryOutdatedCount, outdatedCount } =\n computeStatusCount(riScWithMetadata);\n\n const [isEditing, setIsEditing] = useState<boolean>(false);\n\n const [visibleType, setVisibleType] = useState<UpdatedStatusEnumType | null>(\n null,\n );\n\n useEffect(() => {\n if (\n visibleType === UpdatedStatusEnum.VERY_OUTDATED &&\n veryOutdatedCount === 0\n ) {\n setVisibleType(null);\n }\n if (visibleType === UpdatedStatusEnum.OUTDATED && outdatedCount === 0) {\n setVisibleType(null);\n }\n }, [visibleType, veryOutdatedCount, outdatedCount]);\n\n function handleToggle(type: UpdatedStatusEnumType) {\n setVisibleType(prev => (prev === type ? null : type));\n }\n const [sortOrder, setSortOrder] = useState<string | null>(null);\n\n const [searchQuery, setSearchQuery] = useState<string>('');\n\n return (\n <Card>\n <CardHeader>\n <ScenarioTableCardHeader />\n </CardHeader>\n <CardBody style={{ paddingTop: '12px' }}>\n {(veryOutdatedCount > 0 || outdatedCount > 0) && (\n <OutdatedActionsCounts\n veryOutdatedCount={veryOutdatedCount}\n outdatedCount={outdatedCount}\n onToggle={handleToggle}\n visibleType={visibleType}\n />\n )}\n {riSc.scenarios.length === 0 && editingAllowed ? (\n <Flex justify=\"center\">\n <AddScenarioButton onNewScenario={openNewScenarioWizard} />\n </Flex>\n ) : (\n <>\n <ScenarioTableFilter\n value={sortOrder}\n onChange={setSortOrder}\n isEditing={isEditing}\n isEditingAllowed={riSc.scenarios.length > 0 && editingAllowed}\n onNewScenario={openNewScenarioWizard}\n onToggleEdit={() =>\n isEditing ? setIsEditing(false) : setIsEditing(true)\n }\n searchQuery={searchQuery}\n onSearchQueryChange={setSearchQuery}\n />\n\n <ScenarioTable\n sortOrder={sortOrder}\n isEditingAllowed={editingAllowed}\n isEditing={isEditing}\n riScWithMetadata={riScWithMetadata}\n visibleType={visibleType}\n searchQuery={searchQuery}\n />\n </>\n )}\n </CardBody>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAoBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,gBAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,OAAO,gBAAA,CAAiB,OAAA;AAC9B,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,WAAA,EAAY;AAC9C,EAAA,MAAM,EAAE,iBAAA,EAAmB,aAAA,EAAc,GACvC,mBAAmB,gBAAgB,CAAA;AAErC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEzD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA;AAAA,IACpC;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IACE,WAAA,KAAgB,iBAAA,CAAkB,aAAA,IAClC,iBAAA,KAAsB,CAAA,EACtB;AACA,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AACA,IAAA,IAAI,WAAA,KAAgB,iBAAA,CAAkB,QAAA,IAAY,aAAA,KAAkB,CAAA,EAAG;AACrE,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAA,EAAmB,aAAa,CAAC,CAAA;AAElD,EAAA,SAAS,aAAa,IAAA,EAA6B;AACjD,IAAA,cAAA,CAAe,CAAA,IAAA,KAAS,IAAA,KAAS,IAAA,GAAO,IAAA,GAAO,IAAK,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAiB,EAAE,CAAA;AAEzD,EAAA,4BACG,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,uBAAA,EAAA,EAAwB,CAAA,EAC3B,CAAA;AAAA,yBACC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,UAAA,EAAY,QAAO,EAClC,QAAA,EAAA;AAAA,MAAA,CAAA,iBAAA,GAAoB,CAAA,IAAK,gBAAgB,CAAA,qBACzC,GAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,iBAAA;AAAA,UACA,aAAA;AAAA,UACA,QAAA,EAAU,YAAA;AAAA,UACV;AAAA;AAAA,OACF;AAAA,MAED,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,iCAC9B,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,QAAA,EACZ,8BAAC,iBAAA,EAAA,EAAkB,aAAA,EAAe,qBAAA,EAAuB,CAAA,EAC3D,oBAEA,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,YAAA;AAAA,YACV,SAAA;AAAA,YACA,gBAAA,EAAkB,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,cAAA;AAAA,YAC/C,aAAA,EAAe,qBAAA;AAAA,YACf,cAAc,MACZ,SAAA,GAAY,aAAa,KAAK,CAAA,GAAI,aAAa,IAAI,CAAA;AAAA,YAErD,WAAA;AAAA,YACA,mBAAA,EAAqB;AAAA;AAAA,SACvB;AAAA,wBAEA,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,SAAA;AAAA,YACA,gBAAA,EAAkB,cAAA;AAAA,YAClB,SAAA;AAAA,YACA,gBAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ScenarioTableCard.esm.js","sources":["../../../src/components/scenarioTable/ScenarioTableCard.tsx"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { RiScWithMetadata } from '../../utils/types';\nimport {\n computeStatusCount,\n UpdatedStatusEnumType,\n UpdatedStatusEnum,\n} from '../../utils/utilityfunctions';\nimport { Card, CardBody, CardHeader, Flex } from '@backstage/ui';\nimport { ScenarioTableCardHeader } from './ScenarioTableCardHeader.tsx';\nimport { OutdatedActionsCounts } from './OutdatedActionsCounts.tsx';\nimport { AddScenarioButton } from './AddScenarioButton.tsx';\nimport { ScenarioTable } from './ScenarioTable.tsx';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { ScenarioTableFilter } from './ScenarioTableFilter.tsx';\n\ninterface ScenarioTableProps {\n riScWithMetadata: RiScWithMetadata;\n editingAllowed: boolean;\n}\n\nexport function ScenarioTableCard({\n riScWithMetadata,\n editingAllowed,\n}: ScenarioTableProps) {\n const riSc = riScWithMetadata.content;\n const { openNewScenarioWizard } = useScenario();\n const { veryOutdatedCount, outdatedCount, updatedCount } =\n computeStatusCount(riScWithMetadata);\n\n const [isEditing, setIsEditing] = useState<boolean>(false);\n\n const [visibleType, setVisibleType] = useState<UpdatedStatusEnumType | null>(\n null,\n );\n\n useEffect(() => {\n if (\n visibleType === UpdatedStatusEnum.VERY_OUTDATED &&\n veryOutdatedCount === 0\n ) {\n setVisibleType(null);\n }\n if (visibleType === UpdatedStatusEnum.OUTDATED && outdatedCount === 0) {\n setVisibleType(null);\n }\n }, [visibleType, veryOutdatedCount, outdatedCount]);\n\n function handleToggle(type: UpdatedStatusEnumType) {\n setVisibleType(prev => (prev === type ? null : type));\n }\n const [sortOrder, setSortOrder] = useState<string | null>(null);\n\n const [searchQuery, setSearchQuery] = useState<string>('');\n\n return (\n <Card>\n <CardHeader>\n <ScenarioTableCardHeader />\n </CardHeader>\n <CardBody style={{ paddingTop: '12px' }}>\n {(veryOutdatedCount > 0 || outdatedCount > 0) && (\n <OutdatedActionsCounts\n veryOutdatedCount={veryOutdatedCount}\n outdatedCount={outdatedCount}\n updatedCount={updatedCount}\n onToggle={handleToggle}\n visibleType={visibleType}\n />\n )}\n {riSc.scenarios.length === 0 && editingAllowed ? (\n <Flex justify=\"center\">\n <AddScenarioButton onNewScenario={openNewScenarioWizard} />\n </Flex>\n ) : (\n <>\n <ScenarioTableFilter\n value={sortOrder}\n onChange={setSortOrder}\n isEditing={isEditing}\n isEditingAllowed={riSc.scenarios.length > 0 && editingAllowed}\n onNewScenario={openNewScenarioWizard}\n onToggleEdit={() =>\n isEditing ? setIsEditing(false) : setIsEditing(true)\n }\n searchQuery={searchQuery}\n onSearchQueryChange={setSearchQuery}\n />\n\n <ScenarioTable\n sortOrder={sortOrder}\n isEditingAllowed={editingAllowed}\n isEditing={isEditing}\n riScWithMetadata={riScWithMetadata}\n visibleType={visibleType}\n searchQuery={searchQuery}\n />\n </>\n )}\n </CardBody>\n </Card>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAoBO,SAAS,iBAAA,CAAkB;AAAA,EAChC,gBAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,OAAO,gBAAA,CAAiB,OAAA;AAC9B,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,WAAA,EAAY;AAC9C,EAAA,MAAM,EAAE,iBAAA,EAAmB,aAAA,EAAe,YAAA,EAAa,GACrD,mBAAmB,gBAAgB,CAAA;AAErC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAkB,KAAK,CAAA;AAEzD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA;AAAA,IACpC;AAAA,GACF;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IACE,WAAA,KAAgB,iBAAA,CAAkB,aAAA,IAClC,iBAAA,KAAsB,CAAA,EACtB;AACA,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AACA,IAAA,IAAI,WAAA,KAAgB,iBAAA,CAAkB,QAAA,IAAY,aAAA,KAAkB,CAAA,EAAG;AACrE,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAA,EAAmB,aAAa,CAAC,CAAA;AAElD,EAAA,SAAS,aAAa,IAAA,EAA6B;AACjD,IAAA,cAAA,CAAe,CAAA,IAAA,KAAS,IAAA,KAAS,IAAA,GAAO,IAAA,GAAO,IAAK,CAAA;AAAA,EACtD;AACA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAiB,EAAE,CAAA;AAEzD,EAAA,4BACG,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,uBAAA,EAAA,EAAwB,CAAA,EAC3B,CAAA;AAAA,yBACC,QAAA,EAAA,EAAS,KAAA,EAAO,EAAE,UAAA,EAAY,QAAO,EAClC,QAAA,EAAA;AAAA,MAAA,CAAA,iBAAA,GAAoB,CAAA,IAAK,gBAAgB,CAAA,qBACzC,GAAA;AAAA,QAAC,qBAAA;AAAA,QAAA;AAAA,UACC,iBAAA;AAAA,UACA,aAAA;AAAA,UACA,YAAA;AAAA,UACA,QAAA,EAAU,YAAA;AAAA,UACV;AAAA;AAAA,OACF;AAAA,MAED,IAAA,CAAK,SAAA,CAAU,MAAA,KAAW,CAAA,IAAK,iCAC9B,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,QAAA,EACZ,8BAAC,iBAAA,EAAA,EAAkB,aAAA,EAAe,qBAAA,EAAuB,CAAA,EAC3D,oBAEA,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,mBAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,YAAA;AAAA,YACV,SAAA;AAAA,YACA,gBAAA,EAAkB,IAAA,CAAK,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,cAAA;AAAA,YAC/C,aAAA,EAAe,qBAAA;AAAA,YACf,cAAc,MACZ,SAAA,GAAY,aAAa,KAAK,CAAA,GAAI,aAAa,IAAI,CAAA;AAAA,YAErD,WAAA;AAAA,YACA,mBAAA,EAAqB;AAAA;AAAA,SACvB;AAAA,wBAEA,GAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,SAAA;AAAA,YACA,gBAAA,EAAkB,cAAA;AAAA,YAClB,SAAA;AAAA,YACA,gBAAA;AAAA,YACA,WAAA;AAAA,YACA;AAAA;AAAA;AACF,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -11,6 +11,7 @@ function ScenarioTableFilter(props) {
11
11
  SearchField,
12
12
  {
13
13
  placeholder: "S\xF8k etter tiltak ...",
14
+ "aria-label": "search field",
14
15
  value: props.searchQuery,
15
16
  onChange: (value) => props.onSearchQueryChange(value)
16
17
  }