File tree Expand file tree Collapse file tree 2 files changed +48
-0
lines changed 
packages/site/src/app/routes/layout Expand file tree Collapse file tree 2 files changed +48
-0
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,9 @@ import { DCustomIcon, GithubOutlined } from '@react-devui/icons';
1010import  {  DDropdown ,  DMenu ,  DSeparator  }  from  '@react-devui/ui' ; 
1111import  {  getClassName  }  from  '@react-devui/utils' ; 
1212
13+ import  {  environment  }  from  '../../../environments/environment' ; 
14+ import  {  AppVersions  }  from  './Versions' ; 
15+ 
1316export  interface  AppHeaderProps  { 
1417  menuOpen : boolean ; 
1518  onMenuOpenChange : ( open : boolean )  =>  void ; 
@@ -46,6 +49,7 @@ export function AppHeader(props: AppHeaderProps): JSX.Element | null {
4649          < div > </ div > 
4750        </ div > 
4851      </ button > 
52+       { environment . production  &&  < AppVersions  /> } 
4953      < DMenu 
5054        className = "d-none d-md-inline-block app-layout-header__menu" 
5155        dList = { [ 
Original file line number Diff line number Diff line change 1+ import  axios  from  'axios' ; 
2+ import  {  useState  }  from  'react' ; 
3+ import  {  useLocation  }  from  'react-router-dom' ; 
4+ 
5+ import  {  useMount  }  from  '@react-devui/hooks' ; 
6+ import  {  DownOutlined  }  from  '@react-devui/icons' ; 
7+ import  {  DButton ,  DDropdown  }  from  '@react-devui/ui' ; 
8+ 
9+ export  function  AppVersions ( ) : JSX . Element  |  null  { 
10+   const  location  =  useLocation ( ) ; 
11+ 
12+   const  version  =  ( ( )  =>  { 
13+     const  v  =  window . location . host . match ( / ^ v [ 0 - 9 ] + / ) ; 
14+     return  v  ? v [ 0 ]  : 'main' ; 
15+   } ) ( ) ; 
16+   const  [ versions ,  setVersions ]  =  useState < string [ ] > ( ( )  =>  { 
17+     if  ( version  ===  'main' )  { 
18+       return  [ 'main' ] ; 
19+     }  else  { 
20+       return  [ 'main' ,  version ] ; 
21+     } 
22+   } ) ; 
23+   useMount ( ( )  =>  { 
24+     axios . get ( '/api/versions' ) . then ( ( response )  =>  { 
25+       setVersions ( [ 'main' ,  ...( response . data  as  number [ ] ) . map ( ( v )  =>  `v${ v }  ) ] ) ; 
26+     } ) ; 
27+   } ) ; 
28+ 
29+   return  ( 
30+     < DDropdown 
31+       dList = { versions . map ( ( v )  =>  ( {  id : v ,  label : v ,  type : 'item'  } ) ) } 
32+       onItemClick = { ( id )  =>  { 
33+         window . location  =  ( ( id  ===  'main'  ? 'https://react-devui.com'  : `https://${ id }  )  +  location . pathname )  as  any ; 
34+       } } 
35+     > 
36+       < DButton  dType = "text" > 
37+         < div  className = "d-flex align-items-center" > 
38+           { version } 
39+           < DownOutlined  style = { {  position : 'relative' ,  top : 2 ,  marginLeft : 2  } }  dSize = { 12 }  /> 
40+         </ div > 
41+       </ DButton > 
42+     </ DDropdown > 
43+   ) ; 
44+ } 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments