// Framework grid generation
//
// Used only by Bootstrap to generate the correct number of grid classes given
// any value of `$grid-columns`.

@mixin make-grid-columns($columns: $grid-columns, $gutters: $grid-gutter-width) {
  // Common properties for all breakpoints
  %grid-column {
    position: relative;
    width: 100%;
    min-height: 1px; // Prevent columns from collapsing when empty
    @include make-gutters($gutters);
  }

  // Allow columns to stretch full width below their breakpoints
  @for $i from 1 through $columns {
    .col-#{$i} {
      @extend %grid-column;
      @include make-col($i, $columns);
    }
  }
  .col,
  .col-auto {
    @extend %grid-column;
  }

  .col {
    flex-basis: 0;
    flex-grow: 1;
    max-width: 100%;
  }
  .col-auto {
    flex: 0 0 auto;
    width: auto;
  }

  @each $modifier in (pull, push) {
    @for $i from 0 through $columns {
      .#{$modifier}-#{$i} {
        @include make-col-modifier($modifier, $i, $columns);
      }
    }
  }

  // `$columns - 1` because offsetting by the width of an entire row isn't possible
  @for $i from 0 through ($columns - 1) {
    @if not ($i == 0) { // Avoid emitting useless .offset-xs-0
      .offset-#{$i} {
        @include make-col-modifier(offset, $i, $columns);
      }
    }
  }
}
