From 24525fa4bd70ab833f25bd8570ac17b50dcd99ed Mon Sep 17 00:00:00 2001 From: Noel Mace Date: Sun, 25 Nov 2018 22:07:03 +0100 Subject: [PATCH] feat(events): create project from branch step-05 --- angular.json | 99 ++++++ steps/events/browserslist | 11 + steps/events/src/app/_static/people.ts | 312 ++++++++++++++++++ steps/events/src/app/app.component.css | 46 +++ steps/events/src/app/app.component.html | 16 + steps/events/src/app/app.component.ts | 10 + steps/events/src/app/app.module.ts | 44 +++ steps/events/src/app/home/home.component.css | 151 +++++++++ steps/events/src/app/home/home.component.html | 46 +++ steps/events/src/app/home/home.component.ts | 21 ++ steps/events/src/app/home/index.ts | 1 + steps/events/src/app/index.ts | 2 + steps/events/src/assets/.gitkeep | 0 steps/events/src/assets/.npmignore | 0 steps/events/src/assets/images/bg_right.png | Bin 0 -> 16377 bytes .../events/src/assets/images/icon-delete.svg | 1 + steps/events/src/assets/images/icon-edit.svg | 1 + steps/events/src/assets/images/icon-mail.svg | 1 + steps/events/src/assets/images/icon-maps.svg | 23 ++ steps/events/src/assets/images/icon-phone.svg | 1 + steps/events/src/assets/images/logo-sfeir.svg | 18 + .../events/src/assets/images/search-icon.svg | 16 + .../src/environments/environment.prod.ts | 3 + steps/events/src/environments/environment.ts | 8 + steps/events/src/favicon.ico | Bin 0 -> 5430 bytes steps/events/src/index.html | 21 ++ steps/events/src/main.ts | 12 + steps/events/src/polyfills.ts | 80 +++++ steps/events/src/styles.css | 101 ++++++ steps/events/tsconfig.app.json | 11 + 30 files changed, 1056 insertions(+) create mode 100644 steps/events/browserslist create mode 100644 steps/events/src/app/_static/people.ts create mode 100644 steps/events/src/app/app.component.css create mode 100644 steps/events/src/app/app.component.html create mode 100644 steps/events/src/app/app.component.ts create mode 100644 steps/events/src/app/app.module.ts create mode 100644 steps/events/src/app/home/home.component.css create mode 100644 steps/events/src/app/home/home.component.html create mode 100644 steps/events/src/app/home/home.component.ts create mode 100644 steps/events/src/app/home/index.ts create mode 100644 steps/events/src/app/index.ts create mode 100644 steps/events/src/assets/.gitkeep create mode 100644 steps/events/src/assets/.npmignore create mode 100644 steps/events/src/assets/images/bg_right.png create mode 100644 steps/events/src/assets/images/icon-delete.svg create mode 100644 steps/events/src/assets/images/icon-edit.svg create mode 100644 steps/events/src/assets/images/icon-mail.svg create mode 100644 steps/events/src/assets/images/icon-maps.svg create mode 100644 steps/events/src/assets/images/icon-phone.svg create mode 100644 steps/events/src/assets/images/logo-sfeir.svg create mode 100644 steps/events/src/assets/images/search-icon.svg create mode 100644 steps/events/src/environments/environment.prod.ts create mode 100644 steps/events/src/environments/environment.ts create mode 100644 steps/events/src/favicon.ico create mode 100644 steps/events/src/index.html create mode 100644 steps/events/src/main.ts create mode 100644 steps/events/src/polyfills.ts create mode 100644 steps/events/src/styles.css create mode 100644 steps/events/tsconfig.app.json diff --git a/angular.json b/angular.json index 163f6f67..18f57b47 100644 --- a/angular.json +++ b/angular.json @@ -905,6 +905,105 @@ } } } + }, + "events": { + "root": "steps/events/", + "sourceRoot": "steps/events/src", + "projectType": "application", + "prefix": "app", + "schematics": {}, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/events", + "index": "steps/events/src/index.html", + "main": "steps/events/src/main.ts", + "polyfills": "steps/events/src/polyfills.ts", + "tsConfig": "steps/events/tsconfig.app.json", + "assets": [ + "steps/events/src/favicon.ico", + "steps/events/src/assets" + ], + "styles": [ + "steps/events/src/styles.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "steps/events/src/environments/environment.ts", + "with": "steps/events/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:build" + }, + "configurations": { + "production": { + "browserTarget": "events:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "events:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "steps/events/src/test.ts", + "polyfills": "steps/events/src/polyfills.ts", + "tsConfig": "steps/events/tsconfig.spec.json", + "karmaConfig": "steps/events/karma.conf.js", + "styles": [ + "steps/events/src/styles.css" + ], + "scripts": [], + "assets": [ + "steps/events/src/favicon.ico", + "steps/events/src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "steps/events/tsconfig.app.json", + "steps/events/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } } }, "defaultProject": "angular-200", diff --git a/steps/events/browserslist b/steps/events/browserslist new file mode 100644 index 00000000..37371cb0 --- /dev/null +++ b/steps/events/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/src/app/_static/people.ts b/steps/events/src/app/_static/people.ts new file mode 100644 index 00000000..f99fbe6a --- /dev/null +++ b/steps/events/src/app/_static/people.ts @@ -0,0 +1,312 @@ +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/src/app/app.component.css b/steps/events/src/app/app.component.css new file mode 100644 index 00000000..df3c0b92 --- /dev/null +++ b/steps/events/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/src/app/app.component.html b/steps/events/src/app/app.component.html new file mode 100644 index 00000000..94617756 --- /dev/null +++ b/steps/events/src/app/app.component.html @@ -0,0 +1,16 @@ + + + + Sfeir + + + + + + + Maps + List + + + + \ No newline at end of file diff --git a/steps/events/src/app/app.component.ts b/steps/events/src/app/app.component.ts new file mode 100644 index 00000000..d9965162 --- /dev/null +++ b/steps/events/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/src/app/app.module.ts b/steps/events/src/app/app.module.ts new file mode 100644 index 00000000..76f23c9c --- /dev/null +++ b/steps/events/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/src/app/home/home.component.css b/steps/events/src/app/home/home.component.css new file mode 100644 index 00000000..6ea44e54 --- /dev/null +++ b/steps/events/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/src/app/home/home.component.html b/steps/events/src/app/home/home.component.html new file mode 100644 index 00000000..ed376860 --- /dev/null +++ b/steps/events/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/src/app/home/home.component.ts b/steps/events/src/app/home/home.component.ts new file mode 100644 index 00000000..13a9f21e --- /dev/null +++ b/steps/events/src/app/home/home.component.ts @@ -0,0 +1,21 @@ +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 { + public person: any; + + constructor() { + this.person = PEOPLE[0]; + } + + /** + * OnInit implementation + */ + ngOnInit() { + } +} diff --git a/steps/events/src/app/home/index.ts b/steps/events/src/app/home/index.ts new file mode 100644 index 00000000..ab5a522c --- /dev/null +++ b/steps/events/src/app/home/index.ts @@ -0,0 +1 @@ +export * from './home.component'; diff --git a/steps/events/src/app/index.ts b/steps/events/src/app/index.ts new file mode 100644 index 00000000..875bdb2f --- /dev/null +++ b/steps/events/src/app/index.ts @@ -0,0 +1,2 @@ +export * from './app.component'; +export * from './app.module'; diff --git a/steps/events/src/assets/.gitkeep b/steps/events/src/assets/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/steps/events/src/assets/.npmignore b/steps/events/src/assets/.npmignore new file mode 100644 index 00000000..e69de29b diff --git a/steps/events/src/assets/images/bg_right.png b/steps/events/src/assets/images/bg_right.png new file mode 100644 index 0000000000000000000000000000000000000000..449e4bc82c2a6aecd449bbfcf9aad413ffc64968 GIT binary patch literal 16377 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 diff --git a/steps/events/src/assets/images/icon-edit.svg b/steps/events/src/assets/images/icon-edit.svg new file mode 100644 index 00000000..bb07333e --- /dev/null +++ b/steps/events/src/assets/images/icon-edit.svg @@ -0,0 +1 @@ + diff --git a/steps/events/src/assets/images/icon-mail.svg b/steps/events/src/assets/images/icon-mail.svg new file mode 100644 index 00000000..040a7e7f --- /dev/null +++ b/steps/events/src/assets/images/icon-mail.svg @@ -0,0 +1 @@ + diff --git a/steps/events/src/assets/images/icon-maps.svg b/steps/events/src/assets/images/icon-maps.svg new file mode 100644 index 00000000..989697e2 --- /dev/null +++ b/steps/events/src/assets/images/icon-maps.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + diff --git a/steps/events/src/assets/images/icon-phone.svg b/steps/events/src/assets/images/icon-phone.svg new file mode 100644 index 00000000..15ac4a3e --- /dev/null +++ b/steps/events/src/assets/images/icon-phone.svg @@ -0,0 +1 @@ + diff --git a/steps/events/src/assets/images/logo-sfeir.svg b/steps/events/src/assets/images/logo-sfeir.svg new file mode 100644 index 00000000..9d6e4c3e --- /dev/null +++ b/steps/events/src/assets/images/logo-sfeir.svg @@ -0,0 +1,18 @@ + + + + + + + + + diff --git a/steps/events/src/assets/images/search-icon.svg b/steps/events/src/assets/images/search-icon.svg new file mode 100644 index 00000000..92e95a18 --- /dev/null +++ b/steps/events/src/assets/images/search-icon.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/steps/events/src/environments/environment.prod.ts b/steps/events/src/environments/environment.prod.ts new file mode 100644 index 00000000..3612073b --- /dev/null +++ b/steps/events/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/steps/events/src/environments/environment.ts b/steps/events/src/environments/environment.ts new file mode 100644 index 00000000..00313f16 --- /dev/null +++ b/steps/events/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/src/favicon.ico b/steps/events/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- + + + + Angular2200 + + + + + + + + +
+ + + +
+
+ + diff --git a/steps/events/src/main.ts b/steps/events/src/main.ts new file mode 100644 index 00000000..c7b673cf --- /dev/null +++ b/steps/events/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/src/polyfills.ts b/steps/events/src/polyfills.ts new file mode 100644 index 00000000..ee8b84da --- /dev/null +++ b/steps/events/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/src/styles.css b/steps/events/src/styles.css new file mode 100644 index 00000000..15465c56 --- /dev/null +++ b/steps/events/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/tsconfig.app.json b/steps/events/tsconfig.app.json new file mode 100644 index 00000000..bb16c46a --- /dev/null +++ b/steps/events/tsconfig.app.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/app", + "types": [] + }, + "exclude": [ + "test.ts", + "**/*.spec.ts" + ] +}