diff --git a/frontend/src/component/feature/Dependencies/AddDependencyDialogue.tsx b/frontend/src/component/feature/Dependencies/AddDependencyDialogue.tsx
new file mode 100644
index 0000000000..8165c36ded
--- /dev/null
+++ b/frontend/src/component/feature/Dependencies/AddDependencyDialogue.tsx
@@ -0,0 +1,49 @@
+import React, { useState } from 'react';
+import { Box, styled, Typography } from '@mui/material';
+import { Dialogue } from 'component/common/Dialogue/Dialogue';
+import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect';
+
+interface IAddDependencyDialogueProps {
+ showDependencyDialogue: boolean;
+ onClose: () => void;
+}
+
+const StyledSelect = styled(GeneralSelect)(({ theme }) => ({
+ marginTop: theme.spacing(2),
+ marginBottom: theme.spacing(1.5),
+}));
+
+export const AddDependencyDialogue = ({
+ showDependencyDialogue,
+ onClose,
+}: IAddDependencyDialogueProps) => {
+ const [dependency, setDependency] = useState('');
+
+ return (
+ {}}
+ primaryButtonText={'Add'}
+ secondaryButtonText="Cancel"
+ >
+
+ You feature will be evaluated only when the selected parent
+ feature is enabled in the same environment.
+
+
+ What feature do you want to depend on?
+
+
+
+ );
+};
diff --git a/frontend/src/component/feature/FeatureView/FeatureEnvironmentSeen/FeatureEnvironmentSeen.tsx b/frontend/src/component/feature/FeatureView/FeatureEnvironmentSeen/FeatureEnvironmentSeen.tsx
index 00a037dd30..49e67ebd71 100644
--- a/frontend/src/component/feature/FeatureView/FeatureEnvironmentSeen/FeatureEnvironmentSeen.tsx
+++ b/frontend/src/component/feature/FeatureView/FeatureEnvironmentSeen/FeatureEnvironmentSeen.tsx
@@ -105,7 +105,10 @@ export const FeatureEnvironmentSeen = ({
)
}
elseShow={
-
+
}
diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverview.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverview.tsx
index 0e61d6b7e1..d20bf30591 100644
--- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverview.tsx
+++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverview.tsx
@@ -1,6 +1,6 @@
import FeatureOverviewMetaData from './FeatureOverviewMetaData/FeatureOverviewMetaData';
import FeatureOverviewEnvironments from './FeatureOverviewEnvironments/FeatureOverviewEnvironments';
-import { Routes, Route, useNavigate } from 'react-router-dom';
+import { Route, Routes, useNavigate } from 'react-router-dom';
import { FeatureStrategyCreate } from 'component/feature/FeatureStrategy/FeatureStrategyCreate/FeatureStrategyCreate';
import { SidebarModal } from 'component/common/SidebarModal/SidebarModal';
import {
@@ -12,9 +12,6 @@ import { usePageTitle } from 'hooks/usePageTitle';
import { FeatureOverviewSidePanel } from 'component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanel';
import { useHiddenEnvironments } from 'hooks/useHiddenEnvironments';
import { styled } from '@mui/material';
-import { AddDependency } from '../../Dependencies/AddDependency';
-import { useUiFlag } from 'hooks/useUiFlag';
-import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
const StyledContainer = styled('div')(({ theme }) => ({
display: 'flex',
@@ -42,7 +39,6 @@ const FeatureOverview = () => {
useHiddenEnvironments();
const onSidebarClose = () => navigate(featurePath);
usePageTitle(featureId);
- const dependentFeatures = useUiFlag('dependentFeatures');
return (
@@ -54,16 +50,6 @@ const FeatureOverview = () => {
/>
-
- }
- />
-
diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx
new file mode 100644
index 0000000000..5a5612e576
--- /dev/null
+++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.test.tsx
@@ -0,0 +1,30 @@
+import { screen } from '@testing-library/react';
+import { render } from 'utils/testRenderer';
+import { FeatureOverviewSidePanelDetails } from './FeatureOverviewSidePanelDetails';
+import { IFeatureToggle } from 'interfaces/featureToggle';
+import { testServerRoute, testServerSetup } from 'utils/testServer';
+
+const server = testServerSetup();
+
+testServerRoute(server, '/api/admin/ui-config', {
+ flags: {
+ dependentFeatures: true,
+ },
+});
+
+test('show dependency dialogue', async () => {
+ render(
+
+ );
+
+ const addParentButton = await screen.findByText('Add parent feature');
+
+ addParentButton.click();
+
+ expect(
+ screen.getByText('Add parent feature dependency')
+ ).toBeInTheDocument();
+});
diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.tsx
index 85ed4bdda3..46a0a9669c 100644
--- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.tsx
+++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewSidePanel/FeatureOverviewSidePanelDetails/FeatureOverviewSidePanelDetails.tsx
@@ -1,14 +1,20 @@
import { IFeatureToggle } from 'interfaces/featureToggle';
-import { styled } from '@mui/material';
+import { Button, styled, Box } from '@mui/material';
import { useLocationSettings } from 'hooks/useLocationSettings';
import { formatDateYMD } from 'utils/formatDate';
import { parseISO } from 'date-fns';
import { FeatureEnvironmentSeen } from '../../../FeatureEnvironmentSeen/FeatureEnvironmentSeen';
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
+import { Add } from '@mui/icons-material';
+import { useUiFlag } from 'hooks/useUiFlag';
+import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
+import { AddDependencyDialogue } from 'component/feature/Dependencies/AddDependencyDialogue';
+import { useState } from 'react';
const StyledContainer = styled('div')(({ theme }) => ({
display: 'flex',
flexDirection: 'column',
+ justifyItems: 'center',
padding: theme.spacing(3),
fontSize: theme.fontSizes.smallBody,
}));
@@ -40,11 +46,14 @@ export const FeatureOverviewSidePanelDetails = ({
}: IFeatureOverviewSidePanelDetailsProps) => {
const { locationSettings } = useLocationSettings();
const { uiConfig } = useUiConfig();
+ const dependentFeatures = useUiFlag('dependentFeatures');
const showLastSeenByEnvironment = Boolean(
uiConfig.flags.lastSeenByEnvironment
);
+ const [showDependencyDialogue, setShowDependencyDialogue] = useState(false);
+
return (
{header}
@@ -66,6 +75,30 @@ export const FeatureOverviewSidePanelDetails = ({
/>
)}
+
+
+ Dependency:
+ }
+ onClick={() => {
+ setShowDependencyDialogue(true);
+ }}
+ >
+ Add parent feature
+
+
+
+ }
+ />
+ setShowDependencyDialogue(false)}
+ showDependencyDialogue={
+ dependentFeatures && showDependencyDialogue
+ }
+ />
);
};