@@ -58,6 +58,11 @@ import QuickSettingsButton from "./QuickSettingsButton";
5858import { useSettingValue } from "../../../hooks/useSettings" ;
5959import UserMenu from "../../structures/UserMenu" ;
6060import IndicatorScrollbar from "../../structures/IndicatorScrollbar" ;
61+ import { isMac } from "../../../Keyboard" ;
62+ import { useDispatcher } from "../../../hooks/useDispatcher" ;
63+ import defaultDispatcher from "../../../dispatcher/dispatcher" ;
64+ import { ActionPayload } from "../../../dispatcher/payloads" ;
65+ import { Action } from "../../../dispatcher/actions" ;
6166
6267const useSpaces = ( ) : [ Room [ ] , MetaSpace [ ] , Room [ ] , SpaceKey ] => {
6368 const invites = useEventEmitterState < Room [ ] > ( SpaceStore . instance , UPDATE_INVITED_SPACES , ( ) => {
@@ -293,6 +298,12 @@ const SpacePanel = () => {
293298 return ( ) => UIStore . instance . stopTrackingElementDimensions ( "SpacePanel" ) ;
294299 } , [ ] ) ;
295300
301+ useDispatcher ( defaultDispatcher , ( payload : ActionPayload ) => {
302+ if ( payload . action === Action . ToggleSpacePanel ) {
303+ setPanelCollapsed ( ! isPanelCollapsed ) ;
304+ }
305+ } ) ;
306+
296307 return (
297308 < DragDropContext onDragEnd = { result => {
298309 if ( ! result . destination ) return ; // dropped outside the list
@@ -307,7 +318,21 @@ const SpacePanel = () => {
307318 aria-label = { _t ( "Spaces" ) }
308319 ref = { ref }
309320 >
310- < UserMenu isPanelCollapsed = { isPanelCollapsed } />
321+ < UserMenu isPanelCollapsed = { isPanelCollapsed } >
322+ < AccessibleTooltipButton
323+ className = { classNames ( "mx_SpacePanel_toggleCollapse" , { expanded : ! isPanelCollapsed } ) }
324+ onClick = { ( ) => setPanelCollapsed ( ! isPanelCollapsed ) }
325+ title = { isPanelCollapsed ? _t ( "Expand" ) : _t ( "Collapse" ) }
326+ tooltip = { < div >
327+ < div className = "mx_Tooltip_title" >
328+ { isPanelCollapsed ? _t ( "Expand" ) : _t ( "Collapse" ) }
329+ </ div >
330+ < div className = "mx_Tooltip_sub" >
331+ { isMac ? "⌘ + ⇧ + D" : "Ctrl + Shift + D" }
332+ </ div >
333+ </ div > }
334+ />
335+ </ UserMenu >
311336 < Droppable droppableId = "top-level-spaces" >
312337 { ( provided , snapshot ) => (
313338 < IndicatorScrollbar
@@ -327,14 +352,7 @@ const SpacePanel = () => {
327352 </ IndicatorScrollbar >
328353 ) }
329354 </ Droppable >
330- < AccessibleTooltipButton
331- className = { classNames ( "mx_SpacePanel_toggleCollapse" , { expanded : ! isPanelCollapsed } ) }
332- onClick = { ( ) => setPanelCollapsed ( ! isPanelCollapsed ) }
333- title = { isPanelCollapsed ? _t ( "Expand space panel" ) : _t ( "Collapse space panel" ) }
334- forceHide = { ! isPanelCollapsed }
335- >
336- { ! isPanelCollapsed ? _t ( "Collapse" ) : null }
337- </ AccessibleTooltipButton >
355+
338356 { metaSpacesEnabled && < QuickSettingsButton isPanelCollapsed = { isPanelCollapsed } /> }
339357 </ ul >
340358 ) }
0 commit comments