Chocobozzz/PeerTube

View on GitHub
client/src/app/shared/shared-video-playlist/video-playlist-element-miniature.component.scss

Summary

Maintainability
Test Coverage
@use '_variables' as *;
@use '_mixins' as *;
@use '_miniature' as *;

$thumbnail-width: 130px;
$thumbnail-height: 72px;

my-timestamp-input {
  width: 85px;
}

my-video-thumbnail {
  @include thumbnail-size-component($thumbnail-width, $thumbnail-height);
}

.fake-thumbnail {
  width: $thumbnail-width;
  height: $thumbnail-height;
  background-color: #ececec;
}

my-video-thumbnail,
.fake-thumbnail {
  display: flex; // Avoids an issue with line-height that adds space below the element

  @include margin-right(10px);
}

.video {
  display: grid;
  grid-template-columns: 1fr auto;
  background-color: pvar(--mainBackgroundColor);
  padding: 10px;
  border-bottom: 1px solid $separator-border-color;

  &.playing {
    background-color: rgba(0, 0, 0, 0.02);
  }

  a {
    color: pvar(--mainForegroundColor);

    @include disable-default-a-behaviour;
  }

  > a {
    display: flex;
    min-width: 0;
    align-items: center;
    cursor: pointer;

    .position {
      font-weight: $font-semibold;
      color: pvar(--greyForegroundColor);
      min-width: 25px;

      my-global-icon {
        width: 17px;
        position: relative;
        left: -2px;

        @include apply-svg-color(pvar(--greyForegroundColor));
      }
    }
  }

  .more,
  my-edit-button {
    justify-self: flex-end;
    cursor: pointer;
    min-width: 24px;

    @include margin-left(auto);
  }

  .more {
    display: flex;
    align-items: center;
  }

  .more-button {
    opacity: 0;

    &::after {
      border: 0;
    }

    my-global-icon {
      @include apply-svg-color(pvar(--greyForegroundColor));
    }
  }

  &:hover,
  &:focus {
    background-color: rgba(0, 0, 0, 0.05);
  }

  &:hover,
  &:focus-within,
  .show {
    .more-button {
      opacity: 1;
    }
  }

  @media not all and (hover: hover) and (pointer: fine) {
    .more-button {
      opacity: 1 !important;
    }
  }
}

.video-info-name {
  font-size: 18px;
  font-weight: $font-semibold;
  display: inline-block;

  @include ellipsis;
}

.video-info {
  display: flex;
  flex-direction: column;
  align-self: flex-start;
  min-width: 0;

  .video-info-header {
    display: flex;
    align-items: baseline;

    a {
      width: auto;
    }

    .pt-badge {
      margin: 0 5px;
      white-space: nowrap;
    }
  }

  .video-info-owner,
  .video-info-timestamp {
    color: pvar(--greyForegroundColor);
  }
}

.video-info-owner,
.video-info-timestamp,
.video-miniature-created-at-views {
  font-size: 14px;
}

.dropdown-menu {

  .dropdown-item {
    cursor: pointer;

    @include dropdown-with-icon-item;
  }

  .timestamp-options {
    padding-top: 0;
    margin-top: 5px;
    margin-bottom: 15px;

    @include padding-left(35px);

    > div {
      display: flex;
      align-items: center;
      margin-bottom: 5px;
    }

    my-peertube-checkbox {
      @include margin-right(5px);
    }

    input {
      margin-top: 10px;

      @include peertube-button;
      @include orange-button;
    }
  }
}

@mixin more-dropdown-control {
  .video {
    my-edit-button {
      display: none;

      + .more-button {
        display: inline-flex;
      }
    }
  }
}

@mixin edit-button-control {
  .video {
    my-edit-button {
      display: none;
    }

    &.playing {
      my-edit-button {
        display: inline-flex;
        height: max-content;
        margin: auto;
      }
    }

    my-edit-button + .more-button {
      display: none;
    }
  }
}

@mixin edit-button-in-mobile-view {
  .video {
    my-edit-button {
      ::ng-deep .action-button-edit {
        padding: 0 13px;

        .button-label {
          display: none;
        }
      }
    }
  }
}

@media screen and (min-width: $small-view) {
  :host-context(.expanded) {
    @include more-dropdown-control();
  }
}

@media screen and (max-width: $small-view) {
  :host-context(.expanded) {
    @include edit-button-control();
  }
}

@media screen and (max-width: $mobile-view) {
  :host-context(.expanded) {
    @include edit-button-in-mobile-view();
  }
}

@media screen and (min-width: #{$small-view + $menu-width}) {
  :host-context(.main-col:not(.expanded)) {
    @include more-dropdown-control();
  }
}

@media screen and (max-width: #{$small-view + $menu-width}) {
  :host-context(.main-col:not(.expanded)) {
    @include edit-button-control();
  }
}

@media screen and (max-width: #{$mobile-view + $menu-width}) {
  :host-context(.main-col:not(.expanded)) {
    @include edit-button-in-mobile-view();
  }
}