@@ -36,9 +36,12 @@ const InnerMenu = styled.div`
3636 position: absolute;
3737 padding: 0.32rem;
3838 font-size: 0.85rem;
39- top: 70px;
4039 box-shadow: 0 0 5px 0 lightgrey;
41- right: ${ ( props ) => ( props . $leftAligned ? "0%" : "61%" ) } ;
40+ right: ${ ( props ) => ( props . $leftAligned ? "-61%" : "61%" ) } ;
41+ ${ ( props ) =>
42+ props . $floattop
43+ ? "bottom: 100%; top: unset;"
44+ : "top: 100%; bottom: unset;" }
4245` ;
4346
4447const NameContainer = styled . p `
@@ -64,7 +67,7 @@ const LogoutButton = styled.div`
6467` ;
6568
6669const TriangleUp = styled . div `
67- transform: ${ ( { down } ) => ( down ? "rotate(180deg)" : "rotate(0)" ) } ;
70+ transform: ${ ( { $ down } ) => ( $ down ? "rotate(180deg)" : "rotate(0)" ) } ;
6871 width: 0;
6972 height: 0;
7073 border-left: 5px solid transparent;
@@ -84,13 +87,13 @@ const LogoutDropdownContainer = styled.div`
8487const LogoutDropdownMenu = styled . div `
8588 min-width: 7rem !important;
8689 margin-top: 0;
87- display: ${ ( { selected } ) => ( selected ? "block" : "none" ) } ;
90+ display: ${ ( { $ selected } ) => ( $ selected ? "block" : "none" ) } ;
8891 left: 0;
8992 min-width: 12rem;
90- ${ ( { floattop } ) =>
91- floattop ? "padding-bottom: 4px" : "padding-top: 4px" } ;
93+ ${ ( { $ floattop } ) =>
94+ $ floattop ? "padding-bottom: 4px" : "padding-top: 4px" } ;
9295 position: absolute;
93- ${ ( { floattop } ) => ( floattop ? "bottom: 100%" : "top: 100%" ) } ;
96+ ${ ( { $ floattop } ) => ( $ floattop ? "bottom: 100%" : "top: 100%" ) } ;
9497 z-index: 20;
9598` ;
9699
@@ -123,6 +126,30 @@ const UserSelector = ({
123126 setSelected ( false ) ;
124127 } , ! selected ) ;
125128
129+ const menuContent = (
130+ < InnerMenu $leftAligned = { leftAligned } $floattop = { dropdownTop } >
131+ < NameContainer >
132+ { " " }
133+ { firstName } { lastName } { " " }
134+ </ NameContainer >
135+ < EmailContainer > { username } </ EmailContainer >
136+ < LogoutButton
137+ role = "button"
138+ onClick = { ( ) => {
139+ fetch ( "/accounts/logout/" , {
140+ method : "GET" ,
141+ redirect : "follow" ,
142+ } ) . then ( onLogout ) ;
143+ } }
144+ >
145+ Logout
146+ < LogoutIconContainer >
147+ < i className = "fas fa-sign-out-alt" />
148+ </ LogoutIconContainer >
149+ </ LogoutButton >
150+ </ InnerMenu >
151+ ) ;
152+
126153 return (
127154 < Dropdown ref = { onClickOutside } >
128155 < NameBubble
@@ -139,32 +166,21 @@ const UserSelector = ({
139166 </ span >
140167 </ NameBubble >
141168 < LogoutDropdownMenu
142- selected = { selected }
143- floattop = { dropdownTop . toString ( ) }
169+ $ selected= { selected }
170+ $ floattop= { dropdownTop }
144171 >
145172 < LogoutDropdownContainer className = "dropdown-menu-container" >
146- < TriangleUp down = { dropdownTop . toString ( ) } />
147- < InnerMenu $leftAligned = { leftAligned } >
148- < NameContainer >
149- { " " }
150- { firstName } { lastName } { " " }
151- </ NameContainer >
152- < EmailContainer > { username } </ EmailContainer >
153- < LogoutButton
154- role = "button"
155- onClick = { ( ) => {
156- fetch ( "/accounts/logout/" , {
157- method : "GET" ,
158- redirect : "follow" ,
159- } ) . then ( onLogout ) ;
160- } }
161- >
162- Logout
163- < LogoutIconContainer >
164- < i className = "fas fa-sign-out-alt" />
165- </ LogoutIconContainer >
166- </ LogoutButton >
167- </ InnerMenu >
173+ { dropdownTop ? (
174+ < >
175+ { menuContent }
176+ < TriangleUp $down = { dropdownTop } />
177+ </ >
178+ ) : (
179+ < >
180+ < TriangleUp $down = { dropdownTop } />
181+ { menuContent }
182+ </ >
183+ ) }
168184 </ LogoutDropdownContainer >
169185 </ LogoutDropdownMenu >
170186 </ Dropdown >
0 commit comments