Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ng-europe 2018 | Creating Beautiful Experiences...

ng-europe 2018 | Creating Beautiful Experiences Fast with Angular Material

Slides from ng-europe 2018 Talk

Overview of Material Design, Angular Material and CDK
Covers Angular Material setup, top 5 most under-appreciated components and custom theming

Avatar for Stefanie Fluin

Stefanie Fluin

February 02, 2018
Tweet

Other Decks in Technology

Transcript

  1. What We’ll Cover 1. Material Design 2. Angular Material 3.

    CDK 4. Top 5 Underappreciated Components
  2. Angular Material • By Angular Team = • Reliable =

    Tested Across Browsers • Accessibility
  3. Angular Material • Material Design 100% • Internal Tools •

    Quick & Fast Prototypes ◦ + Look Good!
  4. New Project | CLI ng new newproject --style scss cd

    newproject ng serve 4200 SASS | Sassy CSS
  5. Using Components import {MatComponentModule} from '@angular/material/component; + Add to root

    ngmodules Each component = small bundle size <mat-component attribute=”selection”></mat-component> app.module.ts
  6. 1. Toolbar import { MatToolbarModule } from '@angular/material/toolbar'; <mat-toolbar color=”primary”>

    <mat-toolbar-row>STUFF</mat-toolbar-row> </mat-toolbar> app.module.ts component.html
  7. 2. Button import { MatButtonModule } from '@angular/material/button'; import {

    MatIconModule } from '@angular/material/icon'; <button mat-icon-button> <mat-icon>face</mat-icon> </button> app.module.ts component.html
  8. 2. Button import { MatButtonModule } from '@angular/material/button'; import {

    MatIconModule } from '@angular/material/icon'; <button mat-icon-button color=”primary”> <mat-icon>face</mat-icon> </button> app.module.ts component.html
  9. 2. Button import { MatButtonModule } from '@angular/material/button'; import {

    MatIconModule } from '@angular/material/icon'; <button mat-icon-button disabled> <mat-icon>face</mat-icon> </button> app.module.ts component.html
  10. 3. Sidenav import { MatSidenavModule } from '@angular/material/sidenav'; <mat-sidenav-container> <mat-sidenav>

    <mat-nav-list><mat-list-item></… <mat-sidenav-content>MAIN CONTENT</… </mat-sidenav-container> app.module.ts component.html
  11. 3. Sidenav import { MatSidenavModule } from '@angular/material/sidenav'; <mat-sidenav-container> <mat-sidenav

    mode=”side"> <mat-nav-list><mat-list-item></… <mat-sidenav-content>MAIN CONTENT</… </mat-sidenav-container> app.module.ts component.html
  12. 4. Dialog | Pop-Up import { MatDialogModule } from '@angular/material/dialog';

    <mat-dialog-content> <mat-dialog-actions> + Create dialog component app.module.ts component.html
  13. 4. Dialog | Pop-Up constructor(private dialog: MatDialog) { } openDialog()

    { this.dialogRef = this.dialog.open(MyDialogComponent); } component.ts
  14. 4. Dialog | Pop-Up openDialog() { this.dialogRef = this.dialog.open(DialogComponent); }

    <button mat-icon-button (click)=”openDialog()”> <mat-icon>#</mat-icon> </button> app.module.ts component.html
  15. 5. Snackbar snackTime(message: string, action: string) { this.snackBar.open(message, action, {

    duration: 2000,}); <button mat-icon-button> <mat-icon>content_copy</mat-icon> </button> component.ts component.html
  16. 5. Snackbar snackTime(message: string, action: string) { this.snackBar.open(message, action, {

    duration: 2000,}); <button mat-icon-button (click)="snackTime('Code copied!', 'OK')"> <mat-icon>content_copy</mat-icon> </button> app.module.ts component.html OPEN FUNCTION
  17. Custom Theme 3. Define Theme Colors $my-theme-primary: mat-palette($mat-blue); OR $my-theme-primary:

    mat-palette($mat-blue, 700, 500 , 900); $my-theme-accent: mat-palette($mat-teal);
  18. Custom Theme 3. Define Theme Colors $my-theme-primary: mat-palette($mat-blue); OR $my-theme-primary:

    mat-palette($mat-blue, 700, 500 , 900); $my-theme-accent: mat-palette($mat-teal); $my-theme-warn: mat-palette($mat-red); ** OPTIONAL
  19. Custom Component Styling @import '~@angular/material/theming’; $my-theme-primary: mat-palette($mat-blue); $my-theme-accent: mat-palette($mat-teal); @include

    angular-material-theme($my-custom-theme); @include mat-core-theme($my-custom-theme); @include mat-button-theme($my-custom-theme);
  20. Custom Theme //styles.scss 6. Import Custom Theme to Main Stylesheet

    @import "~@angular/material/prebuilt-themes/indigo-pink.css"; @import "/my-custom-theme.scss";