├── angular-15 ├── nx │ ├── myorg │ │ ├── apps │ │ │ ├── .gitkeep │ │ │ ├── admin │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.css │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── main.ts │ │ │ │ │ └── index.html │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ └── tsconfig.spec.json │ │ │ ├── store │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.css │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ ├── app.routes.ts │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── main.ts │ │ │ │ │ └── index.html │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ └── tsconfig.spec.json │ │ │ ├── admin-e2e │ │ │ │ ├── src │ │ │ │ │ ├── support │ │ │ │ │ │ ├── app.po.ts │ │ │ │ │ │ └── e2e.ts │ │ │ │ │ ├── fixtures │ │ │ │ │ │ └── example.json │ │ │ │ │ └── e2e │ │ │ │ │ │ └── app.cy.ts │ │ │ │ ├── cypress.config.ts │ │ │ │ ├── .eslintrc.json │ │ │ │ └── tsconfig.json │ │ │ └── store-e2e │ │ │ │ ├── src │ │ │ │ ├── support │ │ │ │ │ ├── app.po.ts │ │ │ │ │ └── e2e.ts │ │ │ │ ├── fixtures │ │ │ │ │ └── example.json │ │ │ │ └── e2e │ │ │ │ │ └── app.cy.ts │ │ │ │ ├── cypress.config.ts │ │ │ │ ├── .eslintrc.json │ │ │ │ └── tsconfig.json │ │ ├── libs │ │ │ ├── .gitkeep │ │ │ ├── common-ui │ │ │ │ ├── src │ │ │ │ │ ├── lib │ │ │ │ │ │ ├── banner │ │ │ │ │ │ │ ├── banner.component.css │ │ │ │ │ │ │ ├── banner.component.html │ │ │ │ │ │ │ ├── banner.component.ts │ │ │ │ │ │ │ └── banner.component.spec.ts │ │ │ │ │ │ └── common-ui.module.ts │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── README.md │ │ │ │ ├── tsconfig.spec.json │ │ │ │ └── tsconfig.lib.json │ │ │ └── products │ │ │ │ ├── src │ │ │ │ ├── index.ts │ │ │ │ └── lib │ │ │ │ │ ├── products.spec.ts │ │ │ │ │ └── products.ts │ │ │ │ ├── package.json │ │ │ │ ├── README.md │ │ │ │ ├── tsconfig.lib.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── jest.config.ts │ │ │ │ ├── .eslintrc.json │ │ │ │ └── tsconfig.json │ │ ├── tools │ │ │ ├── generators │ │ │ │ └── .gitkeep │ │ │ └── tsconfig.tools.json │ │ ├── .eslintignore │ │ ├── .prettierrc │ │ ├── .prettierignore │ │ ├── jest.preset.js │ │ ├── jest.config.ts │ │ ├── .vscode │ │ │ └── extensions.json │ │ ├── .editorconfig │ │ ├── tsconfig.base.json │ │ └── .gitignore │ └── readme.md └── 02-communicating │ ├── 02-ngrx-example │ ├── library │ │ ├── src │ │ │ ├── assets │ │ │ │ └── .gitkeep │ │ │ ├── app │ │ │ │ ├── app.component.css │ │ │ │ ├── book-list │ │ │ │ │ ├── book-list.component.css │ │ │ │ │ ├── books.model.ts │ │ │ │ │ ├── book-list.component.html │ │ │ │ │ ├── book-list.component.ts │ │ │ │ │ └── books.service.ts │ │ │ │ ├── book-collection │ │ │ │ │ ├── book-collection.component.css │ │ │ │ │ ├── book-collection.component.html │ │ │ │ │ └── book-collection.component.ts │ │ │ │ ├── state │ │ │ │ │ ├── app.state.ts │ │ │ │ │ ├── books.reducer.ts │ │ │ │ │ ├── books.actions.ts │ │ │ │ │ ├── collection.reducer.ts │ │ │ │ │ └── books.selectors.ts │ │ │ │ └── app.component.html │ │ │ ├── styles.css │ │ │ ├── favicon.ico │ │ │ ├── main.ts │ │ │ └── index.html │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ └── launch.json │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ └── .editorconfig │ └── 01-startup-project.md │ ├── readme.md │ └── package.json ├── angular-11 ├── 03-nx │ └── code │ │ ├── demo-workspace │ │ ├── apps │ │ │ ├── .gitkeep │ │ │ ├── demo │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── environments │ │ │ │ │ │ └── environment.prod.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ ├── admin-portal │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── environments │ │ │ │ │ │ └── environment.prod.ts │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ ├── customer-portal │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── environments │ │ │ │ │ │ └── environment.prod.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── app │ │ │ │ │ │ └── app.component.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ ├── demo-e2e │ │ │ │ ├── src │ │ │ │ │ ├── support │ │ │ │ │ │ ├── app.po.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── fixtures │ │ │ │ │ │ └── example.json │ │ │ │ │ └── integration │ │ │ │ │ │ └── app.spec.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── cypress.json │ │ │ │ └── tsconfig.e2e.json │ │ │ ├── admin-portal-e2e │ │ │ │ ├── src │ │ │ │ │ ├── support │ │ │ │ │ │ ├── app.po.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── fixtures │ │ │ │ │ │ └── example.json │ │ │ │ │ └── integration │ │ │ │ │ │ └── app.spec.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── cypress.json │ │ │ │ └── tsconfig.e2e.json │ │ │ └── customer-portal-e2e │ │ │ │ ├── src │ │ │ │ ├── support │ │ │ │ │ ├── app.po.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── fixtures │ │ │ │ │ └── example.json │ │ │ │ └── integration │ │ │ │ │ └── app.spec.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── cypress.json │ │ │ │ └── tsconfig.e2e.json │ │ ├── libs │ │ │ ├── .gitkeep │ │ │ ├── auth │ │ │ │ ├── src │ │ │ │ │ ├── lib │ │ │ │ │ │ ├── containers │ │ │ │ │ │ │ └── login │ │ │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── login-form │ │ │ │ │ │ │ │ ├── login-form.component.css │ │ │ │ │ │ │ │ ├── login-form.component.html │ │ │ │ │ │ │ │ └── login-form.component.ts │ │ │ │ │ │ ├── +state │ │ │ │ │ │ │ ├── auth.models.ts │ │ │ │ │ │ │ └── auth.actions.ts │ │ │ │ │ │ └── services │ │ │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ │ │ └── auth.service.spec.ts │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── README.md │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.lib.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ └── shared │ │ │ │ └── auth │ │ │ │ ├── src │ │ │ │ ├── index.ts │ │ │ │ ├── test-setup.ts │ │ │ │ └── lib │ │ │ │ │ └── shared-auth.module.ts │ │ │ │ ├── README.md │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.lib.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ ├── tools │ │ │ ├── generators │ │ │ │ └── .gitkeep │ │ │ └── tsconfig.tools.json │ │ ├── .prettierrc │ │ ├── .prettierignore │ │ ├── jest.preset.js │ │ ├── .vscode │ │ │ └── extensions.json │ │ ├── jest.config.js │ │ ├── .editorconfig │ │ ├── .gitignore │ │ └── tsconfig.base.json │ │ └── package.json ├── 01-material-ui │ ├── code │ │ ├── frontend-app │ │ │ ├── src │ │ │ │ ├── assets │ │ │ │ │ └── .gitkeep │ │ │ │ ├── app │ │ │ │ │ ├── app.component.scss │ │ │ │ │ ├── app.component.html │ │ │ │ │ ├── contactmanager │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── main-content │ │ │ │ │ │ │ │ └── main-content.component.scss │ │ │ │ │ │ │ ├── new-contact-dialog │ │ │ │ │ │ │ │ └── new-contact-dialog.component.scss │ │ │ │ │ │ │ ├── sidenav │ │ │ │ │ │ │ │ └── sidenav.component.scss │ │ │ │ │ │ │ └── toolbar │ │ │ │ │ │ │ │ ├── toolbar.component.scss │ │ │ │ │ │ │ │ └── toolbar.component.html │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── note.ts │ │ │ │ │ │ │ └── user.ts │ │ │ │ │ │ └── contactmanager-app.component.ts │ │ │ │ │ ├── app.component.ts │ │ │ │ │ └── demo │ │ │ │ │ │ ├── flexbox │ │ │ │ │ │ ├── flexbox.component.html │ │ │ │ │ │ ├── flexbox.component.ts │ │ │ │ │ │ └── flexbox.component.scss │ │ │ │ │ │ ├── button │ │ │ │ │ │ └── button.component.ts │ │ │ │ │ │ └── demo-routing.module.ts │ │ │ │ ├── environments │ │ │ │ │ └── environment.prod.ts │ │ │ │ ├── favicon.ico │ │ │ │ ├── main.ts │ │ │ │ └── index.html │ │ │ ├── e2e │ │ │ │ ├── src │ │ │ │ │ └── app.po.ts │ │ │ │ └── tsconfig.json │ │ │ ├── .editorconfig │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.spec.json │ │ │ └── tsconfig.json │ │ └── backend-app │ │ │ ├── package.json │ │ │ └── index.js │ └── 01-material-design │ │ └── notes.md └── 02-communicating │ └── 02-ngrx-example │ ├── library │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── book-list │ │ │ │ ├── book-list.component.css │ │ │ │ ├── books.model.ts │ │ │ │ ├── book-list.component.html │ │ │ │ ├── book-list.component.ts │ │ │ │ └── books.service.ts │ │ │ ├── book-collection │ │ │ │ ├── book-collection.component.css │ │ │ │ ├── book-collection.component.html │ │ │ │ └── book-collection.component.ts │ │ │ ├── state │ │ │ │ ├── app.state.ts │ │ │ │ ├── books.reducer.ts │ │ │ │ ├── books.actions.ts │ │ │ │ └── collection.reducer.ts │ │ │ └── app.component.html │ │ ├── environments │ │ │ └── environment.prod.ts │ │ ├── styles.css │ │ ├── favicon.ico │ │ ├── index.html │ │ └── main.ts │ ├── e2e │ │ ├── src │ │ │ └── app.po.ts │ │ └── tsconfig.json │ ├── .editorconfig │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── tsconfig.json │ ├── 01-startup-project.md │ └── package-lock.json ├── angular-12 ├── 03-nx │ └── code │ │ ├── demo-workspace │ │ ├── apps │ │ │ ├── .gitkeep │ │ │ ├── demo │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── environments │ │ │ │ │ │ └── environment.prod.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ ├── admin-portal │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── environments │ │ │ │ │ │ └── environment.prod.ts │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── app │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ ├── customer-portal │ │ │ │ ├── src │ │ │ │ │ ├── assets │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ ├── environments │ │ │ │ │ │ └── environment.prod.ts │ │ │ │ │ ├── styles.css │ │ │ │ │ ├── favicon.ico │ │ │ │ │ ├── app │ │ │ │ │ │ └── app.component.ts │ │ │ │ │ ├── index.html │ │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.editor.json │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.app.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ ├── demo-e2e │ │ │ │ ├── src │ │ │ │ │ ├── support │ │ │ │ │ │ ├── app.po.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── fixtures │ │ │ │ │ │ └── example.json │ │ │ │ │ └── integration │ │ │ │ │ │ └── app.spec.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── cypress.json │ │ │ │ └── tsconfig.e2e.json │ │ │ ├── admin-portal-e2e │ │ │ │ ├── src │ │ │ │ │ ├── support │ │ │ │ │ │ ├── app.po.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── fixtures │ │ │ │ │ │ └── example.json │ │ │ │ │ └── integration │ │ │ │ │ │ └── app.spec.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── cypress.json │ │ │ │ └── tsconfig.e2e.json │ │ │ └── customer-portal-e2e │ │ │ │ ├── src │ │ │ │ ├── support │ │ │ │ │ ├── app.po.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── fixtures │ │ │ │ │ └── example.json │ │ │ │ └── integration │ │ │ │ │ └── app.spec.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── .eslintrc.json │ │ │ │ ├── cypress.json │ │ │ │ └── tsconfig.e2e.json │ │ ├── libs │ │ │ ├── .gitkeep │ │ │ ├── auth │ │ │ │ ├── src │ │ │ │ │ ├── lib │ │ │ │ │ │ ├── containers │ │ │ │ │ │ │ └── login │ │ │ │ │ │ │ │ ├── login.component.css │ │ │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── login-form │ │ │ │ │ │ │ │ ├── login-form.component.css │ │ │ │ │ │ │ │ ├── login-form.component.html │ │ │ │ │ │ │ │ └── login-form.component.ts │ │ │ │ │ │ ├── +state │ │ │ │ │ │ │ ├── auth.models.ts │ │ │ │ │ │ │ └── auth.actions.ts │ │ │ │ │ │ └── services │ │ │ │ │ │ │ ├── auth.service.ts │ │ │ │ │ │ │ └── auth.service.spec.ts │ │ │ │ │ ├── test-setup.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── README.md │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.lib.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ │ └── shared │ │ │ │ └── auth │ │ │ │ ├── src │ │ │ │ ├── index.ts │ │ │ │ ├── test-setup.ts │ │ │ │ └── lib │ │ │ │ │ └── shared-auth.module.ts │ │ │ │ ├── README.md │ │ │ │ ├── tsconfig.spec.json │ │ │ │ ├── tsconfig.lib.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── jest.config.js │ │ ├── tools │ │ │ ├── generators │ │ │ │ └── .gitkeep │ │ │ └── tsconfig.tools.json │ │ ├── .prettierrc │ │ ├── .prettierignore │ │ ├── jest.preset.js │ │ ├── .vscode │ │ │ └── extensions.json │ │ ├── jest.config.js │ │ ├── .editorconfig │ │ ├── .gitignore │ │ └── tsconfig.base.json │ │ └── package.json ├── 01-material-ui │ ├── code │ │ ├── frontend-app │ │ │ ├── src │ │ │ │ ├── assets │ │ │ │ │ └── .gitkeep │ │ │ │ ├── app │ │ │ │ │ ├── app.component.scss │ │ │ │ │ ├── app.component.html │ │ │ │ │ ├── contactmanager │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── main-content │ │ │ │ │ │ │ │ └── main-content.component.scss │ │ │ │ │ │ │ ├── new-contact-dialog │ │ │ │ │ │ │ │ └── new-contact-dialog.component.scss │ │ │ │ │ │ │ ├── sidenav │ │ │ │ │ │ │ │ └── sidenav.component.scss │ │ │ │ │ │ │ └── toolbar │ │ │ │ │ │ │ │ ├── toolbar.component.scss │ │ │ │ │ │ │ │ └── toolbar.component.html │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── note.ts │ │ │ │ │ │ │ └── user.ts │ │ │ │ │ │ └── contactmanager-app.component.ts │ │ │ │ │ ├── app.component.ts │ │ │ │ │ └── demo │ │ │ │ │ │ ├── flexbox │ │ │ │ │ │ ├── flexbox.component.html │ │ │ │ │ │ ├── flexbox.component.ts │ │ │ │ │ │ └── flexbox.component.scss │ │ │ │ │ │ ├── button │ │ │ │ │ │ └── button.component.ts │ │ │ │ │ │ └── demo-routing.module.ts │ │ │ │ ├── environments │ │ │ │ │ └── environment.prod.ts │ │ │ │ ├── favicon.ico │ │ │ │ ├── main.ts │ │ │ │ └── index.html │ │ │ ├── e2e │ │ │ │ ├── src │ │ │ │ │ └── app.po.ts │ │ │ │ └── tsconfig.json │ │ │ ├── .editorconfig │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.spec.json │ │ │ └── tsconfig.json │ │ └── backend-app │ │ │ ├── package.json │ │ │ └── index.js │ └── 01-material-design │ │ └── notes.md └── 02-communicating │ └── 02-ngrx-example │ ├── library │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── book-list │ │ │ │ ├── book-list.component.css │ │ │ │ ├── books.model.ts │ │ │ │ ├── book-list.component.html │ │ │ │ ├── book-list.component.ts │ │ │ │ └── books.service.ts │ │ │ ├── book-collection │ │ │ │ ├── book-collection.component.css │ │ │ │ ├── book-collection.component.html │ │ │ │ └── book-collection.component.ts │ │ │ ├── state │ │ │ │ ├── app.state.ts │ │ │ │ ├── books.reducer.ts │ │ │ │ ├── books.actions.ts │ │ │ │ ├── collection.reducer.ts │ │ │ │ └── books.selectors.ts │ │ │ └── app.component.html │ │ ├── environments │ │ │ └── environment.prod.ts │ │ ├── styles.css │ │ ├── favicon.ico │ │ ├── index.html │ │ └── main.ts │ ├── .editorconfig │ ├── tsconfig.app.json │ └── tsconfig.spec.json │ └── 01-startup-project.md ├── angular-13 └── 01-material-ui │ ├── code │ ├── frontend-app │ │ ├── src │ │ │ ├── assets │ │ │ │ └── .gitkeep │ │ │ ├── app │ │ │ │ ├── app.component.scss │ │ │ │ ├── app.component.html │ │ │ │ ├── contactmanager │ │ │ │ │ ├── components │ │ │ │ │ │ ├── main-content │ │ │ │ │ │ │ ├── main-content.component.scss │ │ │ │ │ │ │ ├── main-content.component.html │ │ │ │ │ │ │ └── main-content.component.ts │ │ │ │ │ │ ├── toolbar │ │ │ │ │ │ │ ├── toolbar.component.html │ │ │ │ │ │ │ ├── toolbar.component.ts │ │ │ │ │ │ │ └── toolbar.component.scss │ │ │ │ │ │ └── sidenav │ │ │ │ │ │ │ └── sidenav.component.scss │ │ │ │ │ └── contactmanager-app.component.ts │ │ │ │ ├── app.component.ts │ │ │ │ └── demo │ │ │ │ │ ├── flexbox │ │ │ │ │ ├── flexbox.component.ts │ │ │ │ │ ├── flexbox.component.scss │ │ │ │ │ └── flexbox.component.html │ │ │ │ │ ├── button │ │ │ │ │ └── button.component.ts │ │ │ │ │ └── demo-routing.module.ts │ │ │ ├── environments │ │ │ │ └── environment.prod.ts │ │ │ ├── favicon.ico │ │ │ ├── styles.scss │ │ │ ├── main.ts │ │ │ └── index.html │ │ ├── .vscode │ │ │ ├── extensions.json │ │ │ └── launch.json │ │ ├── .editorconfig │ │ ├── tsconfig.app.json │ │ ├── tsconfig.spec.json │ │ ├── .browserslistrc │ │ └── .gitignore │ └── backend-app │ │ ├── package.json │ │ └── index.js │ └── 01-material-design │ └── notes.md └── README.md /angular-15/nx/myorg/apps/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/tools/generators/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/tools/generators/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/tools/generators/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/app.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } 4 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/lib/banner/banner.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true 3 | } -------------------------------------------------------------------------------- /angular-15/02-communicating/readme.md: -------------------------------------------------------------------------------- 1 | ```bash 2 | npm i @angular/cli@15 3 | ``` 4 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/products'; 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # angular-architecturing-apps 2 | A repository for modern Angular design apps 3 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/containers/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/containers/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import "jest-preset-angular/setup-jest"; 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/lib/banner/banner.component.html: -------------------------------------------------------------------------------- 1 |

