init commit
This commit is contained in:
		
							
								
								
									
										3
									
								
								src/app/app.component.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/app/app.component.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
.example-spacer {
 | 
			
		||||
  flex: 1 1 auto;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								src/app/app.component.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/app/app.component.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,21 @@
 | 
			
		||||
<mat-sidenav-container fullscreen [hasBackdrop]="false">
 | 
			
		||||
  <mat-sidenav #sidenav [mode]="'push'">
 | 
			
		||||
    <mat-toolbar color="primary">
 | 
			
		||||
      <span>Folders</span>
 | 
			
		||||
    </mat-toolbar>
 | 
			
		||||
    <app-foldernav [playlists]="playlists"></app-foldernav>
 | 
			
		||||
  </mat-sidenav>
 | 
			
		||||
  <mat-sidenav-content>
 | 
			
		||||
    <mat-toolbar color="primary">
 | 
			
		||||
      <button mat-icon-button class="example-icon" (click)="sidenav.toggle()" aria-label="Toggle folder nav">
 | 
			
		||||
        <mat-icon>menu</mat-icon>
 | 
			
		||||
      </button>
 | 
			
		||||
      <span>PCM</span>
 | 
			
		||||
      <span class="example-spacer"></span>
 | 
			
		||||
      <button mat-icon-button class="example-icon favorite-icon">
 | 
			
		||||
        <mat-icon>favorite</mat-icon>
 | 
			
		||||
      </button>
 | 
			
		||||
    </mat-toolbar>
 | 
			
		||||
    <app-playlist [filelist]="filelists"></app-playlist>
 | 
			
		||||
  </mat-sidenav-content>
 | 
			
		||||
</mat-sidenav-container>
 | 
			
		||||
							
								
								
									
										31
									
								
								src/app/app.component.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								src/app/app.component.spec.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
			
		||||
import { TestBed, async } from '@angular/core/testing';
 | 
			
		||||
import { AppComponent } from './app.component';
 | 
			
		||||
 | 
			
		||||
describe('AppComponent', () => {
 | 
			
		||||
  beforeEach(async(() => {
 | 
			
		||||
    TestBed.configureTestingModule({
 | 
			
		||||
      declarations: [
 | 
			
		||||
        AppComponent
 | 
			
		||||
      ],
 | 
			
		||||
    }).compileComponents();
 | 
			
		||||
  }));
 | 
			
		||||
 | 
			
		||||
  it('should create the app', () => {
 | 
			
		||||
    const fixture = TestBed.createComponent(AppComponent);
 | 
			
		||||
    const app = fixture.componentInstance;
 | 
			
		||||
    expect(app).toBeTruthy();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it(`should have as title 'pcm-angular'`, () => {
 | 
			
		||||
    const fixture = TestBed.createComponent(AppComponent);
 | 
			
		||||
    const app = fixture.componentInstance;
 | 
			
		||||
    expect(app.title).toEqual('pcm-angular');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should render title', () => {
 | 
			
		||||
    const fixture = TestBed.createComponent(AppComponent);
 | 
			
		||||
    fixture.detectChanges();
 | 
			
		||||
    const compiled = fixture.nativeElement;
 | 
			
		||||
    expect(compiled.querySelector('.content span').textContent).toContain('pcm-angular app is running!');
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										30
									
								
								src/app/app.component.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/app/app.component.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
import { Component } from '@angular/core';
 | 
			
		||||
import { DataproviderService } from './dataprovider.service'
 | 
			
		||||
import { FileList, MusicItem } from './filelist';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-root',
 | 
			
		||||
  templateUrl: './app.component.html',
 | 
			
		||||
  styleUrls: ['./app.component.css']
 | 
			
		||||
})
 | 
			
		||||
export class AppComponent {
 | 
			
		||||
  title = 'Private Cloud Music';
 | 
			
		||||
  playlists: string[] = [];
 | 
			
		||||
  filelists: FileList;
 | 
			
		||||
  
 | 
			
		||||
  constructor(public provider : DataproviderService) {}
 | 
			
		||||
  
 | 
			
		||||
  ngOnInit() : void {
 | 
			
		||||
    this.fetchPlaylists();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  fetchPlaylists() : void {
 | 
			
		||||
    this.provider.getFileList("/")
 | 
			
		||||
      .subscribe(filelist => {
 | 
			
		||||
        this.playlists = filelist.subFolderList;
 | 
			
		||||
        let firstFolder = this.playlists[0];
 | 
			
		||||
        this.provider.getFileList(firstFolder)
 | 
			
		||||
          .subscribe(filelist => this.filelists = filelist)
 | 
			
		||||
      });
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								src/app/app.module.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/app/app.module.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
import { BrowserModule } from '@angular/platform-browser';
 | 
			
		||||
import { NgModule } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
import { AppComponent } from './app.component';
 | 
			
		||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
 | 
			
		||||
import { MatSidenavModule } from '@angular/material/sidenav'
 | 
			
		||||
import { MatListModule } from '@angular/material/list'
 | 
			
		||||
import { MatToolbarModule } from '@angular/material/toolbar'
 | 
			
		||||
import { MatIconModule } from '@angular/material/icon'
 | 
			
		||||
import { MatButtonModule } from '@angular/material/button';
 | 
			
		||||
import { FoldernavComponent } from './foldernav/foldernav.component';
 | 
			
		||||
import { PlaylistComponent } from './playlist/playlist.component';
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  declarations: [
 | 
			
		||||
    AppComponent,
 | 
			
		||||
    FoldernavComponent,
 | 
			
		||||
    PlaylistComponent
 | 
			
		||||
  ],
 | 
			
		||||
  imports: [
 | 
			
		||||
    MatSidenavModule,
 | 
			
		||||
    MatListModule,
 | 
			
		||||
    MatToolbarModule,
 | 
			
		||||
    MatIconModule,
 | 
			
		||||
    MatButtonModule,
 | 
			
		||||
    BrowserModule,
 | 
			
		||||
    BrowserAnimationsModule
 | 
			
		||||
  ],
 | 
			
		||||
  providers: [],
 | 
			
		||||
  bootstrap: [AppComponent]
 | 
			
		||||
})
 | 
			
		||||
export class AppModule { }
 | 
			
		||||
							
								
								
									
										16
									
								
								src/app/dataprovider.service.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/app/dataprovider.service.spec.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
import { TestBed } from '@angular/core/testing';
 | 
			
		||||
 | 
			
		||||
import { DataproviderService } from './dataprovider.service';
 | 
			
		||||
 | 
			
		||||
describe('DataproviderService', () => {
 | 
			
		||||
  let service: DataproviderService;
 | 
			
		||||
 | 
			
		||||
  beforeEach(() => {
 | 
			
		||||
    TestBed.configureTestingModule({});
 | 
			
		||||
    service = TestBed.inject(DataproviderService);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should be created', () => {
 | 
			
		||||
    expect(service).toBeTruthy();
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										28
									
								
								src/app/dataprovider.service.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/app/dataprovider.service.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
import { Injectable } from '@angular/core';
 | 
			
		||||
import { FileList } from  './filelist'
 | 
			
		||||
import { Observable, of } from 'rxjs';
 | 
			
		||||
 | 
			
		||||
@Injectable({
 | 
			
		||||
  providedIn: 'root'
 | 
			
		||||
})
 | 
			
		||||
export class DataproviderService {
 | 
			
		||||
 | 
			
		||||
  constructor() { 
 | 
			
		||||
    this.mock_FILELIST = {
 | 
			
		||||
      subFolderList: ["AAAA", "BBBB"],
 | 
			
		||||
      musicList: [
 | 
			
		||||
        {
 | 
			
		||||
          fileName: "CCCCC.mp3",
 | 
			
		||||
          fileSize: 9951652,
 | 
			
		||||
          modifiedTime: 1556423252
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  mock_FILELIST : FileList;
 | 
			
		||||
  
 | 
			
		||||
  getFileList(path : string) : Observable<FileList> {
 | 
			
		||||
    return of(this.mock_FILELIST);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								src/app/filelist.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/app/filelist.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
export interface MusicItem {
 | 
			
		||||
    fileName : string;
 | 
			
		||||
    fileSize : number;
 | 
			
		||||
    modifiedTime : number;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export interface FileList {
 | 
			
		||||
    subFolderList : string[];
 | 
			
		||||
    musicList : MusicItem[];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										0
									
								
								src/app/foldernav/foldernav.component.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/app/foldernav/foldernav.component.css
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										3
									
								
								src/app/foldernav/foldernav.component.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/app/foldernav/foldernav.component.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
<mat-nav-list>
 | 
			
		||||
  <a *ngFor="let playlist of playlists" mat-list-item href="#">{{ playlist }}</a>
 | 
			
		||||
</mat-nav-list>
 | 
			
		||||
							
								
								
									
										25
									
								
								src/app/foldernav/foldernav.component.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/app/foldernav/foldernav.component.spec.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 | 
			
		||||
 | 
			
		||||
import { FoldernavComponent } from './foldernav.component';
 | 
			
		||||
 | 
			
		||||
describe('FoldernavComponent', () => {
 | 
			
		||||
  let component: FoldernavComponent;
 | 
			
		||||
  let fixture: ComponentFixture<FoldernavComponent>;
 | 
			
		||||
 | 
			
		||||
  beforeEach(async(() => {
 | 
			
		||||
    TestBed.configureTestingModule({
 | 
			
		||||
      declarations: [ FoldernavComponent ]
 | 
			
		||||
    })
 | 
			
		||||
    .compileComponents();
 | 
			
		||||
  }));
 | 
			
		||||
 | 
			
		||||
  beforeEach(() => {
 | 
			
		||||
    fixture = TestBed.createComponent(FoldernavComponent);
 | 
			
		||||
    component = fixture.componentInstance;
 | 
			
		||||
    fixture.detectChanges();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should create', () => {
 | 
			
		||||
    expect(component).toBeTruthy();
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										16
									
								
								src/app/foldernav/foldernav.component.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/app/foldernav/foldernav.component.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
import { Component, OnInit, Input } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-foldernav',
 | 
			
		||||
  templateUrl: './foldernav.component.html',
 | 
			
		||||
  styleUrls: ['./foldernav.component.css']
 | 
			
		||||
})
 | 
			
		||||
export class FoldernavComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  @Input() playlists : string[] = [];
 | 
			
		||||
 | 
			
		||||
  constructor() { }
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										0
									
								
								src/app/playlist/playlist.component.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/app/playlist/playlist.component.css
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										10
									
								
								src/app/playlist/playlist.component.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/app/playlist/playlist.component.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
<mat-nav-list>
 | 
			
		||||
  <mat-list-item *ngFor="let folderItem of filelist.subFolderList">
 | 
			
		||||
    <mat-icon matListIcon>folder</mat-icon>
 | 
			
		||||
    <a href="#">{{ folderItem }}</a>
 | 
			
		||||
  </mat-list-item>
 | 
			
		||||
  <mat-list-item *ngFor="let musicItem of filelist.musicList">
 | 
			
		||||
    <mat-icon matListIcon>audiotrack</mat-icon>
 | 
			
		||||
    <a href="#">{{ musicItem.fileName }}</a>
 | 
			
		||||
  </mat-list-item>
 | 
			
		||||
</mat-nav-list>
 | 
			
		||||
							
								
								
									
										25
									
								
								src/app/playlist/playlist.component.spec.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/app/playlist/playlist.component.spec.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 | 
			
		||||
 | 
			
		||||
import { PlaylistComponent } from './playlist.component';
 | 
			
		||||
 | 
			
		||||
describe('PlaylistComponent', () => {
 | 
			
		||||
  let component: PlaylistComponent;
 | 
			
		||||
  let fixture: ComponentFixture<PlaylistComponent>;
 | 
			
		||||
 | 
			
		||||
  beforeEach(async(() => {
 | 
			
		||||
    TestBed.configureTestingModule({
 | 
			
		||||
      declarations: [ PlaylistComponent ]
 | 
			
		||||
    })
 | 
			
		||||
    .compileComponents();
 | 
			
		||||
  }));
 | 
			
		||||
 | 
			
		||||
  beforeEach(() => {
 | 
			
		||||
    fixture = TestBed.createComponent(PlaylistComponent);
 | 
			
		||||
    component = fixture.componentInstance;
 | 
			
		||||
    fixture.detectChanges();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('should create', () => {
 | 
			
		||||
    expect(component).toBeTruthy();
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										17
									
								
								src/app/playlist/playlist.component.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/app/playlist/playlist.component.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
			
		||||
import { Component, OnInit, Input } from '@angular/core';
 | 
			
		||||
import { FileList } from '../filelist'
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-playlist',
 | 
			
		||||
  templateUrl: './playlist.component.html',
 | 
			
		||||
  styleUrls: ['./playlist.component.css']
 | 
			
		||||
})
 | 
			
		||||
export class PlaylistComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  @Input() filelist : FileList;
 | 
			
		||||
 | 
			
		||||
  constructor() { }
 | 
			
		||||
 | 
			
		||||
  ngOnInit(): void {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										0
									
								
								src/assets/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/assets/.gitkeep
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										35
									
								
								src/custom-theme.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/custom-theme.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,35 @@
 | 
			
		||||
 | 
			
		||||
// Custom Theming for Angular Material
 | 
			
		||||
// For more information: https://material.angular.io/guide/theming
 | 
			
		||||
@import '~@angular/material/theming';
 | 
			
		||||
// Plus imports for other components in your app.
 | 
			
		||||
 | 
			
		||||
// Include the common styles for Angular Material. We include this here so that you only
 | 
			
		||||
// have to load a single css file for Angular Material in your app.
 | 
			
		||||
// Be sure that you only ever include this mixin once!
 | 
			
		||||
@include mat-core();
 | 
			
		||||
 | 
			
		||||
// Define the palettes for your theme using the Material Design palettes available in palette.scss
 | 
			
		||||
// (imported above). For each palette, you can optionally specify a default, lighter, and darker
 | 
			
		||||
// hue. Available color palettes: https://material.io/design/color/
 | 
			
		||||
$pcm-angular-primary: mat-palette($mat-indigo);
 | 
			
		||||
$pcm-angular-accent: mat-palette($mat-pink, A200, A100, A400);
 | 
			
		||||
 | 
			
		||||
// The warn palette is optional (defaults to red).
 | 
			
		||||
$pcm-angular-warn: mat-palette($mat-red);
 | 
			
		||||
 | 
			
		||||
// Create the theme object. A theme consists of configurations for individual
 | 
			
		||||
// theming systems such as "color" or "typography".
 | 
			
		||||
$pcm-angular-theme: mat-light-theme((
 | 
			
		||||
  color: (
 | 
			
		||||
    primary: $pcm-angular-primary,
 | 
			
		||||
    accent: $pcm-angular-accent,
 | 
			
		||||
    warn: $pcm-angular-warn,
 | 
			
		||||
  )
 | 
			
		||||
));
 | 
			
		||||
 | 
			
		||||
// Include theme styles for core and each component used in your app.
 | 
			
		||||
// Alternatively, you can import and @include the theme mixins for each component
 | 
			
		||||
// that you are using.
 | 
			
		||||
@include angular-material-theme($pcm-angular-theme);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								src/environments/environment.prod.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/environments/environment.prod.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
export const environment = {
 | 
			
		||||
  production: true
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										16
									
								
								src/environments/environment.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/environments/environment.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
// This file can be replaced during build by using the `fileReplacements` array.
 | 
			
		||||
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
 | 
			
		||||
// The list of file replacements can be found in `angular.json`.
 | 
			
		||||
 | 
			
		||||
export const environment = {
 | 
			
		||||
  production: false
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * For easier debugging in development mode, you can import the following file
 | 
			
		||||
 * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
 | 
			
		||||
 *
 | 
			
		||||
 * This import should be commented out in production mode because it will have a negative impact
 | 
			
		||||
 * on performance if an error is thrown.
 | 
			
		||||
 */
 | 
			
		||||
// import 'zone.js/dist/zone-error';  // Included with Angular CLI.
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 948 B  | 
							
								
								
									
										15
									
								
								src/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/index.html
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
<!doctype html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta charset="utf-8">
 | 
			
		||||
  <title>PcmAngular</title>
 | 
			
		||||
  <base href="/">
 | 
			
		||||
  <meta name="viewport" content="width=device-width, initial-scale=1">
 | 
			
		||||
  <link rel="icon" type="image/x-icon" href="favicon.ico">
 | 
			
		||||
  <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap" rel="stylesheet">
 | 
			
		||||
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
 | 
			
		||||
</head>
 | 
			
		||||
<body class="mat-typography">
 | 
			
		||||
  <app-root></app-root>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										12
									
								
								src/main.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/main.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
import { enableProdMode } from '@angular/core';
 | 
			
		||||
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
 | 
			
		||||
 | 
			
		||||
import { AppModule } from './app/app.module';
 | 
			
		||||
import { environment } from './environments/environment';
 | 
			
		||||
 | 
			
		||||
if (environment.production) {
 | 
			
		||||
  enableProdMode();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
platformBrowserDynamic().bootstrapModule(AppModule)
 | 
			
		||||
  .catch(err => console.error(err));
 | 
			
		||||
							
								
								
									
										63
									
								
								src/polyfills.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/polyfills.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,63 @@
 | 
			
		||||
/**
 | 
			
		||||
 * This file includes polyfills needed by Angular and is loaded before the app.
 | 
			
		||||
 * You can add your own extra polyfills to this file.
 | 
			
		||||
 *
 | 
			
		||||
 * This file is divided into 2 sections:
 | 
			
		||||
 *   1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
 | 
			
		||||
 *   2. Application imports. Files imported after ZoneJS that should be loaded before your main
 | 
			
		||||
 *      file.
 | 
			
		||||
 *
 | 
			
		||||
 * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
 | 
			
		||||
 * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
 | 
			
		||||
 * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
 | 
			
		||||
 *
 | 
			
		||||
 * Learn more in https://angular.io/guide/browser-support
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/***************************************************************************************************
 | 
			
		||||
 * BROWSER POLYFILLS
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/** IE10 and IE11 requires the following for NgClass support on SVG elements */
 | 
			
		||||
// import 'classlist.js';  // Run `npm install --save classlist.js`.
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Web Animations `@angular/platform-browser/animations`
 | 
			
		||||
 * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari.
 | 
			
		||||
 * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0).
 | 
			
		||||
 */
 | 
			
		||||
// import 'web-animations-js';  // Run `npm install --save web-animations-js`.
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * By default, zone.js will patch all possible macroTask and DomEvents
 | 
			
		||||
 * user can disable parts of macroTask/DomEvents patch by setting following flags
 | 
			
		||||
 * because those flags need to be set before `zone.js` being loaded, and webpack
 | 
			
		||||
 * will put import in the top of bundle, so user need to create a separate file
 | 
			
		||||
 * in this directory (for example: zone-flags.ts), and put the following flags
 | 
			
		||||
 * into that file, and then add the following code before importing zone.js.
 | 
			
		||||
 * import './zone-flags';
 | 
			
		||||
 *
 | 
			
		||||
 * The flags allowed in zone-flags.ts are listed here.
 | 
			
		||||
 *
 | 
			
		||||
 * The following flags will work for all browsers.
 | 
			
		||||
 *
 | 
			
		||||
 * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
 | 
			
		||||
 * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
 | 
			
		||||
 * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
 | 
			
		||||
 *
 | 
			
		||||
 *  in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
 | 
			
		||||
 *  with the following flag, it will bypass `zone.js` patch for IE/Edge
 | 
			
		||||
 *
 | 
			
		||||
 *  (window as any).__Zone_enable_cross_context_check = true;
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/***************************************************************************************************
 | 
			
		||||
 * Zone JS is required by default for Angular itself.
 | 
			
		||||
 */
 | 
			
		||||
import 'zone.js/dist/zone';  // Included with Angular CLI.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/***************************************************************************************************
 | 
			
		||||
 * APPLICATION IMPORTS
 | 
			
		||||
 */
 | 
			
		||||
							
								
								
									
										3
									
								
								src/styles.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/styles.css
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
@import '@angular/material/prebuilt-themes/deeppurple-amber.css';
 | 
			
		||||
html, body { height: 100%; }
 | 
			
		||||
body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
 | 
			
		||||
							
								
								
									
										25
									
								
								src/test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/test.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
 | 
			
		||||
 | 
			
		||||
import 'zone.js/dist/zone-testing';
 | 
			
		||||
import { getTestBed } from '@angular/core/testing';
 | 
			
		||||
import {
 | 
			
		||||
  BrowserDynamicTestingModule,
 | 
			
		||||
  platformBrowserDynamicTesting
 | 
			
		||||
} from '@angular/platform-browser-dynamic/testing';
 | 
			
		||||
 | 
			
		||||
declare const require: {
 | 
			
		||||
  context(path: string, deep?: boolean, filter?: RegExp): {
 | 
			
		||||
    keys(): string[];
 | 
			
		||||
    <T>(id: string): T;
 | 
			
		||||
  };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// First, initialize the Angular testing environment.
 | 
			
		||||
getTestBed().initTestEnvironment(
 | 
			
		||||
  BrowserDynamicTestingModule,
 | 
			
		||||
  platformBrowserDynamicTesting()
 | 
			
		||||
);
 | 
			
		||||
// Then we find all the tests.
 | 
			
		||||
const context = require.context('./', true, /\.spec\.ts$/);
 | 
			
		||||
// And load the modules.
 | 
			
		||||
context.keys().map(context);
 | 
			
		||||
		Reference in New Issue
	
	Block a user