├── README.md ├── 01.Intro ├── my-first-app │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── app.routes.ts │ │ │ ├── app.config.ts │ │ │ └── app.component.ts │ │ ├── styles.css │ │ ├── favicon.ico │ │ ├── main.ts │ │ └── index.html │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── spa │ └── index.html └── mpa │ ├── about.html │ └── contacts.html ├── 02.Components └── my-demo-app-16 │ ├── src │ ├── assets │ │ └── .gitkeep │ ├── app │ │ ├── test-component │ │ │ ├── test-component.component.css │ │ │ ├── test-component.component.html │ │ │ └── test-component.component.ts │ │ ├── app.component.css │ │ ├── navigation │ │ │ ├── navigation.component.html │ │ │ ├── navigation.component.ts │ │ │ └── navigation.component.css │ │ ├── user-list │ │ │ ├── user-list.component.css │ │ │ ├── user-list.component.html │ │ │ └── user-list.component.spec.ts │ │ ├── playground │ │ │ ├── playground.component.css │ │ │ └── playground.component.spec.ts │ │ ├── app.component.ts │ │ ├── nav │ │ │ └── nav.component.ts │ │ └── app.component.html │ ├── favicon.ico │ ├── styles.css │ ├── main.ts │ └── index.html │ ├── .vscode │ ├── extensions.json │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── 04.WorkshopComponents ├── resources │ ├── views │ │ ├── layout.css │ │ ├── reset.css │ │ ├── responsive.css │ │ ├── typography.css │ │ └── style.css │ └── forum │ │ ├── posts.bson │ │ ├── themes.bson │ │ ├── users.bson │ │ ├── posts.metadata.json │ │ ├── themes.metadata.json │ │ └── users.metadata.json ├── my-app-17 │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── home-test │ │ │ │ ├── home-test.component.css │ │ │ │ ├── home-test.component.html │ │ │ │ └── home-test.component.ts │ │ │ ├── app.routes.ts │ │ │ └── app.config.ts │ │ ├── styles.css │ │ ├── favicon.ico │ │ ├── main.ts │ │ └── index.html │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── workshop-components │ ├── src │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── app.component.html │ │ │ ├── shared │ │ │ │ ├── loader │ │ │ │ │ ├── loader.component.html │ │ │ │ │ └── loader.component.ts │ │ │ │ └── shared.module.ts │ │ │ ├── main │ │ │ │ ├── main.component.html │ │ │ │ ├── main.component.ts │ │ │ │ └── main.component.css │ │ │ ├── app.component.ts │ │ │ ├── core │ │ │ │ ├── footer │ │ │ │ │ ├── footer.component.ts │ │ │ │ │ ├── footer.component.html │ │ │ │ │ └── footer.component.css │ │ │ │ ├── header │ │ │ │ │ └── header.component.ts │ │ │ │ └── core.module.ts │ │ │ ├── types │ │ │ │ ├── theme.ts │ │ │ │ ├── user.ts │ │ │ │ └── post.ts │ │ │ ├── app-routing.module.ts │ │ │ └── posts-list │ │ │ │ └── posts-list.component.html │ │ ├── environments │ │ │ ├── environment.ts │ │ │ └── environment.development.ts │ │ ├── favicon.ico │ │ └── main.ts │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig └── Rest-api │ ├── .gitignore │ ├── app-config.js │ ├── .gitattributes │ ├── utils │ ├── index.js │ ├── errHandler.js │ └── jwt.js │ ├── controllers │ └── index.js │ ├── models │ ├── tokenBlacklistModel.js │ ├── index.js │ ├── postModel.js │ └── themeModel.js │ ├── config │ ├── db.js │ ├── config.js │ └── express.js │ ├── router │ ├── posts.js │ ├── likes.js │ ├── users.js │ ├── test.js │ └── index.js │ └── .vscode │ └── launch.json ├── 05.ModulesAndRouting └── my-app │ ├── src │ ├── assets │ │ └── .gitkeep │ ├── app │ │ ├── shared │ │ │ ├── error-page │ │ │ │ ├── error-page.component.css │ │ │ │ ├── error-page.component.html │ │ │ │ ├── error-page.component.ts │ │ │ │ └── error-page.component.spec.ts │ │ │ ├── spinner │ │ │ │ ├── spinner.component.html │ │ │ │ ├── spinner.component.ts │ │ │ │ └── spinner.component.spec.ts │ │ │ └── shared.module.ts │ │ ├── user │ │ │ ├── user-detail │ │ │ │ ├── user-detail.component.css │ │ │ │ └── user-detail.component.html │ │ │ ├── user.service.spec.ts │ │ │ ├── user-list │ │ │ │ ├── user-list.component.html │ │ │ │ ├── user-list.component.css │ │ │ │ └── user-list.component.spec.ts │ │ │ └── user.service.ts │ │ ├── app.component.css │ │ ├── todo │ │ │ ├── todo-list │ │ │ │ ├── todo-list.component.html │ │ │ │ ├── todo-list.component.css │ │ │ │ ├── todo-list.component.ts │ │ │ │ └── todo-list.component.spec.ts │ │ │ └── todo.module.ts │ │ ├── app.component.html │ │ ├── core │ │ │ ├── global-loader │ │ │ │ ├── global-loader.component.html │ │ │ │ ├── global-loader.component.css │ │ │ │ ├── global-loader.service.ts │ │ │ │ ├── global-loader.component.ts │ │ │ │ └── global-loader.service.spec.ts │ │ │ ├── nav │ │ │ │ ├── nav.component.css │ │ │ │ ├── nav.component.html │ │ │ │ ├── nav.component.ts │ │ │ │ └── nav.component.spec.ts │ │ │ └── core.module.ts │ │ ├── app.component.ts │ │ └── types │ │ │ └── user.ts │ ├── favicon.ico │ ├── styles.css │ ├── main.ts │ └── index.html │ ├── .vscode │ ├── extensions.json │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── 03.ServicesRxjs └── my-playground │ ├── src │ ├── assets │ │ └── .gitkeep │ ├── app │ │ ├── app.component.css │ │ ├── user-item │ │ │ ├── user-item.component.css │ │ │ ├── user-item.component.html │ │ │ └── user-item.component.ts │ │ ├── user-list │ │ │ ├── user-list.component.css │ │ │ └── user-list.component.html │ │ ├── app.component.html │ │ ├── user.service.spec.ts │ │ ├── monkey-patching-demo.ts │ │ └── types │ │ │ └── user.ts │ ├── styles.css │ ├── favicon.ico │ ├── main.ts │ └── index.html │ ├── .vscode │ ├── extensions.json │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── 06.WorkshopModulesAndRouting ├── resources │ ├── views │ │ ├── home │ │ │ └── home.css │ │ ├── login │ │ │ └── login.css │ │ ├── 404-not-found │ │ │ └── 404.css │ │ ├── new-theme │ │ │ └── new-theme.css │ │ ├── profile │ │ │ └── profile.css │ │ ├── register │ │ │ └── register.css │ │ └── theme-content │ │ │ ├── theme-content.css │ │ │ ├── profile.png │ │ │ ├── responsive.css │ │ │ ├── reset.css │ │ │ └── layout.css │ └── forum │ │ ├── posts.bson │ │ ├── themes.bson │ │ ├── users.bson │ │ ├── posts.metadata.json │ │ ├── themes.metadata.json │ │ └── users.metadata.json ├── workshop-modules │ ├── src │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── profile.png │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── home │ │ │ │ ├── home.component.css │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ ├── app.component.html │ │ │ ├── shared │ │ │ │ ├── loader │ │ │ │ │ ├── loader.component.html │ │ │ │ │ └── loader.component.ts │ │ │ │ ├── welcom-msg │ │ │ │ │ └── welcom-msg.component.ts │ │ │ │ └── shared.module.ts │ │ │ ├── theme │ │ │ │ ├── main │ │ │ │ │ ├── main.component.html │ │ │ │ │ ├── main.component.ts │ │ │ │ │ └── main.component.css │ │ │ │ └── posts-list │ │ │ │ │ └── posts-list.component.html │ │ │ ├── app.component.ts │ │ │ ├── error │ │ │ │ ├── error.component.ts │ │ │ │ └── error.component.html │ │ │ ├── user │ │ │ │ ├── register │ │ │ │ │ └── register.component.ts │ │ │ │ ├── profile │ │ │ │ │ ├── profile.component.ts │ │ │ │ │ └── profile.component.html │ │ │ │ ├── login │ │ │ │ │ └── login.component.ts │ │ │ │ ├── user.module.ts │ │ │ │ └── user-routing.module.ts │ │ │ ├── core │ │ │ │ ├── footer │ │ │ │ │ ├── footer.component.ts │ │ │ │ │ ├── footer.component.html │ │ │ │ │ └── footer.component.css │ │ │ │ └── core.module.ts │ │ │ ├── types │ │ │ │ ├── post.ts │ │ │ │ ├── theme.ts │ │ │ │ └── user.ts │ │ │ └── app-routing.module.ts │ │ ├── environments │ │ │ ├── environment.ts │ │ │ └── environment.development.ts │ │ ├── favicon.ico │ │ └── main.ts │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig └── Rest-api │ ├── .gitignore │ ├── app-config.js │ ├── .gitattributes │ ├── utils │ ├── index.js │ ├── errHandler.js │ └── jwt.js │ ├── controllers │ └── index.js │ ├── models │ ├── tokenBlacklistModel.js │ ├── index.js │ ├── postModel.js │ └── themeModel.js │ ├── config │ ├── db.js │ ├── config.js │ └── express.js │ ├── router │ ├── posts.js │ ├── likes.js │ ├── users.js │ ├── test.js │ └── index.js │ └── .vscode │ └── launch.json ├── 07.DirectivesAndForms └── directives-and-forms │ ├── src │ ├── assets │ │ └── .gitkeep │ ├── app │ │ ├── app.component.css │ │ ├── login │ │ │ ├── login.component.css │ │ │ └── login.component.spec.ts │ │ ├── register │ │ │ ├── register.component.css │ │ │ └── register.component.spec.ts │ │ ├── app.component.html │ │ ├── home │ │ │ ├── home.component.css │ │ │ ├── home.component.ts │ │ │ └── home.component.spec.ts │ │ └── app.component.ts │ ├── styles.css │ ├── favicon.ico │ ├── main.ts │ └── index.html │ ├── .vscode │ ├── extensions.json │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── 08.WorkshopFormsAndDirectives ├── resources │ ├── views │ │ ├── home │ │ │ └── home.css │ │ ├── login │ │ │ └── login.css │ │ ├── 404-not-found │ │ │ └── 404.css │ │ ├── profile │ │ │ └── profile.css │ │ ├── register │ │ │ └── register.css │ │ ├── new-theme │ │ │ └── new-theme.css │ │ ├── theme-content │ │ │ ├── theme-content.css │ │ │ ├── profile.png │ │ │ ├── responsive.css │ │ │ ├── reset.css │ │ │ └── layout.css │ │ └── profile-edit-view │ │ │ ├── profile.png │ │ │ └── Angular - Workshop - Part 3.docx │ └── forum │ │ ├── posts.bson │ │ ├── users.bson │ │ ├── themes.bson │ │ ├── posts.metadata.json │ │ ├── themes.metadata.json │ │ └── users.metadata.json ├── workshop-forms │ ├── src │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── profile.png │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── home │ │ │ │ ├── home.component.css │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ ├── constants.ts │ │ │ ├── app.component.html │ │ │ ├── shared │ │ │ │ ├── loader │ │ │ │ │ ├── loader.component.html │ │ │ │ │ └── loader.component.ts │ │ │ │ ├── welcom-msg │ │ │ │ │ └── welcom-msg.component.ts │ │ │ │ ├── utils │ │ │ │ │ ├── email-validator.ts │ │ │ │ │ └── match-passwords-validator.ts │ │ │ │ └── shared.module.ts │ │ │ ├── theme │ │ │ │ ├── main │ │ │ │ │ ├── main.component.html │ │ │ │ │ ├── main.component.ts │ │ │ │ │ └── main.component.css │ │ │ │ ├── add-theme │ │ │ │ │ └── add-theme.component.ts │ │ │ │ └── posts-list │ │ │ │ │ └── posts-list.component.html │ │ │ ├── app.component.ts │ │ │ ├── error │ │ │ │ ├── error.component.ts │ │ │ │ └── error.component.html │ │ │ ├── core │ │ │ │ ├── footer │ │ │ │ │ ├── footer.component.ts │ │ │ │ │ ├── footer.component.html │ │ │ │ │ └── footer.component.css │ │ │ │ └── core.module.ts │ │ │ ├── types │ │ │ │ ├── post.ts │ │ │ │ ├── theme.ts │ │ │ │ └── user.ts │ │ │ ├── app-routing.module.ts │ │ │ └── user │ │ │ │ └── user-routing.module.ts │ │ ├── environments │ │ │ ├── environment.ts │ │ │ └── environment.development.ts │ │ ├── favicon.ico │ │ └── main.ts │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig └── Rest-api │ ├── .gitignore │ ├── app-config.js │ ├── .gitattributes │ ├── utils │ ├── index.js │ ├── errHandler.js │ └── jwt.js │ ├── controllers │ └── index.js │ ├── models │ ├── tokenBlacklistModel.js │ ├── index.js │ ├── postModel.js │ └── themeModel.js │ ├── config │ ├── db.js │ ├── config.js │ └── express.js │ ├── router │ ├── posts.js │ ├── likes.js │ ├── users.js │ ├── test.js │ └── index.js │ └── .vscode │ └── launch.json ├── 11.StateManagement └── state-management-demo │ ├── src │ ├── assets │ │ └── .gitkeep │ ├── app │ │ ├── app.component.css │ │ ├── post │ │ │ ├── post.component.css │ │ │ ├── post.type.ts │ │ │ └── post.component.html │ │ ├── translate │ │ │ ├── translate.component.css │ │ │ ├── translate.type.ts │ │ │ ├── translate.component.html │ │ │ └── translate.reducer.ts │ │ ├── redux-sync-simulation │ │ │ ├── redux-sync-simulation.component.css │ │ │ └── redux-sync-simulation.component.html │ │ ├── app.component.html │ │ ├── app.component.ts │ │ └── app-routing.module.ts │ ├── styles.css │ ├── favicon.ico │ ├── main.ts │ └── index.html │ ├── .vscode │ ├── extensions.json │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig ├── 10.WorkshopPipesInterceptorsSubjects ├── resources │ ├── views │ │ ├── home │ │ │ └── home.css │ │ ├── login │ │ │ └── login.css │ │ ├── profile │ │ │ └── profile.css │ │ ├── 404-not-found │ │ │ └── 404.css │ │ ├── new-theme │ │ │ └── new-theme.css │ │ ├── register │ │ │ └── register.css │ │ ├── theme-content │ │ │ ├── theme-content.css │ │ │ ├── profile.png │ │ │ ├── responsive.css │ │ │ ├── reset.css │ │ │ └── layout.css │ │ └── profile-edit-view │ │ │ ├── profile.png │ │ │ └── Angular - Workshop - Part 3.docx │ └── forum │ │ ├── posts.bson │ │ ├── themes.bson │ │ ├── users.bson │ │ ├── posts.metadata.json │ │ ├── themes.metadata.json │ │ └── users.metadata.json ├── workshop-interceptors │ ├── src │ │ ├── assets │ │ │ ├── .gitkeep │ │ │ └── profile.png │ │ ├── app │ │ │ ├── app.component.css │ │ │ ├── home │ │ │ │ ├── home.component.css │ │ │ │ ├── home.component.html │ │ │ │ └── home.component.ts │ │ │ ├── authenticate │ │ │ │ ├── authenticate.component.css │ │ │ │ └── authenticate.component.html │ │ │ ├── constants.ts │ │ │ ├── shared │ │ │ │ ├── loader │ │ │ │ │ ├── loader.component.html │ │ │ │ │ └── loader.component.ts │ │ │ │ ├── welcom-msg │ │ │ │ │ └── welcom-msg.component.ts │ │ │ │ ├── pipes │ │ │ │ │ ├── slice.pipe.ts │ │ │ │ │ └── elapsed-time.pipe.ts │ │ │ │ └── utils │ │ │ │ │ ├── email-validator.ts │ │ │ │ │ └── match-passwords-validator.ts │ │ │ ├── core │ │ │ │ ├── error │ │ │ │ │ ├── error.component.html │ │ │ │ │ ├── error.service.ts │ │ │ │ │ ├── error.component.css │ │ │ │ │ └── error.component.ts │ │ │ │ ├── footer │ │ │ │ │ ├── footer.component.ts │ │ │ │ │ ├── footer.component.html │ │ │ │ │ └── footer.component.css │ │ │ │ └── core.module.ts │ │ │ ├── theme │ │ │ │ ├── main │ │ │ │ │ ├── main.component.html │ │ │ │ │ ├── main.component.ts │ │ │ │ │ └── main.component.css │ │ │ │ └── posts-list │ │ │ │ │ └── posts-list.component.html │ │ │ ├── app.component.html │ │ │ ├── app.component.ts │ │ │ ├── not-found │ │ │ │ ├── not-found.component.ts │ │ │ │ └── not-found.component.html │ │ │ └── types │ │ │ │ ├── post.ts │ │ │ │ ├── theme.ts │ │ │ │ └── user.ts │ │ ├── environments │ │ │ ├── environment.ts │ │ │ └── environment.development.ts │ │ ├── favicon.ico │ │ └── main.ts │ ├── .vscode │ │ ├── extensions.json │ │ └── launch.json │ ├── tsconfig.app.json │ ├── tsconfig.spec.json │ └── .editorconfig └── Rest-api │ ├── .gitignore │ ├── app-config.js │ ├── .gitattributes │ ├── utils │ ├── index.js │ ├── errHandler.js │ └── jwt.js │ ├── controllers │ └── index.js │ ├── models │ ├── tokenBlacklistModel.js │ ├── index.js │ ├── postModel.js │ └── themeModel.js │ ├── config │ ├── db.js │ ├── config.js │ └── express.js │ ├── router │ ├── posts.js │ ├── likes.js │ ├── users.js │ ├── test.js │ └── index.js │ └── .vscode │ └── launch.json └── 09.PipesInterceptorsSubjects └── pipes-subjects-interceptors ├── src ├── assets │ └── .gitkeep ├── app │ ├── app.component.css │ ├── home │ │ ├── home.component.css │ │ ├── home.component.html │ │ ├── home.component.ts │ │ └── home.component.spec.ts │ ├── lazy │ │ ├── lazy │ │ │ ├── lazy.component.css │ │ │ ├── lazy.component.html │ │ │ └── lazy.component.ts │ │ ├── lazy.module.ts │ │ └── lazy-routing.module.ts │ └── constants.ts ├── styles.css ├── favicon.ico └── index.html ├── .vscode ├── extensions.json └── launch.json ├── tsconfig.app.json ├── tsconfig.spec.json └── .editorconfig /README.md: -------------------------------------------------------------------------------- 1 | # SoftUni-Angular-2024 2 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/views/layout.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/views/reset.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/views/responsive.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/views/typography.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/home/home.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/login/login.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/home/home.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/login/login.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/404-not-found/404.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/new-theme/new-theme.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/profile/profile.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/register/register.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/404-not-found/404.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/profile/profile.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/register/register.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/home/home.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/login/login.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/user-item/user-item.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/user-list/user-list.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.env 3 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/app/home-test/home-test.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/new-theme/new-theme.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/profile/profile.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/post/post.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/error-page/error-page.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user-detail/user-detail.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.env 3 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/theme-content/theme-content.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/home/home.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/login/login.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/theme-content/theme-content.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/home/home.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/404-not-found/404.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/new-theme/new-theme.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/register/register.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/test-component/test-component.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/register/register.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.env 3 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/translate/translate.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

