Skip to content
Snippets Groups Projects
course-item.component.html 5.14 KiB
Newer Older
  class="course-item {{ disabled ? 'disabled' : '' }} {{ status }}"
Scott Berg's avatar
Scott Berg committed
  isFocusable="true"
Scott Berg's avatar
Scott Berg committed
  tabindex="0"
  (click)="openCourseDetailsDialog()"
  (keyup)="detectEnter($event)">
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
  <div fxLayout="row" fxLayoutAlign="space-between start">
pnogal's avatar
pnogal committed
    <div
      fxLayout="column"
      fxLayoutAlign="space-between start"
      fxFlex="80"
Scott Berg's avatar
Scott Berg committed
      aria-haspopup="true">
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
      <div fxLayout="row" fxLayoutAlign="start center">
        <div class="icon-number-wrapper">
          <p cdkFocusRegionStart class="course-number">
            {{ course | courseDescription }}
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
          </p>
pnogal's avatar
pnogal committed
          <span [ngSwitch]="status">
            <i
Isaac Evavold's avatar
Isaac Evavold committed
              *ngSwitchCase="'InProgress'"
pnogal's avatar
pnogal committed
              class="material-icons in-progress-icon"
              alt="Course is in progress"
              aria-label="Course is in progress"
              matTooltip="Course is in progress"
Isaac Evavold's avatar
Isaac Evavold committed
              matTooltipPosition="above">
              check_circle
            </i>
pnogal's avatar
pnogal committed
            <i
              *ngSwitchCase="'Waitlisted'"
              class="material-icons problem-icon"
              aria-label="Course is waitlisted"
pnogal's avatar
pnogal committed
              matTooltip="Course is waitlisted"
Isaac Evavold's avatar
Isaac Evavold committed
              matTooltipPosition="above">
              report_problem
Isaac Evavold's avatar
Isaac Evavold committed
            </i>
            <i
              *ngSwitchCase="'NotOfferedInTerm'"
              class="material-icons error-icon"
              alt="Course is not offered in term"
              aria-label="Course is not offered in term"
              matTooltip="Course is not offered in term"
              matTooltipPosition="above">
Isaac Evavold's avatar
Isaac Evavold committed
              error
            </i>
              *ngSwitchCase="'DoesNotExist'"
              class="material-icons not-offered-icon"
              alt="Course is no longer offered"
              aria-label="Course is no longer offered"
              matTooltip="Course is no longer offered"
pnogal's avatar
pnogal committed
          </span>
        </div>
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
      </div>
      <div fxLayout="row" fxLayoutAlign="start center">
        <p class="course-title">
          {{ course.title }}
        </p>
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
      </div>
    </div>
pnogal's avatar
pnogal committed
    <div fxLayout="column" fxLayoutAlign="space-between end" fxFlex="20">
      <div *ngIf="!disabled" fxLayout="row" fxLayoutAlign="end center">
          class="course-item-menu-button"
Scott Berg's avatar
Scott Berg committed
          cseClickStopPropigation
          mat-icon-button
          aria-label="Open course menu"
pnogal's avatar
pnogal committed
          [matMenuTriggerFor]="courseMenu"
          (menuOpened)="onMenuOpen()">
          <mat-icon aria-label="Course menu" alt="Course menu" matTooltip="Course menu" matTooltipPosition="above">
            more_horiz
          </mat-icon>
        </button>
        <mat-menu #courseMenu="matMenu" class="course-item-menu" isFocusable="true" isTabbable="true">
          <ng-template matMenuContent>
Paulina Nogal's avatar
Paulina Nogal committed
            <button mat-menu-item (click)="openCourseDetailsDialog()" aria-describedby="course-details-content" attr.aria-label="Open dialog to see {{ course | courseDescription }} course details">
              Course details
            </button>
Paulina Nogal's avatar
Paulina Nogal committed
            <button mat-menu-item [matMenuTriggerFor]="academicYearsGroup" attr.aria-label="Select to move {{ course | courseDescription }} to a different term">
Paulina Nogal's avatar
Paulina Nogal committed
              Move to
            </button>
            <mat-menu #academicYearsGroup="matMenu" class="course-item-submenu">
                <ng-template matMenuContent>
                  <button mat-menu-item *ngFor="let term of (droppableTermCodes$ | async)"
Paulina Nogal's avatar
Paulina Nogal committed
                    attr.aria-labelledby="Move {{ course | courseDescription }} course to {{ term | getTermDescription }} term"
                    (click)="onMove(term)">
                    {{ term | getTermDescription }}
                  </button>
              </ng-template>
            </mat-menu>
            <button
              mat-menu-item
Paulina Nogal's avatar
Paulina Nogal committed
              attr.aria-label="Move {{ course | courseDescription }} course to Saved for later"
              *ngIf="type !== 'saved'"
              (click)="onSaveForLater()">
              Save for later
            </button>
pnogal's avatar
pnogal committed
            <button
              mat-menu-item
Paulina Nogal's avatar
Paulina Nogal committed
              attr.aria-label="Remove {{ course | courseDescription }} course from my plan"
              *ngIf="type !== 'search'"
              (click)="onRemove()">
              Remove
pnogal's avatar
pnogal committed
            </button>
          </ng-template>
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
        </mat-menu>
      </div>
pnogal's avatar
pnogal committed
      <div *ngIf="disabled" fxLayout="row" fxLayoutAlign="end center">
        <p *ngIf="!(showGrades$ | async)">{{ '&nbsp;' }}</p>
        <p *ngIf="showGrades$ | async" attr.aria-label="grade {{ course.grade }}">{{ course.grade || '&nbsp;' }}</p>
pnogal's avatar
pnogal committed
      </div>
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
      <div fxLayout="row" fxLayoutAlign="end center">
        <p *ngIf="type !== 'saved'"
          class="course-credits"
Paulina Nogal's avatar
Paulina Nogal committed
          cdkFocusRegionEnd>
Scott Berg's avatar
Scott Berg committed
          <ng-container *ngIf="course.credits !== undefined || course.creditRange !== undefined">
Paulina Nogal's avatar
Paulina Nogal committed
            <span attr.aria-label="{{ course.credits ? course.credits : course.creditRange }} credits">{{ course.credits ? course.credits : course.creditRange }} Cr</span>
Scott Berg's avatar
Scott Berg committed
          </ng-container>
pnogal's avatar
pnogal committed
        </p>
jvanboxtel@wisc.edu's avatar
jvanboxtel@wisc.edu committed
      </div>
    </div>
  </div>
Isaac Evavold's avatar
Isaac Evavold committed
</div>