// Copyright (c) 2016-2019 VMware, Inc. All Rights Reserved.
// This software is released under MIT license.
// The full license information can be found in LICENSE in the root directory of this project.

// Custom styles for additional flex alignment options.
@each $breakpoint in map-keys($clr-grid-breakpoints) {
  @include clr-media-breakpoint-up($breakpoint) {
    $infix: clr-breakpoint-infix($breakpoint, $clr-grid-breakpoints);

    .clr-flex#{$infix}-row {
      flex-direction: row !important;
    }

    .clr-flex#{$infix}-column {
      flex-direction: column !important;
    }

    .clr-flex#{$infix}-row-reverse {
      flex-direction: row-reverse !important;
    }

    .clr-flex#{$infix}-column-reverse {
      flex-direction: column-reverse !important;
    }

    .clr-flex#{$infix}-wrap {
      flex-wrap: wrap !important;
    }

    .clr-flex#{$infix}-nowrap {
      flex-wrap: nowrap !important;
    }

    .clr-flex#{$infix}-wrap-reverse {
      flex-wrap: wrap-reverse !important;
    }

    .clr-flex#{$infix}-fill {
      flex: 1 1 auto !important;
    }

    .clr-flex#{$infix}-grow-0 {
      flex-grow: 0 !important;
    }

    .clr-flex#{$infix}-grow-1 {
      flex-grow: 1 !important;
    }

    .clr-flex#{$infix}-shrink-0 {
      flex-shrink: 0 !important;
    }

    .clr-flex#{$infix}-shrink-1 {
      flex-shrink: 1 !important;
    }

    .clr-justify-content#{$infix}-start {
      justify-content: flex-start !important;
    }

    .clr-justify-content#{$infix}-end {
      justify-content: flex-end !important;
    }

    .clr-justify-content#{$infix}-center {
      justify-content: center !important;
    }

    .clr-justify-content#{$infix}-between {
      justify-content: space-between !important;
    }

    .clr-justify-content#{$infix}-around {
      justify-content: space-around !important;
    }

    .clr-align-items#{$infix}-start {
      align-items: flex-start !important;
    }

    .clr-align-items#{$infix}-end {
      align-items: flex-end !important;
    }

    .clr-align-items#{$infix}-center {
      align-items: center !important;
    }

    .clr-align-items#{$infix}-baseline {
      align-items: baseline !important;
    }

    .clr-align-items#{$infix}-stretch {
      align-items: stretch !important;
    }

    .clr-align-content#{$infix}-start {
      align-content: flex-start !important;
    }

    .clr-align-content#{$infix}-end {
      align-content: flex-end !important;
    }

    .clr-align-content#{$infix}-center {
      align-content: center !important;
    }

    .clr-align-content#{$infix}-between {
      align-content: space-between !important;
    }

    .clr-align-content#{$infix}-around {
      align-content: space-around !important;
    }

    .clr-align-content#{$infix}-stretch {
      align-content: stretch !important;
    }

    .clr-align-self#{$infix}-auto {
      align-self: auto !important;
    }

    .clr-align-self#{$infix}-start {
      align-self: flex-start !important;
    }

    .clr-align-self#{$infix}-end {
      align-self: flex-end !important;
    }

    .clr-align-self#{$infix}-center {
      align-self: center !important;
    }

    .clr-align-self#{$infix}-baseline {
      align-self: baseline !important;
    }

    .clr-align-self#{$infix}-stretch {
      align-self: stretch !important;
    }
  }
}

@each $breakpoint in map-keys($clr-grid-breakpoints) {
  // Flex column reordering
  @include clr-media-breakpoint-up($breakpoint) {
    .clr-flex-#{$breakpoint}-first {
      order: -1;
    }

    .clr-flex-#{$breakpoint}-last {
      order: 1;
    }

    .clr-flex-#{$breakpoint}-unordered {
      order: 0;
    }
  }

  // Alignment for every item
  @include clr-media-breakpoint-up($breakpoint) {
    .clr-flex-items-#{$breakpoint}-top {
      align-items: flex-start;
    }

    .clr-flex-items-#{$breakpoint}-middle {
      align-items: center;
    }

    .clr-flex-items-#{$breakpoint}-bottom {
      align-items: flex-end;
    }
  }

  // Alignment per item
  @include clr-media-breakpoint-up($breakpoint) {
    .clr-flex-#{$breakpoint}-top {
      align-self: flex-start;
    }

    .clr-flex-#{$breakpoint}-middle {
      align-self: center;
    }

    .clr-flex-#{$breakpoint}-bottom {
      align-self: flex-end;
    }
  }

  // Horizontal alignment of item
  @include clr-media-breakpoint-up($breakpoint) {
    .clr-flex-items-#{$breakpoint}-left {
      justify-content: flex-start;
    }

    .clr-flex-items-#{$breakpoint}-center {
      justify-content: center;
    }

    .clr-flex-items-#{$breakpoint}-right {
      justify-content: flex-end;
    }

    .clr-flex-items-#{$breakpoint}-around {
      justify-content: space-around;
    }

    .clr-flex-items-#{$breakpoint}-between {
      justify-content: space-between;
    }
  }
}