banner works!

2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/components/login-form/login-form.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/components/login-form/login-form.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get("h1"); 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/shared-auth.module'; 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/shared-auth.module'; 2 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/components/main-content/main-content.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/components/main-content/main-content.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/main-content/main-content.component.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /angular-15/nx/readme.md: -------------------------------------------------------------------------------- 1 | ## Angular Monorepo 2 | 3 | - [Angular Monorepo Tutorial](https://nx.dev/angular-tutorial) -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/test-setup.ts: -------------------------------------------------------------------------------- 1 | import 'jest-preset-angular/setup-jest'; 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | /dist 3 | /coverage 4 | .angular 5 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/support/app.po.ts: -------------------------------------------------------------------------------- 1 | export const getGreeting = () => cy.get('h1'); 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/jest.preset.js: -------------------------------------------------------------------------------- 1 | const nxPreset = require("@nrwl/jest/preset").default; 2 | 3 | module.exports = { ...nxPreset }; 4 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@myorg/products", 3 | "version": "0.0.1", 4 | "type": "commonjs" 5 | } 6 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/jest.preset.js: -------------------------------------------------------------------------------- 1 | const nxPreset = require('@nrwl/jest/preset'); 2 | 3 | module.exports = { ...nxPreset }; 4 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/jest.preset.js: -------------------------------------------------------------------------------- 1 | const nxPreset = require('@nrwl/jest/preset'); 2 | 3 | module.exports = { ...nxPreset }; 4 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/app/app.routes.ts: -------------------------------------------------------------------------------- 1 | import { Route } from "@angular/router"; 2 | 3 | export const appRoutes: Route[] = []; 4 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/common-ui.module'; 2 | 3 | export * from './lib/banner/banner.component'; 4 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/components/login-form/login-form.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/components/login-form/login-form.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/jest.config.ts: -------------------------------------------------------------------------------- 1 | import { getJestProjects } from "@nrwl/jest"; 2 | 3 | export default { 4 | projects: getJestProjects(), 5 | }; 6 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-15/nx/myorg/apps/admin/src/favicon.ico -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-15/nx/myorg/apps/store/src/favicon.ico -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/containers/login/login.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/containers/login/login.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/models/note.ts: -------------------------------------------------------------------------------- 1 | export class Note { 2 | id: number; 3 | title: string; 4 | date: Date; 5 | } 6 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/models/note.ts: -------------------------------------------------------------------------------- 1 | export class Note { 2 | id: number; 3 | title: string; 4 | date: Date; 5 | } 6 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/fixtures/example.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Using fixtures to represent data", 3 | "email": "hello@cypress.io" 4 | } 5 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/main-content/main-content.component.html: -------------------------------------------------------------------------------- 1 | 2 |

Main Content

