@import "../lib.less";
@import "../variables/components/uploader.less";
@import "../variables/components/button.less";

.@{veui-prefix}-uploader {
  outline: none;
  font-size: @veui-uploader-font-size-s;

  &-media {
    display: flex;
  }

  .@{veui-prefix}-disabled {
    .@{veui-prefix}-icon,
    .veui-icon {
      color: currentColor;
    }
  }

  &-file {
    flex-direction: column;
  }

  &-button-container {
    display: flex;
    position: relative;
    align-items: center;
  }

  &-input-label-media {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    .absolute(-1px);
    border-style: none;
    line-height: inherit;
    border-radius: inherit;

    padding: 0 @veui-uploader-media-padding-x-m;

    .veui-uploader-media-button-text {
      display: none;
    }

    &::before {
      display: none;
    }

    .@{veui-prefix}-icon {
      .veui-icon-size(@veui-uploader-media-icon-size);
      margin: 0;
      color: @veui-uploader-media-icon-color;
    }
  }

  &-list-media-container-upload > &-input-label-media {
    border: 1px solid @veui-uploader-media-border-color;

    &:hover {
      background-color: @veui-uploader-media-background-color-hover;
    }

    &:active {
      background-color: @veui-uploader-media-background-color-active;
    }
  }

  &-list,
  &-list-media {
    padding: 0;
    margin: 0;
    list-style: none;

    &-item {
      position: relative;
      .veui-transition(transform, opacity);
    }

    .@{veui-prefix}-uploader-success-icon {
      color: @veui-uploader-foreground-color-success;
      opacity: 0;
    }

    .@{veui-prefix}-uploader-failure-icon {
      color: @veui-uploader-foreground-color-error;
    }

    &-enter,
    &-leave-to {
      opacity: 0;
    }

    &-leave-active {
      position: absolute;
    }
  }

  &-list {
    &-item {
      margin-top: @veui-uploader-helper-text-spacing-file-l;
      width: @veui-uploader-file-item-width;

      &-failure {
        .@{veui-prefix}-uploader-validities {
          display: none;
        }
      }
    }

    &-file-icon {
      flex: none;
      color: @veui-uploader-file-item-list-icon;
    }

    &-file-content {
      display: flex;
      align-items: center;
    }

    &-actions {
      display: flex;
      margin-left: auto;

      .@{veui-prefix}-button {
        color: @veui-uploader-file-item-icon-color;
        &:hover {
          color: @veui-uploader-file-item-list-icon;
        }
      }

      .@{veui-prefix}-button + .@{veui-prefix}-button {
        margin-left: @veui-uploader-file-item-action-spacing;
      }

      .@{veui-prefix}-icon {
        .veui-icon-size(@veui-icon-size-normal);
      }
    }

    &-container {
      position: relative;
      background-color: @veui-uploader-file-item-background-color;
      .veui-transition(background-color);
      padding-right: @veui-uploader-file-item-padding-x;
      line-height: @veui-line-height-fixed-s;
    }

    .@{veui-prefix}-uploader-success-icon,
    .@{veui-prefix}-uploader-failure-icon {
      margin-left: auto;
      flex: none;
    }

    &-container:hover {
      background-color: @veui-uploader-file-item-background-color-hover;

      .@{veui-prefix}-uploader-list-remove {
        display: flex;
      }

      .@{veui-prefix}-uploader-success-icon,
      .@{veui-prefix}-uploader-failure-icon {
        display: none;
      }
    }

    &-name {
      .ellipsis();
      margin: 0 @veui-uploader-file-item-label-spacing-after 0
        @veui-uploader-file-item-label-spacing-before;
    }

    &-name-failure {
      color: @veui-uploader-foreground-color-error;
    }

    .@{veui-prefix}-icon&-file-icon-failure {
      color: @veui-uploader-foreground-color-error;
    }

    .@{veui-prefix}-button&-remove {
      margin-left: auto;
      display: none;
    }

    .@{veui-prefix}-progress {
      .absolute(
        _,
        @veui-uploader-file-item-padding-x,
        -@veui-uploader-file-item-spacing-y-s / 2,
        @veui-uploader-file-item-padding-x
      );
      transform: translateY(50%);
    }

    .@{veui-prefix}-progress .@{veui-prefix}-progress-rail {
      width: 100%;
    }
  }

  &-list-media {
    margin: -@veui-uploader-media-spacing-y 0 0 -@veui-uploader-media-spacing-x;

    &-item {
      display: inline-flex;
      vertical-align: top;
      margin: @veui-uploader-media-spacing-y 0 0 @veui-uploader-media-spacing-x;
      width: @veui-uploader-media-width;

      &-hidden {
        opacity: 0;
        position: absolute;
        z-index: -1;
      }
    }

    &-item-dropdown-open &-mask {
      opacity: 1;
    }

    &-container {
      display: flex;
      position: relative;
      border-radius: @veui-button-border-radius-m;
      border: 1px solid @veui-button-border-color-basic;
      background-color: @veui-button-background-color-basic;
      .size(100%, @veui-uploader-media-height);

      &-media {
        width: auto;
        height: auto;
        max-width: 100%;
        max-height: 100%;
        .veui-position-center();
      }

      &:hover {
        .@{veui-prefix}-uploader-entries-container {
          opacity: 1;
        }
      }
    }

    &-item-entry-dropdown-open .@{veui-prefix}-uploader-entries-container {
      opacity: 1;
    }

    &-container:not(&-container-upload) {
      overflow: hidden;
    }

    &-container:hover &-mask {
      opacity: 1;
    }

    &-container-uploading {
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 0 @veui-uploader-media-padding-x;

      &-text {
        margin: 0;
      }

      .@{veui-prefix}-progress {
        width: 100%;
        height: auto;
        margin-top: @veui-uploader-media-content-spacing;
      }
    }

    &-container-failure {
      flex-direction: column;
      border: 1px solid @veui-uploader-media-border-color-error;

      .@{veui-prefix}-uploader-input-label-media {
        flex-direction: column;
        justify-content: center;
        align-items: center;
        outline: none;
        bottom: veui-sum(
          @veui-uploader-mask-padding-y * 2,
          @veui-icon-size-minor,
          -1px
        );
      }

      .@{veui-prefix}-uploader-list-media-file-name {
        color: @veui-uploader-foreground-color-error;
        max-width: calc(100% - 2 * @veui-uploader-media-padding-x);
        .ellipsis();
        margin-top: @veui-uploader-media-error-spacing;
      }
    }

    &-mask {
      display: flex;
      justify-content: center;
      align-items: center;
      opacity: 0;
      .veui-transition(opacity);
      .absolute(0, 0, 0, 0);
      background-color: @veui-uploader-mask-background-color;
      padding: @veui-uploader-mask-padding-y @veui-uploader-mask-padding-x;

      .@{veui-prefix}-button {
        color: @veui-uploader-mask-icon-color !important;
      }

      .@{veui-prefix}-control-item {
        margin-left: @veui-uploader-mask-icon-spacing;
        &:first-child {
          margin-left: 0;
        }
      }
    }

    &-picker-before {
      display: flex;
      flex-wrap: wrap;

      &-item-upload {
        order: 0;
      }
    }
  }

  & &-file-help-bottom {
    flex-direction: column;
    align-items: flex-start;

    .@{veui-prefix}-uploader-help {
      margin-top: @veui-uploader-helper-text-spacing-file-m;
      margin-left: 0;
    }
  }

  &-help {
    color: @veui-uploader-helper-text-font-color;
  }

  &-validities {
    margin-top: @veui-uploader-helper-text-spacing-file-s;
    .@{veui-prefix}-message-content {
      .ellipsis();
    }
  }

  &-media &-help {
    margin-top: @veui-uploader-helper-text-spacing-file-m;
  }

  &-file &-help {
    margin-left: @veui-uploader-helper-text-spacing-file-m;
  }

  &-list-media-help-side {
    width: auto;
  }

  &-list-media-help-bottom {
    flex-direction: column;
  }

  &-list-media-container-wrap {
    width: 100%;
  }

  &-list-media-help-side &-list-media-container-wrap,
  &-list-media-help-side &-list-media-container {
    width: @veui-uploader-media-width;
  }

  &-list-media-help-side &-help {
    margin-left: @veui-uploader-helper-text-spacing-file-m;
    height: @veui-uploader-media-height;
    max-width: @veui-uploader-helper-text-max-width-media;
  }

  &-entries-container {
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;
    position: absolute;
    .absolute(0, _, _, 0);
    padding: @veui-uploader-media-entry-spacing 0;
    background-color: @veui-color-info-1;
    opacity: 0;
    .veui-transition(opacity);
    .size(100%);

    .@{veui-prefix}-icon {
      .veui-icon-size(@veui-uploader-media-entry-icon-size, true);
    }

    & > .@{veui-prefix}-uploader-controls {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      height: 100%;
      padding: 0;

      .@{veui-prefix}-control-item {
        justify-content: flex-start;
      }
    }
  }

  &[ui~="xs"] {
    font-size: @veui-uploader-font-size-s;
      .@{veui-prefix}-uploader-button-container {
          .@{veui-prefix}-uploader-input-label {
              padding: 0 @veui-uploader-file-padding-x-xs;
          }
      }
  }

  &[ui~="m"] {
      font-size: @veui-uploader-font-size-m;
      .@{veui-prefix}-uploader-button-container {
          .@{veui-prefix}-uploader-input-label {
              padding: 0 @veui-uploader-file-padding-x-m;
          }
      }
      .@{veui-prefix}-uploader-list-container {
          line-height: @veui-line-height-fixed;
      }
  }

  &[ui~="l"] {
      font-size: @veui-uploader-font-size-l;
      .@{veui-prefix}-uploader-button-container {
          .@{veui-prefix}-uploader-input-label {
              padding: 0 @veui-uploader-file-padding-x-l;
          }
      }
      .@{veui-prefix}-uploader-list-container {
          line-height: @veui-line-height-fixed-l;
      }
  }

  &[ui~="horizon"] {
      .@{veui-prefix}-uploader-list {
          display: flex;
          flex-wrap: wrap;
          &-item {
              width: auto;
              max-width: 380px;
              margin-right: @veui-uploader-helper-text-spacing-file-l;
          }
      }
  }

  &-hide {
    display: none;
  }
}
