@charset "UTF-8";

@import "../core/index-noreset";
@import "scss/variable";
@import "./rtl.scss";


#{$upload-prefix} {
    @include box-sizing;

    &-inner {
        &.#{$css-prefix}hidden {
            display: none;
        }
        outline: 0;
        display: inline-block;
    }

    &-list {
        overflow: hidden;
        @include box-sizing;
    }

    &-list-item {
        position: relative;
        &.#{$css-prefix}hidden {
            display: none;
        }
    }

    &-list-item-name {
        text-decoration: none;
    }

    &.#{$css-prefix}disabled {
        border-color: $upload-disable-border-color !important;
        color: $upload-disable-text-color !important;

        .#{$css-prefix}icon-close {
            cursor: not-allowed !important;
        }

        #{$upload-prefix}-inner * {
            color: $upload-disable-text-color !important;
            border-color: $upload-disable-border-color !important;
            cursor: not-allowed !important;
        }
    }
}

#{$upload-prefix}-list-text {
    #{$upload-prefix}-list-item {
        background-color: $upload-text-list-bg-color;
        // top-bottom s-1  left $upload-text-list-padding-left-right
        padding: $s-1 $upload-text-list-padding-left-right;
        // righrt: icon size + icon paddinng left-right
        padding-right: $upload-text-list-close-icon-right * 2 + $upload-text-list-close-icon-size;
        height: $upload-text-list-height;
        // line-height = height - padding-top-bottom
        line-height: $upload-text-list-height - $s-2;
        font-size: $upload-text-list-font-size;
        overflow: hidden;
        transition: all $motion-duration-immediately $motion-linear;
        border-radius: $upload-text-list-corner;

        &:not(:last-child) {
            margin-bottom: 4px;
        }

        .#{$css-prefix}icon {
            position: absolute;
            top: 0;
            right: $upload-text-list-close-icon-right;
            color: $upload-text-list-close-icon-color;
            cursor: pointer;
            text-align: center;
            transition: all $motion-duration-immediately $motion-linear;
            line-height: $upload-text-list-height;
            @include icon-size($upload-text-list-close-icon-size);
        }

        &:hover {
            background-color: $upload-text-list-bg-color-hover;
            .#{$css-prefix}icon {
                color: $upload-text-list-close-icon-color-hover;
            }
        }
        &-name-wrap {
            text-overflow: ellipsis;
            white-space: nowrap;
            overflow: hidden;
            margin-right: 4px;
        }
        &-name {
            color: $upload-text-list-name-font-color;
            transition: all $motion-duration-immediately $motion-linear;
        }

        &-size {
            color: $upload-text-list-size-font-color;
            margin-left: 8px;
        }
        &-uploading {
            // uploading state, two line display
            //  so  line-height = height / 2  - padding-top;
            line-height: $upload-text-list-height / 2 - $s-1;
            .#{$css-prefix}upload-list-item-progress {
                line-height: 0;
                padding-top: ($upload-text-list-height / 2 - $s-1 - $upload-text-list-progressbar-height) / 2;
                padding-bottom: ($upload-text-list-height / 2 - $s-1 - $upload-text-list-progressbar-height) / 2;
                .#{$css-prefix}progress-line-underlay {
                    height: $upload-text-list-progressbar-height;
                }
                .#{$css-prefix}progress-line-overlay {
                    height: $upload-text-list-progressbar-height;
                    margin-top: - ($upload-text-list-progressbar-height / 2);
                }
            }
        }
        &-done {
            // 行高 = 高度 - 上下padding
            line-height: $upload-text-list-height - $s-2;
        }
        &-done:hover .#{$css-prefix}upload-list-item-name {
            color: $upload-text-list-name-font-color-hover;
        }
        &-done:hover .#{$css-prefix}upload-list-item-size {
            color: $upload-text-list-size-font-color-hover;
        }
        &-error {
            /* stylelint-disable declaration-no-important */
            background-color: $upload-text-list-bg-color-error !important;
            &#{$upload-prefix}-list-item-error-with-msg {
                // error state with error msg, we need they are display at two line
                // so  line-height = height / 2  - padding-top;
                line-height: $upload-text-list-height / 2 - $s-1;
            }
            &-msg {
                text-overflow: ellipsis;
                white-space: nowrap;
                overflow: hidden;
                color: $upload-text-list-error-text-color;
            }
        }
    }
}

