2016-01-16 02:58:16 +03:00
// Mixins to allow creation of additional custom drawer sizes when using the defaults at the same time
//
2016-01-18 21:53:44 +03:00
//----
// Example 1: creates a media responsive kitchen-sink-drawer that pairs with mdb-drawer-open-lg and allows for triggers mdb-drawer-open && mdb-drawer-closed
//
// Used with <div class="mdb-layout-container mdb-drawer-fixed-left mdb-drawer-overlay-md mdb-drawer-open-lg kitchen-sink-drawer">
2016-01-16 02:58:16 +03:00
//
// .kitchen-sink-drawer:not(.mdb-drawer-closed) {
2016-01-18 21:53:44 +03:00
// @each $breakpoint in (xs lg) {
// // xs gives us the static marker class i.e. mdb-drawer-open && mdb-drawer-closed, while lg gives us a responsive open/overlay
// @include mdb-drawer-x-closed(500px);
// @include mdb-drawer-x-open-up(500px, $breakpoint);
// }
// // Create a responsive overlay at mdb-drawer-overlay-md - this specificity is required
// @include mdb-drawer-x-overlay-down(md);
2016-01-16 02:58:16 +03:00
// }
2016-01-18 21:53:44 +03:00
//----
// Example 2: creates a NON-responsive kitchen-sink-drawer and allows for triggers mdb-drawer-open && mdb-drawer-closed
2016-01-16 02:58:16 +03:00
//
2016-01-18 21:53:44 +03:00
// Used with <div class="mdb-layout-container mdb-drawer-fixed-left mdb-drawer-open kitchen-sink-drawer-triggered">
2016-01-16 02:58:16 +03:00
//
2016-01-18 21:53:44 +03:00
// .kitchen-sink-drawer-triggered:not(.mdb-drawer-closed) {
// @include mdb-drawer-x-closed(500px); // closed by default, also can be triggered with mdb-drawer-closed
// @include mdb-drawer-x-open(500px); // triggered with mdb-drawer-open
// @include mdb-drawer-x-overlay(); // overlay by default, no other classes necessary
// }
2016-01-16 02:58:16 +03:00
2016-01-18 21:53:44 +03:00
@mixin mdb-drawer-x-closed ( $size ) {
2016-01-16 02:58:16 +03:00
@each $side in ( left right ) {
2016-01-18 21:53:44 +03:00
& . mdb-drawer-fixed- #{ $side } {
> . mdb-layout-drawer {
// position
top : 0 ;
#{ $side } : 0 ;
2016-01-16 02:58:16 +03:00
2016-01-18 21:53:44 +03:00
width : $size ;
height : 100 % ;
@if $side == left {
transform : translateX ( - $size - 10 px ) ; // initial position of drawer (closed), way off screen
} @else {
transform : translateX ( $size + 10 px ) ; // initial position of drawer (closed), way off screen
2016-01-16 02:58:16 +03:00
}
}
2016-01-18 21:53:44 +03:00
> . mdb-layout-content {
margin-#{$side} : 0 ;
}
2016-01-16 02:58:16 +03:00
}
}
}
2016-01-18 21:53:44 +03:00
@mixin mdb-drawer-y-closed ( $size ) {
2016-01-16 02:58:16 +03:00
@each $side in ( top bottom ) {
2016-01-18 21:53:44 +03:00
& . mdb-drawer-fixed- #{ $side } {
> . mdb-layout-drawer {
// position
#{ $side } : 0 ;
left : 0 ;
2016-01-16 02:58:16 +03:00
2016-01-18 21:53:44 +03:00
width : 100 % ;
height : $size ;
@if $side == top {
transform : translateY ( - $size - 10 px ) ; // initial position of drawer (closed), way off screen
} @else {
transform : translateY ( $size + 10 px ) ; // initial position of drawer (closed), way off screen
2016-01-16 02:58:16 +03:00
}
}
2016-01-18 21:53:44 +03:00
> . mdb-layout-content {
margin-#{$side} : 0 ;
}
2016-01-16 02:58:16 +03:00
}
}
}
@function mdb-drawer-breakpoint-name ( $breakpoint ) {
// e.g. &, &-sm, &-md, &-lg
$name : " &- #{ $breakpoint } " ;
@if $breakpoint == xs {
$name : " & " ;
}
@return $name ;
}
@mixin mdb-drawer-x-open ( $size ) {
@each $side in ( left right ) {
& . mdb-drawer-fixed- #{ $side } {
// Push - drawer will push the header and content (default behavior)
& ,
& . mdb-drawer-push {
> . mdb-layout-header {
width : calc ( 100 % - #{ $size } ) ;
margin-#{$side} : $size ;
}
> . mdb-layout-drawer {
transform : translateX ( 0 ) ;
}
> . mdb-layout-content {
margin-#{$side} : $size ;
}
}
}
}
}
@mixin mdb-drawer-y-open ( $size ) {
@each $side in ( top bottom ) {
& . mdb-drawer-fixed- #{ $side } {
// 1. Push - drawer will push the header or content
> . mdb-layout-header {
@if $side == top { // only add margin-top on a header when the drawer is at the top
margin-#{$side} : $size ;
}
}
> . mdb-layout-drawer {
transform : translateY ( 0 ) ;
}
> . mdb-layout-content {
@if $side == bottom { // only add margin-bottom on content when the drawer is at the bottom
margin-#{$side} : $size ;
}
}
}
}
}
// breakpoint based open to a particular size
@mixin mdb-drawer-x-open-up ( $size , $breakpoint ) {
// e.g. &, &-sm, &-md, &-lg
$name : mdb-drawer-breakpoint-name ( $breakpoint ) ;
& . mdb-drawer-open {
#{ unquote ( $name ) } { // mdb-drawer-open, mdb-drawer-open-sm, mdb-drawer-open-md, mdb-drawer-open-lg
2016-01-18 21:53:44 +03:00
@if $breakpoint == xs {
// mdb-drawer-open marker class (non-responsive)
2016-01-16 02:58:16 +03:00
@include mdb-drawer-x-open ( $size ) ;
2016-01-18 21:53:44 +03:00
} @else {
// responsive class
@include media-breakpoint-up ( $breakpoint ) {
// mdb-drawer-fixed-(left and right) styles
@include mdb-drawer-x-open ( $size ) ;
}
2016-01-16 02:58:16 +03:00
}
}
}
}
// breakpoint based open to a particular size
@mixin mdb-drawer-y-open-up ( $size , $breakpoint ) {
// e.g. &, &-sm, &-md, &-lg
$name : mdb-drawer-breakpoint-name ( $breakpoint ) ;
& . mdb-drawer-open {
#{ unquote ( $name ) } { // mdb-drawer-open, mdb-drawer-open-sm, mdb-drawer-open-md, mdb-drawer-open-lg
2016-01-18 21:53:44 +03:00
@if $breakpoint == xs {
// mdb-drawer-open marker class (non-responsive)
2016-01-16 02:58:16 +03:00
@include mdb-drawer-y-open ( $size ) ;
2016-01-18 21:53:44 +03:00
} @else {
// responsive class
@include media-breakpoint-up ( $breakpoint ) {
// mdb-drawer-fixed-(left and right) styles
@include mdb-drawer-y-open ( $size ) ;
}
2016-01-16 02:58:16 +03:00
}
}
}
}
2016-01-18 21:53:44 +03:00
@mixin mdb-drawer-x-overlay () {
@each $side in ( left right ) {
& . mdb-drawer-fixed- #{ $side } {
> . mdb-layout-header ,
> . mdb-layout-content {
width : 100 % ;
margin-#{$side} : 0 ;
}
}
2016-01-16 02:58:16 +03:00
}
}
2016-01-18 21:53:44 +03:00
@mixin mdb-drawer-y-overlay () {
@each $side in ( top bottom ) {
& . mdb-drawer-fixed- #{ $side } {
> . mdb-layout-header {
@if $side == top { // only add margin-top on a header when the drawer is at the top
margin-#{$side} : 0 ;
}
}
> . mdb-layout-content {
@if $side == bottom { // only add margin-bottom on content when the drawer is at the bottom
margin-#{$side} : 0 ;
}
}
}
2016-01-16 02:58:16 +03:00
}
2016-01-18 21:53:44 +03:00
}
2016-01-16 02:58:16 +03:00
2016-01-18 21:53:44 +03:00
@mixin mdb-drawer-x-overlay-down ( $breakpoint ) {
// e.g. &, &-sm, &-md, &-lg
$name : mdb-drawer-breakpoint-name ( $breakpoint ) ;
//
// Overlay - left/right responsive overlay classes and marker class
//
& . mdb-drawer-overlay {
#{ unquote ( $name ) } { // mdb-drawer-overlay, mdb-drawer-overlay-sm, mdb-drawer-overlay-md, mdb-drawer-overlay-lg
// x - left/right
@if $breakpoint == xs { // overlay marker class (non-responsive)
// Must double up on the .mdb-drawer-overlay class to increase specificity otherwise the
// responsive mdb-drawer-open-* media queries above win (and overlay is ignored)
& . mdb-drawer-overlay {
@include mdb-drawer-x-overlay ()
}
} @else {
@include media-breakpoint-down ( $breakpoint ) { // overlay responsive class
@include mdb-drawer-x-overlay ()
}
}
2016-01-16 02:58:16 +03:00
}
}
2016-01-18 21:53:44 +03:00
}
2016-01-16 02:58:16 +03:00
2016-01-18 21:53:44 +03:00
@mixin mdb-drawer-y-overlay-down ( $breakpoint ) {
// e.g. &, &-sm, &-md, &-lg
$name : mdb-drawer-breakpoint-name ( $breakpoint ) ;
//
// Overlay - top/bottom responsive overlay classes and marker class
//
& . mdb-drawer-overlay {
#{ unquote ( $name ) } { // mdb-drawer-overlay, mdb-drawer-overlay-sm, mdb-drawer-overlay-md, mdb-drawer-overlay-lg
//// y - top/bottom
@if $breakpoint == xs { // overlay marker class (non-responsive)
// Must double up on the .mdb-drawer-overlay class to increase specificity otherwise the
// responsive mdb-drawer-open-* media queries above win (and overlay is ignored)
& . mdb-drawer-overlay {
@include mdb-drawer-y-overlay () ;
}
} @else {
@include media-breakpoint-down ( $breakpoint ) { // overlay responsive class
@include mdb-drawer-y-overlay () ;
}
}
2016-01-16 02:58:16 +03:00
}
}
}
2016-01-18 21:53:44 +03:00