//
// Grid
// --------------------------------------------------

@mixin xy-collapse-grid-container-classes() {
  @include -zf-each-breakpoint {
    &.#{$-zf-size}-collapse {
      @include grid-column-gutter(0);
    }

    &.#{$-zf-size}-uncollapse {
      @include grid-column-gutter($-zf-size);
    }
  }
}

// Foundation Grid system
@if $xy-grid {

  $base-size-main: 100% !default;

  //Grid
  .main-header {
    //Container
    @if $base-container-main-header == full {
      @include xy-grid-container(100%, 0);
    }
    @else if $base-container-main-header == fluid {
      @include xy-grid-container(100%);
    }
    @else if $base-container-main-header == gutter {
      @include xy-grid-container($grid-container, $grid-container-padding);
    }
    @else {
      @include xy-grid-container($grid-container, 0);
    }
  }

  .main-container {
    //Container
    @if $base-container-main == full {
      @include xy-grid-container(100%, 0);
    }
    @else if $base-container-main == fluid {
      @include xy-grid-container(100%);
    }
    @else if $base-container-main == gutter {
      @include xy-grid-container($grid-container, $grid-container-padding);
    }
    @else {
      @include xy-grid-container($grid-container, 0);
    }
  }

  .main-grid {
    @include xy-grid;
    @include xy-grid-collapse("main.collapse", $gutter-type: padding);
    @include xy-grid-collapse(".sidebar.collapse", $gutter-type: padding);
  }

  main,
  .sidebar {
    @include xy-cell($grid-columns, true, $gutter-type: padding);
  }

  .sidebar-primary {
    main {
      @include -zf-each-breakpoint() {

        $-zf-bp-value: -zf-get-bp-val($base-size-sidebar, $-zf-size);

        @if type-of($-zf-bp-value) == "number" {
          @if unit($-zf-bp-value) == "%" {
            @if $-zf-bp-value == "100%" {
              @include xy-cell(100%, true, $gutter-type: padding);
            }
            @else {
              @include xy-cell((100% - $-zf-bp-value), true, $gutter-type: padding);
            }
          }
          @else if unit($-zf-bp-value) == "px" {
            width: calc(#{$base-size-main} - #{$-zf-bp-value});
            @include xy-gutters($gutter-type: padding, $gutter-position: right left);
          }
          @else if $-zf-bp-value == $grid-columns {
            @include xy-cell($-zf-bp-value of $grid-columns , true, $gutter-type: padding);
          }
          @else {
            @include xy-cell(($grid-columns - $-zf-bp-value) of $grid-columns , true, $gutter-type: padding);
          }
        }
        @else if $-zf-bp-value == "auto" {
          @include xy-cell(shrink, true, $gutter-type: padding);
        }
        @else {
          @include xy-cell(auto, true, $gutter-type: padding);
        }
      }
    }

    .sidebar {
      @include -zf-each-breakpoint() {

        $-zf-bp-value: -zf-get-bp-val($base-size-sidebar, $-zf-size);

        @if type-of($-zf-bp-value) == "number" {

          @if unit($-zf-bp-value) == "%" {
            @include xy-cell($-zf-bp-value, true, $gutter-type: padding);
          }
          @else if unit($-zf-bp-value) == "px" {
            width: $-zf-bp-value;
            @include xy-gutters($gutter-type: padding, $gutter-position: right left);
          }
          @else {
            @include xy-cell($-zf-bp-value of $grid-columns, true, $gutter-type: padding);
          }
        }
        @else {
          @include xy-cell(#{$-zf-bp-value}, true, $gutter-type: padding);
        }
      }
    }
  }

  //Classes for collapse grid-container
  .grid-container {

    @include xy-collapse-grid-container-classes();
  }

  //Class for full height
  .grid-full-height {
    height: 100%;
  }
}

.main-grid-single,
.main-grid-archive {

  margin-top: get-side($hr-margin, top);
}

//Cell Collapse Self
.grid-margin-y,
.grid-margin-x {
  > .cell {
    &.collapse-self-margin {
      margin-left: 0;
      margin-right: 0;
    }

    @include -zf-each-breakpoint {
      &.#{$-zf-size}-collapse-self-margin {
        margin-left: 0;
        margin-right: 0;
      }
    }
  }
}

.grid-padding-y,
.grid-padding-x {
  > .cell {
    &.collapse-self-padding {
      padding-left: 0;
      padding-right: 0;
    }

    @include -zf-each-breakpoint {
      &.#{$-zf-size}-collapse-self-padding {
        padding-left: 0;
        padding-right: 0;
      }
    }
  }
}
