1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-24 17:51:14 +02:00

chore: add flag, show single button if enabled

This commit is contained in:
Nuno Góis 2025-09-08 11:52:33 +01:00
parent 28cbf7b19e
commit 9fcbe2cec7
No known key found for this signature in database
GPG Key ID: 71ECC689F1091765
4 changed files with 69 additions and 40 deletions

View File

@ -21,6 +21,7 @@ import { formatUnknownError } from 'utils/formatUnknownError';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig'; import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
import { ReleasePlanReviewDialog } from '../../FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx'; import { ReleasePlanReviewDialog } from '../../FeatureView/FeatureOverview/ReleasePlan/ReleasePlanReviewDialog.tsx';
import { FeatureStrategyMenuCards } from './FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx'; import { FeatureStrategyMenuCards } from './FeatureStrategyMenuCards/FeatureStrategyMenuCards.tsx';
import { useUiFlag } from 'hooks/useUiFlag.ts';
interface IFeatureStrategyMenuProps { interface IFeatureStrategyMenuProps {
label: string; label: string;
@ -160,32 +161,13 @@ export const FeatureStrategyMenu = ({
return ( return (
<StyledStrategyMenu onClick={(event) => event.stopPropagation()}> <StyledStrategyMenu onClick={(event) => event.stopPropagation()}>
<> {newStrategyModalEnabled ? (
{displayReleasePlanButton ? (
<PermissionButton
data-testid='ADD_TEMPLATE_BUTTON'
permission={CREATE_FEATURE_STRATEGY}
projectId={projectId}
environmentId={environmentId}
onClick={openReleasePlans}
aria-labelledby={dialogId}
variant='outlined'
sx={{ minWidth: matchWidth ? '282px' : 'auto' }}
disabled={Boolean(disableReason)}
tooltipProps={{
title: disableReason ? disableReason : undefined,
}}
>
Use template
</PermissionButton>
) : null}
<PermissionButton <PermissionButton
data-testid='ADD_STRATEGY_BUTTON' data-testid='ADD_STRATEGY_BUTTON'
permission={CREATE_FEATURE_STRATEGY} permission={CREATE_FEATURE_STRATEGY}
projectId={projectId} projectId={projectId}
environmentId={environmentId} environmentId={environmentId}
onClick={openDefaultStrategyCreationModal} onClick={openMoreStrategies}
aria-labelledby={dialogId} aria-labelledby={dialogId}
variant={variant} variant={variant}
sx={{ minWidth: matchWidth ? '282px' : 'auto' }} sx={{ minWidth: matchWidth ? '282px' : 'auto' }}
@ -194,26 +176,66 @@ export const FeatureStrategyMenu = ({
title: disableReason ? disableReason : undefined, title: disableReason ? disableReason : undefined,
}} }}
> >
{label} Add strategy
</PermissionButton> </PermissionButton>
) : (
<>
{displayReleasePlanButton ? (
<PermissionButton
data-testid='ADD_TEMPLATE_BUTTON'
permission={CREATE_FEATURE_STRATEGY}
projectId={projectId}
environmentId={environmentId}
onClick={openReleasePlans}
aria-labelledby={dialogId}
variant='outlined'
sx={{ minWidth: matchWidth ? '282px' : 'auto' }}
disabled={Boolean(disableReason)}
tooltipProps={{
title: disableReason
? disableReason
: undefined,
}}
>
Use template
</PermissionButton>
) : null}
<StyledAdditionalMenuButton <PermissionButton
permission={CREATE_FEATURE_STRATEGY} data-testid='ADD_STRATEGY_BUTTON'
projectId={projectId} permission={CREATE_FEATURE_STRATEGY}
environmentId={environmentId} projectId={projectId}
onClick={openMoreStrategies} environmentId={environmentId}
variant='outlined' onClick={openDefaultStrategyCreationModal}
hideLockIcon aria-labelledby={dialogId}
disabled={Boolean(disableReason)} variant={variant}
tooltipProps={{ sx={{ minWidth: matchWidth ? '282px' : 'auto' }}
title: disableReason disabled={Boolean(disableReason)}
? disableReason tooltipProps={{
: 'More strategies', title: disableReason ? disableReason : undefined,
}} }}
> >
<MoreVert /> {label}
</StyledAdditionalMenuButton> </PermissionButton>
</>
<StyledAdditionalMenuButton
permission={CREATE_FEATURE_STRATEGY}
projectId={projectId}
environmentId={environmentId}
onClick={openMoreStrategies}
variant='outlined'
hideLockIcon
disabled={Boolean(disableReason)}
tooltipProps={{
title: disableReason
? disableReason
: 'More strategies',
}}
>
<MoreVert />
</StyledAdditionalMenuButton>
</>
)}
<Dialog <Dialog
open={isStrategyMenuDialogOpen} open={isStrategyMenuDialogOpen}
onClose={onClose} onClose={onClose}

View File

@ -87,6 +87,7 @@ export type UiFlags = {
customMetrics?: boolean; customMetrics?: boolean;
impactMetrics?: boolean; impactMetrics?: boolean;
lifecycleGraphs?: boolean; lifecycleGraphs?: boolean;
newStrategyModal?: boolean;
}; };
export interface IVersionInfo { export interface IVersionInfo {

View File

@ -57,7 +57,8 @@ export type IFlagKey =
| 'lifecycleGraphs' | 'lifecycleGraphs'
| 'etagByEnv' | 'etagByEnv'
| 'fetchMode' | 'fetchMode'
| 'optimizeLifecycle'; | 'optimizeLifecycle'
| 'newStrategyModal';
export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>; export type IFlags = Partial<{ [key in IFlagKey]: boolean | Variant }>;
@ -263,6 +264,10 @@ const flags: IFlags = {
false, false,
), ),
}, },
newStrategyModal: parseEnvVarBoolean(
process.env.UNLEASH_EXPERIMENTAL_NEW_STRATEGY_MODAL,
false,
),
}; };
export const defaultExperimentalOptions: IExperimentalOptions = { export const defaultExperimentalOptions: IExperimentalOptions = {

View File

@ -53,6 +53,7 @@ process.nextTick(async () => {
customMetrics: true, customMetrics: true,
impactMetrics: true, impactMetrics: true,
lifecycleGraphs: true, lifecycleGraphs: true,
newStrategyModal: true,
}, },
}, },
authentication: { authentication: {