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

/// Foundation Float Grid.
/// No `rem` conversion for the gutters.
/// @group _global renderkit
/// @link https://foundation.zurb.com/sites/docs/grid.html
@mixin foundation-grid($row: 'row', $column: 'column', $column-row: 'column-row', $gutter: 'gutter', $push: 'push', $pull: 'pull', $center: 'centered', $uncenter: 'uncentered', $collapse: 'collapse', $uncollapse: 'uncollapse', $offset: 'offset', $end: 'end', $expanded: 'expanded', $block: 'block') {
    .#{$row} {
        @include grid-row;

        &.#{$collapse} {
            > .#{$column} {
                @include grid-col-collapse;
            }
        }

        & .#{$row} {
            @include grid-row-nest($grid-column-gutter);

            &.#{$collapse} {
                margin-left: 0;
                margin-right: 0;
            }
        }

        &.#{$expanded} {
            @include grid-row-size(expand);

            .#{$row} {
                margin-left: auto;
                margin-right: auto;
            }
        }

        @each $breakpoint, $value in $grid-column-gutter {
            &.#{$gutter}-#{$breakpoint} {
                > .#{$column} {
                    @include grid-col-gutter($value);
                }
            }
        }
    }

    .#{$column} {
        @include grid-col;

        @if $grid-column-align-edge {
            &.#{$end} {
                @include grid-col-end;
            }
        }
    }

    .#{$column}.#{$row}.#{$row} {
        float: none;
    }

    .#{$row} .#{$column}.#{$row}.#{$row} {
        padding-left: 0;
        padding-right: 0;
        margin-left: 0;
        margin-right: 0;
    }

    @include -zf-each-breakpoint {
        @for $i from 1 through $grid-column-count {
            .#{$-zf-size}-#{$i} {
                @include grid-col-size($i);
            }

            @if $i < $grid-column-count {
                .#{$-zf-size}-#{$push}-#{$i} {
                    @include grid-col-pos($i);
                }

                .#{$-zf-size}-#{$pull}-#{$i} {
                    @include grid-col-pos(-$i);
                }
            }

            $o: $i - 1;

            .#{$-zf-size}-#{$offset}-#{$o} {
                @include grid-col-off($o);
            }
        }

        @for $i from 1 through $block-grid-max {
            .#{$-zf-size}-up-#{$i} {
                @include grid-layout($i, '.#{$column}');
            }
        }

        .#{$-zf-size}-#{$collapse} {
            > .#{$column} {
                @include grid-col-collapse;
            }

            .#{$row} {
                margin-left: 0;
                margin-right: 0;
            }
        }

        .#{$expanded}.#{$row} .#{$-zf-size}-#{$collapse}.#{$row} {
            margin-left: 0;
            margin-right: 0;
        }

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

        @if $center {
            .#{$-zf-size}-#{$center} {
                @include grid-col-pos(center);
            }
        }

        .#{$-zf-size}-#{$center} {
            @include grid-col-pos(center);
        }

        $-gutter-unpos-selector: (
            if($uncenter, '.#{$-zf-size}-#{$uncenter}', null),
            if($push, '.#{$-zf-size}-#{$push}-0', null),
            if($pull, '.#{$-zf-size}-#{$pull}-0', null),
		);

        @if ($uncenter or $push or $pull) {
            #{$-gutter-unpos-selector} {
                @include grid-col-unpos;
            }
        }

        .#{$-zf-size}-#{$pull}-0,
        .#{$-zf-size}-#{$push}-0,
        .#{$-zf-size}-#{$uncenter} {
            @include grid-col-unpos;
        }
    }

    .#{$column}-#{$block} {
        @include grid-column-margin;
	}

    @if $column == 'column' and has-value($grid-column-alias) {
        .#{$grid-column-alias} {
            @extend .column;
        }
    }
}
