stylesheets/flint/functions/lib/_calc-width.scss in flint-gs-1.12.0 vs stylesheets/flint/functions/lib/_calc-width.scss in flint-gs-2.0.0.rc.1

- old
+ new

@@ -1,46 +1,60 @@ -// Calculate width -// ------------------------------------------------------------------------------- -// @param $key [string] : key for lookup -// @param $span [number] : span value of element -// @param $context [number] : context value of element -// ------------------------------------------------------------------------------- -// @return calculated value | false +/** +* Calculate width +* +* @param {String} $key - key of breakpoint +* @param {Number} $span - span value of element +* @param {Number | String} $context (null) - context value of element +* @param {Number} $deduct (null) - subtract value out of final width +* +* @return {Map | False} - map of target and context result +*/ +@function flint-calc-width($key, $span, $context: null, $deduct: null) { + $result: (); -@function flint-calc-width($key, $span, $context: null) { - $result: false; - // Check to see if value has been cached @if map-has-key($flint__cached-values, "#{$key, $span, $context}::width") and $context != "auto" { @return map-get($flint__cached-values, "#{$key, $span, $context}::width"); } - @if flint-get-value("settings", "grid") == "fluid" { + @if $span == "container" { - @if $key == "container" or $span == "container" { + $result: flint-get-value("breakpoints", $key, "breakpoint"); - $result: flint-fluid-width(flint-get-value($key, "breakpoint"), flint-get-value($key, "breakpoint")); + } @else if $context == "auto" { - } @else if $context == null { + /* + * Check if instance maps are enabled + */ + @if not flint-get-value("settings", "instance-maps") { + @if not $flint__development-mode { + @error "Instance maps are disabled. Automatic context is not available. Enable `instance-maps` in the config to continue."; + } @else { + @warn "Instance maps are disabled. Automatic context is not available. Enable `instance-maps` in the config to continue."; + } + } - $result: flint-fluid-width((flint-get-value($key, "breakpoint") / flint-get-value($key, "columns") * $span), flint-get-value($key, "breakpoint")); - + @if flint-has-family-instance($key) { + $result: map-merge($result, ("target": ((flint-get-instance-value($key, "internal", "width") / flint-get-instance-value($key, "span") * $span) - if($deduct, $deduct, 0)))); + $result: map-merge($result, ("context": flint-get-instance-value($key, "internal", "width"))); } @else { - - $result: flint-fluid-width((flint-get-value($key, "breakpoint") / flint-get-value($key, "columns") * $span), ((flint-get-value($key, "breakpoint") / flint-get-value($key, "columns") * $context))); - + @if not $flint__development-mode { + @error "You set context to `#{$context}`, but a parent instance could not be found for `#{nth(&, 1) + '::' + $key}`"; + } @else { + @return false; + } } - } @if flint-get-value("settings", "grid") == "fixed" { - - @if $key == "container" or $span == "container" { - $result: flint-get-value($key, "breakpoint"); + } @else { - } @else { + $result: map-merge($result, ("target": ((flint-get-value("breakpoints", $key, "breakpoint") / flint-get-value("breakpoints", $key, "columns") * $span) - if($deduct, $deduct, 0)))); - $result: flint-get-value($key, "breakpoint") / flint-get-value($key, "columns") * $span; - + @if $context { + $result: map-merge($result, ("context": flint-get-value("breakpoints", $key, "breakpoint") / flint-get-value("breakpoints", $key, "columns") * $context)); + } @else { + $result: map-merge($result, ("context": flint-get-value("breakpoints", $key, "breakpoint"))); } + } // Save result to cache @if $context != "auto" { $flint__cached-values: map-merge($flint__cached-values, ("#{$key, $span, $context}::width": $result));