@kartverket/backstage-plugin-risk-scorecard 6.6.0 → 6.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/action/ActionView.esm.js +1 -2
- package/dist/components/action/ActionView.esm.js.map +1 -1
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js +1 -1
- package/dist/components/scenarioDrawer/components/ActionsSection.esm.js.map +1 -1
- package/dist/components/scenarioTable/ScenarioTableFilter.esm.js +1 -1
- package/dist/components/scenarioTable/ScenarioTableFilter.esm.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,6 @@ import { ScenarioLastUpdatedLabel } from '../scenario/ScenarioLastUpdatedLabel.e
|
|
|
8
8
|
import DeleteIcon from '@mui/icons-material/Delete';
|
|
9
9
|
import Collapse from '@mui/material/Collapse';
|
|
10
10
|
import Box from '@mui/material/Box';
|
|
11
|
-
import { Edit } from '@mui/icons-material';
|
|
12
11
|
import { Markdown } from '../common/Markdown.esm.js';
|
|
13
12
|
import { ActionURL } from './ActionURL.esm.js';
|
|
14
13
|
import { useScenario } from '../../contexts/ScenarioContext.esm.js';
|
|
@@ -146,7 +145,7 @@ function ActionView(props) {
|
|
|
146
145
|
e.stopPropagation();
|
|
147
146
|
props.toggleEditMode();
|
|
148
147
|
},
|
|
149
|
-
children: /* @__PURE__ */ jsx(
|
|
148
|
+
children: /* @__PURE__ */ jsx("i", { className: "ri-edit-line" })
|
|
150
149
|
}
|
|
151
150
|
)
|
|
152
151
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionView.esm.js","sources":["../../../src/components/action/ActionView.tsx"],"sourcesContent":["import { Flex, Text } from '@backstage/ui';\nimport IconButton from '@mui/material/IconButton';\nimport { DualButtonWithMenu } from '../common/DualButtonWithMenu.tsx';\nimport {\n actionStatusOptionsToTranslationKeys,\n getTranslatedActionStatus,\n UpdatedStatusEnumType,\n} from '../../utils/utilityfunctions.ts';\nimport { ActionStatusOptions } from '../../utils/constants.ts';\nimport { ScenarioLastUpdatedLabel } from '../scenario/ScenarioLastUpdatedLabel.tsx';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Collapse from '@mui/material/Collapse';\nimport Box from '@mui/material/Box';\nimport { Edit } from '@mui/icons-material';\nimport { Markdown } from '../common/Markdown.tsx';\nimport { ActionURL } from './ActionURL.tsx';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { Action } from '../../utils/types.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { UpdatedStatusBadge } from '../common/UpdatedStatusBadge.tsx';\n\ntype ActionViewProps = {\n action: Action;\n onRefreshActionStatus: (action: Action) => void;\n onNewActionStatus: (actionId: string, newStatus: ActionStatusOptions) => void;\n toggleEditMode: () => void;\n openDeleteDialog: () => void;\n updatedStatus: UpdatedStatusEnumType | 'UPDATING' | 'NONE';\n optimisticStatus?: ActionStatusOptions;\n allowDeletion?: boolean;\n allowEdit?: boolean;\n index?: number;\n};\n\nconst getActionStatusButtonClass = (status: string): string => {\n switch (status) {\n case ActionStatusOptions.OK:\n return 'ros-button-green';\n case ActionStatusOptions.NotOK:\n return 'ros-button-red';\n default:\n return 'ros-button-gray';\n }\n};\n\nexport function ActionView(props: ActionViewProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { isActionExpanded, toggleActionExpanded } = useScenario();\n const isExpanded = isActionExpanded(props.action.ID);\n\n return (\n <>\n <div\n role=\"button\"\n tabIndex={0}\n onClick={e => {\n e.stopPropagation();\n\n const target = e.target as HTMLElement | null;\n if (target && target.closest('[data-no-row-toggle]')) return;\n\n toggleActionExpanded(props.action.ID);\n }}\n onKeyDown={e => {\n // Prevent keyboard event from bubbling up to parent(s)\n e.stopPropagation();\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggleActionExpanded(props.action.ID);\n }\n }}\n style={{ cursor: 'pointer' }}\n >\n <Flex align=\"center\" gap=\"1\" justify=\"between\">\n <Flex align=\"center\" justify=\"start\" style={{ width: '40%' }}>\n <IconButton\n onClick={e => {\n e.stopPropagation();\n toggleActionExpanded(props.action.ID);\n }}\n >\n <i\n className={`ri-arrow-${isExpanded ? 'down' : 'right'}-s-line`}\n />\n </IconButton>\n <Text variant=\"body-large\">\n {props.action.title ??\n `${t('dictionary.measure')} ${props.index ?? ''}`}\n </Text>\n </Flex>\n <Flex align=\"center\" justify=\"end\">\n <DualButtonWithMenu\n propsCommon={{\n className: getActionStatusButtonClass(\n props.optimisticStatus ?? props.action.status,\n ),\n }}\n propsLeft={{\n children: getTranslatedActionStatus(\n props.optimisticStatus ?? props.action.status,\n t,\n ),\n }}\n propsRight={{\n iconEnd: <i className=\"ri-loop-left-line\" />,\n onClick: () => {\n props.onRefreshActionStatus(props.action);\n },\n }}\n menuItems={Object.values(ActionStatusOptions).map(value => ({\n key: value,\n // @ts-ignore\n label: t(\n actionStatusOptionsToTranslationKeys[\n value as ActionStatusOptions\n ],\n ),\n onClick: () => props.onNewActionStatus(props.action.ID, value),\n selected: props.optimisticStatus\n ? value === props.optimisticStatus\n : value === props.action.status,\n }))}\n />\n <Flex gap=\"0\" align=\"center\">\n <ScenarioLastUpdatedLabel\n lastUpdated={\n !!props.optimisticStatus\n ? new Date()\n : props.action.lastUpdated\n }\n lastUpdatedBy={props.action.lastUpdatedBy}\n />\n <UpdatedStatusBadge status={props.updatedStatus} />\n </Flex>\n {props.allowDeletion && (\n <IconButton\n onClick={e => {\n e.stopPropagation();\n props.openDeleteDialog();\n }}\n >\n <DeleteIcon />\n </IconButton>\n )}\n </Flex>\n </Flex>\n </div>\n <Collapse\n in={isExpanded}\n sx={{ marginTop: 1 }}\n timeout=\"auto\"\n unmountOnExit\n >\n <Box ml=\"56px\" mt=\"4\" mb=\"2\">\n <Flex justify=\"between\" mt=\"8px\" align=\"end\">\n <Text as=\"p\" variant=\"body-large\" weight=\"bold\">\n {t('dictionary.description')}\n </Text>\n {props.allowEdit && (\n <IconButton\n sx={{\n marginLeft: 'auto',\n transition: 'opacity 300ms ease-in',\n }}\n onClick={e => {\n e.stopPropagation();\n props.toggleEditMode();\n }}\n >\n <Edit />\n </IconButton>\n )}\n </Flex>\n <Markdown description={props.action.description} />\n <ActionURL url={props.action.url} />\n </Box>\n </Collapse>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionView.esm.js","sources":["../../../src/components/action/ActionView.tsx"],"sourcesContent":["import { Flex, Text } from '@backstage/ui';\nimport IconButton from '@mui/material/IconButton';\nimport { DualButtonWithMenu } from '../common/DualButtonWithMenu.tsx';\nimport {\n actionStatusOptionsToTranslationKeys,\n getTranslatedActionStatus,\n UpdatedStatusEnumType,\n} from '../../utils/utilityfunctions.ts';\nimport { ActionStatusOptions } from '../../utils/constants.ts';\nimport { ScenarioLastUpdatedLabel } from '../scenario/ScenarioLastUpdatedLabel.tsx';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Collapse from '@mui/material/Collapse';\nimport Box from '@mui/material/Box';\nimport { Markdown } from '../common/Markdown.tsx';\nimport { ActionURL } from './ActionURL.tsx';\nimport { useScenario } from '../../contexts/ScenarioContext.tsx';\nimport { Action } from '../../utils/types.ts';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\nimport { UpdatedStatusBadge } from '../common/UpdatedStatusBadge.tsx';\n\ntype ActionViewProps = {\n action: Action;\n onRefreshActionStatus: (action: Action) => void;\n onNewActionStatus: (actionId: string, newStatus: ActionStatusOptions) => void;\n toggleEditMode: () => void;\n openDeleteDialog: () => void;\n updatedStatus: UpdatedStatusEnumType | 'UPDATING' | 'NONE';\n optimisticStatus?: ActionStatusOptions;\n allowDeletion?: boolean;\n allowEdit?: boolean;\n index?: number;\n};\n\nconst getActionStatusButtonClass = (status: string): string => {\n switch (status) {\n case ActionStatusOptions.OK:\n return 'ros-button-green';\n case ActionStatusOptions.NotOK:\n return 'ros-button-red';\n default:\n return 'ros-button-gray';\n }\n};\n\nexport function ActionView(props: ActionViewProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { isActionExpanded, toggleActionExpanded } = useScenario();\n const isExpanded = isActionExpanded(props.action.ID);\n\n return (\n <>\n <div\n role=\"button\"\n tabIndex={0}\n onClick={e => {\n e.stopPropagation();\n\n const target = e.target as HTMLElement | null;\n if (target && target.closest('[data-no-row-toggle]')) return;\n\n toggleActionExpanded(props.action.ID);\n }}\n onKeyDown={e => {\n // Prevent keyboard event from bubbling up to parent(s)\n e.stopPropagation();\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n toggleActionExpanded(props.action.ID);\n }\n }}\n style={{ cursor: 'pointer' }}\n >\n <Flex align=\"center\" gap=\"1\" justify=\"between\">\n <Flex align=\"center\" justify=\"start\" style={{ width: '40%' }}>\n <IconButton\n onClick={e => {\n e.stopPropagation();\n toggleActionExpanded(props.action.ID);\n }}\n >\n <i\n className={`ri-arrow-${isExpanded ? 'down' : 'right'}-s-line`}\n />\n </IconButton>\n <Text variant=\"body-large\">\n {props.action.title ??\n `${t('dictionary.measure')} ${props.index ?? ''}`}\n </Text>\n </Flex>\n <Flex align=\"center\" justify=\"end\">\n <DualButtonWithMenu\n propsCommon={{\n className: getActionStatusButtonClass(\n props.optimisticStatus ?? props.action.status,\n ),\n }}\n propsLeft={{\n children: getTranslatedActionStatus(\n props.optimisticStatus ?? props.action.status,\n t,\n ),\n }}\n propsRight={{\n iconEnd: <i className=\"ri-loop-left-line\" />,\n onClick: () => {\n props.onRefreshActionStatus(props.action);\n },\n }}\n menuItems={Object.values(ActionStatusOptions).map(value => ({\n key: value,\n // @ts-ignore\n label: t(\n actionStatusOptionsToTranslationKeys[\n value as ActionStatusOptions\n ],\n ),\n onClick: () => props.onNewActionStatus(props.action.ID, value),\n selected: props.optimisticStatus\n ? value === props.optimisticStatus\n : value === props.action.status,\n }))}\n />\n <Flex gap=\"0\" align=\"center\">\n <ScenarioLastUpdatedLabel\n lastUpdated={\n !!props.optimisticStatus\n ? new Date()\n : props.action.lastUpdated\n }\n lastUpdatedBy={props.action.lastUpdatedBy}\n />\n <UpdatedStatusBadge status={props.updatedStatus} />\n </Flex>\n {props.allowDeletion && (\n <IconButton\n onClick={e => {\n e.stopPropagation();\n props.openDeleteDialog();\n }}\n >\n <DeleteIcon />\n </IconButton>\n )}\n </Flex>\n </Flex>\n </div>\n <Collapse\n in={isExpanded}\n sx={{ marginTop: 1 }}\n timeout=\"auto\"\n unmountOnExit\n >\n <Box ml=\"56px\" mt=\"4\" mb=\"2\">\n <Flex justify=\"between\" mt=\"8px\" align=\"end\">\n <Text as=\"p\" variant=\"body-large\" weight=\"bold\">\n {t('dictionary.description')}\n </Text>\n {props.allowEdit && (\n <IconButton\n sx={{\n marginLeft: 'auto',\n transition: 'opacity 300ms ease-in',\n }}\n onClick={e => {\n e.stopPropagation();\n props.toggleEditMode();\n }}\n >\n <i className=\"ri-edit-line\" />\n </IconButton>\n )}\n </Flex>\n <Markdown description={props.action.description} />\n <ActionURL url={props.action.url} />\n </Box>\n </Collapse>\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -85,7 +85,7 @@ function ActionsSection({ formMethods, isEditing }) {
|
|
|
85
85
|
/* @__PURE__ */ jsx(
|
|
86
86
|
Button,
|
|
87
87
|
{
|
|
88
|
-
iconStart: allowActionDeletion ? /* @__PURE__ */ jsx("i", { className: "ri-checkbox-circle-line" }) : /* @__PURE__ */ jsx("i", { className: "ri-
|
|
88
|
+
iconStart: allowActionDeletion ? /* @__PURE__ */ jsx("i", { className: "ri-checkbox-circle-line" }) : /* @__PURE__ */ jsx("i", { className: "ri-edit-line" }),
|
|
89
89
|
variant: "secondary",
|
|
90
90
|
onClick: () => setAllowActionDeletion((prev) => !prev),
|
|
91
91
|
children: allowActionDeletion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { emptyAction, useScenario } from '../../../contexts/ScenarioContext';\nimport sharedStyles from '../scenarioDrawer.module.css';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Action, FormScenario } from '../../../utils/types';\nimport { ActionFormItem } from './ActionFormItem';\nimport { AddCircle } from '@mui/icons-material';\nimport Switch from '@mui/material/Switch';\nimport { useActionFiltersStorage } from '../../../stores/ActionFiltersStore.ts';\nimport {\n Text,\n Tooltip,\n TooltipTrigger,\n Flex,\n Button,\n Card,\n Box,\n} from '@backstage/ui';\nimport { useSortActionsByRelevance } from '../../../hooks/UseSortActionsByRelevance.ts';\nimport { filterActionsByRelevance } from '../../../utils/actions.ts';\nimport { ActionRowList } from '../../action/ActionRowList.tsx';\nimport styles from './ActionsSection.module.css';\nimport { ActionStatusOptions } from '../../../utils/constants.ts';\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 <Flex align=\"center\" gap=\"0\" className={styles.noRelevantActionToggle}>\n <Switch\n checked={checked}\n onChange={e => onChange(e.target.checked)}\n name=\"showOnlyRelevant\"\n color=\"primary\"\n />\n <Text variant=\"body-medium\">{t('dictionary.showOnlyRelevant')}</Text>\n </Flex>\n );\n};\n\ntype ActionSectionProps = {\n formMethods: UseFormReturn<FormScenario>;\n isEditing: boolean;\n};\n\nexport function ActionsSection({ formMethods, isEditing }: ActionSectionProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n const [allowActionDeletion, setAllowActionDeletion] =\n useState<boolean>(false);\n const { watch } = formMethods;\n const currentActions = watch('actions');\n\n const [sortedActions, setSortedActions] = useState<Action[] | undefined>(\n undefined,\n );\n const { actionFilters, saveOnlyRelevantFilter } = useActionFiltersStorage();\n const sortActionsByRelevance = useSortActionsByRelevance();\n\n useEffect(() => {\n setSortedActions(sortedActionsState => {\n if (sortedActionsState === undefined)\n return sortActionsByRelevance([...currentActions]);\n\n // sync actions\n const updatedSortedActions: Action[] = [];\n for (const action of sortedActionsState) {\n const updatedAction = currentActions.find(a => a.ID === action.ID);\n if (updatedAction) updatedSortedActions.push(updatedAction);\n }\n // add new actions\n for (const action of currentActions) {\n if (!updatedSortedActions.some(a => a.ID === action.ID)) {\n updatedSortedActions.push(action);\n }\n }\n return updatedSortedActions;\n });\n }, [currentActions, actionFilters, sortActionsByRelevance]);\n\n if (isEditing) {\n return <ActionsSectionOnEdit formMethods={formMethods} />;\n }\n\n const doesCurrentActionsContainNotRelevantActions = currentActions.some(\n action => action.status === ActionStatusOptions.NotRelevant,\n );\n\n const isActionsEmpty = currentActions.length === 0;\n\n return (\n <Paper className={sharedStyles.section}>\n <Flex justify=\"between\" mb=\"2\">\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n <Flex align=\"center\">\n {doesCurrentActionsContainNotRelevantActions && (\n <RelevanceToggle\n checked={actionFilters.showOnlyRelevant}\n onChange={value => saveOnlyRelevantFilter(value)}\n />\n )}\n {!isActionsEmpty && (\n <TooltipTrigger>\n <Button\n iconStart={\n allowActionDeletion ? (\n <i className=\"ri-checkbox-circle-line\" />\n ) : (\n <i className=\"ri-pencil-line\" />\n )\n }\n variant=\"secondary\"\n onClick={() => setAllowActionDeletion(prev => !prev)}\n >\n {allowActionDeletion}\n </Button>\n <Tooltip>\n {allowActionDeletion\n ? t('scenarioTable.doneEditing')\n : t('scenarioTable.editButton')}\n </Tooltip>\n </TooltipTrigger>\n )}\n </Flex>\n </Flex>\n {sortedActions !== undefined && sortedActions.length > 0 ? (\n <ActionRowList\n scenarioId={scenario.ID}\n displayedActions={filterActionsByRelevance(\n sortedActions,\n actionFilters.showOnlyRelevant,\n )}\n allowDeletion={allowActionDeletion}\n allowEdit\n />\n ) : (\n <Text variant=\"body-large\" className={styles.italicText}>\n {!currentActions || currentActions.length === 0\n ? t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })\n : t('dictionary.noRelevantMeasures')}\n </Text>\n )}\n </Paper>\n );\n}\n\ntype ActionsSectionOnEditProps = {\n formMethods: UseFormReturn<FormScenario>;\n};\n\nfunction ActionsSectionOnEdit(props: ActionsSectionOnEditProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control } = props.formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n });\n\n return (\n <Paper className={sharedStyles.section}>\n <Box>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n </Box>\n {fields.map((field, index) => (\n <Card key={field.id} className={styles.actionFormItemCard}>\n <ActionFormItem\n key={index}\n formMethods={props.formMethods}\n displayedIndex={index}\n handleDelete={() => remove(index)}\n baseObjectPathToActionOfForm={`actions.${index}`}\n />\n </Card>\n ))}\n <Button\n iconStart={<AddCircle />}\n variant=\"primary\"\n onClick={() => append(emptyAction())}\n className={styles.addActionButton}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Paper>\n );\n}\n"],"names":["sharedStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionsSection.esm.js","sources":["../../../../src/components/scenarioDrawer/components/ActionsSection.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport Paper from '@mui/material/Paper';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../../utils/translations';\nimport { emptyAction, useScenario } from '../../../contexts/ScenarioContext';\nimport sharedStyles from '../scenarioDrawer.module.css';\nimport { useFieldArray, UseFormReturn } from 'react-hook-form';\nimport { Action, FormScenario } from '../../../utils/types';\nimport { ActionFormItem } from './ActionFormItem';\nimport { AddCircle } from '@mui/icons-material';\nimport Switch from '@mui/material/Switch';\nimport { useActionFiltersStorage } from '../../../stores/ActionFiltersStore.ts';\nimport {\n Text,\n Tooltip,\n TooltipTrigger,\n Flex,\n Button,\n Card,\n Box,\n} from '@backstage/ui';\nimport { useSortActionsByRelevance } from '../../../hooks/UseSortActionsByRelevance.ts';\nimport { filterActionsByRelevance } from '../../../utils/actions.ts';\nimport { ActionRowList } from '../../action/ActionRowList.tsx';\nimport styles from './ActionsSection.module.css';\nimport { ActionStatusOptions } from '../../../utils/constants.ts';\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 <Flex align=\"center\" gap=\"0\" className={styles.noRelevantActionToggle}>\n <Switch\n checked={checked}\n onChange={e => onChange(e.target.checked)}\n name=\"showOnlyRelevant\"\n color=\"primary\"\n />\n <Text variant=\"body-medium\">{t('dictionary.showOnlyRelevant')}</Text>\n </Flex>\n );\n};\n\ntype ActionSectionProps = {\n formMethods: UseFormReturn<FormScenario>;\n isEditing: boolean;\n};\n\nexport function ActionsSection({ formMethods, isEditing }: ActionSectionProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n const { scenario } = useScenario();\n\n const [allowActionDeletion, setAllowActionDeletion] =\n useState<boolean>(false);\n const { watch } = formMethods;\n const currentActions = watch('actions');\n\n const [sortedActions, setSortedActions] = useState<Action[] | undefined>(\n undefined,\n );\n const { actionFilters, saveOnlyRelevantFilter } = useActionFiltersStorage();\n const sortActionsByRelevance = useSortActionsByRelevance();\n\n useEffect(() => {\n setSortedActions(sortedActionsState => {\n if (sortedActionsState === undefined)\n return sortActionsByRelevance([...currentActions]);\n\n // sync actions\n const updatedSortedActions: Action[] = [];\n for (const action of sortedActionsState) {\n const updatedAction = currentActions.find(a => a.ID === action.ID);\n if (updatedAction) updatedSortedActions.push(updatedAction);\n }\n // add new actions\n for (const action of currentActions) {\n if (!updatedSortedActions.some(a => a.ID === action.ID)) {\n updatedSortedActions.push(action);\n }\n }\n return updatedSortedActions;\n });\n }, [currentActions, actionFilters, sortActionsByRelevance]);\n\n if (isEditing) {\n return <ActionsSectionOnEdit formMethods={formMethods} />;\n }\n\n const doesCurrentActionsContainNotRelevantActions = currentActions.some(\n action => action.status === ActionStatusOptions.NotRelevant,\n );\n\n const isActionsEmpty = currentActions.length === 0;\n\n return (\n <Paper className={sharedStyles.section}>\n <Flex justify=\"between\" mb=\"2\">\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n <Flex align=\"center\">\n {doesCurrentActionsContainNotRelevantActions && (\n <RelevanceToggle\n checked={actionFilters.showOnlyRelevant}\n onChange={value => saveOnlyRelevantFilter(value)}\n />\n )}\n {!isActionsEmpty && (\n <TooltipTrigger>\n <Button\n iconStart={\n allowActionDeletion ? (\n <i className=\"ri-checkbox-circle-line\" />\n ) : (\n <i className=\"ri-edit-line\" />\n )\n }\n variant=\"secondary\"\n onClick={() => setAllowActionDeletion(prev => !prev)}\n >\n {allowActionDeletion}\n </Button>\n <Tooltip>\n {allowActionDeletion\n ? t('scenarioTable.doneEditing')\n : t('scenarioTable.editButton')}\n </Tooltip>\n </TooltipTrigger>\n )}\n </Flex>\n </Flex>\n {sortedActions !== undefined && sortedActions.length > 0 ? (\n <ActionRowList\n scenarioId={scenario.ID}\n displayedActions={filterActionsByRelevance(\n sortedActions,\n actionFilters.showOnlyRelevant,\n )}\n allowDeletion={allowActionDeletion}\n allowEdit\n />\n ) : (\n <Text variant=\"body-large\" className={styles.italicText}>\n {!currentActions || currentActions.length === 0\n ? t('dictionary.emptyField', {\n field: t('dictionary.measures').toLowerCase(),\n })\n : t('dictionary.noRelevantMeasures')}\n </Text>\n )}\n </Paper>\n );\n}\n\ntype ActionsSectionOnEditProps = {\n formMethods: UseFormReturn<FormScenario>;\n};\n\nfunction ActionsSectionOnEdit(props: ActionsSectionOnEditProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n\n const { control } = props.formMethods;\n const { fields, append, remove } = useFieldArray({\n control,\n name: 'actions',\n });\n\n return (\n <Paper className={sharedStyles.section}>\n <Box>\n <Text variant=\"title-x-small\" weight=\"bold\">\n {t('dictionary.measures')}\n </Text>\n </Box>\n {fields.map((field, index) => (\n <Card key={field.id} className={styles.actionFormItemCard}>\n <ActionFormItem\n key={index}\n formMethods={props.formMethods}\n displayedIndex={index}\n handleDelete={() => remove(index)}\n baseObjectPathToActionOfForm={`actions.${index}`}\n />\n </Card>\n ))}\n <Button\n iconStart={<AddCircle />}\n variant=\"primary\"\n onClick={() => append(emptyAction())}\n className={styles.addActionButton}\n >\n {t('scenarioDrawer.measureTab.addMeasureButton')}\n </Button>\n </Paper>\n );\n}\n"],"names":["sharedStyles"],"mappings":"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"}
|
|
@@ -44,7 +44,7 @@ function ScenarioTableFilter(props) {
|
|
|
44
44
|
/* @__PURE__ */ jsx(
|
|
45
45
|
Button,
|
|
46
46
|
{
|
|
47
|
-
iconStart: props.isEditingScenarioTable ? /* @__PURE__ */ jsx("i", { className: "ri-checkbox-circle-line" }) : /* @__PURE__ */ jsx("i", { className: "ri-
|
|
47
|
+
iconStart: props.isEditingScenarioTable ? /* @__PURE__ */ jsx("i", { className: "ri-checkbox-circle-line" }) : /* @__PURE__ */ jsx("i", { className: "ri-edit-line" }),
|
|
48
48
|
variant: "secondary",
|
|
49
49
|
onClick: props.onToggleEditScenarioTable,
|
|
50
50
|
children: props.isEditingScenarioTable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScenarioTableFilter.esm.js","sources":["../../../src/components/scenarioTable/ScenarioTableFilter.tsx"],"sourcesContent":["import {\n Select,\n Flex,\n Button,\n TooltipTrigger,\n Tooltip,\n SearchField,\n} from '@backstage/ui';\nimport { AddScenarioButton } from './AddScenarioButton.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\n\ntype ScenarioTableFilterProps = {\n scenarioSortOrder: string | null;\n onScenarioSortOrderChange: (sortOrder: string | null) => void;\n actionSearchQuery: string;\n onActionSearchQueryChange: (query: string) => void;\n isEditingScenarioTable: boolean;\n isEditingScenarioTableAllowed: boolean;\n onToggleEditScenarioTable: () => void;\n onNewScenario: () => void;\n};\n\nexport function ScenarioTableFilter(props: ScenarioTableFilterProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <Flex justify=\"between\" gap=\"16px\">\n <Flex style={{ flex: 1 }}>\n <SearchField\n placeholder=\"Søk etter tiltak ...\"\n aria-label=\"search field\"\n value={props.actionSearchQuery}\n onChange={value => props.onActionSearchQueryChange(value)}\n />\n </Flex>\n <Flex>\n <Select\n aria-label=\"sortering\"\n defaultValue={props.scenarioSortOrder ?? 'NoSorting'}\n onSelectionChange={key =>\n props.onScenarioSortOrderChange(key?.toString() ?? 'NoSorting')\n }\n options={[\n { value: 'NoSorting', label: t('dictionary.customOrder') },\n { value: 'TitleAlphabetical', label: t('filter.title') },\n { value: 'HighestInitialRisk', label: t('filter.initialRisk') },\n {\n value: 'MostImplementedActions',\n label: t('filter.completedActions'),\n },\n {\n value: 'MostRemainingActions',\n label: t('filter.remainingActions'),\n },\n ]}\n />\n {props.isEditingScenarioTableAllowed && (\n <>\n <AddScenarioButton onNewScenario={props.onNewScenario} />\n <TooltipTrigger>\n <Button\n iconStart={\n props.isEditingScenarioTable ? (\n <i className=\"ri-checkbox-circle-line\" />\n ) : (\n <i className=\"ri-
|
|
1
|
+
{"version":3,"file":"ScenarioTableFilter.esm.js","sources":["../../../src/components/scenarioTable/ScenarioTableFilter.tsx"],"sourcesContent":["import {\n Select,\n Flex,\n Button,\n TooltipTrigger,\n Tooltip,\n SearchField,\n} from '@backstage/ui';\nimport { AddScenarioButton } from './AddScenarioButton.tsx';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { pluginRiScTranslationRef } from '../../utils/translations.ts';\n\ntype ScenarioTableFilterProps = {\n scenarioSortOrder: string | null;\n onScenarioSortOrderChange: (sortOrder: string | null) => void;\n actionSearchQuery: string;\n onActionSearchQueryChange: (query: string) => void;\n isEditingScenarioTable: boolean;\n isEditingScenarioTableAllowed: boolean;\n onToggleEditScenarioTable: () => void;\n onNewScenario: () => void;\n};\n\nexport function ScenarioTableFilter(props: ScenarioTableFilterProps) {\n const { t } = useTranslationRef(pluginRiScTranslationRef);\n return (\n <Flex justify=\"between\" gap=\"16px\">\n <Flex style={{ flex: 1 }}>\n <SearchField\n placeholder=\"Søk etter tiltak ...\"\n aria-label=\"search field\"\n value={props.actionSearchQuery}\n onChange={value => props.onActionSearchQueryChange(value)}\n />\n </Flex>\n <Flex>\n <Select\n aria-label=\"sortering\"\n defaultValue={props.scenarioSortOrder ?? 'NoSorting'}\n onSelectionChange={key =>\n props.onScenarioSortOrderChange(key?.toString() ?? 'NoSorting')\n }\n options={[\n { value: 'NoSorting', label: t('dictionary.customOrder') },\n { value: 'TitleAlphabetical', label: t('filter.title') },\n { value: 'HighestInitialRisk', label: t('filter.initialRisk') },\n {\n value: 'MostImplementedActions',\n label: t('filter.completedActions'),\n },\n {\n value: 'MostRemainingActions',\n label: t('filter.remainingActions'),\n },\n ]}\n />\n {props.isEditingScenarioTableAllowed && (\n <>\n <AddScenarioButton onNewScenario={props.onNewScenario} />\n <TooltipTrigger>\n <Button\n iconStart={\n props.isEditingScenarioTable ? (\n <i className=\"ri-checkbox-circle-line\" />\n ) : (\n <i className=\"ri-edit-line\" />\n )\n }\n variant=\"secondary\"\n onClick={props.onToggleEditScenarioTable}\n >\n {props.isEditingScenarioTable}\n </Button>\n <Tooltip>\n {props.isEditingScenarioTable\n ? t('scenarioTable.doneEditing')\n : t('scenarioTable.editButton')}\n </Tooltip>\n </TooltipTrigger>\n </>\n )}\n </Flex>\n </Flex>\n );\n}\n"],"names":[],"mappings":";;;;;;AAuBO,SAAS,oBAAoB,KAAA,EAAiC;AACnE,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,wBAAwB,CAAA;AACxD,EAAA,uBACE,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,SAAA,EAAU,KAAI,MAAA,EAC1B,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,EAAE,IAAA,EAAM,GAAE,EACrB,QAAA,kBAAA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAY,yBAAA;AAAA,QACZ,YAAA,EAAW,cAAA;AAAA,QACX,OAAO,KAAA,CAAM,iBAAA;AAAA,QACb,QAAA,EAAU,CAAA,KAAA,KAAS,KAAA,CAAM,yBAAA,CAA0B,KAAK;AAAA;AAAA,KAC1D,EACF,CAAA;AAAA,yBACC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAW,WAAA;AAAA,UACX,YAAA,EAAc,MAAM,iBAAA,IAAqB,WAAA;AAAA,UACzC,mBAAmB,CAAA,GAAA,KACjB,KAAA,CAAM,0BAA0B,GAAA,EAAK,QAAA,MAAc,WAAW,CAAA;AAAA,UAEhE,OAAA,EAAS;AAAA,YACP,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,CAAA,CAAE,wBAAwB,CAAA,EAAE;AAAA,YACzD,EAAE,KAAA,EAAO,mBAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,cAAc,CAAA,EAAE;AAAA,YACvD,EAAE,KAAA,EAAO,oBAAA,EAAsB,KAAA,EAAO,CAAA,CAAE,oBAAoB,CAAA,EAAE;AAAA,YAC9D;AAAA,cACE,KAAA,EAAO,wBAAA;AAAA,cACP,KAAA,EAAO,EAAE,yBAAyB;AAAA,aACpC;AAAA,YACA;AAAA,cACE,KAAA,EAAO,sBAAA;AAAA,cACP,KAAA,EAAO,EAAE,yBAAyB;AAAA;AACpC;AACF;AAAA,OACF;AAAA,MACC,KAAA,CAAM,iDACL,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,aAAA,EAAe,KAAA,CAAM,aAAA,EAAe,CAAA;AAAA,6BACtD,cAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EACE,KAAA,CAAM,sBAAA,mBACJ,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yBAAA,EAA0B,CAAA,mBAEvC,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,cAAA,EAAe,CAAA;AAAA,cAGhC,OAAA,EAAQ,WAAA;AAAA,cACR,SAAS,KAAA,CAAM,yBAAA;AAAA,cAEd,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,WACT;AAAA,0BACA,GAAA,CAAC,WACE,QAAA,EAAA,KAAA,CAAM,sBAAA,GACH,EAAE,2BAA2B,CAAA,GAC7B,CAAA,CAAE,0BAA0B,CAAA,EAClC;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|