Hello Angular! {{ pesho }}

2 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/home/home.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.env 3 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/theme-content/theme-content.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | h3 { 2 | color: green; 3 | } 4 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | * { 2 | font-size: 30px; 3 | } 4 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/lazy/lazy/lazy.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/home/home.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/app/home-test/home-test.component.html: -------------------------------------------------------------------------------- 1 |

home-test works!

2 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/error-page/error-page.component.html: -------------------------------------------------------------------------------- 1 |

error-page works!

2 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/authenticate/authenticate.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/redux-sync-simulation/redux-sync-simulation.component.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user-detail/user-detail.component.html: -------------------------------------------------------------------------------- 1 |

user-detail works!

2 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/constants.ts: -------------------------------------------------------------------------------- 1 | export const EMAIL_DOMAINS = ['bg', 'com']; 2 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 |

home works!

2 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/test-component/test-component.component.html: -------------------------------------------------------------------------------- 1 |

test-component works!

2 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/lazy/lazy/lazy.component.html: -------------------------------------------------------------------------------- 1 |

lazy works!

2 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/shared/loader/loader.component.html: -------------------------------------------------------------------------------- 1 |
Loading...
2 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/constants.ts: -------------------------------------------------------------------------------- 1 | export const EMAIL_DOMAINS = ['bg', 'com']; 2 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/app/app.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | 3 | export const routes: Routes = []; 4 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/user-item/user-item.component.html: -------------------------------------------------------------------------------- 1 |

name: {{ user.name }}, email: {{ user.email }}

2 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/shared/loader/loader.component.html: -------------------------------------------------------------------------------- 1 |
Loading...
2 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/shared/loader/loader.component.html: -------------------------------------------------------------------------------- 1 |
Loading...
2 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/01.Intro/my-first-app/src/favicon.ico -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/app-config.js: -------------------------------------------------------------------------------- 1 | const authCookieName = 'auth-cookie'; 2 | 3 | module.exports = { 4 | authCookieName, 5 | } -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/app/app.routes.ts: -------------------------------------------------------------------------------- 1 | import { Routes } from '@angular/router'; 2 | 3 | export const routes: Routes = []; 4 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/loader/loader.component.html: -------------------------------------------------------------------------------- 1 |
Loading...
2 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/translate/translate.type.ts: -------------------------------------------------------------------------------- 1 | export interface TranslateState { 2 | message: string; 3 | } 4 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/02.Components/my-demo-app-16/src/favicon.ico -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/todo/todo-list/todo-list.component.html: -------------------------------------------------------------------------------- 1 |
2 |
todo-list works!
3 |
4 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/05.ModulesAndRouting/my-app/src/favicon.ico -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/constants.ts: -------------------------------------------------------------------------------- 1 | export const API_URL = 'https://jsonplaceholder.typicode.com'; 2 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/redux-sync-simulation/redux-sync-simulation.component.html: -------------------------------------------------------------------------------- 1 |

redux-sync-simulation works!

2 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/03.ServicesRxjs/my-playground/src/favicon.ico -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-detectable=false 2 | *.html linguist-detectable=false 3 | *.js linguist-detectable=true -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/app-config.js: -------------------------------------------------------------------------------- 1 | const authCookieName = 'auth-cookie'; 2 | 3 | module.exports = { 4 | authCookieName, 5 | } -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/app-config.js: -------------------------------------------------------------------------------- 1 | const authCookieName = 'auth-cookie'; 2 | 3 | module.exports = { 4 | authCookieName, 5 | } -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/04.WorkshopComponents/my-app-17/src/favicon.ico -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/forum/posts.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/04.WorkshopComponents/resources/forum/posts.bson -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/forum/themes.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/04.WorkshopComponents/resources/forum/themes.bson -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/forum/users.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/04.WorkshopComponents/resources/forum/users.bson -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-detectable=false 2 | *.html linguist-detectable=false 3 | *.js linguist-detectable=true -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-detectable=false 2 | *.html linguist-detectable=false 3 | *.js linguist-detectable=true -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/app-config.js: -------------------------------------------------------------------------------- 1 | const authCookieName = 'auth-cookie'; 2 | 3 | module.exports = { 4 | authCookieName, 5 | } -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/error/error.component.html: -------------------------------------------------------------------------------- 1 |

{{ errorMsg }}

2 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/main/main.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/environments/environment.development.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/.gitattributes: -------------------------------------------------------------------------------- 1 | *.css linguist-detectable=false 2 | *.html linguist-detectable=false 3 | *.js linguist-detectable=true -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/forum/posts.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/06.WorkshopModulesAndRouting/resources/forum/posts.bson -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/forum/themes.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/06.WorkshopModulesAndRouting/resources/forum/themes.bson -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/forum/users.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/06.WorkshopModulesAndRouting/resources/forum/users.bson -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/environments/environment.development.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/forum/posts.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/resources/forum/posts.bson -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/forum/users.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/resources/forum/users.bson -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/theme/main/main.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/environments/environment.development.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/11.StateManagement/state-management-demo/src/favicon.ico -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/04.WorkshopComponents/workshop-components/src/favicon.ico -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/theme/main/main.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/07.DirectivesAndForms/directives-and-forms/src/favicon.ico -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/forum/themes.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/resources/forum/themes.bson -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/forum/posts.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.posts"}],"uuid":"8e8754eadf90424aa5cf5d9e2bfbb48e"} -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/06.WorkshopModulesAndRouting/workshop-modules/src/favicon.ico -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/workshop-forms/src/favicon.ico -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/forum/themes.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.themes"}],"uuid":"a9e25cd8f9d44ee39d90dc2584bf437d"} -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/forum/posts.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/resources/forum/posts.bson -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/forum/themes.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/resources/forum/themes.bson -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/forum/users.bson: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/resources/forum/users.bson -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/theme/main/main.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/environments/environment.development.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | apiUrl: 'http://localhost:3000/api', 3 | }; 4 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/global-loader/global-loader.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/forum/posts.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.posts"}],"uuid":"8e8754eadf90424aa5cf5d9e2bfbb48e"} -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/forum/themes.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.themes"}],"uuid":"a9e25cd8f9d44ee39d90dc2584bf437d"} -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/forum/posts.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.posts"}],"uuid":"8e8754eadf90424aa5cf5d9e2bfbb48e"} -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/forum/themes.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.themes"}],"uuid":"a9e25cd8f9d44ee39d90dc2584bf437d"} -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/assets/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/06.WorkshopModulesAndRouting/workshop-modules/src/assets/profile.png -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/assets/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/workshop-forms/src/assets/profile.png -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | * { 4 | font-size: 30px; 5 | } 6 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/forum/posts.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.posts"}],"uuid":"8e8754eadf90424aa5cf5d9e2bfbb48e"} -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/authenticate/authenticate.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/theme-content/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/06.WorkshopModulesAndRouting/resources/views/theme-content/profile.png -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/theme-content/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/resources/views/theme-content/profile.png -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/forum/themes.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.themes"}],"uuid":"a9e25cd8f9d44ee39d90dc2584bf437d"} -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/home/home.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/views/style.css: -------------------------------------------------------------------------------- 1 | @import url("reset.css"); 2 | @import url("layout.css"); 3 | @import url("typography.css"); 4 | @import url("responsive.css"); 5 | 6 | /* main */ 7 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/favicon.ico -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/favicon.ico -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/post/post.type.ts: -------------------------------------------------------------------------------- 1 | export interface PostState { 2 | post: Post; 3 | } 4 | 5 | export interface Post { 6 | likes?: number; 7 | text?: string; 8 | } 9 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/navigation/navigation.component.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/profile-edit-view/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/resources/views/profile-edit-view/profile.png -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/theme-content/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/resources/views/theme-content/profile.png -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |

