Skip to content

Commit

Permalink
🚸 Make app grid popup menu toggle visibility when clicking on it (#325)
Browse files Browse the repository at this point in the history
  • Loading branch information
ericlinagora authored and shepilov committed Mar 15, 2024
1 parent ee93c6b commit 948654a
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
27 changes: 13 additions & 14 deletions tdrive/frontend/src/app/components/menus/menu.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,6 @@ export default class Menu extends React.Component {
}
*/

static closeAll() {
MenusManager.closeAllMenus(); // Corrected method name to closeAllMenus()
}

constructor(props) {
super(props);
this.state = {
Expand All @@ -51,21 +47,24 @@ export default class Menu extends React.Component {
MenusManager.openMenu(menu, rect, position);
}

openMenu(evt) {
async openMenu(evt) {
if (this.open) {
this.closeAll();
this.open = false;
MenusManager.closeMenu();
this.setState({ isMenuOpen: false });
} else {
this.open = true;
evt.preventDefault();
evt.stopPropagation();
var elementRect = this.container.current.getBoundingClientRect(); // Fixed getBoundingClientRect()
elementRect.x = elementRect.x || elementRect.left;
elementRect.y = elementRect.y || elementRect.top;
this.previousMenusId = MenusManager.openMenu( // Updated variable name
this.previousMenusId = await MenusManager.openMenu(
this.props.menu,
elementRect,
this.props.position,
);
this.setState({ isMenuOpen: true }, () => this.open = true);
this.open = true;
if (this.props.onOpen) this.props.onOpen();
}
}
Expand All @@ -77,7 +76,7 @@ export default class Menu extends React.Component {

if (
(MenusManager.menus.length === 0 && this.previousMenusNumber > 0) ||
MenusManager.lastOpenedId !== this.previousMenusId // Updated variable name
MenusManager.last_opened_id !== this.previousMenusId
) {
if (this.open && this.props.onClose) {
this.props.onClose();
Expand All @@ -103,18 +102,18 @@ export default class Menu extends React.Component {
<div
ref={this.container}
style={this.props.style}
onClick={(evt) => {
console.log('if this open: ', this.state.isMenuOpen);
onClick={async (evt) => {
if (this.props.toggle) {
if (!this.open) {
this.setState({ ...this.state, isMenuOpen: true });
this.openMenu(evt);
await this.openMenu(evt);
} else {
MenusManager.closeMenu();
this.open = false;
this.setState({ isMenuOpen: false });
this.props.onClose && this.props.onClose();
}
} else {
this.openMenu(evt);
await this.openMenu(evt);
}
}}
className={this.props.className}
Expand Down
1 change: 1 addition & 0 deletions tdrive/frontend/src/app/views/client/common/app-grid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ export default ({ className }: { className?: string }): JSX.Element => {
return (
<Menu
position="bottom"
toggle="true"
menu={[
{
type: 'react-element',
Expand Down

0 comments on commit 948654a

Please sign in to comment.