nkoehler/mat-video

View on GitHub
src/app/app.component.html

Summary

Maintainability
Test Coverage
<mat-sidenav-container class="sidenav-container">
  <mat-sidenav #sidenav mode="side" class="sidenav">
    <mat-toolbar color="primary">
      <span class="title">
        Settings
      </span>
    </mat-toolbar>
    <div class="content options">
      <mat-form-field class="item-margin" [color]="color">
        <input matInput type="url" [(ngModel)]="src" placeholder="Source" />
        <mat-hint align="end"
          >Download button will only work for
          <a href="https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy" target="_blank">
            same-origin URLs
          </a>
        </mat-hint>
      </mat-form-field>
      <mat-form-field class="item-margin" [color]="color">
        <input matInput type="url" [(ngModel)]="poster" placeholder="Poster" />
      </mat-form-field>
      <mat-form-field class="item-margin" [color]="color">
        <input matInput type="text" [(ngModel)]="title" placeholder="Title" />
      </mat-form-field>

      <mat-form-field class="item-margin" [color]="color">
        <input matInput type="text" [(ngModel)]="currentTime" placeholder="Current Time" />
      </mat-form-field>

      <div class="item-section">
        <div class="item-margin">Autoplay:</div>
        <mat-slide-toggle [(ngModel)]="autoplay" (change)="vid.load()" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Preload:</div>
        <mat-slide-toggle [(ngModel)]="preload" (change)="vid.load()" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Loop:</div>
        <mat-slide-toggle [(ngModel)]="loop" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Muted:</div>
        <mat-slide-toggle [(ngModel)]="muted" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Quality:</div>
        <mat-slide-toggle [(ngModel)]="quality" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Download:</div>
        <mat-slide-toggle [(ngModel)]="download" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Fullscreen:</div>
        <mat-slide-toggle [(ngModel)]="fullscreen" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Plays Inline:</div>
        <mat-slide-toggle [(ngModel)]="playsinline" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Frame-by-Frame:</div>
        <mat-slide-toggle [(ngModel)]="showFrameByFrame" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Keyboard:</div>
        <mat-slide-toggle [(ngModel)]="keyboard" [color]="color"></mat-slide-toggle>
      </div>

      <div class="item-section">
        <div class="item-margin">Overlay:</div>
        <mat-radio-group [(ngModel)]="overlay">
          <mat-radio-button class="item-margin" [value]="null" [color]="color">
            Default
          </mat-radio-button>
          <mat-radio-button class="item-margin" [value]="false" [color]="color">
            Off
          </mat-radio-button>
          <mat-radio-button class="item-margin" [value]="true" [color]="color">
            On
          </mat-radio-button>
        </mat-radio-group>
      </div>

      <div class="item-section">
        <div class="item-margin">Color:</div>
        <mat-radio-group [(ngModel)]="color">
          <mat-radio-button class="item-margin" value="primary" [color]="color">
            Primary
          </mat-radio-button>
          <mat-radio-button class="item-margin" value="accent" [color]="color">
            Accent
          </mat-radio-button>
          <mat-radio-button class="item-margin" value="warn" [color]="color">
            Warn
          </mat-radio-button>
        </mat-radio-group>
      </div>

      <div class="item-section">
        <div class="item-margin">Spinner:</div>
        <mat-radio-group [(ngModel)]="spinner">
          <mat-radio-button class="item-margin" value="spin" [color]="color">
            Spin
          </mat-radio-button>
          <mat-radio-button class="item-margin" value="dot" [color]="color">
            Dot
          </mat-radio-button>
          <mat-radio-button class="item-margin" value="split-ring" [color]="color">
            Split Ring
          </mat-radio-button>
          <mat-radio-button class="item-margin" value="hourglass" [color]="color">
            Hourglass
          </mat-radio-button>
        </mat-radio-group>
      </div>

      <div class="item-section">
        <div class="item-margin">CSS Examples:</div>
        <mat-radio-group [(ngModel)]="ngclass">
          <mat-radio-button class="item-margin" value="mat-video-responsive" [color]="color">
            Responsive
          </mat-radio-button>
          <mat-radio-button class="item-margin" value="mat-video-fixed" [color]="color">
            Fixed
          </mat-radio-button>
        </mat-radio-group>
      </div>
    </div>

    <div class="mat-toolbar mat-primary mat-toolbar-single-row footer">
      <div class="badges">
        <a href="https://badge.fury.io/js/mat-video" target="_blank">
          <img alt="npm version" src="https://badge.fury.io/js/mat-video.svg" />
        </a>
        <a href="https://travis-ci.org/nkoehler/mat-video" target="_blank">
          <img alt="Build Status" src="https://travis-ci.org/nkoehler/mat-video.svg?branch=master" />
        </a>
        <a href="https://codeclimate.com/github/nkoehler/mat-video/" target="_blank">
          <img alt="Maintainability" src="https://api.codeclimate.com/v1/badges/46fb1a751d60d0f8b316/maintainability" />
        </a>
      </div>
    </div>
  </mat-sidenav>

  <mat-sidenav-content>
    <mat-toolbar color="primary">
      <button mat-icon-button (click)="sidenav.toggle()" matTooltip="Settings">
        <mat-icon>settings</mat-icon>
      </button>

      <span class="title"> <span class="name">mat-video</span> for Angular {{ version }} </span>

      <a mat-icon-button href="https://github.com/nkoehler/mat-video" class="github" matTooltip="GitHub">
        <svg height="32" viewBox="0 0 16 16" version="1.1" width="32">
          <path
            fill-rule="evenodd"
            d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"
          ></path>
        </svg>
      </a>
    </mat-toolbar>

    <div class="content video">
      <mat-video
        #vid
        [ngClass]="ngclass"
        [src]="src"
        [title]="title"
        [autoplay]="autoplay"
        [preload]="preload"
        [loop]="loop"
        [fullscreen]="fullscreen"
        [download]="download"
        [quality]="quality"
        [keyboard]="keyboard"
        [color]="color"
        [spinner]="spinner"
        [poster]="poster"
        [overlay]="overlay"
        [(muted)]="muted"
        [playsinline]="playsinline"
        [showFrameByFrame]="showFrameByFrame"
        [(time)]="currentTime"
      >
      </mat-video>
    </div>

    <div class="mat-toolbar mat-primary mat-toolbar-single-row footer">
      <div class="version">Version {{ appversion }}</div>
      <div class="copyright">
        Nicholas Koehler
        <mat-icon class="icon">copyright</mat-icon> 2019-2020
      </div>
      <div class="license">
        MIT License
      </div>
    </div>
  </mat-sidenav-content>
</mat-sidenav-container>