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));