Chocobozzz/PeerTube

View on GitHub
client/src/app/shared/shared-forms/markdown-textarea.component.scss

Summary

Maintainability
Test Coverage
@use 'sass:math';
@use '_variables' as *;
@use '_mixins' as *;

$nav-preview-tab-height: 30px;
$base-padding: 15px;
$input-border-radius: 3px;

.root {
  display: flex;
  flex-direction: column;

  textarea {
    background-color: pvar(--markdownTextareaBackgroundColor);

    font-family: monospace;
    font-size: 13px;
    border-bottom: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;

    @include peertube-textarea(100%, 150px);
  }

  .nav-preview {
    padding: 10px 0;

    border: 1px solid pvar(--inputBorderColor);
    border-top: 1px dashed pvar(--inputBorderColor);

    border-bottom-right-radius: $input-border-radius;
    border-bottom-left-radius: $input-border-radius;

    display: flex;
    flex-grow: 1;
    border-bottom-left-radius: unset;
    border-bottom-right-radius: unset;
    border-bottom: 2px solid pvar(--mainColor);

    .maximize-button {
      opacity: 0.6;

      &:not([disabled]) {
        &:hover,
        &:active {
          opacity: 1;
        }
      }
    }
  }

  .nav-pills {
    display: flex;
    align-items: center;
    justify-content: flex-end;

    > * {
      font-size: 0.9em !important;
    }
  }

  .tab-content {
    min-height: 75px;
    max-height: 210px;
    padding: $base-padding;

    overflow-y: auto;
    word-wrap: break-word;

    border: 1px solid pvar(--inputBorderColor);
    border-top: 0;

    border-bottom-left-radius: $input-border-radius;
    border-bottom-right-radius: $input-border-radius;
  }

  &.maximized {
    z-index: #{z(root-header) - 1};
    position: fixed;
    top: $header-height;
    left: $menu-width;

    max-height: none !important;
    max-width: none !important;
    width: calc(100% - #{$menu-width});
    height: calc(100vh - #{$header-height});

    display: grid;
    grid-template-rows: auto 1fr;
    grid-template-columns: 1fr 1fr;

    background-color: pvar(--mainBackgroundColor);

    .nav-preview {
      grid-row: 1;
      grid-column: 1 / 3;

      border: 0;
      border-bottom: 2px solid pvar(--mainColor);

      padding: 20px 0;
      width: 100% !important;
    }

    textarea {
      grid-column: 1;

      border: 0;
      border-right: 1px dashed pvar(--inputBorderColor);

      resize: none;
    }

    ::ng-deep .tab-content {
      grid-column: 2;

      border: 0;

      display: block;
      overflow-y: auto;
      word-wrap: break-word;

      scrollbar-color: pvar(--actionButtonColor) pvar(--mainBackgroundColor);
    }

    textarea,
    ::ng-deep .tab-content {
      grid-row: 2;

      height: 100% !important;
      max-height: none !important;
      border-radius: 0;

      padding: 15px;
    }

    @media screen and (max-width: $mobile-view) {
      grid-template-rows: auto 45% 1fr;
      grid-template-columns: 1fr;

      .nav-preview {
        grid-column: 1;
      }

      textarea {
        grid-row: 2;
        grid-column: 1;
        border: 0;
        border-bottom: 1px dashed pvar(--inputBorderColor);;
      }

      ::ng-deep .tab-content {
        grid-column: 1;
        grid-row: 3;
      }
    }
  }
}

:host-context(.main-col.expanded) {
  .root.maximized {
    left: 0;
    width: 100%;
  }
}