Skip to content
Snippets Groups Projects
_course-experience.scss 10.78 KiB
// ------------------------------
// Styling for files located in the openedx/features repository.

// Course sidebar sections
.course-sidebar {
  .section {
    h3 {
      font-size: $font-size-base;
      font-weight: $font-weight-bold;
    }

    .icon {
      width: 20px;
    }

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

// Course call to action message
.course-message {
  display: flex;

  .message-author {
    display: inline-block;
    width: 70px;
    height: 70px;
    border-radius: $baseline*7/4;
    border: 1px solid $border-color;

    @media (max-width: $grid-breakpoints-md) {
      display: none;
    }
  }

  .message-content {
    @include margin(0, 0, $baseline, $baseline);

    flex-grow: 1;
    position: relative;
    border: 1px solid $border-color;
    padding: $baseline;
    border-radius: $baseline/4;

    @media (max-width: $grid-breakpoints-md) {
      width: 100%;
      margin: $baseline 0;
    }

    &::after,
    &::before {
      @include left(0);

      top: 25px;
      border: solid transparent;
      height: 0;
      width: 0;
      content: " ";
      position: absolute;

      @media (max-width: $grid-breakpoints-md) {
        display: none;
      }
    }

    &::after {
      @include border-right-color($white);
      @include margin-left($baseline*-1+1);

      border-width: $baseline/2;
    }

    &::before {
      @include margin-left($baseline*-1);
      @include border-right-color($border-color);

      border-width: $baseline/2;
    }

    .message-header {
      @include margin-right($baseline*4);

      font-weight: $font-semibold;
      margin-bottom: $baseline/2;
    }

    a:not(.btn) {
      font-weight: $font-semibold;
      text-decoration: underline;
    }

    .dismiss {
      @include right($baseline/4);

      top: $baseline/4;
      position: absolute;
      cursor: pointer;
      color: $black-t3;

      &:hover {
        color: $black-t2;
      }
    }
    // Course Goal Message Styling
    .success-message {
      font-size: font-size(small);
    }

    .goal-options-container {
      margin-top: $baseline;
      text-align: center;
      display: flex;
      flex-direction: row;

      .goal-option {
        text-decoration: none;
        font-size: $font-size-base;
        padding: $baseline/2;
        margin: $baseline/4 $baseline/4 0;
        flex-grow: 1;

        &:not(.dismissible):first-of-type {
          color: theme-color("purchase");
          border-color: theme-color("purchase");

          &:hover {
            color: theme-color("inverse");
            background-color: theme-color("purchase");
          }
        }

        &.dismissible {
          @include right($baseline/4);

          position: absolute;
          top: $baseline/2;
          margin: 0;
          width: auto;
          flex-grow: 1;
          font-size: font-size(small);
          color: $link-color;
          text-decoration: underline;

          cursor: pointer;

          &:hover {
            color: $link-hover-color;
          }
        }
      }

      @media (max-width: $grid-breakpoints-md) {
        flex-direction: column;

        .goal-option {
          margin-top: $baseline/4;
          width: 100%;
        }
      }
    }
  }

  .message-actions {
    display: flex;
    margin-top: $baseline/2;
    justify-content: flex-end;
  }
}

// Welcome message / Latest Update message
.welcome-message,
.update-message {
  border: solid 1px $border-color;

  @include border-left(solid 4px $black);

  margin-bottom: $baseline;
  padding: $baseline;
  overflow: hidden;

  h1,
  h2,
  h3 {
    font-weight: $font-bold;
    color: $black;
    margin-bottom: $baseline;
  }

  img {
    @include float(left);

    margin: $baseline/2;
    max-width: 100%;
  }

  .dismiss-message {
    @include float(right);

    .btn-link {
      color: $gray-800;
      border-color: transparent;
      cursor: pointer;
    }
  }

  .welcome-message-show-more {
    float: right;
    background-color: transparent;
    color: $black;
    cursor: pointer;
  }
}

// Course sidebar
.course-sidebar {
  @include margin-left(0);
  @include padding-left($baseline);

  // Course Goal Updates
  .section-goals {
    @include float(left);

    border: 1px solid $border-color;
    padding: $baseline*0.75 $baseline*0.75 $baseline*0.5;
    border-radius: 5px;
    position: relative;
    width: 100%;
    cursor: pointer;
    margin-bottom: $baseline;

    &.hidden {
      display: none;
    }

    .edit-goal-select {
      display: none;
      background-color: transparent;
    }

    .edit-icon {
      @include right($baseline/4);

      position: absolute;
      top: $baseline*0.6;
      cursor: pointer;
      border: transparent;
      background-color: transparent;

      &:hover {
        color: $border-color;
      }
    }

    .current-goal-container {
      .title {
        @include margin($baseline/5, $baseline*0.4, 0, 0);
        @include float(left);
      }

      .title-label {
        display: none;
      }

      .goal {
        @include float(left);
        @include padding-left($baseline*0.4);
      }

      .response-icon {
        @include margin-left($baseline/4);
        @include right(-1*$baseline);

        top: $baseline*0.75;
        position: absolute;

        &.fa-check {
          color: theme-color("success");
        }

        &.fa-close {
          color: theme-color("error");
        }
      }
    }
  }

  .section-tools .course-tool {
    .course-tool-link:visited {
      color: theme-color("primary");
    }

    &:not(:first-child) {
      margin-top: ($baseline / 5);
    }

    .course-tool-button {
      background: none;
      border: none;
      color: theme-color("primary");
      cursor: pointer;
      font-size: 1em;
      padding: 0;
      text-align: left;
    }
  }

  @media print {
    .section-tools {
      display: none !important;
    }
  }

  @include media-breakpoint-down(sm) {
    @include padding-left(0);

    border-top: 1px solid theme-color("light");
    padding-top: $baseline;
  }
}

// Course outline for visual progress waffle switch
.course-outline {
  .block-tree {
    margin: 0;
    padding: 0;
    list-style-type: none;

    // Course outline accordion / link
    .outline-button {
      display: block;
      padding: 10px 0 10px 2px;
      border: none;
      width: 100%;
      text-align: left;
      margin: 0;
      background: none;
      cursor: pointer;

      .fa {
        color: $blue;
      }

      .prerequisites-icon {
        margin-right: 0.25rem;
      }

      .complete-checkmark {
        border: 1px solid $green;
        margin-right: $baseline / 2;
        border-radius: 100px;
        color: white;
        background-color: $green;
        float: right;
      }
    }

    .section {
      @include media-breakpoint-up(md) {
        margin: 0;
      }

      margin: 0 (-1 * $baseline) 0 ($baseline);
      width: calc(100% + (2));
      padding: 0;
      border-bottom: 1px solid $border-color;

      .section-name {
        padding: ($baseline / 2) 0 ($baseline / 2) 2px;

        .section-title {
          font-weight: $font-regular;
          font-size: 1.1rem;
          margin: 0;
          display: inline;
          padding-left: $baseline - 2;
        }
      }

      .outline-item {
        @include padding-left(0);
      }

      ol.outline-item {
        margin: 0;

        .subsection {
          list-style-type: none;
          border-top: 1px solid $border-color;
          margin: 0 0 0 35px;

          .subsection-title {
            margin: 0;
            font-weight: $font-regular;
            display: inline;
          }

          .subsection-text {
            .details {
              font-size: $body-font-size;
              color: theme-color("secondary");
            }

            .prerequisite {
              color: theme-color("secondary");
              font-weight: $font-bold;
            }
          }
        }
      }
    }
  }

  .fa-chevron-right {
    transform: rotateY(0deg) #{"/*rtl: rotateY(180deg)*/"};
    font-size: inherit;

    &.fa-rotate-90 {
      transform: rotate(90deg) #{"/*rtl: rotate(90deg)*/"};
      font-size: inherit;
    }
  }
}

// extra padding for expand/collapse text change
.expand-collapse-outline-all-extra-padding {
  padding: 0 4px;
}

.accordion-panel.is-hidden {
  display: none;
}

// date summary
.date-summary-container {
  .date-summary {
    @include clearfix;

    display: flex;
    justify-content: space-between;
    padding: 12px 0;

    &:last-of-type {
      padding-bottom: 0;
    }

    .right-column {
      flex: auto;
      padding-left: 4px;

      .localized-datetime {
        font-weight: $font-weight-bold;
        margin-bottom: 8px;
      }

      .heading {
        font: -apple-system-body;
        line-height: 1.5;
        font-weight: $font-bold;
        color: theme-color("dark");

        a {
          font-size: 0.9rem;
        }
      }

      .description {
        margin-bottom: 0;
        display: inline-block;
      }

      .heading,
      .description {
        font-size: 0.9rem;
      }

      .date-summary-link {
        font-weight: $font-semibold;
        padding-top: 12px;

        a {
          font-size: 0.9rem;
        }
      }
    }

    .date {
      color: theme-color("dark");
      font: -apple-system-body;
    }
  }
}

.dates-tab-link {
  padding: 12px 0 0 24px;

  a {
    font-size: 0.9rem;
  }
}

// Course Updates Page
.course-updates {
  .all-updates {
    flex-grow: 1;

    .updates-article {
      margin: ($baseline*6/5) 0;
      padding-bottom: ($baseline*6/5);
      border-bottom: 1px solid $border-color;

      .date {
        font-size: 0.875rem;
        font-weight: $font-light;
        float: none;
        padding-bottom: ($baseline/4);
      }

      &:last-child {
        border-bottom: 0;
      }

      img {
        margin: $baseline/2;
        max-width: 100%;
      }
    }

    .well {
      box-shadow: inset 0 1px 2px 1px $shadow;
      padding: 1.25rem;
      background: $gray-100;
    }
  }
}

// Course Breadcrumbs
.has-breadcrumbs .breadcrumbs {
  font-size: 0.875rem;

  .nav-item {
    @include margin-left($baseline/4);
  }

  .fa-angle-right {
    transform: rotateY(0deg) #{"/*rtl: rotateY(180deg)*/"};

    @include margin-left($baseline/4);
  }
}

// Course Reviews Page
.course-reviews {
  .page-header.has-secondary > .page-header-main {
    display: block;
    position: relative;

    .toggle-read-write-reviews {
      position: absolute;
      top: $baseline * (-1/2);
      right: $baseline / 2;
      cursor: pointer;
      background-color: theme-color("primary");
    }
  }

  .course-reviews-tool {
    margin: ($baseline * 2) ($baseline * 3);
    position: relative;
    text-align: center;
    min-height: 300px;

    .fa.fa-spinner {
      @include left(50%);

      font-size: 2rem;
      margin-top: $baseline*3;
      position: absolute;
    }

    iframe {
      display: block !important;
    }
  }
}