@import '../../style/themes/index';
@import '../../style/mixins/index';
@import '../../input/style/mixin';
@import '../../button/style/mixin';
@import '../../grid/style/mixin';
@import './components';
@import './inline';
@import './horizontal';
@import './cols';
@import './vertical';
@import './status';
@import './mixin';

@form-prefix-cls: ~'@{acud-prefix}-form';
@form-item-prefix-cls: ~'@{form-prefix-cls}-item';
@form-font-height: ceil(@form-font-size-base * @form-line-height-base);

.@{form-prefix-cls} {
    .reset-component();
    .reset-form();

    .@{form-prefix-cls}-text {
        display: inline-block;
        padding-right: 8px;
    }

    // ================================================================
    // =                             Size                             =
    // ================================================================
    .formSize(@input-height) {
        .@{form-item-prefix-cls}-label > label {
            height: @input-height;
        }

        .@{form-item-prefix-cls}-control-input {
            min-height: @input-height;
        }
    }

    &-small {
        .formSize(@input-height-sm);
    }
    &-large {
        .formSize(@input-height-lg);
    }
    &-tiny {
        .formSize(@input-height-md);

        .@{form-item-prefix-cls} {
            margin-bottom: @form-item-tiny-margin-bottom;
        }
    }
}

.explainAndExtraDistance(@num) when (@num >= 0) {
    padding-top: floor(@num);
}

.explainAndExtraDistance(@num) when (@num < 0) {
    margin-top: ceil(@num);
    margin-bottom: ceil(@num);
}

// ================================================================
// =                             Item                             =
// ================================================================
.@{form-item-prefix-cls} {
    .reset-component();

    margin-bottom: @form-item-margin-bottom;
    vertical-align: top;

    &-hidden,
    &-hidden.@{acud-prefix}-row {
        // https://github.com/ant-design/ant-design/issues/26141
        display: none;
    }

    // ==============================================================
    // =                            Label                           =
    // ==============================================================
    &-label {
        display: inline-block;
        flex-grow: 0;
        // overflow: hidden;
        white-space: nowrap;
        text-align: right;
        vertical-align: middle;

        &&-left {
            text-align: left;
        }

        > label {
            position: relative;
            // display: inline;
            display: inline-flex;
            align-items: center;
            height: @form-item-label-height;
            color: @form-item-label-color;
            font-size: @form-item-label-font-size;

            > .@{iconfont-css-prefix} {
                font-size: @form-item-label-font-size;
                vertical-align: top;
            }

            // Required mark
            &.@{form-item-prefix-cls}-required:not(.@{form-item-prefix-cls}-required-mark-optional)::before {
                display: inline-block;
                color: @form-item-label-required-color;
                font-size: @form-item-label-font-size;
                font-family: SimSun, sans-serif;
                line-height: 1;
                content: '*';
                margin-right: 4px;

                .@{form-prefix-cls}-hide-required-mark & {
                    display: none;
                }
            }

            // Optional mark
            .@{form-item-prefix-cls}-optional {
                display: inline-block;
                margin-left: @space-1;
                color: @form-secondary-color;

                .@{form-prefix-cls}-hide-required-mark & {
                    display: none;
                }
            }

            // Optional mark
            .@{form-item-prefix-cls}-tooltip {
                color: @form-secondary-color;
                cursor: help;
                writing-mode: horizontal-tb;
                margin-inline-start: @space-1;
                &::before {
                    & when (@form-item-trailing-colon=true) {
                        content: '\ff1a';
                    }
                    & when not (@form-item-trailing-colon=true) {
                        content: ' ';
                    }
                    position: relative;
                    top: -1px;
                    margin-left: -4px;
                    color: @form-item-label-color;
                    font-size: @form-item-label-font-size;
                }
            }

            &.@{form-item-prefix-cls}-has-tooltip {
                &::after {
                    content: ' ';
                }
            }

            &::after {
                & when (@form-item-trailing-colon=true) {
                    content: '\ff1a';
                }
                & when not (@form-item-trailing-colon=true) {
                    content: ' ';
                }

                position: relative;
                top: 1px;
            }

            &.@{form-item-prefix-cls}-no-colon {
                &::after {
                    content: ' ';
                }
                > .@{form-item-prefix-cls}-tooltip::before {
                    display: none;
                }
            }
        }
        &-extra {
            font-size: @form-font-size-base;
        }
    }

    // ==============================================================
    // =                            Input                           =
    // ==============================================================
    &-control {
        display: flex;
        flex-direction: column;
        flex-grow: 1;

        &:first-child:not([class^=~"'@{acud-prefix}-col-'"]):not([class*=~"' @{acud-prefix}-col-'"]) {
            width: 100%;
        }
    }

    &-control-input {
        position: relative;
        display: flex;
        align-items: center;
        min-height: @form-input-height;

        &-content {
            flex: auto;
            max-width: 100%;
        }
    }

    &-explain,
    &-extra {
        clear: both;
        margin: @form-item-with-extra-margin;
        min-height: @form-item-extra-min-height;
        // color: @form-secondary-color;
        color: @G5;
        font-size: @form-font-size-base;
        line-height: @form-line-height-base;
        transition: color 0.3s @ease-out; // sync input color transition
        .explainAndExtraDistance((@form-item-margin-bottom - @form-font-height) / 2);
    }

    // ingore both margin when explain and extra exist meanwhile.
    &-with-extra {
        .@{form-item-prefix-cls}-explain {
            margin-bottom: 0;
        }
    }

    .@{acud-prefix}-input-textarea-show-count {
        &::after {
            margin-bottom: -22px;
        }
    }
}

.show-help-motion(@className, @keyframeName, @duration: @animation-duration-slow) {
    @name: ~'@{acud-prefix}-@{className}';
    .make-motion(@name, @keyframeName, @duration);
    .@{name}-enter,
    .@{name}-appear {
        opacity: 0;
        animation-timing-function: @ease-in-out;
    }
    .@{name}-leave {
        animation-timing-function: @ease-in-out;
    }
}

.show-help-motion(show-help, antShowHelp, 0.3s);

@keyframes antShowHelpIn {
    0% {
        transform: translateY(-5px);
        opacity: 0;
    }
    100% {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes antShowHelpOut {
    to {
        transform: translateY(-5px);
        opacity: 0;
    }
}

// need there different zoom animation
// otherwise won't trigger anim
@keyframes diffZoomIn1 {
    0% {
        transform: scale(0);
    }
    100% {
        transform: scale(1);
    }
}

@keyframes diffZoomIn2 {
    0% {
        transform: scale(0);
    }
    100% {
        transform: scale(1);
    }
}

@keyframes diffZoomIn3 {
    0% {
        transform: scale(0);
    }
    100% {
        transform: scale(1);
    }
}

@import './rtl';