#{$upload-prefix}-list-image {
    .#{$css-prefix}upload-list-item {
        box-sizing: content-box;
        border: $upload-image-list-item-border-width solid $upload-image-list-item-border-color;
        background-color: $upload-image-list-item-bg-color;
        padding: $upload-image-list-item-padding;
        height: $upload-image-list-item-picture-size;
        line-height: $upload-image-list-item-picture-size;
        font-size: $upload-image-list-item-font-size;
        transition: all $motion-duration-immediately $motion-linear;
        overflow: hidden;
        border-radius: $upload-card-list-corner;

        &:not(:last-child) {
            margin-bottom: 4px;
        }
        @include clearfix();

        .#{$css-prefix}icon-close {
            float: right;
            margin-right: $upload-image-list-close-icon-right;
            cursor: pointer;
            color: $upload-image-list-close-icon-color;
            text-align: center;

            @include icon-size($upload-image-list-close-icon-size);
        }

        &:hover {
            border-color: $upload-image-list-item-border-color-hover;

            .#{$css-prefix}icon-close {
                color: $upload-image-list-close-icon-color-hover;
            }
        }

        &-name {
            display: block;
            color: $upload-text-list-name-font-color;
            // leave spaces for thumbnail
            margin-left: $upload-image-list-item-picture-size + $upload-image-list-item-padding;
            // leave spaces for close icon
            margin-right: $upload-image-list-close-icon-size + $upload-image-list-close-icon-right * 2;
            text-overflow: ellipsis;
            white-space: nowrap;
            overflow: hidden;
            transition: all $motion-duration-immediately $motion-linear;
        }

        &-size {
            color: $upload-text-list-size-font-color;
            margin-left: 8px;
        }

        &-done:hover .#{$css-prefix}upload-list-item-name {
            color: $upload-text-list-name-font-color-hover;
        }
        &-done:hover .#{$css-prefix}upload-list-item-size {
            color: $upload-text-list-size-font-color-hover;
        }

        $thumbnail-margin-right: $s-2 !default;
        @if ($upload-image-list-item-padding > $s-2) {
            $thumbnail-margin-right: $upload-image-list-item-padding;
        }
        &-thumbnail {
            float: left;
            width: $upload-image-list-item-picture-size;
            height: $upload-image-list-item-picture-size;
            color: $upload-image-list-item-thumbnail-font-color;
            border: $upload-image-list-item-picture-border-width solid $upload-image-list-item-picture-border-color;
            border-radius: $upload-image-list-item-picture-corner;
            background-color: $upload-image-list-item-picture-background-color;
            margin-right: $thumbnail-margin-right;
            vertical-align: middle;
            text-align: center;
            overflow: hidden;
            box-sizing: border-box;

            img {
                width: 100%;
                height: 100%;
            }

            .#{$css-prefix}icon {
                display: block;
                margin: 0;
                line-height: $upload-image-list-item-picture-size;

                @include icon-size($upload-image-list-item-picture-icon-size);
            }
        }

        &-error {
            border-color: $upload-image-list-item-border-color-error !important;
            background-color: $upload-image-list-item-error-bg-color;
        }

        &-uploading {
            background-color: $upload-image-list-item-uploading-bg-color;
            #{$upload-prefix}-list-item-name {
                height: $upload-image-list-item-picture-size / 2;
                line-height: $upload-image-list-item-picture-size / 2;
            }
            #{$upload-prefix}-list-item-progress {
                // 左边 把 thumbnail 的空间空出来
                margin-left: $upload-image-list-item-picture-size + $thumbnail-margin-right;
                // 右边边 把 icon 的空间空出来
                margin-right: $upload-image-list-close-icon-size + $upload-image-list-close-icon-right * 2;
                line-height: 0;
                padding-top: ($upload-image-list-item-picture-size / 2  - $upload-image-list-progressbar-height) / 2;
                padding-bottom: ($upload-image-list-item-picture-size / 2  - $upload-image-list-progressbar-height) / 2;

                .#{$css-prefix}progress-line-underlay {
                    height: $upload-image-list-progressbar-height;
                }
                .#{$css-prefix}progress-line-overlay {
                    height: $upload-image-list-progressbar-height;
                    margin-top: - ($upload-image-list-progressbar-height / 2);
                }
            }
        }
        &-error-with-msg {
            #{$upload-prefix}-list-item-name,
            #{$upload-prefix}-list-item-error-msg {
                height: $upload-image-list-item-picture-size / 2;
                line-height: $upload-image-list-item-picture-size / 2;
            }
            #{$upload-prefix}-list-item-error-msg {
                // 左边 把 thumbnail 的空间空出来
                margin-left: $upload-image-list-item-picture-size + $thumbnail-margin-right;
                // 右边边 把 icon 的空间空出来
                margin-right: $upload-image-list-close-icon-size + $upload-image-list-close-icon-right * 2;
                color: $upload-text-list-error-text-color;
                text-overflow: ellipsis;
                white-space: nowrap;
                overflow: hidden;
            }
        }
    }
}

