├── 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 |
5 |
6 |
7 | My Collection
8 |
--------------------------------------------------------------------------------
/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 |
5 |
6 |
7 | My Collection
8 |
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 |
--------------------------------------------------------------------------------