mirror of
https://github.com/Unleash/unleash.git
synced 2025-08-23 13:46:45 +02:00
flag dependency change
This commit is contained in:
parent
5dd41c2150
commit
591c971f1c
@ -1,11 +1,17 @@
|
|||||||
import type { FC, ReactNode } from 'react';
|
import type { FC, ReactNode } from 'react';
|
||||||
import { styled, Typography } from '@mui/material';
|
import { Box, styled, Typography } from '@mui/material';
|
||||||
import type {
|
import type {
|
||||||
IChangeRequestAddDependency,
|
IChangeRequestAddDependency,
|
||||||
IChangeRequestDeleteDependency,
|
IChangeRequestDeleteDependency,
|
||||||
} from 'component/changeRequest/changeRequest.types';
|
} from 'component/changeRequest/changeRequest.types';
|
||||||
import { Link } from 'react-router-dom';
|
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 }) => ({
|
const StyledLink = styled(Link)(({ theme }) => ({
|
||||||
maxWidth: '100%',
|
maxWidth: '100%',
|
||||||
@ -20,14 +26,62 @@ export const DependencyChange: FC<{
|
|||||||
change: IChangeRequestAddDependency | IChangeRequestDeleteDependency;
|
change: IChangeRequestAddDependency | IChangeRequestDeleteDependency;
|
||||||
projectId: string;
|
projectId: string;
|
||||||
onNavigate?: () => void;
|
onNavigate?: () => void;
|
||||||
|
}> = ({ actions, change, projectId, onNavigate }) => {
|
||||||
|
if (change.action === 'addDependency') {
|
||||||
|
return (
|
||||||
|
<ChangeItemWrapper>
|
||||||
|
<ChangeItemInfo>
|
||||||
|
<Added>Adding dependency</Added>
|
||||||
|
<StyledLink
|
||||||
|
to={`/projects/${projectId}/features/${change.payload.feature}`}
|
||||||
|
onClick={onNavigate}
|
||||||
|
>
|
||||||
|
{change.payload.feature}
|
||||||
|
</StyledLink>
|
||||||
|
{!change.payload.enabled ? ' (disabled)' : null}
|
||||||
|
{change.payload.variants?.length
|
||||||
|
? `(${change.payload.variants?.join(', ')})`
|
||||||
|
: null}
|
||||||
|
{actions}
|
||||||
|
</ChangeItemInfo>
|
||||||
|
</ChangeItemWrapper>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (change.action === 'deleteDependency') {
|
||||||
|
return (
|
||||||
|
<ChangeItemWrapper>
|
||||||
|
<ChangeItemInfo>
|
||||||
|
<Deleted>Deleting dependencies</Deleted>
|
||||||
|
{actions}
|
||||||
|
</ChangeItemInfo>
|
||||||
|
</ChangeItemWrapper>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
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 }) => {
|
}> = ({ actions, change, projectId, onNavigate }) => {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{change.action === 'addDependency' && (
|
{change.action === 'addDependency' && (
|
||||||
<>
|
<>
|
||||||
<ChangeItemWrapper>
|
<LegacyChangeItemWrapper>
|
||||||
<ChangeItemInfo>
|
<AddDependencyWrapper>
|
||||||
<Typography component='span' color={'success.dark'}>
|
<Typography color={'success.dark'}>
|
||||||
+ Adding dependency
|
+ Adding dependency
|
||||||
</Typography>
|
</Typography>
|
||||||
<StyledLink
|
<StyledLink
|
||||||
@ -40,25 +94,23 @@ export const DependencyChange: FC<{
|
|||||||
{change.payload.variants?.length
|
{change.payload.variants?.length
|
||||||
? `(${change.payload.variants?.join(', ')})`
|
? `(${change.payload.variants?.join(', ')})`
|
||||||
: null}
|
: null}
|
||||||
{actions}
|
</AddDependencyWrapper>
|
||||||
</ChangeItemInfo>
|
{actions}
|
||||||
</ChangeItemWrapper>
|
</LegacyChangeItemWrapper>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{change.action === 'deleteDependency' && (
|
{change.action === 'deleteDependency' && (
|
||||||
<ChangeItemWrapper>
|
<ChangeItemWrapper>
|
||||||
<ChangeItemInfo>
|
<AddDependencyWrapper>
|
||||||
<Typography
|
<Typography
|
||||||
sx={(theme) => ({
|
sx={(theme) => ({
|
||||||
color: theme.palette.error.main,
|
color: theme.palette.error.main,
|
||||||
})}
|
})}
|
||||||
component='span'
|
|
||||||
display='inline'
|
|
||||||
>
|
>
|
||||||
- Deleting dependencies
|
- Deleting dependencies
|
||||||
</Typography>
|
</Typography>
|
||||||
{actions}
|
</AddDependencyWrapper>
|
||||||
</ChangeItemInfo>
|
{actions}
|
||||||
</ChangeItemWrapper>
|
</ChangeItemWrapper>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
@ -15,7 +15,10 @@ import {
|
|||||||
ArchiveFeatureChange,
|
ArchiveFeatureChange,
|
||||||
LegacyArchiveFeatureChange,
|
LegacyArchiveFeatureChange,
|
||||||
} from './ArchiveFeatureChange.tsx';
|
} from './ArchiveFeatureChange.tsx';
|
||||||
import { DependencyChange } from './DependencyChange.tsx';
|
import {
|
||||||
|
DependencyChange,
|
||||||
|
LegacyDependencyChange,
|
||||||
|
} from './DependencyChange.tsx';
|
||||||
import { Link } from 'react-router-dom';
|
import { Link } from 'react-router-dom';
|
||||||
import { LegacyReleasePlanChange } from './LegacyReleasePlanChange.tsx';
|
import { LegacyReleasePlanChange } from './LegacyReleasePlanChange.tsx';
|
||||||
import { ReleasePlanChange } from './ReleasePlanChange.tsx';
|
import { ReleasePlanChange } from './ReleasePlanChange.tsx';
|
||||||
@ -107,6 +110,10 @@ export const FeatureChange: FC<{
|
|||||||
? ArchiveFeatureChange
|
? ArchiveFeatureChange
|
||||||
: LegacyArchiveFeatureChange;
|
: LegacyArchiveFeatureChange;
|
||||||
|
|
||||||
|
const DependencyChangeComponent = useDiffableChangeComponent
|
||||||
|
? DependencyChange
|
||||||
|
: LegacyDependencyChange;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StyledSingleChangeBox
|
<StyledSingleChangeBox
|
||||||
key={objectId(change)}
|
key={objectId(change)}
|
||||||
@ -166,7 +173,7 @@ export const FeatureChange: FC<{
|
|||||||
<ChangeInnerBox>
|
<ChangeInnerBox>
|
||||||
{(change.action === 'addDependency' ||
|
{(change.action === 'addDependency' ||
|
||||||
change.action === 'deleteDependency') && (
|
change.action === 'deleteDependency') && (
|
||||||
<DependencyChange
|
<DependencyChangeComponent
|
||||||
actions={actions}
|
actions={actions}
|
||||||
change={change}
|
change={change}
|
||||||
projectId={changeRequest.project}
|
projectId={changeRequest.project}
|
||||||
|
Loading…
Reference in New Issue
Block a user