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.
390 lines
11 KiB
390 lines
11 KiB
@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*/ |