@@ -16,6 +16,8 @@ import { HeaderButton } from '@atoms/index';
16
16
import { ReactComponent as DoubleChevronLeft } from '@assets/doubleChevronLeft.svg' ;
17
17
import { ReactComponent as PlusPage } from '@assets/plusPage.svg' ;
18
18
import { MenuItem } from '@molecules/index' ;
19
+ import { animated , useSpring } from 'react-spring' ;
20
+ import styled from '@emotion/styled' ;
19
21
20
22
const wrapperCss = ( staticMenuToggle : boolean ) => css `
21
23
position : relative;
@@ -34,7 +36,16 @@ const workspaceCss = () => css`
34
36
width : 100% ;
35
37
color : rgba (55 , 53 , 47 , 0.6 );
36
38
` ;
37
- const buttonsCss = ( ) => css `
39
+ const plusCss = ( staticMenuToggle : boolean ) => css `
40
+ margin-right : ${ staticMenuToggle ? 5 : 0 } px;
41
+ border : 1px solid rgba (55 , 53 , 47 , 0.16 );
42
+ border-radius : 3px ;
43
+ ` ;
44
+ const menuListCss = ( ) => css `
45
+ overflow-y : auto;
46
+ height : calc (100% - 44px );
47
+ ` ;
48
+ const AnimatedButtons = styled ( animated . div ) `
38
49
position: absolute;
39
50
top: 7px;
40
51
right: 0;
@@ -46,15 +57,6 @@ const buttonsCss = () => css`
46
57
margin-right: 14px;
47
58
min-width: 0;
48
59
` ;
49
- const plusCss = ( staticMenuToggle : boolean ) => css `
50
- margin-right : ${ staticMenuToggle ? 5 : 0 } px;
51
- border : 1px solid rgba (55 , 53 , 47 , 0.16 );
52
- border-radius : 3px ;
53
- ` ;
54
- const menuListCss = ( ) => css `
55
- overflow-y : auto;
56
- height : calc (100% - 44px );
57
- ` ;
58
60
59
61
function Menu ( ) : JSX . Element {
60
62
const [ pages , setPages ] = useRecoilState ( pagesState ) ;
@@ -66,6 +68,9 @@ function Menu(): JSX.Element {
66
68
hoveredMenuToggleState ,
67
69
) ;
68
70
const setBlockMap = useSetRecoilState ( blockMapState ) ;
71
+ const buttonStyleProps = useSpring ( {
72
+ opacity : hoveredMenuToggle ? 1 : 0 ,
73
+ } ) ;
69
74
70
75
const CreatingPageHandler = async ( ) => {
71
76
const { pages : updated , page : created } = await createPage ( ) ;
@@ -82,20 +87,18 @@ function Menu(): JSX.Element {
82
87
83
88
return (
84
89
< div css = { wrapperCss ( staticMenuToggle ) } >
85
- { hoveredMenuToggle && (
86
- < div css = { buttonsCss ( ) } >
87
- < div css = { plusCss ( staticMenuToggle ) } >
88
- < HeaderButton clickHandler = { CreatingPageHandler } >
89
- < PlusPage />
90
- </ HeaderButton >
91
- </ div >
92
- { staticMenuToggle && (
93
- < HeaderButton clickHandler = { clickCloseHandler } >
94
- < DoubleChevronLeft />
95
- </ HeaderButton >
96
- ) }
90
+ < AnimatedButtons style = { buttonStyleProps } >
91
+ < div css = { plusCss ( staticMenuToggle ) } >
92
+ < HeaderButton clickHandler = { CreatingPageHandler } >
93
+ < PlusPage />
94
+ </ HeaderButton >
97
95
</ div >
98
- ) }
96
+ { staticMenuToggle && (
97
+ < HeaderButton clickHandler = { clickCloseHandler } >
98
+ < DoubleChevronLeft />
99
+ </ HeaderButton >
100
+ ) }
101
+ </ AnimatedButtons >
99
102
< div css = { workspaceCss ( ) } > WORKSPACE</ div >
100
103
< div css = { menuListCss ( ) } >
101
104
< Suspense fallback = { < div > Loading...</ div > } >
0 commit comments