@import "../../../css/static/mixin";
@import "../../../css/static/properties";

html:root {
    --boxed-input-field-border: #111112;
    --boxed-input-field-background: #121213;
    --boxed-input-field-text: #b3b3b3;
    --boxed-input-field-placeholder: #606060;

    --boxed-input-field-disabled-background: #1a1819;

    --boxed-input-field-focus-border: #284262;
    --boxed-input-field-focus-background: #131b22;
    --boxed-input-field-focus-text: #e1e2e3;

    --boxed-input-field-invalid-border: #721c1c;
    --boxed-input-field-invalid-background: #180d0d;
    --boxed-input-field-invalid-text: #b3b3b3;
}

.containerBoxed {
    border-radius: .2em;
    border: 1px solid var(--boxed-input-field-border);

    background-color: var(--boxed-input-field-background);

    display: flex;
    flex-direction: row;
    justify-content: stretch;

    color: var(--boxed-input-field-text);

    &.size-normal {
        height: 2em;
    }

    &.size-large {
        height: 2.5em;
    }

    &.size-small {
        height: 1.7em;
    }

    @include placeholder(&) {
        color: var(--boxed-input-field-placeholder);
    };

    .prefix, .suffix {
        flex-grow: 0;
        flex-shrink: 0;

        margin: 0;

        line-height: initial;
        align-self: center;
        padding: 0 .5em;

        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;

        opacity: 1;

        @include transition($button_hover_animation_time ease-in-out);
    }

    .suffix {
        padding-left: 0;
    }

    &.isInvalid {
        background-color: var(--boxed-input-field-invalid-background);
        border-color: var(--boxed-input-field-invalid-border);
        color: var(--boxed-input-field-invalid-text);

        background-image: unset!important;
    }

    &.editable {
        &:focus, &:focus-within {
            background-color: var(--boxed-input-field-focus-background);
            border-color: var(--boxed-input-field-focus-border);

            color: var(--boxed-input-field-focus-text);

            .prefix, .suffix {
                width: 0;
                padding-left: 0;
                padding-right: 0;
                opacity: 0;
            }
        }
    }

    input, select, .inputBox {
        flex-grow: 1;
        flex-shrink: 1;

        background: transparent;

        border: none;
        outline: none;
        margin: 0;

        color: inherit;
        min-width: 2em;

        &.editable {
            cursor: text;
        }
    }

    .inputBox {
        display: flex;
        flex-direction: column;
        justify-content: center;
    }

    .prefix + input {
        padding-left: 0;
    }


    &:focus, &:focus-within {
        .prefix + input {
            padding-left: .5em;
        }
    }

    &.disabled, &:disabled {
        @include user-select(none);
        background-color: var(--boxed-input-field-disabled-background);
    }

    &.noRightIcon {
        input, select {
            padding-right: .5em;
        }
    }

    &.noLeftIcon {
        input, select {
            padding-left: .5em;
        }
    }

    &::-webkit-inner-spin-button,
    &::-webkit-outer-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

    @include transition($button_hover_animation_time ease-in-out);
}

.containerFlat {
    position: relative;

    padding-top: 1.75em; /* the label above (might be floating) */
    margin-bottom: 1em; /* for invalid label/help label */

    label {
        color: #999999;

        top: 1em;
        left: 0;
        font-size: .75em;

        position: absolute;
        pointer-events: none;
        transition: all .3s ease;

        line-height: 1;

        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;

        max-width: 100%;

        &.type-floating {
            will-change: left, top, contents;
            color: #999999;
            top: 2.42em;
            font-size: 1em;
        }

        &.type-static {
            top: 1em;
            font-size: .75em;
        }

        @include transition(color $button_hover_animation_time ease-in-out, top $button_hover_animation_time ease-in-out, font-size $button_hover_animation_time ease-in-out);
    }

    &:focus-within, &.isFilled {
        label {
            color: #3c74a2;

            &.type-floating {
                font-size: .75em;
                top: 1em;
            }
        }
    }

    input, select {
        display: block;

        height: 2.25em;
        width: 100%;

        font-size: 1em;
        line-height: 1.5;

        color: #cdd1d0;

        background: no-repeat bottom, 50% calc(100% - 1px);
        background-image: linear-gradient(0deg, #008aff 2px, rgba(0, 150, 136, 0) 0), linear-gradient(0deg, #393939 1px, transparent 0);
        background-clip: padding-box;
        background-size: 0 100%, 100% 100%;

        border: none;
        border-radius: 0;
        box-shadow: none;

        transition: background 0s ease-out;
        padding: .4375em 0;

        @include transition(all .15s ease-in-out);

        &:focus {
            background-size: 100% 100%, 100% 100%;
            transition-duration: .3s;

            color: #ced3d3;
            background-color: transparent;
            outline: 0;
        }

        option, optgroup {
            background: #121213;
        }
    }

    .invalidFeedback {
        position: absolute;
        opacity: 0;
        width: 100%;
        margin-top: .25em;
        font-size: 80%;
        color: #f44336;

        @include transition(opacity .25s ease-in-out);
    }

    &.isInvalid {
        input, select {
            background-image: linear-gradient(0deg, #d50000 2px,rgba(213,0,0,0) 0),linear-gradient(0deg,rgba(241,1,1,.61) 1px,transparent 0);
        }

        .invalidFeedback {
            opacity: 1;
        }

        label {
            color: #f44336!important;
        }
    }


    .help {
        position: absolute;
        opacity: 0;
        width: 100%;
        margin-top: .25em;

        font-size: .75em;

        @include transition(opacity .25s ease-in-out);
    }

    input:focus-within ~ .help, select:focus-within ~ .help {
        opacity: 1;
    }
}