@import './var.less';

:root {
  --van-uploader-size: @uploader-size;
  --van-uploader-border-radius: @uploader-border-radius;
  --van-uploader-border: @uploader-border;
  --van-uploader-icon-size: @uploader-icon-size;
  --van-uploader-icon-color: @uploader-icon-color;
  --van-uploader-text-color: @uploader-text-color;
  --van-uploader-text-font-size: @uploader-text-font-size;
  --van-uploader-upload-background-color: @uploader-upload-background-color;
  --van-uploader-upload-active-color: @uploader-upload-active-color;
  --van-uploader-delete-color: @uploader-delete-color;
  --van-uploader-delete-icon-size: @uploader-delete-icon-size;
  --van-uploader-delete-background-color: @uploader-delete-background-color;
  --van-uploader-file-background-color: @uploader-file-background-color;
  --van-uploader-file-icon-size: @uploader-file-icon-size;
  --van-uploader-file-icon-color: @uploader-file-icon-color;
  --van-uploader-file-name-padding: @uploader-file-name-padding;
  --van-uploader-file-name-margin-top: @uploader-file-name-margin-top;
  --van-uploader-file-name-font-size: @uploader-file-name-font-size;
  --van-uploader-file-name-text-color: @uploader-file-name-text-color;
  --van-uploader-mask-text-color: @uploader-mask-text-color;
  --van-uploader-mask-background-color: @uploader-mask-background-color;
  --van-uploader-mask-icon-size: @uploader-mask-icon-size;
  --van-uploader-mask-message-font-size: @uploader-mask-message-font-size;
  --van-uploader-mask-message-line-height: @uploader-mask-message-line-height;
  --van-uploader-loading-icon-size: @uploader-loading-icon-size;
  --van-uploader-loading-icon-color: @uploader-loading-icon-color;
  --van-uploader-disabled-opacity: @uploader-disabled-opacity;
  --van-uploader-required-color: @uploader-required-color;
  --van-uploader-label-color: @uploader-label-color;
  --van-uploader-label-font-size: @uploader-label-font-size;
  --van-uploader-label-line-height: @uploader-label-line-height;
  --van-uploader-label-margin-bottom: @uploader-label-margin-bottom;
}

.van-uploader {
  position: relative;
  display: inline-block;

  &--required::before {
    position: absolute;
    top: 0;
    left: calc(-1 * var(--van-padding-sm));
    color: var(--van-uploader-required-color);
    font-size: var(--van-font-size-md);
    line-height: var(--van-line-height-md);
    content: '*';
  }

  &__label {
    position: relative;
    margin-bottom: var(--van-uploader-label-margin-bottom);
    color: var(--van-uploader-label-color);
    font-size: var(--van-uploader-label-font-size);
    line-height: var(--van-uploader-label-line-height);
  }

  &__required {
    position: absolute;
    top: 0;
    left: calc(-1 * (var(--van-padding-md) - var(--van-padding-xs)));
    color: var(--van-uploader-required-color);
  }

  &__wrapper {
    display: flex;
    flex-wrap: wrap;
    gap: var(--van-padding-xs);

    &--disabled {
      opacity: var(--van-uploader-disabled-opacity);
    }
  }

  &__input {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden; // to clip file-upload-button
    cursor: pointer;
    opacity: 0;

    &--hidden {
      display: none;
    }

    &-wrapper {
      position: relative;
    }

    &:disabled {
      cursor: not-allowed;
    }
  }

  &__upload {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    width: var(--van-uploader-size);
    height: var(--van-uploader-size);
    //margin: 0 var(--van-padding-xs) var(--van-padding-xs) 0;
    background: var(--van-uploader-upload-background-color);
    border-radius: var(--van-uploader-border-radius);
    border: var(--van-uploader-border);

    &:active {
      background-color: var(--van-uploader-upload-active-color);
    }

    &--readonly:active {
      background-color: var(--van-uploader-upload-background-color);
    }

    &-icon {
      color: var(--van-uploader-icon-color);
      font-size: var(--van-uploader-icon-size);
    }

    &-text {
      margin-top: var(--van-padding-xs);
      color: var(--van-uploader-text-color);
      font-size: var(--van-uploader-text-font-size);
    }
  }

  &__preview {
    position: relative;
    //margin: 0 var(--van-padding-xs) var(--van-padding-xs) 0;
    cursor: pointer;
    border-radius: var(--van-uploader-border-radius);
    overflow: hidden;

    &-image {
      display: block;
      width: var(--van-uploader-size);
      height: var(--van-uploader-size);
      border-radius: var(--van-uploader-border-radius);
      border: var(--van-uploader-border);
      overflow: hidden;
      box-sizing: border-box;
    }

    &-delete {
      position: absolute;
      top: 0;
      right: 0;

      &--shadow {
        width: var(--van-uploader-delete-icon-size);
        height: var(--van-uploader-delete-icon-size);
        background: var(--van-uploader-delete-background-color);
        border-radius: 0 0 0 12px;
      }

      &-icon {
        position: absolute;
        top: 0;
        right: 0;
        color: var(--van-uploader-delete-color);
        font-size: var(--van-uploader-delete-icon-size);
        transform: scale(0.7) translate(10%, -10%);
      }
    }

    &-cover {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
    }
  }

  &__mask {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: var(--van-uploader-mask-text-color);
    background: var(--van-uploader-mask-background-color);
    border-radius: var(--van-uploader-border-radius);
    border: var(--van-uploader-border);

    &-icon {
      font-size: var(--van-uploader-mask-icon-size);
    }

    &-message {
      margin-top: 6px;
      padding: 0 var(--van-padding-base);
      font-size: var(--van-uploader-mask-message-font-size);
      line-height: var(--van-uploader-mask-message-line-height);
    }
  }

  &__loading {
    width: var(--van-uploader-loading-icon-size);
    height: var(--van-uploader-loading-icon-size);
    color: var(--van-uploader-loading-icon-color);
  }

  &__file {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: var(--van-uploader-size);
    height: var(--van-uploader-size);
    background: var(--van-uploader-file-background-color);

    &-icon {
      color: var(--van-uploader-file-icon-color);
      font-size: var(--van-uploader-file-icon-size);
    }

    &-name {
      box-sizing: border-box;
      width: 100%;
      margin-top: var(--van-uploader-file-name-margin-top);
      padding: var(--van-uploader-file-name-padding);
      color: var(--van-uploader-file-name-text-color);
      font-size: var(--van-uploader-file-name-font-size);
      text-align: center;
    }
  }
}
