// Foundation for Sites by ZURB
// foundation.zurb.com
// Licensed under MIT Open Source

////
/// @group forms
////

/// Color of labels prefixed to an input.
/// @type Color
$input-prefix-color: $black !default;

/// Background color of labels prefixed to an input.
/// @type Color
$input-prefix-background: $light-gray !default;

/// Border around labels prefixed to an input.
/// @type Border
$input-prefix-border: 1px solid $medium-gray !default;

/// Left/right padding of an pre/postfixed input label
$input-prefix-padding: 1rem !default;

@mixin foundation-form-prepostfix {
  $height: ($input-font-size * $input-line-height) + (get-side($input-padding, 'top') + get-side($input-padding, 'bottom')) - rem-calc(1);

  .input-group {
    display: if($global-flexbox, flex, table);
    width: 100%;
    margin-bottom: $form-spacing;

    @if $global-flexbox {
      align-items: stretch;
    }

    > :first-child {
      &, &.input-group-button > * {
        border-radius: if($global-text-direction == rtl, 0 $input-radius $input-radius 0, $input-radius 0 0 $input-radius);
      }
    }

    > :last-child {
      &, &.input-group-button > * {
        border-radius: if($global-text-direction == rtl, $input-radius 0 0 $input-radius, 0 $input-radius $input-radius 0);
      }
    }
  }

  %input-group-child {
    margin: 0;
    white-space: nowrap;

    @if not $global-flexbox {
      display: table-cell;
      vertical-align: middle;
    }
  }

  .input-group-label {
    @extend %input-group-child;
    padding: 0 $input-prefix-padding;
    border: $input-prefix-border;
    background: $input-prefix-background;

    color: $input-prefix-color;
    text-align: center;
    white-space: nowrap;

    @if $global-flexbox {
      display: flex;
      flex: 0 0 auto;
      align-items: center;
    }
    @else {
      width: 1%;
      height: 100%;
    }

    @if has-value($input-prefix-border) {
      &:first-child {
        border-#{$global-right}: 0;
      }

      &:last-child {
        border-#{$global-left}: 0;
      }
    }
  }

  .input-group-field {
    @extend %input-group-child;
    border-radius: 0;

    @if $global-flexbox {
      flex: 1 1 0px; // sass-lint:disable-line zero-unit
      min-width: 0;
    }
  }

  .input-group-button {
    @extend %input-group-child;
    padding-top: 0;
    padding-bottom: 0;
    text-align: center;

    @if $global-flexbox {
      display: flex;
      flex: 0 0 auto;
    }
    @else {
      width: 1%;
      height: 100%;
    }

    a,
    input,
    button,
    label {
      @extend %input-group-child;

      @if $global-flexbox {
        align-self: stretch;
        height: auto;
      }
      @else {
        height: $height;
      }
      padding-top: 0;
      padding-bottom: 0;
      font-size: $input-font-size;
    }
  }

  // Specificity bump needed to prevent override by buttons
  @if not $global-flexbox {
    .input-group {
      .input-group-button {
        display: table-cell;
      }
    }
  }
}