#{$upload-prefix}-list-card {
    display: inline-block;
    .#{$css-prefix}upload-list-item {
        vertical-align: middle;
        float: left;

        &:not(:last-child) {
            margin-right: $upload-card-list-margin-right;
        }

        &-wrapper {
            position: relative;
            border: 1px solid $upload-card-list-border-color;
            width: $upload-card-size;
            height: $upload-card-size;
            padding: $upload-card-list-padding;
            background-color: $upload-card-list-bg-color;
        }

        &-thumbnail {
            text-align: center;
            width: 100%;
            height: 100%;
            color: $upload-card-list-thumbnail-font-color;
            font-size: $upload-card-list-thumbnail-font-size;

            img {
                max-width: 100%;
                max-height: 100%;
                position: absolute;
                top: 0;
                right: 0;
                bottom: 0;
                left: 0;
                margin: auto;

                &:focus {
                    outline: 0;
                }
            }

            .#{$css-prefix}icon {
                width: 100%;
                @include icon-size($upload-card-list-thumbnail-icon-size);
            }
        }

        &-handler {
            margin-top: ($upload-card-size - 74) / 2;
            .#{$css-prefix}icon-cry {
                margin-top: 10px;
            }
        }

        &-name {
            display: block;
            width: $upload-card-size;
            text-align: center;
            margin-top: $upload-card-list-name-margin-top;
            font-size: $upload-card-list-name-font-size;
            color: $upload-card-list-name-font-color;
            text-overflow: ellipsis;
            white-space: nowrap;
            overflow: hidden;
        }

        &-progress {
            position: absolute;
            font-size: 0;
            bottom: 0;
            left: 0;
            width: 100%;
            .#{$css-prefix}progress-line-underlay {
                border-radius: 0;
                height: $upload-card-list-progressbar-height;
            }
            .#{$css-prefix}progress-line-overlay {
                border-radius: 0;
                height: $upload-card-list-progressbar-height;
                margin-top: - ($upload-card-list-progressbar-height / 2);
            }
        }

        &-uploading .#{$css-prefix}upload-list-item-wrapper {
            background-color: $upload-card-list-uploading-bg-color;
        }

        &:hover {
            .#{$css-prefix}upload-tool {
                opacity: .8;
            }
        }

        .#{$css-prefix}upload-tool {
            position: absolute;
            z-index: 1;
            background-color: rgba($upload-select-card-tool-bg-color, $upload-select-card-tool-bg-opacity);
            transition: all $motion-duration-immediately $motion-linear;
            opacity: 0;
            width: 100%;
            height: $upload-select-card-tool-height;
            left: 0;
            bottom: 0;

            .#{$css-prefix}icon {
                width: 49%;
                text-align: center;
                line-height: $upload-select-card-tool-height;
                color: $color-white;
            }

            .#{$css-prefix}icon {
                @include icon-size($upload-select-card-tool-icon-size);
            }

            &.#{$css-prefix}noclose .#{$css-prefix}icon {
                width: 100%;
            }

            &-close {
                cursor: pointer;
            }

            &-download-icon {
                border-right: 1px solid $color-white;
            }
        }

        &-error .#{$css-prefix}upload-list-item-wrapper {
            border-color: $upload-card-list-border-color-error;
        }
    }
}

#{$upload-prefix}-card {
    border: 1px $upload-card-border-style $upload-card-border-color;
    width: $upload-card-size;
    height: $upload-card-size;
    background-color: $upload-card-bg-color;
    text-align: center;
    cursor: pointer;
    transition: border-color $motion-duration-immediately $motion-linear;
    display: table-cell;
    vertical-align: middle;

    .#{$css-prefix}icon {
        color: $upload-card-icon-color;
        @include icon-size($upload-card-add-icon-size);
    }

    .#{$css-prefix}upload-text {
        font-size: $upload-card-add-text-size;
        margin-top: $upload-card-add-text-margin-top;
        color: $upload-card-font-color;
        outline: none;
    }

    &:hover {
        border-color: $upload-card-hover-border-color;
        .#{$css-prefix}icon {
            color: $upload-card-hover-font-color;
        }
        .#{$css-prefix}upload-text {
            color: $upload-card-hover-font-color;
        }
    }
}

#{$upload-prefix}-dragable {
    #{$upload-prefix}-inner {
        display: block;
    }

    #{$upload-prefix}-drag {
        border: 1px dashed $upload-drag-zone-border-color;
        transition: border-color $motion-duration-immediately $motion-linear;
        cursor: pointer;
        border-radius: $upload-drag-zone-corner;
        background-color: $upload-drag-zone-bg-color;
        text-align: center;
        margin-bottom: $s-1;

        &-icon {
            margin: $s-5 0 0;
            color: $upload-drag-zone-upload-icon-color;

            #{$upload-prefix}-drag-upload-icon::before {
                content: $upload-drag-zone-upload-icon;
                font-size: $upload-drag-zone-icon-size;
            }
        }



        &-text {
            margin: $s-3 0 0;
            font-size: $upload-drag-zone-font-size;
            color: $upload-drag-zone-upload-normal-title-color;
        }
        &-hint {
            margin: $s-1 0 $s-5;
            font-size: $upload-drag-zone-hint-font-size;
            color: $upload-drag-zone-upload-normal-hint-color;
        }
        &-over {
            border-color: $upload-drag-zone-over-border-color;
        }
    }
}

