1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-11-10 01:19:53 +01:00

chore(frontend): remove unused legacy featureoverview component (#10921)

This commit is contained in:
David Leek 2025-11-05 13:11:58 +01:00 committed by GitHub
parent 1030feee38
commit a4885c45a3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,147 +0,0 @@
import { Accordion, AccordionDetails, styled } from '@mui/material';
import type {
IFeatureEnvironment,
IFeatureEnvironmentMetrics,
} from 'interfaces/featureToggle';
import { FeatureStrategyMenu } from 'component/feature/FeatureStrategy/FeatureStrategyMenu/FeatureStrategyMenu';
import { FEATURE_ENVIRONMENT_ACCORDION } from 'utils/testIds';
import { useRequiredPathParam } from 'hooks/useRequiredPathParam';
import { UpgradeChangeRequests } from '../UpgradeChangeRequests/UpgradeChangeRequests.tsx';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import {
environmentAccordionSummaryClassName,
LegacyEnvironmentHeader,
} from '../EnvironmentHeader/LegacyEnvironmentHeader/LegacyEnvironmentHeader.tsx';
import FeatureOverviewEnvironmentMetrics from '../EnvironmentHeader/FeatureOverviewEnvironmentMetrics/FeatureOverviewEnvironmentMetrics.tsx';
import { FeatureOverviewEnvironmentToggle } from '../EnvironmentHeader/FeatureOverviewEnvironmentToggle/FeatureOverviewEnvironmentToggle.tsx';
import { useState } from 'react';
import type { IReleasePlan } from 'interfaces/releasePlans';
import { EnvironmentAccordionBody } from '../EnvironmentAccordionBody/EnvironmentAccordionBody.tsx';
import { Box } from '@mui/material';
import { ReleaseTemplatesFeedback } from 'component/feature/FeatureStrategy/FeatureStrategyMenu/ReleaseTemplatesFeedback/ReleaseTemplatesFeedback';
const StyledFeatureOverviewEnvironment = styled('div')(({ theme }) => ({
borderRadius: theme.shape.borderRadiusLarge,
backgroundColor: theme.palette.background.paper,
border: `1px solid ${theme.palette.divider}`,
}));
const StyledAccordion = styled(Accordion)(({ theme }) => ({
boxShadow: 'none',
background: 'none',
[`&:has(.${environmentAccordionSummaryClassName}:focus-visible)`]: {
background: theme.palette.table.headerHover,
},
}));
const NewStyledAccordionDetails = styled(AccordionDetails)(({ theme }) => ({
padding: 0,
background: theme.palette.background.elevation1,
borderBottomLeftRadius: theme.shape.borderRadiusLarge,
borderBottomRightRadius: theme.shape.borderRadiusLarge,
boxShadow: theme.boxShadows.accordionFooter,
}));
const StyledAccordionFooter = styled('footer')(({ theme }) => ({
padding: theme.spacing(2, 3, 3),
display: 'flex',
flexDirection: 'column',
gap: theme.spacing(2),
}));
const StyledEnvironmentAccordionContainer = styled('div')(({ theme }) => ({
width: '100%',
position: 'relative',
}));
type FeatureOverviewEnvironmentProps = {
environment: IFeatureEnvironment & {
releasePlans?: IReleasePlan[];
};
metrics?: Pick<IFeatureEnvironmentMetrics, 'yes' | 'no'>;
otherEnvironments?: string[];
onToggleEnvOpen?: (isOpen: boolean) => void;
};
export const LegacyFeatureOverviewEnvironment = ({
environment,
metrics = { yes: 0, no: 0 },
otherEnvironments = [],
onToggleEnvOpen = () => {},
}: FeatureOverviewEnvironmentProps) => {
const [isOpen, setIsOpen] = useState(false);
const projectId = useRequiredPathParam('projectId');
const featureId = useRequiredPathParam('featureId');
const { isOss } = useUiConfig();
const hasActivations = Boolean(
environment?.enabled ||
(environment?.strategies && environment?.strategies.length > 0) ||
(environment?.releasePlans && environment?.releasePlans.length > 0),
);
return (
<StyledFeatureOverviewEnvironment>
<StyledAccordion
TransitionProps={{ mountOnEnter: true, unmountOnExit: true }}
data-testid={`${FEATURE_ENVIRONMENT_ACCORDION}_${environment.name}`}
expanded={isOpen && hasActivations}
onChange={() => {
const state = isOpen ? !isOpen : hasActivations;
onToggleEnvOpen(state);
setIsOpen(state);
}}
>
<LegacyEnvironmentHeader
environmentMetadata={{
strategyCount: environment.strategies?.length ?? 0,
releasePlanCount: environment.releasePlans?.length ?? 0,
}}
environmentId={environment.name}
expandable={hasActivations}
>
<FeatureOverviewEnvironmentToggle
environment={environment}
/>
{!hasActivations ? (
<FeatureStrategyMenu
label='Add strategy'
projectId={projectId}
featureId={featureId}
environmentId={environment.name}
variant='outlined'
/>
) : (
<FeatureOverviewEnvironmentMetrics
environmentMetric={metrics}
/>
)}
</LegacyEnvironmentHeader>
<NewStyledAccordionDetails>
<StyledEnvironmentAccordionContainer>
<EnvironmentAccordionBody
featureEnvironment={environment}
isDisabled={!environment.enabled}
otherEnvironments={otherEnvironments}
/>
</StyledEnvironmentAccordionContainer>
<StyledAccordionFooter>
<Box sx={{ display: 'flex', flexDirection: 'row' }}>
<ReleaseTemplatesFeedback />
<Box ml='auto'>
<FeatureStrategyMenu
label='Add strategy'
projectId={projectId}
featureId={featureId}
environmentId={environment.name}
/>
</Box>
</Box>
{isOss() && environment?.type === 'production' ? (
<UpgradeChangeRequests />
) : null}
</StyledAccordionFooter>
</NewStyledAccordionDetails>
</StyledAccordion>
</StyledFeatureOverviewEnvironment>
);
};