hello

3 | 4 |
5 | 6 |
7 | 8 |
9 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/home/home.component.css: -------------------------------------------------------------------------------- 1 | .highlight { 2 | background-color: orange; 3 | color: white; 4 | font-size: 20px; 5 | font-weight: 700; 6 | cursor: pointer; 7 | } 8 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/assets/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/assets/profile.png -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/profile-edit-view/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/resources/views/profile-edit-view/profile.png -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846 3 | "recommendations": ["angular.ng-template"] 4 | } 5 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | body { 4 | font-size: 30px; 5 | font-weight: bold; 6 | margin: 0; 7 | padding: 0; 8 | } 9 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/user-list/user-list.component.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
  • 4 | 5 |
  • 6 |
7 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | html, body { height: 100%; } 4 | body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } 5 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/profile-edit-view/Angular - Workshop - Part 3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/08.WorkshopFormsAndDirectives/resources/views/profile-edit-view/Angular - Workshop - Part 3.docx -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/user-list/user-list.component.css: -------------------------------------------------------------------------------- 1 | .green { 2 | background-color: aquamarine; 3 | } 4 | 5 | .red { 6 | background-color: pink; 7 | } 8 | 9 | .yellow { 10 | background-color: rgb(236, 255, 127); 11 | } 12 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/utils/index.js: -------------------------------------------------------------------------------- 1 | const jwt = require('./jwt'); 2 | const auth = require('./auth'); 3 | const errorHandler = require('./errHandler'); 4 | 5 | module.exports = { 6 | jwt, 7 | auth, 8 | errorHandler 9 | } 10 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/spinner/spinner.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/profile-edit-view/Angular - Workshop - Part 3.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tsvetis/Angular-Feb-2024/HEAD/10.WorkshopPipesInterceptorsSubjects/resources/views/profile-edit-view/Angular - Workshop - Part 3.docx -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/utils/index.js: -------------------------------------------------------------------------------- 1 | const jwt = require('./jwt'); 2 | const auth = require('./auth'); 3 | const errorHandler = require('./errHandler'); 4 | 5 | module.exports = { 6 | jwt, 7 | auth, 8 | errorHandler 9 | } 10 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/utils/index.js: -------------------------------------------------------------------------------- 1 | const jwt = require('./jwt'); 2 | const auth = require('./auth'); 3 | const errorHandler = require('./errHandler'); 4 | 5 | module.exports = { 6 | jwt, 7 | auth, 8 | errorHandler 9 | } 10 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/utils/index.js: -------------------------------------------------------------------------------- 1 | const jwt = require('./jwt'); 2 | const auth = require('./auth'); 3 | const errorHandler = require('./errHandler'); 4 | 5 | module.exports = { 6 | jwt, 7 | auth, 8 | errorHandler 9 | } 10 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/translate/translate.component.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ msg$ | async }}

