├── .firebaserc
├── Chapter10
└── bulma
│ ├── libs
│ ├── .gitkeep
│ └── bulma
│ │ ├── src
│ │ ├── test-setup.ts
│ │ ├── index.ts
│ │ └── lib
│ │ │ ├── dropdown
│ │ │ ├── dropdown.directive.spec.ts
│ │ │ ├── dropdown-item.directive.spec.ts
│ │ │ ├── dropdown-menu.directive.spec.ts
│ │ │ ├── dropdown-toggle.directive.spec.ts
│ │ │ ├── dropdown-item.directive.ts
│ │ │ └── dropdown.directive.ts
│ │ │ └── bulma.module.spec.ts
│ │ ├── tsconfig.json
│ │ ├── package.json
│ │ ├── ng-package.json
│ │ ├── tslint.json
│ │ ├── tsconfig.spec.json
│ │ └── jest.config.js
│ ├── apps
│ ├── .gitkeep
│ ├── demo
│ │ ├── src
│ │ │ ├── assets
│ │ │ │ └── .gitkeep
│ │ │ ├── app
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.ts
│ │ │ │ └── app.module.ts
│ │ │ ├── test-setup.ts
│ │ │ ├── environments
│ │ │ │ └── environment.prod.ts
│ │ │ ├── styles.scss
│ │ │ ├── favicon.ico
│ │ │ ├── main.ts
│ │ │ └── index.html
│ │ ├── tsconfig.json
│ │ ├── tslint.json
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.spec.json
│ │ ├── jest.config.js
│ │ └── browserslist
│ └── demo-e2e
│ │ ├── src
│ │ ├── support
│ │ │ ├── app.po.ts
│ │ │ └── index.ts
│ │ ├── fixtures
│ │ │ └── example.json
│ │ └── integration
│ │ │ └── app.spec.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.e2e.json
│ │ └── cypress.json
│ ├── tools
│ ├── schematics
│ │ └── .gitkeep
│ └── tsconfig.tools.json
│ ├── .prettierrc
│ ├── .prettierignore
│ ├── .vscode
│ └── extensions.json
│ ├── .editorconfig
│ ├── jest.config.js
│ ├── nx.json
│ ├── tsconfig.json
│ └── .gitignore
├── Chapter02
└── ng-flashcards
│ ├── src
│ ├── assets
│ │ └── .gitkeep
│ ├── environments
│ │ └── environment.prod.ts
│ ├── styles.css
│ ├── favicon.ico
│ ├── app
│ │ ├── flash.model.ts
│ │ ├── app.component.css
│ │ ├── flash
│ │ │ └── flash.component.css
│ │ └── app.module.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ ├── main.ts
│ ├── index.html
│ └── test.ts
│ ├── e2e
│ ├── src
│ │ ├── app.po.ts
│ │ └── app.e2e-spec.ts
│ └── tsconfig.e2e.json
│ ├── .editorconfig
│ ├── browserslist
│ └── tsconfig.json
├── Chapter03
└── personal-blog
│ ├── src
│ ├── assets
│ │ └── .gitkeep
│ ├── app
│ │ ├── about
│ │ │ ├── about.component.scss
│ │ │ ├── about.component.html
│ │ │ └── about.component.ts
│ │ ├── post
│ │ │ ├── post.component.scss
│ │ │ ├── post.component.html
│ │ │ ├── post.module.ts
│ │ │ ├── post-routing.module.ts
│ │ │ └── post.component.ts
│ │ ├── home
│ │ │ ├── home.component.scss
│ │ │ ├── home.component.ts
│ │ │ └── home.component.html
│ │ ├── shared
│ │ │ ├── header
│ │ │ │ ├── header.component.scss
│ │ │ │ └── header.component.ts
│ │ │ └── shared.module.ts
│ │ ├── app.component.scss
│ │ ├── app.component.html
│ │ ├── post.model.ts
│ │ ├── core
│ │ │ ├── core.module.ts
│ │ │ └── wordpress.service.spec.ts
│ │ └── app.component.ts
│ ├── favicon.ico
│ ├── environments
│ │ ├── environment.qa.ts
│ │ └── environment.prod.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── index.html
│ ├── tslint.json
│ ├── main.ts
│ ├── styles.scss
│ └── test.ts
│ ├── e2e
│ ├── tsconfig.e2e.json
│ └── src
│ │ └── app.po.ts
│ ├── .editorconfig
│ ├── browserslist
│ └── tsconfig.json
├── Chapter04
└── inventory-app
│ ├── src
│ ├── assets
│ │ └── .gitkeep
│ ├── app
│ │ ├── products
│ │ │ └── products.component.scss
│ │ ├── delete-product-modal
│ │ │ ├── delete-product-modal.component.scss
│ │ │ └── delete-product-modal.component.ts
│ │ ├── app.component.scss
│ │ ├── app.component.ts
│ │ ├── app.component.html
│ │ ├── product.service.spec.ts
│ │ └── product
│ │ │ └── product.component.scss
│ ├── environments
│ │ └── environment.prod.ts
│ ├── styles.scss
│ ├── favicon.ico
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── index.html
│ ├── tslint.json
│ └── main.ts
│ ├── e2e
│ ├── tsconfig.e2e.json
│ └── src
│ │ └── app.po.ts
│ ├── .editorconfig
│ ├── browserslist
│ └── tsconfig.json
├── Chapter07
└── personal-blog
│ ├── src
│ ├── assets
│ │ └── .gitkeep
│ ├── app
│ │ ├── about
│ │ │ ├── about.component.scss
│ │ │ ├── about.component.html
│ │ │ └── about.component.ts
│ │ ├── post
│ │ │ ├── post.component.scss
│ │ │ ├── post.component.html
│ │ │ ├── post.module.ts
│ │ │ └── post-routing.module.ts
│ │ ├── home
│ │ │ ├── home.component.scss
│ │ │ ├── home.component.ts
│ │ │ └── home.component.html
│ │ ├── shared
│ │ │ ├── header
│ │ │ │ ├── header.component.scss
│ │ │ │ └── header.component.ts
│ │ │ └── shared.module.ts
│ │ ├── app.component.scss
│ │ ├── app.component.html
│ │ ├── post.model.ts
│ │ ├── core
│ │ │ ├── core.module.ts
│ │ │ └── wordpress.service.spec.ts
│ │ ├── seo.service.spec.ts
│ │ ├── route-helper.service.spec.ts
│ │ └── app.browser.module.ts
│ ├── favicon.ico
│ ├── tsconfig.app.json
│ ├── main.server.ts
│ ├── tsconfig.spec.json
│ ├── index.html
│ ├── environments
│ │ ├── environment.qa.ts
│ │ ├── environment.prod.ts
│ │ └── environment.serverless.ts
│ ├── tslint.json
│ ├── browserslist
│ ├── styles.scss
│ ├── main.ts
│ └── tsconfig.server.json
│ ├── local.js
│ ├── e2e
│ ├── tsconfig.e2e.json
│ └── src
│ │ └── app.po.ts
│ ├── .editorconfig
│ ├── ng-toolkit.json
│ └── tsconfig.json
├── Chapter08
├── electronic-store
│ ├── libs
│ │ ├── .gitkeep
│ │ ├── auth
│ │ │ ├── src
│ │ │ │ ├── lib
│ │ │ │ │ ├── callback
│ │ │ │ │ │ ├── callback.component.scss
│ │ │ │ │ │ ├── callback.component.html
│ │ │ │ │ │ └── callback.component.ts
│ │ │ │ │ └── auth.module.spec.ts
│ │ │ │ ├── test-setup.ts
│ │ │ │ └── index.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── tslint.json
│ │ │ ├── tsconfig.spec.json
│ │ │ └── jest.config.js
│ │ └── shared
│ │ │ ├── src
│ │ │ ├── index.ts
│ │ │ ├── test-setup.ts
│ │ │ └── lib
│ │ │ │ ├── shared.module.ts
│ │ │ │ └── shared.module.spec.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── tslint.json
│ │ │ ├── tsconfig.spec.json
│ │ │ └── jest.config.js
│ ├── tools
│ │ ├── schematics
│ │ │ └── .gitkeep
│ │ └── tsconfig.tools.json
│ ├── apps
│ │ ├── es-api
│ │ │ ├── src
│ │ │ │ ├── app
│ │ │ │ │ ├── .gitkeep
│ │ │ │ │ ├── products
│ │ │ │ │ │ ├── product.interface.ts
│ │ │ │ │ │ ├── products.provider.ts
│ │ │ │ │ │ ├── products.service.ts
│ │ │ │ │ │ ├── products.module.ts
│ │ │ │ │ │ └── products.controller.ts
│ │ │ │ │ ├── app.service.ts
│ │ │ │ │ ├── schemas
│ │ │ │ │ │ └── product.schema.ts
│ │ │ │ │ ├── app.controller.ts
│ │ │ │ │ ├── database
│ │ │ │ │ │ └── database.module.ts
│ │ │ │ │ └── app.service.spec.ts
│ │ │ │ ├── assets
│ │ │ │ │ └── .gitkeep
│ │ │ │ └── environments
│ │ │ │ │ ├── environment.prod.ts
│ │ │ │ │ └── environment.ts
│ │ │ ├── tslint.json
│ │ │ ├── jest.config.js
│ │ │ ├── tsconfig.json
│ │ │ ├── tsconfig.app.json
│ │ │ └── tsconfig.spec.json
│ │ ├── es-admin
│ │ │ ├── src
│ │ │ │ ├── assets
│ │ │ │ │ └── .gitkeep
│ │ │ │ ├── app
│ │ │ │ │ ├── app.component.scss
│ │ │ │ │ ├── home
│ │ │ │ │ │ ├── home.component.scss
│ │ │ │ │ │ ├── home.component.ts
│ │ │ │ │ │ ├── home.module.ts
│ │ │ │ │ │ ├── home-routing.module.ts
│ │ │ │ │ │ └── home.component.html
│ │ │ │ │ ├── nav
│ │ │ │ │ │ └── nav.component.scss
│ │ │ │ │ ├── secret
│ │ │ │ │ │ ├── secret.component.scss
│ │ │ │ │ │ ├── secret-routing.module.ts
│ │ │ │ │ │ ├── secret.component.html
│ │ │ │ │ │ └── secret.module.ts
│ │ │ │ │ └── app.component.html
│ │ │ │ ├── test-setup.ts
│ │ │ │ ├── environments
│ │ │ │ │ └── environment.prod.ts
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── styles.scss
│ │ │ │ ├── index.html
│ │ │ │ └── main.ts
│ │ │ ├── proxy.conf.json
│ │ │ ├── tsconfig.json
│ │ │ ├── tslint.json
│ │ │ ├── tsconfig.app.json
│ │ │ ├── tsconfig.spec.json
│ │ │ ├── jest.config.js
│ │ │ └── browserslist
│ │ ├── electronic-store
│ │ │ ├── src
│ │ │ │ ├── assets
│ │ │ │ │ ├── .gitkeep
│ │ │ │ │ └── icons
│ │ │ │ │ │ ├── icon-72x72.png
│ │ │ │ │ │ ├── icon-96x96.png
│ │ │ │ │ │ ├── icon-128x128.png
│ │ │ │ │ │ ├── icon-144x144.png
│ │ │ │ │ │ ├── icon-152x152.png
│ │ │ │ │ │ ├── icon-192x192.png
│ │ │ │ │ │ ├── icon-384x384.png
│ │ │ │ │ │ └── icon-512x512.png
│ │ │ │ ├── app
│ │ │ │ │ ├── cart
│ │ │ │ │ │ └── cart.component.css
│ │ │ │ │ ├── app.component.css
│ │ │ │ │ ├── sub-total.pipe.spec.ts
│ │ │ │ │ ├── nav
│ │ │ │ │ │ ├── nav.component.css
│ │ │ │ │ │ ├── nav.component.html
│ │ │ │ │ │ └── nav.component.ts
│ │ │ │ │ ├── cart.service.spec.ts
│ │ │ │ │ ├── products.service.ts
│ │ │ │ │ ├── products.service.spec.ts
│ │ │ │ │ ├── sub-total.pipe.ts
│ │ │ │ │ └── add-to-cart
│ │ │ │ │ │ ├── add-to-cart.component.css
│ │ │ │ │ │ └── add-to-cart.component.ts
│ │ │ │ ├── environments
│ │ │ │ │ └── environment.prod.ts
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── styles.css
│ │ │ │ └── main.ts
│ │ │ ├── proxy.conf.json
│ │ │ ├── tsconfig.app.json
│ │ │ ├── tslint.json
│ │ │ ├── tsconfig.spec.json
│ │ │ └── browserslist
│ │ ├── es-admin-e2e
│ │ │ ├── src
│ │ │ │ ├── support
│ │ │ │ │ ├── app.po.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── fixtures
│ │ │ │ │ └── example.json
│ │ │ │ └── integration
│ │ │ │ │ └── app.spec.ts
│ │ │ ├── tsconfig.json
│ │ │ ├── tsconfig.e2e.json
│ │ │ └── cypress.json
│ │ └── electronic-store-e2e
│ │ │ ├── src
│ │ │ └── app.po.ts
│ │ │ └── tsconfig.e2e.json
│ ├── .prettierrc
│ ├── .prettierignore
│ ├── .vscode
│ │ └── extensions.json
│ ├── .editorconfig
│ ├── jest.config.js
│ ├── nx.json
│ └── tsconfig.json
└── es-api
│ ├── .gitignore
│ ├── .prettierrc
│ ├── nest-cli.json
│ ├── tsconfig.build.json
│ ├── src
│ ├── products
│ │ ├── product.interface.ts
│ │ ├── products.provider.ts
│ │ ├── products.controller.ts
│ │ ├── products.service.ts
│ │ └── products.module.ts
│ ├── app.service.ts
│ ├── schemas
│ │ └── product.schema.ts
│ ├── main.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── database
│ │ └── database.module.ts
│ └── app.controller.spec.ts
│ ├── nodemon.json
│ ├── nodemon-debug.json
│ ├── test
│ ├── jest-e2e.json
│ └── app.e2e-spec.ts
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter11
└── ngx-behance
│ ├── src
│ ├── assets
│ │ └── .gitkeep
│ ├── app
│ │ ├── app.component.scss
│ │ ├── home
│ │ │ ├── home.component.scss
│ │ │ ├── home.module.ts
│ │ │ ├── home-routing.module.ts
│ │ │ ├── home.component.html
│ │ │ └── home.component.ts
│ │ ├── post
│ │ │ ├── post.component.scss
│ │ │ ├── post-routing.module.ts
│ │ │ └── post.module.ts
│ │ ├── app.component.ts
│ │ ├── app.component.html
│ │ ├── color-namer.pipe.ts
│ │ ├── app-routing.module.ts
│ │ └── app.module.ts
│ ├── favicon.ico
│ ├── environments
│ │ └── environment.prod.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ ├── main.ts
│ └── index.html
│ ├── e2e
│ ├── tsconfig.e2e.json
│ └── src
│ │ └── app.po.ts
│ ├── browserslist
│ └── tsconfig.json
├── Chapter05
├── electronic-store
│ ├── src
│ │ ├── assets
│ │ │ ├── .gitkeep
│ │ │ └── icons
│ │ │ │ ├── icon-128x128.png
│ │ │ │ ├── icon-144x144.png
│ │ │ │ ├── icon-152x152.png
│ │ │ │ ├── icon-192x192.png
│ │ │ │ ├── icon-384x384.png
│ │ │ │ ├── icon-512x512.png
│ │ │ │ ├── icon-72x72.png
│ │ │ │ └── icon-96x96.png
│ │ ├── app
│ │ │ ├── cart
│ │ │ │ └── cart.component.css
│ │ │ ├── app.component.css
│ │ │ ├── sub-total.pipe.spec.ts
│ │ │ ├── nav
│ │ │ │ ├── nav.component.css
│ │ │ │ ├── nav.component.html
│ │ │ │ └── nav.component.ts
│ │ │ ├── cart.service.spec.ts
│ │ │ ├── products.service.spec.ts
│ │ │ ├── products.service.ts
│ │ │ ├── sub-total.pipe.ts
│ │ │ └── add-to-cart
│ │ │ │ ├── add-to-cart.component.css
│ │ │ │ └── add-to-cart.component.ts
│ │ ├── environments
│ │ │ └── environment.prod.ts
│ │ ├── favicon.ico
│ │ ├── styles.css
│ │ └── main.ts
│ ├── e2e
│ │ ├── tsconfig.json
│ │ └── src
│ │ │ └── app.po.ts
│ ├── .editorconfig
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── browserslist
│ └── tsconfig.json
└── es-api
│ ├── .gitignore
│ ├── .prettierrc
│ ├── nest-cli.json
│ ├── tsconfig.build.json
│ ├── src
│ ├── products
│ │ ├── product.interface.ts
│ │ ├── products.provider.ts
│ │ ├── products.service.ts
│ │ ├── products.module.ts
│ │ └── products.controller.ts
│ ├── app.service.ts
│ ├── schemas
│ │ └── product.schema.ts
│ ├── main.ts
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── database
│ │ └── database.module.ts
│ └── app.controller.spec.ts
│ ├── nodemon.json
│ ├── nodemon-debug.json
│ ├── test
│ ├── jest-e2e.json
│ └── app.e2e-spec.ts
│ ├── tsconfig.json
│ └── tslint.json
├── Chapter09
├── app
│ ├── app.css
│ ├── package.json
│ ├── App_Resources
│ │ ├── iOS
│ │ │ ├── Assets.xcassets
│ │ │ │ ├── Contents.json
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── icon-1024.png
│ │ │ │ │ ├── icon-29.png
│ │ │ │ │ ├── icon-40.png
│ │ │ │ │ ├── icon-76.png
│ │ │ │ │ ├── icon-29@2x.png
│ │ │ │ │ ├── icon-29@3x.png
│ │ │ │ │ ├── icon-40@2x.png
│ │ │ │ │ ├── icon-40@3x.png
│ │ │ │ │ ├── icon-60@2x.png
│ │ │ │ │ ├── icon-60@3x.png
│ │ │ │ │ ├── icon-76@2x.png
│ │ │ │ │ └── icon-83.5@2x.png
│ │ │ │ ├── LaunchImage.launchimage
│ │ │ │ │ ├── Default.png
│ │ │ │ │ ├── Default@2x.png
│ │ │ │ │ ├── Default-1125h.png
│ │ │ │ │ ├── Default-568h@2x.png
│ │ │ │ │ ├── Default-667h@2x.png
│ │ │ │ │ ├── Default-736h@3x.png
│ │ │ │ │ ├── Default-Portrait.png
│ │ │ │ │ ├── Default-Landscape-X.png
│ │ │ │ │ ├── Default-Landscape.png
│ │ │ │ │ ├── Default-Portrait@2x.png
│ │ │ │ │ ├── Default-Landscape@2x.png
│ │ │ │ │ └── Default-Landscape@3x.png
│ │ │ │ ├── LaunchScreen.Center.imageset
│ │ │ │ │ ├── LaunchScreen-Center.png
│ │ │ │ │ ├── LaunchScreen-Center@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ │ └── LaunchScreen.AspectFill.imageset
│ │ │ │ │ ├── LaunchScreen-AspectFill.png
│ │ │ │ │ ├── LaunchScreen-AspectFill@2x.png
│ │ │ │ │ └── Contents.json
│ │ │ └── build.xcconfig
│ │ └── Android
│ │ │ ├── src
│ │ │ └── main
│ │ │ │ └── res
│ │ │ │ ├── values-v21
│ │ │ │ └── colors.xml
│ │ │ │ ├── drawable-hdpi
│ │ │ │ ├── icon.png
│ │ │ │ ├── logo.png
│ │ │ │ └── background.png
│ │ │ │ ├── drawable-ldpi
│ │ │ │ ├── icon.png
│ │ │ │ ├── logo.png
│ │ │ │ └── background.png
│ │ │ │ ├── drawable-mdpi
│ │ │ │ ├── icon.png
│ │ │ │ ├── logo.png
│ │ │ │ └── background.png
│ │ │ │ ├── drawable-xhdpi
│ │ │ │ ├── icon.png
│ │ │ │ ├── logo.png
│ │ │ │ └── background.png
│ │ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── icon.png
│ │ │ │ ├── logo.png
│ │ │ │ └── background.png
│ │ │ │ ├── drawable-xxxhdpi
│ │ │ │ ├── icon.png
│ │ │ │ ├── logo.png
│ │ │ │ └── background.png
│ │ │ │ ├── values
│ │ │ │ └── colors.xml
│ │ │ │ └── drawable-nodpi
│ │ │ │ └── splash_screen.xml
│ │ │ └── app.gradle
│ ├── detail
│ │ ├── detail.component.css
│ │ └── detail.module.ts
│ ├── main.ts
│ ├── home
│ │ ├── home.component.html
│ │ ├── home.component.css
│ │ └── home-routing.module.ts
│ ├── news
│ │ ├── news.module.ts
│ │ ├── news-routing.module.ts
│ │ ├── news.component.html
│ │ ├── news.component.css
│ │ └── news.component.ts
│ └── app.service.ts
├── hooks
│ ├── after-prepare
│ │ └── nativescript-dev-webpack.js
│ ├── before-livesync
│ │ └── nativescript-angular-sync.js
│ └── before-checkForChanges
│ │ └── nativescript-dev-webpack.js
├── platforms
│ └── ios
│ │ ├── Chapter9
│ │ └── app
│ │ │ └── package.json
│ │ └── .nsprepareinfo
├── tsconfig.tns.json
└── angular.json
├── public
├── favicon.ico
├── assets
│ └── icons
│ │ ├── icon-72x72.png
│ │ ├── icon-96x96.png
│ │ ├── icon-128x128.png
│ │ ├── icon-144x144.png
│ │ ├── icon-152x152.png
│ │ ├── icon-192x192.png
│ │ ├── icon-384x384.png
│ │ └── icon-512x512.png
├── safety-worker.js
└── worker-basic.min.js
├── Chapter06
└── apartment-auditing
│ ├── src
│ ├── app
│ │ ├── audit
│ │ │ ├── audit.page.scss
│ │ │ └── audit.page.html
│ │ ├── home
│ │ │ ├── home.page.scss
│ │ │ └── home.module.ts
│ │ ├── appointment.model.ts
│ │ ├── rooms-and-baths.pipe.spec.ts
│ │ ├── app-routing.module.ts
│ │ └── rooms-and-baths.pipe.ts
│ ├── environments
│ │ └── environment.prod.ts
│ ├── assets
│ │ └── icon
│ │ │ └── favicon.png
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── main.ts
│ └── global.scss
│ ├── ionic.config.json
│ ├── e2e
│ ├── tsconfig.e2e.json
│ └── src
│ │ ├── app.po.ts
│ │ └── app.e2e-spec.ts
│ ├── tsconfig.json
│ └── .gitignore
└── firebase.json
/.firebaserc:
--------------------------------------------------------------------------------
1 | {}
2 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter10/bulma/tools/schematics/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/tools/schematics/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/about/about.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/post/post.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/cart/cart.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/about/about.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/post/post.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/home/home.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/post/post.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter10/bulma/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true
3 | }
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/products/products.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/home/home.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/nav/nav.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter05/es-api/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | /node_modules
3 |
4 | /dist
--------------------------------------------------------------------------------
/Chapter08/electronic-store/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true
3 | }
4 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/src/lib/callback/callback.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/es-api/.gitignore:
--------------------------------------------------------------------------------
1 | # dependencies
2 | /node_modules
3 |
4 | /dist
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import 'jest-preset-angular';
2 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import 'jest-preset-angular';
2 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/cart/cart.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/bulma.module';
2 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/delete-product-modal/delete-product-modal.component.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import 'jest-preset-angular';
2 |
--------------------------------------------------------------------------------
/Chapter09/app/app.css:
--------------------------------------------------------------------------------
1 |
2 | @import '~nativescript-theme-core/css/core.light.css';
3 |
--------------------------------------------------------------------------------
/Chapter05/es-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import 'jest-preset-angular';
2 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/shared.module';
2 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/src/test-setup.ts:
--------------------------------------------------------------------------------
1 | import 'jest-preset-angular';
2 |
--------------------------------------------------------------------------------
/Chapter08/es-api/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "trailingComma": "all"
4 | }
--------------------------------------------------------------------------------
/Chapter10/bulma/.prettierignore:
--------------------------------------------------------------------------------
1 | # Add files here to ignore them from prettier formatting
2 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/about/about.component.html:
--------------------------------------------------------------------------------
1 |
2 | about works!
3 |
4 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/about/about.component.html:
--------------------------------------------------------------------------------
1 |
2 | about works!
3 |
4 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/home/home.component.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | margin-bottom: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/home/home.component.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | margin-bottom: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/.prettierignore:
--------------------------------------------------------------------------------
1 | # Add files here to ignore them from prettier formatting
2 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/src/support/app.po.ts:
--------------------------------------------------------------------------------
1 | export const getGreeting = () => cy.get('h1');
2 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/shared/header/header.component.scss:
--------------------------------------------------------------------------------
1 | .bg-dark {
2 | background: #000;
3 | }
4 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/shared/header/header.component.scss:
--------------------------------------------------------------------------------
1 | .bg-dark {
2 | background: #000;
3 | }
4 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/src/lib/callback/callback.component.html:
--------------------------------------------------------------------------------
1 |
2 | Loading...
3 |
4 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/audit/audit.page.scss:
--------------------------------------------------------------------------------
1 | ion-list-header.hydrated {
2 | font-weight: bold;
3 | }
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/src/support/app.po.ts:
--------------------------------------------------------------------------------
1 | export const getGreeting = () => cy.get('h1');
2 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {}
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | .route-container {
2 | margin: 16px;
3 | margin-top: 50px;
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | .route-container {
2 | margin: 16px;
3 | margin-top: 50px;
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter09/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "android": {
3 | "v8Flags": "--expose_gc"
4 | },
5 | "main": "main.js"
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/Chapter05/es-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "language": "ts",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src"
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/secret/secret.component.scss:
--------------------------------------------------------------------------------
1 | host {
2 | width: 100%;
3 | height: 100%;;
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter08/es-api/nest-cli.json:
--------------------------------------------------------------------------------
1 | {
2 | "language": "ts",
3 | "collection": "@nestjs/schematics",
4 | "sourceRoot": "src"
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter09/hooks/after-prepare/nativescript-dev-webpack.js:
--------------------------------------------------------------------------------
1 | module.exports = require("nativescript-dev-webpack/lib/after-prepare.js");
2 |
--------------------------------------------------------------------------------
/Chapter09/hooks/before-livesync/nativescript-angular-sync.js:
--------------------------------------------------------------------------------
1 | module.exports = require("nativescript-angular/hooks/before-livesync");
2 |
--------------------------------------------------------------------------------
/public/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/public/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter05/es-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter08/es-api/tsconfig.build.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "exclude": ["node_modules", "test", "**/*spec.ts"]
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter11/ngx-behance/src/favicon.ico
--------------------------------------------------------------------------------
/public/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/public/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/public/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/public/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/public/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/public/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/public/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter02/ng-flashcards/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter03/personal-blog/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/app.component.scss:
--------------------------------------------------------------------------------
1 | .branding h1 {
2 | color: white;
3 | font-size: 20px;
4 | margin-top: 10px;
5 | }
6 |
7 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter04/inventory-app/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/ionic.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "apartment-auditing",
3 | "integrations": {},
4 | "type": "angular"
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter07/personal-blog/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter09/platforms/ios/Chapter9/app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "android": {
3 | "v8Flags": "--expose_gc"
4 | },
5 | "main": "bundle"
6 | }
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/src/fixtures/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Using fixtures to represent data",
3 | "email": "hello@cypress.io"
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter10/bulma/apps/demo/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter09/hooks/before-checkForChanges/nativescript-dev-webpack.js:
--------------------------------------------------------------------------------
1 | module.exports = require("nativescript-dev-webpack/lib/before-checkForChanges.js");
2 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/proxy.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "/api": {
3 | "target": "http://localhost:3333",
4 | "secure": false
5 | }
6 | }
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/proxy.conf.json:
--------------------------------------------------------------------------------
1 | {
2 | "/api": {
3 | "target": "http://localhost:3333",
4 | "secure": false
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/src/fixtures/example.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Using fixtures to represent data",
3 | "email": "hello@cypress.io"
4 | }
5 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/environments/environment.qa.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | WORDPRESS_REST_URL: 'http://demo7831153.mockable.io/'
4 | };
5 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/products/product.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Product extends Document {
4 | readonly name: string;
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/home/home.page.scss:
--------------------------------------------------------------------------------
1 | .welcome-card ion-img {
2 | max-height: 35vh;
3 | overflow: hidden;
4 | }
5 |
6 | .card-end {
7 | float: right;
8 | }
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/assets/icon/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter06/apartment-auditing/src/assets/icon/favicon.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/es-admin/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/es-api/src/products/product.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Product extends Document {
4 | readonly name: string;
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter09/tsconfig.tns.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig",
3 | "compilerOptions": {
4 | "module": "es2015",
5 | "moduleResolution": "node"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | WORDPRESS_REST_URL: 'https://demo8034777.mockable.io/'
4 | };
5 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter05/electronic-store/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter05/es-api/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["src"],
3 | "ext": "ts",
4 | "ignore": ["src/**/*.spec.ts"],
5 | "exec": "ts-node -r tsconfig-paths/register src/main.ts"
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter08/es-api/nodemon.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["src"],
3 | "ext": "ts",
4 | "ignore": ["src/**/*.spec.ts"],
5 | "exec": "ts-node -r tsconfig-paths/register src/main.ts"
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/values-v21/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3d5afe
4 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["node", "jest"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["node", "jest"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/favicon.ico
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'es-api',
3 | preset: '../../jest.config.js',
4 | coverageDirectory: '../../coverage/apps/es-api'
5 | };
6 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["cypress", "node"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "hosting": {
3 | "public": "public",
4 | "ignore": [
5 | "firebase.json",
6 | "**/.*",
7 | "**/node_modules/**"
8 | ]
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["node", "jest"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["node", "jest"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["node", "jest"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/products/product.interface.ts:
--------------------------------------------------------------------------------
1 | import { Document } from 'mongoose';
2 |
3 | export interface Product extends Document {
4 | readonly name: string;
5 | }
6 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/app/flash.model.ts:
--------------------------------------------------------------------------------
1 | export interface IFlash {
2 | question: string;
3 | answer: string;
4 | show: boolean;
5 | id: number;
6 | remembered?: 'correct' | 'incorrect';
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": ["cypress", "node"]
5 | },
6 | "include": ["**/*.ts"]
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-hdpi/icon.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-hdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-hdpi/logo.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-ldpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-ldpi/icon.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-ldpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-ldpi/logo.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-mdpi/icon.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-mdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-mdpi/logo.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xhdpi/icon.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xhdpi/logo.png
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | api: 'http://www.behance.net/v2/',
4 | token: 'tIn2oeG0xiiUVQ5WsUsg9wWHOD1gjFuD'
5 | };
6 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/schemas/product.schema.ts:
--------------------------------------------------------------------------------
1 | import * as mongoose from 'mongoose';
2 |
3 | export const ProductsSchema = new mongoose.Schema({
4 | name: String,
5 | age: Number,
6 | breed: String,
7 | });
8 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/schemas/product.schema.ts:
--------------------------------------------------------------------------------
1 | import * as mongoose from 'mongoose';
2 |
3 | export const ProductsSchema = new mongoose.Schema({
4 | name: String,
5 | age: Number,
6 | breed: String,
7 | });
8 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxhdpi/icon.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxhdpi/logo.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/logo.png
--------------------------------------------------------------------------------
/Chapter05/es-api/nodemon-debug.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["src"],
3 | "ext": "ts",
4 | "ignore": ["src/**/*.spec.ts"],
5 | "exec": "node --inspect-brk -r ts-node/register -r tsconfig-paths/register src/main.ts"
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter08/es-api/nodemon-debug.json:
--------------------------------------------------------------------------------
1 | {
2 | "watch": ["src"],
3 | "ext": "ts",
4 | "ignore": ["src/**/*.spec.ts"],
5 | "exec": "node --inspect-brk -r ts-node/register -r tsconfig-paths/register src/main.ts"
6 | }
7 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-hdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-hdpi/background.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-ldpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-ldpi/background.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-mdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-mdpi/background.png
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@ngprojects/bulma",
3 | "version": "0.0.1",
4 | "peerDependencies": {
5 | "@angular/common": "^7.2.0",
6 | "@angular/core": "^7.2.0"
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xhdpi/background.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxhdpi/background.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/Android/src/main/res/drawable-xxxhdpi/background.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-1024.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76.png
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/ng-package.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3 | "dest": "../../dist/libs/bulma",
4 | "lib": {
5 | "entryFile": "src/index.ts"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter08/electronic-store/apps/electronic-store/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/src/index.ts:
--------------------------------------------------------------------------------
1 | export * from './lib/+state/auth.actions';
2 | export * from './lib/+state/auth.reducer';
3 | export * from './lib/+state/auth.selectors';
4 | export * from './lib/auth.module';
5 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "sourceMap": false,
5 | "outDir": "../../dist/out-tsc"
6 | },
7 | "include": ["src/**/*.ts"]
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | form {
2 | margin: 10px;
3 | width: 300px
4 | }
5 |
6 | .flashs {
7 | display: flex;
8 | flex-wrap: wrap;
9 | }
10 |
11 | .clear-btn {
12 | margin-left: 10px;
13 | }
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/appointment.model.ts:
--------------------------------------------------------------------------------
1 | export interface IUnit {
2 | type: string;
3 | }
4 |
5 | export interface IAppointment {
6 | number: number;
7 | units: IUnit[];
8 | status?: string;
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@nestjs/common';
2 |
3 | @Injectable()
4 | export class AppService {
5 | getHello(): string {
6 | return 'Hello World!';
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default.png
--------------------------------------------------------------------------------
/Chapter10/bulma/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "nrwl.angular-console",
4 | "angular.ng-template",
5 | "ms-vscode.vscode-typescript-tslint-plugin",
6 | "esbenp.prettier-vscode"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/local.js:
--------------------------------------------------------------------------------
1 |
2 | const port = process.env.PORT || 8080;
3 |
4 | const server = require('./dist/server');
5 |
6 | server.app.listen(port, () => {
7 | console.log("Listening on: http://localhost:"+port);
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/schemas/product.schema.ts:
--------------------------------------------------------------------------------
1 | import * as mongoose from 'mongoose';
2 |
3 | export const ProductsSchema = new mongoose.Schema({
4 | name: String,
5 | age: Number,
6 | breed: String,
7 | });
8 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default@2x.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "nrwl.angular-console",
4 | "angular.ng-template",
5 | "ms-vscode.vscode-typescript-tslint-plugin",
6 | "esbenp.prettier-vscode"
7 | ]
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-1125h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-1125h.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-568h@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-667h@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-736h@3x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-X.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape-X.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/detail/detail.component.css:
--------------------------------------------------------------------------------
1 | .home-panel{
2 | vertical-align: center;
3 | font-size: 20;
4 | margin: 15;
5 | }
6 |
7 | .heading {
8 | font-size: 15;
9 | }
10 |
11 | label {
12 | font-size: 12px;
13 | padding: 5px 10px;
14 | }
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/e2e",
5 | "baseUrl": "./",
6 | "module": "commonjs",
7 | "target": "es5"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | html, body { height: 100%; }
4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
5 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "types": [
5 | "node",
6 | "jest"
7 | ]
8 | },
9 | "include": [
10 | "**/*.ts"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@2x.png
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchImage.launchimage/Default-Landscape@3x.png
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter05/es-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "sourceMap": false,
5 | "outDir": "../../dist/out-tsc/apps/es-admin-e2e/src"
6 | },
7 | "include": ["src/**/*.ts"]
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [true, "attribute", "es", "camelCase"],
5 | "component-selector": [true, "element", "es", "kebab-case"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter08/es-api/test/jest-e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "moduleFileExtensions": ["js", "json", "ts"],
3 | "rootDir": ".",
4 | "testEnvironment": "node",
5 | "testRegex": ".e2e-spec.ts$",
6 | "transform": {
7 | "^.+\\.(t|j)s$": "ts-jest"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center.png
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [true, "attribute", "ngprojects", "camelCase"],
5 | "component-selector": [true, "element", "ngprojects", "kebab-case"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | .product-card {
2 | max-width: 200px;
3 | margin-top: 20px;
4 | }
5 |
6 | .products {
7 | display: flex;
8 | flex-wrap: wrap;
9 | justify-content: space-around;
10 | margin-top: 30px;
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [true, "attribute", "ngprojects", "camelCase"],
5 | "component-selector": [true, "element", "ngprojects", "kebab-case"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/LaunchScreen-Center@2x.png
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [true, "attribute", "ngprojects", "camelCase"],
5 | "component-selector": [true, "element", "ngprojects", "kebab-case"]
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": []
6 | },
7 | "exclude": ["src/test-setup.ts", "**/*.spec.ts"],
8 | "include": ["**/*.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/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 | }
10 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/sub-total.pipe.spec.ts:
--------------------------------------------------------------------------------
1 | import { SubTotalPipe } from './sub-total.pipe';
2 |
3 | describe('SubTotalPipe', () => {
4 | it('create an instance', () => {
5 | const pipe = new SubTotalPipe();
6 | expect(pipe).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill.png
--------------------------------------------------------------------------------
/Chapter09/app/main.ts:
--------------------------------------------------------------------------------
1 | import { platformNativeScriptDynamic } from 'nativescript-angular/platform';
2 | import { AppModule } from './app.module';
3 | import {enableProdMode} from '@angular/core';
4 | enableProdMode();
5 |
6 | platformNativeScriptDynamic().bootstrapModule(AppModule);
7 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { environment } from './environments/environment';
3 |
4 | if (environment.production) {
5 | enableProdMode();
6 | }
7 |
8 | export {AppServerModule} from './app/app.server.module';
9 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | .product-card {
2 | max-width: 200px;
3 | margin-top: 20px;
4 | }
5 |
6 | .products {
7 | display: flex;
8 | flex-wrap: wrap;
9 | justify-content: space-around;
10 | margin-top: 30px;
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/PacktPublishing/Angular-Projects/HEAD/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/LaunchScreen-AspectFill@2x.png
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "types": ["jest", "node"]
6 | },
7 | "files": ["src/test-setup.ts"],
8 | "include": ["**/*.spec.ts", "**/*.d.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [true, "attribute", "ba", "camelCase"],
5 | "component-selector": [true, "element", "ba", "kebab-case"],
6 | "use-host-property-decorator": false
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/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 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/sub-total.pipe.spec.ts:
--------------------------------------------------------------------------------
1 | import { SubTotalPipe } from './sub-total.pipe';
2 |
3 | describe('SubTotalPipe', () => {
4 | it('create an instance', () => {
5 | const pipe = new SubTotalPipe();
6 | expect(pipe).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/post.model.ts:
--------------------------------------------------------------------------------
1 | export interface IPost {
2 | id: number;
3 | title: {
4 | rendered: string;
5 | };
6 | content: {
7 | rendered: string;
8 | };
9 | excerpt: {
10 | rendered: string;
11 | };
12 | date: Date;
13 | slug: string;
14 | }
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/es-admin",
5 | "types": []
6 | },
7 | "exclude": ["src/test-setup.ts", "**/*.spec.ts"],
8 | "include": ["**/*.ts"]
9 | }
10 |
--------------------------------------------------------------------------------
/Chapter10/bulma/tools/tsconfig.tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../dist/out-tsc",
5 | "rootDir": ".",
6 | "module": "commonjs",
7 | "target": "es5",
8 | "types": ["node"]
9 | },
10 | "include": ["**/*.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'in-root',
5 | templateUrl: './app.component.html',
6 | styleUrls: ['./app.component.scss']
7 | })
8 | export class AppComponent {
9 | title = 'inventory-app';
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/rooms-and-baths.pipe.spec.ts:
--------------------------------------------------------------------------------
1 | import { RoomsAndBathsPipe } from './rooms-and-baths.pipe';
2 |
3 | describe('RoomsAndBathsPipe', () => {
4 | it('create an instance', () => {
5 | const pipe = new RoomsAndBathsPipe();
6 | expect(pipe).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/electronic-store",
5 | "types": []
6 | },
7 | "exclude": [
8 | "test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'ngprojects-root',
5 | templateUrl: './app.component.html',
6 | styleUrls: ['./app.component.scss']
7 | })
8 | export class AppComponent {
9 | title = 'demo';
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/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 | }
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/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 | }
--------------------------------------------------------------------------------
/Chapter03/personal-blog/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 | }
--------------------------------------------------------------------------------
/Chapter04/inventory-app/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 | }
--------------------------------------------------------------------------------
/Chapter07/personal-blog/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 | }
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/src/integration/app.spec.ts:
--------------------------------------------------------------------------------
1 | import { getGreeting } from '../support/app.po';
2 |
3 | describe('Hello Nx', () => {
4 | beforeEach(() => cy.visit('/'));
5 |
6 | it('should display welcome message', () => {
7 | getGreeting().contains('Welcome to demo!');
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/e2e/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/e2e",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/tools/tsconfig.tools.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../dist/out-tsc/tools",
5 | "rootDir": ".",
6 | "module": "commonjs",
7 | "target": "es5",
8 | "types": ["node"]
9 | },
10 | "include": ["**/*.ts"]
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #F5F5F5
4 | #757575
5 | #33B5E5
6 | #272734
7 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/es-api",
5 | "types": ["node"],
6 | "emitDecoratorMetadata": true
7 | },
8 | "exclude": ["**/*.spec.ts"],
9 | "include": ["**/*.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/') as Promise;
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('pb-root h1')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/') as Promise;
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('in-root h1')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './app.module';
3 |
4 | async function bootstrap() {
5 | const app = await NestFactory.create(AppModule);
6 | app.enableCors({
7 | origin: '*',
8 | });
9 | await app.listen(3000);
10 | }
11 | bootstrap();
12 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/') as Promise;
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('pb-root h1')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/post.model.ts:
--------------------------------------------------------------------------------
1 | export interface IPost {
2 | id: number;
3 | title: {
4 | rendered: string;
5 | };
6 | content: {
7 | rendered: string;
8 | };
9 | excerpt: {
10 | rendered: string;
11 | };
12 | date: string;
13 | modified: string;
14 | slug: string;
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/main.ts:
--------------------------------------------------------------------------------
1 | import { NestFactory } from '@nestjs/core';
2 | import { AppModule } from './app.module';
3 |
4 | async function bootstrap() {
5 | const app = await NestFactory.create(AppModule);
6 | app.enableCors({
7 | origin: '*',
8 | });
9 | await app.listen(3000);
10 | }
11 | bootstrap();
12 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/dropdown/dropdown.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { DropdownDirective } from './dropdown.directive';
2 |
3 | describe('DropdownDirective', () => {
4 | it('should create an instance', () => {
5 | const directive = new DropdownDirective();
6 | expect(directive).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/src/integration/app.spec.ts:
--------------------------------------------------------------------------------
1 | import { getGreeting } from '../support/app.po';
2 |
3 | describe('Hello Nx', () => {
4 | beforeEach(() => cy.visit('/'));
5 |
6 | it('should display welcome message', () => {
7 | getGreeting().contains('Welcome to es-admin!');
8 | });
9 | });
10 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | $brand-font-folder: '~@momentum-ui/core/fonts';
3 | $icon-font-path: '~@momentum-ui/icons/fonts';
4 | $images-path: '~@momentum-ui/core/images';
5 | @import '~@momentum-ui/core/scss/momentum-ui';
6 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/es-api",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "include": [
9 | "**/*.spec.ts",
10 | "**/*.d.ts"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter10/bulma/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see http://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 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'demo',
3 | preset: '../../jest.config.js',
4 | coverageDirectory: '../../coverage/apps/demo/',
5 | snapshotSerializers: [
6 | 'jest-preset-angular/AngularSnapshotSerializer.js',
7 | 'jest-preset-angular/HTMLCommentSerializer.js'
8 | ]
9 | };
10 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'bulma',
3 | preset: '../../jest.config.js',
4 | coverageDirectory: '../../coverage/libs/bulma',
5 | snapshotSerializers: [
6 | 'jest-preset-angular/AngularSnapshotSerializer.js',
7 | 'jest-preset-angular/HTMLCommentSerializer.js'
8 | ]
9 | };
10 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get(browser.baseUrl) as Promise;
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('app-root h1')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/.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 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/.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 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/post/post.component.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
{{post.date | date}}
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/.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 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/.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 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/.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 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/post/post.component.html:
--------------------------------------------------------------------------------
1 |
2 |
5 |
{{post.date | date}}
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/.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 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/libs/auth",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/libs/shared",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter09/app/home/home.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/es-admin/",
5 | "module": "commonjs",
6 | "types": ["jest", "node"]
7 | },
8 | "files": ["src/test-setup.ts"],
9 | "include": ["**/*.spec.ts", "**/*.d.ts"]
10 | }
11 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'auth',
3 | preset: '../../jest.config.js',
4 | coverageDirectory: '../../coverage/libs/auth',
5 | snapshotSerializers: [
6 | 'jest-preset-angular/AngularSnapshotSerializer.js',
7 | 'jest-preset-angular/HTMLCommentSerializer.js'
8 | ]
9 | };
10 |
--------------------------------------------------------------------------------
/Chapter10/bulma/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'],
3 | transform: {
4 | '^.+\\.(ts|js|html)$': 'ts-jest'
5 | },
6 | resolver: '@nrwl/jest/plugins/resolver',
7 | moduleFileExtensions: ['ts', 'js', 'html'],
8 | collectCoverage: true,
9 | coverageReporters: ['html']
10 | };
11 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/dropdown/dropdown-item.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { DropdownItemDirective } from './dropdown-item.directive';
2 |
3 | describe('DropdownItemDirective', () => {
4 | it('should create an instance', () => {
5 | const directive = new DropdownItemDirective();
6 | expect(directive).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/dropdown/dropdown-menu.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { DropdownMenuDirective } from './dropdown-menu.directive';
2 |
3 | describe('DropdownMenuDirective', () => {
4 | it('should create an instance', () => {
5 | const directive = new DropdownMenuDirective();
6 | expect(directive).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get(browser.baseUrl) as Promise;
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('es-root .content span')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store-e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/') as Promise;
6 | }
7 |
8 | getTitleText() {
9 | return element(by.css('es-root h1')).getText() as Promise;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'shared',
3 | preset: '../../jest.config.js',
4 | coverageDirectory: '../../coverage/libs/shared',
5 | snapshotSerializers: [
6 | 'jest-preset-angular/AngularSnapshotSerializer.js',
7 | 'jest-preset-angular/HTMLCommentSerializer.js'
8 | ]
9 | };
10 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'es-admin',
3 | preset: '../../jest.config.js',
4 | coverageDirectory: '../../coverage/apps/es-admin/',
5 | snapshotSerializers: [
6 | 'jest-preset-angular/AngularSnapshotSerializer.js',
7 | 'jest-preset-angular/HTMLCommentSerializer.js'
8 | ]
9 | };
10 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/dropdown/dropdown-toggle.directive.spec.ts:
--------------------------------------------------------------------------------
1 | import { DropdownToggleDirective } from './dropdown-toggle.directive';
2 |
3 | describe('DropdownToggleDirective', () => {
4 | it('should create an instance', () => {
5 | const directive = new DropdownToggleDirective();
6 | expect(directive).toBeTruthy();
7 | });
8 | });
9 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/app.controller.ts:
--------------------------------------------------------------------------------
1 | import { Controller, Get } from '@nestjs/common';
2 | import { AppService } from './app.service';
3 |
4 | @Controller()
5 | export class AppController {
6 | constructor(private readonly appService: AppService) {}
7 |
8 | @Get()
9 | getHello(): string {
10 | return this.appService.getHello();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // This file can be replaced during build by using the `fileReplacements` array.
2 | // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
3 | // The list of file replacements can be found in `angular.json`.
4 |
5 | export const environment = {
6 | production: false
7 | };
8 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/app.controller.ts:
--------------------------------------------------------------------------------
1 | import { Controller, Get } from '@nestjs/common';
2 | import { AppService } from './app.service';
3 |
4 | @Controller()
5 | export class AppController {
6 | constructor(private readonly appService: AppService) {}
7 |
8 | @Get()
9 | getHello(): string {
10 | return this.appService.getHello();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter09/platforms/ios/.nsprepareinfo:
--------------------------------------------------------------------------------
1 | {
2 | "time": "Mon Sep 09 2019 00:13:18 GMT-0500 (Central Daylight Time)",
3 | "nativePlatformStatus": "1",
4 | "changesRequireBuild": true,
5 | "projectFileHash": "30de7f7f9f602c0784efb62a48170e6debc2c556fd2554cafd7f47061772e28b",
6 | "changesRequireBuildTime": "Mon Sep 09 2019 00:13:18 GMT-0500 (Central Daylight Time)"
7 | }
--------------------------------------------------------------------------------
/Chapter08/electronic-store/jest.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | testMatch: ['**/+(*.)+(spec|test).+(ts|js)?(x)'],
3 | transform: {
4 | '^.+\\.(ts|js|html)$': 'ts-jest'
5 | },
6 | resolver: '@nrwl/builders/plugins/jest/resolver',
7 | moduleFileExtensions: ['ts', 'js', 'html'],
8 | collectCoverage: true,
9 | coverageReporters: ['html']
10 | };
11 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store-e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/electronic-store-e2e",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/core/core.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { HttpClientModule } from '@angular/common/http';
4 |
5 |
6 | @NgModule({
7 | declarations: [],
8 | imports: [
9 | CommonModule,
10 | HttpClientModule,
11 | ]
12 | })
13 | export class CoreModule { }
14 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/nav/nav.component.css:
--------------------------------------------------------------------------------
1 | .sidenav-container {
2 | height: 100%;
3 | }
4 |
5 | .sidenav {
6 | width: 200px;
7 | }
8 |
9 | .sidenav .mat-toolbar {
10 | background: inherit;
11 | }
12 |
13 | .mat-toolbar.mat-primary {
14 | position: sticky;
15 | top: 0;
16 | z-index: 1;
17 | }
18 |
19 | .spacer {
20 | flex: 1 1 auto;
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/core/core.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { HttpClientModule } from '@angular/common/http';
4 |
5 |
6 | @NgModule({
7 | declarations: [],
8 | imports: [
9 | CommonModule,
10 | HttpClientModule,
11 | ]
12 | })
13 | export class CoreModule { }
14 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/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 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/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 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/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 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/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 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "es",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "es",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/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 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/about/about.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'pb-about',
5 | templateUrl: './about.component.html',
6 | styleUrls: ['./about.component.scss']
7 | })
8 | export class AboutComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/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 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/about/about.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'pb-about',
5 | templateUrl: './about.component.html',
6 | styleUrls: ['./about.component.scss']
7 | })
8 | export class AboutComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter05/es-api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "declaration": true,
5 | "removeComments": true,
6 | "emitDecoratorMetadata": true,
7 | "experimentalDecorators": true,
8 | "target": "es6",
9 | "sourceMap": true,
10 | "outDir": "./dist",
11 | "baseUrl": "./"
12 | },
13 | "exclude": ["node_modules"]
14 | }
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/app.controller.ts:
--------------------------------------------------------------------------------
1 | import { Controller, Get } from '@nestjs/common';
2 | import { AppService } from './app.service';
3 |
4 | @Controller()
5 | export class AppController {
6 | constructor(private readonly appService: AppService) {}
7 |
8 | @Get()
9 | getHello(): string {
10 | return this.appService.getHello();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter08/es-api/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "declaration": true,
5 | "removeComments": true,
6 | "emitDecoratorMetadata": true,
7 | "experimentalDecorators": true,
8 | "target": "es6",
9 | "sourceMap": true,
10 | "outDir": "./dist",
11 | "baseUrl": "./"
12 | },
13 | "exclude": ["node_modules"]
14 | }
15 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PersonalBlog
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | InventoryApp
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "./out-tsc/app",
5 | "types": []
6 | },
7 | "files": [
8 | "src/main.ts",
9 | "src/polyfills.ts"
10 | ],
11 | "include": [
12 | "src/**/*.ts"
13 | ],
14 | "exclude": [
15 | "src/test.ts",
16 | "src/**/*.spec.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/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 | "src/polyfills.ts"
13 | ],
14 | "include": [
15 | "src/**/*.spec.ts",
16 | "src/**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PersonalBlog
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/nav/nav.component.css:
--------------------------------------------------------------------------------
1 | .sidenav-container {
2 | height: 100%;
3 | }
4 |
5 | .sidenav {
6 | width: 200px;
7 | }
8 |
9 | .sidenav .mat-toolbar {
10 | background: inherit;
11 | }
12 |
13 | .mat-toolbar.mat-primary {
14 | position: sticky;
15 | top: 0;
16 | z-index: 1;
17 | }
18 |
19 | .spacer {
20 | flex: 1 1 auto;
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'es-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 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/shared/header/header.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'pb-header',
5 | templateUrl: './header.component.html',
6 | styleUrls: ['./header.component.scss']
7 | })
8 | export class HeaderComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/shared/header/header.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'pb-header',
5 | templateUrl: './header.component.html',
6 | styleUrls: ['./header.component.scss']
7 | })
8 | export class HeaderComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/src/main/res/drawable-nodpi/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
4 |
5 | -
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/app.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { AppController } from './app.controller';
3 | import { AppService } from './app.service';
4 | import { ProductsModule } from './products/products.module';
5 |
6 | @Module({
7 | imports: [ProductsModule],
8 | controllers: [AppController],
9 | providers: [AppService],
10 | })
11 | export class AppModule {}
12 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/app.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { AppController } from './app.controller';
3 | import { AppService } from './app.service';
4 | import { ProductsModule } from './products/products.module';
5 |
6 | @Module({
7 | imports: [ProductsModule],
8 | controllers: [AppController],
9 | providers: [AppService],
10 | })
11 | export class AppModule {}
12 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/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 ng-flashcards!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/products/products.provider.ts:
--------------------------------------------------------------------------------
1 | import { Connection } from 'mongoose';
2 | import { ProductsSchema } from '../schemas/product.schema';
3 |
4 | export const productsProviders = [
5 | {
6 | provide: 'ProductsModelToken',
7 | useFactory: (connection: Connection) =>
8 | connection.model('Products', ProductsSchema),
9 | inject: ['DbConnectionToken'],
10 | },
11 | ];
12 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/products/products.provider.ts:
--------------------------------------------------------------------------------
1 | import { Connection } from 'mongoose';
2 | import { ProductsSchema } from '../schemas/product.schema';
3 |
4 | export const productsProviders = [
5 | {
6 | provide: 'ProductsModelToken',
7 | useFactory: (connection: Connection) =>
8 | connection.model('Products', ProductsSchema),
9 | inject: ['DbConnectionToken'],
10 | },
11 | ];
12 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/color-namer.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 | import * as colorNamer from 'color-namer';
3 | @Pipe({
4 | name: 'colorNamer'
5 | })
6 | export class ColorNamerPipe implements PipeTransform {
7 |
8 | transform(value: any, args?: any): any {
9 | return colorNamer(`rgb(${value.r},${value.g},${value.b})`).html[0].name;
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/products/products.controller.ts:
--------------------------------------------------------------------------------
1 | import { Get, Controller } from '@nestjs/common';
2 | import { ProductsService } from './products.service';
3 |
4 | @Controller('products')
5 | export class ProductsController {
6 | constructor(private readonly productsService: ProductsService) {}
7 |
8 | @Get()
9 | getProducts(): any {
10 | return this.productsService.findAll();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/seo.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { SeoService } from './seo.service';
4 |
5 | describe('SeoService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: SeoService = TestBed.get(SeoService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "pb",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "pb",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "in",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "in",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo(destination) {
5 | return browser.get(destination);
6 | }
7 |
8 | getTitle() {
9 | return browser.getTitle();
10 | }
11 |
12 | getPageOneTitleText() {
13 | return element(by.tagName('app-home')).element(by.deepCss('ion-title')).getText();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/ng-toolkit.json:
--------------------------------------------------------------------------------
1 | {
2 | "universal": {
3 | "project": "personal-blog",
4 | "skipInstall": false,
5 | "directory": ".",
6 | "http": true
7 | },
8 | "serverless": {
9 | "project": "personal-blog",
10 | "provider": "aws",
11 | "skipInstall": false,
12 | "directory": ".",
13 | "serverless": {
14 | "aws": {},
15 | "gcloud": {}
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/environments/environment.qa.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | WORDPRESS_REST_URL: 'http://demo7831153.mockable.io/',
4 | baseHref: '/',
5 | url: 'https://upeuaw788l.execute-api.eu-central-1.amazonaws.com/production',
6 | seo: {
7 | description: 'I write my findings in this blog',
8 | title: 'My Personal Blog',
9 | author: 'My Name'
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "pb",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "pb",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/cart.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { CartService } from './cart.service';
4 |
5 | describe('CartService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: CartService = TestBed.get(CartService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | WORDPRESS_REST_URL: 'https://demo8034777.mockable.io/',
4 | baseHref: '/',
5 | url: 'https://upeuaw788l.execute-api.eu-central-1.amazonaws.com/production',
6 | seo: {
7 | description: 'I write my findings in this blog',
8 | title: 'My Personal Blog',
9 | author: 'My Name'
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/app/flash/flash.component.css:
--------------------------------------------------------------------------------
1 | .card {
2 | width: 300px;
3 | display: inline-block;
4 | margin: 10px;
5 | }
6 |
7 | .card-header {
8 | cursor: pointer;
9 | }
10 |
11 | .card-header.correct {
12 | background: #51be51;
13 | }
14 |
15 | .card-header.incorrect {
16 | background: red;
17 | }
18 |
19 | .correct .card-header-title,
20 | .incorrect .card-header-title {
21 | color: white;
22 | }
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | EsAdmin
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/products/products.provider.ts:
--------------------------------------------------------------------------------
1 | import { Connection } from 'mongoose';
2 | import { ProductsSchema } from '../schemas/product.schema';
3 |
4 | export const productsProviders = [
5 | {
6 | provide: 'ProductsModelToken',
7 | useFactory: (connection: Connection) =>
8 | connection.model('Products', ProductsSchema),
9 | inject: ['DbConnectionToken'],
10 | },
11 | ];
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../dist/out-tsc/apps/electronic-store",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts",
12 | "src/polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/post/post.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | import { PostRoutingModule } from './post-routing.module';
5 | import { PostComponent } from './post.component';
6 |
7 | @NgModule({
8 | declarations: [PostComponent],
9 | imports: [
10 | CommonModule,
11 | PostRoutingModule
12 | ]
13 | })
14 | export class PostModule { }
15 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/product.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { ProductService } from './product.service';
4 |
5 | describe('ProductService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: ProductService = TestBed.get(ProductService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/post/post.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | import { PostRoutingModule } from './post-routing.module';
5 | import { PostComponent } from './post.component';
6 |
7 | @NgModule({
8 | declarations: [PostComponent],
9 | imports: [
10 | CommonModule,
11 | PostRoutingModule
12 | ]
13 | })
14 | export class PostModule { }
15 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/environments/environment.serverless.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | WORDPRESS_REST_URL: 'https://demo8034777.mockable.io/',
4 | baseHref: '/production/',
5 | url: 'https://upeuaw788l.execute-api.eu-central-1.amazonaws.com/production',
6 | seo: {
7 | description: 'I write my findings in this blog',
8 | title: 'My Personal Blog',
9 | author: 'My Name'
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/home/home.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | import { HomeRoutingModule } from './home-routing.module';
5 | import { HomeComponent } from './home.component';
6 |
7 | @NgModule({
8 | declarations: [HomeComponent],
9 | imports: [
10 | CommonModule,
11 | HomeRoutingModule
12 | ]
13 | })
14 | export class HomeModule { }
15 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/products.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { ProductsService } from './products.service';
4 |
5 | describe('ProductsService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: ProductsService = TestBed.get(ProductsService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/cart.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { CartService } from './cart.service';
4 |
5 | describe('CartService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: CartService = TestBed.get(CartService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter10/bulma/nx.json:
--------------------------------------------------------------------------------
1 | {
2 | "npmScope": "ngprojects",
3 | "implicitDependencies": {
4 | "angular.json": "*",
5 | "package.json": "*",
6 | "tsconfig.json": "*",
7 | "tslint.json": "*",
8 | "nx.json": "*"
9 | },
10 | "projects": {
11 | "bulma": {
12 | "tags": ["ba"]
13 | },
14 | "demo": {
15 | "tags": ["app"]
16 | },
17 | "demo-e2e": {
18 | "tags": []
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/home/home-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { HomeComponent } from './home.component';
4 |
5 | const routes: Routes = [
6 | { path: '', component: HomeComponent },
7 | ];
8 |
9 | @NgModule({
10 | imports: [RouterModule.forChild(routes)],
11 | exports: [RouterModule]
12 | })
13 | export class HomeRoutingModule { }
14 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/home/home.component.html:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/post/post-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { PostComponent } from './post.component';
4 |
5 | const routes: Routes = [
6 | { path: '', component: PostComponent },
7 | ];
8 |
9 | @NgModule({
10 | imports: [RouterModule.forChild(routes)],
11 | exports: [RouterModule]
12 | })
13 | export class PostRoutingModule { }
14 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.error(err));
13 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/post/post-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { PostComponent } from './post.component';
4 |
5 | const routes: Routes = [
6 | { path: '', component: PostComponent },
7 | ];
8 |
9 | @NgModule({
10 | imports: [RouterModule.forChild(routes)],
11 | exports: [RouterModule]
12 | })
13 | export class PostRoutingModule { }
14 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.error(err));
13 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.error(err));
13 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/products.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpClient } from '@angular/common/http';
3 | const PRODUCTS_API = 'http://localhost:3000/products';
4 |
5 | @Injectable({
6 | providedIn: 'root'
7 | })
8 | export class ProductsService {
9 |
10 | constructor(private http: HttpClient) { }
11 |
12 | getProducts() {
13 | return this.http.get(PRODUCTS_API);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/post/post-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { PostComponent } from './post.component';
4 |
5 | const routes: Routes = [
6 | { path: '', component: PostComponent },
7 | ];
8 |
9 | @NgModule({
10 | imports: [RouterModule.forChild(routes)],
11 | exports: [RouterModule]
12 | })
13 | export class PostRoutingModule { }
14 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.error(err));
13 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/core/wordpress.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { WordpressService } from './wordpress.service';
4 |
5 | describe('WordpressService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: WordpressService = TestBed.get(WordpressService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.log(err));
13 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/core/wordpress.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { WordpressService } from './wordpress.service';
4 |
5 | describe('WordpressService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: WordpressService = TestBed.get(WordpressService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/products.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { HttpClient } from '@angular/common/http';
3 | const PRODUCTS_API = '/api/products';
4 |
5 | @Injectable({
6 | providedIn: 'root'
7 | })
8 | export class ProductsService {
9 |
10 | constructor(private http: HttpClient) { }
11 |
12 | getProducts() {
13 | return this.http.get(PRODUCTS_API);
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/home/home.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | import { HomeRoutingModule } from './home-routing.module';
5 | import { HomeComponent } from './home.component';
6 |
7 | @NgModule({
8 | declarations: [HomeComponent],
9 | imports: [
10 | CommonModule,
11 | HomeRoutingModule
12 | ]
13 | })
14 | export class HomeModule { }
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/src/lib/auth.module.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, TestBed } from '@angular/core/testing';
2 | import { AuthModule } from './auth.module';
3 |
4 | describe('AuthModule', () => {
5 | beforeEach(async(() => {
6 | TestBed.configureTestingModule({
7 | imports: [AuthModule]
8 | }).compileComponents();
9 | }));
10 |
11 | it('should create', () => {
12 | expect(AuthModule).toBeDefined();
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/Chapter09/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "cli": {
6 | "defaultCollection": "@nativescript/schematics"
7 | },
8 | "projects": {
9 | "HelloWorld": {
10 | "root": "",
11 | "sourceRoot": ".",
12 | "projectType": "application",
13 | "prefix": "app"
14 | }
15 | },
16 | "defaultProject": "HelloWorld"
17 | }
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 | import { BulmaModule } from '@ngprojects/bulma';
4 |
5 | import { AppComponent } from './app.component';
6 |
7 | @NgModule({
8 | declarations: [AppComponent],
9 | imports: [BrowserModule, BulmaModule],
10 | providers: [],
11 | bootstrap: [AppComponent]
12 | })
13 | export class AppModule {}
14 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/bulma.module.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, TestBed } from '@angular/core/testing';
2 | import { BulmaModule } from './bulma.module';
3 |
4 | describe('BulmaModule', () => {
5 | beforeEach(async(() => {
6 | TestBed.configureTestingModule({
7 | imports: [BulmaModule]
8 | }).compileComponents();
9 | }));
10 |
11 | it('should create', () => {
12 | expect(BulmaModule).toBeDefined();
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/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
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/src/lib/shared.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { BadgeModule, TopbarModule, ButtonModule, ListItemModule } from '@momentum-ui/angular';
4 | @NgModule({
5 | imports: [CommonModule, BadgeModule, TopbarModule, ButtonModule, ListItemModule],
6 | exports: [BadgeModule, TopbarModule, ButtonModule, ListItemModule]
7 | })
8 | export class SharedModule {}
9 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/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
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic()
12 | .bootstrapModule(AppModule)
13 | .catch(err => console.error(err));
14 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/route-helper.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { RouteHelperService } from './route-helper.service';
4 |
5 | describe('RouteHelperService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: RouteHelperService = TestBed.get(RouteHelperService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/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
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/home/home-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { HomeComponent } from './home.component';
4 |
5 | const routes: Routes = [
6 | { path: '', component: HomeComponent },
7 | ];
8 |
9 | @NgModule({
10 | imports: [RouterModule.forChild(routes)],
11 | exports: [RouterModule]
12 | })
13 | export class HomeRoutingModule { }
14 |
--------------------------------------------------------------------------------
/Chapter09/app/news/news.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
2 | import { NativeScriptCommonModule } from "nativescript-angular/common";
3 | import { NativeScriptFormsModule } from "nativescript-angular/forms";
4 |
5 | @NgModule({
6 | imports: [
7 | NativeScriptCommonModule,
8 | NativeScriptFormsModule
9 | ],
10 | declarations: [
11 | ],
12 | schemas: [
13 | NO_ERRORS_SCHEMA
14 | ]
15 | })
16 | export class NewsModule { }
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/products.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { ProductsService } from './products.service';
4 |
5 | describe('ProductsService', () => {
6 | beforeEach(() => TestBed.configureTestingModule({}));
7 |
8 | it('should be created', () => {
9 | const service: ProductsService = TestBed.get(ProductsService);
10 | expect(service).toBeTruthy();
11 | });
12 | });
13 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/shared/src/lib/shared.module.spec.ts:
--------------------------------------------------------------------------------
1 | import { async, TestBed } from '@angular/core/testing';
2 | import { SharedModule } from './shared.module';
3 |
4 | describe('SharedModule', () => {
5 | beforeEach(async(() => {
6 | TestBed.configureTestingModule({
7 | imports: [SharedModule]
8 | }).compileComponents();
9 | }));
10 |
11 | it('should create', () => {
12 | expect(SharedModule).toBeDefined();
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/shared/shared.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { HeaderComponent } from './header/header.component';
4 | import { RouterModule } from '@angular/router';
5 |
6 | @NgModule({
7 | declarations: [HeaderComponent],
8 | imports: [
9 | CommonModule,
10 | RouterModule,
11 | ],
12 | exports: [HeaderComponent]
13 | })
14 | export class SharedModule { }
15 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/nav/nav.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Electronic Store
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/shared/shared.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { HeaderComponent } from './header/header.component';
4 | import { RouterModule } from '@angular/router';
5 |
6 | @NgModule({
7 | declarations: [HeaderComponent],
8 | imports: [
9 | CommonModule,
10 | RouterModule,
11 | ],
12 | exports: [HeaderComponent]
13 | })
14 | export class SharedModule { }
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/nav/nav.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Electronic Store
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.error(err));
13 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/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
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic()
12 | .bootstrapModule(AppModule)
13 | .catch(err => console.error(err));
14 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/main.ts:
--------------------------------------------------------------------------------
1 | import 'hammerjs';
2 | import { enableProdMode } from '@angular/core';
3 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4 |
5 | import { AppModule } from './app/app.module';
6 | import { environment } from './environments/environment';
7 |
8 | if (environment.production) {
9 | enableProdMode();
10 | }
11 |
12 | platformBrowserDynamic().bootstrapModule(AppModule)
13 | .catch(err => console.error(err));
14 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/secret/secret-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { SecretComponent } from './secret.component';
4 |
5 | const routes: Routes = [
6 | { path: '', component: SecretComponent },
7 | ];
8 |
9 | @NgModule({
10 | imports: [RouterModule.forChild(routes)],
11 | exports: [RouterModule]
12 | })
13 | export class SecretRoutingModule { }
14 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/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
12 | Chrome 41 # Googlebot
--------------------------------------------------------------------------------
/Chapter03/personal-blog/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
12 | Chrome 41 # Googlebot
--------------------------------------------------------------------------------
/Chapter04/inventory-app/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
12 | Chrome 41 # Googlebot
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/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
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/secret/secret.component.html:
--------------------------------------------------------------------------------
1 |
2 |
14 |
15 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { routerTransition } from './animations';
3 |
4 | @Component({
5 | selector: 'pb-root',
6 | templateUrl: './app.component.html',
7 | styleUrls: ['./app.component.scss'],
8 | animations: [
9 | routerTransition
10 | ]
11 | })
12 | export class AppComponent {
13 | title = 'personal-blog';
14 | getOutlet(o) {
15 | return o.activatedRouteData.routeState;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/products/products.service.ts:
--------------------------------------------------------------------------------
1 | import { Model } from 'mongoose';
2 | import { Injectable, Inject } from '@nestjs/common';
3 | import { Product } from './product.interface';
4 |
5 | @Injectable()
6 | export class ProductsService {
7 | constructor(
8 | @Inject('ProductsModelToken')
9 | private readonly productModel: Model,
10 | ) {}
11 |
12 | async findAll(): Promise {
13 | return await this.productModel.find().exec();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/products/products.service.ts:
--------------------------------------------------------------------------------
1 | import { Model } from 'mongoose';
2 | import { Injectable, Inject } from '@nestjs/common';
3 | import { Product } from './product.interface';
4 |
5 | @Injectable()
6 | export class ProductsService {
7 | constructor(
8 | @Inject('ProductsModelToken')
9 | private readonly productModel: Model,
10 | ) {}
11 |
12 | async findAll(): Promise {
13 | return await this.productModel.find().exec();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/home/home.component.html:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/browserslist:
--------------------------------------------------------------------------------
1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
2 | # For additional information regarding the format and rule options, please see:
3 | # https://github.com/browserslist/browserslist#queries
4 |
5 | # You can see what browsers were selected by your queries by running:
6 | # npx browserslist
7 |
8 | > 0.5%
9 | last 2 versions
10 | Firefox ESR
11 | not dead
12 | not IE 9-11 # For IE 9-11 support, remove 'not'.
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/post/post.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | import { PostRoutingModule } from './post-routing.module';
5 | import { PostComponent } from './post.component';
6 | import { ColorNamerPipe } from '../color-namer.pipe';
7 |
8 | @NgModule({
9 | declarations: [PostComponent, ColorNamerPipe],
10 | imports: [
11 | CommonModule,
12 | PostRoutingModule
13 | ],
14 | })
15 | export class PostModule { }
16 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/products/products.service.ts:
--------------------------------------------------------------------------------
1 | import { Model } from 'mongoose';
2 | import { Injectable, Inject } from '@nestjs/common';
3 | import { Product } from './product.interface';
4 |
5 | @Injectable()
6 | export class ProductsService {
7 | constructor(
8 | @Inject('ProductsModelToken')
9 | private readonly productModel: Model,
10 | ) {}
11 |
12 | async findAll(): Promise {
13 | return await this.productModel.find().exec();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/database/database.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import * as mongoose from 'mongoose';
3 |
4 | const DATABASE_PROVIDER = {
5 | provide: 'DbConnectionToken',
6 | useFactory: async (): Promise =>
7 | await mongoose.connect(
8 | 'mongodb://username:password1@ds015700.mlab.com:15700/products',
9 | ),
10 | };
11 |
12 | @Module({
13 | providers: [DATABASE_PROVIDER],
14 | exports: [DATABASE_PROVIDER],
15 | })
16 | export class DatabaseModule {}
17 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/database/database.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import * as mongoose from 'mongoose';
3 |
4 | const DATABASE_PROVIDER = {
5 | provide: 'DbConnectionToken',
6 | useFactory: async (): Promise =>
7 | await mongoose.connect(
8 | 'mongodb://username:password1@ds015700.mlab.com:15700/products',
9 | ),
10 | };
11 |
12 | @Module({
13 | providers: [DATABASE_PROVIDER],
14 | exports: [DATABASE_PROVIDER],
15 | })
16 | export class DatabaseModule {}
17 |
--------------------------------------------------------------------------------
/Chapter09/app/home/home.component.css:
--------------------------------------------------------------------------------
1 | .main-layout {
2 | margin-top: 0;
3 | margin-bottom: -2;
4 | }
5 |
6 | .list-item {
7 | margin-bottom: 2;
8 | height: 25%;
9 | }
10 |
11 | .item-title {
12 | background-color: rgba(0,0,0,0.4);
13 | color: white;
14 | vertical-align: bottom;
15 | padding: 16;
16 | font-size: 12;
17 | }
18 |
19 | .button {
20 | border: 1px solid black;
21 | background: gray;
22 | height: 5%;
23 | position: fixed;
24 | top: 0;
25 | right: 0;
26 | }
--------------------------------------------------------------------------------
/Chapter05/es-api/src/products/products.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { ProductsController } from './products.controller';
3 | import { ProductsService } from './products.service';
4 | import { productsProviders } from './products.provider';
5 | import { DatabaseModule } from '../database/database.module';
6 |
7 | @Module({
8 | imports: [DatabaseModule],
9 | controllers: [ProductsController],
10 | providers: [ProductsService, ...productsProviders],
11 | })
12 | export class ProductsModule {}
13 |
--------------------------------------------------------------------------------
/Chapter05/es-api/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "defaultSeverity": "error",
3 | "extends": ["tslint:recommended"],
4 | "jsRules": {
5 | "no-unused-expression": true
6 | },
7 | "rules": {
8 | "quotemark": [true, "single"],
9 | "member-access": [false],
10 | "ordered-imports": [false],
11 | "max-line-length": [true, 150],
12 | "member-ordering": [false],
13 | "interface-name": [false],
14 | "arrow-parens": false,
15 | "object-literal-sort-keys": false
16 | },
17 | "rulesDirectory": []
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/products/products.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { ProductsController } from './products.controller';
3 | import { ProductsService } from './products.service';
4 | import { productsProviders } from './products.provider';
5 | import { DatabaseModule } from '../database/database.module';
6 |
7 | @Module({
8 | imports: [DatabaseModule],
9 | controllers: [ProductsController],
10 | providers: [ProductsService, ...productsProviders],
11 | })
12 | export class ProductsModule {}
13 |
--------------------------------------------------------------------------------
/Chapter08/es-api/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "defaultSeverity": "error",
3 | "extends": ["tslint:recommended"],
4 | "jsRules": {
5 | "no-unused-expression": true
6 | },
7 | "rules": {
8 | "quotemark": [true, "single"],
9 | "member-access": [false],
10 | "ordered-imports": [false],
11 | "max-line-length": [true, 150],
12 | "member-ordering": [false],
13 | "interface-name": [false],
14 | "arrow-parens": false,
15 | "object-literal-sort-keys": false
16 | },
17 | "rulesDirectory": []
18 | }
19 |
--------------------------------------------------------------------------------
/Chapter09/app/home/home-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from "@angular/core";
2 | import { Routes } from "@angular/router";
3 | import { NativeScriptRouterModule } from "nativescript-angular/router";
4 |
5 | import { HomeComponent } from "./home.component";
6 |
7 | const routes: Routes = [
8 | { path: "", component: HomeComponent }
9 | ];
10 |
11 | @NgModule({
12 | imports: [NativeScriptRouterModule.forChild(routes)],
13 | exports: [NativeScriptRouterModule]
14 | })
15 | export class HomeRoutingModule { }
16 |
--------------------------------------------------------------------------------
/Chapter09/app/news/news-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from "@angular/core";
2 | import { Routes } from "@angular/router";
3 | import { NativeScriptRouterModule } from "nativescript-angular/router";
4 |
5 | import { NewsComponent } from "./news.component";
6 |
7 | const routes: Routes = [
8 | { path: "", component: NewsComponent }
9 | ];
10 |
11 | @NgModule({
12 | imports: [NativeScriptRouterModule.forChild(routes)],
13 | exports: [NativeScriptRouterModule]
14 | })
15 | export class NewsRoutingModule { }
16 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('new App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 | describe('default screen', () => {
10 | beforeEach(() => {
11 | page.navigateTo('/home');
12 | });
13 | it('should have a title saying Home', () => {
14 | page.getPageOneTitleText().then(title => {
15 | expect(title).toEqual('Home');
16 | });
17 | });
18 | });
19 | });
20 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "es2015",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "target": "es5",
13 | "typeRoots": [
14 | "node_modules/@types"
15 | ],
16 | "lib": [
17 | "es2018",
18 | "dom"
19 | ]
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/product/product.component.scss:
--------------------------------------------------------------------------------
1 | .card.clickable.active {
2 | box-shadow: 0 .5rem 0 0 green;
3 | border: 5px solid green;
4 | }
5 |
6 | .devices clr-icon {
7 | width: 85px;
8 | height: 85px;
9 | display: block;
10 | margin: 0 auto;
11 | }
12 |
13 | .card-text {
14 | text-align: center
15 | }
16 |
17 | .clr-control-container,
18 | textarea {
19 | width: 100%;
20 | }
21 |
22 | .toggle-switch {
23 | margin-top: 10px;
24 | }
25 |
26 | label.clr-control-label {
27 | padding-top: 14px;
28 | }
29 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchScreen-Center.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchScreen-Center@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/sub-total.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform, Injector } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'subTotal'
5 | })
6 | export class SubTotalPipe implements PipeTransform {
7 | currencyPipe;
8 | constructor() {
9 |
10 | }
11 |
12 | transform(cart): any {
13 | let total = 0;
14 | Object.values(cart).forEach((product: any) => {
15 | if (product.count) {
16 | total += product.count * product.salePrice;
17 | }
18 | });
19 | return total;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/audit/audit.page.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Apt # {{model?.number}}
4 |
5 |
6 |
7 |
8 |
13 |
14 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/global.scss:
--------------------------------------------------------------------------------
1 | // http://ionicframework.com/docs/theming/
2 | @import '~@ionic/angular/css/core.css';
3 | @import '~@ionic/angular/css/normalize.css';
4 | @import '~@ionic/angular/css/structure.css';
5 | @import '~@ionic/angular/css/typography.css';
6 |
7 | @import '~@ionic/angular/css/padding.css';
8 | @import '~@ionic/angular/css/float-elements.css';
9 | @import '~@ionic/angular/css/text-alignment.css';
10 | @import '~@ionic/angular/css/text-transformation.css';
11 | @import '~@ionic/angular/css/flex-utils.css';
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/database/database.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import * as mongoose from 'mongoose';
3 |
4 | const DATABASE_PROVIDER = {
5 | provide: 'DbConnectionToken',
6 | useFactory: async (): Promise =>
7 | await mongoose.connect(
8 | 'mongodb://username:password1@ds015700.mlab.com:15700/products',
9 | ),
10 | };
11 |
12 | @Module({
13 | providers: [DATABASE_PROVIDER],
14 | exports: [DATABASE_PROVIDER],
15 | })
16 | export class DatabaseModule {}
17 |
--------------------------------------------------------------------------------
/Chapter09/app/detail/detail.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
2 | import { NativeScriptCommonModule } from "nativescript-angular/common";
3 | import { NativeScriptFormsModule } from "nativescript-angular/forms";
4 | import { DetailComponent } from "./detail.component";
5 |
6 | @NgModule({
7 | imports: [
8 | NativeScriptCommonModule,
9 | NativeScriptFormsModule
10 | ],
11 | declarations: [
12 | DetailComponent
13 | ],
14 | schemas: [
15 | NO_ERRORS_SCHEMA
16 | ]
17 | })
18 | export class DetailModule { }
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchScreen-AspectFill.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchScreen-AspectFill@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/add-to-cart/add-to-cart.component.css:
--------------------------------------------------------------------------------
1 | .buy-btn {
2 | width: 100%;
3 | }
4 |
5 | .btn-mimicry {
6 | border: 1px solid rgba(0,0,0,.12);
7 | border-radius: 5px;
8 | box-shadow: 0 0 0 0 rgba(0,0,0,.2), 0 0 0 0 rgba(0,0,0,.14), 0 0 0 0 rgba(0,0,0,.12);
9 | display: flex;
10 | justify-content: space-between;
11 | align-items: center;
12 | }
13 |
14 | button[mat-icon-button] {
15 | width: 34px!important;
16 | height: 34px!important;
17 | }
18 |
19 | mat-icon {
20 | height: 32px;
21 | width: 25px;
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter05/es-api/src/products/products.controller.ts:
--------------------------------------------------------------------------------
1 | import { Get, Controller } from '@nestjs/common';
2 | import { ProductsService } from './products.service';
3 |
4 | const _ = require('lodash');
5 |
6 | @Controller('products')
7 | export class ProductsController {
8 | constructor(private readonly productsService: ProductsService) {}
9 |
10 | @Get()
11 | getProducts(): any {
12 | return this.productsService.findAll().then(products => {
13 | return products.map(product => _.omit(product.toJSON(), ['sales']));
14 | });
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/products/products.module.ts:
--------------------------------------------------------------------------------
1 | import { Module } from '@nestjs/common';
2 | import { ProductsController } from './products.controller';
3 | import { ProductsService } from './products.service';
4 | import { productsProviders } from './products.provider';
5 | import { DatabaseModule } from '../database/database.module';
6 |
7 | @Module({
8 | imports: [DatabaseModule],
9 | controllers: [ProductsController],
10 | providers: [ProductsService, ...productsProviders],
11 | })
12 | export class ProductsModule {}
13 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/iOS/build.xcconfig:
--------------------------------------------------------------------------------
1 | // You can add custom settings here
2 | // for example you can uncomment the following line to force distribution code signing
3 | // CODE_SIGN_IDENTITY = iPhone Distribution
4 | // To build for device with Xcode 8 you need to specify your development team. More info: https://developer.apple.com/library/prerelease/content/releasenotes/DeveloperTools/RN-Xcode/Introduction.html
5 | // DEVELOPMENT_TEAM = YOUR_TEAM_ID;
6 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
7 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
8 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "es2015",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es5",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin/src/app/secret/secret.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { LineChartModule } from '@swimlane/ngx-charts';
4 |
5 | import { SecretRoutingModule } from './secret-routing.module';
6 | import { SecretComponent } from './secret.component';
7 |
8 | @NgModule({
9 | declarations: [SecretComponent],
10 | imports: [
11 | CommonModule,
12 | SecretRoutingModule,
13 | LineChartModule,
14 | ]
15 | })
16 | export class SecretModule { }
17 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "fileServerFolder": "../../dist/out-tsc/apps/demo-e2e",
3 | "fixturesFolder": "../../dist/out-tsc/apps/demo-e2e/src/fixtures",
4 | "integrationFolder": "../../dist/out-tsc/apps/demo-e2e/src/integration",
5 | "pluginsFile": "../../dist/out-tsc/apps/demo-e2e/src/plugins/index.js",
6 | "supportFile": false,
7 | "video": true,
8 | "videosFolder": "../../dist/out-tsc/apps/demo-e2e/videos",
9 | "screenshotsFolder": "../../dist/out-tsc/apps/demo-e2e/screenshots",
10 | "chromeWebSecurity": false
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/dropdown/dropdown-item.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive, ElementRef, Host } from '@angular/core';
2 | import { DropdownMenuDirective } from './dropdown-menu.directive';
3 |
4 | @Directive({
5 | selector: '[baDropdownItem]',
6 | host: {
7 | 'class': 'dropdown-item',
8 | 'role': 'menuitem'
9 | }
10 | })
11 | export class DropdownItemDirective {
12 | menu: DropdownMenuDirective;
13 |
14 | constructor(private el: ElementRef) { }
15 |
16 | focus() {
17 | this.el.nativeElement.focus();
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "esnext",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es2015",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "esnext",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es2015",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "esnext",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es2015",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/sub-total.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform, Injector } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'subTotal'
5 | })
6 | export class SubTotalPipe implements PipeTransform {
7 | currencyPipe;
8 | constructor() {
9 |
10 | }
11 |
12 | transform(cart): any {
13 | let total = 0;
14 | Object.values(cart).forEach((product: any) => {
15 | if (product.count) {
16 | total += product.count * product.salePrice;
17 | }
18 | });
19 | return total;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/app.browser.module.ts:
--------------------------------------------------------------------------------
1 | import { AppComponent } from './app.component';
2 | import { AppModule } from './app.module';
3 | import { NgModule } from '@angular/core';
4 | import { BrowserModule , BrowserTransferStateModule} from '@angular/platform-browser';
5 |
6 | @NgModule({
7 | bootstrap: [AppComponent],
8 | imports: [
9 | BrowserModule.withServerTransition({appId: 'pb-root'}),
10 | BrowserTransferStateModule,
11 | AppModule,
12 | ]
13 | })
14 | export class AppBrowserModule {}
15 |
--------------------------------------------------------------------------------
/Chapter09/app/news/news.component.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/add-to-cart/add-to-cart.component.css:
--------------------------------------------------------------------------------
1 | .buy-btn {
2 | width: 100%;
3 | }
4 |
5 | .btn-mimicry {
6 | border: 1px solid rgba(0,0,0,.12);
7 | border-radius: 5px;
8 | box-shadow: 0 0 0 0 rgba(0,0,0,.2), 0 0 0 0 rgba(0,0,0,.14), 0 0 0 0 rgba(0,0,0,.12);
9 | display: flex;
10 | justify-content: space-between;
11 | align-items: center;
12 | }
13 |
14 | button[mat-icon-button] {
15 | width: 34px!important;
16 | height: 34px!important;
17 | }
18 |
19 | mat-icon {
20 | height: 32px;
21 | width: 25px;
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter09/app/news/news.component.css:
--------------------------------------------------------------------------------
1 | /* Add mobile styles for the component here. */
2 | .main-layout {
3 | margin-top: 0;
4 | margin-bottom: -2;
5 | }
6 |
7 | .list-item {
8 | margin-bottom: 2;
9 | height: 25%;
10 | }
11 |
12 | .item-title {
13 | background-color: rgba(0,0,0,0.4);
14 | color: white;
15 | vertical-align: bottom;
16 | padding: 16;
17 | font-size: 14;
18 | }
19 |
20 | .button {
21 | border: 1px solid black;
22 | background: gray;
23 | height: 5%;
24 | position: fixed;
25 | top: 0;
26 | right: 0;
27 | }
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NgFlashcards
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | // Base SCSS files
4 | @import "~bootstrap-scss/functions";
5 | @import "~bootstrap-scss/variables";
6 | @import "~bootstrap-scss/mixins";
7 | @import "~bootstrap-scss/root";
8 | @import "~bootstrap-scss/reboot";
9 | @import "~bootstrap-scss/type";
10 |
11 | // Include specific SCSS components that is used in our application
12 | @import "~bootstrap-scss/nav";
13 | @import "~bootstrap-scss/navbar";
14 | @import "~bootstrap-scss/card";
15 | @import "~bootstrap-scss/grid";
16 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/styles.scss:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
3 | // Base SCSS files
4 | @import "~bootstrap-scss/functions";
5 | @import "~bootstrap-scss/variables";
6 | @import "~bootstrap-scss/mixins";
7 | @import "~bootstrap-scss/root";
8 | @import "~bootstrap-scss/reboot";
9 | @import "~bootstrap-scss/type";
10 |
11 | // Include specific SCSS components that is used in our application
12 | @import "~bootstrap-scss/nav";
13 | @import "~bootstrap-scss/navbar";
14 | @import "~bootstrap-scss/card";
15 | @import "~bootstrap-scss/grid";
16 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/cypress.json:
--------------------------------------------------------------------------------
1 | {
2 | "fileServerFolder": "../../dist/out-tsc/apps/es-admin-e2e",
3 | "fixturesFolder": "../../dist/out-tsc/apps/es-admin-e2e/src/fixtures",
4 | "integrationFolder": "../../dist/out-tsc/apps/es-admin-e2e/src/integration",
5 | "pluginsFile": "../../dist/out-tsc/apps/es-admin-e2e/src/plugins/index.js",
6 | "supportFile": false,
7 | "video": true,
8 | "videosFolder": "../../dist/out-tsc/apps/es-admin-e2e/videos",
9 | "screenshotsFolder": "../../dist/out-tsc/apps/es-admin-e2e/screenshots",
10 | "chromeWebSecurity": false
11 | }
12 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { BrowserModule } from '@angular/platform-browser';
3 | import { FormsModule } from '@angular/forms';
4 |
5 | import { AppComponent } from './app.component';
6 | import { FlashComponent } from './flash/flash.component';
7 | import { FlashService } from './flash.service';
8 |
9 | @NgModule({
10 | imports: [ BrowserModule, FormsModule ],
11 | declarations: [ AppComponent, FlashComponent ],
12 | bootstrap: [ AppComponent ],
13 | providers: [FlashService]
14 | })
15 | export class AppModule { }
16 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/main.ts:
--------------------------------------------------------------------------------
1 | import { AppBrowserModule } from '.././src/app/app.browser.module';
2 | import { enableProdMode } from '@angular/core';
3 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
4 |
5 | import { AppModule } from './app/app.module';
6 | import { environment } from './environments/environment';
7 |
8 | if (environment.production) {
9 | enableProdMode();
10 | }
11 |
12 | document.addEventListener('DOMContentLoaded', () => {
13 | platformBrowserDynamic()
14 | .bootstrapModule(AppBrowserModule)
15 | .catch(err => console.log(err));
16 | });
17 |
--------------------------------------------------------------------------------
/public/safety-worker.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright Google Inc. All Rights Reserved.
4 | *
5 | * Use of this source code is governed by an MIT-style license that can be
6 | * found in the LICENSE file at https://angular.io/license
7 | */
8 |
9 | // tslint:disable:no-console
10 |
11 | self.addEventListener('install', event => { self.skipWaiting(); });
12 |
13 | self.addEventListener('activate', event => {
14 | event.waitUntil(self.clients.claim());
15 | self.registration.unregister().then(
16 | () => { console.log('NGSW Safety Worker - unregistered old service worker'); });
17 | });
18 |
--------------------------------------------------------------------------------
/Chapter09/app/App_Resources/Android/app.gradle:
--------------------------------------------------------------------------------
1 | // Add your native dependencies here:
2 |
3 | // Uncomment to add recyclerview-v7 dependency
4 | //dependencies {
5 | // compile 'com.android.support:recyclerview-v7:+'
6 | //}
7 |
8 | android {
9 | defaultConfig {
10 | generatedDensities = []
11 | applicationId = "__PACKAGE__"
12 |
13 | //override supported platforms
14 | // ndk {
15 | // abiFilters.clear()
16 | // abiFilters "armeabi-v7a"
17 | // }
18 |
19 | }
20 | aaptOptions {
21 | additionalParameters "--no-version-vectors"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Chapter10/bulma/libs/bulma/src/lib/dropdown/dropdown.directive.ts:
--------------------------------------------------------------------------------
1 | import { Directive } from '@angular/core';
2 | import { DropdownMenuDirective } from './dropdown-menu.directive';
3 | import { DropdownToggleDirective } from './dropdown-toggle.directive';
4 |
5 | @Directive({
6 | selector: '[baDropdown]',
7 | host: {
8 | 'class': 'dropdown',
9 | '[class.is-active]': '_open'
10 | }
11 | })
12 | export class DropdownDirective {
13 | open: boolean;
14 | menu: DropdownMenuDirective;
15 | toggle: DropdownToggleDirective;
16 |
17 | get _open() {
18 | return this.open;
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/public/worker-basic.min.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright Google Inc. All Rights Reserved.
4 | *
5 | * Use of this source code is governed by an MIT-style license that can be
6 | * found in the LICENSE file at https://angular.io/license
7 | */
8 |
9 | // tslint:disable:no-console
10 |
11 | self.addEventListener('install', event => { self.skipWaiting(); });
12 |
13 | self.addEventListener('activate', event => {
14 | event.waitUntil(self.clients.claim());
15 | self.registration.unregister().then(
16 | () => { console.log('NGSW Safety Worker - unregistered old service worker'); });
17 | });
18 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NgxBehance
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/.gitignore:
--------------------------------------------------------------------------------
1 | # Specifies intentionally untracked files to ignore when using Git
2 | # http://git-scm.com/docs/gitignore
3 |
4 | *~
5 | *.sw[mnpcod]
6 | *.log
7 | *.tmp
8 | *.tmp.*
9 | log.txt
10 | *.sublime-project
11 | *.sublime-workspace
12 | .vscode/
13 | npm-debug.log*
14 |
15 | .idea/
16 | .ionic/
17 | .sourcemaps/
18 | .sass-cache/
19 | .tmp/
20 | .versions/
21 | coverage/
22 | www/
23 | node_modules/
24 | tmp/
25 | temp/
26 | platforms/
27 | plugins/
28 | plugins/android.json
29 | plugins/ios.json
30 | $RECYCLE.BIN/
31 |
32 | .DS_Store
33 | Thumbs.db
34 | UserInterfaceState.xcuserstate
35 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/tsconfig.server.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "baseUrl": "./",
6 | "module": "commonjs",
7 | "types": [
8 | "node"
9 | ]
10 | },
11 | "exclude": [
12 | "test.ts",
13 | "**/*.spec.ts"
14 | ],
15 | "angularCompilerOptions": {
16 | "entryModule": "app/app.server.module#AppServerModule"
17 | },
18 | "include": [
19 | "**/*.ts"
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "esnext",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es2015",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | },
22 | "includes": [
23 | "polyfills.ts"
24 | ]
25 | }
26 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | import { BehanceService } from '../behance.service';
4 | import { map } from 'rxjs/operators';
5 |
6 | @Component({
7 | selector: 'app-home',
8 | templateUrl: './home.component.html',
9 | styleUrls: ['./home.component.scss']
10 | })
11 | export class HomeComponent implements OnInit {
12 | posts$ = this.behance.getPosts().pipe(map((data: any) => data.projects));
13 | constructor(private behance: BehanceService) {
14 |
15 | }
16 |
17 | ngOnInit() {
18 | this.behance.getPosts();
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { WordpressService } from '../core/wordpress.service';
3 | import { postsAnimation } from '../animations';
4 |
5 | @Component({
6 | selector: 'pb-home',
7 | templateUrl: './home.component.html',
8 | styleUrls: ['./home.component.scss'],
9 | animations: [
10 | postsAnimation
11 | ]
12 | })
13 | export class HomeComponent implements OnInit {
14 | posts$ = this.wordpressService.getPosts();
15 |
16 | constructor(private wordpressService: WordpressService) { }
17 |
18 | ngOnInit() {
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/home/home.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { WordpressService } from '../core/wordpress.service';
3 | import { postsAnimation } from '../animations';
4 |
5 | @Component({
6 | selector: 'pb-home',
7 | templateUrl: './home.component.html',
8 | styleUrls: ['./home.component.scss'],
9 | animations: [
10 | postsAnimation
11 | ]
12 | })
13 | export class HomeComponent implements OnInit {
14 | posts$ = this.wordpressService.getPosts();
15 |
16 | constructor(private wordpressService: WordpressService) { }
17 |
18 | ngOnInit() {
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Demo
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/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 | path: '',
7 | redirectTo: 'home',
8 | pathMatch: 'full'
9 | },
10 | {
11 | path: 'home',
12 | loadChildren: './home/home.module#HomePageModule'
13 | },
14 | {
15 | path: 'audit/:key',
16 | loadChildren: './audit/audit.module#AuditPageModule'
17 | },
18 | ];
19 |
20 | @NgModule({
21 | imports: [RouterModule.forRoot(routes)],
22 | exports: [RouterModule]
23 | })
24 | export class AppRoutingModule {}
25 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/app.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test } from '@nestjs/testing';
2 |
3 | import { AppService } from './app.service';
4 |
5 | describe('AppService', () => {
6 | let service: AppService;
7 |
8 | beforeAll(async () => {
9 | const app = await Test.createTestingModule({
10 | providers: [AppService],
11 | }).compile();
12 |
13 | service = app.get(AppService);
14 | });
15 |
16 | describe('getData', () => {
17 | it('should return "Welcome to es-api!"', () => {
18 | expect(service.getData()).toEqual({message: 'Welcome to es-api!'});
19 | });
20 | });
21 | });
22 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/app-routing.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { Routes, RouterModule } from '@angular/router';
3 | import { HomeComponent } from './home/home.component';
4 |
5 | const routes: Routes = [
6 | { path: '', pathMatch: 'full', redirectTo: 'snaps' },
7 | { path: 'snaps', loadChildren: () => import('./home/home.module').then(m => m.HomeModule) },
8 | { path: 'snaps/:id', loadChildren: () => import('./post/post.module').then(m => m.PostModule) },
9 | ];
10 |
11 | @NgModule({
12 | imports: [RouterModule.forRoot(routes)],
13 | exports: [RouterModule]
14 | })
15 | export class AppRoutingModule { }
16 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/libs/auth/src/lib/callback/callback.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { Store } from '@ngrx/store';
3 | import { AuthState } from '../+state/auth.reducer';
4 | import { AuthActionTypes, HandleLoginCallback } from '../+state/auth.actions';
5 |
6 | @Component({
7 | selector: 'ngprojects-callback',
8 | templateUrl: './callback.component.html',
9 | styleUrls: ['./callback.component.scss']
10 | })
11 | export class CallbackComponent implements OnInit {
12 |
13 | constructor(private store: Store) { }
14 |
15 | ngOnInit() {
16 | this.store.dispatch(new HandleLoginCallback());
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/nx.json:
--------------------------------------------------------------------------------
1 | {
2 | "npmScope": "ngprojects",
3 | "implicitDependencies": {
4 | "angular.json": "*",
5 | "package.json": "*",
6 | "tsconfig.json": "*",
7 | "tslint.json": "*",
8 | "nx.json": "*"
9 | },
10 | "projects": {
11 | "electronic-store": {
12 | "tags": []
13 | },
14 | "electronic-store-e2e": {
15 | "tags": []
16 | },
17 | "es-api": {
18 | "tags": []
19 | },
20 | "es-admin": {
21 | "tags": []
22 | },
23 | "es-admin-e2e": {
24 | "tags": []
25 | },
26 | "shared": {
27 | "tags": []
28 | },
29 | "auth": {
30 | "tags": []
31 | }
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "downlevelIteration": true,
9 | "experimentalDecorators": true,
10 | "module": "esnext",
11 | "moduleResolution": "node",
12 | "importHelpers": true,
13 | "target": "es2015",
14 | "typeRoots": [
15 | "node_modules/@types"
16 | ],
17 | "lib": [
18 | "es2018",
19 | "dom"
20 | ]
21 | },
22 | "angularCompilerOptions": {
23 | "fullTemplateTypeCheck": true,
24 | "strictInjectionParameters": true
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Chapter05/es-api/test/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import * as request from 'supertest';
3 | import { AppModule } from './../src/app.module';
4 |
5 | describe('AppController (e2e)', () => {
6 | let app;
7 |
8 | beforeEach(async () => {
9 | const moduleFixture: TestingModule = await Test.createTestingModule({
10 | imports: [AppModule],
11 | }).compile();
12 |
13 | app = moduleFixture.createNestApplication();
14 | await app.init();
15 | });
16 |
17 | it('/ (GET)', () => {
18 | return request(app.getHttpServer())
19 | .get('/')
20 | .expect(200)
21 | .expect('Hello World!');
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/Chapter08/es-api/test/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import * as request from 'supertest';
3 | import { AppModule } from './../src/app.module';
4 |
5 | describe('AppController (e2e)', () => {
6 | let app;
7 |
8 | beforeEach(async () => {
9 | const moduleFixture: TestingModule = await Test.createTestingModule({
10 | imports: [AppModule],
11 | }).compile();
12 |
13 | app = moduleFixture.createNestApplication();
14 | await app.init();
15 | });
16 |
17 | it('/ (GET)', () => {
18 | return request(app.getHttpServer())
19 | .get('/')
20 | .expect(200)
21 | .expect('Hello World!');
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/Chapter10/bulma/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "sourceMap": true,
5 | "declaration": false,
6 | "moduleResolution": "node",
7 | "emitDecoratorMetadata": true,
8 | "experimentalDecorators": true,
9 | "importHelpers": true,
10 | "target": "es2015",
11 | "module": "esnext",
12 | "typeRoots": ["node_modules/@types"],
13 | "lib": ["es2017", "dom"],
14 | "skipLibCheck": true,
15 | "skipDefaultLibCheck": true,
16 | "baseUrl": ".",
17 | "paths": {
18 | "@ngprojects/bulma": ["libs/bulma/src/index.ts"]
19 | },
20 | "rootDir": "."
21 | },
22 | "exclude": ["node_modules", "tmp"]
23 | }
24 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/nav/nav.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
3 | import { Observable } from 'rxjs';
4 | import { map } from 'rxjs/operators';
5 |
6 | @Component({
7 | selector: 'es-nav',
8 | templateUrl: './nav.component.html',
9 | styleUrls: ['./nav.component.css']
10 | })
11 | export class NavComponent {
12 |
13 | isHandset$: Observable = this.breakpointObserver.observe(Breakpoints.Handset)
14 | .pipe(
15 | map(result => result.matches)
16 | );
17 |
18 | constructor(private breakpointObserver: BreakpointObserver) {}
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": ".",
5 | "outDir": "./dist/out-tsc",
6 | "sourceMap": true,
7 | "declaration": false,
8 | "module": "es2015",
9 | "moduleResolution": "node",
10 | "emitDecoratorMetadata": true,
11 | "experimentalDecorators": true,
12 | "importHelpers": true,
13 | "target": "es5",
14 | "typeRoots": ["node_modules/@types"],
15 | "lib": ["es2018", "dom"],
16 | "paths": {
17 | "@ngprojects/*": ["libs/*"],
18 | "@ngprojects/shared": ["libs/shared/src/index.ts"],
19 | "@ngprojects/auth": ["libs/auth/src/index.ts"]
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Chapter10/bulma/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # IDEs and editors
12 | /.idea
13 | .project
14 | .classpath
15 | .c9/
16 | *.launch
17 | .settings/
18 | *.sublime-workspace
19 |
20 | # IDE - VSCode
21 | .vscode/*
22 | !.vscode/settings.json
23 | !.vscode/tasks.json
24 | !.vscode/launch.json
25 | !.vscode/extensions.json
26 |
27 | # misc
28 | /.sass-cache
29 | /connect.lock
30 | /coverage
31 | /libpeerconnection.log
32 | npm-debug.log
33 | yarn-error.log
34 | testem.log
35 | /typings
36 |
37 | # System Files
38 | .DS_Store
39 | Thumbs.db
40 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/rooms-and-baths.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 | import { IAppointment } from './appointment.model';
3 |
4 | @Pipe({
5 | name: 'roomsAndBaths'
6 | })
7 | export class RoomsAndBathsPipe implements PipeTransform {
8 |
9 | transform(value: IAppointment): any {
10 | const count = value.units.reduce((acc, curr) => {
11 | if (curr.type === 'room') {
12 | acc.beds += 1;
13 | }
14 | if (curr.type === 'bath') {
15 | acc.baths += 1;
16 | }
17 | return acc;
18 | }, {
19 | beds: 0,
20 | baths: 0
21 | });
22 | return `${count.beds} BD ${count.baths} BT`;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/Chapter11/ngx-behance/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule } from '@angular/core';
3 | import { HttpClientModule, HttpClientJsonpModule } from '@angular/common/http';
4 |
5 | import { AppRoutingModule } from './app-routing.module';
6 | import { AppComponent } from './app.component';
7 | import { ColorNamerPipe } from './color-namer.pipe';
8 |
9 | @NgModule({
10 | declarations: [
11 | AppComponent,
12 | ],
13 | imports: [
14 | BrowserModule,
15 | AppRoutingModule,
16 | HttpClientModule,
17 | HttpClientJsonpModule
18 | ],
19 | providers: [],
20 | bootstrap: [AppComponent]
21 | })
22 | export class AppModule { }
23 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/nav/nav.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
3 | import { Observable } from 'rxjs';
4 | import { map, shareReplay } from 'rxjs/operators';
5 |
6 | @Component({
7 | selector: 'es-nav',
8 | templateUrl: './nav.component.html',
9 | styleUrls: ['./nav.component.css']
10 | })
11 | export class NavComponent {
12 |
13 | isHandset$: Observable = this.breakpointObserver.observe(Breakpoints.Handset)
14 | .pipe(
15 | map(result => result.matches),
16 | shareReplay()
17 | );
18 |
19 | constructor(private breakpointObserver: BreakpointObserver) {}
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter10/bulma/apps/demo-e2e/src/support/index.ts:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This example support/index.js is processed and
3 | // loaded automatically before your test files.
4 | //
5 | // This is a great place to put global configuration and
6 | // behavior that modifies Cypress.
7 | //
8 | // You can change the location of this file or turn off
9 | // automatically serving support files with the
10 | // 'supportFile' configuration option.
11 | //
12 | // You can read more here:
13 | // https://on.cypress.io/configuration
14 | // ***********************************************************
15 |
16 | // Import commands.js using ES2015 syntax:
17 | import './commands';
18 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-api/src/app/products/products.controller.ts:
--------------------------------------------------------------------------------
1 | import { Get, Controller, Post, UseGuards } from '@nestjs/common';
2 | import { ProductsService } from './products.service';
3 |
4 | const _ = require('lodash');
5 |
6 | @Controller('products')
7 | export class ProductsController {
8 | constructor(private readonly productsService: ProductsService) {}
9 |
10 | @Get()
11 | getProducts(): any {
12 | return this.productsService.findAll().then(products => {
13 | return products.map(product => _.omit(product.toJSON(), ['sales']));
14 | });
15 | }
16 |
17 | @Get('/secure')
18 | getProductsWithSalesData() {
19 | return this.productsService.findAll();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/post/post.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { ActivatedRoute } from '@angular/router';
3 | import { WordpressService } from '../core/wordpress.service';
4 |
5 | @Component({
6 | selector: 'pb-post',
7 | templateUrl: './post.component.html',
8 | styleUrls: ['./post.component.scss']
9 | })
10 | export class PostComponent implements OnInit {
11 | post$ = this.wordpressService.post$;
12 |
13 | constructor(private route: ActivatedRoute, private wordpressService: WordpressService) { }
14 |
15 | ngOnInit() {
16 | this.route.params.subscribe(params => {
17 | this.wordpressService.getPost(params.id);
18 | });
19 | }
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Chapter09/app/news/news.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from "@angular/core";
2 | import { AppService } from "../app.service";
3 |
4 | @Component({
5 | selector: "News",
6 | moduleId: module.id,
7 | templateUrl: "./news.component.html",
8 | styleUrls: ['./news.component.css']
9 | })
10 | export class NewsComponent implements OnInit {
11 |
12 | selectedListPickerIndex: number = 0;
13 |
14 | public data;
15 |
16 | constructor(
17 | private appService: AppService
18 | ) { }
19 |
20 | ngOnInit(): void {
21 | this.getData();
22 | }
23 |
24 | getData() {
25 | this.appService.getNews()
26 | .subscribe((response: any) => {
27 | this.data = response.articles;
28 | });
29 | }
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/app/home/home.component.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/Chapter05/electronic-store/src/app/add-to-cart/add-to-cart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'es-add-to-cart',
5 | templateUrl: './add-to-cart.component.html',
6 | styleUrls: ['./add-to-cart.component.css']
7 | })
8 | export class AddToCartComponent implements OnInit {
9 |
10 | @Input() count = 0;
11 | @Output() updateCount = new EventEmitter();
12 |
13 | constructor() { }
14 |
15 | ngOnInit() {
16 | }
17 |
18 | add() {
19 | this.count++;
20 | this.updateCount.emit(this.count);
21 | }
22 |
23 | remove() {
24 | this.count--;
25 | this.updateCount.emit(this.count);
26 | }
27 |
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Chapter07/personal-blog/src/app/home/home.component.html:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/es-admin-e2e/src/support/index.ts:
--------------------------------------------------------------------------------
1 | // ***********************************************************
2 | // This example support/index.js is processed and
3 | // loaded automatically before your test files.
4 | //
5 | // This is a great place to put global configuration and
6 | // behavior that modifies Cypress.
7 | //
8 | // You can change the location of this file or turn off
9 | // automatically serving support files with the
10 | // 'supportFile' configuration option.
11 | //
12 | // You can read more here:
13 | // https://on.cypress.io/configuration
14 | // ***********************************************************
15 |
16 | // Import commands.js using ES2015 syntax:
17 | import './commands';
18 |
--------------------------------------------------------------------------------
/Chapter09/app/app.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from "@angular/core";
2 | import { HttpClient } from '@angular/common/http';
3 | import { tap } from 'rxjs/operators';
4 |
5 | const API_URL = 'https://demo7831153.mockable.io';
6 |
7 | @Injectable()
8 | export class AppService {
9 | constructor(private http: HttpClient) { }
10 | language = "English";
11 | news;
12 |
13 | getUrl() {
14 | if (this.language === 'English') {
15 | return `${API_URL}/en`;
16 | }
17 |
18 | return `${API_URL}/es`;
19 | }
20 |
21 | getNews() {
22 | const url = this.getUrl();
23 | return this.http.get(url).pipe(
24 | tap((news: any) => this.news = news.articles),
25 | );
26 | }
27 | }
--------------------------------------------------------------------------------
/Chapter05/es-api/src/app.controller.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import { AppController } from './app.controller';
3 | import { AppService } from './app.service';
4 |
5 | describe('AppController', () => {
6 | let appController: AppController;
7 |
8 | beforeEach(async () => {
9 | const app: TestingModule = await Test.createTestingModule({
10 | controllers: [AppController],
11 | providers: [AppService],
12 | }).compile();
13 |
14 | appController = app.get(AppController);
15 | });
16 |
17 | describe('root', () => {
18 | it('should return "Hello World!"', () => {
19 | expect(appController.getHello()).toBe('Hello World!');
20 | });
21 | });
22 | });
23 |
--------------------------------------------------------------------------------
/Chapter06/apartment-auditing/src/app/home/home.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { FormsModule } from '@angular/forms';
4 | import { IonicModule } from '@ionic/angular';
5 | import { RouterModule } from '@angular/router';
6 |
7 | import { HomePage } from './home.page';
8 | import { RoomsAndBathsPipe } from '../rooms-and-baths.pipe';
9 |
10 | @NgModule({
11 | imports: [
12 | CommonModule,
13 | FormsModule,
14 | IonicModule,
15 | RouterModule.forChild([
16 | {
17 | path: '',
18 | component: HomePage
19 | }
20 | ])
21 | ],
22 | declarations: [HomePage, RoomsAndBathsPipe]
23 | })
24 | export class HomePageModule {}
25 |
--------------------------------------------------------------------------------
/Chapter08/electronic-store/apps/electronic-store/src/app/add-to-cart/add-to-cart.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'es-add-to-cart',
5 | templateUrl: './add-to-cart.component.html',
6 | styleUrls: ['./add-to-cart.component.css']
7 | })
8 | export class AddToCartComponent implements OnInit {
9 |
10 | @Input() count = 0;
11 | @Output() updateCount = new EventEmitter();
12 |
13 | constructor() { }
14 |
15 | ngOnInit() {
16 | }
17 |
18 | add() {
19 | this.count++;
20 | this.updateCount.emit(this.count);
21 | }
22 |
23 | remove() {
24 | this.count--;
25 | this.updateCount.emit(this.count);
26 | }
27 |
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Chapter08/es-api/src/app.controller.spec.ts:
--------------------------------------------------------------------------------
1 | import { Test, TestingModule } from '@nestjs/testing';
2 | import { AppController } from './app.controller';
3 | import { AppService } from './app.service';
4 |
5 | describe('AppController', () => {
6 | let appController: AppController;
7 |
8 | beforeEach(async () => {
9 | const app: TestingModule = await Test.createTestingModule({
10 | controllers: [AppController],
11 | providers: [AppService],
12 | }).compile();
13 |
14 | appController = app.get(AppController);
15 | });
16 |
17 | describe('root', () => {
18 | it('should return "Hello World!"', () => {
19 | expect(appController.getHello()).toBe('Hello World!');
20 | });
21 | });
22 | });
23 |
--------------------------------------------------------------------------------
/Chapter02/ng-flashcards/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/Chapter03/personal-blog/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/Chapter04/inventory-app/src/app/delete-product-modal/delete-product-modal.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'in-delete-product-modal',
5 | templateUrl: './delete-product-modal.component.html',
6 | styleUrls: ['./delete-product-modal.component.scss']
7 | })
8 | export class DeleteProductModalComponent implements OnInit {
9 |
10 | @Input() product;
11 | @Output() cancel = new EventEmitter();
12 | @Output() confirm = new EventEmitter();
13 |
14 | constructor() { }
15 |
16 | ngOnInit() {
17 | }
18 |
19 | cancelDelete() {
20 | this.cancel.emit();
21 | }
22 |
23 | confirmDelete() {
24 | this.confirm.emit();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------