discourse/app/assets/stylesheets/mobile/discourse.scss
Alan Guo Xiang Tan 99073338de
FEATURE: Replace hamburger dropdown with Sidebar when undock (#17600)
When the experimental Sidebar is enabled, the hamburger drop down is replaced by a sidebar drop down. A user is given the ability to dock and undock the sidebar depending on their personal preference.

Do also note that the experimental sidebar is well, considered experimental at this point so I do not intend for the features here to be perfect. What I aim to do here is to ship the changes fast so that it can be used internally by the team to provide feedback. Custom links added by plugins and dark mode toggle has not been implemented as part of this commit as I aim to tackle it in another commit.

Co-authored-by: awesomerobot <kris.aubuchon@discourse.org>
2022-07-22 13:06:47 +08:00

194 lines
3.4 KiB
SCSS

// Mobile
// global styles that apply to the Discourse application specifically
// BEWARE: changing these styles implies they take effect anywhere they are seen
// throughout the Discourse application
// Base Elements
body {
background-color: var(--secondary);
}
.ios-device {
textarea {
background-color: var(--secondary);
font-size: var(--font-size-ios-input);
-webkit-tap-highlight-color: transparent;
}
input#reply-title {
-webkit-tap-highlight-color: transparent;
}
}
blockquote {
/* 13px left is intentional here to properly align with post quotes */
padding: 10px 8px 10px 13px;
p {
margin: 0 0 10px 0;
&:last-of-type {
margin-bottom: 0;
}
}
}
// Common classes
.boxed {
.contents {
padding: 10px 0 0 0;
}
}
.control-group {
margin-bottom: 9px;
}
.mobile-nav {
margin: 0;
padding: 0;
list-style: none;
position: relative;
a {
color: var(--primary);
.d-icon {
margin-right: 0.25em;
color: var(--primary-medium);
}
}
> li > a.expander {
display: flex;
align-items: center;
@include form-item-sizing;
border-color: var(--primary-medium);
max-width: 100%;
.selection {
@include ellipsis;
max-width: 120px;
}
> .d-icon {
&:last-of-type {
margin-left: auto;
margin-right: 0;
}
}
}
.drop {
display: none;
&.expanded {
left: 0;
display: block;
position: absolute;
z-index: z("dropdown");
background-color: var(--secondary);
width: 100%;
list-style: none;
margin: 0;
padding: 5px;
border: 1px solid var(--primary-low);
box-sizing: border-box;
li {
margin: 5px 0;
padding: 0;
a {
height: 100%;
display: block;
padding: 5px 8px;
@include ellipsis;
}
}
}
}
}
.form-vertical {
.control-group {
margin-bottom: 12px;
}
}
// Special elements
#main-outlet-wrapper {
margin-left: unset;
margin-right: unset;
}
#main-outlet {
padding-top: 1.25em;
&:after {
// setup overlay for sidebar
content: "";
opacity: 0;
transition: opacity 0.2s;
}
}
#main {
position: relative;
}
// Styles used before the user is logged into discourse. For example, activating
// their account or changing their email.
#simple-container {
width: 90%;
}
// Sidebar styles
#main-outlet-wrapper {
grid-template-columns: minmax(0, 100vw);
grid-template-areas: "content";
gap: 0;
.sidebar-wrapper {
width: 0;
transition: width 0.2s ease-in-out;
z-index: z("modal", "content");
grid-area: content;
justify-self: end;
}
.sidebar-container {
padding-bottom: 6.6em; // extra space to watch out for navbar
}
}
body.has-sidebar-page {
.d-header-wrap {
// edits the z-index when the sidebar is open:
// header
// sidebar & body overlay
// composer
z-index: z("modal", "content") + 1;
}
#main-outlet-wrapper {
.sidebar-wrapper {
width: var(--d-sidebar-width);
margin-right: -10px; // compensate for main-outlet-wrapper padding
}
}
#main-outlet {
&:after {
content: "";
background: rgb(0, 0, 0); // always a black overlay
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: z("modal", "overlay");
opacity: 0.5;
}
}
}