3 |
4 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-11/01-material-ui/code/frontend-app/src/favicon.ico -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-12/01-material-ui/code/frontend-app/src/favicon.ico -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-13/01-material-ui/code/frontend-app/src/favicon.ico -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-11/03-nx/code/demo-workspace/apps/demo/src/favicon.ico -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-12/03-nx/code/demo-workspace/apps/demo/src/favicon.ico -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src/**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["src/**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-11/02-communicating/02-ngrx-example/library/src/favicon.ico -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-12/02-communicating/02-ngrx-example/library/src/favicon.ico -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-15/02-communicating/02-ngrx-example/library/src/favicon.ico -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/favicon.ico -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/favicon.ico -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/README.md: -------------------------------------------------------------------------------- 1 | # auth 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test auth` to execute the unit tests. 8 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/README.md: -------------------------------------------------------------------------------- 1 | # auth 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test auth` to execute the unit tests. 8 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/README.md: -------------------------------------------------------------------------------- 1 | # common-ui 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test common-ui` to execute the unit tests. 8 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/favicon.ico -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lemoncode/angular-architecturing-apps/main/angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/favicon.ico -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.editor.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["**/*.ts"], 4 | "compilerOptions": { 5 | "types": ["jest", "node"] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-list/books.model.ts: -------------------------------------------------------------------------------- 1 | export interface Book { 2 | id: string; 3 | volumeInfo: { 4 | title: string; 5 | authors: Array; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/+state/auth.models.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface for the 'Auth' data 3 | */ 4 | export interface AuthEntity { 5 | id: string | number; // Primary ID 6 | name: string; 7 | } 8 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-list/books.model.ts: -------------------------------------------------------------------------------- 1 | export interface Book { 2 | id: string; 3 | volumeInfo: { 4 | title: string; 5 | authors: Array; 6 | }; 7 | } -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/+state/auth.models.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface for the 'Auth' data 3 | */ 4 | export interface AuthEntity { 5 | id: string | number; // Primary ID 6 | name: string; 7 | } 8 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-list/books.model.ts: -------------------------------------------------------------------------------- 1 | export interface Book { 2 | id: string; 3 | volumeInfo: { 4 | title: string; 5 | authors: Array; 6 | }; 7 | } 8 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "nrwl.angular-console", 4 | "esbenp.prettier-vscode", 5 | "firsttris.vscode-jest-runner", 6 | "dbaeumer.vscode-eslint" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/README.md: -------------------------------------------------------------------------------- 1 | # shared-auth 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test shared-auth` to execute the unit tests. 8 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/README.md: -------------------------------------------------------------------------------- 1 | # shared-auth 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Running unit tests 6 | 7 | Run `nx test shared-auth` to execute the unit tests. 8 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/src/lib/products.spec.ts: -------------------------------------------------------------------------------- 1 | import { products } from './products'; 2 | 3 | describe('products', () => { 4 | it('should work', () => { 5 | expect(products()).toEqual('products'); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | import { Book } from '../book-list/books.model'; 2 | 3 | export interface AppState { 4 | books: ReadonlyArray; 5 | collection: ReadonlyArray; 6 | } -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | import { Book } from '../book-list/books.model'; 2 | 3 | export interface AppState { 4 | books: ReadonlyArray; 5 | collection: ReadonlyArray; 6 | } 7 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'cypress'; 2 | import { nxE2EPreset } from '@nrwl/cypress/plugins/cypress-preset'; 3 | 4 | export default defineConfig({ 5 | e2e: nxE2EPreset(__dirname), 6 | }); 7 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "cypress"; 2 | import { nxE2EPreset } from "@nrwl/cypress/plugins/cypress-preset"; 3 | 4 | export default defineConfig({ 5 | e2e: nxE2EPreset(__dirname), 6 | }); 7 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/state/app.state.ts: -------------------------------------------------------------------------------- 1 | import { Book } from '../book-list/books.model'; 2 | 3 | export interface AppState { 4 | books: ReadonlyArray, 5 | collection: ReadonlyArray, 6 | }; 7 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.e2e.json" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.e2e.json" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.e2e.json" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.e2e.json" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.e2e.json" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.e2e.json" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/components/new-contact-dialog/new-contact-dialog.component.scss: -------------------------------------------------------------------------------- 1 | .dialog-content-form { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | 6 | .dialog-content-form > * { 7 | width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/01-startup-project.md: -------------------------------------------------------------------------------- 1 | # Start up project 2 | 3 | ```bash 4 | $ ng new library 5 | ``` 6 | 7 | ```bash 8 | $ npm i @ngrx/store 9 | $ npm i @ngrx/effects 10 | ``` 11 | 12 | > NOTE: Align with your Angular CLI major version 13 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/components/new-contact-dialog/new-contact-dialog.component.scss: -------------------------------------------------------------------------------- 1 | .dialog-content-form { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | 6 | .dialog-content-form > * { 7 | width: 100%; 8 | } 9 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app/app.module'; 3 | 4 | platformBrowserDynamic() 5 | .bootstrapModule(AppModule) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; 2 | import { AppModule } from "./app/app.module"; 3 | 4 | platformBrowserDynamic() 5 | .bootstrapModule(AppModule) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "angular.ng-template", 4 | "nrwl.angular-console", 5 | "esbenp.prettier-vscode", 6 | "firsttris.vscode-jest-runner", 7 | "dbaeumer.vscode-eslint" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/+state/auth.models'; 2 | export * from './lib/+state/auth.selectors'; 3 | export * from './lib/+state/auth.reducer'; 4 | export * from './lib/+state/auth.actions'; 5 | export * from './lib/auth.module'; 6 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "angular.ng-template", 4 | "nrwl.angular-console", 5 | "esbenp.prettier-vscode", 6 | "firsttris.vscode-jest-runner", 7 | "dbaeumer.vscode-eslint" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './lib/+state/auth.models'; 2 | export * from './lib/+state/auth.selectors'; 3 | export * from './lib/+state/auth.reducer'; 4 | export * from './lib/+state/auth.actions'; 5 | export * from './lib/auth.module'; 6 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/models/user.ts: -------------------------------------------------------------------------------- 1 | import { Note } from './note'; 2 | 3 | export class User { 4 | id: number; 5 | birthDate: Date; 6 | name: string; 7 | avatar: string; 8 | bio: string; 9 | 10 | notes: Note[]; 11 | } 12 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/models/user.ts: -------------------------------------------------------------------------------- 1 | import { Note } from './note'; 2 | 3 | export class User { 4 | id: number; 5 | birthDate: Date; 6 | name: string; 7 | avatar: string; 8 | bio: string; 9 | 10 | notes: Note[]; 11 | } 12 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | projects: [ 3 | '/apps/demo', 4 | '/apps/customer-portal', 5 | '/apps/admin-portal', 6 | '/libs/auth', 7 | '/libs/shared/auth', 8 | ], 9 | }; 10 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | projects: [ 3 | '/apps/demo', 4 | '/apps/customer-portal', 5 | '/apps/admin-portal', 6 | '/libs/auth', 7 | '/libs/shared/auth', 8 | ], 9 | }; 10 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | 3 | import { AppModule } from './app/app.module'; 4 | 5 | 6 | platformBrowserDynamic().bootstrapModule(AppModule) 7 | .catch(err => console.error(err)); 8 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": ["src/**/*.d.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/styles.scss: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | @import '@angular/material/prebuilt-themes/indigo-pink.css'; 3 | 4 | html, body { height: 100%; } 5 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } 6 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/README.md: -------------------------------------------------------------------------------- 1 | # products 2 | 3 | This library was generated with [Nx](https://nx.dev). 4 | 5 | ## Building 6 | 7 | Run `nx build products` to build the library. 8 | 9 | ## Running unit tests 10 | 11 | Run `nx test products` to execute the unit tests via [Jest](https://jestjs.io). 12 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'frontend-app'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/services/auth.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { of } from 'rxjs'; 3 | 4 | @Injectable() 5 | export class AuthService { 6 | 7 | constructor() { } 8 | 9 | login() { 10 | return of({ id: 1, name: 'salas' }); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'frontend-app'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/services/auth.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { of } from 'rxjs'; 3 | 4 | @Injectable() 5 | export class AuthService { 6 | 7 | constructor() { } 8 | 9 | login() { 10 | return of({ id: 1, name: 'salas' }); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.scss'] 7 | }) 8 | export class AppComponent { 9 | title = 'frontend-app'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'demo'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'demo'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | Contact Manager 7 | 8 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/.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 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts"], 8 | "include": ["src/**/*.d.ts"], 9 | "exclude": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts"], 8 | "include": ["src/**/*.d.ts"], 9 | "exclude": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "declaration": true, 6 | "types": ["node"] 7 | }, 8 | "include": ["src/**/*.ts"], 9 | "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'admin-portal'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/01-startup-project.md: -------------------------------------------------------------------------------- 1 | # Start up project 2 | 3 | ```bash 4 | ng new library 5 | ``` 6 | 7 | ```bash 8 | cd library 9 | npm i @ngrx/store@12.5.1 10 | npm i @ngrx/effects@12.5.1 11 | ``` 12 | 13 | > NOTE: Align with your Angular CLI major version 14 | 15 | [version 12 guides](https://v12.ngrx.io/docs) -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'admin-portal'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/01-startup-project.md: -------------------------------------------------------------------------------- 1 | # Start up project 2 | 3 | ```bash 4 | npx ng new library 5 | ``` 6 | 7 | ```bash 8 | cd library 9 | npm i @ngrx/store@15 10 | npm i @ngrx/effects@15 11 | ``` 12 | 13 | > NOTE: Align with your Angular CLI major version 14 | 15 | [version 15 guides](https://v15.ngrx.io/docs) 16 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/lib/banner/banner.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'myorg-banner', 5 | templateUrl: './banner.component.html', 6 | styleUrls: ['./banner.component.css'], 7 | }) 8 | export class BannerComponent { 9 | @Input() title = ''; 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/tools/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "../dist/out-tsc/tools", 5 | "rootDir": ".", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["node"], 9 | "importHelpers": false 10 | }, 11 | "include": ["**/*.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/.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 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.html: -------------------------------------------------------------------------------- 1 |
2 |

{{book?.volumeInfo?.title}}

by {{book?.volumeInfo?.authors}} 3 | 4 |
-------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/.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 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "files": ["src/test-setup.ts"], 9 | "include": ["**/*.spec.ts", "**/*.d.ts"] 10 | } 11 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'customer-portal'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'customer-portal'; 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.html: -------------------------------------------------------------------------------- 1 |
2 |

{{book?.volumeInfo?.title}}

by {{book?.volumeInfo?.authors}} 3 | 4 |
5 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

Books

2 | 3 | 4 |

My Collection

