From 591c971f1c6175548706b9a99184830e169d89fa Mon Sep 17 00:00:00 2001 From: Thomas Heartman Date: Wed, 2 Jul 2025 13:56:06 +0200 Subject: [PATCH] flag dependency change --- .../Changes/Change/DependencyChange.tsx | 78 +++++++++++++++---- .../Changes/Change/FeatureChange.tsx | 11 ++- 2 files changed, 74 insertions(+), 15 deletions(-) diff --git a/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/DependencyChange.tsx b/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/DependencyChange.tsx index 0053896ca7..62a1c8bae0 100644 --- a/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/DependencyChange.tsx +++ b/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/DependencyChange.tsx @@ -1,11 +1,17 @@ import type { FC, ReactNode } from 'react'; -import { styled, Typography } from '@mui/material'; +import { Box, styled, Typography } from '@mui/material'; import type { IChangeRequestAddDependency, IChangeRequestDeleteDependency, } from 'component/changeRequest/changeRequest.types'; import { Link } from 'react-router-dom'; -import { ChangeItemInfo, ChangeItemWrapper } from './Change.styles'; +import { + Added, + ChangeItemInfo, + ChangeItemWrapper, + Deleted, +} from './Change.styles'; +import { ChangeItemWrapper as LegacyChangeItemWrapper } from './LegacyStrategyChange.tsx'; const StyledLink = styled(Link)(({ theme }) => ({ maxWidth: '100%', @@ -20,14 +26,62 @@ export const DependencyChange: FC<{ change: IChangeRequestAddDependency | IChangeRequestDeleteDependency; projectId: string; onNavigate?: () => void; +}> = ({ actions, change, projectId, onNavigate }) => { + if (change.action === 'addDependency') { + return ( + + + Adding dependency + + {change.payload.feature} + + {!change.payload.enabled ? ' (disabled)' : null} + {change.payload.variants?.length + ? `(${change.payload.variants?.join(', ')})` + : null} + {actions} + + + ); + } + + if (change.action === 'deleteDependency') { + return ( + + + Deleting dependencies + {actions} + + + ); + } +}; + +const AddDependencyWrapper = styled(Box)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + gap: theme.spacing(1), +})); + +/** + * @deprecated use DependencyChange instead; remove with flag crDiffView + */ +export const LegacyDependencyChange: FC<{ + actions?: ReactNode; + change: IChangeRequestAddDependency | IChangeRequestDeleteDependency; + projectId: string; + onNavigate?: () => void; }> = ({ actions, change, projectId, onNavigate }) => { return ( <> {change.action === 'addDependency' && ( <> - - - + + + + Adding dependency - + + {actions} + )} {change.action === 'deleteDependency' && ( - + ({ color: theme.palette.error.main, })} - component='span' - display='inline' > - Deleting dependencies - {actions} - + + {actions} )} diff --git a/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/FeatureChange.tsx b/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/FeatureChange.tsx index a896a92360..0a78a7252d 100644 --- a/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/FeatureChange.tsx +++ b/frontend/src/component/changeRequest/ChangeRequest/Changes/Change/FeatureChange.tsx @@ -15,7 +15,10 @@ import { ArchiveFeatureChange, LegacyArchiveFeatureChange, } from './ArchiveFeatureChange.tsx'; -import { DependencyChange } from './DependencyChange.tsx'; +import { + DependencyChange, + LegacyDependencyChange, +} from './DependencyChange.tsx'; import { Link } from 'react-router-dom'; import { LegacyReleasePlanChange } from './LegacyReleasePlanChange.tsx'; import { ReleasePlanChange } from './ReleasePlanChange.tsx'; @@ -107,6 +110,10 @@ export const FeatureChange: FC<{ ? ArchiveFeatureChange : LegacyArchiveFeatureChange; + const DependencyChangeComponent = useDiffableChangeComponent + ? DependencyChange + : LegacyDependencyChange; + return ( {(change.action === 'addDependency' || change.action === 'deleteDependency') && ( -