├── Chapter01
└── chapter1_quickstart
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── home
│ │ │ ├── home.component.html
│ │ │ ├── home.component.scss
│ │ │ ├── home.component.spec.ts
│ │ │ └── home.component.ts
│ │ ├── todoitem
│ │ │ ├── todoitem.component.html
│ │ │ ├── todoitem.component.scss
│ │ │ ├── todoitem.component.spec.ts
│ │ │ └── todoitem.component.ts
│ │ └── todolist
│ │ │ ├── todolist.component.html
│ │ │ ├── todolist.component.scss
│ │ │ ├── todolist.component.spec.ts
│ │ │ └── todolist.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter02
├── chapter2_part1
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.css
│ │ │ ├── app.component.html
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── cars.js
│ │ │ └── cars.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── browserslist
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── karma.conf.js
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── styles.css
│ │ ├── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
└── chapter2_part2
│ ├── alphafunctions.js
│ ├── alphafunctions.ts
│ ├── cars.js
│ ├── cars.ts
│ ├── decorator.js
│ ├── decorator.ts
│ ├── destruction.js
│ ├── destruction.ts
│ ├── employees.js
│ ├── employees.ts
│ ├── examples.js
│ ├── examples.ts
│ ├── forLoop.js
│ ├── forLoop.ts
│ ├── interfaces.ts
│ ├── main.js
│ ├── main.ts
│ ├── new 5.txt
│ └── package.json
├── Chapter03
├── chapter3-bootstrap
│ ├── homepage.html
│ ├── index.html
│ ├── index2.html
│ ├── listings.html
│ └── signup.html
└── chapter3_bootstrap
│ ├── index.html
│ └── index2.html
├── Chapter04
└── chapter4_routing
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── activate-admin.guard.spec.ts
│ │ ├── activate-admin.guard.ts
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── crud
│ │ │ ├── crud.component.html
│ │ │ ├── crud.component.scss
│ │ │ ├── crud.component.spec.ts
│ │ │ └── crud.component.ts
│ │ ├── home
│ │ │ ├── home.component.html
│ │ │ ├── home.component.scss
│ │ │ ├── home.component.spec.ts
│ │ │ └── home.component.ts
│ │ ├── listing-details
│ │ │ ├── listing-details.component.html
│ │ │ ├── listing-details.component.scss
│ │ │ ├── listing-details.component.spec.ts
│ │ │ └── listing-details.component.ts
│ │ ├── listings
│ │ │ ├── listings.component.html
│ │ │ ├── listings.component.scss
│ │ │ ├── listings.component.spec.ts
│ │ │ └── listings.component.ts
│ │ └── menu
│ │ │ ├── menu.component.html
│ │ │ ├── menu.component.scss
│ │ │ ├── menu.component.spec.ts
│ │ │ └── menu.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter05
├── chapter5-flex
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app-routing.module.ts
│ │ │ ├── app.component.css
│ │ │ ├── app.component.html
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── create-listing
│ │ │ │ ├── create-listing.component.css
│ │ │ │ ├── create-listing.component.html
│ │ │ │ ├── create-listing.component.spec.ts
│ │ │ │ └── create-listing.component.ts
│ │ │ └── edit-listing
│ │ │ │ ├── edit-listing.component.css
│ │ │ │ ├── edit-listing.component.html
│ │ │ │ ├── edit-listing.component.spec.ts
│ │ │ │ └── edit-listing.component.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── browserslist
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── karma.conf.js
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── styles.css
│ │ ├── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
└── chapter5_flex
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app.component.css
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ └── app.module.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.css
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter06
└── chapter6_angularComponents
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── car
│ │ │ ├── car.component.html
│ │ │ ├── car.component.scss
│ │ │ ├── car.component.spec.ts
│ │ │ └── car.component.ts
│ │ ├── dad
│ │ │ ├── dad.component.html
│ │ │ ├── dad.component.scss
│ │ │ ├── dad.component.spec.ts
│ │ │ ├── dad.component.ts
│ │ │ └── son.component.ts
│ │ ├── photo-listing
│ │ │ ├── photo-listing.component.html
│ │ │ ├── photo-listing.component.scss
│ │ │ ├── photo-listing.component.spec.ts
│ │ │ └── photo-listing.component.ts
│ │ ├── preview-listing
│ │ │ ├── preview-listing.component.html
│ │ │ ├── preview-listing.component.scss
│ │ │ ├── preview-listing.component.spec.ts
│ │ │ └── preview-listing.component.ts
│ │ └── preview-photos
│ │ │ ├── preview-photos.component.html
│ │ │ ├── preview-photos.component.scss
│ │ │ ├── preview-photos.component.spec.ts
│ │ │ └── preview-photos.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter07
└── chapter7_templates
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── carhorsepower.component.ts
│ │ └── carhorsepower2.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter08
└── chapter8_ngBootstrap
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── ngb-carousel
│ │ │ ├── ngb-carousel.component.html
│ │ │ ├── ngb-carousel.component.scss
│ │ │ ├── ngb-carousel.component.spec.ts
│ │ │ └── ngb-carousel.component.ts
│ │ ├── ngb-collapse
│ │ │ ├── ngb-collapse.component.html
│ │ │ ├── ngb-collapse.component.scss
│ │ │ ├── ngb-collapse.component.spec.ts
│ │ │ └── ngb-collapse.component.ts
│ │ ├── ngb-modal
│ │ │ ├── ngb-modal.component.html
│ │ │ ├── ngb-modal.component.scss
│ │ │ ├── ngb-modal.component.spec.ts
│ │ │ └── ngb-modal.component.ts
│ │ └── playground
│ │ │ ├── playground.component.html
│ │ │ ├── playground.component.scss
│ │ │ ├── playground.component.spec.ts
│ │ │ └── playground.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter09
└── chapter9_angularMaterial
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── add-dialog
│ │ │ ├── add-dialog.component.html
│ │ │ ├── add-dialog.component.scss
│ │ │ ├── add-dialog.component.spec.ts
│ │ │ └── add-dialog.component.ts
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── bootstrap-material-combo
│ │ │ ├── bootstrap-material-combo.component.html
│ │ │ ├── bootstrap-material-combo.component.scss
│ │ │ ├── bootstrap-material-combo.component.spec.ts
│ │ │ └── bootstrap-material-combo.component.ts
│ │ ├── issue-list
│ │ │ ├── issue-list-datasource.ts
│ │ │ ├── issue-list.component.css
│ │ │ ├── issue-list.component.html
│ │ │ ├── issue-list.component.spec.ts
│ │ │ └── issue-list.component.ts
│ │ ├── material-buttons
│ │ │ ├── material-buttons.component.html
│ │ │ ├── material-buttons.component.scss
│ │ │ ├── material-buttons.component.spec.ts
│ │ │ └── material-buttons.component.ts
│ │ ├── material-cards
│ │ │ ├── material-cards.component.html
│ │ │ ├── material-cards.component.scss
│ │ │ ├── material-cards.component.spec.ts
│ │ │ └── material-cards.component.ts
│ │ ├── material-form
│ │ │ ├── material-form.component.html
│ │ │ ├── material-form.component.scss
│ │ │ ├── material-form.component.spec.ts
│ │ │ └── material-form.component.ts
│ │ ├── material-layout
│ │ │ ├── material-layout.component.html
│ │ │ ├── material-layout.component.scss
│ │ │ ├── material-layout.component.spec.ts
│ │ │ └── material-layout.component.ts
│ │ ├── material-modals
│ │ │ ├── create-new.html
│ │ │ ├── material-modals.component.html
│ │ │ ├── material-modals.component.scss
│ │ │ ├── material-modals.component.spec.ts
│ │ │ └── material-modals.component.ts
│ │ ├── material-navigation
│ │ │ ├── material-navigation.component.html
│ │ │ ├── material-navigation.component.scss
│ │ │ ├── material-navigation.component.spec.ts
│ │ │ └── material-navigation.component.ts
│ │ ├── material-table
│ │ │ ├── material-table.component.html
│ │ │ ├── material-table.component.scss
│ │ │ ├── material-table.component.spec.ts
│ │ │ └── material-table.component.ts
│ │ └── my-menu
│ │ │ ├── my-menu.component.css
│ │ │ ├── my-menu.component.html
│ │ │ ├── my-menu.component.spec.ts
│ │ │ └── my-menu.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter10
└── chapter10_angularforms
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── activate-admin.guard.spec.ts
│ │ ├── activate-admin.guard.ts
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── crud
│ │ │ ├── crud.component.html
│ │ │ ├── crud.component.scss
│ │ │ ├── crud.component.spec.ts
│ │ │ └── crud.component.ts
│ │ ├── login
│ │ │ ├── login.component.html
│ │ │ ├── login.component.scss
│ │ │ ├── login.component.spec.ts
│ │ │ └── login.component.ts
│ │ ├── payment-page
│ │ │ ├── payment-page.component.html
│ │ │ ├── payment-page.component.scss
│ │ │ ├── payment-page.component.spec.ts
│ │ │ └── payment-page.component.ts
│ │ ├── photos.guard.spec.ts
│ │ ├── photos.guard.ts
│ │ └── register
│ │ │ ├── register.component.html
│ │ │ ├── register.component.scss
│ │ │ ├── register.component.spec.ts
│ │ │ └── register.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter11
└── chapter11_di_services
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app.component.css
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── photo.ts
│ │ ├── photos.service.spec.ts
│ │ └── photos.service.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.css
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter12
└── chapter12_angular_backend
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── add-comments
│ │ │ ├── add-comments.component.html
│ │ │ ├── add-comments.component.scss
│ │ │ ├── add-comments.component.spec.ts
│ │ │ └── add-comments.component.ts
│ │ ├── apis
│ │ │ ├── data.json
│ │ │ └── listings.json
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── create-listing
│ │ │ ├── create-listing.component.html
│ │ │ ├── create-listing.component.scss
│ │ │ ├── create-listing.component.spec.ts
│ │ │ └── create-listing.component.ts
│ │ ├── crud-service.service.spec.ts
│ │ ├── crud-service.service.ts
│ │ ├── db-operations.service.spec.ts
│ │ ├── db-operations.service.ts
│ │ ├── delete-comments
│ │ │ ├── delete-comments.component.html
│ │ │ ├── delete-comments.component.scss
│ │ │ ├── delete-comments.component.spec.ts
│ │ │ └── delete-comments.component.ts
│ │ ├── delete-listing
│ │ │ ├── delete-listing.component.html
│ │ │ ├── delete-listing.component.scss
│ │ │ ├── delete-listing.component.spec.ts
│ │ │ └── delete-listing.component.ts
│ │ ├── edit-comments
│ │ │ ├── edit-comments.component.html
│ │ │ ├── edit-comments.component.scss
│ │ │ ├── edit-comments.component.spec.ts
│ │ │ └── edit-comments.component.ts
│ │ ├── firebase-config.ts
│ │ ├── models
│ │ │ └── listing.ts
│ │ ├── update-listing
│ │ │ ├── update-listing.component.html
│ │ │ ├── update-listing.component.scss
│ │ │ ├── update-listing.component.spec.ts
│ │ │ └── update-listing.component.ts
│ │ ├── view-comments
│ │ │ ├── view-comments.component.html
│ │ │ ├── view-comments.component.scss
│ │ │ ├── view-comments.component.spec.ts
│ │ │ └── view-comments.component.ts
│ │ └── view-listing
│ │ │ ├── view-listing.component.html
│ │ │ ├── view-listing.component.scss
│ │ │ ├── view-listing.component.spec.ts
│ │ │ └── view-listing.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter13
├── chapter_13_testing
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app-routing.module.ts
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── auto-list
│ │ │ │ ├── auto-list.component.html
│ │ │ │ ├── auto-list.component.scss
│ │ │ │ ├── auto-list.component.spec.ts
│ │ │ │ └── auto-list.component.ts
│ │ │ ├── cars.ts
│ │ │ ├── menu
│ │ │ │ ├── menu.component.html
│ │ │ │ ├── menu.component.scss
│ │ │ │ ├── menu.component.spec.ts
│ │ │ │ └── menu.component.ts
│ │ │ ├── services
│ │ │ │ ├── cars.json
│ │ │ │ ├── dealers.service.spec.ts
│ │ │ │ ├── dealers.service.ts
│ │ │ │ └── dealers.ts
│ │ │ └── used-cars
│ │ │ │ ├── used-cars.component.html
│ │ │ │ ├── used-cars.component.scss
│ │ │ │ ├── used-cars.component.spec.ts
│ │ │ │ └── used-cars.component.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── browserslist
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── karma.conf.js
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── styles.scss
│ │ ├── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
└── chapter_13_unit_tests
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── auto-list
│ │ │ ├── auto-list.component.html
│ │ │ ├── auto-list.component.scss
│ │ │ ├── auto-list.component.spec.ts
│ │ │ └── auto-list.component.ts
│ │ ├── cars.ts
│ │ ├── menu
│ │ │ ├── menu.component.html
│ │ │ ├── menu.component.scss
│ │ │ ├── menu.component.spec.ts
│ │ │ └── menu.component.ts
│ │ ├── services
│ │ │ ├── cars.json
│ │ │ ├── dealers.service.spec.ts
│ │ │ ├── dealers.service.ts
│ │ │ └── dealers.ts
│ │ └── used-cars
│ │ │ ├── used-cars.component.html
│ │ │ ├── used-cars.component.scss
│ │ │ ├── used-cars.component.spec.ts
│ │ │ └── used-cars.component.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter14
├── chapter14-firebase-app
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app-auth.service.spec.ts
│ │ │ ├── app-auth.service.ts
│ │ │ ├── app-routing.module.ts
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── custom-form-validation
│ │ │ │ ├── custom-form-validation.component.html
│ │ │ │ ├── custom-form-validation.component.scss
│ │ │ │ ├── custom-form-validation.component.spec.ts
│ │ │ │ └── custom-form-validation.component.ts
│ │ │ ├── login
│ │ │ │ ├── login.component.html
│ │ │ │ ├── login.component.scss
│ │ │ │ ├── login.component.spec.ts
│ │ │ │ └── login.component.ts
│ │ │ ├── logout
│ │ │ │ ├── logout.component.html
│ │ │ │ ├── logout.component.scss
│ │ │ │ ├── logout.component.spec.ts
│ │ │ │ └── logout.component.ts
│ │ │ ├── profile
│ │ │ │ ├── profile.component.html
│ │ │ │ ├── profile.component.scss
│ │ │ │ ├── profile.component.spec.ts
│ │ │ │ └── profile.component.ts
│ │ │ ├── valid-isbn.directive.spec.ts
│ │ │ └── valid-isbn.directive.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── browserslist
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── karma.conf.js
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── styles.scss
│ │ ├── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── tsconfig.json
│ ├── tslint.json
│ └── yarn.lock
├── chapter14_auth0
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app-routing.module.ts
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── login
│ │ │ │ ├── login.component.html
│ │ │ │ ├── login.component.scss
│ │ │ │ ├── login.component.spec.ts
│ │ │ │ └── login.component.ts
│ │ │ ├── profile
│ │ │ │ ├── profile.component.html
│ │ │ │ ├── profile.component.scss
│ │ │ │ ├── profile.component.spec.ts
│ │ │ │ └── profile.component.ts
│ │ │ └── services
│ │ │ │ ├── auth.service.spec.ts
│ │ │ │ └── auth.service.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── browserslist
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── karma.conf.js
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── styles.scss
│ │ ├── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── tsconfig.json
│ ├── tslint.json
│ └── yarn.lock
└── chapter14_part1
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── custom-form-validator.ts
│ │ ├── on-focus-blur.directive.spec.ts
│ │ └── on-focus-blur.directive.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter15
├── chapter15_part1
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── app
│ │ │ ├── app-routing.module.ts
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.spec.ts
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── brands.ts
│ │ │ ├── cars
│ │ │ │ ├── cars.component.html
│ │ │ │ ├── cars.component.scss
│ │ │ │ ├── cars.component.spec.ts
│ │ │ │ └── cars.component.ts
│ │ │ ├── list-images
│ │ │ │ ├── list-images.component.html
│ │ │ │ ├── list-images.component.scss
│ │ │ │ ├── list-images.component.spec.ts
│ │ │ │ └── list-images.component.ts
│ │ │ ├── testing-di
│ │ │ │ ├── images.service.spec.ts
│ │ │ │ └── images.service.ts
│ │ │ ├── vehicles.service.spec.ts
│ │ │ └── vehicles.service.ts
│ │ ├── assets
│ │ │ └── .gitkeep
│ │ ├── browserslist
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── karma.conf.js
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── styles.scss
│ │ ├── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
└── chapter_15_deploying_angular_part2
│ ├── .editorconfig
│ ├── .gitignore
│ ├── README.md
│ ├── angular.json
│ ├── e2e
│ ├── protractor.conf.js
│ ├── src
│ │ ├── app.e2e-spec.ts
│ │ └── app.po.ts
│ └── tsconfig.e2e.json
│ ├── package-lock.json
│ ├── package.json
│ ├── projects
│ ├── jackets-e2e
│ │ ├── protractor.conf.js
│ │ ├── src
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── app.po.ts
│ │ └── tsconfig.e2e.json
│ ├── jackets
│ │ ├── browserslist
│ │ ├── karma.conf.js
│ │ ├── src
│ │ │ ├── app
│ │ │ │ ├── app.component.css
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.module.ts
│ │ │ │ └── jacket-list
│ │ │ │ │ ├── jacket-list.component.html
│ │ │ │ │ ├── jacket-list.component.scss
│ │ │ │ │ ├── jacket-list.component.spec.ts
│ │ │ │ │ └── jacket-list.component.ts
│ │ │ ├── assets
│ │ │ │ └── .gitkeep
│ │ │ ├── environments
│ │ │ │ ├── environment.prod.ts
│ │ │ │ └── environment.ts
│ │ │ ├── favicon.ico
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── styles.css
│ │ │ └── test.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ └── vendors
│ │ ├── karma.conf.js
│ │ ├── ng-package.json
│ │ ├── package.json
│ │ ├── src
│ │ ├── lib
│ │ │ ├── vendors.component.spec.ts
│ │ │ ├── vendors.component.ts
│ │ │ ├── vendors.module.ts
│ │ │ ├── vendors.service.spec.ts
│ │ │ └── vendors.service.ts
│ │ ├── projects.ts
│ │ └── test.ts
│ │ ├── tsconfig.lib.json
│ │ ├── tsconfig.spec.json
│ │ └── tslint.json
│ ├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ └── app.module.ts
│ ├── assets
│ │ └── .gitkeep
│ ├── browserslist
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── karma.conf.js
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ ├── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ └── tslint.json
│ ├── tsconfig.json
│ └── tslint.json
├── LICENSE
└── README.md
/Chapter01/chapter1_quickstart/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see https://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/Chapter01/chapter1_quickstart/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('workspace-project App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 |
10 | it('should display welcome message', () => {
11 | page.navigateTo();
12 | expect(page.getTitleText()).toEqual('Welcome to todolist!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/Chapter01/chapter1_quickstart/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter01/chapter1_quickstart/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
--------------------------------------------------------------------------------
/Chapter01/chapter1_quickstart/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 |
4 | const routes: Routes = [];
5 |
6 | @NgModule({
7 | imports: [RouterModule.forRoot(routes)],
8 | exports: [RouterModule]
9 | })
10 | export class AppRoutingModule { }
11 |
--------------------------------------------------------------------------------
/Chapter01/chapter1_quickstart/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 | home works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/app/home/home.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter01/chapter1_quickstart/src/app/home/home.component.scss -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-home', 5 | templateUrl: './home.component.html', 6 | styleUrls: ['./home.component.scss'] 7 | }) 8 | export class HomeComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/app/todolist/todolist.component.html: -------------------------------------------------------------------------------- 1 |2 | todolist works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/app/todolist/todolist.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter01/chapter1_quickstart/src/app/todolist/todolist.component.scss -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/app/todolist/todolist.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-todolist', 5 | templateUrl: './todolist.component.html', 6 | styleUrls: ['./todolist.component.scss'] 7 | }) 8 | export class TodolistComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter01/chapter1_quickstart/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter01/chapter1_quickstart/src/favicon.ico -------------------------------------------------------------------------------- /Chapter01/chapter1_quickstart/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |2 | home works! 3 |
4 |2 | listing-details works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter04/chapter4_routing/src/app/listing-details/listing-details.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter04/chapter4_routing/src/app/listing-details/listing-details.component.scss -------------------------------------------------------------------------------- /Chapter04/chapter4_routing/src/app/listings/listings.component.html: -------------------------------------------------------------------------------- 1 |2 | listings works! 3 |
4 |2 | car works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/car/car.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/app/car/car.component.scss -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/car/car.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-car', 5 | templateUrl: './car.component.html', 6 | styleUrls: ['./car.component.scss'] 7 | }) 8 | export class CarComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | console.log('An instance of our CarComponent has been fully initialized.'); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/dad/dad.component.html: -------------------------------------------------------------------------------- 1 |2 | dad works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/dad/dad.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/app/dad/dad.component.scss -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/dad/dad.component.ts: -------------------------------------------------------------------------------- 1 | import {Component } from '@angular/core'; 2 | @Component({ 3 | selector: 'app-dad', 4 | template: `2 | photo-listing works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/photo-listing/photo-listing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/app/photo-listing/photo-listing.component.scss -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/photo-listing/photo-listing.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-photo-listing', 5 | templateUrl: './photo-listing.component.html', 6 | styleUrls: ['./photo-listing.component.scss'] 7 | }) 8 | export class PhotoListingComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/preview-listing/preview-listing.component.html: -------------------------------------------------------------------------------- 1 |2 | preview-listing works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/preview-listing/preview-listing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/app/preview-listing/preview-listing.component.scss -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/preview-listing/preview-listing.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-preview-listing', 5 | templateUrl: './preview-listing.component.html', 6 | styleUrls: ['./preview-listing.component.scss'] 7 | }) 8 | export class PreviewListingComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/preview-photos/preview-photos.component.html: -------------------------------------------------------------------------------- 1 |2 | preview-photos works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/preview-photos/preview-photos.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/app/preview-photos/preview-photos.component.scss -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/app/preview-photos/preview-photos.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-preview-photos', 5 | templateUrl: './preview-photos.component.html', 6 | styleUrls: ['./preview-photos.component.scss'] 7 | }) 8 | export class PreviewPhotosComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter06/chapter6_angularComponents/src/favicon.ico -------------------------------------------------------------------------------- /Chapter06/chapter6_angularComponents/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |2 | 5 |
6 |2 | {{pageTitle}} 3 |
4 |2 | bootstrap-material-combo works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/bootstrap-material-combo/bootstrap-material-combo.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter09/chapter9_angularMaterial/src/app/bootstrap-material-combo/bootstrap-material-combo.component.scss -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/bootstrap-material-combo/bootstrap-material-combo.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-bootstrap-material-combo', 5 | templateUrl: './bootstrap-material-combo.component.html', 6 | styleUrls: ['./bootstrap-material-combo.component.scss'] 7 | }) 8 | export class BootstrapMaterialComboComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/issue-list/issue-list.component.css: -------------------------------------------------------------------------------- 1 | .full-width-table { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-buttons/material-buttons.component.scss: -------------------------------------------------------------------------------- 1 | button { 2 | margin:8px; 3 | } -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-buttons/material-buttons.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-material-buttons', 5 | templateUrl: './material-buttons.component.html', 6 | styleUrls: ['./material-buttons.component.scss'] 7 | }) 8 | export class MaterialButtonsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-cards/material-cards.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter09/chapter9_angularMaterial/src/app/material-cards/material-cards.component.scss -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-cards/material-cards.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-material-cards', 5 | templateUrl: './material-cards.component.html', 6 | styleUrls: ['./material-cards.component.scss'] 7 | }) 8 | export class MaterialCardsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | menuLinks: string[] = ['Home', 'About Us', 'Contact Us', 'Blog']; 16 | } 17 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-form/material-form.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter09/chapter9_angularMaterial/src/app/material-form/material-form.component.scss -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-form/material-form.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-material-form', 5 | templateUrl: './material-form.component.html', 6 | styleUrls: ['./material-form.component.scss'] 7 | }) 8 | export class MaterialFormComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-layout/material-layout.component.html: -------------------------------------------------------------------------------- 1 |2 | material-layout works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-layout/material-layout.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter09/chapter9_angularMaterial/src/app/material-layout/material-layout.component.scss -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-layout/material-layout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-material-layout', 5 | templateUrl: './material-layout.component.html', 6 | styleUrls: ['./material-layout.component.scss'] 7 | }) 8 | export class MaterialLayoutComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter09/chapter9_angularMaterial/src/app/material-modals/create-new.html: -------------------------------------------------------------------------------- 1 |What's your favorite animal?
4 |2 | material-modals works! 3 |
4 |2 | payment-page works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter10/chapter10_angularforms/src/app/payment-page/payment-page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter10/chapter10_angularforms/src/app/payment-page/payment-page.component.scss -------------------------------------------------------------------------------- /Chapter10/chapter10_angularforms/src/app/payment-page/payment-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-payment-page', 5 | templateUrl: './payment-page.component.html', 6 | styleUrls: ['./payment-page.component.scss'] 7 | }) 8 | export class PaymentPageComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter10/chapter10_angularforms/src/app/photos.guard.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, async, inject } from '@angular/core/testing'; 2 | 3 | import { PhotosGuard } from './photos.guard'; 4 | 5 | describe('PhotosGuard', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [PhotosGuard] 9 | }); 10 | }); 11 | 12 | it('should ...', inject([PhotosGuard], (guard: PhotosGuard) => { 13 | expect(guard).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /Chapter10/chapter10_angularforms/src/app/photos.guard.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 3 | import { Observable } from 'rxjs'; 4 | 5 | @Injectable({ 6 | providedIn: 'root' 7 | }) 8 | export class PhotosGuard implements CanActivate { 9 | canActivate( 10 | next: ActivatedRouteSnapshot, 11 | state: RouterStateSnapshot): Observable2 | add-comments works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/add-comments/add-comments.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/add-comments/add-comments.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/add-comments/add-comments.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-add-comments', 5 | templateUrl: './add-comments.component.html', 6 | styleUrls: ['./add-comments.component.scss'] 7 | }) 8 | export class AddCommentsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/app.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/app.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'ListingApp'; 10 | } 11 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/create-listing/create-listing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/create-listing/create-listing.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/crud-service.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { CrudServiceService } from './crud-service.service'; 4 | 5 | describe('CrudServiceService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: CrudServiceService = TestBed.get(CrudServiceService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/db-operations.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { DbOperationsService } from './db-operations.service'; 4 | 5 | describe('DbOperationsService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: DbOperationsService = TestBed.get(DbOperationsService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/delete-comments/delete-comments.component.html: -------------------------------------------------------------------------------- 1 |2 | delete-comments works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/delete-comments/delete-comments.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/delete-comments/delete-comments.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/delete-comments/delete-comments.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-delete-comments', 5 | templateUrl: './delete-comments.component.html', 6 | styleUrls: ['./delete-comments.component.scss'] 7 | }) 8 | export class DeleteCommentsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/delete-listing/delete-listing.component.html: -------------------------------------------------------------------------------- 1 |2 | delete-listing works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/delete-listing/delete-listing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/delete-listing/delete-listing.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/edit-comments/edit-comments.component.html: -------------------------------------------------------------------------------- 1 |2 | edit-comments works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/edit-comments/edit-comments.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/edit-comments/edit-comments.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/edit-comments/edit-comments.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-edit-comments', 5 | templateUrl: './edit-comments.component.html', 6 | styleUrls: ['./edit-comments.component.scss'] 7 | }) 8 | export class EditCommentsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/firebase-config.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: false, 3 | firebaseConfig : { 4 | apiKey: "AIzaSyDW0YvxtY3sGH-sWr1u8m9Tyk4QMS5Ho6U", 5 | authDomain: "photosdb-9cbec.firebaseapp.com", 6 | databaseURL: "https://photosdb-9cbec.firebaseio.com", 7 | projectId: "photosdb-9cbec", 8 | storageBucket: "photosdb-9cbec.appspot.com", 9 | messagingSenderId: "19978618750" 10 | } 11 | }; -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/models/listing.ts: -------------------------------------------------------------------------------- 1 | export interface Listing { 2 | id: number; 3 | userId: number; 4 | title: string; 5 | description: string; 6 | status: string; 7 | price: number; 8 | active: boolean; 9 | } -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/update-listing/update-listing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/update-listing/update-listing.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/view-comments/view-comments.component.html: -------------------------------------------------------------------------------- 1 |2 | view-comments works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/view-comments/view-comments.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/view-comments/view-comments.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/view-comments/view-comments.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-view-comments', 5 | templateUrl: './view-comments.component.html', 6 | styleUrls: ['./view-comments.component.scss'] 7 | }) 8 | export class ViewCommentsComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/app/view-listing/view-listing.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/app/view-listing/view-listing.component.scss -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter12/chapter12_angular_backend/src/favicon.ico -------------------------------------------------------------------------------- /Chapter12/chapter12_angular_backend/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |2 | logout works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter14/chapter14-firebase-app/src/app/logout/logout.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter14/chapter14-firebase-app/src/app/logout/logout.component.scss -------------------------------------------------------------------------------- /Chapter14/chapter14-firebase-app/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |3 | profile works! 4 |
5 | 6 | User Token is {{_appAuthService.userToken}} 7 |2 | login works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/app/login/login.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter14/chapter14_auth0/src/app/login/login.component.scss -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/app/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-login', 5 | templateUrl: './login.component.html', 6 | styleUrls: ['./login.component.scss'] 7 | }) 8 | export class LoginComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/app/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |2 | profile works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/app/profile/profile.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter14/chapter14_auth0/src/app/profile/profile.component.scss -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/app/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.scss'] 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/app/services/auth.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { AuthService } from './auth.service'; 4 | 5 | describe('AuthService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: AuthService = TestBed.get(AuthService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter14/chapter14_auth0/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # 5 | # For IE 9-11 support, please remove 'not' from the last line of the file and adjust as needed 6 | 7 | > 0.5% 8 | last 2 versions 9 | Firefox ESR 10 | not dead 11 | not IE 9-11 -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter14/chapter14_auth0/src/favicon.ico -------------------------------------------------------------------------------- /Chapter14/chapter14_auth0/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |2 | list-images works! 3 |
4 | 5 |2 | jacket-list works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/app/jacket-list/jacket-list.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/app/jacket-list/jacket-list.component.scss -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/app/jacket-list/jacket-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-jacket-list', 5 | templateUrl: './jacket-list.component.html', 6 | styleUrls: ['./jacket-list.component.scss'] 7 | }) 8 | export class JacketListComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit() { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Web-Development-with-Angular-and-Bootstrap-Third-Edition/6d52dea530bc0835c7ec648c746aa5826cab48a9/Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/favicon.ico -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/jackets/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |7 | vendors works! 8 |
9 | `, 10 | styles: [] 11 | }) 12 | export class VendorsComponent implements OnInit { 13 | 14 | constructor() { } 15 | 16 | ngOnInit() { 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/vendors/src/lib/vendors.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { VendorsComponent } from './vendors.component'; 3 | 4 | @NgModule({ 5 | declarations: [VendorsComponent], 6 | imports: [ 7 | ], 8 | exports: [VendorsComponent] 9 | }) 10 | export class VendorsModule { } 11 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/vendors/src/lib/vendors.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { VendorsService } from './vendors.service'; 4 | 5 | describe('VendorsService', () => { 6 | beforeEach(() => TestBed.configureTestingModule({})); 7 | 8 | it('should be created', () => { 9 | const service: VendorsService = TestBed.get(VendorsService); 10 | expect(service).toBeTruthy(); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/vendors/src/lib/vendors.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable({ 4 | providedIn: 'root' 5 | }) 6 | export class VendorsService { 7 | 8 | constructor() { } 9 | } 10 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/vendors/src/projects.ts: -------------------------------------------------------------------------------- 1 | /* 2 | * Public API Surface of vendors 3 | */ 4 | 5 | export * from './lib/vendors.service'; 6 | export * from './lib/vendors.component'; 7 | export * from './lib/vendors.module'; 8 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/vendors/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/projects/vendors/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "my", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "my", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Chapter15/chapter_15_deploying_angular_part2/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 |