11import React , { useEffect , useState , useContext } from 'react' ;
22import cx from 'classnames' ;
3- import { useNavigate } from 'react-router-dom' ;
3+ import { useParams , Outlet , Link , useNavigate , useLocation } from 'react-router-dom' ;
4+
45import Layout from '@/_ui/Layout' ;
5- import { ManageOrgUsers } from '@/ManageOrgUsers' ;
6- import { ManageGroupPermissions } from '@/ManageGroupPermissions' ;
7- import { ManageOrgVars } from '@/ManageOrgVars' ;
86import { authenticationService } from '@/_services' ;
9- import { CopilotSetting } from '@/CopilotSettings' ;
107import { BreadCrumbContext } from '../App/App' ;
118import FolderList from '@/_ui/FolderList/FolderList' ;
129import { OrganizationList } from '../_components/OrganizationManager/List' ;
1310import { getWorkspaceId } from '@/_helpers/utils' ;
14- import OrganizationLogin from '@/_components/OrganizationLogin/OrganizationLogin' ;
1511
1612export function OrganizationSettings ( props ) {
1713 const [ admin , setAdmin ] = useState ( authenticationService . currentSessionValue ?. admin ) ;
1814 const [ selectedTab , setSelectedTab ] = useState ( admin ? 'Users & permissions' : 'manageEnvVars' ) ;
1915 const navigate = useNavigate ( ) ;
16+ const location = useLocation ( ) ;
2017 const { updateSidebarNAV } = useContext ( BreadCrumbContext ) ;
18+ const { workspaceId } = useParams ( ) ;
2119
2220 const sideBarNavs = [ 'Users' , 'Groups' , 'Workspace login' , 'Workspace variables' ] ;
2321 const defaultOrgName = ( groupName ) => {
2422 switch ( groupName ) {
25- case 'Users ' :
26- return 'Users & permissions ' ;
27- case 'Groups ' :
28- return 'manageGroups ' ;
29- case 'Workspace login' :
30- return 'manageWorkspaceLogin ' ;
31- case 'Workspace variables' :
32- return 'manageEnvVars ' ;
23+ case 'users ' :
24+ return 'Users' ;
25+ case 'groups ' :
26+ return 'Groups ' ;
27+ case 'workspace- login' :
28+ return 'Workspace login ' ;
29+ case 'workspace- variables' :
30+ return 'Workspace variables ' ;
3331 default :
3432 return groupName ;
3533 }
@@ -43,15 +41,20 @@ export function OrganizationSettings(props) {
4341 const subscription = authenticationService . currentSession . subscribe ( ( newOrd ) => {
4442 setAdmin ( newOrd ?. admin ) ;
4543 } ) ;
46- updateSidebarNAV ( 'Users' ) ;
44+ admin ? updateSidebarNAV ( 'Users' ) : updateSidebarNAV ( 'Workspace variables ') ;
4745
4846 ( ) => subscription . unsubsciption ( ) ;
49- // eslint-disable-next-line react-hooks/exhaustive-deps
50- } , [ authenticationService . currentSessionValue ?. admin ] ) ;
51-
52- const goTooOrgConstantsDashboard = ( ) => {
53- navigate ( `/${ getWorkspaceId ( ) } /workspace-constants` ) ;
54- } ;
47+ const selectedTabFromRoute = location . pathname . split ( '/' ) . pop ( ) ;
48+ if ( selectedTabFromRoute === 'workspace-settings' ) {
49+ setSelectedTab ( admin ? 'Users' : 'Workspace variables' ) ;
50+ window . location . href = admin
51+ ? `/${ workspaceId } /workspace-settings/users`
52+ : `/${ workspaceId } /workspace-settings/workspace-variables` ;
53+ } else {
54+ setSelectedTab ( defaultOrgName ( selectedTabFromRoute ) ) ;
55+ }
56+ updateSidebarNAV ( defaultOrgName ( selectedTabFromRoute ) ) ;
57+ } , [ navigate , workspaceId , authenticationService . currentSessionValue ?. admin ] ) ;
5558
5659 return (
5760 < Layout switchDarkMode = { props . switchDarkMode } darkMode = { props . darkMode } >
@@ -60,33 +63,46 @@ export function OrganizationSettings(props) {
6063 < div className = "organization-page-sidebar col " >
6164 < div className = "workspace-nav-list-wrap" >
6265 { sideBarNavs . map ( ( item , index ) => {
66+ const Wrapper = ( { children } ) => < > { children } </ > ;
6367 return (
64- < >
65- { admin && (
66- < FolderList
67- className = "workspace-settings-nav-items"
68- key = { index }
69- onClick = { ( ) => {
70- setSelectedTab ( defaultOrgName ( item ) ) ;
71- if ( item == 'Users' ) updateSidebarNAV ( 'Users' ) ;
72- else updateSidebarNAV ( item ) ;
73- } }
74- selectedItem = { selectedTab == defaultOrgName ( item ) }
75- renderBadgeForItems = { [ 'Workspace constants' ] }
76- renderBadge = { ( ) => (
77- < span
78- style = { { width : '40px' , textTransform : 'lowercase' } }
79- className = "badge bg-color-primary badge-pill"
80- >
81- new
82- </ span >
83- ) }
84- dataCy = { item . toLowerCase ( ) . replace ( / \s + / g, '-' ) }
85- >
86- { item }
87- </ FolderList >
88- ) }
89- </ >
68+ < Wrapper key = { index } >
69+ < Link
70+ to = { `/${ workspaceId } /workspace-settings/${ item . toLowerCase ( ) . replace ( / \s + / g, '-' ) } ` } // Update the URL path here
71+ key = { index }
72+ style = { {
73+ textDecoration : 'none' ,
74+ border : 'none' ,
75+ color : 'inherit' ,
76+ outline : 'none' ,
77+ backgroundColor : 'inherit' ,
78+ } }
79+ >
80+ { admin && (
81+ < FolderList
82+ className = "workspace-settings-nav-items"
83+ key = { index }
84+ onClick = { ( ) => {
85+ setSelectedTab ( defaultOrgName ( item ) ) ;
86+ if ( item == 'Users' ) updateSidebarNAV ( 'Users' ) ;
87+ else updateSidebarNAV ( item ) ;
88+ } }
89+ selectedItem = { selectedTab == defaultOrgName ( item ) }
90+ renderBadgeForItems = { [ 'Workspace constants' ] }
91+ renderBadge = { ( ) => (
92+ < span
93+ style = { { width : '40px' , textTransform : 'lowercase' } }
94+ className = "badge bg-color-primary badge-pill"
95+ >
96+ new
97+ </ span >
98+ ) }
99+ dataCy = { item . toLowerCase ( ) . replace ( / \s + / g, '-' ) }
100+ >
101+ { item }
102+ </ FolderList >
103+ ) }
104+ </ Link >
105+ </ Wrapper >
90106 ) ;
91107 } ) }
92108 </ div >
@@ -95,13 +111,7 @@ export function OrganizationSettings(props) {
95111
96112 < div className = { cx ( 'col workspace-content-wrapper' ) } style = { { paddingTop : '40px' } } >
97113 < div className = "w-100" >
98- { selectedTab === 'Users & permissions' && < ManageOrgUsers darkMode = { props . darkMode } /> }
99- { selectedTab === 'manageGroups' && < ManageGroupPermissions darkMode = { props . darkMode } /> }
100- { selectedTab === 'manageWorkspaceLogin' && < OrganizationLogin /> }
101- { selectedTab === 'manageEnvVars' && (
102- < ManageOrgVars darkMode = { props . darkMode } goTooOrgConstantsDashboard = { goTooOrgConstantsDashboard } />
103- ) }
104- { selectedTab === 'manageCopilot' && < CopilotSetting /> }
114+ < Outlet />
105115 </ div >
106116 </ div >
107117 </ div >
0 commit comments