From 45bdb5b8aa9234dfc836d70a88869cf772d44970 Mon Sep 17 00:00:00 2001 From: Chris Veilleux Date: Mon, 11 Feb 2019 12:54:05 -0600 Subject: [PATCH] added membership options to shared library --- .../membership-options.component.html | 6 +++ .../membership-options.component.scss | 25 ++++++++++ .../membership-options.component.ts | 50 +++++++++++++++++++ projects/shared/src/lib/shared.module.ts | 10 +++- 4 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 projects/shared/src/lib/membership-options/membership-options.component.html create mode 100644 projects/shared/src/lib/membership-options/membership-options.component.scss create mode 100644 projects/shared/src/lib/membership-options/membership-options.component.ts diff --git a/projects/shared/src/lib/membership-options/membership-options.component.html b/projects/shared/src/lib/membership-options/membership-options.component.html new file mode 100644 index 0000000..9296d97 --- /dev/null +++ b/projects/shared/src/lib/membership-options/membership-options.component.html @@ -0,0 +1,6 @@ + + +
{{membership.name}}
+
{{membership.price}} USD
+
+
diff --git a/projects/shared/src/lib/membership-options/membership-options.component.scss b/projects/shared/src/lib/membership-options/membership-options.component.scss new file mode 100644 index 0000000..d2cd04d --- /dev/null +++ b/projects/shared/src/lib/membership-options/membership-options.component.scss @@ -0,0 +1,25 @@ +.options-button-group { + border: none; + padding: 16px; + + .mat-button-toggle { + background-color: #e6e8ea; + border: none; + border-radius: 4px; + margin: 8px; + padding: 8px + } + + .mat-button-toggle-checked { + background-color: #22a7f0; + + .mat-button-toggle-label-content { + color: white; + } + } +} + +.mat-h3 { + font-weight: bold; + margin-bottom: 10px; +} diff --git a/projects/shared/src/lib/membership-options/membership-options.component.ts b/projects/shared/src/lib/membership-options/membership-options.component.ts new file mode 100644 index 0000000..6734098 --- /dev/null +++ b/projects/shared/src/lib/membership-options/membership-options.component.ts @@ -0,0 +1,50 @@ +import { Component, OnDestroy, OnInit } from '@angular/core'; +import { MediaChange, MediaObserver } from '@angular/flex-layout'; +import { Subscription } from 'rxjs'; + +export interface MembershipType { + name: string; + price: string; + period: string; +} + +const nonSupporter: MembershipType = { + name: 'NON-SUPPORTER', + price: '$0', + period: null +}; +const monthlySupporter: MembershipType = { + name: 'MONTHLY SUPPORTER', + price: '$1.99', + period: 'month' +}; +const yearlySupporter: MembershipType = { + name: 'YEARLY SUPPORTER', + price: '$19.99', + period: 'year' +}; + +@Component({ + selector: 'shared-membership-options', + templateUrl: './membership-options.component.html', + styleUrls: ['./membership-options.component.scss'] +}) +export class MembershipOptionsComponent implements OnDestroy { + public alignVertical: boolean; + public membershipTypes: MembershipType[]; + public mediaWatcher: Subscription; + + constructor(public mediaObserver: MediaObserver) { + this.mediaWatcher = mediaObserver.media$.subscribe( + (change: MediaChange) => { + this.alignVertical = ['xs', 'sm'].includes(change.mqAlias); + } + ); + this.membershipTypes = [yearlySupporter, monthlySupporter, nonSupporter]; + } + + ngOnDestroy(): void { + this.mediaWatcher.unsubscribe(); + } + +} diff --git a/projects/shared/src/lib/shared.module.ts b/projects/shared/src/lib/shared.module.ts index eda611a..ffa488f 100644 --- a/projects/shared/src/lib/shared.module.ts +++ b/projects/shared/src/lib/shared.module.ts @@ -1,5 +1,6 @@ import { NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material'; +import { CommonModule } from '@angular/common'; +import { MatButtonModule, MatButtonToggleModule } from '@angular/material'; import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; @@ -7,22 +8,27 @@ import { FacebookButtonComponent } from './facebook-button/facebook-button.compo import { GithubButtonComponent } from './github-button/github-button.component'; import { GoogleButtonComponent } from './google-button/google-button.component'; import { SharedComponent } from './shared.component'; +import { MembershipOptionsComponent } from './membership-options/membership-options.component'; @NgModule({ declarations: [ FacebookButtonComponent, GithubButtonComponent, GoogleButtonComponent, + MembershipOptionsComponent, SharedComponent ], imports: [ + CommonModule, FontAwesomeModule, - MatButtonModule + MatButtonModule, + MatButtonToggleModule ], exports: [ FacebookButtonComponent, GithubButtonComponent, GoogleButtonComponent, + MembershipOptionsComponent, SharedComponent ] })