1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-08-04 13:48:56 +02:00

feat: change requests, use new accordion list not legacy (#9825)

This should be final piece where old accordion is used.


![image](https://github.com/user-attachments/assets/854dfab9-4b05-4a14-bb17-0de49705079d)
This commit is contained in:
Jaanus Sellin 2025-04-23 17:37:54 +03:00 committed by GitHub
parent 9977b3e0f8
commit 08c11664ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 42 additions and 14 deletions

View File

@ -1,5 +1,6 @@
import type React from 'react'; import type React from 'react';
import type { FC, ReactNode } from 'react'; import type { FC, ReactNode } from 'react';
import { useRef } from 'react';
import { Box, styled, Typography } from '@mui/material'; import { Box, styled, Typography } from '@mui/material';
import type { import type {
ChangeRequestState, ChangeRequestState,
@ -9,6 +10,12 @@ import type {
import { useSegment } from 'hooks/api/getters/useSegment/useSegment'; import { useSegment } from 'hooks/api/getters/useSegment/useSegment';
import { SegmentDiff, SegmentTooltipLink } from '../../SegmentTooltipLink'; import { SegmentDiff, SegmentTooltipLink } from '../../SegmentTooltipLink';
import { ConstraintAccordionList } from 'component/common/LegacyConstraintAccordion/ConstraintAccordionList/ConstraintAccordionList'; import { ConstraintAccordionList } from 'component/common/LegacyConstraintAccordion/ConstraintAccordionList/ConstraintAccordionList';
import {
NewConstraintAccordionList,
useConstraintAccordionList,
} from 'component/common/NewConstraintAccordion/NewConstraintAccordionList/NewConstraintAccordionList';
import type { IConstraintAccordionListRef } from 'component/common/NewConstraintAccordion/NewConstraintAccordionList/NewConstraintAccordionList';
import { useUiFlag } from 'hooks/useUiFlag';
import { ChangeOverwriteWarning } from './ChangeOverwriteWarning/ChangeOverwriteWarning'; import { ChangeOverwriteWarning } from './ChangeOverwriteWarning/ChangeOverwriteWarning';
const ChangeItemCreateEditWrapper = styled(Box)(({ theme }) => ({ const ChangeItemCreateEditWrapper = styled(Box)(({ theme }) => ({
@ -65,6 +72,9 @@ export const SegmentChangeDetails: FC<{
: currentSegment?.name; : currentSegment?.name;
const referenceSegment = const referenceSegment =
changeRequestState === 'Applied' ? snapshotSegment : currentSegment; changeRequestState === 'Applied' ? snapshotSegment : currentSegment;
const addEditStrategy = useUiFlag('addEditStrategy');
const constraintsRef = useRef<IConstraintAccordionListRef | null>(null);
const { state } = useConstraintAccordionList(undefined, constraintsRef);
return ( return (
<SegmentContainer conflict={change.conflict}> <SegmentContainer conflict={change.conflict}>
@ -113,10 +123,18 @@ export const SegmentChangeDetails: FC<{
</ChangeItemInfo> </ChangeItemInfo>
<div>{actions}</div> <div>{actions}</div>
</ChangeItemCreateEditWrapper> </ChangeItemCreateEditWrapper>
{addEditStrategy ? (
<NewConstraintAccordionList
ref={constraintsRef}
constraints={change.payload.constraints}
state={state}
/>
) : (
<ConstraintAccordionList <ConstraintAccordionList
constraints={change.payload.constraints} constraints={change.payload.constraints}
showLabel={false} showLabel={false}
/> />
)}
</> </>
)} )}
</SegmentContainer> </SegmentContainer>

View File

@ -15,6 +15,7 @@ import { NewConstraintAccordion } from 'component/common/NewConstraintAccordion/
import { ConstraintsList } from 'component/common/ConstraintsList/ConstraintsList'; import { ConstraintsList } from 'component/common/ConstraintsList/ConstraintsList';
import { useUiFlag } from 'hooks/useUiFlag'; import { useUiFlag } from 'hooks/useUiFlag';
import { EditableConstraintWrapper } from 'component/feature/FeatureStrategy/FeatureStrategyConstraints/EditableConstraintWrapper'; import { EditableConstraintWrapper } from 'component/feature/FeatureStrategy/FeatureStrategyConstraints/EditableConstraintWrapper';
import { ConstraintAccordionView } from 'component/common/NewConstraintAccordion/ConstraintAccordionView/ConstraintAccordionView';
export interface IConstraintAccordionListProps { export interface IConstraintAccordionListProps {
constraints: IConstraint[]; constraints: IConstraint[];
@ -150,16 +151,25 @@ export const NewConstraintAccordionList = forwardRef<
<ConstraintsList> <ConstraintsList>
{constraints.map((constraint, index) => {constraints.map((constraint, index) =>
addEditStrategy ? ( addEditStrategy ? (
state.get(constraint)?.editing ? (
<EditableConstraintWrapper <EditableConstraintWrapper
key={constraint[constraintId]} key={constraint[constraintId]}
constraint={constraint} constraint={constraint}
onCancel={onCancel.bind(null, index)} onCancel={onCancel?.bind(null, index)}
onDelete={onRemove?.bind(null, index)} onDelete={onRemove?.bind(null, index)}
onSave={onSave!.bind(null, index)} onSave={onSave!.bind(null, index)}
onAutoSave={onAutoSave?.( onAutoSave={onAutoSave?.(
constraint[constraintId], constraint[constraintId],
)} )}
/> />
) : (
<ConstraintAccordionView
key={constraint[constraintId]}
constraint={constraint}
onEdit={onEdit?.bind(null, constraint)}
onDelete={onRemove?.bind(null, index)}
/>
)
) : ( ) : (
<NewConstraintAccordion <NewConstraintAccordion
key={constraint[constraintId]} key={constraint[constraintId]}