You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Connected.Components/Styles/layout/_drawer.scss

390 lines
11 KiB

2 years ago
@import '../abstracts/variables';
.drawer {
display: flex;
flex-shrink: 0;
flex-grow: 1;
flex: 0 0 auto;
outline: 0;
position: fixed;
z-index: var(--zindex-drawer);
overflow-y: auto;
flex-direction: column;
color: var(--palette-drawer-text);
background-color: var(--palette-drawer-background);
--drawer-content-height: 0;
.drawer-content {
height: 100%;
max-height: 100%;
display: flex;
flex-shrink: 0;
flex-grow: 1;
flex: 0 0 auto;
flex-direction: column;
}
&:not(.drawer-fixed) {
position: absolute;
}
@each $breakpoint in map-keys($breakpoints) {
&.drawer-mini.drawer-#{$breakpoint}:not(.drawer--closed), &.drawer-responsive.drawer-#{$breakpoint} {
@media (max-width: map-get($breakpoints, $breakpoint) - 1px) {
z-index: calc(var(--zindex-appbar) + 2);
&.drawer--initial:not(.drawer-mini) {
display: none !important;
}
}
}
}
&.drawer-responsive, &.drawer-persistent {
height: 100%;
&.drawer-pos-left {
right: auto;
width: var(--drawer-width, var(--drawer-width-left));
&.drawer--open {
left: 0;
&:not(.drawer--initial) {
animation: drawer-slide-in-left 225ms cubic-bezier(0, 0, 0.2, 1);
}
}
&.drawer--closed {
box-shadow: none;
left: calc(-1 * var(--drawer-width, var(--drawer-width-left)));
&:not(.drawer--initial) {
animation: drawer-slide-out-left 225ms cubic-bezier(0, 0, 0.2, 1);
}
}
}
&.drawer-pos-right {
left: auto;
width: var(--drawer-width, var(--drawer-width-right));
&.drawer--open {
right: 0;
&:not(.drawer--initial) {
animation: drawer-slide-in-right 225ms cubic-bezier(0, 0, 0.2, 1);
}
}
&.drawer--closed {
box-shadow: none;
right: calc(-1 * var(--drawer-width, var(--drawer-width-right)));
&:not(.drawer--initial) {
animation: drawer-slide-out-right 225ms cubic-bezier(0, 0, 0.2, 1);
}
}
}
}
&.drawer-mini {
height: 100%;
transition: width 225ms cubic-bezier(0, 0, 0.2, 1);
&.drawer-pos-left {
left: 0;
right: auto;
&.drawer--closed {
width: var(--drawer-width-mini-left);
}
&.drawer--open {
width: var(--drawer-width-left);
}
}
&.drawer-pos-right {
left: auto;
right: 0;
&.drawer--closed {
width: var(--drawer-width-mini-right);
}
&.drawer--open {
width: var(--drawer-width-right);
}
}
}
&.drawer-temporary {
margin: 0 !important;
z-index: calc(var(--zindex-appbar) + 2);
transition: transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms;
&.drawer-pos-left {
right: auto;
top: 0;
height: 100%;
width: var(--drawer-width, var(--drawer-width-left));
&.drawer--open {
left: 0;
&:not(.drawer--initial) {
animation: drawer-slide-in-left 225ms cubic-bezier(0, 0, 0.2, 1)forwards;
}
}
&.drawer--closed {
left: calc(-1 * var(--drawer-width, var(--drawer-width-left)));
&:not(.drawer--initial) {
animation: drawer-slide-out-left 225ms cubic-bezier(0, 0, 0.2, 1)forwards;
}
}
}
&.drawer-pos-right {
left: auto;
top: 0;
height: 100%;
width: var(--drawer-width, var(--drawer-width-right));
&.drawer--open {
right: 0;
&:not(.drawer--initial) {
animation: drawer-slide-in-right 225ms cubic-bezier(0, 0, 0.2, 1)forwards;
}
}
&.drawer--closed {
right: calc(-1 * var(--drawer-width, var(--drawer-width-right)));
&:not(.drawer--initial) {
animation: drawer-slide-out-right 225ms cubic-bezier(0, 0, 0.2, 1)forwards;
}
}
}
&.drawer-pos-bottom {
left: 0;
top: auto;
width: 100%;
&.drawer--open {
bottom: 0;
&:not(.drawer--initial) {
animation: drawer-slide-in-bottom 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1;
}
}
&.drawer--closed {
bottom: calc(-1 * var(--drawer-content-height));
&:not(.drawer--initial) {
animation: drawer-slide-out-bottom 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1;
}
}
}
&.drawer-pos-top {
left: 0;
bottom: auto;
width: 100%;
&.drawer--open {
top: 0;
&:not(.drawer--initial) {
animation: drawer-slide-in-top 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1;
}
}
&.drawer--closed {
top: calc(-1 * var(--drawer-content-height));
&:not(.drawer--initial) {
animation: drawer-slide-out-top 225ms cubic-bezier(0, 0, 0.2, 1) 0ms 1;
}
}
}
}
&.drawer-mini.drawer-pos-left ~ div:not(.main-content),
&.drawer-mini.drawer-pos-right ~ div:not(.main-content),
&.drawer-persistent.drawer-pos-left ~ div:not(.main-content),
&.drawer-persistent.drawer-pos-right ~ div:not(.main-content) {
transition: margin 225ms cubic-bezier(0.0, 0, 0.2, 1) 0ms;
}
&.drawer-mini.drawer-pos-left.drawer--open ~ div:not(.main-content),
&.drawer-persistent.drawer-pos-left.drawer--open ~ div:not(.main-content) {
margin-left: var(--drawer-width, var(--drawer-width-left));
}
&.drawer-mini.drawer-pos-right.drawer--open ~ div:not(.main-content),
&.drawer-persistent.drawer-pos-right.drawer--open ~ div:not(.main-content) {
margin-right: var(--drawer-width, var(--drawer-width-right));
}
&.drawer-mini.drawer-pos-left.drawer--closed ~ div:not(.main-content) {
margin-left: var(--drawer-width, var(--drawer-width-mini-left));
}
&.drawer-mini.drawer-pos-right.drawer--closed ~ div:not(.main-content) {
margin-right: var(--drawer-width, var(--drawer-width-mini-right));
}
}
.drawer-header {
display: flex;
min-height: var(--appbar-height);
padding: 12px 24px 12px 24px;
&.drawer-header-dense {
min-height: calc(var(--appbar-height) - var(--appbar-height) / 4);
padding: 8px 24px 8px 24px;
}
}
.drawer-fixed {
&.drawer-mini.drawer-clipped-always,
&.drawer-persistent:not(.drawer-clipped-never),
&.drawer-responsive.drawer-clipped-always,
&.drawer-temporary.drawer-clipped-always {
top: var(--appbar-height);
height: calc(100% - var(--appbar-height));
@media (max-width:$breakpoint-sm - 1px) and (orientation: landscape) {
top: calc(var(--appbar-height) - var(--appbar-height) / 4);
height: calc(100% - calc(var(--appbar-height) - var(--appbar-height)/4));
}
@media (max-width:$breakpoint-sm - 1px) and (orientation: portrait) {
top: calc(var(--appbar-height) - var(--appbar-height) / 8);
height: calc(100% - calc(var(--appbar-height) - var(--appbar-height)/8));
}
}
@each $breakpoint in map-keys($breakpoints) {
&.drawer-mini.drawer-clipped-docked.drawer-#{$breakpoint},
&.drawer-responsive.drawer-clipped-docked.drawer-#{$breakpoint} {
@media (min-width: map-get($breakpoints, $breakpoint)) {
top: var(--appbar-height);
height: calc(100% - var(--appbar-height));
@media (max-width:$breakpoint-sm - 1px) and (orientation: landscape) {
top: calc(var(--appbar-height) - var(--appbar-height) - var(--appbar-height) / 4);
height: calc(100% - var(--appbar-height) + var(--appbar-height) - var(--appbar-height) / 4);
}
@media (max-width:$breakpoint-sm - 1px) and (orientation: portrait) {
top: calc(var(--appbar-height) - var(--appbar-height) / 8);
height: calc(100% - var(--appbar-height) / 8);
}
}
}
}
}
.appbar-dense ~ .drawer-fixed {
&.drawer-mini:not(.drawer-clipped-never),
&.drawer-persistent:not(.drawer-clipped-never),
&.drawer-responsive.drawer-clipped-always,
&.drawer-temporary.drawer-clipped-always {
top: calc(var(--appbar-height) - var(--appbar-height) / 4);
height: calc(100% - var(--appbar-height) + var(--appbar-height) / 4);
}
@each $breakpoint in map-keys($breakpoints) {
@media (min-width: map-get($breakpoints, $breakpoint)) {
&.drawer-responsive.drawer-clipped-docked.drawer-#{$breakpoint} {
top: calc(var(--appbar-height) - var(--appbar-height) / 4);
height: calc(100% - var(--appbar-height) + var(--appbar-height) / 4);
}
}
}
}
.drawer-overlay {
display: none;
&.drawer-overlay--open {
@each $breakpoint in map-keys($breakpoints) {
&.drawer-overlay-responsive.drawer-overlay-#{$breakpoint} {
@media (max-width: map-get($breakpoints, $breakpoint) - 1px) {
display: block;
&.drawer--initial {
display: none;
}
}
}
&.drawer-overlay-mini.drawer-overlay-#{$breakpoint} {
@media (max-width: map-get($breakpoints, $breakpoint) - 1px) {
display: block;
}
}
}
&.drawer-overlay-temporary {
display: block;
}
}
}
/*#region keyframes*/
@keyframes drawer-slide-in-left {
from {
left: calc(-1 * var(--drawer-width, var(--drawer-width-left)));
}
}
@keyframes drawer-slide-out-left {
from {
left: 0;
}
}
@keyframes drawer-slide-in-right {
from {
right: calc(-1 * var(--drawer-width, var(--drawer-width-right)));
}
}
@keyframes drawer-slide-out-right {
from {
right: 0;
}
}
@keyframes drawer-slide-in-bottom {
from {
bottom: calc(-1 * var(--drawer-content-height));
}
}
@keyframes drawer-slide-out-bottom {
from {
bottom: 0;
}
}
@keyframes drawer-slide-in-top {
from {
top: calc(-1 * var(--drawer-content-height));
}
}
@keyframes drawer-slide-out-top {
from {
top: 0;
}
}
/*#endregion*/