├── .gitignore ├── Chapter1 ├── install-mac-deps.sh ├── install-sts.ps1 └── install-windows-deps.ps1 ├── Chapter10 └── lemon-mart │ ├── .circleci │ └── config.yml │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── Dockerfile.integration │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── app │ │ ├── app-material.module.spec.ts │ │ ├── app-material.module.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── auth-guard.service.spec.ts │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth-http-interceptor.ts │ │ │ ├── auth.service.fake.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── cache.service.ts │ │ │ └── role.enum.ts │ │ ├── common │ │ │ ├── common.testing.ts │ │ │ ├── common.ts │ │ │ ├── simple-dialog │ │ │ │ ├── simple-dialog.component.spec.ts │ │ │ │ └── simple-dialog.component.ts │ │ │ ├── ui.service.spec.ts │ │ │ ├── ui.service.ts │ │ │ └── validations.ts │ │ ├── home │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── inventory │ │ │ ├── categories │ │ │ │ ├── categories.component.css │ │ │ │ ├── categories.component.html │ │ │ │ ├── categories.component.spec.ts │ │ │ │ └── categories.component.ts │ │ │ ├── inventory-home │ │ │ │ ├── inventory-home.component.spec.ts │ │ │ │ └── inventory-home.component.ts │ │ │ ├── inventory-routing.module.ts │ │ │ ├── inventory.component.spec.ts │ │ │ ├── inventory.component.ts │ │ │ ├── inventory.module.spec.ts │ │ │ ├── inventory.module.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ └── stock-entry │ │ │ │ ├── stock-entry.component.css │ │ │ │ ├── stock-entry.component.html │ │ │ │ ├── stock-entry.component.spec.ts │ │ │ │ └── stock-entry.component.ts │ │ ├── login │ │ │ ├── login.component.html │ │ │ ├── login.component.spec.ts │ │ │ └── login.component.ts │ │ ├── manager │ │ │ ├── manager-home │ │ │ │ ├── manager-home.component.spec.ts │ │ │ │ └── manager-home.component.ts │ │ │ ├── manager-material.module.spec.ts │ │ │ ├── manager-material.module.ts │ │ │ ├── manager-routing.module.ts │ │ │ ├── manager.component.spec.ts │ │ │ ├── manager.component.ts │ │ │ ├── manager.module.spec.ts │ │ │ ├── manager.module.ts │ │ │ ├── receipt-lookup │ │ │ │ ├── receipt-lookup.component.css │ │ │ │ ├── receipt-lookup.component.html │ │ │ │ ├── receipt-lookup.component.spec.ts │ │ │ │ └── receipt-lookup.component.ts │ │ │ ├── user-management │ │ │ │ ├── user-management.component.spec.ts │ │ │ │ └── user-management.component.ts │ │ │ └── user-table │ │ │ │ ├── user-table.component.css │ │ │ │ ├── user-table.component.html │ │ │ │ ├── user-table.component.spec.ts │ │ │ │ └── user-table.component.ts │ │ ├── navigation-menu │ │ │ ├── navigation-menu.component.spec.ts │ │ │ └── navigation-menu.component.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── pos │ │ │ ├── pos-routing.module.ts │ │ │ ├── pos.module.spec.ts │ │ │ ├── pos.module.ts │ │ │ └── pos │ │ │ │ ├── pos.component.css │ │ │ │ ├── pos.component.html │ │ │ │ ├── pos.component.spec.ts │ │ │ │ └── pos.component.ts │ │ ├── shared-components.module.spec.ts │ │ ├── shared-components.module.ts │ │ └── user │ │ │ ├── logout │ │ │ ├── logout.component.spec.ts │ │ │ └── logout.component.ts │ │ │ ├── profile │ │ │ ├── data.ts │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ │ ├── user-material.module.spec.ts │ │ │ ├── user-material.module.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user.module.spec.ts │ │ │ ├── user.module.ts │ │ │ ├── user │ │ │ ├── user.resolve.ts │ │ │ ├── user.service.fake.ts │ │ │ ├── user.service.spec.ts │ │ │ ├── user.service.ts │ │ │ └── user.ts │ │ │ └── view-user │ │ │ ├── view-user.component.spec.ts │ │ │ └── view-user.component.ts │ ├── apple-touch-icon.png │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── icons │ │ │ └── lemon.svg │ ├── browserconfig.xml │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── lemonmart-theme.scss │ ├── main.ts │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── polyfills.ts │ ├── safari-pinned-tab.svg │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter11 └── lemon-mart │ ├── .circleci │ └── config.yml │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── Dockerfile.integration │ ├── Dockerfile.node │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── app │ │ ├── app-material.module.spec.ts │ │ ├── app-material.module.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── auth-guard.service.spec.ts │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth-http-interceptor.ts │ │ │ ├── auth.service.fake.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── cache.service.ts │ │ │ └── role.enum.ts │ │ ├── common │ │ │ ├── common.testing.ts │ │ │ ├── common.ts │ │ │ ├── simple-dialog │ │ │ │ ├── simple-dialog.component.spec.ts │ │ │ │ └── simple-dialog.component.ts │ │ │ ├── ui.service.spec.ts │ │ │ ├── ui.service.ts │ │ │ └── validations.ts │ │ ├── home │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── inventory │ │ │ ├── categories │ │ │ │ ├── categories.component.css │ │ │ │ ├── categories.component.html │ │ │ │ ├── categories.component.spec.ts │ │ │ │ └── categories.component.ts │ │ │ ├── inventory-home │ │ │ │ ├── inventory-home.component.spec.ts │ │ │ │ └── inventory-home.component.ts │ │ │ ├── inventory-routing.module.ts │ │ │ ├── inventory.component.spec.ts │ │ │ ├── inventory.component.ts │ │ │ ├── inventory.module.spec.ts │ │ │ ├── inventory.module.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ └── stock-entry │ │ │ │ ├── stock-entry.component.css │ │ │ │ ├── stock-entry.component.html │ │ │ │ ├── stock-entry.component.spec.ts │ │ │ │ └── stock-entry.component.ts │ │ ├── login │ │ │ ├── login.component.html │ │ │ ├── login.component.spec.ts │ │ │ └── login.component.ts │ │ ├── manager │ │ │ ├── manager-home │ │ │ │ ├── manager-home.component.spec.ts │ │ │ │ └── manager-home.component.ts │ │ │ ├── manager-material.module.spec.ts │ │ │ ├── manager-material.module.ts │ │ │ ├── manager-routing.module.ts │ │ │ ├── manager.component.spec.ts │ │ │ ├── manager.component.ts │ │ │ ├── manager.module.spec.ts │ │ │ ├── manager.module.ts │ │ │ ├── receipt-lookup │ │ │ │ ├── receipt-lookup.component.css │ │ │ │ ├── receipt-lookup.component.html │ │ │ │ ├── receipt-lookup.component.spec.ts │ │ │ │ └── receipt-lookup.component.ts │ │ │ ├── user-management │ │ │ │ ├── user-management.component.spec.ts │ │ │ │ └── user-management.component.ts │ │ │ └── user-table │ │ │ │ ├── user-table.component.css │ │ │ │ ├── user-table.component.html │ │ │ │ ├── user-table.component.spec.ts │ │ │ │ └── user-table.component.ts │ │ ├── navigation-menu │ │ │ ├── navigation-menu.component.spec.ts │ │ │ └── navigation-menu.component.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── pos │ │ │ ├── pos-routing.module.ts │ │ │ ├── pos.module.spec.ts │ │ │ ├── pos.module.ts │ │ │ └── pos │ │ │ │ ├── pos.component.css │ │ │ │ ├── pos.component.html │ │ │ │ ├── pos.component.spec.ts │ │ │ │ └── pos.component.ts │ │ ├── shared-components.module.spec.ts │ │ ├── shared-components.module.ts │ │ └── user │ │ │ ├── logout │ │ │ ├── logout.component.spec.ts │ │ │ └── logout.component.ts │ │ │ ├── profile │ │ │ ├── data.ts │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ │ ├── user-material.module.spec.ts │ │ │ ├── user-material.module.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user.module.spec.ts │ │ │ ├── user.module.ts │ │ │ ├── user │ │ │ ├── user.resolve.ts │ │ │ ├── user.service.fake.ts │ │ │ ├── user.service.spec.ts │ │ │ ├── user.service.ts │ │ │ └── user.ts │ │ │ └── view-user │ │ │ ├── view-user.component.spec.ts │ │ │ └── view-user.component.ts │ ├── apple-touch-icon.png │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── icons │ │ │ └── lemon.svg │ ├── browserconfig.xml │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── lemonmart-theme.scss │ ├── main.ts │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── polyfills.ts │ ├── safari-pinned-tab.svg │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter12 └── lemon-mart │ ├── .circleci │ └── config.yml │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── Dockerfile.integration │ ├── Dockerfile.node │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── app │ │ ├── app-material.module.spec.ts │ │ ├── app-material.module.ts │ │ ├── app-routing.module.ts │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── auth-guard.service.spec.ts │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth-http-interceptor.ts │ │ │ ├── auth.service.fake.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── cache.service.ts │ │ │ └── role.enum.ts │ │ ├── common │ │ │ ├── common.testing.ts │ │ │ ├── common.ts │ │ │ ├── simple-dialog │ │ │ │ ├── simple-dialog.component.spec.ts │ │ │ │ └── simple-dialog.component.ts │ │ │ ├── ui.service.spec.ts │ │ │ ├── ui.service.ts │ │ │ └── validations.ts │ │ ├── home │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── inventory │ │ │ ├── categories │ │ │ │ ├── categories.component.css │ │ │ │ ├── categories.component.html │ │ │ │ ├── categories.component.spec.ts │ │ │ │ └── categories.component.ts │ │ │ ├── inventory-home │ │ │ │ ├── inventory-home.component.spec.ts │ │ │ │ └── inventory-home.component.ts │ │ │ ├── inventory-routing.module.ts │ │ │ ├── inventory.component.spec.ts │ │ │ ├── inventory.component.ts │ │ │ ├── inventory.module.spec.ts │ │ │ ├── inventory.module.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ └── stock-entry │ │ │ │ ├── stock-entry.component.css │ │ │ │ ├── stock-entry.component.html │ │ │ │ ├── stock-entry.component.spec.ts │ │ │ │ └── stock-entry.component.ts │ │ ├── login │ │ │ ├── login.component.html │ │ │ ├── login.component.spec.ts │ │ │ └── login.component.ts │ │ ├── manager │ │ │ ├── manager-home │ │ │ │ ├── manager-home.component.spec.ts │ │ │ │ └── manager-home.component.ts │ │ │ ├── manager-material.module.spec.ts │ │ │ ├── manager-material.module.ts │ │ │ ├── manager-routing.module.ts │ │ │ ├── manager.component.spec.ts │ │ │ ├── manager.component.ts │ │ │ ├── manager.module.spec.ts │ │ │ ├── manager.module.ts │ │ │ ├── receipt-lookup │ │ │ │ ├── receipt-lookup.component.css │ │ │ │ ├── receipt-lookup.component.html │ │ │ │ ├── receipt-lookup.component.spec.ts │ │ │ │ └── receipt-lookup.component.ts │ │ │ ├── user-management │ │ │ │ ├── user-management.component.spec.ts │ │ │ │ └── user-management.component.ts │ │ │ └── user-table │ │ │ │ ├── user-table.component.css │ │ │ │ ├── user-table.component.html │ │ │ │ ├── user-table.component.spec.ts │ │ │ │ └── user-table.component.ts │ │ ├── navigation-menu │ │ │ ├── navigation-menu.component.spec.ts │ │ │ └── navigation-menu.component.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── pos │ │ │ ├── pos-routing.module.ts │ │ │ ├── pos.module.spec.ts │ │ │ ├── pos.module.ts │ │ │ └── pos │ │ │ │ ├── pos.component.css │ │ │ │ ├── pos.component.html │ │ │ │ ├── pos.component.spec.ts │ │ │ │ └── pos.component.ts │ │ ├── shared-components.module.spec.ts │ │ ├── shared-components.module.ts │ │ └── user │ │ │ ├── logout │ │ │ ├── logout.component.spec.ts │ │ │ └── logout.component.ts │ │ │ ├── profile │ │ │ ├── data.ts │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ │ ├── user-material.module.spec.ts │ │ │ ├── user-material.module.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user.module.spec.ts │ │ │ ├── user.module.ts │ │ │ ├── user │ │ │ ├── user.resolve.ts │ │ │ ├── user.service.fake.ts │ │ │ ├── user.service.spec.ts │ │ │ ├── user.service.ts │ │ │ └── user.ts │ │ │ └── view-user │ │ │ ├── view-user.component.spec.ts │ │ │ └── view-user.component.ts │ ├── apple-touch-icon.png │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── icons │ │ │ └── lemon.svg │ ├── browserconfig.xml │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── lemonmart-theme.scss │ ├── main.ts │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── polyfills.ts │ ├── safari-pinned-tab.svg │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter2 └── local-weather-app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── current-weather │ │ │ ├── current-weather.component.css │ │ │ ├── current-weather.component.html │ │ │ ├── current-weather.component.spec.ts │ │ │ └── current-weather.component.ts │ │ ├── interfaces.ts │ │ └── weather │ │ │ ├── weather.service.spec.ts │ │ │ └── weather.service.ts │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── sunny.svg │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter3 └── local-weather-app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── now │ └── Dockerfile │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.css │ │ ├── app.component.html │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── current-weather │ │ │ ├── current-weather.component.css │ │ │ ├── current-weather.component.html │ │ │ ├── current-weather.component.spec.ts │ │ │ └── current-weather.component.ts │ │ ├── interfaces.ts │ │ └── weather │ │ │ ├── weather.service.fake.ts │ │ │ ├── weather.service.spec.ts │ │ │ └── weather.service.ts │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── sunny.svg │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter4 └── readme.txt ├── Chapter5 └── local-weather-app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── now │ └── Dockerfile │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── current-weather │ │ │ ├── current-weather.component.css │ │ │ ├── current-weather.component.html │ │ │ ├── current-weather.component.spec.ts │ │ │ └── current-weather.component.ts │ │ ├── interfaces.ts │ │ ├── material.module.spec.ts │ │ ├── material.module.ts │ │ └── weather │ │ │ ├── weather.service.fake.ts │ │ │ ├── weather.service.spec.ts │ │ │ └── weather.service.ts │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── sunny.svg │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── localcast-theme.scss │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter6 └── local-weather-app │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── now │ └── Dockerfile │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── app │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── city-search-tpldriven │ │ │ ├── city-search-tpldriven.component.css │ │ │ ├── city-search-tpldriven.component.html │ │ │ ├── city-search-tpldriven.component.spec.ts │ │ │ └── city-search-tpldriven.component.ts │ │ ├── city-search │ │ │ ├── city-search.component.css │ │ │ ├── city-search.component.html │ │ │ ├── city-search.component.spec.ts │ │ │ └── city-search.component.ts │ │ ├── current-weather │ │ │ ├── current-weather.component.css │ │ │ ├── current-weather.component.html │ │ │ ├── current-weather.component.spec.ts │ │ │ └── current-weather.component.ts │ │ ├── interfaces.ts │ │ ├── material.module.spec.ts │ │ ├── material.module.ts │ │ └── weather │ │ │ ├── weather.service.fake.ts │ │ │ ├── weather.service.spec.ts │ │ │ └── weather.service.ts │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── sunny.svg │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── localcast-theme.scss │ ├── main.ts │ ├── polyfills.ts │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter7 └── lemon-mart │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── common │ │ │ └── common.testing.ts │ │ ├── home │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── inventory │ │ │ ├── categories │ │ │ │ ├── categories.component.css │ │ │ │ ├── categories.component.html │ │ │ │ ├── categories.component.spec.ts │ │ │ │ └── categories.component.ts │ │ │ ├── inventory-home │ │ │ │ ├── inventory-home.component.spec.ts │ │ │ │ └── inventory-home.component.ts │ │ │ ├── inventory-routing.module.ts │ │ │ ├── inventory.component.spec.ts │ │ │ ├── inventory.component.ts │ │ │ ├── inventory.module.spec.ts │ │ │ ├── inventory.module.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ └── stock-entry │ │ │ │ ├── stock-entry.component.css │ │ │ │ ├── stock-entry.component.html │ │ │ │ ├── stock-entry.component.spec.ts │ │ │ │ └── stock-entry.component.ts │ │ ├── manager │ │ │ ├── manager-home │ │ │ │ ├── manager-home.component.spec.ts │ │ │ │ └── manager-home.component.ts │ │ │ ├── manager-routing.module.ts │ │ │ ├── manager.component.spec.ts │ │ │ ├── manager.component.ts │ │ │ ├── manager.module.spec.ts │ │ │ ├── manager.module.ts │ │ │ ├── receipt-lookup │ │ │ │ ├── receipt-lookup.component.css │ │ │ │ ├── receipt-lookup.component.html │ │ │ │ ├── receipt-lookup.component.spec.ts │ │ │ │ └── receipt-lookup.component.ts │ │ │ └── user-management │ │ │ │ ├── user-management.component.css │ │ │ │ ├── user-management.component.html │ │ │ │ ├── user-management.component.spec.ts │ │ │ │ └── user-management.component.ts │ │ ├── material.module.spec.ts │ │ ├── material.module.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── pos │ │ │ ├── pos-routing.module.ts │ │ │ ├── pos.module.spec.ts │ │ │ ├── pos.module.ts │ │ │ └── pos │ │ │ │ ├── pos.component.css │ │ │ │ ├── pos.component.html │ │ │ │ ├── pos.component.spec.ts │ │ │ │ └── pos.component.ts │ │ └── user │ │ │ ├── logout │ │ │ ├── logout.component.spec.ts │ │ │ └── logout.component.ts │ │ │ ├── navigation-menu │ │ │ ├── navigation-menu.component.spec.ts │ │ │ └── navigation-menu.component.ts │ │ │ ├── profile │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user.module.spec.ts │ │ │ └── user.module.ts │ ├── apple-touch-icon.png │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── icons │ │ │ └── lemon.svg │ ├── browserconfig.xml │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── lemonmart-theme.scss │ ├── main.ts │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── polyfills.ts │ ├── safari-pinned-tab.svg │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter8 ├── lemon-mart-swagger-server │ ├── .dockerignore │ ├── .gitattributes │ ├── .gitignore │ ├── .vscode │ │ └── extensions.json │ ├── Dockerfile │ ├── LICENSE │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── server │ │ ├── .swagger-codegen-ignore │ │ ├── .swagger-codegen │ │ │ └── VERSION │ │ ├── README.md │ │ ├── api │ │ │ └── swagger.yaml │ │ ├── controllers │ │ │ └── Default.js │ │ ├── index.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── service │ │ │ └── DefaultService.js │ │ └── utils │ │ │ └── writer.js │ ├── swagger.2.yaml │ └── swagger.oas3.yaml └── lemon-mart │ ├── .circleci │ └── config.yml │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── Dockerfile.integration │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── common │ │ │ └── common.testing.ts │ │ ├── home │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── inventory │ │ │ ├── categories │ │ │ │ ├── categories.component.css │ │ │ │ ├── categories.component.html │ │ │ │ ├── categories.component.spec.ts │ │ │ │ └── categories.component.ts │ │ │ ├── inventory-home │ │ │ │ ├── inventory-home.component.spec.ts │ │ │ │ └── inventory-home.component.ts │ │ │ ├── inventory-routing.module.ts │ │ │ ├── inventory.component.spec.ts │ │ │ ├── inventory.component.ts │ │ │ ├── inventory.module.spec.ts │ │ │ ├── inventory.module.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ └── stock-entry │ │ │ │ ├── stock-entry.component.css │ │ │ │ ├── stock-entry.component.html │ │ │ │ ├── stock-entry.component.spec.ts │ │ │ │ └── stock-entry.component.ts │ │ ├── manager │ │ │ ├── manager-home │ │ │ │ ├── manager-home.component.spec.ts │ │ │ │ └── manager-home.component.ts │ │ │ ├── manager-routing.module.ts │ │ │ ├── manager.component.spec.ts │ │ │ ├── manager.component.ts │ │ │ ├── manager.module.spec.ts │ │ │ ├── manager.module.ts │ │ │ ├── receipt-lookup │ │ │ │ ├── receipt-lookup.component.css │ │ │ │ ├── receipt-lookup.component.html │ │ │ │ ├── receipt-lookup.component.spec.ts │ │ │ │ └── receipt-lookup.component.ts │ │ │ └── user-management │ │ │ │ ├── user-management.component.css │ │ │ │ ├── user-management.component.html │ │ │ │ ├── user-management.component.spec.ts │ │ │ │ └── user-management.component.ts │ │ ├── material.module.spec.ts │ │ ├── material.module.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── pos │ │ │ ├── pos-routing.module.ts │ │ │ ├── pos.module.spec.ts │ │ │ ├── pos.module.ts │ │ │ └── pos │ │ │ │ ├── pos.component.css │ │ │ │ ├── pos.component.html │ │ │ │ ├── pos.component.spec.ts │ │ │ │ └── pos.component.ts │ │ └── user │ │ │ ├── logout │ │ │ ├── logout.component.spec.ts │ │ │ └── logout.component.ts │ │ │ ├── navigation-menu │ │ │ ├── navigation-menu.component.spec.ts │ │ │ └── navigation-menu.component.ts │ │ │ ├── profile │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user.module.spec.ts │ │ │ └── user.module.ts │ ├── apple-touch-icon.png │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── icons │ │ │ └── lemon.svg │ ├── browserconfig.xml │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── lemonmart-theme.scss │ ├── main.ts │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── polyfills.ts │ ├── safari-pinned-tab.svg │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── Chapter9 └── lemon-mart │ ├── .circleci │ └── config.yml │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitignore │ ├── .vscode │ ├── extensions.json │ ├── launch.json │ └── settings.json │ ├── Dockerfile │ ├── Dockerfile.integration │ ├── README.md │ ├── angular.json │ ├── dev-norms.md │ ├── e2e │ ├── protractor.conf.js │ ├── src │ │ ├── app.e2e-spec.ts │ │ └── app.po.ts │ └── tsconfig.e2e.json │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── app │ │ ├── app-routing.module.ts │ │ ├── app.component.spec.ts │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ ├── auth │ │ │ ├── auth-guard.service.spec.ts │ │ │ ├── auth-guard.service.ts │ │ │ ├── auth-http-interceptor.ts │ │ │ ├── auth.service.fake.ts │ │ │ ├── auth.service.spec.ts │ │ │ ├── auth.service.ts │ │ │ ├── cache.service.ts │ │ │ └── role.enum.ts │ │ ├── common │ │ │ ├── common.testing.ts │ │ │ ├── common.ts │ │ │ ├── simple-dialog │ │ │ │ ├── simple-dialog.component.spec.ts │ │ │ │ └── simple-dialog.component.ts │ │ │ ├── ui.service.spec.ts │ │ │ ├── ui.service.ts │ │ │ └── validations.ts │ │ ├── home │ │ │ ├── home.component.spec.ts │ │ │ └── home.component.ts │ │ ├── inventory │ │ │ ├── categories │ │ │ │ ├── categories.component.css │ │ │ │ ├── categories.component.html │ │ │ │ ├── categories.component.spec.ts │ │ │ │ └── categories.component.ts │ │ │ ├── inventory-home │ │ │ │ ├── inventory-home.component.spec.ts │ │ │ │ └── inventory-home.component.ts │ │ │ ├── inventory-routing.module.ts │ │ │ ├── inventory.component.spec.ts │ │ │ ├── inventory.component.ts │ │ │ ├── inventory.module.spec.ts │ │ │ ├── inventory.module.ts │ │ │ ├── products │ │ │ │ ├── products.component.css │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.spec.ts │ │ │ │ └── products.component.ts │ │ │ └── stock-entry │ │ │ │ ├── stock-entry.component.css │ │ │ │ ├── stock-entry.component.html │ │ │ │ ├── stock-entry.component.spec.ts │ │ │ │ └── stock-entry.component.ts │ │ ├── login │ │ │ ├── login.component.html │ │ │ ├── login.component.spec.ts │ │ │ └── login.component.ts │ │ ├── manager │ │ │ ├── manager-home │ │ │ │ ├── manager-home.component.spec.ts │ │ │ │ └── manager-home.component.ts │ │ │ ├── manager-routing.module.ts │ │ │ ├── manager.component.spec.ts │ │ │ ├── manager.component.ts │ │ │ ├── manager.module.spec.ts │ │ │ ├── manager.module.ts │ │ │ ├── receipt-lookup │ │ │ │ ├── receipt-lookup.component.css │ │ │ │ ├── receipt-lookup.component.html │ │ │ │ ├── receipt-lookup.component.spec.ts │ │ │ │ └── receipt-lookup.component.ts │ │ │ └── user-management │ │ │ │ ├── user-management.component.css │ │ │ │ ├── user-management.component.html │ │ │ │ ├── user-management.component.spec.ts │ │ │ │ └── user-management.component.ts │ │ ├── material.module.spec.ts │ │ ├── material.module.ts │ │ ├── navigation-menu │ │ │ ├── navigation-menu.component.spec.ts │ │ │ └── navigation-menu.component.ts │ │ ├── page-not-found │ │ │ ├── page-not-found.component.spec.ts │ │ │ └── page-not-found.component.ts │ │ ├── pos │ │ │ ├── pos-routing.module.ts │ │ │ ├── pos.module.spec.ts │ │ │ ├── pos.module.ts │ │ │ └── pos │ │ │ │ ├── pos.component.css │ │ │ │ ├── pos.component.html │ │ │ │ ├── pos.component.spec.ts │ │ │ │ └── pos.component.ts │ │ └── user │ │ │ ├── logout │ │ │ ├── logout.component.spec.ts │ │ │ └── logout.component.ts │ │ │ ├── profile │ │ │ ├── profile.component.css │ │ │ ├── profile.component.html │ │ │ ├── profile.component.spec.ts │ │ │ └── profile.component.ts │ │ │ ├── user-routing.module.ts │ │ │ ├── user.module.spec.ts │ │ │ └── user.module.ts │ ├── apple-touch-icon.png │ ├── assets │ │ ├── .gitkeep │ │ └── img │ │ │ └── icons │ │ │ └── lemon.svg │ ├── browserconfig.xml │ ├── browserslist │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── index.html │ ├── karma.conf.js │ ├── lemonmart-theme.scss │ ├── main.ts │ ├── manifest.json │ ├── mstile-144x144.png │ ├── mstile-150x150.png │ ├── mstile-310x150.png │ ├── mstile-310x310.png │ ├── mstile-70x70.png │ ├── polyfills.ts │ ├── safari-pinned-tab.svg │ ├── styles.css │ ├── test.ts │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tslint.json │ ├── tsconfig.json │ └── tslint.json ├── LICENSE └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist -------------------------------------------------------------------------------- /Chapter10/lemon-mart/.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: docker:17.12.0-ce-git 6 | working_directory: /usr/src 7 | steps: 8 | - checkout 9 | - setup_remote_docker: 10 | docker_layer_caching: false 11 | - run: 12 | name: Build Docker Image 13 | command: | 14 | docker build -f Dockerfile.integration . 15 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/.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/lemon-mart/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "johnpapa.angular-essentials", 4 | "PKief.material-icon-theme", 5 | "formulahendry.auto-close-tag", 6 | "PeterJausovec.vscode-docker", 7 | "eamodio.gitlens", 8 | "WallabyJs.quokka-vscode", 9 | "rbbit.typescript-hero", 10 | "DSKWRK.vscode-generate-getter-setter", 11 | "esbenp.prettier-vscode" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM duluca/minimal-node-web-server:8.11.1 2 | WORKDIR /usr/src/app 3 | COPY dist public 4 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/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.getParagraphText()).toEqual('LemonMart') 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/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 | getParagraphText() { 9 | return element(by.css('app-root mat-toolbar .mat-h2')).getText() 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/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/lemon-mart/src/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/android-chrome-192x192.png -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/android-chrome-512x512.png -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/app-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { AppMaterialModule } from './app-material.module' 2 | 3 | describe('MaterialModule', () => { 4 | let materialModule: AppMaterialModule 5 | 6 | beforeEach(() => { 7 | materialModule = new AppMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(materialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/auth/role.enum.ts: -------------------------------------------------------------------------------- 1 | export enum Role { 2 | None = 'none', 3 | Clerk = 'clerk', 4 | Cashier = 'cashier', 5 | Manager = 'manager', 6 | } 7 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/common/ui.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { inject, TestBed } from '@angular/core/testing' 2 | 3 | import { commonTestingModules } from './common.testing' 4 | import { UiService } from './ui.service' 5 | 6 | describe('UiService', () => { 7 | beforeEach(() => { 8 | TestBed.configureTestingModule({ 9 | providers: [UiService], 10 | imports: commonTestingModules, 11 | }) 12 | }) 13 | 14 | it( 15 | 'should be created', 16 | inject([UiService], (service: UiService) => { 17 | expect(service).toBeTruthy() 18 | }) 19 | ) 20 | }) 21 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/categories/categories.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/app/inventory/categories/categories.component.css -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/categories/categories.component.html: -------------------------------------------------------------------------------- 1 |
2 | categories works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/categories/categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-categories', 5 | templateUrl: './categories.component.html', 6 | styleUrls: ['./categories.component.css'], 7 | }) 8 | export class CategoriesComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/inventory-home/inventory-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-inventory-home', 5 | template: ` 6 |7 | inventory-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class InventoryHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/inventory.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { InventoryModule } from './inventory.module' 2 | 3 | describe('InventoryModule', () => { 4 | let inventoryModule: InventoryModule 5 | 6 | beforeEach(() => { 7 | inventoryModule = new InventoryModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(inventoryModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/app/inventory/products/products.component.css -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/products/products.component.html: -------------------------------------------------------------------------------- 1 |2 | products works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.css'], 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.html: -------------------------------------------------------------------------------- 1 |2 | stock-entry works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-stock-entry', 5 | templateUrl: './stock-entry.component.html', 6 | styleUrls: ['./stock-entry.component.css'], 7 | }) 8 | export class StockEntryComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/manager-home/manager-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-manager-home', 5 | template: ` 6 |7 | manager-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class ManagerHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/manager-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerMaterialModule } from './manager-material.module' 2 | 3 | describe('ManagerMaterialModule', () => { 4 | let managerMaterialModule: ManagerMaterialModule 5 | 6 | beforeEach(() => { 7 | managerMaterialModule = new ManagerMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerMaterialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/manager-material.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { 3 | MatPaginatorModule, 4 | MatProgressSpinnerModule, 5 | MatSortModule, 6 | MatTableModule, 7 | } from '@angular/material' 8 | 9 | @NgModule({ 10 | imports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressSpinnerModule], 11 | exports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressSpinnerModule], 12 | }) 13 | export class ManagerMaterialModule {} 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/manager.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerModule } from './manager.module' 2 | 3 | describe('ManagerModule', () => { 4 | let managerModule: ManagerModule 5 | 6 | beforeEach(() => { 7 | managerModule = new ManagerModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.html: -------------------------------------------------------------------------------- 1 |2 | receipt-lookup works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-receipt-lookup', 5 | templateUrl: './receipt-lookup.component.html', 6 | styleUrls: ['./receipt-lookup.component.css'], 7 | }) 8 | export class ReceiptLookupComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/manager/user-management/user-management.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-user-management', 5 | template: ` 6 |7 | This page doesn't exist. Go back to home. 8 |
9 | `, 10 | }) 11 | export class PageNotFoundComponent implements OnInit { 12 | constructor() {} 13 | 14 | ngOnInit() {} 15 | } 16 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/pos/pos-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { PosComponent } from './pos/pos.component' 4 | 5 | const routes: Routes = [{ path: '', component: PosComponent }] 6 | 7 | @NgModule({ 8 | imports: [RouterModule.forChild(routes)], 9 | exports: [RouterModule], 10 | }) 11 | export class PosRoutingModule {} 12 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/pos/pos.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { PosModule } from './pos.module' 2 | 3 | describe('PosModule', () => { 4 | let posModule: PosModule 5 | 6 | beforeEach(() => { 7 | posModule = new PosModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(posModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/pos/pos.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { PosRoutingModule } from './pos-routing.module' 5 | import { PosComponent } from './pos/pos.component' 6 | 7 | @NgModule({ 8 | imports: [CommonModule, PosRoutingModule], 9 | declarations: [PosComponent], 10 | }) 11 | export class PosModule {} 12 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/pos/pos/pos.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/app/pos/pos/pos.component.css -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/pos/pos/pos.component.html: -------------------------------------------------------------------------------- 1 |2 | pos works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/pos/pos/pos.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-pos', 5 | templateUrl: './pos.component.html', 6 | styleUrls: ['./pos.component.css'], 7 | }) 8 | export class PosComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/shared-components.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { SharedComponentsModule } from './shared-components.module' 2 | 3 | describe('SharedComponentsModule', () => { 4 | let sharedComponentsModule: SharedComponentsModule 5 | 6 | beforeEach(() => { 7 | sharedComponentsModule = new SharedComponentsModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(sharedComponentsModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/user/logout/logout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | import { Router } from '@angular/router' 3 | import { AuthService } from '../../auth/auth.service' 4 | 5 | @Component({ 6 | selector: 'app-logout', 7 | template: ` 8 |9 | Logging out... 10 |
11 | `, 12 | styles: [], 13 | }) 14 | export class LogoutComponent implements OnInit { 15 | constructor(private router: Router, private authService: AuthService) {} 16 | 17 | ngOnInit() { 18 | this.authService.logout() 19 | this.router.navigate(['/']) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/user/profile/profile.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter10/lemon-mart/src/app/user/profile/profile.component.css -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/user/user-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserMaterialModule } from './user-material.module' 2 | 3 | describe('UserMaterialModule', () => { 4 | let userMaterialModule: UserMaterialModule 5 | 6 | beforeEach(() => { 7 | userMaterialModule = new UserMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userMaterialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/user/user.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserModule } from './user.module' 2 | 3 | describe('UserModule', () => { 4 | let userModule: UserModule 5 | 6 | beforeEach(() => { 7 | userModule = new UserModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter10/lemon-mart/src/app/user/user/user.resolve.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core' 2 | import { ActivatedRouteSnapshot, Resolve } from '@angular/router' 3 | 4 | import { IUser } from './user' 5 | import { UserService } from './user.service' 6 | 7 | @Injectable() 8 | export class UserResolve implements Resolve2 | categories works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/categories/categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-categories', 5 | templateUrl: './categories.component.html', 6 | styleUrls: ['./categories.component.css'], 7 | }) 8 | export class CategoriesComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/inventory-home/inventory-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-inventory-home', 5 | template: ` 6 |7 | inventory-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class InventoryHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/inventory.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { InventoryModule } from './inventory.module' 2 | 3 | describe('InventoryModule', () => { 4 | let inventoryModule: InventoryModule 5 | 6 | beforeEach(() => { 7 | inventoryModule = new InventoryModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(inventoryModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter11/lemon-mart/src/app/inventory/products/products.component.css -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/products/products.component.html: -------------------------------------------------------------------------------- 1 |2 | products works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.css'], 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter11/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.html: -------------------------------------------------------------------------------- 1 |2 | stock-entry works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-stock-entry', 5 | templateUrl: './stock-entry.component.html', 6 | styleUrls: ['./stock-entry.component.css'], 7 | }) 8 | export class StockEntryComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/manager-home/manager-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-manager-home', 5 | template: ` 6 |7 | manager-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class ManagerHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/manager-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerMaterialModule } from './manager-material.module' 2 | 3 | describe('ManagerMaterialModule', () => { 4 | let managerMaterialModule: ManagerMaterialModule 5 | 6 | beforeEach(() => { 7 | managerMaterialModule = new ManagerMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerMaterialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/manager-material.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { 3 | MatPaginatorModule, 4 | MatProgressSpinnerModule, 5 | MatSortModule, 6 | MatTableModule, 7 | } from '@angular/material' 8 | 9 | @NgModule({ 10 | imports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressSpinnerModule], 11 | exports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressSpinnerModule], 12 | }) 13 | export class ManagerMaterialModule {} 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/manager.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerModule } from './manager.module' 2 | 3 | describe('ManagerModule', () => { 4 | let managerModule: ManagerModule 5 | 6 | beforeEach(() => { 7 | managerModule = new ManagerModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter11/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.html: -------------------------------------------------------------------------------- 1 |2 | receipt-lookup works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-receipt-lookup', 5 | templateUrl: './receipt-lookup.component.html', 6 | styleUrls: ['./receipt-lookup.component.css'], 7 | }) 8 | export class ReceiptLookupComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/manager/user-management/user-management.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-user-management', 5 | template: ` 6 |7 | This page doesn't exist. Go back to home. 8 |
9 | `, 10 | }) 11 | export class PageNotFoundComponent implements OnInit { 12 | constructor() {} 13 | 14 | ngOnInit() {} 15 | } 16 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/pos/pos-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { PosComponent } from './pos/pos.component' 4 | 5 | const routes: Routes = [{ path: '', component: PosComponent }] 6 | 7 | @NgModule({ 8 | imports: [RouterModule.forChild(routes)], 9 | exports: [RouterModule], 10 | }) 11 | export class PosRoutingModule {} 12 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/pos/pos.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { PosModule } from './pos.module' 2 | 3 | describe('PosModule', () => { 4 | let posModule: PosModule 5 | 6 | beforeEach(() => { 7 | posModule = new PosModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(posModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/pos/pos.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { PosRoutingModule } from './pos-routing.module' 5 | import { PosComponent } from './pos/pos.component' 6 | 7 | @NgModule({ 8 | imports: [CommonModule, PosRoutingModule], 9 | declarations: [PosComponent], 10 | }) 11 | export class PosModule {} 12 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/pos/pos/pos.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter11/lemon-mart/src/app/pos/pos/pos.component.css -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/pos/pos/pos.component.html: -------------------------------------------------------------------------------- 1 |2 | pos works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/pos/pos/pos.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-pos', 5 | templateUrl: './pos.component.html', 6 | styleUrls: ['./pos.component.css'], 7 | }) 8 | export class PosComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/shared-components.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { SharedComponentsModule } from './shared-components.module' 2 | 3 | describe('SharedComponentsModule', () => { 4 | let sharedComponentsModule: SharedComponentsModule 5 | 6 | beforeEach(() => { 7 | sharedComponentsModule = new SharedComponentsModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(sharedComponentsModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/user/logout/logout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | import { Router } from '@angular/router' 3 | import { AuthService } from '../../auth/auth.service' 4 | 5 | @Component({ 6 | selector: 'app-logout', 7 | template: ` 8 |9 | Logging out... 10 |
11 | `, 12 | styles: [], 13 | }) 14 | export class LogoutComponent implements OnInit { 15 | constructor(private router: Router, private authService: AuthService) {} 16 | 17 | ngOnInit() { 18 | this.authService.logout() 19 | this.router.navigate(['/']) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/user/profile/profile.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter11/lemon-mart/src/app/user/profile/profile.component.css -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/user/user-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserMaterialModule } from './user-material.module' 2 | 3 | describe('UserMaterialModule', () => { 4 | let userMaterialModule: UserMaterialModule 5 | 6 | beforeEach(() => { 7 | userMaterialModule = new UserMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userMaterialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/user/user.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserModule } from './user.module' 2 | 3 | describe('UserModule', () => { 4 | let userModule: UserModule 5 | 6 | beforeEach(() => { 7 | userModule = new UserModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter11/lemon-mart/src/app/user/user/user.resolve.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core' 2 | import { ActivatedRouteSnapshot, Resolve } from '@angular/router' 3 | 4 | import { IUser } from './user' 5 | import { UserService } from './user.service' 6 | 7 | @Injectable() 8 | export class UserResolve implements Resolve2 | categories works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/categories/categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-categories', 5 | templateUrl: './categories.component.html', 6 | styleUrls: ['./categories.component.css'], 7 | }) 8 | export class CategoriesComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/inventory-home/inventory-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-inventory-home', 5 | template: ` 6 |7 | inventory-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class InventoryHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/inventory.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { InventoryModule } from './inventory.module' 2 | 3 | describe('InventoryModule', () => { 4 | let inventoryModule: InventoryModule 5 | 6 | beforeEach(() => { 7 | inventoryModule = new InventoryModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(inventoryModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter12/lemon-mart/src/app/inventory/products/products.component.css -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/products/products.component.html: -------------------------------------------------------------------------------- 1 |2 | products works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.css'], 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter12/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.html: -------------------------------------------------------------------------------- 1 |2 | stock-entry works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-stock-entry', 5 | templateUrl: './stock-entry.component.html', 6 | styleUrls: ['./stock-entry.component.css'], 7 | }) 8 | export class StockEntryComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/manager-home/manager-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-manager-home', 5 | template: ` 6 |7 | manager-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class ManagerHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/manager-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerMaterialModule } from './manager-material.module' 2 | 3 | describe('ManagerMaterialModule', () => { 4 | let managerMaterialModule: ManagerMaterialModule 5 | 6 | beforeEach(() => { 7 | managerMaterialModule = new ManagerMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerMaterialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/manager-material.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { 3 | MatPaginatorModule, 4 | MatProgressSpinnerModule, 5 | MatSortModule, 6 | MatTableModule, 7 | } from '@angular/material' 8 | 9 | @NgModule({ 10 | imports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressSpinnerModule], 11 | exports: [MatTableModule, MatSortModule, MatPaginatorModule, MatProgressSpinnerModule], 12 | }) 13 | export class ManagerMaterialModule {} 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/manager.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerModule } from './manager.module' 2 | 3 | describe('ManagerModule', () => { 4 | let managerModule: ManagerModule 5 | 6 | beforeEach(() => { 7 | managerModule = new ManagerModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter12/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.html: -------------------------------------------------------------------------------- 1 |2 | receipt-lookup works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-receipt-lookup', 5 | templateUrl: './receipt-lookup.component.html', 6 | styleUrls: ['./receipt-lookup.component.css'], 7 | }) 8 | export class ReceiptLookupComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/manager/user-management/user-management.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-user-management', 5 | template: ` 6 |7 | This page doesn't exist. Go back to home. 8 |
9 | `, 10 | }) 11 | export class PageNotFoundComponent implements OnInit { 12 | constructor() {} 13 | 14 | ngOnInit() {} 15 | } 16 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/pos/pos-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { PosComponent } from './pos/pos.component' 4 | 5 | const routes: Routes = [{ path: '', component: PosComponent }] 6 | 7 | @NgModule({ 8 | imports: [RouterModule.forChild(routes)], 9 | exports: [RouterModule], 10 | }) 11 | export class PosRoutingModule {} 12 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/pos/pos.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { PosModule } from './pos.module' 2 | 3 | describe('PosModule', () => { 4 | let posModule: PosModule 5 | 6 | beforeEach(() => { 7 | posModule = new PosModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(posModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/pos/pos.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { PosRoutingModule } from './pos-routing.module' 5 | import { PosComponent } from './pos/pos.component' 6 | import { AppMaterialModule } from '../app-material.module' 7 | 8 | @NgModule({ 9 | imports: [CommonModule, PosRoutingModule, AppMaterialModule], 10 | declarations: [PosComponent], 11 | }) 12 | export class PosModule {} 13 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/pos/pos/pos.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter12/lemon-mart/src/app/pos/pos/pos.component.css -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/pos/pos/pos.component.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/shared-components.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { SharedComponentsModule } from './shared-components.module' 2 | 3 | describe('SharedComponentsModule', () => { 4 | let sharedComponentsModule: SharedComponentsModule 5 | 6 | beforeEach(() => { 7 | sharedComponentsModule = new SharedComponentsModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(sharedComponentsModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/user/logout/logout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | import { Router } from '@angular/router' 3 | import { AuthService } from '../../auth/auth.service' 4 | 5 | @Component({ 6 | selector: 'app-logout', 7 | template: ` 8 |9 | Logging out... 10 |
11 | `, 12 | styles: [], 13 | }) 14 | export class LogoutComponent implements OnInit { 15 | constructor(private router: Router, private authService: AuthService) {} 16 | 17 | ngOnInit() { 18 | this.authService.logout() 19 | this.router.navigate(['/']) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/user/profile/profile.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter12/lemon-mart/src/app/user/profile/profile.component.css -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/user/user-material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserMaterialModule } from './user-material.module' 2 | 3 | describe('UserMaterialModule', () => { 4 | let userMaterialModule: UserMaterialModule 5 | 6 | beforeEach(() => { 7 | userMaterialModule = new UserMaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userMaterialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/user/user.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserModule } from './user.module' 2 | 3 | describe('UserModule', () => { 4 | let userModule: UserModule 5 | 6 | beforeEach(() => { 7 | userModule = new UserModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter12/lemon-mart/src/app/user/user/user.resolve.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core' 2 | import { ActivatedRouteSnapshot, Resolve } from '@angular/router' 3 | 4 | import { IUser } from './user' 5 | import { UserService } from './user.service' 6 | 7 | @Injectable() 8 | export class UserResolve implements Resolve2 | categories works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/categories/categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-categories', 5 | templateUrl: './categories.component.html', 6 | styleUrls: ['./categories.component.css'], 7 | }) 8 | export class CategoriesComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/inventory-home/inventory-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-inventory-home', 5 | template: ` 6 |7 | inventory-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class InventoryHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/inventory.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { InventoryModule } from './inventory.module' 2 | 3 | describe('InventoryModule', () => { 4 | let inventoryModule: InventoryModule 5 | 6 | beforeEach(() => { 7 | inventoryModule = new InventoryModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(inventoryModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/app/inventory/products/products.component.css -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/products/products.component.html: -------------------------------------------------------------------------------- 1 |2 | products works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.css'], 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.html: -------------------------------------------------------------------------------- 1 |2 | stock-entry works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-stock-entry', 5 | templateUrl: './stock-entry.component.html', 6 | styleUrls: ['./stock-entry.component.css'], 7 | }) 8 | export class StockEntryComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/manager-home/manager-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-manager-home', 5 | template: ` 6 |7 | manager-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class ManagerHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/manager.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerModule } from './manager.module' 2 | 3 | describe('ManagerModule', () => { 4 | let managerModule: ManagerModule 5 | 6 | beforeEach(() => { 7 | managerModule = new ManagerModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.html: -------------------------------------------------------------------------------- 1 |2 | receipt-lookup works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-receipt-lookup', 5 | templateUrl: './receipt-lookup.component.html', 6 | styleUrls: ['./receipt-lookup.component.css'], 7 | }) 8 | export class ReceiptLookupComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/user-management/user-management.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/app/manager/user-management/user-management.component.css -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/user-management/user-management.component.html: -------------------------------------------------------------------------------- 1 |2 | user-management works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/manager/user-management/user-management.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-user-management', 5 | templateUrl: './user-management.component.html', 6 | styleUrls: ['./user-management.component.css'], 7 | }) 8 | export class UserManagementComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { MaterialModule } from './material.module' 2 | 3 | describe('MaterialModule', () => { 4 | let materialModule: MaterialModule 5 | 6 | beforeEach(() => { 7 | materialModule = new MaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(materialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/material.module.ts: -------------------------------------------------------------------------------- 1 | import { MatButtonModule, MatToolbarModule, MatIconModule } from '@angular/material' 2 | import { NgModule } from '@angular/core' 3 | 4 | @NgModule({ 5 | imports: [MatButtonModule, MatToolbarModule, MatIconModule], 6 | exports: [MatButtonModule, MatToolbarModule, MatIconModule], 7 | }) 8 | export class MaterialModule {} 9 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-page-not-found', 5 | template: ` 6 |7 | This page doesn't exist. Go back to home. 8 |
9 | `, 10 | }) 11 | export class PageNotFoundComponent implements OnInit { 12 | constructor() {} 13 | 14 | ngOnInit() {} 15 | } 16 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/pos/pos-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { PosComponent } from './pos/pos.component' 4 | 5 | const routes: Routes = [{ path: '', component: PosComponent }] 6 | 7 | @NgModule({ 8 | imports: [RouterModule.forChild(routes)], 9 | exports: [RouterModule], 10 | }) 11 | export class PosRoutingModule {} 12 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/pos/pos.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { PosModule } from './pos.module' 2 | 3 | describe('PosModule', () => { 4 | let posModule: PosModule 5 | 6 | beforeEach(() => { 7 | posModule = new PosModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(posModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/pos/pos.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { PosRoutingModule } from './pos-routing.module' 5 | import { PosComponent } from './pos/pos.component' 6 | 7 | @NgModule({ 8 | imports: [CommonModule, PosRoutingModule], 9 | declarations: [PosComponent], 10 | }) 11 | export class PosModule {} 12 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/pos/pos/pos.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/app/pos/pos/pos.component.css -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/pos/pos/pos.component.html: -------------------------------------------------------------------------------- 1 |2 | pos works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/pos/pos/pos.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-pos', 5 | templateUrl: './pos.component.html', 6 | styleUrls: ['./pos.component.css'], 7 | }) 8 | export class PosComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/logout/logout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-logout', 5 | template: ` 6 |7 | logout works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class LogoutComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/navigation-menu/navigation-menu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-navigation-menu', 5 | template: ` 6 |7 | navigation-menu works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class NavigationMenuComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/profile/profile.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/app/user/profile/profile.component.css -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |2 | profile works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.css'], 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/user-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { ProfileComponent } from './profile/profile.component' 4 | import { LogoutComponent } from './logout/logout.component' 5 | 6 | const routes: Routes = [ 7 | { path: 'profile', component: ProfileComponent }, 8 | { path: 'logout', component: LogoutComponent }, 9 | ] 10 | 11 | @NgModule({ 12 | imports: [RouterModule.forChild(routes)], 13 | exports: [RouterModule], 14 | }) 15 | export class UserRoutingModule {} 16 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/user.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserModule } from './user.module' 2 | 3 | describe('UserModule', () => { 4 | let userModule: UserModule 5 | 6 | beforeEach(() => { 7 | userModule = new UserModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/app/user/user.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { UserRoutingModule } from './user-routing.module' 5 | import { ProfileComponent } from './profile/profile.component' 6 | import { LogoutComponent } from './logout/logout.component' 7 | 8 | @NgModule({ 9 | imports: [CommonModule, UserRoutingModule], 10 | declarations: [ProfileComponent, LogoutComponent], 11 | }) 12 | export class UserModule {} 13 | -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/apple-touch-icon.png -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter7/lemon-mart/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter7/lemon-mart/src/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 |2 | categories works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/categories/categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-categories', 5 | templateUrl: './categories.component.html', 6 | styleUrls: ['./categories.component.css'], 7 | }) 8 | export class CategoriesComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/inventory-home/inventory-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-inventory-home', 5 | template: ` 6 |7 | inventory-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class InventoryHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/inventory.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { InventoryModule } from './inventory.module' 2 | 3 | describe('InventoryModule', () => { 4 | let inventoryModule: InventoryModule 5 | 6 | beforeEach(() => { 7 | inventoryModule = new InventoryModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(inventoryModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/app/inventory/products/products.component.css -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/products/products.component.html: -------------------------------------------------------------------------------- 1 |2 | products works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.css'], 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.html: -------------------------------------------------------------------------------- 1 |2 | stock-entry works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-stock-entry', 5 | templateUrl: './stock-entry.component.html', 6 | styleUrls: ['./stock-entry.component.css'], 7 | }) 8 | export class StockEntryComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/manager-home/manager-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-manager-home', 5 | template: ` 6 |7 | manager-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class ManagerHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/manager.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerModule } from './manager.module' 2 | 3 | describe('ManagerModule', () => { 4 | let managerModule: ManagerModule 5 | 6 | beforeEach(() => { 7 | managerModule = new ManagerModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.html: -------------------------------------------------------------------------------- 1 |2 | receipt-lookup works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-receipt-lookup', 5 | templateUrl: './receipt-lookup.component.html', 6 | styleUrls: ['./receipt-lookup.component.css'], 7 | }) 8 | export class ReceiptLookupComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/user-management/user-management.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/app/manager/user-management/user-management.component.css -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/user-management/user-management.component.html: -------------------------------------------------------------------------------- 1 |2 | user-management works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/manager/user-management/user-management.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-user-management', 5 | templateUrl: './user-management.component.html', 6 | styleUrls: ['./user-management.component.css'], 7 | }) 8 | export class UserManagementComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { MaterialModule } from './material.module' 2 | 3 | describe('MaterialModule', () => { 4 | let materialModule: MaterialModule 5 | 6 | beforeEach(() => { 7 | materialModule = new MaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(materialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/material.module.ts: -------------------------------------------------------------------------------- 1 | import { MatButtonModule, MatToolbarModule, MatIconModule } from '@angular/material' 2 | import { NgModule } from '@angular/core' 3 | 4 | @NgModule({ 5 | imports: [MatButtonModule, MatToolbarModule, MatIconModule], 6 | exports: [MatButtonModule, MatToolbarModule, MatIconModule], 7 | }) 8 | export class MaterialModule {} 9 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-page-not-found', 5 | template: ` 6 |7 | This page doesn't exist. Go back to home. 8 |
9 | `, 10 | }) 11 | export class PageNotFoundComponent implements OnInit { 12 | constructor() {} 13 | 14 | ngOnInit() {} 15 | } 16 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/pos/pos-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { PosComponent } from './pos/pos.component' 4 | 5 | const routes: Routes = [{ path: '', component: PosComponent }] 6 | 7 | @NgModule({ 8 | imports: [RouterModule.forChild(routes)], 9 | exports: [RouterModule], 10 | }) 11 | export class PosRoutingModule {} 12 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/pos/pos.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { PosModule } from './pos.module' 2 | 3 | describe('PosModule', () => { 4 | let posModule: PosModule 5 | 6 | beforeEach(() => { 7 | posModule = new PosModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(posModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/pos/pos.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { PosRoutingModule } from './pos-routing.module' 5 | import { PosComponent } from './pos/pos.component' 6 | 7 | @NgModule({ 8 | imports: [CommonModule, PosRoutingModule], 9 | declarations: [PosComponent], 10 | }) 11 | export class PosModule {} 12 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/pos/pos/pos.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/app/pos/pos/pos.component.css -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/pos/pos/pos.component.html: -------------------------------------------------------------------------------- 1 |2 | pos works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/pos/pos/pos.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-pos', 5 | templateUrl: './pos.component.html', 6 | styleUrls: ['./pos.component.css'], 7 | }) 8 | export class PosComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/logout/logout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-logout', 5 | template: ` 6 |7 | logout works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class LogoutComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/navigation-menu/navigation-menu.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-navigation-menu', 5 | template: ` 6 |7 | navigation-menu works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class NavigationMenuComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/profile/profile.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/app/user/profile/profile.component.css -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |2 | profile works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.css'], 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/user-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { ProfileComponent } from './profile/profile.component' 4 | import { LogoutComponent } from './logout/logout.component' 5 | 6 | const routes: Routes = [ 7 | { path: 'profile', component: ProfileComponent }, 8 | { path: 'logout', component: LogoutComponent }, 9 | ] 10 | 11 | @NgModule({ 12 | imports: [RouterModule.forChild(routes)], 13 | exports: [RouterModule], 14 | }) 15 | export class UserRoutingModule {} 16 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/user.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserModule } from './user.module' 2 | 3 | describe('UserModule', () => { 4 | let userModule: UserModule 5 | 6 | beforeEach(() => { 7 | userModule = new UserModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/app/user/user.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { UserRoutingModule } from './user-routing.module' 5 | import { ProfileComponent } from './profile/profile.component' 6 | import { LogoutComponent } from './logout/logout.component' 7 | 8 | @NgModule({ 9 | imports: [CommonModule, UserRoutingModule], 10 | declarations: [ProfileComponent, LogoutComponent], 11 | }) 12 | export class UserModule {} 13 | -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/apple-touch-icon.png -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter8/lemon-mart/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter8/lemon-mart/src/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 |2 | categories works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/categories/categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-categories', 5 | templateUrl: './categories.component.html', 6 | styleUrls: ['./categories.component.css'], 7 | }) 8 | export class CategoriesComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/inventory-home/inventory-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-inventory-home', 5 | template: ` 6 |7 | inventory-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class InventoryHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/inventory.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { InventoryModule } from './inventory.module' 2 | 3 | describe('InventoryModule', () => { 4 | let inventoryModule: InventoryModule 5 | 6 | beforeEach(() => { 7 | inventoryModule = new InventoryModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(inventoryModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/products/products.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/app/inventory/products/products.component.css -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/products/products.component.html: -------------------------------------------------------------------------------- 1 |2 | products works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/products/products.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-products', 5 | templateUrl: './products.component.html', 6 | styleUrls: ['./products.component.css'], 7 | }) 8 | export class ProductsComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.css -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.html: -------------------------------------------------------------------------------- 1 |2 | stock-entry works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/inventory/stock-entry/stock-entry.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-stock-entry', 5 | templateUrl: './stock-entry.component.html', 6 | styleUrls: ['./stock-entry.component.css'], 7 | }) 8 | export class StockEntryComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/manager-home/manager-home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-manager-home', 5 | template: ` 6 |7 | manager-home works! 8 |
9 | `, 10 | styles: [], 11 | }) 12 | export class ManagerHomeComponent implements OnInit { 13 | constructor() {} 14 | 15 | ngOnInit() {} 16 | } 17 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/manager.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { ManagerModule } from './manager.module' 2 | 3 | describe('ManagerModule', () => { 4 | let managerModule: ManagerModule 5 | 6 | beforeEach(() => { 7 | managerModule = new ManagerModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(managerModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.css -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.html: -------------------------------------------------------------------------------- 1 |2 | receipt-lookup works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/receipt-lookup/receipt-lookup.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-receipt-lookup', 5 | templateUrl: './receipt-lookup.component.html', 6 | styleUrls: ['./receipt-lookup.component.css'], 7 | }) 8 | export class ReceiptLookupComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/user-management/user-management.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/app/manager/user-management/user-management.component.css -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/user-management/user-management.component.html: -------------------------------------------------------------------------------- 1 |2 | user-management works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/manager/user-management/user-management.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-user-management', 5 | templateUrl: './user-management.component.html', 6 | styleUrls: ['./user-management.component.css'], 7 | }) 8 | export class UserManagementComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/material.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { MaterialModule } from './material.module' 2 | 3 | describe('MaterialModule', () => { 4 | let materialModule: MaterialModule 5 | 6 | beforeEach(() => { 7 | materialModule = new MaterialModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(materialModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/page-not-found/page-not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-page-not-found', 5 | template: ` 6 |7 | This page doesn't exist. Go back to home. 8 |
9 | `, 10 | }) 11 | export class PageNotFoundComponent implements OnInit { 12 | constructor() {} 13 | 14 | ngOnInit() {} 15 | } 16 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/pos/pos-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { Routes, RouterModule } from '@angular/router' 3 | import { PosComponent } from './pos/pos.component' 4 | 5 | const routes: Routes = [{ path: '', component: PosComponent }] 6 | 7 | @NgModule({ 8 | imports: [RouterModule.forChild(routes)], 9 | exports: [RouterModule], 10 | }) 11 | export class PosRoutingModule {} 12 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/pos/pos.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { PosModule } from './pos.module' 2 | 3 | describe('PosModule', () => { 4 | let posModule: PosModule 5 | 6 | beforeEach(() => { 7 | posModule = new PosModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(posModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/pos/pos.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { PosRoutingModule } from './pos-routing.module' 5 | import { PosComponent } from './pos/pos.component' 6 | 7 | @NgModule({ 8 | imports: [CommonModule, PosRoutingModule], 9 | declarations: [PosComponent], 10 | }) 11 | export class PosModule {} 12 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/pos/pos/pos.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/app/pos/pos/pos.component.css -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/pos/pos/pos.component.html: -------------------------------------------------------------------------------- 1 |2 | pos works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/pos/pos/pos.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-pos', 5 | templateUrl: './pos.component.html', 6 | styleUrls: ['./pos.component.css'], 7 | }) 8 | export class PosComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/user/logout/logout.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | import { Router } from '@angular/router' 3 | import { AuthService } from '../../auth/auth.service' 4 | 5 | @Component({ 6 | selector: 'app-logout', 7 | template: ` 8 |9 | Logging out... 10 |
11 | `, 12 | styles: [], 13 | }) 14 | export class LogoutComponent implements OnInit { 15 | constructor(private router: Router, private authService: AuthService) {} 16 | 17 | ngOnInit() { 18 | this.authService.logout() 19 | this.router.navigate(['/']) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/user/profile/profile.component.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/app/user/profile/profile.component.css -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/user/profile/profile.component.html: -------------------------------------------------------------------------------- 1 |2 | profile works! 3 |
4 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/user/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core' 2 | 3 | @Component({ 4 | selector: 'app-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.css'], 7 | }) 8 | export class ProfileComponent implements OnInit { 9 | constructor() {} 10 | 11 | ngOnInit() {} 12 | } 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/user/user.module.spec.ts: -------------------------------------------------------------------------------- 1 | import { UserModule } from './user.module' 2 | 3 | describe('UserModule', () => { 4 | let userModule: UserModule 5 | 6 | beforeEach(() => { 7 | userModule = new UserModule() 8 | }) 9 | 10 | it('should create an instance', () => { 11 | expect(userModule).toBeTruthy() 12 | }) 13 | }) 14 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/app/user/user.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core' 2 | import { CommonModule } from '@angular/common' 3 | 4 | import { UserRoutingModule } from './user-routing.module' 5 | import { ProfileComponent } from './profile/profile.component' 6 | import { LogoutComponent } from './logout/logout.component' 7 | 8 | @NgModule({ 9 | imports: [CommonModule, UserRoutingModule], 10 | declarations: [ProfileComponent, LogoutComponent], 11 | }) 12 | export class UserModule {} 13 | -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/apple-touch-icon.png -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/duluca/angular-for-enterprise-ready-web-apps/117269e61692c5e2c2f8437a79fea4c32bda4893/Chapter9/lemon-mart/src/assets/.gitkeep -------------------------------------------------------------------------------- /Chapter9/lemon-mart/src/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 |