This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/app/controllers/application.js
Krzysztof Kotlarek 46c44a3b0f
FIX: toggle sidebar when back from narrow screen (#19215)
When sidebar was enabled before going to narrow screen, it should be brought back when screen is enlarged.

Also, narrow screen value is changed to 1000px instead of 1100px.
2022-11-28 13:13:36 +11:00

127 lines
2.9 KiB
JavaScript

import Controller from "@ember/controller";
import discourseComputed from "discourse-common/utils/decorators";
import discourseDebounce from "discourse-common/lib/debounce";
import { inject as service } from "@ember/service";
import { action } from "@ember/object";
const HIDE_SIDEBAR_KEY = "sidebar-hidden";
export default Controller.extend({
queryParams: [{ sidebarQueryParamOverride: "enable_sidebar" }],
showTop: true,
showFooter: false,
router: service(),
showSidebar: false,
sidebarQueryParamOverride: null,
sidebarDisabledRouteOverride: false,
showSiteHeader: true,
init() {
this._super(...arguments);
this.showSidebar = this.calculateShowSidebar();
},
@discourseComputed
canSignUp() {
return (
!this.siteSettings.invite_only &&
this.siteSettings.allow_new_registrations &&
!this.siteSettings.enable_discourse_connect
);
},
@discourseComputed
canDisplaySidebar() {
return this.currentUser || !this.siteSettings.login_required;
},
@discourseComputed
loginRequired() {
return this.siteSettings.login_required && !this.currentUser;
},
@discourseComputed(
"siteSettings.bootstrap_mode_enabled",
"router.currentRouteName"
)
showBootstrapModeNotice(bootstrapModeEnabled, currentRouteName) {
return (
this.currentUser?.get("staff") &&
bootstrapModeEnabled &&
!currentRouteName.startsWith("wizard")
);
},
@discourseComputed
showFooterNav() {
return this.capabilities.isAppWebview || this.capabilities.isiOSPWA;
},
_mainOutletAnimate() {
document.querySelector("body").classList.remove("sidebar-animate");
},
@discourseComputed(
"sidebarQueryParamOverride",
"siteSettings.enable_sidebar",
"canDisplaySidebar",
"sidebarDisabledRouteOverride"
)
sidebarEnabled(
sidebarQueryParamOverride,
enableSidebar,
canDisplaySidebar,
sidebarDisabledRouteOverride
) {
if (!canDisplaySidebar) {
return false;
}
if (sidebarDisabledRouteOverride) {
return false;
}
if (sidebarQueryParamOverride === "1") {
return true;
}
if (sidebarQueryParamOverride === "0") {
return false;
}
// Always return dropdown on mobile
if (this.site.mobileView) {
return false;
}
return enableSidebar;
},
calculateShowSidebar() {
return (
this.canDisplaySidebar &&
!this.keyValueStore.getItem(HIDE_SIDEBAR_KEY) &&
!this.site.narrowDesktopView
);
},
@action
toggleSidebar() {
// enables CSS transitions, but not on did-insert
document.querySelector("body").classList.add("sidebar-animate");
discourseDebounce(this, this._mainOutletAnimate, 250);
this.toggleProperty("showSidebar");
if (this.site.desktopView) {
if (this.showSidebar) {
this.keyValueStore.removeItem(HIDE_SIDEBAR_KEY);
} else {
this.keyValueStore.setItem(HIDE_SIDEBAR_KEY, "true");
}
}
},
});