/*!
 * Copyright (c) 2017 Edelweiss72 GmbH - All Rights Reserved
 * Unauthorized usage or distribution of this file, via any medium is strictly prohibited
 * Proprietary and confidential
 *
 * @author Wladimir Eberts <w.eberts@edelweiss72.de>
 */

.mod-form:not(.no-radio-checkbox) {
    .m-item.m-item-radio:not(.no-radio-checkbox),
    .m-item.m-item-checkbox:not(.no-radio-checkbox) {
        @if unit($form-radio-checkbox-size) == em {
            padding-left: calc(#{$form-radio-checkbox-size} + #{0.5 * $form-gutter + 2 * $form-input-border-width});
        }
        @else {
            padding-left: $form-radio-checkbox-size + 0.5 * $form-gutter + 2 * $form-input-border-width;
        }

        > .m-input {
            > input {
                opacity: 0;
                position: absolute;
                pointer-events: none;
            }

            > input + .m-label {
                &::before {
                    content: '';
                    display: inline-block;
                    vertical-align: middle;
                    box-sizing: content-box;
                    box-shadow: $form-input-shadow;
                    background: $form-input-background no-repeat 50%;
                    background-clip: padding-box;
                    background-size: $form-radio-checkbox-size;
                    border: $form-input-border-width solid $form-input-border-color;
                    margin-right: 0.5 * $form-gutter + 2 * $form-input-border-width;

                    @if unit($form-radio-checkbox-size) == em {
                        margin-top: em(-2 * $form-input-border-width - 1px);
                        width: calc(#{$form-radio-checkbox-size} - #{2 * $form-input-border-width});
                        height: calc(#{$form-radio-checkbox-size} - #{2 * $form-input-border-width});
                    }
                    @else {
                        margin-top: -2 * $form-input-border-width;
                        width: $form-radio-checkbox-size - 2 * $form-input-border-width;
                        height: $form-radio-checkbox-size - 2 * $form-input-border-width;
                    }

                    @if unit($form-radio-checkbox-size) == em {
                        margin-left: calc(#{-$form-radio-checkbox-size} - #{0.5 * $form-gutter + 2 * $form-input-border-width});
                    }
                    @else {
                        margin-left: -$form-radio-checkbox-size - 0.5 * $form-gutter - 2 * $form-input-border-width;
                    }

                    @include if-parent('.m-item.m-item-radio') {
                        border-radius: $form-radio-radius;

                        @if $form-radio-padding {
                            @if unit($form-radio-checkbox-size) == em {
                                background-size: calc(#{$form-radio-checkbox-size} - #{$form-radio-padding});
                            }
                            @else {
                                background-size: $form-radio-checkbox-size - $form-radio-padding;
                            }
                        }

                        @include if-parent('input:checked') {
                            background-image: embed($form-radio-svg, (color: $form-radio-color, strength: $form-radio-strength, radius: $form-radio-radius, offset: 0.5 * max(0, 16 - $form-radio-strength)));
                        }
                    }

                    @include if-parent('.m-item.m-item-checkbox') {
                        border-radius: $form-checkbox-radius;

                        @if $form-checkbox-padding {
                            @if unit($form-radio-checkbox-size) == em {
                                background-size: calc(#{$form-radio-checkbox-size} - #{$form-checkbox-padding});
                            }
                            @else {
                                background-size: $form-radio-checkbox-size - $form-checkbox-padding;
                            }
                        }

                        @include if-parent('input:checked') {
                            background-image: embed($form-checkbox-svg, (cross: $form-checkbox-cross, color: $form-checkbox-color, strength: $form-checkbox-strength));
                        }
                    }

                    @include if-parent('input:focus') {
                        border-color: $form-input-border-color-active;
                        background-color: $form-input-background-active;
                    }

                    @include if-parent('.m-label:hover') {
                        border-color: $form-input-border-color-hover;
                        background-color: $form-input-background-hover;
                    }

                    @include if-parent('input.is-error') {
                        border-color: $form-color-error;
                    }
                }
            }
        }
    }
}
