use useEffect to close menu whenever the space panel collapsed state changes

This commit is contained in:
Michael Telatynski 2021-05-27 08:48:21 +01:00
parent 4be8bbeef9
commit 818dfc91ec

View file

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React, {useState} from "react"; import React, { useEffect, useState } from "react";
import classNames from "classnames"; import classNames from "classnames";
import {Room} from "matrix-js-sdk/src/models/room"; import {Room} from "matrix-js-sdk/src/models/room";
@ -127,6 +127,10 @@ const SpacePanel = () => {
const [invites, spaces, activeSpace] = useSpaces(); const [invites, spaces, activeSpace] = useSpaces();
const [isPanelCollapsed, setPanelCollapsed] = useState(true); const [isPanelCollapsed, setPanelCollapsed] = useState(true);
useEffect(() => {
closeMenu();
}, [isPanelCollapsed]); // eslint-disable-line react-hooks/exhaustive-deps
const newClasses = classNames("mx_SpaceButton_new", { const newClasses = classNames("mx_SpaceButton_new", {
mx_SpaceButton_newCancel: menuDisplayed, mx_SpaceButton_newCancel: menuDisplayed,
}); });
@ -221,20 +225,14 @@ const SpacePanel = () => {
space={s} space={s}
activeSpaces={activeSpaces} activeSpaces={activeSpaces}
isPanelCollapsed={isPanelCollapsed} isPanelCollapsed={isPanelCollapsed}
onExpand={() => { onExpand={() => setPanelCollapsed(false)}
closeMenu();
setPanelCollapsed(false);
}}
/>) } />) }
{ spaces.map(s => <SpaceItem { spaces.map(s => <SpaceItem
key={s.roomId} key={s.roomId}
space={s} space={s}
activeSpaces={activeSpaces} activeSpaces={activeSpaces}
isPanelCollapsed={isPanelCollapsed} isPanelCollapsed={isPanelCollapsed}
onExpand={() => { onExpand={() => setPanelCollapsed(false)}
closeMenu();
setPanelCollapsed(false);
}}
/>) } />) }
</div> </div>
<SpaceButton <SpaceButton
@ -249,10 +247,7 @@ const SpacePanel = () => {
</AutoHideScrollbar> </AutoHideScrollbar>
<AccessibleTooltipButton <AccessibleTooltipButton
className={classNames("mx_SpacePanel_toggleCollapse", {expanded: !isPanelCollapsed})} className={classNames("mx_SpacePanel_toggleCollapse", {expanded: !isPanelCollapsed})}
onClick={() => { onClick={() => setPanelCollapsed(!isPanelCollapsed)}
setPanelCollapsed(!isPanelCollapsed);
if (menuDisplayed) closeMenu();
}}
title={expandCollapseButtonTitle} title={expandCollapseButtonTitle}
/> />
{ contextMenu } { contextMenu }