@kartverket/backstage-plugin-risk-scorecard 3.5.0 → 3.5.3

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.
@@ -1,11 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { ActionBox } from './ActionBox.esm.js';
3
- import { useState, useCallback, useMemo, Fragment } from 'react';
3
+ import { useState, useCallback, useEffect, Fragment } from 'react';
4
4
  import Paper from '@mui/material/Paper';
5
5
  import Typography from '@mui/material/Typography';
6
6
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
7
7
  import { pluginRiScTranslationRef } from '../../../utils/translations.esm.js';
8
- import { emptyAction } from '../../../contexts/ScenarioContext.esm.js';
8
+ import { useScenario, emptyAction } from '../../../contexts/ScenarioContext.esm.js';
9
9
  import { section } from '../scenarioDrawerComponents.esm.js';
10
10
  import { heading3, emptyState } from '../../common/typography.esm.js';
11
11
  import Divider from '@mui/material/Divider';
@@ -44,6 +44,7 @@ function ActionsSection({
44
44
  setCurrentUpdatedActionIDs
45
45
  }) {
46
46
  const { t } = useTranslationRef(pluginRiScTranslationRef);
47
+ const { isDrawerOpen } = useScenario();
47
48
  const { control, watch } = formMethods;
48
49
  const { fields, append, remove } = useFieldArray({
49
50
  control,
@@ -53,15 +54,7 @@ function ActionsSection({
53
54
  const [showOnlyRelevant, setShowOnlyRelevant] = useState(
54
55
  FILTER_SETTINGS.SHOW_ALL
55
56
  );
56
- const filterActions = useCallback(
57
- (actions, filterRelevant) => {
58
- if (!filterRelevant) return actions;
59
- return actions.filter(
60
- (action) => action.status !== ActionStatusOptions.NotRelevant
61
- );
62
- },
63
- []
64
- );
57
+ const [processedActions, setProcessedActions] = useState([]);
65
58
  const sortActionsByRelevance = useCallback((actions) => {
66
59
  return [...actions].sort((a, b) => {
67
60
  const aIsNotRelevant = a.status === ActionStatusOptions.NotRelevant;
@@ -75,15 +68,20 @@ function ActionsSection({
75
68
  return 0;
76
69
  });
77
70
  }, []);
78
- const processedActions = useMemo(() => {
79
- if (!currentActions?.length) return [];
80
- const filtered = filterActions(currentActions, showOnlyRelevant);
81
- const sorted = sortActionsByRelevance(filtered);
82
- return sorted.map((action) => ({
83
- action,
84
- originalIndex: currentActions.findIndex((a) => a === action)
85
- }));
86
- }, [currentActions, showOnlyRelevant, filterActions, sortActionsByRelevance]);
71
+ useEffect(() => {
72
+ if (isDrawerOpen && currentActions?.length) {
73
+ const sorted = sortActionsByRelevance(currentActions);
74
+ setProcessedActions(
75
+ sorted.map((action) => ({
76
+ action,
77
+ originalIndex: currentActions.findIndex((a) => a === action)
78
+ }))
79
+ );
80
+ }
81
+ }, [isDrawerOpen, sortActionsByRelevance]);
82
+ const visibleActions = processedActions.filter(
83
+ ({ action }) => showOnlyRelevant ? action.status !== ActionStatusOptions.NotRelevant : true
84
+ );
87
85
  if (isEditing) {
88
86
  return /* @__PURE__ */ jsxs(Paper, { sx: section, children: [
89
87
  /* @__PURE__ */ jsxs(Box, { sx: { display: "flex", alignItems: "center", gap: 2 }, children: [
@@ -134,7 +132,7 @@ function ActionsSection({
134
132
  ]
135
133
  }
136
134
  ),
137
- processedActions.length > 0 ? processedActions.map(({ action, originalIndex }) => /* @__PURE__ */ jsxs(Fragment, { children: [
135
+ visibleActions.length > 0 ? visibleActions.map(({ action, originalIndex }) => /* @__PURE__ */ jsxs(Fragment, { children: [
138
136
  /* @__PURE__ */ jsx(Divider, {}),
139
137
  /* @__PURE__ */ jsx(
140
138
  ActionBox,
@@ -147,7 +145,7 @@ function ActionsSection({
147
145
  setCurrentUpdatedActionIDs
148
146
  }
149
147
  )
150
- ] }, fields[originalIndex].id)) : /* @__PURE__ */ jsx(Typography, { sx: emptyState, children: !currentActions || currentActions.length === 0 ? t("dictionary.emptyField", {
148
+ ] }, action.ID)) : /* @__PURE__ */ jsx(Typography, { sx: emptyState, children: !currentActions || currentActions.length === 0 ? t("dictionary.emptyField", {
151
149
  field: t("dictionary.measures").toLowerCase()
152
150
  }) : t("dictionary.noRelevantMeasures") })
153
151
  ] });
@@ -1 +1 @@
1
- {"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { ActionBox } from './ActionBox';\nimport { Fragment, useCallback, useMemo, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { emptyAction } from '../../../contexts/ScenarioContext';\nimport { section } from '../scenarioDrawerComponents';\nimport { emptyState, heading3 } from '../../common/typography';\nimport Divider from '@mui/material/Divider';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Action, FormScenario } from '../../../utils/types';\nimport { ActionFormItem } from './ActionFormItem';\nimport Button from '@mui/material/Button';\nimport { AddCircle } from '@mui/icons-material';\nimport Box from '@mui/material/Box';\nimport { ActionStatusOptions } from '../../../utils/constants';\nimport Switch from '@mui/material/Switch';\n\nconst FILTER_SETTINGS = {\n SHOW_ALL: false,\n SHOW_ONLY_RELEVANT: true,\n} as const;\n\ntype ActionSectionProps = {\n formMethods: UseFormReturn<FormScenario>;\n isEditing: boolean;\n onSubmit: () => void;\n setCurrentUpdatedActionIDs: React.Dispatch<React.SetStateAction<string[]>>;\n};\n\nconst RelevanceToggle = ({\n checked,\n onChange,\n}: {\n checked: boolean;\n onChange: (checked: boolean) => void;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Switch\n checked={checked}\n onChange={e => onChange(e.target.checked)}\n name=\"showOnlyRelevant\"\n color=\"primary\"\n />\n <Typography variant=\"subtitle2\" color=\"primary\">\n {t('dictionary.showOnlyRelevant')}\n </Typography>\n </Box>\n );\n};\n\nexport function ActionsSection({\n formMethods,\n isEditing,\n onSubmit,\n setCurrentUpdatedActionIDs,\n}: ActionSectionProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control, watch } = formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n });\n\n const currentActions = watch('actions');\n\n const [showOnlyRelevant, setShowOnlyRelevant] = useState<boolean>(\n FILTER_SETTINGS.SHOW_ALL,\n );\n\n const filterActions = useCallback(\n (actions: Action[], filterRelevant: boolean) => {\n if (!filterRelevant) return actions;\n\n return actions.filter(\n action => action.status !== ActionStatusOptions.NotRelevant,\n );\n },\n [],\n );\n\n const sortActionsByRelevance = useCallback((actions: Action[]) => {\n return [...actions].sort((a, b) => {\n const aIsNotRelevant = a.status === ActionStatusOptions.NotRelevant;\n const bIsNotRelevant = b.status === ActionStatusOptions.NotRelevant;\n\n if (aIsNotRelevant && !bIsNotRelevant) {\n return 1;\n }\n if (!aIsNotRelevant && bIsNotRelevant) {\n return -1;\n }\n return 0;\n });\n }, []);\n\n const processedActions = useMemo(() => {\n if (!currentActions?.length) return [];\n\n const filtered = filterActions(currentActions, showOnlyRelevant);\n const sorted = sortActionsByRelevance(filtered);\n\n return sorted.map(action => ({\n action,\n originalIndex: currentActions.findIndex(a => a === action),\n }));\n }, [currentActions, showOnlyRelevant, filterActions, sortActionsByRelevance]);\n\n if (isEditing) {\n return (\n <Paper sx={section}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n <Typography sx={heading3}>{t('dictionary.measure')}</Typography>\n <Button\n startIcon={<AddCircle />}\n color=\"primary\"\n onClick={() => append(emptyAction())}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Box>\n {fields.map((field, index) => (\n <Fragment key={field.id}>\n <Divider variant=\"fullWidth\" />\n <ActionFormItem\n key={index}\n formMethods={formMethods}\n index={index}\n remove={remove}\n />\n </Fragment>\n ))}\n </Paper>\n );\n }\n\n return (\n <Paper sx={section}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 2,\n }}\n >\n <Typography sx={heading3}>{t('dictionary.measures')}</Typography>\n\n <RelevanceToggle\n checked={showOnlyRelevant}\n onChange={value => setShowOnlyRelevant(value)}\n />\n </Box>\n {processedActions.length > 0 ? (\n processedActions.map(({ action, originalIndex }) => (\n <Fragment key={fields[originalIndex].id}>\n <Divider />\n <ActionBox\n action={action}\n index={originalIndex}\n formMethods={formMethods}\n remove={remove}\n onSubmit={onSubmit}\n setCurrentUpdatedActionIDs={setCurrentUpdatedActionIDs}\n />\n </Fragment>\n ))\n ) : (\n <Typography sx={emptyState}>\n {!currentActions || currentActions.length === 0\n ? t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })\n : t('dictionary.noRelevantMeasures')}\n </Typography>\n )}\n </Paper>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { ActionBox } from './ActionBox';\nimport { Fragment, useCallback, useEffect, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport Typography from '@mui/material/Typography';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { emptyAction, useScenario } from '../../../contexts/ScenarioContext';\nimport { section } from '../scenarioDrawerComponents';\nimport { emptyState, heading3 } from '../../common/typography';\nimport Divider from '@mui/material/Divider';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Action, FormScenario } from '../../../utils/types';\nimport { ActionFormItem } from './ActionFormItem';\nimport Button from '@mui/material/Button';\nimport { AddCircle } from '@mui/icons-material';\nimport Box from '@mui/material/Box';\nimport { ActionStatusOptions } from '../../../utils/constants';\nimport Switch from '@mui/material/Switch';\n\nconst FILTER_SETTINGS = {\n SHOW_ALL: false,\n SHOW_ONLY_RELEVANT: true,\n} as const;\n\ntype ActionSectionProps = {\n formMethods: UseFormReturn<FormScenario>;\n isEditing: boolean;\n onSubmit: () => void;\n setCurrentUpdatedActionIDs: React.Dispatch<React.SetStateAction<string[]>>;\n};\n\nconst RelevanceToggle = ({\n checked,\n onChange,\n}: {\n checked: boolean;\n onChange: (checked: boolean) => void;\n}) => {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Switch\n checked={checked}\n onChange={e => onChange(e.target.checked)}\n name=\"showOnlyRelevant\"\n color=\"primary\"\n />\n <Typography variant=\"subtitle2\" color=\"primary\">\n {t('dictionary.showOnlyRelevant')}\n </Typography>\n </Box>\n );\n};\n\nexport function ActionsSection({\n formMethods,\n isEditing,\n onSubmit,\n setCurrentUpdatedActionIDs,\n}: ActionSectionProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { isDrawerOpen } = useScenario();\n\n const { control, watch } = formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n });\n\n const currentActions = watch('actions');\n\n const [showOnlyRelevant, setShowOnlyRelevant] = useState<boolean>(\n FILTER_SETTINGS.SHOW_ALL,\n );\n\n const [processedActions, setProcessedActions] = useState<\n { action: Action; originalIndex: number }[]\n >([]);\n\n const sortActionsByRelevance = useCallback((actions: Action[]) => {\n return [...actions].sort((a, b) => {\n const aIsNotRelevant = a.status === ActionStatusOptions.NotRelevant;\n const bIsNotRelevant = b.status === ActionStatusOptions.NotRelevant;\n\n if (aIsNotRelevant && !bIsNotRelevant) {\n return 1;\n }\n if (!aIsNotRelevant && bIsNotRelevant) {\n return -1;\n }\n return 0;\n });\n }, []);\n\n useEffect(() => {\n if (isDrawerOpen && currentActions?.length) {\n const sorted = sortActionsByRelevance(currentActions);\n\n setProcessedActions(\n sorted.map(action => ({\n action,\n originalIndex: currentActions.findIndex(a => a === action),\n })),\n );\n }\n // ESLint-ignore: only sort when drawer opens\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDrawerOpen, sortActionsByRelevance]);\n\n const visibleActions = processedActions.filter(({ action }) =>\n showOnlyRelevant ? action.status !== ActionStatusOptions.NotRelevant : true,\n );\n\n if (isEditing) {\n return (\n <Paper sx={section}>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>\n <Typography sx={heading3}>{t('dictionary.measure')}</Typography>\n <Button\n startIcon={<AddCircle />}\n color=\"primary\"\n onClick={() => append(emptyAction())}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Box>\n {fields.map((field, index) => (\n <Fragment key={field.id}>\n <Divider variant=\"fullWidth\" />\n <ActionFormItem\n key={index}\n formMethods={formMethods}\n index={index}\n remove={remove}\n />\n </Fragment>\n ))}\n </Paper>\n );\n }\n\n return (\n <Paper sx={section}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginBottom: 2,\n }}\n >\n <Typography sx={heading3}>{t('dictionary.measures')}</Typography>\n\n <RelevanceToggle\n checked={showOnlyRelevant}\n onChange={value => setShowOnlyRelevant(value)}\n />\n </Box>\n {visibleActions.length > 0 ? (\n visibleActions.map(({ action, originalIndex }) => (\n <Fragment key={action.ID}>\n <Divider />\n <ActionBox\n action={action}\n index={originalIndex}\n formMethods={formMethods}\n remove={remove}\n onSubmit={onSubmit}\n setCurrentUpdatedActionIDs={setCurrentUpdatedActionIDs}\n />\n </Fragment>\n ))\n ) : (\n <Typography sx={emptyState}>\n {!currentActions || currentActions.length === 0\n ? t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })\n : t('dictionary.noRelevantMeasures')}\n </Typography>\n )}\n </Paper>\n );\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kartverket/backstage-plugin-risk-scorecard",
3
- "version": "3.5.0",
3
+ "version": "3.5.3",
4
4
  "main": "dist/index.esm.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "MIT",