├── .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 |

3 | {{post.title.rendered}} 4 |

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 |

3 | {{post.title.rendered}} 4 |

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 | 7 | 8 |
-------------------------------------------------------------------------------- /Chapter04/inventory-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

Inventory App

5 |
6 |
7 |
8 |
9 | 10 |
11 |
12 |
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 |
2 |
3 | 11 |
12 |
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 |
3 |

Electronic Store - Admin Portal

4 |

5 | Admin Portal is only for the authorized users. Administrator users can use this application to do advanced stuff and get details about the sales etc in this portal. 6 |

7 |
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 |
9 | 10 | Save 11 | 12 |
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 |
2 |
3 |
4 |
5 |

6 | {{post.title.rendered}} 7 |

8 |
{{post.date | date}}
9 |

10 | Continue reading 11 |
12 |
13 |
14 |
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 |
2 |
3 |
4 |
5 |

6 | {{post.title.rendered}} 7 |

8 |
{{post.date | date}}
9 |

10 | Continue reading 11 |
12 |
13 |
14 |
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 | --------------------------------------------------------------------------------