FIX: Close user menu on navigation (#26131)

This commit is contained in:
Jarek Radosz 2024-03-11 20:46:11 +01:00 committed by GitHub
parent 47d1703b67
commit a65e3c5870
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 4 deletions

View File

@ -8,6 +8,7 @@ import UserMenuTab, { CUSTOM_TABS_CLASSES } from "discourse/lib/user-menu/tab";
import { NO_REMINDER_ICON } from "discourse/models/bookmark";
import deprecated from "discourse-common/lib/deprecated";
import getUrl from "discourse-common/lib/get-url";
import { bind } from "discourse-common/utils/decorators";
import UserMenuBookmarksList from "./bookmarks-list";
import UserMenuLikesNotificationsList from "./likes-notifications-list";
import UserMenuMessagesList from "./messages-list";
@ -187,15 +188,31 @@ function resolvePanelComponent(owner, panelComponent) {
}
export default class UserMenu extends Component {
@service currentUser;
@service siteSettings;
@service site;
@service appEvents;
@service currentUser;
@service router;
@service site;
@service siteSettings;
@tracked currentTabId = DEFAULT_TAB_ID;
@tracked currentPanelComponent = DEFAULT_PANEL_COMPONENT;
@tracked currentNotificationTypes;
constructor() {
super(...arguments);
this.router.on("routeDidChange", this.onRouteChange);
}
willDestroy() {
super.willDestroy(...arguments);
this.router.off("routeDidChange", this.onRouteChange);
}
@bind
onRouteChange() {
this.args.closeUserMenu();
}
get classNames() {
let classes = ["user-menu", "revamped", "menu-panel", "drop-down"];
if (this.siteSettings.show_user_menu_avatars) {

View File

@ -1,5 +1,11 @@
import { later } from "@ember/runloop";
import { click, currentURL, triggerKeyEvent, visit } from "@ember/test-helpers";
import {
click,
currentRouteName,
currentURL,
triggerKeyEvent,
visit,
} from "@ember/test-helpers";
import { test } from "qunit";
import { Promise } from "rsvp";
import DButton from "discourse/components/d-button";
@ -872,6 +878,16 @@ acceptance("User menu", function (needs) {
"the other notifications panel can display using keyboard navigation"
);
});
test("closes the menu when navigating away", async function (assert) {
await visit("/");
await click(".d-header-icons .current-user");
await click("#user-menu-button-profile");
await click(".quick-access-panel .preferences a");
assert.dom(".user-menu").doesNotExist();
assert.strictEqual(currentRouteName(), "preferences.account");
});
});
acceptance("User menu - Dismiss button", function (needs) {