https://github.com/sha-red/compass-mixins/tree/master/lib
extended with more sass frameworks and as django app.
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.
95 lines
3.1 KiB
95 lines
3.1 KiB
////////////////////////////// |
|
// Private Breakpoint Variables |
|
////////////////////////////// |
|
$private-breakpoint-context-holder: (); |
|
$private-breakpoint-query-count: 0 !default; |
|
|
|
////////////////////////////// |
|
// Breakpoint Has Context |
|
// Returns whether or not you are inside a Breakpoint query |
|
////////////////////////////// |
|
@function breakpoint-has-context() { |
|
@if length($private-breakpoint-query-count) { |
|
@return true; |
|
} |
|
@else { |
|
@return false; |
|
} |
|
} |
|
|
|
////////////////////////////// |
|
// Breakpoint Get Context |
|
// $feature: Input feature to get it's current MQ context. Returns false if no context |
|
////////////////////////////// |
|
@function breakpoint-get-context($feature) { |
|
@if map-has-key($private-breakpoint-context-holder, $feature) { |
|
$get: map-get($private-breakpoint-context-holder, $feature); |
|
// Special handling of no-query from get side so /false/ prepends aren't returned |
|
@if $feature == 'no-query' { |
|
@if type-of($get) == 'list' and length($get) > 1 and nth($get, 1) == false { |
|
$get: nth($get, length($get)); |
|
} |
|
} |
|
@return $get; |
|
} |
|
@else { |
|
@if breakpoint-has-context() and $feature == 'media' { |
|
@return breakpoint-get('default media'); |
|
} |
|
@else { |
|
@return false; |
|
} |
|
} |
|
} |
|
|
|
////////////////////////////// |
|
// Private function to set context |
|
////////////////////////////// |
|
@function private-breakpoint-set-context($feature, $value) { |
|
@if $value == 'monochrome' { |
|
$feature: 'monochrome'; |
|
} |
|
|
|
$current: map-get($private-breakpoint-context-holder, $feature); |
|
@if $current and length($current) == $private-breakpoint-query-count { |
|
@warn "You have already queried against `#{$feature}`. Unexpected things may happen if you query against the same feature more than once in the same `and` query. Breakpoint is overwriting the current context with `#{$value}`"; |
|
} |
|
|
|
@if not map-has-key($private-breakpoint-context-holder, $feature) { |
|
$v-holder: (); |
|
@for $i from 1 to $private-breakpoint-query-count { |
|
@if $feature == 'media' { |
|
$v-holder: append($v-holder, breakpoint-get('default media')); |
|
} |
|
@else { |
|
$v-holder: append($v-holder, false); |
|
} |
|
} |
|
$v-holder: append($v-holder, $value); |
|
$private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; |
|
} |
|
@else { |
|
$v-holder: map-get($private-breakpoint-context-holder, $feature); |
|
$length: length($v-holder); |
|
@for $i from $length to $private-breakpoint-query-count - 1 { |
|
@if $feature == 'media' { |
|
$v-holder: append($v-holder, breakpoint-get('default media')); |
|
} |
|
@else { |
|
$v-holder: append($v-holder, false); |
|
} |
|
} |
|
$v-holder: append($v-holder, $value); |
|
$private-breakpoint-context-holder: map-merge($private-breakpoint-context-holder, ($feature: $v-holder)) !global; |
|
} |
|
|
|
@return true; |
|
} |
|
|
|
////////////////////////////// |
|
// Private function to reset context |
|
////////////////////////////// |
|
@mixin private-breakpoint-reset-contexts { |
|
$private-breakpoint-context-holder: () !global; |
|
$private-breakpoint-query-count: 0 !global; |
|
} |