From 7da3573edb32e64c1258c1bd35a496c9fbc0ac8f Mon Sep 17 00:00:00 2001 From: Fredrik Strand Oseberg Date: Fri, 8 Oct 2021 16:19:06 +0200 Subject: [PATCH] Feat/visual enhancements (#404) * fix: stale style * fix: execution plan styling * fix: paths * fix: remove console logs * fix: snapshots * fix: add comma * fix: update snapshots --- frontend/src/assets/icons/dots.svg | 16 +++++++++++ .../PercentageCircle/PercentageCircle.tsx | 11 ++++++-- .../FeatureEnvironmentMetrics.tsx | 22 ++++++++------- .../FeatureOverview/FeatureOverview.tsx | 4 +-- .../FeatureOverviewMetaData.tsx | 10 ++++--- .../FeatureOverviewStale.styles.ts | 12 +++++++++ .../FeatureOverviewStale.tsx | 27 ++++++++++++------- .../FeatureOverviewEnvironment.tsx | 1 + .../FeatureOverviewStrategyCard.tsx | 8 +++--- .../FeatureOverviewStrategies.tsx | 4 ++- .../AddTagDialog/AddTagDialog.tsx | 3 ++- .../FeatureOverviewTags.tsx | 8 ++++-- ...tureEnvironmentStrategyExecution.styles.ts | 3 ++- .../FeatureStrategiesConfigure.tsx | 11 ++++++-- ...FeatureStrategiesEnvironmentList.styles.ts | 4 +-- .../FeatureStrategiesEnvironments.tsx | 1 - .../FeatureStrategiesProductionGuard.tsx | 3 +++ .../FeatureStrategyEditable.tsx | 4 +++ .../FeatureStrategyCreateExecution.styles.ts | 3 ++- .../FeatureStrategyExecution.styles.ts | 1 - .../FeatureStrategyExecution.tsx | 5 +++- ...atureStrategyExecutionConstraint.styles.ts | 2 +- .../feature/FeatureView2/FeatureView2.tsx | 20 +++++++++----- .../FeatureViewEnvironment.tsx | 9 ++++--- .../actions/useFeatureApi/useFeatureApi.ts | 15 ++++++----- 25 files changed, 147 insertions(+), 60 deletions(-) create mode 100644 frontend/src/assets/icons/dots.svg diff --git a/frontend/src/assets/icons/dots.svg b/frontend/src/assets/icons/dots.svg new file mode 100644 index 0000000000..1bec57b922 --- /dev/null +++ b/frontend/src/assets/icons/dots.svg @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/frontend/src/component/common/PercentageCircle/PercentageCircle.tsx b/frontend/src/component/common/PercentageCircle/PercentageCircle.tsx index de9d8930e4..7d91220fe7 100644 --- a/frontend/src/component/common/PercentageCircle/PercentageCircle.tsx +++ b/frontend/src/component/common/PercentageCircle/PercentageCircle.tsx @@ -3,9 +3,14 @@ import { useTheme } from '@material-ui/core'; interface IPercentageCircleProps { styles?: object; percentage: number; + secondaryPieColor?: string; } -const PercentageCircle = ({ styles, percentage }: IPercentageCircleProps) => { +const PercentageCircle = ({ + styles, + percentage, + secondaryPieColor, +}: IPercentageCircleProps) => { const theme = useTheme(); let circle = { @@ -14,7 +19,9 @@ const PercentageCircle = ({ styles, percentage }: IPercentageCircleProps) => { borderRadius: '50%', color: '#fff', backgroundColor: theme.palette.grey[200], - backgroundImage: `conic-gradient(${theme.palette.primary.main} ${percentage}%, ${theme.palette.grey[200]} 1%)`, + backgroundImage: `conic-gradient(${ + theme.palette.primary.main + } ${percentage}%, ${secondaryPieColor || theme.palette.grey[200]} 1%)`, }; if (percentage === 100) { diff --git a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureEnvironmentMetrics/FeatureEnvironmentMetrics.tsx b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureEnvironmentMetrics/FeatureEnvironmentMetrics.tsx index cb06d739b2..08dbc95086 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureEnvironmentMetrics/FeatureEnvironmentMetrics.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureEnvironmentMetrics/FeatureEnvironmentMetrics.tsx @@ -51,18 +51,20 @@ const FeatureEnvironmentMetrics = ({ return (
-

Traffic in {metric.name}

+

+ Traffic in {metric.name} +

-

+

No metrics available for this environment.

- +
@@ -72,30 +74,32 @@ const FeatureEnvironmentMetrics = ({ return (
-

Traffic in {metric.name}

+

+ Traffic in {metric.name} +

-
+
-

+

{metric.yes} users received this feature

-
+
-

+

{metric.no} users did not receive this feature

-
+
{
- +
- +
); diff --git a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewMetaData/FeatureOverviewMetaData.tsx b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewMetaData/FeatureOverviewMetaData.tsx index 8339296409..87d2d7f9fc 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewMetaData/FeatureOverviewMetaData.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewMetaData/FeatureOverviewMetaData.tsx @@ -22,18 +22,20 @@ const FeatureOverviewMetaData = () => { return (
-
+
{' '}

{capitalize(type || '')} toggle

- Project: {project} + + Project: {project} + +
Description:

{description}

@@ -47,7 +49,7 @@ const FeatureOverviewMetaData = () => { } elseShow={ - +
No description.{' '} ({ maxWidth: 'none', }, }, + status: { + height: '12.5px', + width: '12.5px', + backgroundColor: theme.palette.success.main, + borderRadius: '50%', + marginLeft: '0.5rem', + }, + statusStale: { + backgroundColor: theme.palette.error.main, + }, staleHeaderContainer: { display: 'flex', alignItems: 'center', @@ -41,6 +51,8 @@ export const useStyles = makeStyles(theme => ({ bodyItem: { margin: '0.5rem 0', fontSize: theme.fontSizes.bodySize, + display: 'flex', + alignItems: 'center', }, headerIcon: { marginRight: '1rem', diff --git a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStale/FeatureOverviewStale.tsx b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStale/FeatureOverviewStale.tsx index 1506313866..841a822ac0 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStale/FeatureOverviewStale.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStale/FeatureOverviewStale.tsx @@ -3,11 +3,11 @@ import classnames from 'classnames'; import useFeature from '../../../../../hooks/api/getters/useFeature/useFeature'; import { useParams } from 'react-router-dom'; import { IFeatureViewParams } from '../../../../../interfaces/params'; -import PermissionIconButton from '../../../../common/PermissionIconButton/PermissionIconButton'; import { UPDATE_FEATURE } from '../../../../AccessProvider/permissions'; -import { Check, Close } from '@material-ui/icons'; import { useState } from 'react'; import StaleDialog from './StaleDialog/StaleDialog'; +import PermissionButton from '../../../../common/PermissionButton/PermissionButton'; +import classNames from 'classnames'; const FeatureOverviewStale = () => { const styles = useStyles(); @@ -15,27 +15,36 @@ const FeatureOverviewStale = () => { const { projectId, featureId } = useParams(); const { feature } = useFeature(projectId, featureId); - const FlipStateButton = () => (feature.stale ? : ); + const flipStateButtonText = () => + feature.stale ? 'Set to active' : 'Set to stale'; + + const statusClasses = classNames(styles.status, { + [styles.statusStale]: feature.stale, + }); return (
-

Status

+

+ Status +

- + Feature is {feature.stale ? 'stale' : 'active'} +
-
- + setOpenStaleDialog(true)} permission={UPDATE_FEATURE} tooltip="Flip status" + variant="text" > - - + {flipStateButtonText()} +
{ return ( - -

{strategyName}

+ +

+ {strategyName} +

+

Rolling out to {parameters?.rollout}%

} diff --git a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStrategies/FeatureOverviewStrategies.tsx b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStrategies/FeatureOverviewStrategies.tsx index d4d8e5cedb..981016befe 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStrategies/FeatureOverviewStrategies.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewStrategies/FeatureOverviewStrategies.tsx @@ -26,7 +26,9 @@ const FeatureOverviewStrategies = () => {
-

Toggle Strategies

+

+ Toggle Strategies +

{ const DEFAULT_TAG: IDefaultTag = { type: 'simple', value: '' }; const styles = useStyles(); const { featureId } = useParams(); - const { addTagToFeature } = useFeatureApi(); + const { addTagToFeature, loading } = useFeatureApi(); const { refetch } = useTags(featureId); const [errors, setErrors] = useState({ tagError: '' }); const { toast, setToastData } = useToast(); @@ -74,6 +74,7 @@ const AddTagDialog = ({ open, setOpen }: IAddTagDialogProps) => { primaryButtonText="Add tag" title="Add tags to feature toggle" onClick={onSubmit} + disabledPrimaryButton={loading} onClose={onCancel} > <> diff --git a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewTags/FeatureOverviewTags.tsx b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewTags/FeatureOverviewTags.tsx index fd8c0729bb..6b1b033679 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewTags/FeatureOverviewTags.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureOverview/FeatureOverviewTags/FeatureOverviewTags.tsx @@ -99,6 +99,7 @@ const FeatureOverviewTags = () => { { @@ -112,7 +113,9 @@ const FeatureOverviewTags = () => {
-

Tags

+

+ Tags +

@@ -120,6 +123,7 @@ const FeatureOverviewTags = () => { onClick={() => setOpenTagDialog(true)} permission={UPDATE_FEATURE} tooltip="Add tag" + data-loading > @@ -143,7 +147,7 @@ const FeatureOverviewTags = () => { 0} show={tags.map(renderTag)} - elseShow={

No tags to display

} + elseShow={

No tags to display

} />
{toast} diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureEnvironmentStrategyExecution/FeatureEnvironmentStrategyExecution.styles.ts b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureEnvironmentStrategyExecution/FeatureEnvironmentStrategyExecution.styles.ts index e36ba867fc..3fe2021802 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureEnvironmentStrategyExecution/FeatureEnvironmentStrategyExecution.styles.ts +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureEnvironmentStrategyExecution/FeatureEnvironmentStrategyExecution.styles.ts @@ -9,9 +9,10 @@ export const useStyles = makeStyles(theme => ({ display: 'flex', flexDirection: 'column', alignItems: 'center', + backgroundColor: theme.palette.grey[100], }, header: { - color: theme.palette.primary.main, + color: theme.palette.grey[700], textAlign: 'center', margin: '0.5rem 0', fontSize: theme.fontSizes.bodySize, diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesConfigure/FeatureStrategiesConfigure.tsx b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesConfigure/FeatureStrategiesConfigure.tsx index 4b6697c2b3..c44bb5c688 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesConfigure/FeatureStrategiesConfigure.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesConfigure/FeatureStrategiesConfigure.tsx @@ -48,7 +48,7 @@ const FeatureStrategiesConfigure = ({ const [strategyParams, setStrategyParams] = useState( configureNewStrategy.parameters ); - const { addStrategyToFeature } = useFeatureStrategyApi(); + const { addStrategyToFeature, loading } = useFeatureStrategyApi(); const handleCancel = () => { setConfigureNewStrategy(null); @@ -71,6 +71,7 @@ const FeatureStrategiesConfigure = ({ }; try { + if (loading) return; const res = await addStrategyToFeature( projectId, featureId, @@ -163,15 +164,21 @@ const FeatureStrategiesConfigure = ({ className={styles.btn} onClick={resolveSubmit} data-test={ADD_NEW_STRATEGY_SAVE_ID} + disabled={loading} > Save -
{ handleSubmit(); diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironmentList/FeatureStrategiesEnvironmentList.styles.ts b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironmentList/FeatureStrategiesEnvironmentList.styles.ts index 2aab924370..dc2e2665f1 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironmentList/FeatureStrategiesEnvironmentList.styles.ts +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironmentList/FeatureStrategiesEnvironmentList.styles.ts @@ -10,9 +10,6 @@ export const useStyles = makeStyles(theme => ({ backgroundColor: theme.palette.primary.light, opacity: '0.75', }, - strategiesContainer: { - maxWidth: '627px', - }, dropbox: { textAlign: 'center', fontSize: theme.fontSizes.smallBody, @@ -39,5 +36,6 @@ export const useStyles = makeStyles(theme => ({ }, environmentList: { marginTop: 0, + marginBottom: 0, }, })); diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironments.tsx b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironments.tsx index d7f2be9f95..3e8fd7752a 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironments.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironments.tsx @@ -59,7 +59,6 @@ const FeatureStrategiesEnvironments = () => { if (addStrategy) { setExpandedSidebar(true); } - console.log(feature); if (!feature) return; if (environmentTab) { diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesProductionGuard/FeatureStrategiesProductionGuard.tsx b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesProductionGuard/FeatureStrategiesProductionGuard.tsx index ca29679a46..265842f2cb 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesProductionGuard/FeatureStrategiesProductionGuard.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesProductionGuard/FeatureStrategiesProductionGuard.tsx @@ -6,6 +6,7 @@ interface IFeatureStrategiesProductionGuard { onClick: () => void; onClose: () => void; primaryButtonText: string; + loading: boolean; } const FeatureStrategiesProductionGuard = ({ @@ -13,6 +14,7 @@ const FeatureStrategiesProductionGuard = ({ onClick, onClose, primaryButtonText, + loading, }: IFeatureStrategiesProductionGuard) => { return ( WARNING. You are about to make changes to a production diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx index 224958a91d..01152b4bd0 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategyEditable/FeatureStrategyEditable.tsx @@ -23,6 +23,7 @@ import { } from '../../../../../../testIds'; import AccessContext from '../../../../../../contexts/AccessContext'; import { UPDATE_FEATURE } from '../../../../../AccessProvider/permissions'; +import useFeatureApi from '../../../../../../hooks/api/actions/useFeatureApi/useFeatureApi'; interface IFeatureStrategyEditable { currentStrategy: IFeatureStrategy; @@ -38,6 +39,7 @@ const FeatureStrategyEditable = ({ index, }: IFeatureStrategyEditable) => { const { hasAccess } = useContext(AccessContext); + const { loading } = useFeatureApi(); const { projectId, featureId } = useParams(); const { activeEnvironment, featureCache, dirty, setDirty } = useContext( @@ -171,12 +173,14 @@ const FeatureStrategyEditable = ({ className={styles.editButton} onClick={updateFeatureStrategy} data-test={UPDATE_STRATEGY_BUTTON_ID} + disabled={loading} > Save changes diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyCreateExecution/FeatureStrategyCreateExecution.styles.ts b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyCreateExecution/FeatureStrategyCreateExecution.styles.ts index 8176219b4a..25a0e446ee 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyCreateExecution/FeatureStrategyCreateExecution.styles.ts +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyCreateExecution/FeatureStrategyCreateExecution.styles.ts @@ -10,9 +10,10 @@ export const useStyles = makeStyles(theme => ({ display: 'flex', flexDirection: 'column', alignItems: 'center', + backgroundColor: theme.palette.grey[100], }, header: { - color: theme.palette.primary.main, + color: theme.palette.grey[600], textAlign: 'center', margin: '0.5rem 0', fontSize: theme.fontSizes.bodySize, diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.styles.ts b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.styles.ts index 250274505c..05a81fb95a 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.styles.ts +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.styles.ts @@ -8,7 +8,6 @@ export const useStyles = makeStyles(theme => ({ marginTop: '0.5rem', width: '100%', }, - constraint: { fontSize: theme.fontSizes.smallBody, alignItems: 'center;', diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.tsx b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.tsx index 9f1e5938a6..3ca59f3bb9 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.tsx @@ -70,7 +70,10 @@ const FeatureStrategyExecution = ({ are included.

- + ); case 'userIds': diff --git a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecutionConstraint/FeatureStrategyExecutionConstraint.styles.ts b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecutionConstraint/FeatureStrategyExecutionConstraint.styles.ts index b19cae9666..31f6bb0bdd 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecutionConstraint/FeatureStrategyExecutionConstraint.styles.ts +++ b/frontend/src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecutionConstraint/FeatureStrategyExecutionConstraint.styles.ts @@ -6,7 +6,7 @@ export const useStyles = makeStyles(theme => ({ alignItems: 'center;', margin: '0.5rem 0', display: 'flex', - border: `1px solid ${theme.palette.grey[300]}`, + border: `1px solid ${theme.palette.grey[600]}`, padding: '0.2rem', borderRadius: '5px', width: '100%', diff --git a/frontend/src/component/feature/FeatureView2/FeatureView2.tsx b/frontend/src/component/feature/FeatureView2/FeatureView2.tsx index 83cde19f3b..49851a7dd6 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureView2.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureView2.tsx @@ -17,16 +17,18 @@ import FeatureStrategies from './FeatureStrategies/FeatureStrategies'; import FeatureVariants from './FeatureVariants/FeatureVariants'; import { useStyles } from './FeatureView2.styles'; import FeatureSettings from './FeatureSettings/FeatureSettings'; +import useLoading from '../../../hooks/useLoading'; const FeatureView2 = () => { const { projectId, featureId } = useParams(); - const { feature } = useFeature(projectId, featureId); + const { feature, loading } = useFeature(projectId, featureId); const { a11yProps } = useTabs(0); const { archiveFeatureToggle } = useFeatureApi(); const { toast, setToastData } = useToast(); const [showDelDialog, setShowDelDialog] = useState(false); const styles = useStyles(); const history = useHistory(); + const ref = useLoading(loading); const basePath = `/projects/${projectId}/features2/${featureId}`; @@ -55,7 +57,7 @@ const FeatureView2 = () => { const tabData = [ { title: 'Overview', - path: `${basePath}/overview`, + path: `${basePath}`, name: 'overview', }, { @@ -81,6 +83,7 @@ const FeatureView2 = () => { return tabData.map((tab, index) => { return ( { }; return ( - <> +
-

{feature.name}

+

+ {feature.name} +

@@ -111,6 +117,7 @@ const FeatureView2 = () => { setShowDelDialog(true)} > @@ -130,7 +137,8 @@ const FeatureView2 = () => {
{ Are you sure you want to archive this feature toggle? {toast} - +
); }; diff --git a/frontend/src/component/feature/FeatureView2/FeatureViewEnvironment/FeatureViewEnvironment.tsx b/frontend/src/component/feature/FeatureView2/FeatureViewEnvironment/FeatureViewEnvironment.tsx index 5433a990ff..656e8cf3ee 100644 --- a/frontend/src/component/feature/FeatureView2/FeatureViewEnvironment/FeatureViewEnvironment.tsx +++ b/frontend/src/component/feature/FeatureView2/FeatureViewEnvironment/FeatureViewEnvironment.tsx @@ -96,19 +96,22 @@ const FeatureViewEnvironment: FC = ({ return (
-
+

{env.type}

+
-

{env.name}

+

+ {env.name} +

-
+
0} show={ diff --git a/frontend/src/hooks/api/actions/useFeatureApi/useFeatureApi.ts b/frontend/src/hooks/api/actions/useFeatureApi/useFeatureApi.ts index 87fa316087..d8e521ca25 100644 --- a/frontend/src/hooks/api/actions/useFeatureApi/useFeatureApi.ts +++ b/frontend/src/hooks/api/actions/useFeatureApi/useFeatureApi.ts @@ -2,7 +2,7 @@ import { ITag } from '../../../../interfaces/tags'; import useAPI from '../useApi/useApi'; const useFeatureApi = () => { - const { makeRequest, createRequest, errors } = useAPI({ + const { makeRequest, createRequest, errors, loading } = useAPI({ propagateErrors: true, }); @@ -146,13 +146,13 @@ const useFeatureApi = () => { const cloneFeatureToggle = async ( projectId: string, featureId: string, - payload: {name: string, replaceGroupId: boolean} + payload: { name: string; replaceGroupId: boolean } ) => { const path = `api/admin/projects/${projectId}/features/${featureId}/clone`; - const req = createRequest( - path, - { method: 'POST', body: JSON.stringify(payload) }, - ); + const req = createRequest(path, { + method: 'POST', + body: JSON.stringify(payload), + }); try { const res = await makeRequest(req.caller, req.id); @@ -172,7 +172,8 @@ const useFeatureApi = () => { deleteTagFromFeature, archiveFeatureToggle, patchFeatureToggle, - cloneFeatureToggle + cloneFeatureToggle, + loading, }; };