diff --git a/angular.json b/angular.json index 18f57b47..752a9aab 100644 --- a/angular.json +++ b/angular.json @@ -1004,6 +1004,105 @@ } } } + }, + "events-solution": { + "root": "steps/events-solution/", + "sourceRoot": "steps/events-solution/src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/events-solution", + "index": "steps/events-solution/src/index.html", + "main": "steps/events-solution/src/main.ts", + "polyfills": "steps/events-solution/src/polyfills.ts", + "tsConfig": "steps/events-solution/tsconfig.app.json", + "assets": [ + "steps/events-solution/src/favicon.ico", + "steps/events-solution/src/assets" + ], + "styles": [ + "steps/events-solution/src/styles.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "steps/events-solution/src/environments/environment.ts", + "with": "steps/events-solution/src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "events-solution:build" + }, + "configurations": { + "production": { + "browserTarget": "events-solution:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "events-solution:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "steps/events-solution/src/test.ts", + "polyfills": "steps/events-solution/src/polyfills.ts", + "tsConfig": "steps/events-solution/tsconfig.spec.json", + "karmaConfig": "steps/events-solution/karma.conf.js", + "styles": [ + "steps/events-solution/src/styles.css" + ], + "scripts": [], + "assets": [ + "steps/events-solution/src/favicon.ico", + "steps/events-solution/src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "steps/events-solution/tsconfig.app.json", + "steps/events-solution/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } } }, "defaultProject": "angular-200", diff --git a/steps/events-solution/browserslist b/steps/events-solution/browserslist new file mode 100644 index 00000000..37371cb0 --- /dev/null +++ b/steps/events-solution/browserslist @@ -0,0 +1,11 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# +# For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 \ No newline at end of file diff --git a/steps/events-solution/src/app/_static/people.ts b/steps/events-solution/src/app/_static/people.ts new file mode 100644 index 00000000..378abdc1 --- /dev/null +++ b/steps/events-solution/src/app/_static/people.ts @@ -0,0 +1,372 @@ +export const PEOPLE = [ + { + "id": "5763cd4d9d2a4f259b53c901", + "photo": "https://randomuser.me/portraits/women/59.jpg", + "firstname": "Leanne", + "lastname": "Woodard", + "entity": "BIOSPAN", + "entryDate": "27/10/2015", + "birthDate": "02/01/1974", + "gender": "", + "email": "Leanne.Woodard@BIOSPAN.com", + "skills": [ + "pariatur", + "ipsum", + "laboris", + "nostrud", + "elit" + ], + "geo": { + "lat": 48.854107964410616, + "lng": 2.2486534555789013 + }, + "phone": "0784112248", + "address": { + "street": "Narrows Avenue", + "postalCode": 70534, + "city": "Boling" + }, + "links": { + "twitter": "https://twitter.com/laboris", + "slack": "https://slack.com/fugiat", + "github": "https://github.com/velit", + "linkedin": "https://www.linkedin.com/in/voluptate" + }, + "isManager": false, + "manager": "Erika", + "managerId": "5763cd4d3b57c672861bfa1f" + }, + { + "id": "5763cd4d51fdb6588742f99e", + "photo": "https://randomuser.me/portraits/men/65.jpg", + "firstname": "Castaneda", + "lastname": "Salinas", + "entity": "METROZ", + "entryDate": "04/10/2015", + "birthDate": "22/01/1963", + "gender": "", + "email": "Castaneda.Salinas@METROZ.com", + "skills": [ + "exercitation", + "consectetur", + "aute", + "ad", + "adipisicing" + ], + "geo": { + "lat": 48.85988099923647, + "lng": 2.283677529858706 + }, + "phone": "0145652522", + "address": { + "street": "Metrotech Courtr", + "postalCode": 53292, + "city": "Franklin" + }, + "links": { + "twitter": "https://twitter.com/velit", + "slack": "https://slack.com/sunt", + "github": "https://github.com/sint", + "linkedin": "https://www.linkedin.com/in/voluptate" + }, + "isManager": false, + "manager": "Erika", + "managerId": "5763cd4d3b57c672861bfa1f" + }, + { + "id": "5763cd4dba6362a3f92c954e", + "photo": "https://randomuser.me/portraits/women/74.jpg", + "firstname": "Phyllis", + "lastname": "Donovan", + "entity": "PEARLESSA", + "entryDate": "30/03/2015", + "birthDate": "30/11/1951", + "gender": "", + "email": "Phyllis.Donovan@PEARLESSA.com", + "skills": [ + "fugiat", + "deserunt", + "culpa", + "adipisicing", + "Lorem" + ], + "geo": { + "lat": 48.845544343608054, + "lng": 2.399797357715456 + }, + "phone": "0685230125", + "address": { + "street": "Oakland Place", + "postalCode": 40863, + "city": "Onton" + }, + "links": { + "twitter": "https://twitter.com/non", + "slack": "https://slack.com/enim", + "github": "https://github.com/laborum", + "linkedin": "https://www.linkedin.com/in/et" + }, + "isManager": false, + "manager": "Erika", + "managerId": "5763cd4d3b57c672861bfa1f" + }, + { + "id": "5763cd4d3b57c672861bfa1f", + "photo": "https://randomuser.me/portraits/women/9.jpg", + "firstname": "Erika", + "lastname": "Guzman", + "entity": "CIRCUM", + "entryDate": "13/05/2016", + "birthDate": "19/03/1962", + "gender": "", + "email": "Erika.Guzman@CIRCUM.com", + "skills": [ + "aliquip", + "do", + "amet", + "aute", + "et" + ], + "geo": { + "lat": 48.843615611100034, + "lng": 2.3131976417042717 + }, + "phone": "0678412587", + "address": { + "street": "Havemeyer Street", + "postalCode": 76154, + "city": "Yardville" + }, + "links": { + "twitter": "https://twitter.com/nisi", + "slack": "https://slack.com/laborum", + "github": "https://github.com/ea", + "linkedin": "https://www.linkedin.com/in/sint" + }, + "isManager": true, + "manager": "Mercedes", + "managerId": "5763cd4d979b62a209809160" + }, + { + "id": "5763cd4d5fc36e4f842ca5a9", + "photo": "https://randomuser.me/portraits/men/98.jpg", + "firstname": "Moody", + "lastname": "Prince", + "entity": "TRIPSCH", + "entryDate": "28/09/2015", + "birthDate": "15/04/1971", + "gender": "", + "email": "Moody.Prince@TRIPSCH.com", + "skills": [ + "tempor", + "deserunt", + "consequat", + "eiusmod", + "labore" + ], + "geo": { + "lat": 48.852765798186375, + "lng": 2.3216256189826345 + }, + "phone": "0662589632", + "address": { + "street": "Russell Street", + "postalCode": 51004, + "city": "Coloma" + }, + "links": { + "twitter": "https://twitter.com/qui", + "slack": "https://slack.com/sint", + "github": "https://github.com/esse", + "linkedin": "https://www.linkedin.com/in/fugiat" + }, + "isManager": false, + "manager": "Mercedes", + "managerId": "5763cd4d979b62a209809160" + }, + { + "id": "5763cd4d979b62a209809160", + "photo": "https://randomuser.me/portraits/women/81.jpg", + "firstname": "Mercedes", + "lastname": "Hebert", + "entity": "QUINTITY", + "entryDate": "02/01/2016", + "birthDate": "20/07/1947", + "gender": "", + "email": "Mercedes.Hebert@QUINTITY.com", + "skills": [ + "ex", + "commodo", + "pariatur", + "sit", + "aute" + ], + "geo": { + "lat": 48.846017690212236, + "lng": 2.381289161182463 + }, + "phone": "0125878522", + "address": { + "street": "Laurel Avenue", + "postalCode": 85752, + "city": "Northchase" + }, + "links": { + "twitter": "https://twitter.com/eiusmod", + "slack": "https://slack.com/sit", + "github": "https://github.com/reprehenderit", + "linkedin": "https://www.linkedin.com/in/do" + }, + "isManager": true, + "manager": "Mclaughlin", + "managerId": "5763cd4d3c307cf87ed4f944" + }, + { + "id": "5763cd4d15e6c2c28b70f2e8", + "photo": "https://randomuser.me/portraits/men/39.jpg", + "firstname": "Howell", + "lastname": "Mcknight", + "entity": "KRAG", + "entryDate": "26/09/2015", + "birthDate": "18/07/1979", + "gender": "", + "email": "Howell.Mcknight@KRAG.com", + "skills": [ + "commodo", + "cillum", + "ea", + "ex", + "in" + ], + "geo": { + "lat": 48.85466031451406, + "lng": 2.28371412891228 + }, + "phone": "0456987425", + "address": { + "street": "Ford Street", + "postalCode": 58545, + "city": "Shindler" + }, + "links": { + "twitter": "https://twitter.com/eu", + "slack": "https://slack.com/reprehenderit", + "github": "https://github.com/magna", + "linkedin": "https://www.linkedin.com/in/irure" + }, + "isManager": false, + "manager": "Mclaughlin", + "managerId": "5763cd4dfa6f96cd26c65787" + }, + { + "id": "5763cd4d5d6ad8dfc6c34883", + "photo": "https://randomuser.me/portraits/women/86.jpg", + "firstname": "Lizzie", + "lastname": "Morris", + "entity": "NSPIRE", + "entryDate": "03/05/2016", + "birthDate": "15/11/1981", + "gender": "", + "email": "Lizzie.Morris@NSPIRE.com", + "skills": [ + "laborum", + "cupidatat", + "nostrud", + "consequat", + "officia" + ], + "geo": { + "lat": 48.86595755527611, + "lng": 2.294342855755885 + }, + "phone": "0662259988", + "address": { + "street": "Hall Street", + "postalCode": 27946, + "city": "Waverly" + }, + "links": { + "twitter": "https://twitter.com/velit", + "slack": "https://slack.com/et", + "github": "https://github.com/cillum", + "linkedin": "https://www.linkedin.com/in/do" + }, + "isManager": false, + "manager": "Mclaughlin", + "managerId": "5763cd4dfa6f96cd26c65787" + }, + { + "id": "5763cd4dc378a38ecd387737", + "photo": "https://randomuser.me/portraits/men/55.jpg", + "firstname": "Roy", + "lastname": "Nielsen", + "entity": "QNEKT", + "entryDate": "17/05/2016", + "birthDate": "21/10/1951", + "gender": "", + "email": "Roy.Nielsen@QNEKT.com", + "skills": [ + "pariatur", + "deserunt", + "sit", + "consectetur", + "occaecat" + ], + "geo": { + "lat": 48.855495309829195, + "lng": 2.4590747454636652 + }, + "phone": "0755669551", + "address": { + "street": "Sumner Place", + "postalCode": 36335, + "city": "Glidden" + }, + "links": { + "twitter": "https://twitter.com/non", + "slack": "https://slack.com/eu", + "github": "https://github.com/deserunt", + "linkedin": "https://www.linkedin.com/in/culpa" + }, + "isManager": false, + "manager": "Mclaughlin", + "managerId": "5763cd4dfa6f96cd26c65787" + }, + { + "id": "5763cd4dfa6f96cd26c65787", + "photo": "https://randomuser.me/portraits/men/70.jpg", + "firstname": "Mclaughlin", + "lastname": "Cochran", + "entity": "UTARA", + "entryDate": "11/04/2016", + "birthDate": "19/03/1973", + "gender": "", + "email": "Mclaughlin.Cochran@undefined.com", + "skills": [ + "commodo", + "cillum", + "ea", + "ex", + "in" + ], + "geo": { + "lat": 48.848942410578736, + "lng": 2.4026880720467796 + }, + "phone": "0266334856", + "address": { + "street": "Jewel Street", + "postalCode": 61400, + "city": "Snelling" + }, + "links": { + "twitter": "https://twitter.com/mollit", + "slack": "https://slack.com/cupidatat", + "github": "https://github.com/qui", + "linkedin": "https://www.linkedin.com/in/sunt" + }, + "isManager": true, + "manager": "", + "managerId": "" + } +]; diff --git a/steps/events-solution/src/app/app.component.css b/steps/events-solution/src/app/app.component.css new file mode 100644 index 00000000..df3c0b92 --- /dev/null +++ b/steps/events-solution/src/app/app.component.css @@ -0,0 +1,46 @@ +mat-toolbar.extend-toolbar { + background-color: #0168AB; + background-image: url('/assets/images/bg_right.png'); + background-repeat: no-repeat; + background-position: right; + top: 0px; + box-shadow: 0 2px 5px 0 rgba(0,0,0,.26); + width: 100%; + z-index: 1; + color: white; + margin-bottom: 10px; +} + +mat-toolbar .flex { + flex: 1 1 auto; +} + +mat-toolbar a { + color: inherit; + text-decoration: none; + height: 100%; + margin: 0px 10px 0px 10px; + border-bottom: 2px solid transparent; + font-size: 1.1em; + font-weight: normal; + font-family: 'Open Sans', sans-serif; +} + +mat-toolbar a:not(.active):hover { + border-bottom: 2px solid white; +} + +mat-toolbar a img { + height: 100%; + margin-left: -60px; +} + +mat-toolbar-row:nth-child(1) { + margin-bottom: 66px; +} +mat-toolbar-row:nth-child(2) { + padding-left: 30px; + text-align: center; + height: 56px; + margin-top: 56px; +} diff --git a/steps/events-solution/src/app/app.component.html b/steps/events-solution/src/app/app.component.html new file mode 100644 index 00000000..94617756 --- /dev/null +++ b/steps/events-solution/src/app/app.component.html @@ -0,0 +1,16 @@ + + + + Sfeir + + + + + + + Maps + List + + + + \ No newline at end of file diff --git a/steps/events-solution/src/app/app.component.ts b/steps/events-solution/src/app/app.component.ts new file mode 100644 index 00000000..8550eb4f --- /dev/null +++ b/steps/events-solution/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'sfeir-app', + templateUrl: 'app.component.html', + styleUrls: ['app.component.css'] +}) +export class PeopleAppComponent { + constructor() {} +} diff --git a/steps/events-solution/src/app/app.module.ts b/steps/events-solution/src/app/app.module.ts new file mode 100644 index 00000000..76f23c9c --- /dev/null +++ b/steps/events-solution/src/app/app.module.ts @@ -0,0 +1,44 @@ +// CORE DEPS +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; +// MATERIAL DESIGN MODULES +import { + MatToolbarModule, + MatCardModule, + MatTabsModule, + MatButtonModule, + MatInputModule, + MatCheckboxModule, + MatRadioModule, + MatIconModule, + MatListModule +} from '@angular/material'; +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; + +import { PeopleAppComponent } from './app.component'; +import { HomeComponent } from './home'; + +@NgModule({ + imports: [ + BrowserModule, + BrowserAnimationsModule, + MatToolbarModule, + MatCardModule, + MatTabsModule, + MatButtonModule, + MatInputModule, + MatCheckboxModule, + MatRadioModule, + MatIconModule, + MatListModule + ], + declarations: [ + PeopleAppComponent, + HomeComponent + ], + providers: [ ], + bootstrap: [ + PeopleAppComponent + ] +}) +export class AppModule { } diff --git a/steps/events-solution/src/app/home/home.component.css b/steps/events-solution/src/app/home/home.component.css new file mode 100644 index 00000000..6ea44e54 --- /dev/null +++ b/steps/events-solution/src/app/home/home.component.css @@ -0,0 +1,151 @@ +h1 { + text-align: center; +} + +section { + display: flex; + flex-flow: row wrap; + align-items: center; + justify-content: center; +} + +@media (min-width: 768px) { + :host(.wide) mat-card, + :host(.wide) mat-list-item{ + width: 600px; + } +} + +mat-card, +mat-list-item { + color: rgba(0,0,0,0.87); + background-color: white; + margin: 10px; + width: 360px; +} + +mat-card:hover { + box-shadow: 0 11px 15px -7px rgba(0,0,0,.2), + 0 24px 38px 3px rgba(0,0,0,.14), + 0 9px 46px 8px rgba(0,0,0,.12); +} + +mat-list-item { + height: 22px; + padding: 0; + margin-left: -12px; + font-size: 14px; +} + +mat-card-title { + margin-bottom: 0; +} + +mat-card-title span { + font-size: 24px; + font-weight: 400; + line-height: 32px; +} + +mat-card-subtitle.contact-info { + margin-top: -7px; + height: 20px; +} + +mat-card-title-group { + margin-bottom: 20px; +} + +.contact-info mat-icon + a { + top: -8px; + position: relative; + height: 18px; +} + +.contact-info a:hover { + text-decoration: underline; +} + +.buttons-info { + float: right; + margin-top: -50px; +} + +@media (max-width: 412px) { + .buttons-info { + margin-top: -34px; + } +} + +.buttons-info [mat-button] { + min-width: 0px; + padding: 2px; + height: 40px; +} + +mat-icon { + color: rgba(0,0,0,0.54); + margin: 4px; +} + +a { + color: #337ab7; + text-decoration: none; +} + +mat-card-actions button[mat-raised-button] { + margin: 5px; +} + +.hl { + background-color: orange; + color: white; +} + +.skills { + padding: 10px; + background-color: #FAFAFA; +} + +a.truncate { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: inline-block; + width: 188px; +} + +@media (max-width: 600px) { + a.truncate { + width: 170px; + } +} + +@media (max-width: 768px) { + a.truncate { + width: 190px; + } +} + +.mat-whiteframe-2dp { + box-shadow: 0 1px 5px 0 rgba(0,0,0,.2), + 0 2px 2px 0 rgba(0,0,0,.14), + 0 3px 1px -2px rgba(0,0,0,.12); +} + +img { + border-radius: 50%; + margin-right: 18px; +} + +@media (max-width: 412px) { + img { + margin-right: 3px; + } +} + +@media (max-width: 600px) { + img { + margin-right: 5px; + } +} diff --git a/steps/events-solution/src/app/home/home.component.html b/steps/events-solution/src/app/home/home.component.html new file mode 100644 index 00000000..04c04127 --- /dev/null +++ b/steps/events-solution/src/app/home/home.component.html @@ -0,0 +1,46 @@ +
+ + + + + + {{ person.firstname }} {{ person.lastname }} + + + Sfeir-Paris + + + luannpowers@sfeir.com + + + + +33688258827 + + + + +
+ Manager :  + {{ person.manager }} +
+
+ Location : SFEIR +
+ +
+
+
+ + diff --git a/steps/events-solution/src/app/home/home.component.ts b/steps/events-solution/src/app/home/home.component.ts new file mode 100644 index 00000000..611ef30b --- /dev/null +++ b/steps/events-solution/src/app/home/home.component.ts @@ -0,0 +1,28 @@ +import { Component, OnInit } from '@angular/core'; +import { PEOPLE } from '../_static/people'; + +@Component({ + selector: 'sfeir-home', + templateUrl: 'home.component.html', + styleUrls: ['home.component.css'] +}) +export class HomeComponent implements OnInit { + private person: any; + + constructor() { + this.person = PEOPLE[0]; + } + + /** + * OnInit implementation + */ + ngOnInit() { + } + + /** + * Returns random people + */ + random() { + this.person = PEOPLE[ Math.floor(Math.random() * PEOPLE.length) ]; + } +} diff --git a/steps/events-solution/src/app/home/index.ts b/steps/events-solution/src/app/home/index.ts new file mode 100644 index 00000000..e00834fc --- /dev/null +++ b/steps/events-solution/src/app/home/index.ts @@ -0,0 +1 @@ +export * from './home.component'; \ No newline at end of file diff --git a/steps/events-solution/src/app/index.ts b/steps/events-solution/src/app/index.ts new file mode 100644 index 00000000..875bdb2f --- /dev/null +++ b/steps/events-solution/src/app/index.ts @@ -0,0 +1,2 @@ +export * from './app.component'; +export * from './app.module'; diff --git a/steps/events-solution/src/assets/.gitkeep b/steps/events-solution/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/steps/events-solution/src/assets/.npmignore b/steps/events-solution/src/assets/.npmignore new file mode 100644 index 00000000..e69de29b diff --git a/steps/events-solution/src/assets/images/bg_right.png b/steps/events-solution/src/assets/images/bg_right.png new file mode 100644 index 00000000..449e4bc8 Binary files /dev/null and b/steps/events-solution/src/assets/images/bg_right.png differ diff --git a/steps/events-solution/src/assets/images/icon-delete.svg b/steps/events-solution/src/assets/images/icon-delete.svg new file mode 100644 index 00000000..c665bde5 --- /dev/null +++ b/steps/events-solution/src/assets/images/icon-delete.svg @@ -0,0 +1 @@ + diff --git a/steps/events-solution/src/assets/images/icon-edit.svg b/steps/events-solution/src/assets/images/icon-edit.svg new file mode 100644 index 00000000..bb07333e --- /dev/null +++ b/steps/events-solution/src/assets/images/icon-edit.svg @@ -0,0 +1 @@ + diff --git a/steps/events-solution/src/assets/images/icon-mail.svg b/steps/events-solution/src/assets/images/icon-mail.svg new file mode 100644 index 00000000..040a7e7f --- /dev/null +++ b/steps/events-solution/src/assets/images/icon-mail.svg @@ -0,0 +1 @@ + diff --git a/steps/events-solution/src/assets/images/icon-maps.svg b/steps/events-solution/src/assets/images/icon-maps.svg new file mode 100644 index 00000000..989697e2 --- /dev/null +++ b/steps/events-solution/src/assets/images/icon-maps.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/steps/events-solution/src/assets/images/icon-phone.svg b/steps/events-solution/src/assets/images/icon-phone.svg new file mode 100644 index 00000000..15ac4a3e --- /dev/null +++ b/steps/events-solution/src/assets/images/icon-phone.svg @@ -0,0 +1 @@ + diff --git a/steps/events-solution/src/assets/images/logo-sfeir.svg b/steps/events-solution/src/assets/images/logo-sfeir.svg new file mode 100644 index 00000000..9d6e4c3e --- /dev/null +++ b/steps/events-solution/src/assets/images/logo-sfeir.svg @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/steps/events-solution/src/assets/images/search-icon.svg b/steps/events-solution/src/assets/images/search-icon.svg new file mode 100644 index 00000000..92e95a18 --- /dev/null +++ b/steps/events-solution/src/assets/images/search-icon.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/steps/events-solution/src/environments/environment.prod.ts b/steps/events-solution/src/environments/environment.prod.ts new file mode 100644 index 00000000..3612073b --- /dev/null +++ b/steps/events-solution/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/steps/events-solution/src/environments/environment.ts b/steps/events-solution/src/environments/environment.ts new file mode 100644 index 00000000..00313f16 --- /dev/null +++ b/steps/events-solution/src/environments/environment.ts @@ -0,0 +1,8 @@ +// The file contents for the current environment will overwrite these during build. +// The build system defaults to the dev environment which uses `environment.ts`, but if you do +// `ng build --env=prod` then `environment.prod.ts` will be used instead. +// The list of which env maps to which file can be found in `angular-cli.json`. + +export const environment = { + production: false +}; diff --git a/steps/events-solution/src/favicon.ico b/steps/events-solution/src/favicon.ico new file mode 100644 index 00000000..8081c7ce Binary files /dev/null and b/steps/events-solution/src/favicon.ico differ diff --git a/steps/events-solution/src/index.html b/steps/events-solution/src/index.html new file mode 100644 index 00000000..8ddebe30 --- /dev/null +++ b/steps/events-solution/src/index.html @@ -0,0 +1,21 @@ + + + + + Angular2200 + + + + + + + + +
+ + + +
+
+ + diff --git a/steps/events-solution/src/main.ts b/steps/events-solution/src/main.ts new file mode 100644 index 00000000..c7b673cf --- /dev/null +++ b/steps/events-solution/src/main.ts @@ -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)); diff --git a/steps/events-solution/src/polyfills.ts b/steps/events-solution/src/polyfills.ts new file mode 100644 index 00000000..ee8b84da --- /dev/null +++ b/steps/events-solution/src/polyfills.ts @@ -0,0 +1,80 @@ +/** + * 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 + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** + * If the application will be indexed by Google Search, the following is required. + * Googlebot uses a renderer based on Chrome 41. + * https://developers.google.com/search/docs/guides/rendering + **/ +// import 'core-js/es6/array'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + +/** + * 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 + */ + + // (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__BLACK_LISTED_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 + */ diff --git a/steps/events-solution/src/styles.css b/steps/events-solution/src/styles.css new file mode 100644 index 00000000..15465c56 --- /dev/null +++ b/steps/events-solution/src/styles.css @@ -0,0 +1,101 @@ +@import "~@angular/material/prebuilt-themes/indigo-pink.css"; + +body { + background: red; + padding: 0; + margin: 0; + font-family: 'Open Sans', sans-serif; + background-color: #FAFAFA; + -webkit-font-smoothing: antialiased; +} +* /deep/ * { + font-family: inherit; + font-size: 14px; + line-height: 1.42857143; + color: inherit; +} +h1, * /deep/ h1 { + font-size: 36px; + margin-top: 20px; + margin-bottom: 10px; +} + +button[mat-fab], a[mat-fab] { + position: fixed; + bottom: 20px; + right: 20px; +} + +[mat-fab] mat-icon { + font-size: 2em; + line-height: 18.6px; +} + +.loader { + position: relative; + margin: 0 auto; + width: 100px; + transform: scale(1.5); +} +.loader:before { + content: ''; + display: block; + padding-top: 100%; +} + +.circular { + animation: rotate 2s linear infinite; + height: 100%; + transform-origin: center center; + width: 100%; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; +} + +.path { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + animation: dash 1.5s ease-in-out infinite, color 6s ease-in-out infinite; + stroke-linecap: round; +} + +@keyframes rotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes dash { + 0% { + stroke-dasharray: 1, 200; + stroke-dashoffset: 0; + } + 50% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -35px; + } + 100% { + stroke-dasharray: 89, 200; + stroke-dashoffset: -124px; + } +} +@keyframes color { + 100%, + 0% { + stroke: #d62d20; + } + 40% { + stroke: #0057e7; + } + 66% { + stroke: #008744; + } + 80%, + 90% { + stroke: #ffa700; + } +} diff --git a/steps/events-solution/tsconfig.app.json b/steps/events-solution/tsconfig.app.json new file mode 100644 index 00000000..bb16c46a --- /dev/null +++ b/steps/events-solution/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +}