@@ -7,12 +7,10 @@ import { CenterType } from 'react-spaces';
77
88export const UI = ( ) => {
99 return (
10- < div className = "ui-demo" >
11- < Space . ViewPort >
10+ < Space . ViewPort className = "ui-demo" >
1211 < Header />
1312 < Main />
1413 </ Space . ViewPort >
15- </ div >
1614 )
1715}
1816
@@ -28,18 +26,21 @@ const Header = () => {
2826}
2927
3028const Main = ( ) => {
29+ const [ sidebarVisible , setSidebarVisible ] = React . useState ( true ) ;
30+ const [ sidebarWide , setSidebarWide ] = React . useState ( false ) ;
31+
3132 return (
3233 < Space . Fill style = { { backgroundColor : '#1E1E1E' } } >
3334 < Space . Fill >
3435 < IconPane />
35- < SideBar />
36- < Editor />
36+ < SideBar wide = { sidebarWide } visible = { sidebarVisible } />
37+ < Editor toggleSize = { ( ) => setSidebarWide ( ! sidebarWide ) } toggleVisibility = { ( ) => setSidebarVisible ( ! sidebarVisible ) } />
3738 </ Space . Fill >
3839 </ Space . Fill >
3940 )
4041}
4142
42- const Editor = ( ) => {
43+ const Editor : React . FC < { toggleVisibility : ( ) => void , toggleSize : ( ) => void } > = ( props ) => {
4344 const [ code , setCode ] = React . useState ( 'import * as React from \'react\';\r\nimport * as Space from \'react-spaces\';\r\n\r\nexport const App = () => {\r\n <Space.ViewPort>\r\n <Space.Top size={30}>\r\n Hello!\r\n </Space.Top>\r\n <Space.Fill>\r\n World!\r\n </Space.Fill>\r\n </Space.ViewPort>\r\n}' ) ;
4445
4546 const options = {
@@ -61,7 +62,7 @@ const Editor = () => {
6162 theme = "vs-dark" />
6263 </ Space . Fill >
6364 </ Space . Fill >
64- < BottomPane />
65+ < BottomPane toggleSize = { props . toggleSize } toggleVisibility = { props . toggleVisibility } />
6566 </ Space . Fill >
6667 )
6768}
@@ -73,9 +74,10 @@ const IconPane = () => {
7374 )
7475}
7576
76- const SideBar = ( ) => {
77+ const SideBar : React . FC < { wide : boolean , visible : boolean } > = ( props ) => {
7778 return (
78- < Space . LeftResizable order = { 2 } className = "side-bar" size = { 300 } handleSize = { 2 } overlayHandle = { false } style = { { backgroundColor : '#252526' } } >
79+ props . visible ?
80+ < Space . LeftResizable order = { 2 } className = "side-bar" size = { props . wide ? 500 : 300 } handleSize = { 2 } overlayHandle = { false } style = { { backgroundColor : '#252526' } } >
7981 < SideBarPane order = { 1 } title = "Open editors" height = { 200 } >
8082
8183 </ SideBarPane >
@@ -85,7 +87,8 @@ const SideBar = () => {
8587 < SideBarPane fill = { true } title = "Outline" >
8688
8789 </ SideBarPane >
88- </ Space . LeftResizable >
90+ </ Space . LeftResizable > :
91+ null
8992 )
9093}
9194
@@ -117,9 +120,11 @@ const SideBarPaneInner: React.FC<{ title: string }> = (props) => {
117120 )
118121}
119122
120- const BottomPane = ( ) => {
123+ const BottomPane : React . FC < { toggleVisibility : ( ) => void , toggleSize : ( ) => void } > = ( props ) => {
121124 return (
122- < Space . BottomResizable className = "bottom-pane" size = "25%" handleSize = { 2 } >
125+ < Space . BottomResizable className = "bottom-pane" size = "25%" handleSize = { 2 } centerContent = { Space . CenterType . HorizontalVertical } >
126+ < button onClick = { props . toggleVisibility } > Toggle sidebar visibility</ button >
127+ < button onClick = { props . toggleSize } > Toggle sidebar size</ button >
123128 </ Space . BottomResizable >
124129 )
125130}
0 commit comments