diff --git a/app/assets/javascripts/discourse/app/controllers/application.js b/app/assets/javascripts/discourse/app/controllers/application.js index c07ca32adc9..5dcdab3097b 100644 --- a/app/assets/javascripts/discourse/app/controllers/application.js +++ b/app/assets/javascripts/discourse/app/controllers/application.js @@ -8,11 +8,6 @@ export default Controller.extend({ router: service(), showSidebar: true, - @discourseComputed("showSidebar", "currentUser.experimental_sidebar_enabled") - mainOutletWrapperClasses(showSidebar, experimentalSidebarEnabled) { - return showSidebar && experimentalSidebarEnabled ? "has-sidebar" : ""; - }, - @discourseComputed canSignUp() { return ( diff --git a/app/assets/javascripts/discourse/app/templates/application.hbs b/app/assets/javascripts/discourse/app/templates/application.hbs index 7e16b0f9106..1a8cf13f5e0 100644 --- a/app/assets/javascripts/discourse/app/templates/application.hbs +++ b/app/assets/javascripts/discourse/app/templates/application.hbs @@ -15,9 +15,9 @@ {{plugin-outlet name="below-site-header" connectorTagName="div" args=(hash currentPath=router._router.currentPath)}} - <div id="main-outlet-wrapper" class="wrap {{mainOutletWrapperClasses}}" role="main"> - {{#if currentUser.experimental_sidebar_enabled}} - <Sidebar @shouldDisplay={{showSidebar}} /> + <div id="main-outlet-wrapper" class="wrap" role="main"> + {{#if (and currentUser.experimental_sidebar_enabled showSidebar)}} + <Sidebar /> {{/if}} <div id="main-outlet"> diff --git a/app/assets/javascripts/discourse/app/templates/components/sidebar.hbs b/app/assets/javascripts/discourse/app/templates/components/sidebar.hbs index ee690e68081..1f1e8160fa3 100644 --- a/app/assets/javascripts/discourse/app/templates/components/sidebar.hbs +++ b/app/assets/javascripts/discourse/app/templates/components/sidebar.hbs @@ -1,16 +1,14 @@ -{{#if @shouldDisplay}} - <div class="sidebar-wrapper"> - <div class="sidebar-container"> - <Sidebar::TopicsSection /> - <Sidebar::CategoriesSection /> +{{#d-section pageClass="has-sidebar" class="sidebar-wrapper"}} + <div class="sidebar-container"> + <Sidebar::TopicsSection /> + <Sidebar::CategoriesSection /> - {{#if this.siteSettings.tagging_enabled}} - <Sidebar::TagsSection /> - {{/if}} + {{#if this.siteSettings.tagging_enabled}} + <Sidebar::TagsSection /> + {{/if}} - {{#if this.siteSettings.enable_personal_messages}} - <Sidebar::MessagesSection /> - {{/if}} - </div> + {{#if this.siteSettings.enable_personal_messages}} + <Sidebar::MessagesSection /> + {{/if}} </div> -{{/if}} +{{/d-section}} diff --git a/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js b/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js index 69424130d52..eb05d0b5749 100644 --- a/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js +++ b/app/assets/javascripts/discourse/tests/acceptance/sidebar-test.js @@ -8,7 +8,12 @@ acceptance("Sidebar - Anon User", function () { test("sidebar is not displayed", async function (assert) { await visit("/"); - assert.ok(!exists("#main-outlet-wrapper.has-sidebar")); + assert.strictEqual( + document.querySelectorAll("body.has-sidebar-page").length, + 0, + "does not add sidebar utility class to body" + ); + assert.ok(!exists(".sidebar-wrapper")); }); }); @@ -19,7 +24,12 @@ acceptance("Sidebar - User with sidebar disabled", function (needs) { test("sidebar is not displayed", async function (assert) { await visit("/"); - assert.ok(!exists("#main-outlet-wrapper.has-sidebar")); + assert.strictEqual( + document.querySelectorAll("body.has-sidebar-page").length, + 0, + "does not add sidebar utility class to body" + ); + assert.ok(!exists(".sidebar-wrapper")); }); }); @@ -30,18 +40,20 @@ acceptance("Sidebar - User with sidebar enabled", function (needs) { test("hiding and displaying sidebar", async function (assert) { await visit("/"); - assert.ok( - exists("#main-outlet-wrapper.has-sidebar"), - "adds sidebar utility class on main outlet wrapper" + assert.strictEqual( + document.querySelectorAll("body.has-sidebar-page").length, + 1, + "adds sidebar utility class to body" ); assert.ok(exists(".sidebar-wrapper"), "displays the sidebar by default"); await click(".header-sidebar-toggle .btn"); - assert.ok( - !exists("#main-outlet-wrapper.has-sidebar"), - "removes sidebar utility class from main outlet wrapper" + assert.strictEqual( + document.querySelectorAll("body.has-sidebar-page").length, + 0, + "removes sidebar utility class to body" ); assert.ok(!exists(".sidebar-wrapper"), "hides the sidebar"); diff --git a/app/assets/stylesheets/desktop/discourse.scss b/app/assets/stylesheets/desktop/discourse.scss index 22ad6fb6be8..cdd053d58db 100644 --- a/app/assets/stylesheets/desktop/discourse.scss +++ b/app/assets/stylesheets/desktop/discourse.scss @@ -191,13 +191,13 @@ input { grid-template-columns: minmax(0, 1fr); gap: 0; - &.has-sidebar { - grid-template-areas: "sidebar content"; - grid-template-columns: 240px 1fr; - gap: 0 2em; - } - #main-outlet { grid-area: content; } } + +body.has-sidebar-page #main-outlet-wrapper { + grid-template-areas: "sidebar content"; + grid-template-columns: 240px 1fr; + gap: 0 2em; +}