react-toolbox/components/layout/theme.scss

326 lines
7.0 KiB
SCSS

@import "../colors";
@import "../globals";
@import "../mixins";
@import "./config";
@import "./mixins";
.layout {
position: relative;
display: flex;
width: 100%;
height: 100%;
flex-direction: row;
align-items: stretch;
justify-content: space-between;
overflow-y: hidden;
.navDrawer {
width: 0;
min-width: 0;
height: 100%;
overflow-x: hidden;
overflow-y: hidden;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: width, min-width;
.scrim {
position: absolute;
top: 0;
bottom: 0;
left: 0;
z-index: $z-index-higher;
width: 0;
height: 100%;
background-color: rgba($drawer-overlay-color, 0);
transition: background-color $animation-duration $animation-curve-default, width 10ms linear $animation-duration;
}
.drawerContent {
@include shadow-2dp();
position: absolute;
z-index: $z-index-highest;
display: flex;
width: $navigation-drawer-mobile-width;
max-width: $navigation-drawer-max-mobile-width;
height: 100%;
flex-direction: column;
align-items: stretch;
justify-content: space-between;
overflow-x: hidden;
overflow-y: hidden;
color: $drawer-text-color;
pointer-events: none;
background-color: $drawer-background-color;
border-right: 1px solid $drawer-border-color;
transition: transform $animation-duration $animation-curve-default;
transform: translateX(-100%);
&.scrollY {
overflow-y: auto;
}
}
&.pinned {
@include open();
width: $navigation-drawer-mobile-width;
max-width: $navigation-drawer-max-mobile-width;
}
&.active {
&:not(.pinned) {
@include open();
.scrim {
width: 100%;
background-color: rgba($drawer-overlay-color, $drawer-overlay-opacity);
transition: background-color $animation-duration $animation-curve-default;
}
}
}
// Larger than mobile width drawer
@media screen and (min-width: $layout-breakpoint-xs) {
&.pinned {
width: $navigation-drawer-desktop-width;
max-width: $navigation-drawer-desktop-width;
}
.drawerContent {
width: $navigation-drawer-desktop-width;
max-width: $navigation-drawer-desktop-width;
}
&.wide {
&.pinned {
width: $navigation-drawer-max-desktop-width;
max-width: $navigation-drawer-max-desktop-width;
}
.drawerContent {
width: $navigation-drawer-max-desktop-width;
max-width: $navigation-drawer-max-desktop-width;
}
}
}
// Permanent screen, ignore .active and make part of layout
@media screen and (min-width: $layout-breakpoint-sm) {
&.smPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-sm-tablet) {
&.smTabletPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-md) {
&.mdPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-lg) {
&.lgPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-lg-tablet) {
&.lgTabletPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-xl) {
&.xlPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-xxl) {
&.xxlPermanent {
@include permanent();
}
}
@media screen and (min-width: $layout-breakpoint-xxxl) {
&.xxxlPermanent {
@include permanent();
}
}
}
& .layout {
.scrim {
z-index: $z-index-highest - 1;
}
& .layout {
.scrim {
z-index: $z-index-highest - 2;
}
}
}
.panel {
position: relative;
display: flex;
height: 100%;
flex: 1;
flex-direction: column;
align-items: stretch;
justify-content: space-between;
overflow-y: hidden;
&.scrollY {
overflow-y: auto;
}
}
.sidebar {
position: absolute;
top: 0;
right: 0;
bottom: 0;
z-index: $z-index-highest - 1;
width: 0;
height: 100%;
overflow-x: hidden;
overflow-y: hidden;
color: $drawer-text-color;
background-color: $drawer-background-color;
transition-timing-function: $animation-curve-default;
transition-duration: $animation-duration;
transition-property: width;
.sidebarContent {
display: flex;
height: 100%;
flex-direction: column;
align-items: stretch;
justify-content: space-between;
overflow-y: hidden;
&.scrollY {
overflow-y: auto;
}
}
$increments: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
@each $increment in $increments {
&.width-#{$increment} {
$mobile: $standard-increment-mobile * $increment;
$desktop: $standard-increment-desktop * $increment;
.sidebarContent {
min-width: 100%;
}
&.pinned {
width: 100%;
}
@if $increment < 10 {
@media screen and (min-width: $layout-breakpoint-xs) and (orientation: landscape) {
position: relative;
.sidebarContent {
min-width: $mobile;
}
&.pinned {
width: $mobile;
}
}
@media screen and (min-width: $layout-breakpoint-xs) and (orientation: portrait) {
position: relative;
.sidebarContent {
min-width: $desktop;
}
&.pinned {
width: $desktop;
}
}
}
@if $increment < 11 {
@media screen and (min-width: $layout-breakpoint-sm-tablet) {
position: relative;
.sidebarContent {
min-width: $desktop;
}
&.pinned {
width: $desktop;
}
}
}
@media screen and (min-width: $layout-breakpoint-sm) {
position: relative;
.sidebarContent {
min-width: $desktop;
}
&.pinned {
width: $desktop;
}
}
}
}
$percentages: (25, 33, 50, 66, 75);
&.width-100 {
position: absolute;
.sidebarContent {
min-width: 100%;
}
&.pinned {
width: 100%;
}
}
@each $pct in $percentages {
&.width-#{$pct} {
position: absolute;
.sidebarContent {
min-width: 100%;
}
&.pinned {
width: 100%;
}
}
}
@media screen and (min-width: $layout-breakpoint-sm-tablet) {
@each $pct in $percentages {
&.width-#{$pct} {
position: relative;
.sidebarContent {
min-width: $pct * 1%;
}
&.pinned {
width: $pct * 1%;
}
}
}
}
}
}