3 | 4 | 5 | 6 |
7 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/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.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/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.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/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.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/main/main.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-main', 5 | templateUrl: './main.component.html', 6 | styleUrls: ['./main.component.css'], 7 | }) 8 | export class MainComponent {} 9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/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 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/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 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/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 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/app/app.config.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationConfig } from '@angular/core'; 2 | import { provideRouter } from '@angular/router'; 3 | 4 | import { routes } from './app.routes'; 5 | 6 | export const appConfig: ApplicationConfig = { 7 | providers: [provideRouter(routes)] 8 | }; 9 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/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 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { appConfig } from './app/app.config'; 3 | import { AppComponent } from './app/app.component'; 4 | 5 | bootstrapApplication(AppComponent, appConfig) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/global-loader/global-loader.component.css: -------------------------------------------------------------------------------- 1 | .global-loader-wraper { 2 | background-color: rgb(81, 162, 135); 3 | width: 100%; 4 | height: 300px; 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | opacity: 0.5; 9 | } 10 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/theme/main/main.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-main', 5 | templateUrl: './main.component.html', 6 | styleUrls: ['./main.component.css'], 7 | }) 8 | export class MainComponent {} 9 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/theme/main/main.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-main', 5 | templateUrl: './main.component.html', 6 | styleUrls: ['./main.component.css'], 7 | }) 8 | export class MainComponent {} 9 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/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.css'], 7 | }) 8 | export class AppComponent {} 9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/app/app.config.ts: -------------------------------------------------------------------------------- 1 | import { ApplicationConfig } from '@angular/core'; 2 | import { provideRouter } from '@angular/router'; 3 | 4 | import { routes } from './app.routes'; 5 | 6 | export const appConfig: ApplicationConfig = { 7 | providers: [provideRouter(routes)] 8 | }; 9 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/main.ts: -------------------------------------------------------------------------------- 1 | import { bootstrapApplication } from '@angular/platform-browser'; 2 | import { appConfig } from './app/app.config'; 3 | import { AppComponent } from './app/app.component'; 4 | 5 | bootstrapApplication(AppComponent, appConfig) 6 | .catch((err) => console.error(err)); 7 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/shared/loader/loader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-loader', 5 | templateUrl: './loader.component.html', 6 | styleUrls: ['./loader.component.css'], 7 | }) 8 | export class LoaderComponent {} 9 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-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.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'my-app'; 10 | } 11 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/todo/todo-list/todo-list.component.css: -------------------------------------------------------------------------------- 1 | .wrapper { 2 | border: 2px solid pink; 3 | background-color: aliceblue; 4 | width: 350px; 5 | height: 180px; 6 | font-size: 22px; 7 | display: flex; 8 | align-items: center; 9 | justify-content: center; 10 | } 11 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/todo/todo-list/todo-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-todo-list', 5 | templateUrl: './todo-list.component.html', 6 | styleUrls: ['./todo-list.component.css'], 7 | }) 8 | export class TodoListComponent {} 9 | -------------------------------------------------------------------------------- /01.Intro/spa/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Document 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/navigation/navigation.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-navigation', 5 | templateUrl: './navigation.component.html', 6 | styleUrls: ['./navigation.component.css'], 7 | }) 8 | export class NavigationComponent {} 9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/controllers/index.js: -------------------------------------------------------------------------------- 1 | const authController = require('./auth'); 2 | const themeController = require('./themeController'); 3 | const postController = require('./postController'); 4 | 5 | module.exports = { 6 | authController, 7 | themeController, 8 | postController, 9 | } -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/shared/loader/loader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-loader', 5 | templateUrl: './loader.component.html', 6 | styleUrls: ['./loader.component.css'], 7 | }) 8 | export class LoaderComponent {} 9 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/shared/loader/loader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-loader', 5 | templateUrl: './loader.component.html', 6 | styleUrls: ['./loader.component.css'], 7 | }) 8 | export class LoaderComponent {} 9 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/theme/main/main.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-main', 5 | templateUrl: './main.component.html', 6 | styleUrls: ['./main.component.css'], 7 | }) 8 | export class MainComponent {} 9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/models/tokenBlacklistModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const tokenBlacklistSchema = new mongoose.Schema({ 4 | token: String, 5 | }, { timestamps: { createdAt: 'created_at' } }); 6 | 7 | 8 | module.exports = mongoose.model('TokenBlacklist', tokenBlacklistSchema); -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/spinner/spinner.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-spinner', 5 | templateUrl: './spinner.component.html', 6 | styleUrls: ['./spinner.component.css'] 7 | }) 8 | export class SpinnerComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/controllers/index.js: -------------------------------------------------------------------------------- 1 | const authController = require('./auth'); 2 | const themeController = require('./themeController'); 3 | const postController = require('./postController'); 4 | 5 | module.exports = { 6 | authController, 7 | themeController, 8 | postController, 9 | } -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/error/error.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-error', 5 | templateUrl: './error.component.html', 6 | styleUrls: ['./error.component.css'] 7 | }) 8 | export class ErrorComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/error/error.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-error', 5 | templateUrl: './error.component.html', 6 | styleUrls: ['./error.component.css'] 7 | }) 8 | export class ErrorComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/user/register/register.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-register', 5 | templateUrl: './register.component.html', 6 | styleUrls: ['./register.component.css'], 7 | }) 8 | export class RegisterComponent {} 9 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/controllers/index.js: -------------------------------------------------------------------------------- 1 | const authController = require('./auth'); 2 | const themeController = require('./themeController'); 3 | const postController = require('./postController'); 4 | 5 | module.exports = { 6 | authController, 7 | themeController, 8 | postController, 9 | } -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-home', 5 | templateUrl: './home.component.html', 6 | styleUrls: ['./home.component.css'] 7 | }) 8 | export class HomeComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/loader/loader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-loader', 5 | templateUrl: './loader.component.html', 6 | styleUrls: ['./loader.component.css'], 7 | }) 8 | export class LoaderComponent {} 9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/core/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-footer', 5 | templateUrl: './footer.component.html', 6 | styleUrls: ['./footer.component.css'] 7 | }) 8 | export class FooterComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/types/theme.ts: -------------------------------------------------------------------------------- 1 | import { User } from './user'; 2 | 3 | export interface Theme { 4 | subscribers: string[]; 5 | posts: string[]; 6 | _id: string; 7 | themeName: string; 8 | userId: User; 9 | created_at: string; 10 | updatedAt: string; 11 | __v: number; 12 | } 13 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/types/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | themes: string[]; 3 | posts: string[]; 4 | _id: string; 5 | tel: string; 6 | email: string; 7 | username: string; 8 | password: string; 9 | created_at: string; 10 | updatedAt: string; 11 | __v: number; 12 | } 13 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/models/tokenBlacklistModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const tokenBlacklistSchema = new mongoose.Schema({ 4 | token: String, 5 | }, { timestamps: { createdAt: 'created_at' } }); 6 | 7 | 8 | module.exports = mongoose.model('TokenBlacklist', tokenBlacklistSchema); -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/core/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-footer', 5 | templateUrl: './footer.component.html', 6 | styleUrls: ['./footer.component.css'] 7 | }) 8 | export class FooterComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/models/tokenBlacklistModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const tokenBlacklistSchema = new mongoose.Schema({ 4 | token: String, 5 | }, { timestamps: { createdAt: 'created_at' } }); 6 | 7 | 8 | module.exports = mongoose.model('TokenBlacklist', tokenBlacklistSchema); -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/core/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-footer', 5 | templateUrl: './footer.component.html', 6 | styleUrls: ['./footer.component.css'] 7 | }) 8 | export class FooterComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/lazy/lazy/lazy.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-lazy', 5 | templateUrl: './lazy.component.html', 6 | styleUrls: ['./lazy.component.css'] 7 | }) 8 | export class LazyComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/controllers/index.js: -------------------------------------------------------------------------------- 1 | const authController = require('./auth'); 2 | const themeController = require('./themeController'); 3 | const postController = require('./postController'); 4 | 5 | module.exports = { 6 | authController, 7 | themeController, 8 | postController, 9 | } -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/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.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'directives-and-forms'; 10 | } 11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/models/tokenBlacklistModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const tokenBlacklistSchema = new mongoose.Schema({ 4 | token: String, 5 | }, { timestamps: { createdAt: 'created_at' } }); 6 | 7 | 8 | module.exports = mongoose.model('TokenBlacklist', tokenBlacklistSchema); -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/not-found/not-found.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-not-found', 5 | templateUrl: './not-found.component.html', 6 | styleUrls: ['./not-found.component.css'], 7 | }) 8 | export class NotFoundComponent {} 9 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/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.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'state-management-demo'; 10 | } 11 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | 3 | import { AppModule } from './app/app.module'; 4 | 5 | platformBrowserDynamic() 6 | // .bootstrapModule(AppModule, { ngZone: 'noop' }) 7 | .bootstrapModule(AppModule) 8 | .catch((err) => console.error(err)); 9 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/nav/nav.component.css: -------------------------------------------------------------------------------- 1 | .nav-btn { 2 | margin: 20px; 3 | padding: 20px; 4 | background-color: rgb(238, 105, 11); 5 | color: #fff; 6 | width: fit-content; 7 | } 8 | 9 | .nav-btn:hover { 10 | background-color: rgb(11, 113, 238); 11 | color: #353535; 12 | cursor: pointer; 13 | } 14 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/nav/nav.component.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/error-page/error-page.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-error-page', 5 | templateUrl: './error-page.component.html', 6 | styleUrls: ['./error-page.component.css'] 7 | }) 8 | export class ErrorPageComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/user/profile/profile.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-profile', 5 | templateUrl: './profile.component.html', 6 | styleUrls: ['./profile.component.css'] 7 | }) 8 | export class ProfileComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/footer/footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-footer', 5 | templateUrl: './footer.component.html', 6 | styleUrls: ['./footer.component.css'] 7 | }) 8 | export class FooterComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/core/header/header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-header', 5 | templateUrl: './header.component.html', 6 | styleUrls: ['./header.component.css'], 7 | }) 8 | export class HeaderComponent { 9 | isLoggedIn = false; 10 | } 11 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/playground/playground.component.css: -------------------------------------------------------------------------------- 1 | .btn-handler { 2 | width: 200px; 3 | height: 50px; 4 | font-size: 30px; 5 | } 6 | 7 | .background-green { 8 | background-color: rgb(18, 111, 18); 9 | } 10 | 11 | .shiny { 12 | background-color: rgb(236, 240, 18); 13 | color: white; 14 | font-size: 30px; 15 | } 16 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/test-component/test-component.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-test-component', 5 | templateUrl: './test-component.component.html', 6 | styleUrls: ['./test-component.component.css'] 7 | }) 8 | export class TestComponentComponent { 9 | 10 | } 11 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/types/post.ts: -------------------------------------------------------------------------------- 1 | import { Theme } from './theme'; 2 | import { User } from './user'; 3 | 4 | export interface Post { 5 | likes: string[]; 6 | _id: string; 7 | text: string; 8 | userId: User; 9 | themeId: Theme; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/app/home-test/home-test.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-home-test', 5 | standalone: true, 6 | imports: [], 7 | templateUrl: './home-test.component.html', 8 | styleUrl: './home-test.component.css', 9 | }) 10 | export class HomeTestComponent {} 11 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | 4 | const routes: Routes = []; 5 | 6 | @NgModule({ 7 | imports: [RouterModule.forRoot(routes)], 8 | exports: [RouterModule] 9 | }) 10 | export class AppRoutingModule { } 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/types/post.ts: -------------------------------------------------------------------------------- 1 | import { Theme } from './theme'; 2 | import { User } from './user'; 3 | 4 | export interface Post { 5 | likes: string[]; 6 | _id: string; 7 | text: string; 8 | userId: User; 9 | themeId: Theme; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/types/post.ts: -------------------------------------------------------------------------------- 1 | import { Theme } from './theme'; 2 | import { User } from './user'; 3 | 4 | export interface Post { 5 | likes: string[]; 6 | _id: string; 7 | text: string; 8 | userId: User; 9 | themeId: Theme; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | 4 | const routes: Routes = []; 5 | 6 | @NgModule({ 7 | imports: [RouterModule.forRoot(routes)], 8 | exports: [RouterModule] 9 | }) 10 | export class AppRoutingModule { } 11 | -------------------------------------------------------------------------------- /01.Intro/my-first-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 | ], 11 | "include": [ 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/config/db.js: -------------------------------------------------------------------------------- 1 | const config = require('./config'); 2 | const mongoose = require('mongoose'); 3 | 4 | module.exports = () => { 5 | return mongoose.connect(config.dbURL, { 6 | useNewUrlParser: true, 7 | useUnifiedTopology: true, 8 | useCreateIndex: true, 9 | useFindAndModify: false 10 | }); 11 | }; 12 | -------------------------------------------------------------------------------- /04.WorkshopComponents/resources/forum/users.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.users"},{"v":2,"unique":true,"key":{"email":1},"name":"email_1","ns":"forum.users","background":true},{"v":2,"unique":true,"key":{"username":1},"name":"username_1","ns":"forum.users","background":true}],"uuid":"d1f59d47b68c427eb89196b588247543"} -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/types/theme.ts: -------------------------------------------------------------------------------- 1 | import { Post } from './post'; 2 | import { User } from './user'; 3 | 4 | export interface Theme { 5 | subscribers: string[]; 6 | posts: Post[]; 7 | _id: string; 8 | themeName: string; 9 | userId: User; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/types/theme.ts: -------------------------------------------------------------------------------- 1 | import { Post } from './post'; 2 | import { User } from './user'; 3 | 4 | export interface Theme { 5 | subscribers: string[]; 6 | posts: Post[]; 7 | _id: string; 8 | themeName: string; 9 | userId: User; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/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 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/router/posts.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.get('/', postController.getLatestsPosts); 9 | 10 | module.exports = router -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-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 | ], 11 | "include": [ 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/config/db.js: -------------------------------------------------------------------------------- 1 | const config = require('./config'); 2 | const mongoose = require('mongoose'); 3 | 4 | module.exports = () => { 5 | return mongoose.connect(config.dbURL, { 6 | useNewUrlParser: true, 7 | useUnifiedTopology: true, 8 | useCreateIndex: true, 9 | useFindAndModify: false 10 | }); 11 | }; 12 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/forum/users.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.users"},{"v":2,"unique":true,"key":{"email":1},"name":"email_1","ns":"forum.users","background":true},{"v":2,"unique":true,"key":{"username":1},"name":"username_1","ns":"forum.users","background":true}],"uuid":"d1f59d47b68c427eb89196b588247543"} -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/config/db.js: -------------------------------------------------------------------------------- 1 | const config = require('./config'); 2 | const mongoose = require('mongoose'); 3 | 4 | module.exports = () => { 5 | return mongoose.connect(config.dbURL, { 6 | useNewUrlParser: true, 7 | useUnifiedTopology: true, 8 | useCreateIndex: true, 9 | useFindAndModify: false 10 | }); 11 | }; 12 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/types/post.ts: -------------------------------------------------------------------------------- 1 | import { Theme } from './theme'; 2 | import { User } from './user'; 3 | 4 | export interface Post { 5 | likes: string[]; 6 | _id: string; 7 | text: string; 8 | userId: User; 9 | themeId: Theme; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /01.Intro/my-first-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 | "include": [ 11 | "src/**/*.spec.ts", 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/error/error.component.html: -------------------------------------------------------------------------------- 1 |
2 |
4
3 | 4 |
4
5 |
6 | Ooops! Page Not Found 7 |

Let's go home and try from there.

8 |
9 |
10 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/forum/users.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.users"},{"v":2,"unique":true,"key":{"email":1},"name":"email_1","ns":"forum.users","background":true},{"v":2,"unique":true,"key":{"username":1},"name":"username_1","ns":"forum.users","background":true}],"uuid":"d1f59d47b68c427eb89196b588247543"} -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/error/error.component.html: -------------------------------------------------------------------------------- 1 |
2 |
4
3 | 4 |
4
5 |
6 | Ooops! Page Not Found 7 |

Let's go home and try from there.

8 |
9 |
10 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/config/db.js: -------------------------------------------------------------------------------- 1 | const config = require('./config'); 2 | const mongoose = require('mongoose'); 3 | 4 | module.exports = () => { 5 | return mongoose.connect(config.dbURL, { 6 | useNewUrlParser: true, 7 | useUnifiedTopology: true, 8 | useCreateIndex: true, 9 | useFindAndModify: false 10 | }); 11 | }; 12 | -------------------------------------------------------------------------------- /01.Intro/my-first-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 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/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 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/models/index.js: -------------------------------------------------------------------------------- 1 | const userModel = require('./userModel'); 2 | const tokenBlacklistModel = require('./tokenBlacklistModel'); 3 | const themeModel = require('./themeModel'); 4 | const postModel = require('./postModel'); 5 | 6 | module.exports = { 7 | userModel, 8 | tokenBlacklistModel, 9 | themeModel, 10 | postModel, 11 | } -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-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 | "include": [ 11 | "src/**/*.spec.ts", 12 | "src/**/*.d.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/router/posts.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.get('/', postController.getLatestsPosts); 9 | 10 | module.exports = router -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/theme-content/responsive.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 800px) { 2 | html { 3 | font-size: 14px; 4 | } 5 | } 6 | 7 | @media (min-width: 1024px) { 8 | html { 9 | font-size: 16px; 10 | } 11 | } 12 | 13 | @media (min-width: 1280px) { 14 | html { 15 | font-size: 18px; 16 | } 17 | } -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/router/posts.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.get('/', postController.getLatestsPosts); 9 | 10 | module.exports = router -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/theme-content/responsive.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 800px) { 2 | html { 3 | font-size: 14px; 4 | } 5 | } 6 | 7 | @media (min-width: 1024px) { 8 | html { 9 | font-size: 16px; 10 | } 11 | } 12 | 13 | @media (min-width: 1280px) { 14 | html { 15 | font-size: 18px; 16 | } 17 | } -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/forum/users.metadata.json: -------------------------------------------------------------------------------- 1 | {"options":{},"indexes":[{"v":2,"key":{"_id":1},"name":"_id_","ns":"forum.users"},{"v":2,"unique":true,"key":{"email":1},"name":"email_1","ns":"forum.users","background":true},{"v":2,"unique":true,"key":{"username":1},"name":"username_1","ns":"forum.users","background":true}],"uuid":"d1f59d47b68c427eb89196b588247543"} -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/types/theme.ts: -------------------------------------------------------------------------------- 1 | import { Post } from './post'; 2 | import { User } from './user'; 3 | 4 | export interface Theme { 5 | subscribers: string[]; 6 | posts: Post[]; 7 | _id: string; 8 | themeName: string; 9 | userId: User; 10 | created_at: string; 11 | updatedAt: string; 12 | __v: number; 13 | } 14 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/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 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MyFirstApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/.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 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/.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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/router/likes.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.put('/:postId', auth(), postController.like); 9 | 10 | module.exports = router 11 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/router/users.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { authController } = require('../controllers'); 4 | const { auth } = require('../utils'); 5 | 6 | router.get('/profile', auth(),authController.getProfileInfo); 7 | router.put('/profile', auth(),authController.editProfileInfo); 8 | 9 | module.exports = router -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-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 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/models/index.js: -------------------------------------------------------------------------------- 1 | const userModel = require('./userModel'); 2 | const tokenBlacklistModel = require('./tokenBlacklistModel'); 3 | const themeModel = require('./themeModel'); 4 | const postModel = require('./postModel'); 5 | 6 | module.exports = { 7 | userModel, 8 | tokenBlacklistModel, 9 | themeModel, 10 | postModel, 11 | } -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/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 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/models/index.js: -------------------------------------------------------------------------------- 1 | const userModel = require('./userModel'); 2 | const tokenBlacklistModel = require('./tokenBlacklistModel'); 3 | const themeModel = require('./themeModel'); 4 | const postModel = require('./postModel'); 5 | 6 | module.exports = { 7 | userModel, 8 | tokenBlacklistModel, 9 | themeModel, 10 | postModel, 11 | } -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/router/posts.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.get('/', postController.getLatestsPosts); 9 | 10 | module.exports = router -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/theme-content/responsive.css: -------------------------------------------------------------------------------- 1 | @media (min-width: 800px) { 2 | html { 3 | font-size: 14px; 4 | } 5 | } 6 | 7 | @media (min-width: 1024px) { 8 | html { 9 | font-size: 16px; 10 | } 11 | } 12 | 13 | @media (min-width: 1280px) { 14 | html { 15 | font-size: 18px; 16 | } 17 | } -------------------------------------------------------------------------------- /01.Intro/mpa/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | About 7 | 8 | 9 |

Welcome to about page!

10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /01.Intro/mpa/contacts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Contacts 7 | 8 | 9 |

Welcome to contacts page!

10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/.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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/core/footer/footer.component.html: -------------------------------------------------------------------------------- 1 |
2 |

This site is designed to be used for training purposes at SoftUni.

3 |

You can find the real SoftUni forum at this link:

4 |

5 | https://softuni.bg/forum 6 | Angular course Copyright © 2020 7 |

8 |
9 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/main/main.component.css: -------------------------------------------------------------------------------- 1 | main { 2 | width: 50%; 3 | } 4 | 5 | .container { 6 | width: 90%; 7 | margin: auto; 8 | padding-bottom: 4.5em; 9 | display: flex; 10 | align-items: flex-start; 11 | justify-content: space-evenly; 12 | } 13 | 14 | aside { 15 | width: 29%; 16 | margin-top: 1em; 17 | font-size: 0.8em; 18 | } 19 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/router/likes.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.put('/:postId', auth(), postController.like); 9 | 10 | module.exports = router 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/theme-content/reset.css: -------------------------------------------------------------------------------- 1 | /* 2 | *Removes all default whitespace 3 | */ 4 | 5 | * { 6 | padding: 0; 7 | margin: 0; 8 | } 9 | 10 | /* 11 | *Reset CSS model sizing calculations 12 | */ 13 | 14 | html { 15 | box-sizing: border-box; 16 | } 17 | 18 | *, 19 | *:before, 20 | *:after { 21 | box-sizing: inherit; 22 | } 23 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/router/likes.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.put('/:postId', auth(), postController.like); 9 | 10 | module.exports = router 11 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/theme-content/reset.css: -------------------------------------------------------------------------------- 1 | /* 2 | *Removes all default whitespace 3 | */ 4 | 5 | * { 6 | padding: 0; 7 | margin: 0; 8 | } 9 | 10 | /* 11 | *Reset CSS model sizing calculations 12 | */ 13 | 14 | html { 15 | box-sizing: border-box; 16 | } 17 | 18 | *, 19 | *:before, 20 | *:after { 21 | box-sizing: inherit; 22 | } 23 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/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 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MyDemoApp16 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MyPlayground 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MyApp17 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/global-loader/global-loader.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | 3 | @Injectable({ 4 | providedIn: 'root', 5 | }) 6 | export class GlobalLoaderService { 7 | isHidden: boolean = true; 8 | 9 | showLoader() { 10 | this.isHidden = false; 11 | } 12 | 13 | hideLoader() { 14 | this.isHidden = true; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/todo/todo.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { TodoListComponent } from './todo-list/todo-list.component'; 4 | 5 | @NgModule({ 6 | declarations: [TodoListComponent], 7 | imports: [CommonModule], 8 | exports: [TodoListComponent], 9 | }) 10 | export class TodoModule {} 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/router/users.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { authController } = require('../controllers'); 4 | const { auth } = require('../utils'); 5 | 6 | router.get('/profile', auth(),authController.getProfileInfo); 7 | router.put('/profile', auth(),authController.editProfileInfo); 8 | 9 | module.exports = router -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/core/footer/footer.component.html: -------------------------------------------------------------------------------- 1 |
2 |

This site is designed to be used for training purposes at SoftUni.

3 |

You can find the real SoftUni forum at this link:

4 |

5 | https://softuni.bg/forum 6 | Angular course Copyright © 2020 7 |

8 |
9 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/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 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/router/users.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { authController } = require('../controllers'); 4 | const { auth } = require('../utils'); 5 | 6 | router.get('/profile', auth(),authController.getProfileInfo); 7 | router.put('/profile', auth(),authController.editProfileInfo); 8 | 9 | module.exports = router -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/core/footer/footer.component.html: -------------------------------------------------------------------------------- 1 |
2 |

This site is designed to be used for training purposes at SoftUni.

3 |

You can find the real SoftUni forum at this link:

4 |

5 | https://softuni.bg/forum 6 | Angular course Copyright © 2020 7 |

8 |
9 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/theme/main/main.component.css: -------------------------------------------------------------------------------- 1 | main { 2 | width: 50%; 3 | } 4 | 5 | .container { 6 | width: 90%; 7 | margin: auto; 8 | padding-bottom: 4.5em; 9 | display: flex; 10 | align-items: flex-start; 11 | justify-content: space-evenly; 12 | } 13 | 14 | aside { 15 | width: 29%; 16 | margin-top: 1em; 17 | font-size: 0.8em; 18 | } 19 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/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 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/models/index.js: -------------------------------------------------------------------------------- 1 | const userModel = require('./userModel'); 2 | const tokenBlacklistModel = require('./tokenBlacklistModel'); 3 | const themeModel = require('./themeModel'); 4 | const postModel = require('./postModel'); 5 | 6 | module.exports = { 7 | userModel, 8 | tokenBlacklistModel, 9 | themeModel, 10 | postModel, 11 | } -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/not-found/not-found.component.html: -------------------------------------------------------------------------------- 1 |
2 |
4
3 | 4 |
4
5 |
6 | Ooops! Page Not Found 7 |

Let's go home and try from there.

8 |
9 |
10 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/.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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/shared/shared.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LoaderComponent } from './loader/loader.component'; 4 | 5 | @NgModule({ 6 | declarations: [LoaderComponent], 7 | imports: [CommonModule], 8 | exports: [LoaderComponent], 9 | }) 10 | export class SharedModule {} 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/shared/welcom-msg/welcom-msg.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-welcom-msg', 5 | templateUrl: './welcom-msg.component.html', 6 | styleUrls: ['./welcom-msg.component.css'], 7 | }) 8 | export class WelcomMsgComponent { 9 | @Input('isLoggedIn') isLoggedIn = false; 10 | } 11 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/theme/main/main.component.css: -------------------------------------------------------------------------------- 1 | main { 2 | width: 50%; 3 | } 4 | 5 | .container { 6 | width: 90%; 7 | margin: auto; 8 | padding-bottom: 4.5em; 9 | display: flex; 10 | align-items: flex-start; 11 | justify-content: space-evenly; 12 | } 13 | 14 | aside { 15 | width: 29%; 16 | margin-top: 1em; 17 | font-size: 0.8em; 18 | } 19 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/.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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/.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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/shared/welcom-msg/welcom-msg.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-welcom-msg', 5 | templateUrl: './welcom-msg.component.html', 6 | styleUrls: ['./welcom-msg.component.css'], 7 | }) 8 | export class WelcomMsgComponent { 9 | @Input('isLoggedIn') isLoggedIn = false; 10 | } 11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/router/likes.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { auth } = require('../utils'); 4 | const { postController } = require('../controllers'); 5 | 6 | // middleware that is specific to this router 7 | 8 | router.put('/:postId', auth(), postController.like); 9 | 10 | module.exports = router 11 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/router/users.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const { authController } = require('../controllers'); 4 | const { auth } = require('../utils'); 5 | 6 | router.get('/profile', auth(),authController.getProfileInfo); 7 | router.put('/profile', auth(),authController.editProfileInfo); 8 | 9 | module.exports = router -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/theme-content/reset.css: -------------------------------------------------------------------------------- 1 | /* 2 | *Removes all default whitespace 3 | */ 4 | 5 | * { 6 | padding: 0; 7 | margin: 0; 8 | } 9 | 10 | /* 11 | *Reset CSS model sizing calculations 12 | */ 13 | 14 | html { 15 | box-sizing: border-box; 16 | } 17 | 18 | *, 19 | *:before, 20 | *:after { 21 | box-sizing: inherit; 22 | } 23 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/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 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/.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 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/.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 | -------------------------------------------------------------------------------- /01.Intro/my-first-app/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { RouterOutlet } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-root', 6 | standalone: true, 7 | imports: [RouterOutlet], 8 | templateUrl: './app.component.html', 9 | styleUrl: './app.component.css', 10 | }) 11 | export class AppComponent { 12 | pesho = 'my-first-app'; 13 | } 14 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/user-list/user-list.component.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 | 4 | name of {{ user.name }} and {{ user.age }} y/o 5 | 6 | 9 |
  • 10 |
11 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/footer/footer.component.html: -------------------------------------------------------------------------------- 1 |
2 |

This site is designed to be used for training purposes at SoftUni.

3 |

You can find the real SoftUni forum at this link:

4 |

5 | https://softuni.bg/forum 6 | Angular course Copyright © 2020 7 |

8 |
9 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/theme/main/main.component.css: -------------------------------------------------------------------------------- 1 | main { 2 | width: 50%; 3 | } 4 | 5 | .container { 6 | width: 90%; 7 | margin: auto; 8 | padding-bottom: 4.5em; 9 | display: flex; 10 | align-items: flex-start; 11 | justify-content: space-evenly; 12 | } 13 | 14 | aside { 15 | width: 29%; 16 | margin-top: 1em; 17 | font-size: 0.8em; 18 | } 19 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/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 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DirectivesAndForms 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/.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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/.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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/welcom-msg/welcom-msg.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-welcom-msg', 5 | templateUrl: './welcom-msg.component.html', 6 | styleUrls: ['./welcom-msg.component.css'], 7 | }) 8 | export class WelcomMsgComponent { 9 | @Input('isLoggedIn') isLoggedIn = false; 10 | } 11 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StateManagementDemo 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/navigation/navigation.component.css: -------------------------------------------------------------------------------- 1 | #wrapper { 2 | background-color: dodgerblue; 3 | width: 100%; 4 | height: 100px; 5 | display: flex; 6 | justify-content: center; 7 | align-items: center; 8 | } 9 | 10 | .btn { 11 | border: 2px solid #fff; 12 | margin: 0 10px; 13 | cursor: pointer; 14 | padding: 10px; 15 | border-radius: 20px; 16 | color: #fff; 17 | } 18 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/pipes/slice.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'slice', 5 | }) 6 | export class SlicePipe implements PipeTransform { 7 | transform(value: string, maxCount = 5): string { 8 | return `${value.substring(0, maxCount)}${ 9 | value.length > maxCount ? '...' : '' 10 | }`; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 |
Loading...
4 |
5 | 6 |
7 | 8 |
9 | 10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PipesSubjectsInterceptors 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/user-item/user-item.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { JsonPlaceHolderUser, User } from '../types/user'; 3 | 4 | @Component({ 5 | selector: 'app-user-item', 6 | templateUrl: './user-item.component.html', 7 | styleUrls: ['./user-item.component.css'], 8 | }) 9 | export class UserItemComponent { 10 | @Input('user') user = {} as JsonPlaceHolderUser; 11 | } 12 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/core/footer/footer.component.css: -------------------------------------------------------------------------------- 1 | /* footer */ 2 | 3 | footer { 4 | background: rgb(0, 212, 255); 5 | margin-top: 1em; 6 | position: absolute; 7 | bottom: 0; 8 | width: 100%; 9 | max-width: 1366px; 10 | } 11 | 12 | footer p { 13 | margin: 0; 14 | padding: 0; 15 | font-size: 0.7em; 16 | text-align: center; 17 | } 18 | 19 | footer span { 20 | font-size: 1.5em; 21 | } 22 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/core/footer/footer.component.css: -------------------------------------------------------------------------------- 1 | /* footer */ 2 | 3 | footer { 4 | background: rgb(0, 212, 255); 5 | margin-top: 1em; 6 | position: absolute; 7 | bottom: 0; 8 | width: 100%; 9 | max-width: 1366px; 10 | } 11 | 12 | footer p { 13 | margin: 0; 14 | padding: 0; 15 | font-size: 0.7em; 16 | text-align: center; 17 | } 18 | 19 | footer span { 20 | font-size: 1.5em; 21 | } 22 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/core/footer/footer.component.css: -------------------------------------------------------------------------------- 1 | /* footer */ 2 | 3 | footer { 4 | background: rgb(0, 212, 255); 5 | margin-top: 1em; 6 | position: absolute; 7 | bottom: 0; 8 | width: 100%; 9 | max-width: 1366px; 10 | } 11 | 12 | footer p { 13 | margin: 0; 14 | padding: 0; 15 | font-size: 0.7em; 16 | text-align: center; 17 | } 18 | 19 | footer span { 20 | font-size: 1.5em; 21 | } 22 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/lazy/lazy.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LazyComponent } from './lazy/lazy.component'; 4 | import { LazyRoutingModule } from './lazy-routing.module'; 5 | 6 | @NgModule({ 7 | declarations: [LazyComponent], 8 | imports: [CommonModule, LazyRoutingModule], 9 | }) 10 | export class LazyModule {} 11 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/nav/nav.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { Router } from '@angular/router'; 3 | 4 | @Component({ 5 | selector: 'app-nav', 6 | templateUrl: './nav.component.html', 7 | styleUrls: ['./nav.component.css'], 8 | }) 9 | export class NavComponent { 10 | constructor(private router: Router) {} 11 | 12 | navTo(path: string) { 13 | this.router.navigate([path]); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/footer/footer.component.css: -------------------------------------------------------------------------------- 1 | /* footer */ 2 | 3 | footer { 4 | background: rgb(0, 212, 255); 5 | margin-top: 1em; 6 | position: absolute; 7 | bottom: 0; 8 | width: 100%; 9 | max-width: 1366px; 10 | } 11 | 12 | footer p { 13 | margin: 0; 14 | padding: 0; 15 | font-size: 0.7em; 16 | text-align: center; 17 | } 18 | 19 | footer span { 20 | font-size: 1.5em; 21 | } 22 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/user.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { UserService } from './user.service'; 4 | 5 | describe('UserService', () => { 6 | let service: UserService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(UserService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/monkey-patching-demo.ts: -------------------------------------------------------------------------------- 1 | // Standard console log 2 | console.log('123'); 3 | 4 | // Monkey-patched console log 5 | const originalConsoleLog = console.log; // creates a copy 6 | 7 | console.log = (...args) => { 8 | originalConsoleLog(...args); // invokes the original copy 9 | 10 | // any other logic 11 | console.warn('Notify Angular for that this method happend'); 12 | // Notify Angular 13 | }; 14 | 15 | console.log('345'); 16 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { UserService } from './user.service'; 4 | 5 | describe('UserService', () => { 6 | let service: UserService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(UserService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/global-loader/global-loader.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { GlobalLoaderService } from './global-loader.service'; 3 | 4 | @Component({ 5 | selector: 'app-global-loader', 6 | templateUrl: './global-loader.component.html', 7 | styleUrls: ['./global-loader.component.css'], 8 | }) 9 | export class GlobalLoaderComponent { 10 | constructor(public globalLoaderService: GlobalLoaderService) {} 11 | } 12 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/utils/errHandler.js: -------------------------------------------------------------------------------- 1 | function errorHandler(err, req, res, next) { 2 | if (err.status === 333) { 3 | res.status(333) 4 | .json({ message: 'ErrorHandler: not allowed!' }) 5 | } else { 6 | console.error(err.stack) 7 | // console.log(err) 8 | res.status(500) 9 | .json({ message: 'ErrorHandler: Something went wrong!', err }) 10 | } 11 | } 12 | 13 | module.exports = errorHandler; 14 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { HeaderComponent } from './header/header.component'; 4 | import { FooterComponent } from './footer/footer.component'; 5 | 6 | @NgModule({ 7 | declarations: [HeaderComponent, FooterComponent], 8 | imports: [CommonModule], 9 | exports: [HeaderComponent, FooterComponent], 10 | }) 11 | export class CoreModule {} 12 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/utils/errHandler.js: -------------------------------------------------------------------------------- 1 | function errorHandler(err, req, res, next) { 2 | if (err.status === 333) { 3 | res.status(333) 4 | .json({ message: 'ErrorHandler: not allowed!' }) 5 | } else { 6 | console.error(err.stack) 7 | // console.log(err) 8 | res.status(500) 9 | .json({ message: 'ErrorHandler: Something went wrong!', err }) 10 | } 11 | } 12 | 13 | module.exports = errorHandler; 14 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/utils/errHandler.js: -------------------------------------------------------------------------------- 1 | function errorHandler(err, req, res, next) { 2 | if (err.status === 333) { 3 | res.status(333) 4 | .json({ message: 'ErrorHandler: not allowed!' }) 5 | } else { 6 | console.error(err.stack) 7 | // console.log(err) 8 | res.status(500) 9 | .json({ message: 'ErrorHandler: Something went wrong!', err }) 10 | } 11 | } 12 | 13 | module.exports = errorHandler; 14 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/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.css'], 7 | }) 8 | export class AppComponent { 9 | title = 'my-demo-app-16'; 10 | colorRedForPlayground = 'red'; 11 | colorGreenForPlayground = 'green'; 12 | 13 | onOutputFromChild(inputValue: string) { 14 | console.log('from parent', inputValue); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/utils/errHandler.js: -------------------------------------------------------------------------------- 1 | function errorHandler(err, req, res, next) { 2 | if (err.status === 333) { 3 | res.status(333) 4 | .json({ message: 'ErrorHandler: not allowed!' }) 5 | } else { 6 | console.error(err.stack) 7 | // console.log(err) 8 | res.status(500) 9 | .json({ message: 'ErrorHandler: Something went wrong!', err }) 10 | } 11 | } 12 | 13 | module.exports = errorHandler; 14 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/shared.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { SpinnerComponent } from './spinner/spinner.component'; 4 | import { ErrorPageComponent } from './error-page/error-page.component'; 5 | 6 | @NgModule({ 7 | declarations: [SpinnerComponent, ErrorPageComponent], 8 | imports: [CommonModule], 9 | exports: [SpinnerComponent, ErrorPageComponent], 10 | }) 11 | export class SharedModule {} 12 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { UserService } from '../user/user.service'; 3 | 4 | @Component({ 5 | selector: 'app-home', 6 | templateUrl: './home.component.html', 7 | styleUrls: ['./home.component.css'], 8 | }) 9 | export class HomeComponent { 10 | constructor(private userService: UserService) {} 11 | 12 | get isLoggedIn(): boolean { 13 | return this.userService.isLogged; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { UserService } from '../user/user.service'; 3 | 4 | @Component({ 5 | selector: 'app-home', 6 | templateUrl: './home.component.html', 7 | styleUrls: ['./home.component.css'], 8 | }) 9 | export class HomeComponent { 10 | constructor(private userService: UserService) {} 11 | 12 | get isLoggedIn(): boolean { 13 | return this.userService.isLogged; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/lazy/lazy-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { LazyComponent } from './lazy/lazy.component'; 4 | 5 | const routes: Routes = [ 6 | { path: '', pathMatch: 'full', component: LazyComponent }, 7 | ]; 8 | 9 | @NgModule({ 10 | imports: [RouterModule.forChild(routes)], 11 | exports: [RouterModule], 12 | }) 13 | export class LazyRoutingModule {} 14 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/error/error.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { BehaviorSubject } from 'rxjs'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | }) 7 | export class ErrorService { 8 | private apiError$$ = new BehaviorSubject(null); 9 | public apiError$ = this.apiError$$.asObservable(); 10 | 11 | constructor() {} 12 | 13 | setError(error: any): void { 14 | this.apiError$$.next(error); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/pipes/elapsed-time.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | import * as moment from 'moment'; 3 | 4 | @Pipe({ 5 | name: 'elapsedTime', 6 | }) 7 | export class ElapsedTimePipe implements PipeTransform { 8 | transform(date: string, ...args: unknown[]): unknown { 9 | // today - the given date 10 | // 21.03.2024 - 21.02.2023 => 1 year 1 month 11 | return moment(date).fromNow(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/nav/nav.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-nav', 5 | template: `
6 | 7 |
{{ titleVar }}
8 |
`, 9 | styles: [ 10 | ` 11 | #nav-wrapper: { 12 | background-color: pink; 13 | } 14 | `, 15 | ], 16 | }) 17 | export class NavComponent { 18 | titleVar = 'zdr title'; 19 | } 20 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user-list/user-list.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
    8 |
  • 13 | id: {{ user.id }}; name: {{ user.name }}; 14 |
  • 15 |
16 |
17 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/post/post.component.html: -------------------------------------------------------------------------------- 1 |
2 |

Text: {{ p.text }}

3 |

Likes: {{ p.likes }}

4 |
5 | 6 |
7 | 8 | 9 | 10 |
11 |
12 | 13 | 14 | 15 |
16 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/shared/utils/email-validator.ts: -------------------------------------------------------------------------------- 1 | import { ValidatorFn } from '@angular/forms'; 2 | 3 | export function emailValidator(domains: string[]): ValidatorFn { 4 | const domainString = domains.join('|'); 5 | const regExp = new RegExp(`[A-Za-z0-9]+@gmail\.(${domainString})`); 6 | 7 | return (control) => { 8 | const isEmailInvalid = control.value === '' || regExp.test(control.value); 9 | return isEmailInvalid ? null : { emailValidator: true }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { UserService } from '../user/user.service'; 3 | 4 | @Component({ 5 | selector: 'app-home', 6 | templateUrl: './home.component.html', 7 | styleUrls: ['./home.component.css'], 8 | }) 9 | export class HomeComponent { 10 | constructor(private userService: UserService) {} 11 | 12 | get isLoggedIn(): boolean { 13 | return this.userService.isLogged; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/types/user.ts: -------------------------------------------------------------------------------- 1 | import { Post } from './post'; 2 | 3 | export interface User { 4 | themes: string[]; 5 | posts: Post[]; 6 | _id: string; 7 | tel: string; 8 | email: string; 9 | username: string; 10 | password: string; 11 | created_at: string; 12 | updatedAt: string; 13 | __v: number; 14 | } 15 | 16 | export interface UserForAuth { 17 | firstName: string; 18 | email: string; 19 | phoneNumber: string; 20 | password: string; 21 | id: string; 22 | } 23 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/theme/add-theme/add-theme.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { NgForm } from '@angular/forms'; 3 | 4 | @Component({ 5 | selector: 'app-add-theme', 6 | templateUrl: './add-theme.component.html', 7 | styleUrls: ['./add-theme.component.css'], 8 | }) 9 | export class AddThemeComponent { 10 | addTheme(form: NgForm) { 11 | if (form.invalid) { 12 | return; 13 | } 14 | 15 | console.log(form.value); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/global-loader/global-loader.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed } from '@angular/core/testing'; 2 | 3 | import { GlobalLoaderService } from './global-loader.service'; 4 | 5 | describe('GlobalLoaderService', () => { 6 | let service: GlobalLoaderService; 7 | 8 | beforeEach(() => { 9 | TestBed.configureTestingModule({}); 10 | service = TestBed.inject(GlobalLoaderService); 11 | }); 12 | 13 | it('should be created', () => { 14 | expect(service).toBeTruthy(); 15 | }); 16 | }); 17 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/utils/email-validator.ts: -------------------------------------------------------------------------------- 1 | import { ValidatorFn } from '@angular/forms'; 2 | 3 | export function emailValidator(domains: string[]): ValidatorFn { 4 | const domainString = domains.join('|'); 5 | const regExp = new RegExp(`[A-Za-z0-9]+@gmail\.(${domainString})`); 6 | 7 | return (control) => { 8 | const isEmailInvalid = control.value === '' || regExp.test(control.value); 9 | return isEmailInvalid ? null : { emailValidator: true }; 10 | }; 11 | } 12 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/config/config.js: -------------------------------------------------------------------------------- 1 | const env = process.env.NODE_ENV || 'development'; 2 | 3 | const config = { 4 | development: { 5 | port: process.env.PORT || 3000, 6 | dbURL: 'mongodb://localhost:27017/forum', 7 | origin: ['http://localhost:5555', 'http://localhost:4200'] 8 | }, 9 | production: { 10 | port: process.env.PORT || 3000, 11 | dbURL: process.env.DB_URL_CREDENTIALS, 12 | origin: [] 13 | } 14 | }; 15 | 16 | module.exports = config[env]; 17 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/router/test.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const utils = require('../utils') 4 | 5 | // middleware that is specific to this router 6 | 7 | const data = { 8 | "name": "rest-api", 9 | "version": "1.0.0", 10 | "description": "REST-api for back-end of Angular course workshop in SoftUni", 11 | "main": "index.js", 12 | } 13 | 14 | router.get('/', function (req, res) { 15 | 16 | res.send(data); 17 | }) 18 | 19 | module.exports = router -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/config/config.js: -------------------------------------------------------------------------------- 1 | const env = process.env.NODE_ENV || 'development'; 2 | 3 | const config = { 4 | development: { 5 | port: process.env.PORT || 3000, 6 | dbURL: 'mongodb://localhost:27017/forum', 7 | origin: ['http://localhost:5555', 'http://localhost:4200'] 8 | }, 9 | production: { 10 | port: process.env.PORT || 3000, 11 | dbURL: process.env.DB_URL_CREDENTIALS, 12 | origin: [] 13 | } 14 | }; 15 | 16 | module.exports = config[env]; 17 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/config/config.js: -------------------------------------------------------------------------------- 1 | const env = process.env.NODE_ENV || 'development'; 2 | 3 | const config = { 4 | development: { 5 | port: process.env.PORT || 3000, 6 | dbURL: 'mongodb://localhost:27017/forum', 7 | origin: ['http://localhost:5555', 'http://localhost:4200'] 8 | }, 9 | production: { 10 | port: process.env.PORT || 3000, 11 | dbURL: process.env.DB_URL_CREDENTIALS, 12 | origin: [] 13 | } 14 | }; 15 | 16 | module.exports = config[env]; 17 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/src/app/translate/translate.reducer.ts: -------------------------------------------------------------------------------- 1 | import { Action } from '@ngrx/store'; 2 | 3 | const messageDefault = 'Hello!'; 4 | 5 | export function translateReducer(state = messageDefault, action: Action) { 6 | console.log({ action, state }); 7 | 8 | switch (action.type) { 9 | case 'BG': 10 | return (state = 'Здрасти!'); 11 | case 'EN': 12 | return (state = 'Hello!'); 13 | case 'IT': 14 | return (state = 'Ciao!'); 15 | 16 | default: 17 | return state; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "skipFiles": ["/**"], 12 | "program": "${workspaceFolder}/index.js" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/router/test.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const utils = require('../utils') 4 | 5 | // middleware that is specific to this router 6 | 7 | const data = { 8 | "name": "rest-api", 9 | "version": "1.0.0", 10 | "description": "REST-api for back-end of Angular course workshop in SoftUni", 11 | "main": "index.js", 12 | } 13 | 14 | router.get('/', function (req, res) { 15 | 16 | res.send(data); 17 | }) 18 | 19 | module.exports = router -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/router/test.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const utils = require('../utils') 4 | 5 | // middleware that is specific to this router 6 | 7 | const data = { 8 | "name": "rest-api", 9 | "version": "1.0.0", 10 | "description": "REST-api for back-end of Angular course workshop in SoftUni", 11 | "main": "index.js", 12 | } 13 | 14 | router.get('/', function (req, res) { 15 | 16 | res.send(data); 17 | }) 18 | 19 | module.exports = router -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { HeaderComponent } from './header/header.component'; 4 | import { FooterComponent } from './footer/footer.component'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | @NgModule({ 8 | declarations: [HeaderComponent, FooterComponent], 9 | imports: [CommonModule, RouterModule], 10 | exports: [HeaderComponent, FooterComponent], 11 | }) 12 | export class CoreModule {} 13 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { HeaderComponent } from './header/header.component'; 4 | import { FooterComponent } from './footer/footer.component'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | @NgModule({ 8 | declarations: [HeaderComponent, FooterComponent], 9 | imports: [CommonModule, RouterModule], 10 | exports: [HeaderComponent, FooterComponent], 11 | }) 12 | export class CoreModule {} 13 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/config/config.js: -------------------------------------------------------------------------------- 1 | const env = process.env.NODE_ENV || 'development'; 2 | 3 | const config = { 4 | development: { 5 | port: process.env.PORT || 3000, 6 | dbURL: 'mongodb://localhost:27017/forum', 7 | origin: ['http://localhost:5555', 'http://localhost:4200'] 8 | }, 9 | production: { 10 | port: process.env.PORT || 3000, 11 | dbURL: process.env.DB_URL_CREDENTIALS, 12 | origin: [] 13 | } 14 | }; 15 | 16 | module.exports = config[env]; 17 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/router/test.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | const utils = require('../utils') 4 | 5 | // middleware that is specific to this router 6 | 7 | const data = { 8 | "name": "rest-api", 9 | "version": "1.0.0", 10 | "description": "REST-api for back-end of Angular course workshop in SoftUni", 11 | "main": "index.js", 12 | } 13 | 14 | router.get('/', function (req, res) { 15 | 16 | res.send(data); 17 | }) 18 | 19 | module.exports = router -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/config/express.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const cookieParser = require('cookie-parser'); 4 | const cookieSecret = process.env.COOKIESECRET || 'SoftUni'; 5 | // const { errorHandler } = require('../utils') 6 | 7 | module.exports = (app) => { 8 | app.use(express.json()); 9 | 10 | app.use(cookieParser(cookieSecret)); 11 | 12 | app.use(express.static(path.resolve(__basedir, 'static'))); 13 | 14 | // app.use(errorHandler(err, req, res, next)); 15 | }; 16 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "skipFiles": ["/**"], 12 | "program": "${workspaceFolder}/index.js" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "skipFiles": ["/**"], 12 | "program": "${workspaceFolder}/index.js" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/config/express.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const cookieParser = require('cookie-parser'); 4 | const cookieSecret = process.env.COOKIESECRET || 'SoftUni'; 5 | // const { errorHandler } = require('../utils') 6 | 7 | module.exports = (app) => { 8 | app.use(express.json()); 9 | 10 | app.use(cookieParser(cookieSecret)); 11 | 12 | app.use(express.static(path.resolve(__basedir, 'static'))); 13 | 14 | // app.use(errorHandler(err, req, res, next)); 15 | }; 16 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/config/express.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const cookieParser = require('cookie-parser'); 4 | const cookieSecret = process.env.COOKIESECRET || 'SoftUni'; 5 | // const { errorHandler } = require('../utils') 6 | 7 | module.exports = (app) => { 8 | app.use(express.json()); 9 | 10 | app.use(cookieParser(cookieSecret)); 11 | 12 | app.use(express.static(path.resolve(__basedir, 'static'))); 13 | 14 | // app.use(errorHandler(err, req, res, next)); 15 | }; 16 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "skipFiles": ["/**"], 12 | "program": "${workspaceFolder}/index.js" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { HeaderComponent } from './header/header.component'; 4 | import { FooterComponent } from './footer/footer.component'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | @NgModule({ 8 | declarations: [HeaderComponent, FooterComponent], 9 | imports: [CommonModule, RouterModule], 10 | exports: [HeaderComponent, FooterComponent], 11 | }) 12 | export class CoreModule {} 13 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/types/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | id: number; 3 | name: string; 4 | username: string; 5 | email: string; 6 | address: Address; 7 | phone: string; 8 | website: string; 9 | company: Company; 10 | } 11 | 12 | interface Address { 13 | street: string; 14 | suite: string; 15 | city: string; 16 | zipcode: string; 17 | geo: Geo; 18 | } 19 | 20 | interface Geo { 21 | lat: string; 22 | lng: string; 23 | } 24 | 25 | interface Company { 26 | name: string; 27 | catchPhrase: string; 28 | bs: string; 29 | } 30 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/config/express.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const cookieParser = require('cookie-parser'); 4 | const cookieSecret = process.env.COOKIESECRET || 'SoftUni'; 5 | // const { errorHandler } = require('../utils') 6 | 7 | module.exports = (app) => { 8 | app.use(express.json()); 9 | 10 | app.use(cookieParser(cookieSecret)); 11 | 12 | app.use(express.static(path.resolve(__basedir, 'static'))); 13 | 14 | // app.use(errorHandler(err, req, res, next)); 15 | }; 16 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/shared/shared.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LoaderComponent } from './loader/loader.component'; 4 | import { WelcomMsgComponent } from './welcom-msg/welcom-msg.component'; 5 | import { RouterModule } from '@angular/router'; 6 | 7 | @NgModule({ 8 | declarations: [LoaderComponent, WelcomMsgComponent], 9 | imports: [CommonModule, RouterModule], 10 | exports: [LoaderComponent, WelcomMsgComponent], 11 | }) 12 | export class SharedModule {} 13 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { MyStructuralDirective } from '../my-structural.directive'; 3 | 4 | @Component({ 5 | selector: 'app-home', 6 | templateUrl: './home.component.html', 7 | styleUrls: ['./home.component.css'], 8 | }) 9 | export class HomeComponent { 10 | isShown: boolean = true; 11 | 12 | toggle() { 13 | this.isShown = !this.isShown; 14 | } 15 | 16 | simpleClick(directiveRef: MyStructuralDirective) { 17 | console.log(directiveRef); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /01.Intro/my-first-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": "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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-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": "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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | import { User } from '../types/user'; 4 | 5 | @Injectable({ 6 | providedIn: 'root', 7 | }) 8 | export class UserService { 9 | private API = 'https://jsonplaceholder.typicode.com/users'; 10 | 11 | constructor(private http: HttpClient) {} 12 | 13 | getUsers() { 14 | return this.http.get(this.API); 15 | } 16 | 17 | getSingleUser(id: string) { 18 | return this.http.get(`${this.API}/${id}`); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/.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 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/.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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/my-app-17/.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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user-list/user-list.component.css: -------------------------------------------------------------------------------- 1 | .btn { 2 | width: 100px; 3 | height: 50px; 4 | border-radius: 5px; 5 | border: 1px solid black; 6 | background-color: aliceblue; 7 | font-size: 22px; 8 | } 9 | 10 | .btn:hover { 11 | background-color: rgb(53, 109, 131); 12 | color: white; 13 | cursor: pointer; 14 | } 15 | 16 | .disabled { 17 | background-color: gray; 18 | pointer-events: none; 19 | } 20 | 21 | .item { 22 | margin: 10px 0; 23 | } 24 | 25 | .item:hover { 26 | background-color: gray; 27 | color: white; 28 | cursor: pointer; 29 | } 30 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/.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 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/.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 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/error/error.component.css: -------------------------------------------------------------------------------- 1 | .notification { 2 | position: fixed; 3 | z-index: 10; 4 | right: 8%; 5 | top: 8%; 6 | padding: 0.5rem; 7 | border-radius: 0.5rem; 8 | color: rgb(255, 255, 255); 9 | font-style: italic; 10 | text-decoration: underline; 11 | box-shadow: 0 5px 10px rgb(204, 204, 204); 12 | background-color: rgba(238, 74, 74, 0.699); 13 | } 14 | 15 | .error-message { 16 | background-color: rgba(238, 74, 74, 0.699); 17 | } 18 | 19 | .success-message { 20 | background-color: rgba(99, 230, 81, 0.699); 21 | } 22 | -------------------------------------------------------------------------------- /11.StateManagement/state-management-demo/.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 | -------------------------------------------------------------------------------- /04.WorkshopComponents/workshop-components/src/app/posts-list/posts-list.component.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/.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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/.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 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/user/profile/profile.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | default user 5 |

User Info:

6 |
7 |

Username:

8 |

Johny

9 |
10 |
11 |

Email:

12 |

john.doe@gmail.com

13 |
14 |
15 |

Phone:

16 |

+359 885 888 888

17 |
18 | 19 |
20 |
21 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/theme/posts-list/posts-list.component.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/theme/posts-list/posts-list.component.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/.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 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/core.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { GlobalLoaderComponent } from './global-loader/global-loader.component'; 4 | import { SharedModule } from '../shared/shared.module'; 5 | import { NavComponent } from './nav/nav.component'; 6 | import { RouterModule } from '@angular/router'; 7 | 8 | @NgModule({ 9 | declarations: [GlobalLoaderComponent, NavComponent], 10 | imports: [CommonModule, SharedModule, RouterModule], 11 | exports: [GlobalLoaderComponent, NavComponent], 12 | }) 13 | export class CoreModule {} 14 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/.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 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/shared/utils/match-passwords-validator.ts: -------------------------------------------------------------------------------- 1 | import { ValidatorFn } from '@angular/forms'; 2 | 3 | export function matchPasswordsValidator( 4 | passwordControlName: string, 5 | rePasswordControlName: string 6 | ): ValidatorFn { 7 | return (control) => { 8 | const passwordFormControl = control.get(passwordControlName); 9 | const rePasswordFormControl = control.get(rePasswordControlName); 10 | const areMatching = 11 | passwordFormControl?.value == rePasswordFormControl?.value; 12 | 13 | return areMatching ? null : { matchPasswordsValidator: true }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/types/user.ts: -------------------------------------------------------------------------------- 1 | import { Post } from './post'; 2 | 3 | export interface User { 4 | themes: string[]; 5 | posts: Post[]; 6 | _id: string; 7 | tel: string; 8 | email: string; 9 | username: string; 10 | password: string; 11 | created_at: string; 12 | updatedAt: string; 13 | __v: number; 14 | } 15 | 16 | export interface UserForAuth { 17 | firstName: string; 18 | email: string; 19 | phoneNumber: string; 20 | password: string; 21 | id: string; 22 | } 23 | 24 | export interface ProfileDetails { 25 | username: string; 26 | email: string; 27 | tel: string; 28 | } 29 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/utils/jwt.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const secret = process.env.SECRET || 'SoftSecret'; 3 | 4 | function createToken(data) { 5 | return jwt.sign(data, secret, { expiresIn: '1d' }); 6 | } 7 | 8 | function verifyToken(token) { 9 | return new Promise((resolve, reject) => { 10 | jwt.verify(token, secret, (err, data) => { 11 | if (err) { 12 | reject(err); 13 | return; 14 | } 15 | resolve(data); 16 | }); 17 | }); 18 | } 19 | 20 | module.exports = { 21 | createToken, 22 | verifyToken 23 | } -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/types/user.ts: -------------------------------------------------------------------------------- 1 | import { Post } from './post'; 2 | 3 | export interface User { 4 | themes: string[]; 5 | posts: Post[]; 6 | _id: string; 7 | tel: string; 8 | email: string; 9 | username: string; 10 | password: string; 11 | created_at: string; 12 | updatedAt: string; 13 | __v: number; 14 | } 15 | 16 | export interface UserForAuth { 17 | username: string; 18 | email: string; 19 | tel: string; 20 | password: string; 21 | id: string; 22 | } 23 | 24 | export interface ProfileDetails { 25 | username: string; 26 | email: string; 27 | tel: string; 28 | } 29 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/models/postModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const postSchema = new mongoose.Schema({ 5 | text: { 6 | type: String, 7 | required: true 8 | }, 9 | likes: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | themeId: { 18 | type: ObjectId, 19 | ref: "Theme" 20 | }, 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Post', postSchema); 24 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/shared/utils/match-passwords-validator.ts: -------------------------------------------------------------------------------- 1 | import { ValidatorFn } from '@angular/forms'; 2 | 3 | export function matchPasswordsValidator( 4 | passwordControlName: string, 5 | rePasswordControlName: string 6 | ): ValidatorFn { 7 | return (control) => { 8 | const passwordFormControl = control.get(passwordControlName); 9 | const rePasswordFormControl = control.get(rePasswordControlName); 10 | const areMatching = 11 | passwordFormControl?.value == rePasswordFormControl?.value; 12 | 13 | return areMatching ? null : { matchPasswordsValidator: true }; 14 | }; 15 | } 16 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/theme/posts-list/posts-list.component.html: -------------------------------------------------------------------------------- 1 | 20 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/utils/jwt.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const secret = process.env.SECRET || 'SoftSecret'; 3 | 4 | function createToken(data) { 5 | return jwt.sign(data, secret, { expiresIn: '1d' }); 6 | } 7 | 8 | function verifyToken(token) { 9 | return new Promise((resolve, reject) => { 10 | jwt.verify(token, secret, (err, data) => { 11 | if (err) { 12 | reject(err); 13 | return; 14 | } 15 | resolve(data); 16 | }); 17 | }); 18 | } 19 | 20 | module.exports = { 21 | createToken, 22 | verifyToken 23 | } -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/utils/jwt.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const secret = process.env.SECRET || 'SoftSecret'; 3 | 4 | function createToken(data) { 5 | return jwt.sign(data, secret, { expiresIn: '1d' }); 6 | } 7 | 8 | function verifyToken(token) { 9 | return new Promise((resolve, reject) => { 10 | jwt.verify(token, secret, (err, data) => { 11 | if (err) { 12 | reject(err); 13 | return; 14 | } 15 | resolve(data); 16 | }); 17 | }); 18 | } 19 | 20 | module.exports = { 21 | createToken, 22 | verifyToken 23 | } -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/models/postModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const postSchema = new mongoose.Schema({ 5 | text: { 6 | type: String, 7 | required: true 8 | }, 9 | likes: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | themeId: { 18 | type: ObjectId, 19 | ref: "Theme" 20 | }, 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Post', postSchema); 24 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/user/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | import { UserService } from '../user.service'; 3 | import { Router } from '@angular/router'; 4 | 5 | @Component({ 6 | selector: 'app-login', 7 | templateUrl: './login.component.html', 8 | styleUrls: ['./login.component.css'], 9 | }) 10 | export class LoginComponent { 11 | constructor(private userService: UserService, private router: Router) {} 12 | 13 | login(ev: Event, email: string, password: string) { 14 | ev.preventDefault(); 15 | this.userService.login(); 16 | this.router.navigate(['/home']); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/models/postModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const postSchema = new mongoose.Schema({ 5 | text: { 6 | type: String, 7 | required: true 8 | }, 9 | likes: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | themeId: { 18 | type: ObjectId, 19 | ref: "Theme" 20 | }, 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Post', postSchema); 24 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/utils/jwt.js: -------------------------------------------------------------------------------- 1 | const jwt = require('jsonwebtoken'); 2 | const secret = process.env.SECRET || 'SoftSecret'; 3 | 4 | function createToken(data) { 5 | return jwt.sign(data, secret, { expiresIn: '1d' }); 6 | } 7 | 8 | function verifyToken(token) { 9 | return new Promise((resolve, reject) => { 10 | jwt.verify(token, secret, (err, data) => { 11 | if (err) { 12 | reject(err); 13 | return; 14 | } 15 | resolve(data); 16 | }); 17 | }); 18 | } 19 | 20 | module.exports = { 21 | createToken, 22 | verifyToken 23 | } -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/models/themeModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const themeSchema = new mongoose.Schema({ 5 | themeName: { 6 | type: String, 7 | required: true 8 | }, 9 | subscribers: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | posts: [{ 18 | type: ObjectId, 19 | ref: "Post" 20 | }], 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Theme', themeSchema); 24 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/models/postModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const postSchema = new mongoose.Schema({ 5 | text: { 6 | type: String, 7 | required: true 8 | }, 9 | likes: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | themeId: { 18 | type: ObjectId, 19 | ref: "Theme" 20 | }, 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Post', postSchema); 24 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MyApp 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/models/themeModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const themeSchema = new mongoose.Schema({ 5 | themeName: { 6 | type: String, 7 | required: true 8 | }, 9 | subscribers: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | posts: [{ 18 | type: ObjectId, 19 | ref: "Post" 20 | }], 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Theme', themeSchema); 24 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/user/user.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LoginComponent } from './login/login.component'; 4 | import { ProfileComponent } from './profile/profile.component'; 5 | import { RegisterComponent } from './register/register.component'; 6 | import { UserRoutingModule } from './user-routing.module'; 7 | import { RouterModule } from '@angular/router'; 8 | 9 | @NgModule({ 10 | declarations: [LoginComponent, ProfileComponent, RegisterComponent], 11 | imports: [CommonModule, UserRoutingModule, RouterModule], 12 | }) 13 | export class UserModule {} 14 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/models/themeModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const themeSchema = new mongoose.Schema({ 5 | themeName: { 6 | type: String, 7 | required: true 8 | }, 9 | subscribers: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | posts: [{ 18 | type: ObjectId, 19 | ref: "Post" 20 | }], 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Theme', themeSchema); 24 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/shared/shared.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | import { LoaderComponent } from './loader/loader.component'; 4 | import { WelcomMsgComponent } from './welcom-msg/welcom-msg.component'; 5 | import { RouterModule } from '@angular/router'; 6 | import { EmailDirective } from './validators/email.directive'; 7 | 8 | @NgModule({ 9 | declarations: [LoaderComponent, WelcomMsgComponent, EmailDirective], 10 | imports: [CommonModule, RouterModule], 11 | exports: [LoaderComponent, WelcomMsgComponent, EmailDirective], 12 | }) 13 | export class SharedModule {} 14 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { HomeComponent } from './home/home.component'; 4 | import { ErrorComponent } from './error/error.component'; 5 | 6 | const routes: Routes = [ 7 | { path: '', pathMatch: 'full', redirectTo: '/home' }, 8 | { path: 'home', component: HomeComponent }, 9 | { path: '**', redirectTo: '/404' }, 10 | { path: '404', component: ErrorComponent }, 11 | ]; 12 | 13 | @NgModule({ 14 | imports: [RouterModule.forRoot(routes)], 15 | exports: [RouterModule], 16 | }) 17 | export class AppRoutingModule {} 18 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/app-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { HomeComponent } from './home/home.component'; 4 | import { ErrorComponent } from './error/error.component'; 5 | 6 | const routes: Routes = [ 7 | { path: '', pathMatch: 'full', redirectTo: '/home' }, 8 | { path: 'home', component: HomeComponent }, 9 | { path: '**', redirectTo: '/404' }, 10 | { path: '404', component: ErrorComponent }, 11 | ]; 12 | 13 | @NgModule({ 14 | imports: [RouterModule.forRoot(routes)], 15 | exports: [RouterModule], 16 | }) 17 | export class AppRoutingModule {} 18 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/models/themeModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const { ObjectId } = mongoose.Schema.Types; 3 | 4 | const themeSchema = new mongoose.Schema({ 5 | themeName: { 6 | type: String, 7 | required: true 8 | }, 9 | subscribers: [{ 10 | type: ObjectId, 11 | ref: "User" 12 | }], 13 | userId: { 14 | type: ObjectId, 15 | ref: "User" 16 | }, 17 | posts: [{ 18 | type: ObjectId, 19 | ref: "Post" 20 | }], 21 | }, { timestamps: { createdAt: 'created_at' } }); 22 | 23 | module.exports = mongoose.model('Theme', themeSchema); 24 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/core/nav/nav.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NavComponent } from './nav.component'; 4 | 5 | describe('NavComponent', () => { 6 | let component: NavComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [NavComponent] 12 | }); 13 | fixture = TestBed.createComponent(NavComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/workshop-interceptors/src/app/core/error/error.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { ErrorService } from './error.service'; 3 | import { HttpErrorResponse } from '@angular/common/http'; 4 | 5 | @Component({ 6 | selector: 'app-error', 7 | templateUrl: './error.component.html', 8 | styleUrls: ['./error.component.css'], 9 | }) 10 | export class ErrorComponent implements OnInit { 11 | errorMsg = ''; 12 | constructor(private errorService: ErrorService) {} 13 | 14 | ngOnInit(): void { 15 | this.errorService.apiError$.subscribe((err: any) => { 16 | this.errorMsg = err?.message || ''; 17 | }); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/home/home.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HomeComponent } from './home.component'; 4 | 5 | describe('HomeComponent', () => { 6 | let component: HomeComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [HomeComponent] 12 | }); 13 | fixture = TestBed.createComponent(HomeComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/login/login.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { LoginComponent } from './login.component'; 4 | 5 | describe('LoginComponent', () => { 6 | let component: LoginComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [LoginComponent] 12 | }); 13 | fixture = TestBed.createComponent(LoginComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/resources/views/theme-content/layout.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } 4 | 5 | .site { 6 | max-width: 50em; 7 | margin: 0 auto; 8 | } 9 | 10 | table { 11 | border: 1px solid #ccc; 12 | width: 100%; 13 | border-spacing: 0.2em; 14 | margin-bottom: 1.5em; 15 | } 16 | 17 | table td, 18 | table th { 19 | border: 1px solid #ccc; 20 | padding: 0.4em 0.8em; 21 | } 22 | 23 | table td { 24 | background: #eee; 25 | } 26 | 27 | table thead th, 28 | table tfoot td { 29 | font-weight: bold; 30 | text-align: left; 31 | background: #000; 32 | color: #fff; 33 | } 34 | 35 | table tbody tr:nth-child(even) td { 36 | background: #ccc; 37 | } 38 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/resources/views/theme-content/layout.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } 4 | 5 | .site { 6 | max-width: 50em; 7 | margin: 0 auto; 8 | } 9 | 10 | table { 11 | border: 1px solid #ccc; 12 | width: 100%; 13 | border-spacing: 0.2em; 14 | margin-bottom: 1.5em; 15 | } 16 | 17 | table td, 18 | table th { 19 | border: 1px solid #ccc; 20 | padding: 0.4em 0.8em; 21 | } 22 | 23 | table td { 24 | background: #eee; 25 | } 26 | 27 | table thead th, 28 | table tfoot td { 29 | font-weight: bold; 30 | text-align: left; 31 | background: #000; 32 | color: #fff; 33 | } 34 | 35 | table tbody tr:nth-child(even) td { 36 | background: #ccc; 37 | } 38 | -------------------------------------------------------------------------------- /09.PipesInterceptorsSubjects/pipes-subjects-interceptors/src/app/home/home.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HomeComponent } from './home.component'; 4 | 5 | describe('HomeComponent', () => { 6 | let component: HomeComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [HomeComponent] 12 | }); 13 | fixture = TestBed.createComponent(HomeComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /04.WorkshopComponents/Rest-api/router/index.js: -------------------------------------------------------------------------------- 1 | const router = require('express').Router(); 2 | const users = require('./users'); 3 | const themes = require('./themes'); 4 | const posts = require('./posts'); 5 | const likes = require('./likes'); 6 | const test = require('./test'); 7 | const { authController } = require('../controllers'); 8 | 9 | router.post('/register', authController.register); 10 | router.post('/login', authController.login); 11 | router.post('/logout', authController.logout); 12 | 13 | router.use('/users', users); 14 | router.use('/themes', themes); 15 | router.use('/posts', posts); 16 | router.use('/likes', likes); 17 | router.use('/test', test); 18 | 19 | module.exports = router; 20 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/spinner/spinner.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SpinnerComponent } from './spinner.component'; 4 | 5 | describe('SpinnerComponent', () => { 6 | let component: SpinnerComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [SpinnerComponent] 12 | }); 13 | fixture = TestBed.createComponent(SpinnerComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/Rest-api/router/index.js: -------------------------------------------------------------------------------- 1 | const router = require('express').Router(); 2 | const users = require('./users'); 3 | const themes = require('./themes'); 4 | const posts = require('./posts'); 5 | const likes = require('./likes'); 6 | const test = require('./test'); 7 | const { authController } = require('../controllers'); 8 | 9 | router.post('/register', authController.register); 10 | router.post('/login', authController.login); 11 | router.post('/logout', authController.logout); 12 | 13 | router.use('/users', users); 14 | router.use('/themes', themes); 15 | router.use('/posts', posts); 16 | router.use('/likes', likes); 17 | router.use('/test', test); 18 | 19 | module.exports = router; 20 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/Rest-api/router/index.js: -------------------------------------------------------------------------------- 1 | const router = require('express').Router(); 2 | const users = require('./users'); 3 | const themes = require('./themes'); 4 | const posts = require('./posts'); 5 | const likes = require('./likes'); 6 | const test = require('./test'); 7 | const { authController } = require('../controllers'); 8 | 9 | router.post('/register', authController.register); 10 | router.post('/login', authController.login); 11 | router.post('/logout', authController.logout); 12 | 13 | router.use('/users', users); 14 | router.use('/themes', themes); 15 | router.use('/posts', posts); 16 | router.use('/likes', likes); 17 | router.use('/test', test); 18 | 19 | module.exports = router; 20 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/resources/views/theme-content/layout.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | } 4 | 5 | .site { 6 | max-width: 50em; 7 | margin: 0 auto; 8 | } 9 | 10 | table { 11 | border: 1px solid #ccc; 12 | width: 100%; 13 | border-spacing: 0.2em; 14 | margin-bottom: 1.5em; 15 | } 16 | 17 | table td, 18 | table th { 19 | border: 1px solid #ccc; 20 | padding: 0.4em 0.8em; 21 | } 22 | 23 | table td { 24 | background: #eee; 25 | } 26 | 27 | table thead th, 28 | table tfoot td { 29 | font-weight: bold; 30 | text-align: left; 31 | background: #000; 32 | color: #fff; 33 | } 34 | 35 | table tbody tr:nth-child(even) td { 36 | background: #ccc; 37 | } 38 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 8 | 9 | 19 | 20 | 21 | 22 | 23 | 27 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/user-list/user-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { UserListComponent } from './user-list.component'; 4 | 5 | describe('UserListComponent', () => { 6 | let component: UserListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [UserListComponent] 12 | }); 13 | fixture = TestBed.createComponent(UserListComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/todo/todo-list/todo-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TodoListComponent } from './todo-list.component'; 4 | 5 | describe('TodoListComponent', () => { 6 | let component: TodoListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [TodoListComponent] 12 | }); 13 | fixture = TestBed.createComponent(TodoListComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/user/user-list/user-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { UserListComponent } from './user-list.component'; 4 | 5 | describe('UserListComponent', () => { 6 | let component: UserListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [UserListComponent] 12 | }); 13 | fixture = TestBed.createComponent(UserListComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /06.WorkshopModulesAndRouting/workshop-modules/src/app/user/user-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { LoginComponent } from './login/login.component'; 4 | import { RegisterComponent } from './register/register.component'; 5 | import { ProfileComponent } from './profile/profile.component'; 6 | 7 | const routes: Routes = [ 8 | { path: 'login', component: LoginComponent }, 9 | { path: 'register', component: RegisterComponent }, 10 | { path: 'profile', component: ProfileComponent }, 11 | ]; 12 | 13 | @NgModule({ 14 | imports: [RouterModule.forChild(routes)], 15 | exports: [RouterModule], 16 | }) 17 | export class UserRoutingModule {} 18 | -------------------------------------------------------------------------------- /08.WorkshopFormsAndDirectives/workshop-forms/src/app/user/user-routing.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { RouterModule, Routes } from '@angular/router'; 3 | import { LoginComponent } from './login/login.component'; 4 | import { RegisterComponent } from './register/register.component'; 5 | import { ProfileComponent } from './profile/profile.component'; 6 | 7 | const routes: Routes = [ 8 | { path: 'login', component: LoginComponent }, 9 | { path: 'register', component: RegisterComponent }, 10 | { path: 'profile', component: ProfileComponent }, 11 | ]; 12 | 13 | @NgModule({ 14 | imports: [RouterModule.forChild(routes)], 15 | exports: [RouterModule], 16 | }) 17 | export class UserRoutingModule {} 18 | -------------------------------------------------------------------------------- /10.WorkshopPipesInterceptorsSubjects/Rest-api/router/index.js: -------------------------------------------------------------------------------- 1 | const router = require('express').Router(); 2 | const users = require('./users'); 3 | const themes = require('./themes'); 4 | const posts = require('./posts'); 5 | const likes = require('./likes'); 6 | const test = require('./test'); 7 | const { authController } = require('../controllers'); 8 | 9 | router.post('/register', authController.register); 10 | router.post('/login', authController.login); 11 | router.post('/logout', authController.logout); 12 | 13 | router.use('/users', users); 14 | router.use('/themes', themes); 15 | router.use('/posts', posts); 16 | router.use('/likes', likes); 17 | router.use('/test', test); 18 | 19 | module.exports = router; 20 | -------------------------------------------------------------------------------- /07.DirectivesAndForms/directives-and-forms/src/app/register/register.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RegisterComponent } from './register.component'; 4 | 5 | describe('RegisterComponent', () => { 6 | let component: RegisterComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [RegisterComponent] 12 | }); 13 | fixture = TestBed.createComponent(RegisterComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /02.Components/my-demo-app-16/src/app/playground/playground.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PlaygroundComponent } from './playground.component'; 4 | 5 | describe('PlaygroundComponent', () => { 6 | let component: PlaygroundComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [PlaygroundComponent] 12 | }); 13 | fixture = TestBed.createComponent(PlaygroundComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /03.ServicesRxjs/my-playground/src/app/types/user.ts: -------------------------------------------------------------------------------- 1 | export interface User { 2 | name: string; 3 | age: number; 4 | } 5 | 6 | export interface Geo { 7 | lat: string; 8 | lng: string; 9 | } 10 | 11 | export interface Address { 12 | street: string; 13 | suite: string; 14 | city: string; 15 | zipcode: string; 16 | geo: Geo; 17 | } 18 | 19 | export interface Company { 20 | name: string; 21 | catchPhrase: string; 22 | bs: string; 23 | } 24 | 25 | export interface User2 { 26 | id: number; 27 | name: string; 28 | username: string; 29 | email: string; 30 | phone: string; 31 | } 32 | 33 | export interface JsonPlaceHolderUser extends User2 { 34 | address: Address; 35 | phone: string; 36 | company: Company; 37 | } 38 | -------------------------------------------------------------------------------- /05.ModulesAndRouting/my-app/src/app/shared/error-page/error-page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ErrorPageComponent } from './error-page.component'; 4 | 5 | describe('ErrorPageComponent', () => { 6 | let component: ErrorPageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ErrorPageComponent] 12 | }); 13 | fixture = TestBed.createComponent(ErrorPageComponent); 14 | component = fixture.componentInstance; 15 | fixture.detectChanges(); 16 | }); 17 | 18 | it('should create', () => { 19 | expect(component).toBeTruthy(); 20 | }); 21 | }); 22 | --------------------------------------------------------------------------------