5 | 6 | 7 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/tools/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "../dist/out-tsc/tools", 5 | "rootDir": ".", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["node"], 9 | "importHelpers": false 10 | }, 11 | "include": ["**/*.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/tools/tsconfig.tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.base.json", 3 | "compilerOptions": { 4 | "outDir": "../dist/out-tsc/tools", 5 | "rootDir": ".", 6 | "module": "commonjs", 7 | "target": "es5", 8 | "types": ["node"], 9 | "importHelpers": false 10 | }, 11 | "include": ["**/*.ts"] 12 | } 13 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'myorg-root', 5 | template: ` 6 | 7 | `, 8 | styleUrls: ['./app.component.css'], 9 | }) 10 | export class AppComponent { 11 | title = 'admin'; 12 | } 13 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.html: -------------------------------------------------------------------------------- 1 |
2 |
1
3 |
2
4 |
3
5 |
4
6 |
5
7 |
6
8 |
9 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
11 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.html: -------------------------------------------------------------------------------- 1 |
2 |
1
3 |
2
4 |
3
5 |
4
6 |
5
7 |
6
8 |
9 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
11 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/src/lib/products.ts: -------------------------------------------------------------------------------- 1 | export interface Product { 2 | id: string; 3 | name: string; 4 | price: number; 5 | } 6 | 7 | export const exampleProducts: Product[] = [ 8 | { 9 | id: '1', 10 | name: 'Product 1', 11 | price: 100, 12 | }, 13 | { 14 | id: '2', 15 | name: 'Product 2', 16 | price: 200, 17 | }, 18 | ]; -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "types": ["jest", "node"] 7 | }, 8 | "include": [ 9 | "jest.config.ts", 10 | "src/**/*.test.ts", 11 | "src/**/*.spec.ts", 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | async navigateTo(): Promise { 5 | return browser.get(browser.baseUrl); 6 | } 7 | 8 | async getTitleText(): Promise { 9 | return element(by.css('app-root .content span')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | async navigateTo(): Promise { 5 | return browser.get(browser.baseUrl); 6 | } 7 | 8 | async getTitleText(): Promise { 9 | return element(by.css('app-root .content span')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | async navigateTo(): Promise { 5 | return browser.get(browser.baseUrl); 6 | } 7 | 8 | async getTitleText(): Promise { 9 | return element(by.css('app-root .content span')).getText(); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts" 10 | ], 11 | "include": [ 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /angular-15/02-communicating/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "02-communicating", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "@angular/cli": "^15.2.8" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/jest.config.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | export default { 3 | displayName: 'products', 4 | preset: '../../jest.preset.js', 5 | transform: { 6 | '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '/tsconfig.spec.json' }], 7 | }, 8 | moduleFileExtensions: ['ts', 'js', 'html'], 9 | coverageDirectory: '../../coverage/libs/products', 10 | }; 11 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "../tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "../out-tsc/e2e", 6 | "module": "commonjs", 7 | "target": "es2018", 8 | "types": [ 9 | "jasmine", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.html: -------------------------------------------------------------------------------- 1 |
5 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 6 | 10 |
11 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.html: -------------------------------------------------------------------------------- 1 |

book-list works!

2 |
6 |

{{book.volumeInfo.title}}

by {{book.volumeInfo.authors}} 7 | 11 |
-------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/lib/common-ui.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { BannerComponent } from './banner/banner/banner.component'; 4 | 5 | @NgModule({ 6 | imports: [CommonModule], 7 | declarations: [BannerComponent], 8 | exports: [BannerComponent], 9 | }) 10 | export class CommonUiModule {} 11 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "include": [ 11 | "src/**/*.spec.ts", 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": [ 9 | "src/**/*.d.ts", 10 | "../../libs/auth/src/index.ts", 11 | "../../libs/shared/auth/src/index.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "types": [] 6 | }, 7 | "files": ["src/main.ts", "src/polyfills.ts"], 8 | "include": [ 9 | "src/**/*.d.ts", 10 | "../../libs/auth/src/index.ts", 11 | "../../libs/shared/auth/src/index.ts" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see https://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.ts] 12 | quote_type = single 13 | 14 | [*.md] 15 | max_line_length = off 16 | trim_trailing_whitespace = false 17 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Library 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | 4 | import { AppComponent } from './app.component'; 5 | 6 | @NgModule({ 7 | declarations: [AppComponent], 8 | imports: [BrowserModule], 9 | providers: [], 10 | bootstrap: [AppComponent], 11 | }) 12 | export class AppModule {} 13 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Library 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | 4 | import { AppComponent } from './app.component'; 5 | 6 | @NgModule({ 7 | declarations: [AppComponent], 8 | imports: [BrowserModule], 9 | providers: [], 10 | bootstrap: [AppComponent], 11 | }) 12 | export class AppModule {} 13 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Library 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "dependencies": { 7 | "npx": "^10.2.2", 8 | "nx": "^12.5.1" 9 | }, 10 | "devDependencies": {}, 11 | "scripts": { 12 | "test": "echo \"Error: no test specified\" && exit 1" 13 | }, 14 | "keywords": [], 15 | "author": "", 16 | "license": "ISC" 17 | } 18 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/app", 6 | "types": [] 7 | }, 8 | "files": [ 9 | "src/main.ts", 10 | "src/polyfills.ts" 11 | ], 12 | "include": [ 13 | "src/**/*.d.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "dependencies": { 7 | "npx": "^10.2.2", 8 | "nx": "^12.5.1" 9 | }, 10 | "devDependencies": {}, 11 | "scripts": { 12 | "test": "echo \"Error: no test specified\" && exit 1" 13 | }, 14 | "keywords": [], 15 | "author": "", 16 | "license": "ISC" 17 | } 18 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | admin 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | store 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-flexbox', 5 | templateUrl: './flexbox.component.html', 6 | styleUrls: ['./flexbox.component.scss'] 7 | }) 8 | export class FlexboxComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-flexbox', 5 | templateUrl: './flexbox.component.html', 6 | styleUrls: ['./flexbox.component.scss'] 7 | }) 8 | export class FlexboxComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-flexbox', 5 | templateUrl: './flexbox.component.html', 6 | styleUrls: ['./flexbox.component.scss'] 7 | }) 8 | export class FlexboxComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["*.ts", "*.tsx"], 11 | "rules": {} 12 | }, 13 | { 14 | "files": ["*.js", "*.jsx"], 15 | "rules": {} 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/components/login-form/login-form.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-login-form', 5 | templateUrl: './login-form.component.html', 6 | styleUrls: ['./login-form.component.css'] 7 | }) 8 | export class LoginFormComponent { 9 | @Output() login = new EventEmitter(); 10 | } 11 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/components/login-form/login-form.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, OnInit, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'demo-workspace-login-form', 5 | templateUrl: './login-form.component.html', 6 | styleUrls: ['./login-form.component.css'] 7 | }) 8 | export class LoginFormComponent { 9 | @Output() login = new EventEmitter(); 10 | } 11 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "target": "es2016", 7 | "types": ["jest", "node"] 8 | }, 9 | "files": ["src/test-setup.ts"], 10 | "include": [ 11 | "jest.config.ts", 12 | "src/**/*.test.ts", 13 | "src/**/*.spec.ts", 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "target": "es2016", 7 | "types": ["jest", "node"] 8 | }, 9 | "files": ["src/test-setup.ts"], 10 | "include": [ 11 | "jest.config.ts", 12 | "src/**/*.test.ts", 13 | "src/**/*.spec.ts", 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "module": "commonjs", 6 | "target": "es2016", 7 | "types": ["jest", "node"] 8 | }, 9 | "files": ["src/test-setup.ts"], 10 | "include": [ 11 | "jest.config.ts", 12 | "src/**/*.test.ts", 13 | "src/**/*.spec.ts", 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/backend-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend-app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node .", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "cors": "^2.8.5", 15 | "express": "^4.17.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "target": "es2015", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": ["dom", "es2018"] 11 | }, 12 | "exclude": ["src/test-setup.ts", "**/*.spec.ts"], 13 | "include": ["**/*.ts"] 14 | } 15 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/backend-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend-app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node .", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "cors": "^2.8.5", 15 | "express": "^4.17.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/state/books.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on } from '@ngrx/store'; 2 | 3 | import { retrievedBookList } from './books.actions'; 4 | import { Book } from '../book-list/books.model'; 5 | 6 | export const initialState: ReadonlyArray = []; 7 | 8 | export const booksReducer = createReducer( 9 | initialState, 10 | on(retrievedBookList, (state, { books }) => [...books]) 11 | ); -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "target": "es2015", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": ["dom", "es2018"] 11 | }, 12 | "exclude": ["src/test-setup.ts", "**/*.spec.ts"], 13 | "include": ["**/*.ts"] 14 | } 15 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/backend-app/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "backend-app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "node .", 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [], 11 | "author": "", 12 | "license": "ISC", 13 | "dependencies": { 14 | "cors": "^2.8.5", 15 | "express": "^4.17.1" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/state/books.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on } from '@ngrx/store'; 2 | 3 | import { retrievedBookList } from './books.actions'; 4 | import { Book } from '../book-list/books.model'; 5 | 6 | export const initialState: ReadonlyArray = []; 7 | 8 | export const booksReducer = createReducer( 9 | initialState, 10 | on(retrievedBookList, (state, { Book }) => [...Book]) 11 | ); 12 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../../dist/out-tsc", 5 | "target": "es2015", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": ["dom", "es2018"] 11 | }, 12 | "exclude": ["src/test-setup.ts", "**/*.spec.ts"], 13 | "include": ["**/*.ts"] 14 | } 15 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../../dist/out-tsc", 5 | "target": "es2015", 6 | "declaration": true, 7 | "declarationMap": true, 8 | "inlineSources": true, 9 | "types": [], 10 | "lib": ["dom", "es2018"] 11 | }, 12 | "exclude": ["src/test-setup.ts", "**/*.spec.ts"], 13 | "include": ["**/*.ts"] 14 | } 15 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/contactmanager-app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-contactmanager-app', 5 | template: ` 6 | 7 | `, 8 | styles: [ 9 | ] 10 | }) 11 | export class ContactmanagerAppComponent implements OnInit { 12 | 13 | constructor() { } 14 | 15 | ngOnInit(): void { 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/state/books.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on } from '@ngrx/store'; 2 | 3 | import { retrievedBookList } from './books.actions'; 4 | import { Book } from '../book-list/books.model'; 5 | 6 | export const initialState: ReadonlyArray = []; 7 | 8 | export const booksReducer = createReducer( 9 | initialState, 10 | on(retrievedBookList, (state, { books }) => [...books]) 11 | ); 12 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../dist/out-tsc", 5 | "declaration": true, 6 | "declarationMap": true, 7 | "inlineSources": true, 8 | "types": [] 9 | }, 10 | "exclude": [ 11 | "src/**/*.spec.ts", 12 | "src/test-setup.ts", 13 | "jest.config.ts", 14 | "src/**/*.test.ts" 15 | ], 16 | "include": ["src/**/*.ts"] 17 | } 18 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AdminPortal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AdminPortal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CustomerPortal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/src/lib/shared-auth.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { RouterModule } from '@angular/router'; 4 | 5 | @NgModule({ 6 | imports: [ 7 | CommonModule, 8 | RouterModule.forChild([ 9 | /* {path: '', pathMatch: 'full', component: InsertYourComponentHere} */ 10 | ]), 11 | ], 12 | }) 13 | export class SharedAuthModule {} 14 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CustomerPortal 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/src/lib/shared-auth.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { RouterModule } from '@angular/router'; 4 | 5 | @NgModule({ 6 | imports: [ 7 | CommonModule, 8 | RouterModule.forChild([ 9 | /* {path: '', pathMatch: 'full', component: InsertYourComponentHere} */ 10 | ]), 11 | ], 12 | }) 13 | export class SharedAuthModule {} 14 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/backend-app/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const cors = require('cors'); 3 | const app = express(); 4 | const port = 3000; 5 | const { users } = require('./users'); 6 | 7 | app.use(cors()); 8 | 9 | app.get('/users', (_, res) => { 10 | setTimeout(() => { 11 | res.send(users); 12 | }, 150); 13 | }); 14 | 15 | app.listen(port, () => { 16 | console.log(`App listening at http://localhost:${port}`); 17 | }); 18 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/components/sidenav/sidenav.component.scss: -------------------------------------------------------------------------------- 1 | .app-sidenav-container { 2 | flex: 1; 3 | width: 100%; 4 | min-width: 100%; 5 | height: 100%; 6 | min-height: 100%; 7 | } 8 | 9 | .app-sidenav-content { 10 | display: flex; 11 | height: 100%; 12 | flex-direction: column; 13 | } 14 | 15 | .app-sidenav { 16 | width: 240px; 17 | } 18 | 19 | .wrapper { 20 | margin: 50px; 21 | } 22 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/backend-app/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const cors = require('cors'); 3 | const app = express(); 4 | const port = 3000; 5 | const { users } = require('./users'); 6 | 7 | app.use(cors()); 8 | 9 | app.get('/users', (_, res) => { 10 | setTimeout(() => { 11 | res.send(users); 12 | }, 150); 13 | }); 14 | 15 | app.listen(port, () => { 16 | console.log(`App listening at http://localhost:${port}`); 17 | }); 18 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/components/sidenav/sidenav.component.scss: -------------------------------------------------------------------------------- 1 | .app-sidenav-container { 2 | flex: 1; 3 | width: 100%; 4 | min-width: 100%; 5 | height: 100%; 6 | min-height: 100%; 7 | } 8 | 9 | .app-sidenav-content { 10 | display: flex; 11 | height: 100%; 12 | flex-direction: column; 13 | } 14 | 15 | .app-sidenav { 16 | width: 240px; 17 | } 18 | 19 | .wrapper { 20 | margin: 50px; 21 | } 22 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

Books

2 |
3 | 4 |
5 | 6 | 7 |

My Collection

8 |
9 | 10 | 11 |
-------------------------------------------------------------------------------- /angular-13/01-material-ui/code/backend-app/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const cors = require('cors'); 3 | const app = express(); 4 | const port = 3000; 5 | const { users } = require('./users'); 6 | 7 | app.use(cors()); 8 | 9 | app.get('/users', (_, res) => { 10 | setTimeout(() => { 11 | res.send(users); 12 | }, 150); 13 | }); 14 | 15 | app.listen(port, () => { 16 | console.log(`App listening at http://localhost:${port}`); 17 | }); 18 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/main-content/main-content.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-main-content', 5 | templateUrl: './main-content.component.html', 6 | styleUrls: ['./main-content.component.scss'] 7 | }) 8 | export class MainContentComponent implements OnInit { 9 | 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.error(err)); 13 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "extends": "./tsconfig.json", 4 | "compilerOptions": { 5 | "outDir": "./out-tsc/spec", 6 | "types": [ 7 | "jasmine" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

Books

2 |
3 | 4 |
5 | 6 | 7 |

My Collection

8 |
9 | 10 | 11 |
12 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | import { Book } from './books.model'; 3 | 4 | @Component({ 5 | selector: 'app-book-list', 6 | templateUrl: './book-list.component.html', 7 | styleUrls: ['./book-list.component.css'] 8 | }) 9 | export class BookListComponent { 10 | @Input() books!: Array; 11 | @Output() add = new EventEmitter(); 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | import { Book } from './books.model'; 3 | 4 | @Component({ 5 | selector: 'app-book-list', 6 | templateUrl: './book-list.component.html', 7 | styleUrls: ['./book-list.component.css'] 8 | }) 9 | export class BookListComponent { 10 | @Input() books!: Array; 11 | @Output() add = new EventEmitter(); 12 | } 13 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/demo/button/button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-button', 5 | template: ` 6 | 9 | 10 | Check me! 11 | `, 12 | styles: [], 13 | }) 14 | export class ButtonComponent implements OnInit { 15 | constructor() {} 16 | 17 | ngOnInit(): void {} 18 | } 19 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-list/book-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; 2 | import { Book } from './books.model'; 3 | 4 | @Component({ 5 | selector: 'app-book-list', 6 | templateUrl: './book-list.component.html', 7 | styleUrls: ['./book-list.component.css'], 8 | }) 9 | export class BookListComponent { 10 | @Input() books: Array; 11 | @Output() add = new EventEmitter(); 12 | } 13 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/+state/auth.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | import { AuthEntity } from './auth.models'; 3 | 4 | export const login = createAction( 5 | '[Auth] Login' 6 | ); 7 | 8 | export const loginSuccess = createAction( 9 | '[Auth] Login Success', 10 | props<{ auth: AuthEntity }>() 11 | ); 12 | 13 | export const loginFailure = createAction( 14 | '[Auth] Login Failure', 15 | props<{ error: any }>() 16 | ); 17 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/services/auth.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { AuthService } from './auth.service'; 4 | 5 | describe('AuthService', () => { 6 | let service: AuthService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(AuthService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic() 12 | .bootstrapModule(AppModule) 13 | .catch((err) => console.error(err)); 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/+state/auth.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | import { AuthEntity } from './auth.models'; 3 | 4 | export const login = createAction( 5 | '[Auth] Login' 6 | ); 7 | 8 | export const loginSuccess = createAction( 9 | '[Auth] Login Success', 10 | props<{ auth: AuthEntity }>() 11 | ); 12 | 13 | export const loginFailure = createAction( 14 | '[Auth] Login Failure', 15 | props<{ error: any }>() 16 | ); 17 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/services/auth.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { AuthService } from './auth.service'; 4 | 5 | describe('AuthService', () => { 6 | let service: AuthService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(AuthService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["src/plugins/index.js"], 11 | "rules": { 12 | "@typescript-eslint/no-var-requires": "off", 13 | "no-undef": "off" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["src/plugins/index.js"], 11 | "rules": { 12 | "@typescript-eslint/no-var-requires": "off", 13 | "no-undef": "off" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/src/e2e/app.cy.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('admin', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome admin'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/src/e2e/app.cy.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from "../support/app.po"; 2 | 3 | describe("store", () => { 4 | beforeEach(() => cy.visit("/")); 5 | 6 | it("should display welcome message", () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login("my-email@something.com", "myPassword"); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains("Welcome store"); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["src/plugins/index.js"], 11 | "rules": { 12 | "@typescript-eslint/no-var-requires": "off", 13 | "no-undef": "off" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["src/plugins/index.js"], 11 | "rules": { 12 | "@typescript-eslint/no-var-requires": "off", 13 | "no-undef": "off" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["src/plugins/index.js"], 11 | "rules": { 12 | "@typescript-eslint/no-var-requires": "off", 13 | "no-undef": "off" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["plugin:cypress/recommended", "../../.eslintrc.json"], 3 | "ignorePatterns": ["!**/*"], 4 | "overrides": [ 5 | { 6 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 7 | "rules": {} 8 | }, 9 | { 10 | "files": ["src/plugins/index.js"], 11 | "rules": { 12 | "@typescript-eslint/no-var-requires": "off", 13 | "no-undef": "off" 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/state/books.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | 3 | export const addBook = createAction( 4 | '[Book List] Add book', 5 | props<{ bookId }>() 6 | ); 7 | 8 | export const removeBook = createAction( 9 | '[Book Collection] Remove book', 10 | props<{ bookId }>() 11 | ); 12 | 13 | export const retrievedBookList = createAction( 14 | '[Book List/API] Retrieve Books Success', 15 | props<{ Book }>() 16 | ); 17 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/demo-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/demo-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/demo-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/demo-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('demo', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to demo!'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('demo', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to demo!'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | import { Book } from '../book-list/books.model'; 3 | 4 | @Component({ 5 | selector: 'app-book-collection', 6 | templateUrl: './book-collection.component.html', 7 | styleUrls: ['./book-collection.component.css'], 8 | }) 9 | export class BookCollectionComponent { 10 | @Input() books: Array; 11 | @Output() remove = new EventEmitter(); 12 | } 13 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/demo/button/button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-button', 5 | template: ` 6 | 10 | 11 | Check me! 12 | `, 13 | styles: [ 14 | ] 15 | }) 16 | export class ButtonComponent implements OnInit { 17 | 18 | constructor() { } 19 | 20 | ngOnInit(): void { 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/admin-portal-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/admin-portal-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/demo/button/button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-button', 5 | template: ` 6 | 10 | 11 | Check me! 12 | `, 13 | styles: [ 14 | ] 15 | }) 16 | export class ButtonComponent implements OnInit { 17 | 18 | constructor() { } 19 | 20 | ngOnInit(): void { 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/admin-portal-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/admin-portal-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/sidenav/sidenav.component.scss: -------------------------------------------------------------------------------- 1 | .app-sidenav-container { 2 | flex: 1; 3 | width: 100%; 4 | min-width: 100%; 5 | height: 100%; 6 | min-height: 100%; 7 | } 8 | 9 | .app-sidenav-content { 10 | display: flex; 11 | height: 100%; 12 | // align-items: center; 13 | // justify-content: center; 14 | flex-direction: column; 15 | } 16 | 17 | .app-sidenav { 18 | padding: 240px; 19 | } 20 | 21 | .wrapper { 22 | margin: 50px; 23 | } -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit, EventEmitter, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-toolbar', 5 | templateUrl: './toolbar.component.html', 6 | styleUrls: ['./toolbar.component.scss'] 7 | }) 8 | export class ToolbarComponent implements OnInit { 9 | @Output() toggleSidenav: EventEmitter = new EventEmitter(); 10 | constructor() { } 11 | 12 | ngOnInit(): void { 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('admin-portal', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to admin-portal!'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/customer-portal-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/customer-portal-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | import { Book } from '../book-list/books.model'; 3 | 4 | @Component({ 5 | selector: 'app-book-collection', 6 | templateUrl: './book-collection.component.html', 7 | styleUrls: ['./book-collection.component.css'] 8 | }) 9 | export class BookCollectionComponent { 10 | @Input() books!: Array; 11 | @Output() remove = new EventEmitter(); 12 | } 13 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('admin-portal', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to admin-portal!'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/cypress.json: -------------------------------------------------------------------------------- 1 | { 2 | "fileServerFolder": ".", 3 | "fixturesFolder": "./src/fixtures", 4 | "integrationFolder": "./src/integration", 5 | "modifyObstructiveCode": false, 6 | "pluginsFile": "./src/plugins/index", 7 | "supportFile": "./src/support/index.ts", 8 | "video": true, 9 | "videosFolder": "../../dist/cypress/apps/customer-portal-e2e/videos", 10 | "screenshotsFolder": "../../dist/cypress/apps/customer-portal-e2e/screenshots", 11 | "chromeWebSecurity": false 12 | } 13 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-collection/book-collection.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | import { Book } from '../book-list/books.model'; 3 | 4 | @Component({ 5 | selector: 'app-book-collection', 6 | templateUrl: './book-collection.component.html', 7 | styleUrls: ['./book-collection.component.css'] 8 | }) 9 | export class BookCollectionComponent { 10 | @Input() books!: Array; 11 | @Output() remove = new EventEmitter(); 12 | } 13 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { CommonUiModule } from '@myorg/common-ui'; 4 | 5 | import { AppComponent } from './app.component'; 6 | import { NxWelcomeComponent } from './nx-welcome.component'; 7 | 8 | @NgModule({ 9 | declarations: [AppComponent, NxWelcomeComponent], 10 | imports: [BrowserModule, CommonUiModule], 11 | providers: [], 12 | bootstrap: [AppComponent], 13 | }) 14 | export class AppModule {} 15 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('customer-portal', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to customer-portal!'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/integration/app.spec.ts: -------------------------------------------------------------------------------- 1 | import { getGreeting } from '../support/app.po'; 2 | 3 | describe('customer-portal', () => { 4 | beforeEach(() => cy.visit('/')); 5 | 6 | it('should display welcome message', () => { 7 | // Custom command example, see `../support/commands.ts` file 8 | cy.login('my-email@something.com', 'myPassword'); 9 | 10 | // Function helper example, see `../support/app.po.ts` file 11 | getGreeting().contains('Welcome to customer-portal!'); 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | 4 | import { AppComponent } from './app.component'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | @NgModule({ 8 | declarations: [AppComponent], 9 | imports: [ 10 | BrowserModule, 11 | RouterModule.forRoot([], { initialNavigation: 'enabledBlocking' }), 12 | ], 13 | providers: [], 14 | bootstrap: [AppComponent], 15 | }) 16 | export class AppModule {} 17 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | 4 | import { AppComponent } from './app.component'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | @NgModule({ 8 | declarations: [AppComponent], 9 | imports: [ 10 | BrowserModule, 11 | RouterModule.forRoot([], { initialNavigation: 'enabledBlocking' }), 12 | ], 13 | providers: [], 14 | bootstrap: [AppComponent], 15 | }) 16 | export class AppModule {} 17 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitOverride": true, 11 | "noPropertyAccessFromIndexSignature": true, 12 | "noImplicitReturns": true, 13 | "noFallthroughCasesInSwitch": true 14 | }, 15 | "include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitOverride": true, 11 | "noPropertyAccessFromIndexSignature": true, 12 | "noImplicitReturns": true, 13 | "noFallthroughCasesInSwitch": true 14 | }, 15 | "include": ["src/**/*.ts", "src/**/*.js", "cypress.config.ts"] 16 | } 17 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/state/books.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | import { Book } from '../book-list/books.model'; 3 | 4 | export const addBook = createAction( 5 | '[Book List] Add book', 6 | props<{ bookId: string }>() 7 | ); 8 | 9 | export const removeBook = createAction( 10 | '[Book Collection] Remove book', 11 | props<{ bookId: string }>() 12 | ); 13 | 14 | export const retrievedBookList = createAction( 15 | '[Book List/API] Retrieve Books Success', 16 | props<{ books: Book[] }>() 17 | ); 18 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/state/books.actions.ts: -------------------------------------------------------------------------------- 1 | import { createAction, props } from '@ngrx/store'; 2 | import { Book } from '../book-list/books.model'; 3 | 4 | export const addBook = createAction( 5 | '[Book List] Add book', 6 | props<{ bookId: string }>() 7 | ); 8 | 9 | export const removeBook = createAction( 10 | '[Book Collection] Remove book', 11 | props<{ bookId: string }>() 12 | ); 13 | 14 | export const retrievedBookList = createAction( 15 | '[Book List/API] Retrieve Books Success', 16 | props<{ books: Book[] }>() 17 | ); 18 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { exampleProducts } from '@myorg/products'; 2 | import { Component } from "@angular/core"; 3 | 4 | @Component({ 5 | selector: "myorg-root", 6 | template: ` 7 | 8 |
    9 |
  • 10 | {{ product.name }} Price: {{ product.price }} 11 |
  • 12 |
13 | `, 14 | styleUrls: ["./app.component.css"], 15 | }) 16 | export class AppComponent { 17 | products = exampleProducts; 18 | } 19 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/01-material-design/notes.md: -------------------------------------------------------------------------------- 1 | # Material Design 2 | 3 | ## Introduction 4 | 5 | [material.io](https://material.io/) 6 | 7 | Material is a design system created by Google to help teams build high-quality digital experiences for Android, iOS, Flutter, and the web. 8 | 9 | * Synthesizes classic principles 10 | 11 | * Unified experience accross devices 12 | 13 | ## Key Principles 14 | 15 | [material principles](https://material.io/design/introduction#principles) 16 | 17 | * Material is metaphor - Paper, ink 18 | * Bold, graphic and intentional 19 | * Motion provides meaning 20 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/01-material-design/notes.md: -------------------------------------------------------------------------------- 1 | # Material Design 2 | 3 | ## Introduction 4 | 5 | [material.io](https://material.io/) 6 | 7 | Material is a design system created by Google to help teams build high-quality digital experiences for Android, iOS, Flutter, and the web. 8 | 9 | * Synthesizes classic principles 10 | 11 | * Unified experience accross devices 12 | 13 | ## Key Principles 14 | 15 | [material principles](https://material.io/design/introduction#principles) 16 | 17 | * Material is metaphor - Paper, ink 18 | * Bold, graphic and intentional 19 | * Motion provides meaning 20 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/01-material-design/notes.md: -------------------------------------------------------------------------------- 1 | # Material Design 2 | 3 | ## Introduction 4 | 5 | [material.io](https://material.io/) 6 | 7 | Material is a design system created by Google to help teams build high-quality digital experiences for Android, iOS, Flutter, and the web. 8 | 9 | * Synthesizes classic principles 10 | 11 | * Unified experience accross devices 12 | 13 | ## Key Principles 14 | 15 | [material principles](https://material.io/design/introduction#principles) 16 | 17 | * Material is metaphor - Paper, ink 18 | * Bold, graphic and intentional 19 | * Motion provides meaning 20 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.scss: -------------------------------------------------------------------------------- 1 | .flex-container { 2 | display: flex; 3 | flex-direction: row; 4 | flex-wrap: wrap; 5 | 6 | justify-content: space-around; 7 | } 8 | 9 | .flex-item { 10 | width: 200px; 11 | height: 150px; 12 | 13 | background: tomato; 14 | color: white; 15 | font-weight: bold; 16 | font-size: 3em; 17 | text-align: center; 18 | line-height: 150px; 19 | } 20 | 21 | @media screen and (max-width: 800px) { 22 | .flex-container { 23 | justify-content: flex-start; 24 | } 25 | } -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/state/collection.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on } from '@ngrx/store'; 2 | import { addBook, removeBook } from './books.actions'; 3 | 4 | export const initialState: ReadonlyArray = []; 5 | 6 | export const collectionReducer = createReducer( 7 | initialState, 8 | on(removeBook, (state, { bookId }) => state.filter((id) => id !== bookId)), 9 | on(addBook, (state, { bookId }) => { 10 | if (state.indexOf(bookId) > -1) { 11 | return state; 12 | } 13 | return [...state, bookId]; 14 | }) 15 | ) -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/products/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "compilerOptions": { 4 | "module": "commonjs", 5 | "forceConsistentCasingInFileNames": true, 6 | "strict": true, 7 | "noImplicitOverride": true, 8 | "noPropertyAccessFromIndexSignature": true, 9 | "noImplicitReturns": true, 10 | "noFallthroughCasesInSwitch": true 11 | }, 12 | "files": [], 13 | "include": [], 14 | "references": [ 15 | { 16 | "path": "./tsconfig.lib.json" 17 | }, 18 | { 19 | "path": "./tsconfig.spec.json" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- 1 | $iconWidth: 56px; 2 | 3 | .sidenav-toggle { 4 | display: none; 5 | 6 | padding: 0; 7 | margin: 8px; 8 | min-width: $iconWidth; 9 | 10 | @media screen and (max-width: 720px) { 11 | display: flex; 12 | align-items: center; 13 | justify-content: center; 14 | } 15 | 16 | mat-icon { 17 | font-size: 30px; 18 | height: $iconWidth; 19 | width: $iconWidth; 20 | line-height: $iconWidth; 21 | color: white; 22 | } 23 | } -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/state/collection.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on } from '@ngrx/store'; 2 | import { addBook, removeBook } from './books.actions'; 3 | 4 | export const initialState: ReadonlyArray = []; 5 | 6 | export const collectionReducer = createReducer( 7 | initialState, 8 | on(removeBook, (state, { bookId }) => state.filter((id) => id !== bookId)), 9 | on(addBook, (state, { bookId }) => { 10 | if (state.indexOf(bookId) > -1) { 11 | return state; 12 | } 13 | return [...state, bookId] 14 | }) 15 | ) 16 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "name": "ng serve", 7 | "type": "pwa-chrome", 8 | "request": "launch", 9 | "preLaunchTask": "npm: start", 10 | "url": "http://localhost:4200/" 11 | }, 12 | { 13 | "name": "ng test", 14 | "type": "chrome", 15 | "request": "launch", 16 | "preLaunchTask": "npm: test", 17 | "url": "http://localhost:9876/debug.html" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "name": "ng serve", 7 | "type": "chrome", 8 | "request": "launch", 9 | "preLaunchTask": "npm: start", 10 | "url": "http://localhost:4200/" 11 | }, 12 | { 13 | "name": "ng test", 14 | "type": "chrome", 15 | "request": "launch", 16 | "preLaunchTask": "npm: test", 17 | "url": "http://localhost:9876/debug.html" 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/state/collection.reducer.ts: -------------------------------------------------------------------------------- 1 | import { createReducer, on, Action } from '@ngrx/store'; 2 | import { addBook, removeBook } from './books.actions'; 3 | 4 | export const initialState: ReadonlyArray = []; 5 | 6 | export const collectionReducer = createReducer( 7 | initialState, 8 | on(removeBook, (state, {bookId}) => state.filter((id) => id !== bookId)), 9 | on(addBook, (state, {bookId}) => { 10 | if (state.indexOf(bookId) > -1) { 11 | return state; 12 | } 13 | return [...state, bookId]; 14 | }) 15 | ); 16 | 17 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.scss: -------------------------------------------------------------------------------- 1 | .flex-container { 2 | display: flex; 3 | // flex-flow: row wrap; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | 7 | justify-content: space-around; 8 | } 9 | 10 | .flex-item { 11 | width: 200px; 12 | height: 150px; 13 | 14 | background: tomato; 15 | color: white; 16 | font-weight: bold; 17 | font-size: 3em; 18 | text-align: center; 19 | line-height: 150px; 20 | } 21 | 22 | @media screen and (max-width: 800px) { 23 | .flex-container { 24 | justify-content: flex-start; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.scss: -------------------------------------------------------------------------------- 1 | .flex-container { 2 | display: flex; 3 | // flex-flow: row wrap; 4 | flex-direction: row; 5 | flex-wrap: wrap; 6 | 7 | justify-content: space-around; 8 | } 9 | 10 | .flex-item { 11 | width: 200px; 12 | height: 150px; 13 | 14 | background: tomato; 15 | color: white; 16 | font-weight: bold; 17 | font-size: 3em; 18 | text-align: center; 19 | line-height: 150px; 20 | } 21 | 22 | @media screen and (max-width: 800px) { 23 | .flex-container { 24 | justify-content: flex-start; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js"], 14 | "angularCompilerOptions": { 15 | "strictInjectionParameters": true, 16 | "strictInputAccessModifiers": true, 17 | "strictTemplates": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js"], 14 | "angularCompilerOptions": { 15 | "strictInjectionParameters": true, 16 | "strictInputAccessModifiers": true, 17 | "strictTemplates": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js"], 14 | "angularCompilerOptions": { 15 | "strictInjectionParameters": true, 16 | "strictInputAccessModifiers": true, 17 | "strictTemplates": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js"], 14 | "angularCompilerOptions": { 15 | "strictInjectionParameters": true, 16 | "strictInputAccessModifiers": true, 17 | "strictTemplates": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/demo/demo-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { ButtonComponent } from './button/button.component'; 4 | import { FlexboxComponent } from './flexbox/flexbox.component'; 5 | 6 | const routes: Routes = [ 7 | { path: 'buttons', component: ButtonComponent }, 8 | { path: 'flexbox', component: FlexboxComponent }, 9 | { path: '**', redirectTo: 'buttons' } 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [RouterModule.forChild(routes)], 14 | exports: [RouterModule] 15 | }) 16 | export class DemoRoutingModule { } 17 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js"], 14 | "angularCompilerOptions": { 15 | "strictInjectionParameters": true, 16 | "strictInputAccessModifiers": true, 17 | "strictTemplates": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/demo/demo-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { ButtonComponent } from './button/button.component'; 4 | import { FlexboxComponent } from './flexbox/flexbox.component'; 5 | 6 | const routes: Routes = [ 7 | { path: 'buttons', component: ButtonComponent }, 8 | { path: 'flexbox', component: FlexboxComponent }, 9 | { path: '**', redirectTo: 'buttons' } 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [RouterModule.forChild(routes)], 14 | exports: [RouterModule] 15 | }) 16 | export class DemoRoutingModule { } 17 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "sourceMap": false, 5 | "outDir": "../../dist/out-tsc", 6 | "allowJs": true, 7 | "types": ["cypress", "node"], 8 | "forceConsistentCasingInFileNames": true, 9 | "strict": true, 10 | "noImplicitReturns": true, 11 | "noFallthroughCasesInSwitch": true 12 | }, 13 | "include": ["src/**/*.ts", "src/**/*.js"], 14 | "angularCompilerOptions": { 15 | "strictInjectionParameters": true, 16 | "strictInputAccessModifiers": true, 17 | "strictTemplates": true 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/demo/demo-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { ButtonComponent } from './button/button.component'; 4 | import { FlexboxComponent } from './flexbox/flexbox.component'; 5 | 6 | const routes: Routes = [ 7 | { path: 'buttons', component: ButtonComponent }, 8 | { path: 'flexbox', component: FlexboxComponent }, 9 | { path: '**', redirectTo: 'buttons' } 10 | ]; 11 | 12 | @NgModule({ 13 | imports: [RouterModule.forChild(routes)], 14 | exports: [RouterModule] 15 | }) 16 | export class DemoRoutingModule { } 17 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- 1 | $iconWidth: 56px; 2 | 3 | .example-spacer { 4 | flex: 1 1 auto; 5 | } 6 | 7 | .sidenav-toggle { 8 | display: none; 9 | 10 | padding: 0; 11 | margin: 8px; 12 | min-width: $iconWidth; 13 | 14 | @media screen and (max-width: 720px) { 15 | display: flex; 16 | align-items: center; 17 | justify-content: center; 18 | } 19 | 20 | mat-icon { 21 | font-size: 30px; 22 | height: $iconWidth; 23 | width: $iconWidth; 24 | line-height: $iconWidth; 25 | color: white; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ], 13 | "compilerOptions": { 14 | "forceConsistentCasingInFileNames": true, 15 | "strict": true, 16 | "noImplicitReturns": true, 17 | "noFallthroughCasesInSwitch": true 18 | }, 19 | "angularCompilerOptions": { 20 | "strictInjectionParameters": true, 21 | "strictInputAccessModifiers": true, 22 | "strictTemplates": true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.scss: -------------------------------------------------------------------------------- 1 | $iconWidth: 56px; 2 | 3 | .example-spacer { 4 | flex: 1 1 auto; 5 | } 6 | 7 | .sidenav-toggle { 8 | display: none; 9 | 10 | padding: 0; 11 | margin: 8px; 12 | min-width: $iconWidth; 13 | 14 | @media screen and (max-width: 720px) { 15 | display: flex; 16 | align-items: center; 17 | justify-content: center; 18 | } 19 | 20 | mat-icon { 21 | font-size: 30px; 22 | height: $iconWidth; 23 | width: $iconWidth; 24 | line-height: $iconWidth; 25 | color: white; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ], 13 | "compilerOptions": { 14 | "forceConsistentCasingInFileNames": true, 15 | "strict": true, 16 | "noImplicitReturns": true, 17 | "noFallthroughCasesInSwitch": true 18 | }, 19 | "angularCompilerOptions": { 20 | "strictInjectionParameters": true, 21 | "strictInputAccessModifiers": true, 22 | "strictTemplates": true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/app/demo/flexbox/flexbox.component.html: -------------------------------------------------------------------------------- 1 |
2 |
1
3 |
2
4 |
3
5 |
4
6 |
5
7 |
6
8 |
9 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ], 13 | "compilerOptions": { 14 | "forceConsistentCasingInFileNames": true, 15 | "strict": true, 16 | "noImplicitReturns": true, 17 | "noFallthroughCasesInSwitch": true 18 | }, 19 | "angularCompilerOptions": { 20 | "strictInjectionParameters": true, 21 | "strictInputAccessModifiers": true, 22 | "strictTemplates": true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.lib.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | } 12 | ], 13 | "compilerOptions": { 14 | "forceConsistentCasingInFileNames": true, 15 | "strict": true, 16 | "noImplicitReturns": true, 17 | "noFallthroughCasesInSwitch": true 18 | }, 19 | "angularCompilerOptions": { 20 | "strictInjectionParameters": true, 21 | "strictInputAccessModifiers": true, 22 | "strictTemplates": true 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": true, 8 | "declaration": false, 9 | "downlevelIteration": true, 10 | "experimentalDecorators": true, 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "target": "es2015", 14 | "module": "es2020", 15 | "lib": [ 16 | "es2018", 17 | "dom" 18 | ] 19 | }, 20 | "angularCompilerOptions": { 21 | "enableI18nLegacyMessageIdFormat": false 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": true, 8 | "declaration": false, 9 | "downlevelIteration": true, 10 | "experimentalDecorators": true, 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "target": "es2015", 14 | "module": "es2020", 15 | "lib": [ 16 | "es2018", 17 | "dom" 18 | ] 19 | }, 20 | "angularCompilerOptions": { 21 | "enableI18nLegacyMessageIdFormat": false 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FrontendApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/components/toolbar/toolbar.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FrontendApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | FrontendApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/tsconfig.json: -------------------------------------------------------------------------------- 1 | /* To learn more about this file see: https://angular.io/config/tsconfig. */ 2 | { 3 | "compileOnSave": false, 4 | "compilerOptions": { 5 | "baseUrl": "./", 6 | "outDir": "./dist/out-tsc", 7 | "sourceMap": true, 8 | "declaration": false, 9 | "downlevelIteration": true, 10 | "experimentalDecorators": true, 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "target": "es2015", 14 | "module": "es2020", 15 | "lib": [ 16 | "es2018", 17 | "dom" 18 | ] 19 | }, 20 | "angularCompilerOptions": { 21 | "enableI18nLegacyMessageIdFormat": false 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/admin-e2e/src/support/e2e.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store-e2e/src/support/e2e.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import "./commands"; 18 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # For the full list of supported browsers by the Angular framework, please see: 6 | # https://angular.io/guide/browser-support 7 | 8 | # You can see what browsers were selected by your queries by running: 9 | # npx browserslist 10 | 11 | last 1 Chrome version 12 | last 1 Firefox version 13 | last 2 Edge major versions 14 | last 2 Safari major versions 15 | last 2 iOS major versions 16 | Firefox ESR 17 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "sourceMap": true, 6 | "declaration": false, 7 | "moduleResolution": "node", 8 | "emitDecoratorMetadata": true, 9 | "experimentalDecorators": true, 10 | "importHelpers": true, 11 | "target": "es2015", 12 | "module": "esnext", 13 | "lib": ["es2017", "dom"], 14 | "skipLibCheck": true, 15 | "skipDefaultLibCheck": true, 16 | "baseUrl": ".", 17 | "paths": { 18 | "@myorg/common-ui": ["libs/common-ui/src/index.ts"], 19 | "@myorg/products": ["libs/products/src/index.ts"] 20 | } 21 | }, 22 | "exclude": ["node_modules", "tmp"] 23 | } 24 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | yarn-error.log 34 | testem.log 35 | /typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | yarn-error.log 34 | testem.log 35 | /typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | dist 5 | tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | yarn-error.log 34 | testem.log 35 | /typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | 41 | .angular 42 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | }, 12 | { 13 | "path": "./tsconfig.editor.json" 14 | } 15 | ], 16 | "compilerOptions": { 17 | "forceConsistentCasingInFileNames": true, 18 | "strict": true, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true 21 | }, 22 | "angularCompilerOptions": { 23 | "strictInjectionParameters": true, 24 | "strictInputAccessModifiers": true, 25 | "strictTemplates": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | }, 12 | { 13 | "path": "./tsconfig.editor.json" 14 | } 15 | ], 16 | "compilerOptions": { 17 | "forceConsistentCasingInFileNames": true, 18 | "strict": true, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true 21 | }, 22 | "angularCompilerOptions": { 23 | "strictInjectionParameters": true, 24 | "strictInputAccessModifiers": true, 25 | "strictTemplates": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/book-list/books.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | import { Observable } from 'rxjs'; 5 | import { map } from 'rxjs/operators'; 6 | import { Book } from './books.model'; 7 | 8 | @Injectable({ providedIn: 'root' }) 9 | export class BooksService { 10 | constructor(private http: HttpClient) {} 11 | 12 | getBooks(): Observable> { 13 | return this.http 14 | .get<{ items: Book[] }>( 15 | 'https://www.googleapis.com/books/v1/volumes?maxResults=5&orderBy=relevance&q=oliver%20sacks' 16 | ) 17 | .pipe(map((books) => books.items || [])); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-11/01-material-ui/code/frontend-app/src/app/contactmanager/contactmanager-app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { MatIconRegistry } from '@angular/material/icon'; 3 | import { DomSanitizer } from '@angular/platform-browser'; 4 | 5 | @Component({ 6 | selector: 'app-contactmanager-app', 7 | template: ` 8 | 9 | `, 10 | styles: [ 11 | ] 12 | }) 13 | export class ContactmanagerAppComponent implements OnInit { 14 | 15 | constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) { 16 | iconRegistry.addSvgIconSet(sanitizer.bypassSecurityTrustResourceUrl('assets/avatars.svg')); 17 | } 18 | 19 | ngOnInit(): void { 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/library/src/app/book-list/books.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | 4 | import { Observable } from 'rxjs'; 5 | import { map } from 'rxjs/operators'; 6 | import { Book } from './books.model'; 7 | 8 | @Injectable({ providedIn: 'root' }) 9 | export class GoogleBooksService { 10 | constructor(private http: HttpClient) {} 11 | 12 | getBooks(): Observable> { 13 | return this.http 14 | .get<{ items: Book[] }>( 15 | 'https://www.googleapis.com/books/v1/volumes?maxResults=5&orderBy=relevance&q=oliver%20sacks' 16 | ) 17 | .pipe(map((books) => books.items || [])); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | }, 12 | { 13 | "path": "./tsconfig.editor.json" 14 | } 15 | ], 16 | "compilerOptions": { 17 | "forceConsistentCasingInFileNames": true, 18 | "strict": true, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true 21 | }, 22 | "angularCompilerOptions": { 23 | "strictInjectionParameters": true, 24 | "strictInputAccessModifiers": true, 25 | "strictTemplates": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | }, 12 | { 13 | "path": "./tsconfig.editor.json" 14 | } 15 | ], 16 | "compilerOptions": { 17 | "forceConsistentCasingInFileNames": true, 18 | "strict": true, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true 21 | }, 22 | "angularCompilerOptions": { 23 | "strictInjectionParameters": true, 24 | "strictInputAccessModifiers": true, 25 | "strictTemplates": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/demo/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'demo', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/apps/demo', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'auth', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/libs/auth', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-12/01-material-ui/code/frontend-app/src/app/contactmanager/contactmanager-app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { MatIconRegistry } from '@angular/material/icon'; 3 | import { DomSanitizer } from '@angular/platform-browser'; 4 | 5 | @Component({ 6 | selector: 'app-contactmanager-app', 7 | template: ` 8 | 9 | `, 10 | styles: [ 11 | ] 12 | }) 13 | export class ContactmanagerAppComponent implements OnInit { 14 | 15 | constructor(iconRegistry: MatIconRegistry, sanitizer: DomSanitizer) { 16 | iconRegistry.addSvgIconSet(sanitizer.bypassSecurityTrustResourceUrl('assets/avatars.svg')); 17 | } 18 | 19 | ngOnInit(): void { 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | }, 12 | { 13 | "path": "./tsconfig.editor.json" 14 | } 15 | ], 16 | "compilerOptions": { 17 | "forceConsistentCasingInFileNames": true, 18 | "strict": true, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true 21 | }, 22 | "angularCompilerOptions": { 23 | "strictInjectionParameters": true, 24 | "strictInputAccessModifiers": true, 25 | "strictTemplates": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.base.json", 3 | "files": [], 4 | "include": [], 5 | "references": [ 6 | { 7 | "path": "./tsconfig.app.json" 8 | }, 9 | { 10 | "path": "./tsconfig.spec.json" 11 | }, 12 | { 13 | "path": "./tsconfig.editor.json" 14 | } 15 | ], 16 | "compilerOptions": { 17 | "forceConsistentCasingInFileNames": true, 18 | "strict": true, 19 | "noImplicitReturns": true, 20 | "noFallthroughCasesInSwitch": true 21 | }, 22 | "angularCompilerOptions": { 23 | "strictInjectionParameters": true, 24 | "strictInputAccessModifiers": true, 25 | "strictTemplates": true 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/demo/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'demo', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/apps/demo', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'auth', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/libs/auth', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal-e2e/src/support/index.ts: -------------------------------------------------------------------------------- 1 | // *********************************************************** 2 | // This example support/index.js is processed and 3 | // loaded automatically before your test files. 4 | // 5 | // This is a great place to put global configuration and 6 | // behavior that modifies Cypress. 7 | // 8 | // You can change the location of this file or turn off 9 | // automatically serving support files with the 10 | // 'supportFile' configuration option. 11 | // 12 | // You can read more here: 13 | // https://on.cypress.io/configuration 14 | // *********************************************************** 15 | 16 | // Import commands.js using ES2015 syntax: 17 | import './commands'; 18 | -------------------------------------------------------------------------------- /angular-11/02-communicating/02-ngrx-example/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "requires": true, 3 | "lockfileVersion": 1, 4 | "dependencies": { 5 | "@ngrx/store": { 6 | "version": "11.1.1", 7 | "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-11.1.1.tgz", 8 | "integrity": "sha512-tkeKoyYo631hLJ1I8+bm9EWoi7E0A3i4IMjvf956Vpu5IdMnP6d0HW3lKU/ruhFD5YOXAHcUgEIWyfxxILABag==", 9 | "requires": { 10 | "tslib": "^2.0.0" 11 | } 12 | }, 13 | "tslib": { 14 | "version": "2.3.0", 15 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", 16 | "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "sourceMap": true, 6 | "declaration": false, 7 | "moduleResolution": "node", 8 | "emitDecoratorMetadata": true, 9 | "experimentalDecorators": true, 10 | "importHelpers": true, 11 | "target": "es2015", 12 | "module": "esnext", 13 | "lib": ["es2017", "dom"], 14 | "skipLibCheck": true, 15 | "skipDefaultLibCheck": true, 16 | "baseUrl": ".", 17 | "paths": { 18 | "@demo-workspace/auth": ["libs/auth/src/index.ts"], 19 | "@demo-workspace/shared/auth": ["libs/shared/auth/src/index.ts"] 20 | } 21 | }, 22 | "exclude": ["node_modules", "tmp"] 23 | } 24 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/tsconfig.base.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "sourceMap": true, 6 | "declaration": false, 7 | "moduleResolution": "node", 8 | "emitDecoratorMetadata": true, 9 | "experimentalDecorators": true, 10 | "importHelpers": true, 11 | "target": "es2015", 12 | "module": "esnext", 13 | "lib": ["es2017", "dom"], 14 | "skipLibCheck": true, 15 | "skipDefaultLibCheck": true, 16 | "baseUrl": ".", 17 | "paths": { 18 | "@demo-workspace/auth": ["libs/auth/src/index.ts"], 19 | "@demo-workspace/shared/auth": ["libs/shared/auth/src/index.ts"] 20 | } 21 | }, 22 | "exclude": ["node_modules", "tmp"] 23 | } 24 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/libs/common-ui/src/lib/banner/banner.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { BannerComponent } from './banner.component'; 3 | 4 | describe('BannerComponent', () => { 5 | let component: BannerComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [BannerComponent], 11 | }).compileComponents(); 12 | 13 | fixture = TestBed.createComponent(BannerComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /angular-15/nx/myorg/apps/store/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from "@angular/core"; 2 | import { BrowserModule } from "@angular/platform-browser"; 3 | import { CommonUiModule } from '@myorg/common-ui'; 4 | 5 | import { RouterModule } from "@angular/router"; 6 | import { AppComponent } from "./app.component"; 7 | import { appRoutes } from "./app.routes"; 8 | import { NxWelcomeComponent } from "./nx-welcome.component"; 9 | 10 | @NgModule({ 11 | declarations: [AppComponent, NxWelcomeComponent], 12 | imports: [ 13 | BrowserModule, 14 | CommonUiModule, 15 | RouterModule.forRoot(appRoutes, { initialNavigation: "enabledBlocking" }), 16 | ], 17 | providers: [], 18 | bootstrap: [AppComponent], 19 | }) 20 | export class AppModule {} 21 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/admin-portal/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'admin-portal', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/apps/admin-portal', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/admin-portal/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'admin-portal', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/apps/admin-portal', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/shared/auth/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'shared-auth', 3 | preset: '../../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../../coverage/libs/shared/auth', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/shared/auth/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'shared-auth', 3 | preset: '../../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../../coverage/libs/shared/auth', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/apps/customer-portal/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'customer-portal', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/apps/customer-portal', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/apps/customer-portal/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | displayName: 'customer-portal', 3 | preset: '../../jest.preset.js', 4 | setupFilesAfterEnv: ['/src/test-setup.ts'], 5 | globals: { 6 | 'ts-jest': { 7 | tsconfig: '/tsconfig.spec.json', 8 | stringifyContentPathRegex: '\\.(html|svg)$', 9 | }, 10 | }, 11 | coverageDirectory: '../../coverage/apps/customer-portal', 12 | transform: { 13 | '^.+\\.(ts|js|html)$': 'jest-preset-angular', 14 | }, 15 | snapshotSerializers: [ 16 | 'jest-preset-angular/build/serializers/no-ng-attributes', 17 | 'jest-preset-angular/build/serializers/ng-snapshot', 18 | 'jest-preset-angular/build/serializers/html-comment', 19 | ], 20 | }; 21 | -------------------------------------------------------------------------------- /angular-11/03-nx/code/demo-workspace/libs/auth/src/lib/containers/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Store } from '@ngrx/store'; 3 | import { login } from '../../+state/auth.actions'; 4 | import { AuthPartialState } from '../../+state/auth.reducer'; 5 | 6 | @Component({ 7 | selector: 'demo-workspace-login', 8 | templateUrl: './login.component.html', 9 | styleUrls: ['./login.component.css'] 10 | }) 11 | export class LoginComponent implements OnInit { 12 | 13 | constructor(private store: Store) { } 14 | 15 | ngOnInit(): void { 16 | this.store.subscribe((e) => { 17 | console.log(e['auth']); 18 | }) 19 | } 20 | 21 | login() { 22 | this.store.dispatch(login()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/state/books.selectors.ts: -------------------------------------------------------------------------------- 1 | import { createSelector, createFeatureSelector } from "@ngrx/store"; 2 | import { AppState } from "./app.state"; 3 | import { Book } from "../book-list/books.model"; 4 | 5 | export const selectBooks = createSelector( 6 | (state: AppState) => state.books as Book[], 7 | (books: Array) => books 8 | ); 9 | 10 | export const selectCollectionState = createFeatureSelector< 11 | ReadonlyArray | any 12 | >("collection"); 13 | 14 | export const selectBookCollection = createSelector( 15 | selectBooks, 16 | selectCollectionState, 17 | (books: Array, collection: Array) => { 18 | return collection.map((id) => books.find((book) => book.id === id)); 19 | } 20 | ); 21 | -------------------------------------------------------------------------------- /angular-12/03-nx/code/demo-workspace/libs/auth/src/lib/containers/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Store } from '@ngrx/store'; 3 | import { login } from '../../+state/auth.actions'; 4 | import { AuthPartialState } from '../../+state/auth.reducer'; 5 | 6 | @Component({ 7 | selector: 'demo-workspace-login', 8 | templateUrl: './login.component.html', 9 | styleUrls: ['./login.component.css'] 10 | }) 11 | export class LoginComponent implements OnInit { 12 | 13 | constructor(private store: Store) { } 14 | 15 | ngOnInit(): void { 16 | this.store.subscribe((e) => { 17 | console.log(e['auth']); 18 | }) 19 | } 20 | 21 | login() { 22 | this.store.dispatch(login()); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /angular-15/02-communicating/02-ngrx-example/library/src/app/state/books.selectors.ts: -------------------------------------------------------------------------------- 1 | import { createSelector, createFeatureSelector } from '@ngrx/store'; 2 | import { AppState } from './app.state'; 3 | import { Book } from '../book-list/books.model'; 4 | 5 | export const selectBooks = createSelector( 6 | (state: AppState) => state.books as Book[], 7 | (books: Array) => books 8 | ); 9 | 10 | export const selectCollectionState = createFeatureSelector | any>('collection'); 11 | 12 | export const selectBookCollection = createSelector( 13 | selectBooks, 14 | selectCollectionState, 15 | (books: Array, collection: Array) => { 16 | return collection.map((id) => books.find((book) => book.id === id)) 17 | } 18 | ) 19 | -------------------------------------------------------------------------------- /angular-12/02-communicating/02-ngrx-example/library/src/app/book-list/books.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | import { Observable } from 'rxjs'; 4 | import { map } from 'rxjs/operators'; 5 | import { Book } from './books.model'; 6 | 7 | @Injectable({ 8 | providedIn: 'root' 9 | }) 10 | export class BooksService { 11 | 12 | constructor(private http: HttpClient) { } 13 | 14 | getBooks(): Observable> { 15 | return this.http 16 | .get<{items: Book[]}>( 17 | 'https://www.googleapis.com/books/v1/volumes?maxResults=5&orderBy=relevance&q=oliver%20sacks' 18 | ).pipe( 19 | map( 20 | (books) => books.items || [] 21 | ) 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /angular-13/01-material-ui/code/frontend-app/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # Compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | /bazel-out 8 | 9 | # Node 10 | /node_modules 11 | npm-debug.log 12 | yarn-error.log 13 | 14 | # IDEs and editors 15 | .idea/ 16 | .project 17 | .classpath 18 | .c9/ 19 | *.launch 20 | .settings/ 21 | *.sublime-workspace 22 | 23 | # Visual Studio Code 24 | .vscode/* 25 | !.vscode/settings.json 26 | !.vscode/tasks.json 27 | !.vscode/launch.json 28 | !.vscode/extensions.json 29 | .history/* 30 | 31 | # Miscellaneous 32 | /.angular/cache 33 | .sass-cache/ 34 | /connect.lock 35 | /coverage 36 | /libpeerconnection.log 37 | testem.log 38 | /typings 39 | 40 | # System files 41 | .DS_Store 42 | Thumbs.db 43 | --------------------------------------------------------------------------------