uccser/cs-field-guide

View on GitHub
csfieldguide/static/scss/third-party/_directional.scss

Summary

Maintainability
Test Coverage
// directional-scss | Author: Tyson Matanich (http://matanich.com), 2013 | License: MIT
$dir: ltr !default;

// Default $dir if not valid
@if $dir != ltr and $dir != rtl {
    $dir: ltr;
}

@function if-ltr($if, $else: null) {
  @if $dir != rtl {
    @return $if;
  }
  @else {
    @return $else;
  }
}

@function if-rtl($if, $else: null) {
  @return if-ltr($else, $if);
}

$left: if-ltr(left, right);
$right: if-ltr(right, left);

@function side-values($values) {
  @if $dir == rtl and length($values) >= 4 {
    // Reorder right and left positions in list
    @return nth($values, 1) nth($values, 4) nth($values, 3) nth($values, 2);
  }
  @else {
    @return $values;
  }
}

@function corner-values($values) {
  @if $dir == rtl and length($values) > 1 {
    // Reorder right and left positions in list
    @if length($values) == 2 {
        @return nth($values, 2) nth($values, 1);
    }
    @else if length($values) == 3 {
        @return nth($values, 2) nth($values, 1) nth($values, 2) nth($values, 3);
    }
    @else {
        @return nth($values, 2) nth($values, 1) nth($values, 4) nth($values, 3);
    }
  }
  @else {
    @return $values;
  }
}

@mixin if-ltr { 
  @if $dir != rtl {
    @content;
  }
}

@mixin if-rtl {
  @if $dir == rtl {
    @content;
  }
}