├── README.md
├── frontend-angular-19
├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── angular.json
├── eslint.config.js
├── nginx.conf
├── ngsw-config.json
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── icons
│ │ ├── icon-128x128.png
│ │ ├── icon-144x144.png
│ │ ├── icon-152x152.png
│ │ ├── icon-192x192.png
│ │ ├── icon-384x384.png
│ │ ├── icon-512x512.png
│ │ ├── icon-72x72.png
│ │ └── icon-96x96.png
│ └── manifest.webmanifest
├── src
│ ├── app
│ │ ├── app.component.css
│ │ ├── app.component.html
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ ├── app.config.server.ts
│ │ ├── app.config.ts
│ │ ├── app.routes.ts
│ │ └── features
│ │ │ ├── about
│ │ │ ├── about.component.css
│ │ │ ├── about.component.html
│ │ │ ├── about.component.spec.ts
│ │ │ ├── about.component.ts
│ │ │ ├── about.config.ts
│ │ │ ├── about.routes.ts
│ │ │ ├── experience
│ │ │ │ ├── experience.component.css
│ │ │ │ ├── experience.component.html
│ │ │ │ ├── experience.component.spec.ts
│ │ │ │ └── experience.component.ts
│ │ │ └── skill
│ │ │ │ ├── skill.component.css
│ │ │ │ ├── skill.component.html
│ │ │ │ ├── skill.component.spec.ts
│ │ │ │ └── skill.component.ts
│ │ │ ├── contact
│ │ │ ├── contact.component.css
│ │ │ ├── contact.component.html
│ │ │ ├── contact.component.spec.ts
│ │ │ ├── contact.component.ts
│ │ │ ├── contact.config.ts
│ │ │ ├── contact.routes.ts
│ │ │ ├── mailing
│ │ │ │ ├── mailing.component.css
│ │ │ │ ├── mailing.component.html
│ │ │ │ ├── mailing.component.spec.ts
│ │ │ │ └── mailing.component.ts
│ │ │ ├── mapping
│ │ │ │ ├── mapping.component.css
│ │ │ │ ├── mapping.component.html
│ │ │ │ ├── mapping.component.spec.ts
│ │ │ │ └── mapping.component.ts
│ │ │ └── website
│ │ │ │ ├── website.component.css
│ │ │ │ ├── website.component.html
│ │ │ │ ├── website.component.spec.ts
│ │ │ │ └── website.component.ts
│ │ │ ├── home
│ │ │ ├── feature.ts
│ │ │ ├── home.component.css
│ │ │ ├── home.component.html
│ │ │ ├── home.component.spec.ts
│ │ │ └── home.component.ts
│ │ │ ├── login
│ │ │ ├── login.component.css
│ │ │ ├── login.component.html
│ │ │ ├── login.component.spec.ts
│ │ │ └── login.component.ts
│ │ │ ├── not-found
│ │ │ ├── not-found.component.css
│ │ │ ├── not-found.component.html
│ │ │ ├── not-found.component.spec.ts
│ │ │ └── not-found.component.ts
│ │ │ ├── signup
│ │ │ ├── signup.component.css
│ │ │ ├── signup.component.html
│ │ │ ├── signup.component.spec.ts
│ │ │ └── signup.component.ts
│ │ │ └── tutorials
│ │ │ ├── example-bootstrap
│ │ │ ├── 00-main
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ ├── items.component.ts
│ │ │ │ └── items.ts
│ │ │ ├── accordions
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ ├── items.component.spec.ts
│ │ │ │ └── items.component.ts
│ │ │ ├── alerts
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── badges
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── blockquotes
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── breadcrumb
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── buttons
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── cards
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── checkbox
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── collapses
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── dropdowns
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── forms
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── list-group
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── pagination
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── progress
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── spinners
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── tables
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ ├── tutorial.component.spec.ts
│ │ │ ├── tutorial.component.ts
│ │ │ ├── tutorial.config.ts
│ │ │ ├── tutorial.routes.ts
│ │ │ └── typography
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── example-components
│ │ │ ├── channel
│ │ │ │ ├── channel.component.css
│ │ │ │ ├── channel.component.html
│ │ │ │ ├── channel.component.ts
│ │ │ │ └── channel.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ └── tutorial.component.ts
│ │ │ ├── example-forms
│ │ │ ├── 00-main
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── items.ts
│ │ │ ├── 01-single
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ └── exercice.component.ts
│ │ │ ├── 02-multi
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.spec.ts
│ │ │ │ └── movie.ts
│ │ │ ├── 03-init-class
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.spec.ts
│ │ │ │ └── movie.ts
│ │ │ ├── 04-prototype
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ └── exercice.component.ts
│ │ │ ├── 05-form-control
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ └── exercice.component.ts
│ │ │ ├── 06-form-control-class
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── movie.ts
│ │ │ ├── 07-form-group
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 08-form-builder
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 09-form-builder-nested
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 10-form-array
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 11-form-multi
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ ├── tutorial.component.ts
│ │ │ ├── tutorial.config.ts
│ │ │ ├── tutorial.module.ts
│ │ │ └── tutorial.routes.ts
│ │ │ └── example-services
│ │ │ ├── safe.pipe.ts
│ │ │ ├── song
│ │ │ ├── mock-songs.ts
│ │ │ ├── song.service.spec.ts
│ │ │ ├── song.service.ts
│ │ │ └── song.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ ├── tutorial.component.ts
│ │ │ └── tutorial.config.ts
│ ├── assets
│ │ ├── .gitkeep
│ │ └── params
│ │ │ ├── css
│ │ │ ├── fonts.googleapis.css
│ │ │ └── fonts.googleapis.min.css
│ │ │ ├── images
│ │ │ ├── channels
│ │ │ │ ├── cinemax.jpg
│ │ │ │ ├── cw.jpg
│ │ │ │ ├── discovery-channel.jpg
│ │ │ │ ├── disney-channel.jpg
│ │ │ │ ├── fox.jpg
│ │ │ │ ├── hbo.jpg
│ │ │ │ ├── history.jpg
│ │ │ │ ├── hulu.jpg
│ │ │ │ ├── mtv.jpg
│ │ │ │ ├── nbc.jpg
│ │ │ │ ├── netflix.jpg
│ │ │ │ ├── showtime.jpg
│ │ │ │ └── usa-network.jpg
│ │ │ ├── example-bootstrap
│ │ │ │ └── movie-screen.jpg
│ │ │ ├── logo
│ │ │ │ ├── ganatan-logo.png
│ │ │ │ └── ganatan-logo@2x.png
│ │ │ └── studio
│ │ │ │ ├── 2560px-Valve_old_logo.svg.png
│ │ │ │ ├── Bioware-logo.png
│ │ │ │ ├── Electronic_Arts-Logo.wine.png
│ │ │ │ ├── Logo-Nintendo-1.jpg
│ │ │ │ ├── Naughty-dog-logo.png
│ │ │ │ └── Rockstar_Games_Logo.svg.png
│ │ │ └── js
│ │ │ ├── popovers.js
│ │ │ ├── toasts.js
│ │ │ └── tooltips.js
│ ├── environments
│ │ ├── environment.development.ts
│ │ └── environment.ts
│ ├── index.html
│ ├── main.server.ts
│ ├── main.ts
│ ├── server.ts
│ └── styles.css
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
└── ui
│ ├── assets
│ ├── bootstrap
│ │ ├── css
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-grid.css.map
│ │ │ ├── bootstrap-grid.min.css
│ │ │ ├── bootstrap-grid.min.css.map
│ │ │ ├── bootstrap-grid.rtl.css
│ │ │ ├── bootstrap-grid.rtl.css.map
│ │ │ ├── bootstrap-grid.rtl.min.css
│ │ │ ├── bootstrap-grid.rtl.min.css.map
│ │ │ ├── bootstrap-reboot.css
│ │ │ ├── bootstrap-reboot.css.map
│ │ │ ├── bootstrap-reboot.min.css
│ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ ├── bootstrap-reboot.rtl.css
│ │ │ ├── bootstrap-reboot.rtl.css.map
│ │ │ ├── bootstrap-reboot.rtl.min.css
│ │ │ ├── bootstrap-reboot.rtl.min.css.map
│ │ │ ├── bootstrap-utilities.css
│ │ │ ├── bootstrap-utilities.css.map
│ │ │ ├── bootstrap-utilities.min.css
│ │ │ ├── bootstrap-utilities.min.css.map
│ │ │ ├── bootstrap-utilities.rtl.css
│ │ │ ├── bootstrap-utilities.rtl.css.map
│ │ │ ├── bootstrap-utilities.rtl.min.css
│ │ │ ├── bootstrap-utilities.rtl.min.css.map
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ ├── bootstrap.min.css.map
│ │ │ ├── bootstrap.rtl.css
│ │ │ ├── bootstrap.rtl.css.map
│ │ │ ├── bootstrap.rtl.min.css
│ │ │ └── bootstrap.rtl.min.css.map
│ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.esm.js
│ │ │ ├── bootstrap.esm.js.map
│ │ │ ├── bootstrap.esm.min.js
│ │ │ ├── bootstrap.esm.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ ├── fontawesome
│ │ ├── css
│ │ │ ├── all.css
│ │ │ ├── all.min.css
│ │ │ ├── brands.css
│ │ │ ├── brands.min.css
│ │ │ ├── fontawesome.css
│ │ │ ├── fontawesome.min.css
│ │ │ ├── regular.css
│ │ │ ├── regular.min.css
│ │ │ ├── solid.css
│ │ │ ├── solid.min.css
│ │ │ ├── svg-with-js.css
│ │ │ ├── svg-with-js.min.css
│ │ │ ├── v4-font-face.css
│ │ │ ├── v4-font-face.min.css
│ │ │ ├── v4-shims.css
│ │ │ ├── v4-shims.min.css
│ │ │ ├── v5-font-face.css
│ │ │ └── v5-font-face.min.css
│ │ ├── js
│ │ │ ├── all.js
│ │ │ ├── all.min.js
│ │ │ ├── brands.js
│ │ │ ├── brands.min.js
│ │ │ ├── conflict-detection.js
│ │ │ ├── conflict-detection.min.js
│ │ │ ├── fontawesome.js
│ │ │ ├── fontawesome.min.js
│ │ │ ├── regular.js
│ │ │ ├── regular.min.js
│ │ │ ├── solid.js
│ │ │ ├── solid.min.js
│ │ │ ├── v4-shims.js
│ │ │ └── v4-shims.min.js
│ │ └── webfonts
│ │ │ ├── fa-brands-400.ttf
│ │ │ ├── fa-brands-400.woff2
│ │ │ ├── fa-regular-400.ttf
│ │ │ ├── fa-regular-400.woff2
│ │ │ ├── fa-solid-900.ttf
│ │ │ ├── fa-solid-900.woff2
│ │ │ ├── fa-v4compatibility.ttf
│ │ │ └── fa-v4compatibility.woff2
│ └── params
│ │ ├── css
│ │ ├── body.css
│ │ ├── fonts.googleapis.css
│ │ ├── fonts.googleapis.min.css
│ │ ├── footer.css
│ │ └── header.css
│ │ ├── images
│ │ └── logo
│ │ │ ├── ganatan-logo.png
│ │ │ └── ganatan-logo@2x.png
│ │ └── js
│ │ ├── popovers.js
│ │ ├── toasts.js
│ │ └── tooltips.js
│ └── home.html
├── frontend-angular
├── .editorconfig
├── .gitignore
├── LICENSE
├── README.md
├── angular.json
├── eslint.config.js
├── nginx.conf
├── ngsw-config.json
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── icons
│ │ ├── icon-128x128.png
│ │ ├── icon-144x144.png
│ │ ├── icon-152x152.png
│ │ ├── icon-192x192.png
│ │ ├── icon-384x384.png
│ │ ├── icon-512x512.png
│ │ ├── icon-72x72.png
│ │ └── icon-96x96.png
│ └── manifest.webmanifest
├── src
│ ├── app
│ │ ├── app.config.server.ts
│ │ ├── app.config.ts
│ │ ├── app.css
│ │ ├── app.html
│ │ ├── app.routes.server.ts
│ │ ├── app.routes.ts
│ │ ├── app.spec.ts
│ │ ├── app.ts
│ │ └── features
│ │ │ ├── about
│ │ │ ├── about.config.ts
│ │ │ ├── about.css
│ │ │ ├── about.html
│ │ │ ├── about.routes.ts
│ │ │ ├── about.spec.ts
│ │ │ ├── about.ts
│ │ │ ├── experience
│ │ │ │ ├── experience.css
│ │ │ │ ├── experience.html
│ │ │ │ ├── experience.spec.ts
│ │ │ │ └── experience.ts
│ │ │ └── skill
│ │ │ │ ├── skill.css
│ │ │ │ ├── skill.html
│ │ │ │ ├── skill.spec.ts
│ │ │ │ └── skill.ts
│ │ │ ├── contact
│ │ │ ├── contact.config.ts
│ │ │ ├── contact.css
│ │ │ ├── contact.html
│ │ │ ├── contact.routes.ts
│ │ │ ├── contact.spec.ts
│ │ │ ├── contact.ts
│ │ │ ├── mailing
│ │ │ │ ├── mailing.css
│ │ │ │ ├── mailing.html
│ │ │ │ ├── mailing.spec.ts
│ │ │ │ └── mailing.ts
│ │ │ ├── mapping
│ │ │ │ ├── mapping.css
│ │ │ │ ├── mapping.html
│ │ │ │ ├── mapping.spec.ts
│ │ │ │ └── mapping.ts
│ │ │ └── website
│ │ │ │ ├── website.css
│ │ │ │ ├── website.html
│ │ │ │ ├── website.spec.ts
│ │ │ │ └── website.ts
│ │ │ ├── home
│ │ │ ├── feature.ts
│ │ │ ├── home.css
│ │ │ ├── home.html
│ │ │ ├── home.spec.ts
│ │ │ └── home.ts
│ │ │ ├── login
│ │ │ ├── login.css
│ │ │ ├── login.html
│ │ │ ├── login.spec.ts
│ │ │ └── login.ts
│ │ │ ├── not-found
│ │ │ ├── not-found.css
│ │ │ ├── not-found.html
│ │ │ ├── not-found.spec.ts
│ │ │ └── not-found.ts
│ │ │ ├── signup
│ │ │ ├── signup.css
│ │ │ ├── signup.html
│ │ │ ├── signup.spec.ts
│ │ │ └── signup.ts
│ │ │ └── tutorials
│ │ │ ├── example-bootstrap
│ │ │ ├── 00-main
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ ├── items.component.ts
│ │ │ │ └── items.ts
│ │ │ ├── accordions
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ ├── items.component.spec.ts
│ │ │ │ └── items.component.ts
│ │ │ ├── alerts
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── badges
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── blockquotes
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── breadcrumb
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── buttons
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── cards
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── checkbox
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── collapses
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── dropdowns
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── forms
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── list-group
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── pagination
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── progress
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── spinners
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── tables
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ ├── tutorial.component.spec.ts
│ │ │ ├── tutorial.component.ts
│ │ │ ├── tutorial.config.ts
│ │ │ ├── tutorial.routes.ts
│ │ │ └── typography
│ │ │ │ ├── items.component.css
│ │ │ │ ├── items.component.html
│ │ │ │ └── items.component.ts
│ │ │ ├── example-components
│ │ │ ├── channel
│ │ │ │ ├── channel.component.css
│ │ │ │ ├── channel.component.html
│ │ │ │ ├── channel.component.ts
│ │ │ │ └── channel.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ └── tutorial.component.ts
│ │ │ ├── example-forms
│ │ │ ├── 00-main
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── items.ts
│ │ │ ├── 01-single
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ └── exercice.component.ts
│ │ │ ├── 02-multi
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.spec.ts
│ │ │ │ └── movie.ts
│ │ │ ├── 03-init-class
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.spec.ts
│ │ │ │ └── movie.ts
│ │ │ ├── 04-prototype
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ └── exercice.component.ts
│ │ │ ├── 05-form-control
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ └── exercice.component.ts
│ │ │ ├── 06-form-control-class
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── movie.ts
│ │ │ ├── 07-form-group
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 08-form-builder
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 09-form-builder-nested
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 10-form-array
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── 11-form-multi
│ │ │ │ ├── exercice.component.css
│ │ │ │ ├── exercice.component.html
│ │ │ │ ├── exercice.component.ts
│ │ │ │ ├── movie.ts
│ │ │ │ └── pretty-json.pipe.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ ├── tutorial.component.ts
│ │ │ ├── tutorial.config.ts
│ │ │ └── tutorial.routes.ts
│ │ │ └── example-services
│ │ │ ├── safe.pipe.ts
│ │ │ ├── song
│ │ │ ├── mock-songs.ts
│ │ │ ├── song.service.spec.ts
│ │ │ ├── song.service.ts
│ │ │ └── song.ts
│ │ │ ├── tutorial.component.css
│ │ │ ├── tutorial.component.html
│ │ │ └── tutorial.component.ts
│ ├── assets
│ │ ├── .gitkeep
│ │ └── params
│ │ │ ├── css
│ │ │ ├── fonts.googleapis.css
│ │ │ └── fonts.googleapis.min.css
│ │ │ ├── images
│ │ │ ├── channels
│ │ │ │ ├── cinemax.jpg
│ │ │ │ ├── cw.jpg
│ │ │ │ ├── discovery-channel.jpg
│ │ │ │ ├── disney-channel.jpg
│ │ │ │ ├── fox.jpg
│ │ │ │ ├── hbo.jpg
│ │ │ │ ├── history.jpg
│ │ │ │ ├── hulu.jpg
│ │ │ │ ├── mtv.jpg
│ │ │ │ ├── nbc.jpg
│ │ │ │ ├── netflix.jpg
│ │ │ │ ├── showtime.jpg
│ │ │ │ └── usa-network.jpg
│ │ │ ├── example-bootstrap
│ │ │ │ └── movie-screen.jpg
│ │ │ ├── logo
│ │ │ │ ├── ganatan-logo.png
│ │ │ │ └── ganatan-logo@2x.png
│ │ │ └── studio
│ │ │ │ ├── 2560px-Valve_old_logo.svg.png
│ │ │ │ ├── Bioware-logo.png
│ │ │ │ ├── Electronic_Arts-Logo.wine.png
│ │ │ │ ├── Logo-Nintendo-1.jpg
│ │ │ │ ├── Naughty-dog-logo.png
│ │ │ │ └── Rockstar_Games_Logo.svg.png
│ │ │ └── js
│ │ │ ├── popovers.js
│ │ │ ├── toasts.js
│ │ │ └── tooltips.js
│ ├── environments
│ │ ├── environment.development.ts
│ │ └── environment.ts
│ ├── index.html
│ ├── main.server.ts
│ ├── main.ts
│ ├── server.ts
│ └── styles.css
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.spec.json
└── ui
│ ├── assets
│ ├── bootstrap
│ │ ├── css
│ │ │ ├── bootstrap-grid.css
│ │ │ ├── bootstrap-grid.css.map
│ │ │ ├── bootstrap-grid.min.css
│ │ │ ├── bootstrap-grid.min.css.map
│ │ │ ├── bootstrap-grid.rtl.css
│ │ │ ├── bootstrap-grid.rtl.css.map
│ │ │ ├── bootstrap-grid.rtl.min.css
│ │ │ ├── bootstrap-grid.rtl.min.css.map
│ │ │ ├── bootstrap-reboot.css
│ │ │ ├── bootstrap-reboot.css.map
│ │ │ ├── bootstrap-reboot.min.css
│ │ │ ├── bootstrap-reboot.min.css.map
│ │ │ ├── bootstrap-reboot.rtl.css
│ │ │ ├── bootstrap-reboot.rtl.css.map
│ │ │ ├── bootstrap-reboot.rtl.min.css
│ │ │ ├── bootstrap-reboot.rtl.min.css.map
│ │ │ ├── bootstrap-utilities.css
│ │ │ ├── bootstrap-utilities.css.map
│ │ │ ├── bootstrap-utilities.min.css
│ │ │ ├── bootstrap-utilities.min.css.map
│ │ │ ├── bootstrap-utilities.rtl.css
│ │ │ ├── bootstrap-utilities.rtl.css.map
│ │ │ ├── bootstrap-utilities.rtl.min.css
│ │ │ ├── bootstrap-utilities.rtl.min.css.map
│ │ │ ├── bootstrap.css
│ │ │ ├── bootstrap.css.map
│ │ │ ├── bootstrap.min.css
│ │ │ ├── bootstrap.min.css.map
│ │ │ ├── bootstrap.rtl.css
│ │ │ ├── bootstrap.rtl.css.map
│ │ │ ├── bootstrap.rtl.min.css
│ │ │ └── bootstrap.rtl.min.css.map
│ │ └── js
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.bundle.js.map
│ │ │ ├── bootstrap.bundle.min.js
│ │ │ ├── bootstrap.bundle.min.js.map
│ │ │ ├── bootstrap.esm.js
│ │ │ ├── bootstrap.esm.js.map
│ │ │ ├── bootstrap.esm.min.js
│ │ │ ├── bootstrap.esm.min.js.map
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.js.map
│ │ │ ├── bootstrap.min.js
│ │ │ └── bootstrap.min.js.map
│ ├── fontawesome
│ │ ├── css
│ │ │ ├── all.css
│ │ │ ├── all.min.css
│ │ │ ├── brands.css
│ │ │ ├── brands.min.css
│ │ │ ├── fontawesome.css
│ │ │ ├── fontawesome.min.css
│ │ │ ├── regular.css
│ │ │ ├── regular.min.css
│ │ │ ├── solid.css
│ │ │ ├── solid.min.css
│ │ │ ├── svg-with-js.css
│ │ │ ├── svg-with-js.min.css
│ │ │ ├── v4-font-face.css
│ │ │ ├── v4-font-face.min.css
│ │ │ ├── v4-shims.css
│ │ │ ├── v4-shims.min.css
│ │ │ ├── v5-font-face.css
│ │ │ └── v5-font-face.min.css
│ │ ├── js
│ │ │ ├── all.js
│ │ │ ├── all.min.js
│ │ │ ├── brands.js
│ │ │ ├── brands.min.js
│ │ │ ├── conflict-detection.js
│ │ │ ├── conflict-detection.min.js
│ │ │ ├── fontawesome.js
│ │ │ ├── fontawesome.min.js
│ │ │ ├── regular.js
│ │ │ ├── regular.min.js
│ │ │ ├── solid.js
│ │ │ ├── solid.min.js
│ │ │ ├── v4-shims.js
│ │ │ └── v4-shims.min.js
│ │ └── webfonts
│ │ │ ├── fa-brands-400.ttf
│ │ │ ├── fa-brands-400.woff2
│ │ │ ├── fa-regular-400.ttf
│ │ │ ├── fa-regular-400.woff2
│ │ │ ├── fa-solid-900.ttf
│ │ │ ├── fa-solid-900.woff2
│ │ │ ├── fa-v4compatibility.ttf
│ │ │ └── fa-v4compatibility.woff2
│ └── params
│ │ ├── css
│ │ ├── body.css
│ │ ├── fonts.googleapis.css
│ │ ├── fonts.googleapis.min.css
│ │ ├── footer.css
│ │ └── header.css
│ │ ├── images
│ │ └── logo
│ │ │ ├── ganatan-logo.png
│ │ │ └── ganatan-logo@2x.png
│ │ └── js
│ │ ├── popovers.js
│ │ ├── toasts.js
│ │ └── tooltips.js
│ └── home.html
├── frontend-react
├── .eslintrc.json
├── .gitignore
├── nginx.conf
├── package-lock.json
├── package.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ └── robots.txt
├── server.js
└── src
│ ├── app
│ ├── app-routing.js
│ ├── app.css
│ ├── app.js
│ ├── app.test.js
│ ├── components
│ │ └── seo
│ │ │ └── seo.js
│ └── modules
│ │ ├── application
│ │ ├── example-bootstrap
│ │ │ ├── 00-main
│ │ │ │ ├── main.css
│ │ │ │ └── main.js
│ │ │ ├── accordions
│ │ │ │ ├── accordions.css
│ │ │ │ └── accordions.js
│ │ │ ├── alerts
│ │ │ │ ├── alerts.css
│ │ │ │ └── alerts.js
│ │ │ ├── example-bootstrap-routing.js
│ │ │ ├── example-bootstrap.css
│ │ │ └── example-bootstrap.js
│ │ ├── example-components
│ │ │ ├── 00-main
│ │ │ │ ├── main.css
│ │ │ │ └── main.js
│ │ │ ├── accordions
│ │ │ │ ├── accordions.css
│ │ │ │ └── accordions.js
│ │ │ ├── alerts
│ │ │ │ ├── alerts.css
│ │ │ │ └── alerts.js
│ │ │ ├── example-components-routing.js
│ │ │ ├── example-components.css
│ │ │ └── example-components.js
│ │ ├── example-forms
│ │ │ ├── 00-main
│ │ │ │ ├── main.css
│ │ │ │ └── main.js
│ │ │ ├── accordions
│ │ │ │ ├── accordions.css
│ │ │ │ └── accordions.js
│ │ │ ├── alerts
│ │ │ │ ├── alerts.css
│ │ │ │ └── alerts.js
│ │ │ ├── example-forms-routing.js
│ │ │ ├── example-forms.css
│ │ │ └── example-forms.js
│ │ └── example-services
│ │ │ ├── 00-main
│ │ │ ├── main.css
│ │ │ └── main.js
│ │ │ ├── accordions
│ │ │ ├── accordions.css
│ │ │ └── accordions.js
│ │ │ ├── alerts
│ │ │ ├── alerts.css
│ │ │ └── alerts.js
│ │ │ ├── example-services-routing.js
│ │ │ ├── example-services.css
│ │ │ └── example-services.js
│ │ └── general
│ │ ├── about
│ │ ├── about.css
│ │ └── about.js
│ │ ├── contact
│ │ ├── contact-routing.js
│ │ ├── contact.css
│ │ ├── contact.js
│ │ ├── mailing
│ │ │ ├── mailing.css
│ │ │ └── mailing.js
│ │ ├── mapping
│ │ │ ├── mapping.css
│ │ │ └── mapping.js
│ │ └── website
│ │ │ ├── website.css
│ │ │ └── website.js
│ │ ├── home
│ │ ├── home.css
│ │ └── home.js
│ │ ├── login
│ │ ├── login.css
│ │ └── login.js
│ │ ├── not-found
│ │ ├── not-found.css
│ │ └── not-found.js
│ │ └── signup
│ │ ├── signup.css
│ │ └── signup.js
│ ├── assets
│ ├── .gitkeep
│ └── params
│ │ ├── css
│ │ ├── fonts.googleapis.css
│ │ └── fonts.googleapis.min.css
│ │ └── images
│ │ └── logo
│ │ ├── ganatan-logo.png
│ │ └── ganatan-logo@2x.png
│ ├── environments
│ └── environment.js
│ ├── index.css
│ ├── index.js
│ ├── logo.svg
│ ├── reportWebVitals.js
│ ├── service-worker.js
│ ├── serviceWorkerRegistration.js
│ └── setupTests.js
└── img
└── ganatan-about-github.png
/frontend-angular-19/.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 | ij_typescript_use_double_quotes = false
14 |
15 | [*.md]
16 | max_line_length = off
17 | trim_trailing_whitespace = false
18 |
--------------------------------------------------------------------------------
/frontend-angular-19/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
2 |
3 | # Compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 | /bazel-out
8 |
9 | # Node
10 | /node_modules
11 | npm-debug.log
12 | yarn-error.log
13 |
14 | # IDEs and editors
15 | .idea/
16 | .project
17 | .classpath
18 | .c9/
19 | *.launch
20 | .settings/
21 | *.sublime-workspace
22 |
23 | # Visual Studio Code
24 | .vscode/*
25 | !.vscode/settings.json
26 | !.vscode/tasks.json
27 | !.vscode/launch.json
28 | !.vscode/extensions.json
29 | .history/*
30 |
31 | # Miscellaneous
32 | /.angular/cache
33 | .sass-cache/
34 | /connect.lock
35 | /coverage
36 | /libpeerconnection.log
37 | testem.log
38 | /typings
39 |
40 | # System files
41 | .DS_Store
42 | Thumbs.db
43 |
--------------------------------------------------------------------------------
/frontend-angular-19/nginx.conf:
--------------------------------------------------------------------------------
1 | user www-data;
2 | worker_processes auto;
3 | pid /run/nginx.pid;
4 | error_log /var/log/nginx/error.log;
5 | include /etc/nginx/modules-enabled/*.conf;
6 |
7 | events {
8 | worker_connections 768;
9 | }
10 |
11 | http {
12 | sendfile on;
13 | tcp_nopush on;
14 | types_hash_max_size 2048;
15 |
16 | include /etc/nginx/mime.types;
17 | default_type application/octet-stream;
18 |
19 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
20 | ssl_prefer_server_ciphers on;
21 |
22 | access_log /var/log/nginx/access.log;
23 | gzip on;
24 | include /etc/nginx/conf.d/*.conf;
25 | server {
26 | listen 80 default_server;
27 | listen [::]:80 default_server;
28 |
29 | root /var/www/html;
30 | index index.html index.htm index.nginx-debian.html;
31 | server_name _;
32 | location / {
33 | try_files $uri $uri/ =404;
34 | }
35 |
36 | }
37 | }
--------------------------------------------------------------------------------
/frontend-angular-19/ngsw-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/service-worker/config/schema.json",
3 | "index": "/index.html",
4 | "assetGroups": [
5 | {
6 | "name": "app",
7 | "installMode": "prefetch",
8 | "resources": {
9 | "files": [
10 | "/favicon.ico",
11 | "/index.csr.html",
12 | "/index.html",
13 | "/manifest.webmanifest",
14 | "/*.css",
15 | "/*.js"
16 | ]
17 | }
18 | },
19 | {
20 | "name": "assets",
21 | "installMode": "lazy",
22 | "updateMode": "prefetch",
23 | "resources": {
24 | "files": [
25 | "/**/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)"
26 | ]
27 | }
28 | }
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/frontend-angular-19/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/favicon.ico
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-128x128.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-144x144.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-152x152.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-192x192.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-384x384.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-512x512.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-72x72.png
--------------------------------------------------------------------------------
/frontend-angular-19/public/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/public/icons/icon-96x96.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering } from '@angular/platform-server';
3 | import { appConfig } from './app.config';
4 |
5 | const serverConfig: ApplicationConfig = {
6 | providers: [
7 | provideServerRendering(),
8 | ]
9 | };
10 |
11 | export const config = mergeApplicationConfig(appConfig, serverConfig);
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig, provideZoneChangeDetection, isDevMode } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 | import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
6 | import { provideServiceWorker } from '@angular/service-worker';
7 |
8 | export const appConfig: ApplicationConfig = {
9 | providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes), provideClientHydration(withEventReplay()), provideServiceWorker('ngsw-worker.js', {
10 | enabled: !isDevMode(),
11 | registrationStrategy: 'registerWhenStable:30000'
12 | })]
13 | };
14 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/about.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/about/about.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/about.component.html:
--------------------------------------------------------------------------------
1 |
2 |
about works!
3 |
7 |
Child Routes Result
8 |
9 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/about.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { AboutComponent } from './about.component';
4 | import { ActivatedRoute } from '@angular/router';
5 |
6 | describe('AboutComponent', () => {
7 | let component: AboutComponent;
8 | let fixture: ComponentFixture;
9 |
10 | beforeEach(async () => {
11 | await TestBed.configureTestingModule({
12 | imports: [AboutComponent],
13 | providers: [
14 | {
15 | provide: ActivatedRoute,
16 | useValue: {}
17 | }
18 | ]
19 | })
20 | .compileComponents();
21 |
22 | fixture = TestBed.createComponent(AboutComponent);
23 | component = fixture.componentInstance;
24 | fixture.detectChanges();
25 | });
26 |
27 | it('should create', () => {
28 | expect(component).toBeTruthy();
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/about.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-about',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './about.component.html',
9 | styleUrl: './about.component.css'
10 | })
11 | export class AboutComponent {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/about.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './about.routes';
5 |
6 | export const aboutConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/experience/experience.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/about/experience/experience.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/experience/experience.component.html:
--------------------------------------------------------------------------------
1 | experience works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/experience/experience.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { ExperienceComponent } from './experience.component';
4 |
5 | describe('ExperienceComponent', () => {
6 | let component: ExperienceComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [ExperienceComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(ExperienceComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/experience/experience.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-experience',
5 | imports: [],
6 | templateUrl: './experience.component.html',
7 | styleUrl: './experience.component.css'
8 | })
9 | export class ExperienceComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/skill/skill.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/about/skill/skill.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/skill/skill.component.html:
--------------------------------------------------------------------------------
1 | skill works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/skill/skill.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { SkillComponent } from './skill.component';
4 |
5 | describe('SkillComponent', () => {
6 | let component: SkillComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [SkillComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(SkillComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/about/skill/skill.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-skill',
5 | imports: [],
6 | templateUrl: './skill.component.html',
7 | styleUrl: './skill.component.css'
8 | })
9 | export class SkillComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/contact.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/contact/contact.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/contact.component.html:
--------------------------------------------------------------------------------
1 |
2 |
contact works!
3 |
8 |
Child Routes Result
9 |
10 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/contact.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-contact',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './contact.component.html',
9 | styleUrl: './contact.component.css'
10 | })
11 | export class ContactComponent {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/contact.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './contact.routes';
5 |
6 | export const contactConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mailing/mailing.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/contact/mailing/mailing.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mailing/mailing.component.html:
--------------------------------------------------------------------------------
1 | mailing works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mailing/mailing.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { MailingComponent } from './mailing.component';
4 |
5 | describe('MailingComponent', () => {
6 | let component: MailingComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [MailingComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(MailingComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mailing/mailing.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-mailing',
5 | imports: [],
6 | templateUrl: './mailing.component.html',
7 | styleUrl: './mailing.component.css'
8 | })
9 | export class MailingComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mapping/mapping.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/contact/mapping/mapping.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mapping/mapping.component.html:
--------------------------------------------------------------------------------
1 | mapping works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mapping/mapping.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { MappingComponent } from './mapping.component';
4 |
5 | describe('MappingComponent', () => {
6 | let component: MappingComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [MappingComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(MappingComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/mapping/mapping.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-mapping',
5 | imports: [],
6 | templateUrl: './mapping.component.html',
7 | styleUrl: './mapping.component.css'
8 | })
9 | export class MappingComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/website/website.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/contact/website/website.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/website/website.component.html:
--------------------------------------------------------------------------------
1 | website works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/website/website.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { WebsiteComponent } from './website.component';
4 |
5 | describe('WebsiteComponent', () => {
6 | let component: WebsiteComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [WebsiteComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(WebsiteComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/contact/website/website.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-website',
5 | imports: [],
6 | templateUrl: './website.component.html',
7 | styleUrl: './website.component.css'
8 | })
9 | export class WebsiteComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/home/feature.ts:
--------------------------------------------------------------------------------
1 | export class Feature {
2 |
3 | name: string;
4 | description: string;
5 | icon: string;
6 | link: string;
7 |
8 | constructor() {
9 | this.name = '';
10 | this.description = '';
11 | this.icon = '';
12 | this.link = '';
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/home/home.component.css:
--------------------------------------------------------------------------------
1 | .nga-card {
2 | display: block;
3 | background-color: rgba(255, 255, 255, .8);
4 | box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);
5 | border-radius: 2px;
6 | transition: all .2s ease-in-out;
7 | cursor: pointer;
8 | }
9 |
10 | .nga-card:hover {
11 | transform: translateY(-3px);
12 | box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
13 | }
14 |
15 | .nga-card a {
16 | color: black;
17 | text-decoration: none;
18 | }
19 |
20 | .nga-card a:hover {
21 | color: #0d6efd;
22 | text-decoration: none;
23 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/home/home.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { HomeComponent } from './home.component';
4 | import { ActivatedRoute } from '@angular/router';
5 |
6 | describe('HomeComponent', () => {
7 | let component: HomeComponent;
8 | let fixture: ComponentFixture;
9 |
10 | beforeEach(async () => {
11 | await TestBed.configureTestingModule({
12 | imports: [HomeComponent],
13 | providers: [
14 | {
15 | provide: ActivatedRoute,
16 | useValue: {}
17 | }
18 | ]
19 | })
20 | .compileComponents();
21 |
22 | fixture = TestBed.createComponent(HomeComponent);
23 | component = fixture.componentInstance;
24 | fixture.detectChanges();
25 | });
26 |
27 | it('should create', () => {
28 | expect(component).toBeTruthy();
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/login/login.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/login/login.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/login/login.component.html:
--------------------------------------------------------------------------------
1 | login works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/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(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [LoginComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(LoginComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/login/login.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-login',
5 | templateUrl: './login.component.html',
6 | styleUrl: './login.component.css'
7 | })
8 | export class LoginComponent {
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/not-found/not-found.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/not-found/not-found.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/not-found/not-found.component.html:
--------------------------------------------------------------------------------
1 | not-found works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/not-found/not-found.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { NotFoundComponent } from './not-found.component';
4 |
5 | describe('NotFoundComponent', () => {
6 | let component: NotFoundComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [NotFoundComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(NotFoundComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/not-found/not-found.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-not-found',
5 | imports: [],
6 | templateUrl: './not-found.component.html',
7 | styleUrl: './not-found.component.css'
8 | })
9 | export class NotFoundComponent {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/signup/signup.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/signup/signup.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/signup/signup.component.html:
--------------------------------------------------------------------------------
1 | signup works!
2 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/signup/signup.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { SignupComponent } from './signup.component';
4 |
5 | describe('SignupComponent', () => {
6 | let component: SignupComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [SignupComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(SignupComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/signup/signup.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-signup',
5 | templateUrl: './signup.component.html',
6 | styleUrl: './signup.component.css'
7 | })
8 | export class SignupComponent {
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/00-main/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink } from '@angular/router';
4 | import { ITEMS } from './items';
5 |
6 | @Component({
7 | selector: 'app-00-main',
8 | imports: [CommonModule, RouterLink],
9 | templateUrl: './items.component.html',
10 | styleUrls: ['./items.component.css']
11 | })
12 | export class ItemsComponent {
13 | items = ITEMS;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/accordions/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/accordions/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/accordions/items.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { ItemsComponent } from './items.component';
4 |
5 | describe('AccordionsComponent', () => {
6 | let component: ItemsComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [ItemsComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(ItemsComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/accordions/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-accordions',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/alerts/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/alerts/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/alerts/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-alerts',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/badges/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/badges/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/badges/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-badge',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/blockquotes/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/blockquotes/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/blockquotes/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-blockquotes',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/breadcrumb/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/breadcrumb/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/breadcrumb/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-breadcrumb',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/buttons/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/buttons/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/buttons/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-buttons',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/cards/items.component.css:
--------------------------------------------------------------------------------
1 | .nga-card {
2 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
3 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12)
4 | }
5 |
6 | .nga-card-box {
7 | display: block;
8 | background-color: rgba(255, 255, 255, .8);
9 | box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);
10 | border-radius: 2px;
11 | transition: all .2s ease-in-out;
12 | cursor: pointer;
13 | }
14 |
15 | .nga-card-box:hover {
16 | box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
17 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/cards/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-alerts',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/checkbox/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/checkbox/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/checkbox/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-collapse',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/collapses/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/collapses/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/dropdowns/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/dropdowns/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/dropdowns/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-dropdowns',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/forms/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/forms/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/forms/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-forms',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/list-group/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/list-group/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/list-group/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-list-group',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/pagination/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/pagination/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/pagination/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-pagination',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/progress/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/progress/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/progress/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-progress',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/spinners/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/spinners/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/spinners/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-spinners',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/tables/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/tables/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/tables/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-pagination',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/tutorial.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-example-bootstrap',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './tutorial.component.html',
9 | styleUrls: ['./tutorial.component.css']
10 | })
11 | export class TutorialComponent {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/tutorial.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './tutorial.routes';
5 |
6 | export const tutorialConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/typography/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-bootstrap/typography/items.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-bootstrap/typography/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-collapse',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-components/channel/channel.component.css:
--------------------------------------------------------------------------------
1 | .nga-card-component {
2 | position: relative;
3 | display: flex;
4 | flex-direction: column;
5 | min-width: 0;
6 | word-wrap: break-word;
7 | background-color: #fff;
8 | background-clip: border-box;
9 | cursor: pointer;
10 | -webkit-box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
11 | box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
12 | }
13 |
14 | .nga-card-component:hover {
15 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
16 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
17 | }
18 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-components/channel/channel.component.html:
--------------------------------------------------------------------------------
1 |
2 |

3 |
4 |
{{ channel.releaseDate }}
5 |
6 |
7 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-components/channel/channel.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, EventEmitter, Output, Input } from '@angular/core';
2 |
3 | import { Channel } from './channel';
4 |
5 | @Component({
6 | selector: 'app-channel',
7 | templateUrl: './channel.component.html',
8 | styleUrls: ['./channel.component.css']
9 | })
10 | export class ChannelComponent {
11 |
12 | @Input() channel: Channel;
13 | @Input() index: number;
14 | @Output() selected: EventEmitter = new EventEmitter();
15 |
16 | constructor() {
17 | this.channel = new Channel();
18 | this.index = 0;
19 | }
20 |
21 | select(channel: Channel): void {
22 | this.selected.emit(channel);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-components/channel/channel.ts:
--------------------------------------------------------------------------------
1 | export class Channel {
2 |
3 | title: string;
4 | name: string;
5 | releaseDate: string;
6 |
7 | constructor() {
8 | this.title = '';
9 | this.name = '';
10 | this.releaseDate = '';
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-components/tutorial.component.css:
--------------------------------------------------------------------------------
1 | .nga-card-component {
2 | position: relative;
3 | display: flex;
4 | flex-direction: column;
5 | min-width: 0;
6 | word-wrap: break-word;
7 | background-color: #fff;
8 | background-clip: border-box;
9 | cursor: pointer;
10 | -webkit-box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
11 | box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
12 | }
13 |
14 | .nga-card-component:hover {
15 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
16 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
17 | }
18 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/00-main/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink } from '@angular/router';
4 | import { ITEMS } from './items';
5 |
6 | @Component({
7 | selector: 'app-prototype',
8 | imports: [CommonModule, RouterLink],
9 | templateUrl: './exercice.component.html',
10 | styleUrls: ['./exercice.component.css']
11 | })
12 | export class ExerciceComponent {
13 | items = ITEMS;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/01-single/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/01-single/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/01-single/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { FormsModule } from '@angular/forms';
3 |
4 | @Component({
5 | selector: 'app-exercice',
6 | imports: [FormsModule],
7 | templateUrl: './exercice.component.html',
8 | styleUrls: ['./exercice.component.css']
9 | })
10 | export class ExerciceComponent {
11 |
12 | firstName = 'Paul';
13 | lastName = 'Atreides';
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/02-multi/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/02-multi/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/02-multi/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Movie } from './movie';
3 | import { CommonModule } from '@angular/common';
4 | import { FormsModule } from '@angular/forms';
5 |
6 | @Component({
7 | selector: 'app-exercice',
8 | imports: [CommonModule, FormsModule],
9 | templateUrl: './exercice.component.html',
10 | styleUrls: ['./exercice.component.css']
11 | })
12 | export class ExerciceComponent {
13 |
14 | country: string;
15 | actor: string;
16 | movie: Movie = new Movie();
17 | movieAny = { name: '' };
18 |
19 | constructor() {
20 | this.country = 'United States';
21 | this.actor = 'Tom Cruise';
22 | this.movie.name = 'Edge of Tomorrow';
23 | this.movieAny = { name: 'Avatar' };
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/02-multi/movie.spec.ts:
--------------------------------------------------------------------------------
1 | import { Movie } from './movie';
2 |
3 | describe('Movie', () => {
4 | it('should create an instance', () => {
5 | expect(new Movie()).toBeTruthy();
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/02-multi/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 |
3 | name: string;
4 | releaseDate: string;
5 | domestic: string;
6 | international: string;
7 | worldwide: string;
8 | franchise: boolean;
9 |
10 | constructor() {
11 | this.name = '';
12 | this.releaseDate = '';
13 | this.domestic = '';
14 | this.international = '';
15 | this.worldwide = '';
16 | this.franchise = false;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/03-init-class/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/03-init-class/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/03-init-class/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Movie } from './movie';
3 | import { CommonModule } from '@angular/common';
4 | import { FormsModule } from '@angular/forms';
5 |
6 | @Component({
7 | selector: 'app-exercice',
8 | imports: [CommonModule, FormsModule],
9 | templateUrl: './exercice.component.html',
10 | styleUrls: ['./exercice.component.css']
11 | })
12 | export class ExerciceComponent {
13 |
14 | movie: Movie = new Movie();
15 |
16 | constructor() {
17 | this.movie.name = 'Avengers : Endgame';
18 | this.movie.releaseDate = '04/04/2019';
19 | this.movie.domestic = '$858,373,000';
20 | this.movie.international = '$2,797,800,564';
21 | this.movie.worldwide = '$2,797,800,564';
22 | this.movie.franchise = true;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/03-init-class/movie.spec.ts:
--------------------------------------------------------------------------------
1 | import { Movie } from './movie';
2 |
3 | describe('Movie', () => {
4 | it('should create an instance', () => {
5 | expect(new Movie()).toBeTruthy();
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/03-init-class/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 |
3 | name: string;
4 | releaseDate: string;
5 | domestic: string;
6 | international: string;
7 | worldwide: string;
8 | franchise: boolean;
9 |
10 | constructor() {
11 | this.name = '';
12 | this.releaseDate = '';
13 | this.domestic = '';
14 | this.international = '';
15 | this.worldwide = '';
16 | this.franchise = false;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/04-prototype/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/04-prototype/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/04-prototype/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { FormsModule } from '@angular/forms';
4 |
5 | @Component({
6 | selector: 'app-prototype',
7 | imports: [CommonModule, FormsModule],
8 | templateUrl: './exercice.component.html',
9 | styleUrls: ['./exercice.component.css']
10 | })
11 | export class ExerciceComponent {}
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/05-form-control/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/05-form-control/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/06-form-control-class/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/06-form-control-class/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/06-form-control-class/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 |
3 | name: string;
4 | releaseDate: string;
5 | franchise: boolean;
6 | budget: number;
7 | worldwide: number;
8 | summary: string;
9 |
10 | constructor() {
11 | this.name = '';
12 | this.releaseDate = '03/01/1892';
13 | this.franchise = false;
14 | this.budget = 0;
15 | this.worldwide = 0
16 | this.summary = '';
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/07-form-group/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/07-form-group/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/07-form-group/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/08-form-builder/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/08-form-builder/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/08-form-builder/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/09-form-builder-nested/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/09-form-builder-nested/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/09-form-builder-nested/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 | name: string;
3 | releaseDate: string;
4 |
5 | constructor() {
6 | this.name = '';
7 | this.releaseDate = '';
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/09-form-builder-nested/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/10-form-array/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/10-form-array/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/10-form-array/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 | name: string;
3 | releaseDate: string;
4 |
5 | constructor() {
6 | this.name = '';
7 | this.releaseDate = '';
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/10-form-array/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/11-form-multi/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-forms/11-form-multi/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/11-form-multi/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 | name: string;
3 | releaseDate: string;
4 |
5 | constructor() {
6 | this.name = '';
7 | this.releaseDate = '';
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/11-form-multi/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/tutorial.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-example-forms',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './tutorial.component.html',
9 | styleUrls: ['./tutorial.component.css']
10 | })
11 | export class TutorialComponent {
12 | }
13 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/tutorial.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './tutorial.routes';
5 |
6 | export const tutorialConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-forms/tutorial.module.ts:
--------------------------------------------------------------------------------
1 | import { NgModule } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 |
4 | import { TutorialRoutingModule } from './tutorial-routing.module';
5 | import { TutorialComponent } from './tutorial.component';
6 | import { HttpClientModule } from '@angular/common/http';
7 |
8 | @NgModule({
9 | declarations: [
10 | TutorialComponent,
11 | ],
12 | imports: [
13 | CommonModule,
14 | TutorialRoutingModule,
15 | HttpClientModule,
16 | ],
17 | exports: [
18 | TutorialComponent,
19 | ],
20 | })
21 | export class TutorialModule { }
22 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-services/safe.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 | import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
3 |
4 | @Pipe({ name: 'safe' })
5 | export class SafePipe implements PipeTransform {
6 | constructor(private sanitizer: DomSanitizer) { }
7 | // eslint-disable-next-line
8 | transform(url: any): SafeResourceUrl {
9 | return this.sanitizer.bypassSecurityTrustResourceUrl(url);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-services/song/song.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { SongService } from './song.service';
4 |
5 | describe('SongService', () => {
6 | let service: SongService;
7 |
8 | beforeEach(() => {
9 | TestBed.configureTestingModule({});
10 | service = TestBed.inject(SongService);
11 | });
12 |
13 | it('should be created', () => {
14 | expect(service).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-services/song/song.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | import { Song } from './song';
4 | import { SONGS } from './mock-songs';
5 |
6 | @Injectable({
7 | providedIn: 'root'
8 | })
9 | export class SongService {
10 |
11 | song: Song[];
12 | constructor() {
13 | this.song = [];
14 | }
15 |
16 | getSongs(year: number): Song[] {
17 | this.song = SONGS[year - 1].items;
18 |
19 | return this.song;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-services/song/song.ts:
--------------------------------------------------------------------------------
1 | export class Song {
2 |
3 | link: string;
4 | top: string;
5 | artist: string;
6 | title: string;
7 |
8 | constructor() {
9 | this.link = '';
10 | this.top = '';
11 | this.artist = '';
12 | this.title = '';
13 |
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-services/tutorial.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/app/features/tutorials/example-services/tutorial.component.css
--------------------------------------------------------------------------------
/frontend-angular-19/src/app/features/tutorials/example-services/tutorial.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './tutorial.routes';
5 |
6 | export const tutorialConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/.gitkeep
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/cinemax.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/cinemax.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/cw.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/cw.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/discovery-channel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/discovery-channel.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/disney-channel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/disney-channel.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/fox.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/fox.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/hbo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/hbo.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/history.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/history.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/hulu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/hulu.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/mtv.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/mtv.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/nbc.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/nbc.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/netflix.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/netflix.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/showtime.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/showtime.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/channels/usa-network.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/channels/usa-network.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/example-bootstrap/movie-screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/example-bootstrap/movie-screen.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/logo/ganatan-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/logo/ganatan-logo.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/logo/ganatan-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/logo/ganatan-logo@2x.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/studio/2560px-Valve_old_logo.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/studio/2560px-Valve_old_logo.svg.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/studio/Bioware-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/studio/Bioware-logo.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/studio/Electronic_Arts-Logo.wine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/studio/Electronic_Arts-Logo.wine.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/studio/Logo-Nintendo-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/studio/Logo-Nintendo-1.jpg
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/studio/Naughty-dog-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/studio/Naughty-dog-logo.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/images/studio/Rockstar_Games_Logo.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/src/assets/params/images/studio/Rockstar_Games_Logo.svg.png
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/js/popovers.js:
--------------------------------------------------------------------------------
1 | var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
2 | var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
3 | return new bootstrap.Popover(popoverTriggerEl)
4 | })
5 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/js/toasts.js:
--------------------------------------------------------------------------------
1 | var myToastEl = document.getElementById('myToast')
2 | myToastEl.classList.add("show");
3 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/assets/params/js/tooltips.js:
--------------------------------------------------------------------------------
1 | /*var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-toggle="tooltip"]'))
2 | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
3 | return new bootstrap.Tooltip(tooltipTriggerEl)
4 | })*/
5 |
6 | var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
7 | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
8 | return new bootstrap.Tooltip(tooltipTriggerEl)
9 | })
10 |
11 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/environments/environment.development.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | application:
3 | {
4 | name: 'angular-bootstrap',
5 | version: 'Angular 19.0.1',
6 | bootstrap: 'Bootstrap 5.3.3',
7 | fontawesome: 'Font Awesome 6.7.1',
8 | }
9 | };
--------------------------------------------------------------------------------
/frontend-angular-19/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | application:
3 | {
4 | name: 'angular-bootstrap',
5 | version: 'Angular 19.0.1',
6 | bootstrap: 'Bootstrap 5.3.3',
7 | fontawesome: 'Font Awesome 6.7.1',
8 | }
9 | };
--------------------------------------------------------------------------------
/frontend-angular-19/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { AppComponent } from './app/app.component';
3 | import { config } from './app/app.config.server';
4 |
5 | const bootstrap = () => bootstrapApplication(AppComponent, config);
6 |
7 | export default bootstrap;
8 |
--------------------------------------------------------------------------------
/frontend-angular-19/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 |
--------------------------------------------------------------------------------
/frontend-angular-19/src/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 3.5rem;
3 | font-family: "Roboto", sans-serif;
4 | }
--------------------------------------------------------------------------------
/frontend-angular-19/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2 | /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3 | {
4 | "extends": "./tsconfig.json",
5 | "compilerOptions": {
6 | "outDir": "./out-tsc/app",
7 | "types": [
8 | "node"
9 | ]
10 | },
11 | "files": [
12 | "src/main.ts",
13 | "src/main.server.ts",
14 | "src/server.ts"
15 | ],
16 | "include": [
17 | "src/**/*.d.ts"
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular-19/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2 | /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3 | {
4 | "extends": "./tsconfig.json",
5 | "compilerOptions": {
6 | "outDir": "./out-tsc/spec",
7 | "types": [
8 | "jasmine"
9 | ]
10 | },
11 | "include": [
12 | "src/**/*.spec.ts",
13 | "src/**/*.d.ts"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/css/regular.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :root, :host {
7 | --fa-style-family-classic: 'Font Awesome 6 Free';
8 | --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
9 |
10 | @font-face {
11 | font-family: 'Font Awesome 6 Free';
12 | font-style: normal;
13 | font-weight: 400;
14 | font-display: block;
15 | src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
16 |
17 | .far,
18 | .fa-regular {
19 | font-weight: 400; }
20 |
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/css/regular.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/css/solid.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :root, :host {
7 | --fa-style-family-classic: 'Font Awesome 6 Free';
8 | --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
9 |
10 | @font-face {
11 | font-family: 'Font Awesome 6 Free';
12 | font-style: normal;
13 | font-weight: 900;
14 | font-display: block;
15 | src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
16 |
17 | .fas,
18 | .fa-solid {
19 | font-weight: 900; }
20 |
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/css/solid.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/css/v5-font-face.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | @font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-v4compatibility.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-v4compatibility.ttf
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-v4compatibility.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/fontawesome/webfonts/fa-v4compatibility.woff2
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/css/body.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 3.5rem;
3 | font-family: "Roboto", sans-serif;
4 | }
5 |
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/css/footer.css:
--------------------------------------------------------------------------------
1 | .nga-footer {
2 | background-color: #212121;
3 | color: white;
4 | }
5 |
6 | .nga-footer a {
7 | color: white;
8 | text-decoration: none
9 | }
10 |
11 | .nga-footer a:hover,
12 | .nga-footer a:focus {
13 | color: yellow;
14 | text-decoration: underline;
15 | }
16 |
17 | .nga-footer .hint {
18 | background-color: #1976d2;
19 | }
20 |
21 | .nga-footer .hint:hover {
22 | opacity: 0.8;
23 | }
24 |
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/css/header.css:
--------------------------------------------------------------------------------
1 | .navbar.navbar-dark .navbar-nav .nav-item .nav-link {
2 | color: white;
3 | font-weight: 500;
4 | border-top: 1px solid #09238d;
5 | border-bottom: 1px solid #09238d;
6 | }
7 |
8 | .navbar.navbar-dark .navbar-nav .nav-item .nav-link:hover {
9 | color: yellow;
10 | border-top: 1px solid yellow;
11 | border-bottom: 1px solid yellow;
12 | }
13 |
14 | .nga-navbar {
15 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 11px 10px 0 rgba(0, 0, 0, 0.12);
16 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 11px 10px 0 rgba(0, 0, 0, 0.12);
17 | background-color: #09238d;
18 | }
19 |
20 | .nga-logo {
21 | font-weight: 700;
22 | }
23 |
24 | .nga-logo:hover {
25 | color: rgba(255, 255, 255, 0.75);
26 | }
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/images/logo/ganatan-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/params/images/logo/ganatan-logo.png
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/images/logo/ganatan-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular-19/ui/assets/params/images/logo/ganatan-logo@2x.png
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/js/popovers.js:
--------------------------------------------------------------------------------
1 | var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-toggle="popover"]'))
2 | var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
3 | return new bootstrap.Popover(popoverTriggerEl)
4 | })
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/js/toasts.js:
--------------------------------------------------------------------------------
1 | var myToastEl = document.getElementById('myToast')
2 | myToastEl.classList.add("show");
3 |
--------------------------------------------------------------------------------
/frontend-angular-19/ui/assets/params/js/tooltips.js:
--------------------------------------------------------------------------------
1 | var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-toggle="tooltip"]'))
2 | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
3 | return new bootstrap.Tooltip(tooltipTriggerEl)
4 | })
5 |
--------------------------------------------------------------------------------
/frontend-angular/.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 | ij_typescript_use_double_quotes = false
14 |
15 | [*.md]
16 | max_line_length = off
17 | trim_trailing_whitespace = false
18 |
--------------------------------------------------------------------------------
/frontend-angular/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.
2 |
3 | # Compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 | /bazel-out
8 |
9 | # Node
10 | /node_modules
11 | npm-debug.log
12 | yarn-error.log
13 |
14 | # IDEs and editors
15 | .idea/
16 | .project
17 | .classpath
18 | .c9/
19 | *.launch
20 | .settings/
21 | *.sublime-workspace
22 |
23 | # Visual Studio Code
24 | .vscode/*
25 | !.vscode/settings.json
26 | !.vscode/tasks.json
27 | !.vscode/launch.json
28 | !.vscode/extensions.json
29 | .history/*
30 |
31 | # Miscellaneous
32 | /.angular/cache
33 | .sass-cache/
34 | /connect.lock
35 | /coverage
36 | /libpeerconnection.log
37 | testem.log
38 | /typings
39 |
40 | # System files
41 | .DS_Store
42 | Thumbs.db
43 |
--------------------------------------------------------------------------------
/frontend-angular/README.md:
--------------------------------------------------------------------------------
1 | ### Installation
2 | * `npm install` (installing dependencies)
3 | * `npm outdated` (verifying dependencies)
4 |
5 | ### Developpement
6 | * `npm run start`
7 | * in your browser [http://localhost:4200](http://localhost:4200)
8 |
9 | ## Linter
10 | * `npm run lint`
11 |
12 | ## Tests
13 | * `npm run test`
14 | * `npm run coverage`
15 |
16 | ### Compilation
17 | * `npm run build` ( without SSR)
18 |
19 | ### Production
20 | * `npm run serve`
21 | * in your browser [http://localhost:4000](http://localhost:4000)
22 |
23 |
24 | ### Author
25 | * Author : danny
26 |
--------------------------------------------------------------------------------
/frontend-angular/nginx.conf:
--------------------------------------------------------------------------------
1 | user www-data;
2 | worker_processes auto;
3 | pid /run/nginx.pid;
4 | error_log /var/log/nginx/error.log;
5 | include /etc/nginx/modules-enabled/*.conf;
6 |
7 | events {
8 | worker_connections 768;
9 | }
10 |
11 | http {
12 | sendfile on;
13 | tcp_nopush on;
14 | types_hash_max_size 2048;
15 |
16 | include /etc/nginx/mime.types;
17 | default_type application/octet-stream;
18 |
19 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
20 | ssl_prefer_server_ciphers on;
21 |
22 | access_log /var/log/nginx/access.log;
23 | gzip on;
24 | include /etc/nginx/conf.d/*.conf;
25 | server {
26 | listen 80 default_server;
27 | listen [::]:80 default_server;
28 |
29 | root /var/www/html;
30 | index index.html index.htm index.nginx-debian.html;
31 | server_name _;
32 | location / {
33 | try_files $uri $uri/ =404;
34 | }
35 |
36 | }
37 | }
--------------------------------------------------------------------------------
/frontend-angular/ngsw-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/service-worker/config/schema.json",
3 | "index": "/index.html",
4 | "assetGroups": [
5 | {
6 | "name": "app",
7 | "installMode": "prefetch",
8 | "resources": {
9 | "files": [
10 | "/favicon.ico",
11 | "/index.csr.html",
12 | "/index.html",
13 | "/manifest.webmanifest",
14 | "/*.css",
15 | "/*.js"
16 | ]
17 | }
18 | },
19 | {
20 | "name": "assets",
21 | "installMode": "lazy",
22 | "updateMode": "prefetch",
23 | "resources": {
24 | "files": [
25 | "/**/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)"
26 | ]
27 | }
28 | }
29 | ]
30 | }
31 |
--------------------------------------------------------------------------------
/frontend-angular/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/favicon.ico
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-128x128.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-144x144.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-152x152.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-192x192.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-384x384.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-512x512.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-72x72.png
--------------------------------------------------------------------------------
/frontend-angular/public/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/public/icons/icon-96x96.png
--------------------------------------------------------------------------------
/frontend-angular/src/app/app.config.server.ts:
--------------------------------------------------------------------------------
1 | import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2 | import { provideServerRendering, withRoutes } from '@angular/ssr';
3 | import { appConfig } from './app.config';
4 | import { serverRoutes } from './app.routes.server';
5 |
6 | const serverConfig: ApplicationConfig = {
7 | providers: [
8 | provideServerRendering(withRoutes(serverRoutes))
9 | ]
10 | };
11 |
12 | export const config = mergeApplicationConfig(appConfig, serverConfig);
13 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/app.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZoneChangeDetection, isDevMode } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './app.routes';
5 | import { provideClientHydration, withEventReplay } from '@angular/platform-browser';
6 | import { provideServiceWorker } from '@angular/service-worker';
7 |
8 | export const appConfig: ApplicationConfig = {
9 | providers: [
10 | provideBrowserGlobalErrorListeners(),
11 | provideZoneChangeDetection({ eventCoalescing: true }),
12 | provideRouter(routes), provideClientHydration(withEventReplay()), provideServiceWorker('ngsw-worker.js', {
13 | enabled: !isDevMode(),
14 | registrationStrategy: 'registerWhenStable:30000'
15 | })
16 | ]
17 | };
18 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/app.routes.server.ts:
--------------------------------------------------------------------------------
1 | import { RenderMode, ServerRoute } from '@angular/ssr';
2 |
3 | export const serverRoutes: ServerRoute[] = [
4 | {
5 | path: '**',
6 | renderMode: RenderMode.Prerender
7 | }
8 | ];
9 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/app.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 | import { App } from './app';
3 | import { ActivatedRoute } from '@angular/router';
4 |
5 | describe('App', () => {
6 | beforeEach(async () => {
7 | await TestBed.configureTestingModule({
8 | imports: [App],
9 | providers: [
10 | {
11 | provide: ActivatedRoute,
12 | useValue: {}
13 | }
14 | ]
15 | }).compileComponents();
16 | });
17 |
18 | it('should create the app', () => {
19 | const fixture = TestBed.createComponent(App);
20 | const app = fixture.componentInstance;
21 | expect(app).toBeTruthy();
22 | });
23 |
24 | it('should render title', () => {
25 | const fixture = TestBed.createComponent(App);
26 | const app = fixture.componentInstance;
27 | expect(app.title).toEqual('angular-routing');
28 | });
29 | });
30 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/app.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-root',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './app.html',
9 | styleUrl: './app.css'
10 | })
11 | export class App implements OnInit {
12 | title = 'angular-routing';
13 | footerUrl = 'https://www.ganatan.com';
14 | footerLink = 'www.ganatan.com';
15 | ngOnInit(): void {
16 |
17 | const navMain = document.getElementById('navbarCollapse');
18 | if (navMain) {
19 | navMain.onclick = function onClick() {
20 | if (navMain) {
21 | navMain.classList.remove("show");
22 | }
23 | }
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/about.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './about.routes';
5 |
6 | export const aboutConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/about.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/about/about.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/about.html:
--------------------------------------------------------------------------------
1 |
2 |
about works!
3 |
7 |
Child Routes Result
8 |
9 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/about.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | import { About } from './about';
4 |
5 | export const routes: Routes = [
6 | {
7 | path: '', component: About, children: [
8 | {
9 | path: '',
10 | loadComponent: () => import(`./experience/experience`)
11 | .then(mod => mod.Experience)
12 | },
13 | {
14 | path: 'experience',
15 | loadComponent: () => import(`./experience/experience`)
16 | .then(mod => mod.Experience)
17 | },
18 | {
19 | path: 'skill',
20 | loadComponent: () => import(`./skill/skill`)
21 | .then(mod => mod.Skill)
22 | },
23 |
24 | {
25 | path: '**',
26 | loadComponent: () => import(`./experience/experience`)
27 | .then(mod => mod.Experience)
28 | },
29 |
30 | ]
31 | },
32 | ];
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/about.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { About } from './about';
4 | import { ActivatedRoute } from '@angular/router';
5 |
6 | describe('About', () => {
7 | let component: About;
8 | let fixture: ComponentFixture;
9 |
10 | beforeEach(async () => {
11 | await TestBed.configureTestingModule({
12 | imports: [About],
13 | providers: [
14 | {
15 | provide: ActivatedRoute,
16 | useValue: {}
17 | }
18 | ]
19 | }).compileComponents();
20 |
21 | fixture = TestBed.createComponent(About);
22 | component = fixture.componentInstance;
23 | fixture.detectChanges();
24 | });
25 |
26 | it('should create', () => {
27 | expect(component).toBeTruthy();
28 | });
29 | });
30 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/about.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-about',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './about.html',
9 | styleUrl: './about.css'
10 | })
11 | export class About {
12 |
13 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/experience/experience.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/about/experience/experience.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/experience/experience.html:
--------------------------------------------------------------------------------
1 | experience works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/experience/experience.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Experience } from './experience';
4 |
5 | describe('Experience', () => {
6 | let component: Experience;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Experience]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Experience);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/experience/experience.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-experience',
5 | imports: [],
6 | templateUrl: './experience.html',
7 | styleUrl: './experience.css'
8 | })
9 | export class Experience {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/skill/skill.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/about/skill/skill.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/skill/skill.html:
--------------------------------------------------------------------------------
1 | skill works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/skill/skill.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Skill } from './skill';
4 |
5 | describe('Skill', () => {
6 | let component: Skill;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Skill]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Skill);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/about/skill/skill.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-skill',
5 | imports: [],
6 | templateUrl: './skill.html',
7 | styleUrl: './skill.css'
8 | })
9 | export class Skill {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/contact.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './contact.routes';
5 |
6 | export const contactConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/contact.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/contact/contact.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/contact.html:
--------------------------------------------------------------------------------
1 |
2 |
contact works!
3 |
8 |
Child Routes Result
9 |
10 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/contact.routes.ts:
--------------------------------------------------------------------------------
1 | import { Routes } from '@angular/router';
2 |
3 | import { Contact } from './contact';
4 |
5 | export const routes: Routes = [
6 | {
7 | path: '', component: Contact, children: [
8 | {
9 | path: '',
10 | loadComponent: () => import(`./mailing/mailing`)
11 | .then(mod => mod.Mailing)
12 | },
13 | {
14 | path: 'mapping',
15 | loadComponent: () => import(`./mapping/mapping`)
16 | .then(mod => mod.Mapping)
17 | },
18 | {
19 | path: 'website',
20 | loadComponent: () => import(`./website/website`)
21 | .then(mod => mod.Website)
22 | },
23 |
24 | {
25 | path: '**',
26 | loadComponent: () => import(`./mailing/mailing`)
27 | .then(mod => mod.Mailing)
28 | },
29 |
30 | ]
31 | },
32 | ];
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/contact.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Contact } from './contact';
4 | import { ActivatedRoute } from '@angular/router';
5 |
6 | describe('Contact', () => {
7 | let component: Contact;
8 | let fixture: ComponentFixture;
9 |
10 | beforeEach(async () => {
11 | await TestBed.configureTestingModule({
12 | imports: [Contact],
13 | providers: [
14 | {
15 | provide: ActivatedRoute,
16 | useValue: {}
17 | }
18 | ]
19 | })
20 | .compileComponents();
21 |
22 | fixture = TestBed.createComponent(Contact);
23 | component = fixture.componentInstance;
24 | fixture.detectChanges();
25 | });
26 |
27 | it('should create', () => {
28 | expect(component).toBeTruthy();
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/contact.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 |
6 | @Component({
7 | selector: 'app-contact',
8 | imports: [CommonModule, RouterLink, RouterOutlet],
9 | templateUrl: './contact.html',
10 | styleUrl: './contact.css'
11 | })
12 | export class Contact {
13 |
14 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mailing/mailing.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/contact/mailing/mailing.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mailing/mailing.html:
--------------------------------------------------------------------------------
1 | mailing works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mailing/mailing.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Mailing } from './mailing';
4 |
5 | describe('Mailing', () => {
6 | let component: Mailing;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Mailing]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Mailing);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mailing/mailing.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-mailing',
5 | imports: [],
6 | templateUrl: './mailing.html',
7 | styleUrl: './mailing.css'
8 | })
9 | export class Mailing {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mapping/mapping.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/contact/mapping/mapping.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mapping/mapping.html:
--------------------------------------------------------------------------------
1 | mapping works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mapping/mapping.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Mapping } from './mapping';
4 |
5 | describe('Mapping', () => {
6 | let component: Mapping;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Mapping]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Mapping);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/mapping/mapping.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-mapping',
5 | imports: [],
6 | templateUrl: './mapping.html',
7 | styleUrl: './mapping.css'
8 | })
9 | export class Mapping {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/website/website.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/contact/website/website.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/website/website.html:
--------------------------------------------------------------------------------
1 | website works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/website/website.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Website } from './website';
4 |
5 | describe('Website', () => {
6 | let component: Website;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Website]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Website);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/contact/website/website.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-website',
5 | imports: [],
6 | templateUrl: './website.html',
7 | styleUrl: './website.css'
8 | })
9 | export class Website {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/home/feature.ts:
--------------------------------------------------------------------------------
1 | export class Feature {
2 |
3 | name: string;
4 | description: string;
5 | icon: string;
6 | link: string;
7 |
8 | constructor() {
9 | this.name = '';
10 | this.description = '';
11 | this.icon = '';
12 | this.link = '';
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/home/home.css:
--------------------------------------------------------------------------------
1 | .nga-card {
2 | display: block;
3 | background-color: rgba(255, 255, 255, .8);
4 | box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);
5 | border-radius: 2px;
6 | transition: all .2s ease-in-out;
7 | cursor: pointer;
8 | }
9 |
10 | .nga-card:hover {
11 | transform: translateY(-3px);
12 | box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
13 | }
14 |
15 | .nga-card a {
16 | color: black;
17 | text-decoration: none;
18 | }
19 |
20 | .nga-card a:hover {
21 | color: #0d6efd;
22 | text-decoration: none;
23 | }
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/home/home.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Home } from './home';
4 | import { ActivatedRoute } from '@angular/router';
5 |
6 | describe('Home', () => {
7 | let component: Home;
8 | let fixture: ComponentFixture;
9 |
10 | beforeEach(async () => {
11 | await TestBed.configureTestingModule({
12 | imports: [Home],
13 | providers: [
14 | {
15 | provide: ActivatedRoute,
16 | useValue: {}
17 | }
18 | ]
19 | })
20 | .compileComponents();
21 |
22 | fixture = TestBed.createComponent(Home);
23 | component = fixture.componentInstance;
24 | fixture.detectChanges();
25 | });
26 |
27 | it('should create', () => {
28 | expect(component).toBeTruthy();
29 | });
30 | });
31 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/login/login.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/login/login.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/login/login.html:
--------------------------------------------------------------------------------
1 | login works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/login/login.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Login } from './login';
4 |
5 | describe('Login', () => {
6 | let component: Login;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Login]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Login);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/login/login.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-login',
5 | imports: [],
6 | templateUrl: './login.html',
7 | styleUrl: './login.css'
8 | })
9 | export class Login {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/not-found/not-found.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/not-found/not-found.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/not-found/not-found.html:
--------------------------------------------------------------------------------
1 | not-found works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/not-found/not-found.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { NotFound } from './not-found';
4 |
5 | describe('NotFound', () => {
6 | let component: NotFound;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [NotFound]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(NotFound);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/not-found/not-found.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-not-found',
5 | imports: [],
6 | templateUrl: './not-found.html',
7 | styleUrl: './not-found.css'
8 | })
9 | export class NotFound {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/signup/signup.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/signup/signup.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/signup/signup.html:
--------------------------------------------------------------------------------
1 | signup works!
2 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/signup/signup.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { Signup } from './signup';
4 |
5 | describe('Signup', () => {
6 | let component: Signup;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [Signup]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(Signup);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/signup/signup.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-signup',
5 | imports: [],
6 | templateUrl: './signup.html',
7 | styleUrl: './signup.css'
8 | })
9 | export class Signup {
10 |
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/00-main/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink } from '@angular/router';
4 | import { ITEMS } from './items';
5 |
6 | @Component({
7 | selector: 'app-00-main',
8 | imports: [CommonModule, RouterLink],
9 | templateUrl: './items.component.html',
10 | styleUrls: ['./items.component.css']
11 | })
12 | export class ItemsComponent {
13 | items = ITEMS;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/accordions/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/accordions/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/accordions/items.component.spec.ts:
--------------------------------------------------------------------------------
1 | import { ComponentFixture, TestBed } from '@angular/core/testing';
2 |
3 | import { ItemsComponent } from './items.component';
4 |
5 | describe('AccordionsComponent', () => {
6 | let component: ItemsComponent;
7 | let fixture: ComponentFixture;
8 |
9 | beforeEach(async () => {
10 | await TestBed.configureTestingModule({
11 | imports: [ItemsComponent]
12 | })
13 | .compileComponents();
14 |
15 | fixture = TestBed.createComponent(ItemsComponent);
16 | component = fixture.componentInstance;
17 | fixture.detectChanges();
18 | });
19 |
20 | it('should create', () => {
21 | expect(component).toBeTruthy();
22 | });
23 | });
24 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/accordions/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-accordions',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/alerts/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/alerts/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/alerts/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-alerts',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/badges/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/badges/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/badges/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-badge',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/blockquotes/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/blockquotes/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/blockquotes/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-blockquotes',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/breadcrumb/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/breadcrumb/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/breadcrumb/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-breadcrumb',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/buttons/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/buttons/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/buttons/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-buttons',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/cards/items.component.css:
--------------------------------------------------------------------------------
1 | .nga-card {
2 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
3 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12)
4 | }
5 |
6 | .nga-card-box {
7 | display: block;
8 | background-color: rgba(255, 255, 255, .8);
9 | box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);
10 | border-radius: 2px;
11 | transition: all .2s ease-in-out;
12 | cursor: pointer;
13 | }
14 |
15 | .nga-card-box:hover {
16 | box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
17 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/cards/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-alerts',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/checkbox/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/checkbox/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/checkbox/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-collapse',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/collapses/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/collapses/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/dropdowns/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/dropdowns/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/dropdowns/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-dropdowns',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/forms/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/forms/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/forms/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-forms',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/list-group/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/list-group/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/list-group/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-list-group',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/pagination/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/pagination/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/pagination/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-pagination',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/progress/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/progress/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/progress/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-progress',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/spinners/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/spinners/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/spinners/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-spinners',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/tables/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/tables/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/tables/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-pagination',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/tutorial.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-example-bootstrap',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './tutorial.component.html',
9 | styleUrls: ['./tutorial.component.css']
10 | })
11 | export class TutorialComponent {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/tutorial.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './tutorial.routes';
5 |
6 | export const tutorialConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/typography/items.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-bootstrap/typography/items.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-bootstrap/typography/items.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-collapse',
5 | templateUrl: './items.component.html',
6 | styleUrls: ['./items.component.css']
7 | })
8 | export class ItemsComponent {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-components/channel/channel.component.css:
--------------------------------------------------------------------------------
1 | .nga-card-component {
2 | position: relative;
3 | display: flex;
4 | flex-direction: column;
5 | min-width: 0;
6 | word-wrap: break-word;
7 | background-color: #fff;
8 | background-clip: border-box;
9 | cursor: pointer;
10 | -webkit-box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
11 | box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
12 | }
13 |
14 | .nga-card-component:hover {
15 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
16 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
17 | }
18 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-components/channel/channel.component.html:
--------------------------------------------------------------------------------
1 |
2 |

3 |
4 |
{{ channel.releaseDate }}
5 |
6 |
7 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-components/channel/channel.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, EventEmitter, Output, Input } from '@angular/core';
2 |
3 | import { Channel } from './channel';
4 |
5 | @Component({
6 | selector: 'app-channel',
7 | templateUrl: './channel.component.html',
8 | styleUrls: ['./channel.component.css']
9 | })
10 | export class ChannelComponent {
11 |
12 | @Input() channel: Channel;
13 | @Input() index: number;
14 | @Output() selected: EventEmitter = new EventEmitter();
15 |
16 | constructor() {
17 | this.channel = new Channel();
18 | this.index = 0;
19 | }
20 |
21 | select(channel: Channel): void {
22 | this.selected.emit(channel);
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-components/channel/channel.ts:
--------------------------------------------------------------------------------
1 | export class Channel {
2 |
3 | title: string;
4 | name: string;
5 | releaseDate: string;
6 |
7 | constructor() {
8 | this.title = '';
9 | this.name = '';
10 | this.releaseDate = '';
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-components/tutorial.component.css:
--------------------------------------------------------------------------------
1 | .nga-card-component {
2 | position: relative;
3 | display: flex;
4 | flex-direction: column;
5 | min-width: 0;
6 | word-wrap: break-word;
7 | background-color: #fff;
8 | background-clip: border-box;
9 | cursor: pointer;
10 | -webkit-box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
11 | box-shadow: 0 0px 1px 0 rgba(0, 0, 0, 0.16), 0 0px 5px 0 rgba(0, 0, 0, 0.12);
12 | }
13 |
14 | .nga-card-component:hover {
15 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
16 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
17 | }
18 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/00-main/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink } from '@angular/router';
4 | import { ITEMS } from './items';
5 |
6 | @Component({
7 | selector: 'app-prototype',
8 | imports: [CommonModule, RouterLink],
9 | templateUrl: './exercice.component.html',
10 | styleUrls: ['./exercice.component.css']
11 | })
12 | export class ExerciceComponent {
13 | items = ITEMS;
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/01-single/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/01-single/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/01-single/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { FormsModule } from '@angular/forms';
3 |
4 | @Component({
5 | selector: 'app-exercice',
6 | imports: [FormsModule],
7 | templateUrl: './exercice.component.html',
8 | styleUrls: ['./exercice.component.css']
9 | })
10 | export class ExerciceComponent {
11 |
12 | firstName = 'Paul';
13 | lastName = 'Atreides';
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/02-multi/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/02-multi/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/02-multi/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Movie } from './movie';
3 | import { CommonModule } from '@angular/common';
4 | import { FormsModule } from '@angular/forms';
5 |
6 | @Component({
7 | selector: 'app-exercice',
8 | imports: [CommonModule, FormsModule],
9 | templateUrl: './exercice.component.html',
10 | styleUrls: ['./exercice.component.css']
11 | })
12 | export class ExerciceComponent {
13 |
14 | country: string;
15 | actor: string;
16 | movie: Movie = new Movie();
17 | movieAny = { name: '' };
18 |
19 | constructor() {
20 | this.country = 'United States';
21 | this.actor = 'Tom Cruise';
22 | this.movie.name = 'Edge of Tomorrow';
23 | this.movieAny = { name: 'Avatar' };
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/02-multi/movie.spec.ts:
--------------------------------------------------------------------------------
1 | import { Movie } from './movie';
2 |
3 | describe('Movie', () => {
4 | it('should create an instance', () => {
5 | expect(new Movie()).toBeTruthy();
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/02-multi/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 |
3 | name: string;
4 | releaseDate: string;
5 | domestic: string;
6 | international: string;
7 | worldwide: string;
8 | franchise: boolean;
9 |
10 | constructor() {
11 | this.name = '';
12 | this.releaseDate = '';
13 | this.domestic = '';
14 | this.international = '';
15 | this.worldwide = '';
16 | this.franchise = false;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/03-init-class/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/03-init-class/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/03-init-class/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { Movie } from './movie';
3 | import { CommonModule } from '@angular/common';
4 | import { FormsModule } from '@angular/forms';
5 |
6 | @Component({
7 | selector: 'app-exercice',
8 | imports: [CommonModule, FormsModule],
9 | templateUrl: './exercice.component.html',
10 | styleUrls: ['./exercice.component.css']
11 | })
12 | export class ExerciceComponent {
13 |
14 | movie: Movie = new Movie();
15 |
16 | constructor() {
17 | this.movie.name = 'Avengers : Endgame';
18 | this.movie.releaseDate = '04/04/2019';
19 | this.movie.domestic = '$858,373,000';
20 | this.movie.international = '$2,797,800,564';
21 | this.movie.worldwide = '$2,797,800,564';
22 | this.movie.franchise = true;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/03-init-class/movie.spec.ts:
--------------------------------------------------------------------------------
1 | import { Movie } from './movie';
2 |
3 | describe('Movie', () => {
4 | it('should create an instance', () => {
5 | expect(new Movie()).toBeTruthy();
6 | });
7 | });
8 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/03-init-class/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 |
3 | name: string;
4 | releaseDate: string;
5 | domestic: string;
6 | international: string;
7 | worldwide: string;
8 | franchise: boolean;
9 |
10 | constructor() {
11 | this.name = '';
12 | this.releaseDate = '';
13 | this.domestic = '';
14 | this.international = '';
15 | this.worldwide = '';
16 | this.franchise = false;
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/04-prototype/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/04-prototype/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/04-prototype/exercice.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { FormsModule } from '@angular/forms';
4 |
5 | @Component({
6 | selector: 'app-prototype',
7 | imports: [CommonModule, FormsModule],
8 | templateUrl: './exercice.component.html',
9 | styleUrls: ['./exercice.component.css']
10 | })
11 | export class ExerciceComponent {}
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/05-form-control/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/05-form-control/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/06-form-control-class/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/06-form-control-class/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/06-form-control-class/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 |
3 | name: string;
4 | releaseDate: string;
5 | franchise: boolean;
6 | budget: number;
7 | worldwide: number;
8 | summary: string;
9 |
10 | constructor() {
11 | this.name = '';
12 | this.releaseDate = '03/01/1892';
13 | this.franchise = false;
14 | this.budget = 0;
15 | this.worldwide = 0
16 | this.summary = '';
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/07-form-group/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/07-form-group/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/07-form-group/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/08-form-builder/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/08-form-builder/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/08-form-builder/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/09-form-builder-nested/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/09-form-builder-nested/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/09-form-builder-nested/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 | name: string;
3 | releaseDate: string;
4 |
5 | constructor() {
6 | this.name = '';
7 | this.releaseDate = '';
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/09-form-builder-nested/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/10-form-array/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/10-form-array/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/10-form-array/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 | name: string;
3 | releaseDate: string;
4 |
5 | constructor() {
6 | this.name = '';
7 | this.releaseDate = '';
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/10-form-array/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/11-form-multi/exercice.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-forms/11-form-multi/exercice.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/11-form-multi/movie.ts:
--------------------------------------------------------------------------------
1 | export class Movie {
2 | name: string;
3 | releaseDate: string;
4 |
5 | constructor() {
6 | this.name = '';
7 | this.releaseDate = '';
8 | }
9 |
10 | }
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/11-form-multi/pretty-json.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 |
3 | @Pipe({
4 | name: 'prettyjson'
5 | })
6 | export class PrettyJsonPipe implements PipeTransform {
7 | // eslint-disable-next-line
8 | transform(value: any, ...args: any[]): any {
9 | return JSON.stringify(value, null, 2)
10 | .replace(/ /g, ' ')
11 | .replace(/\n/g, '
');
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/tutorial.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { CommonModule } from '@angular/common';
3 | import { RouterLink, RouterOutlet } from '@angular/router';
4 |
5 | @Component({
6 | selector: 'app-example-forms',
7 | imports: [CommonModule, RouterLink, RouterOutlet],
8 | templateUrl: './tutorial.component.html',
9 | styleUrls: ['./tutorial.component.css']
10 | })
11 | export class TutorialComponent {
12 | }
13 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-forms/tutorial.config.ts:
--------------------------------------------------------------------------------
1 | import { ApplicationConfig } from '@angular/core';
2 | import { provideRouter } from '@angular/router';
3 |
4 | import { routes } from './tutorial.routes';
5 |
6 | export const tutorialConfig: ApplicationConfig = {
7 | providers: [provideRouter(routes)]
8 | };
9 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-services/safe.pipe.ts:
--------------------------------------------------------------------------------
1 | import { Pipe, PipeTransform } from '@angular/core';
2 | import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
3 |
4 | @Pipe({ name: 'safe' })
5 | export class SafePipe implements PipeTransform {
6 | constructor(private sanitizer: DomSanitizer) { }
7 | // eslint-disable-next-line
8 | transform(url: any): SafeResourceUrl {
9 | return this.sanitizer.bypassSecurityTrustResourceUrl(url);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-services/song/song.service.spec.ts:
--------------------------------------------------------------------------------
1 | import { TestBed } from '@angular/core/testing';
2 |
3 | import { SongService } from './song.service';
4 |
5 | describe('SongService', () => {
6 | let service: SongService;
7 |
8 | beforeEach(() => {
9 | TestBed.configureTestingModule({});
10 | service = TestBed.inject(SongService);
11 | });
12 |
13 | it('should be created', () => {
14 | expect(service).toBeTruthy();
15 | });
16 | });
17 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-services/song/song.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 |
3 | import { Song } from './song';
4 | import { SONGS } from './mock-songs';
5 |
6 | @Injectable({
7 | providedIn: 'root'
8 | })
9 | export class SongService {
10 |
11 | song: Song[];
12 | constructor() {
13 | this.song = [];
14 | }
15 |
16 | getSongs(year: number): Song[] {
17 | this.song = SONGS[year - 1].items;
18 |
19 | return this.song;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-services/song/song.ts:
--------------------------------------------------------------------------------
1 | export class Song {
2 |
3 | link: string;
4 | top: string;
5 | artist: string;
6 | title: string;
7 |
8 | constructor() {
9 | this.link = '';
10 | this.top = '';
11 | this.artist = '';
12 | this.title = '';
13 |
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/frontend-angular/src/app/features/tutorials/example-services/tutorial.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/app/features/tutorials/example-services/tutorial.component.css
--------------------------------------------------------------------------------
/frontend-angular/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/.gitkeep
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/cinemax.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/cinemax.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/cw.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/cw.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/discovery-channel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/discovery-channel.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/disney-channel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/disney-channel.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/fox.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/fox.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/hbo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/hbo.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/history.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/history.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/hulu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/hulu.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/mtv.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/mtv.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/nbc.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/nbc.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/netflix.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/netflix.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/showtime.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/showtime.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/channels/usa-network.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/channels/usa-network.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/example-bootstrap/movie-screen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/example-bootstrap/movie-screen.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/logo/ganatan-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/logo/ganatan-logo.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/logo/ganatan-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/logo/ganatan-logo@2x.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/studio/2560px-Valve_old_logo.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/studio/2560px-Valve_old_logo.svg.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/studio/Bioware-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/studio/Bioware-logo.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/studio/Electronic_Arts-Logo.wine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/studio/Electronic_Arts-Logo.wine.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/studio/Logo-Nintendo-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/studio/Logo-Nintendo-1.jpg
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/studio/Naughty-dog-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/studio/Naughty-dog-logo.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/images/studio/Rockstar_Games_Logo.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/src/assets/params/images/studio/Rockstar_Games_Logo.svg.png
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/js/popovers.js:
--------------------------------------------------------------------------------
1 | var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
2 | var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
3 | return new bootstrap.Popover(popoverTriggerEl)
4 | })
5 |
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/js/toasts.js:
--------------------------------------------------------------------------------
1 | var myToastEl = document.getElementById('myToast')
2 | myToastEl.classList.add("show");
3 |
--------------------------------------------------------------------------------
/frontend-angular/src/assets/params/js/tooltips.js:
--------------------------------------------------------------------------------
1 | /*var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-toggle="tooltip"]'))
2 | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
3 | return new bootstrap.Tooltip(tooltipTriggerEl)
4 | })*/
5 |
6 | var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
7 | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
8 | return new bootstrap.Tooltip(tooltipTriggerEl)
9 | })
10 |
11 |
--------------------------------------------------------------------------------
/frontend-angular/src/environments/environment.development.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | application:
3 | {
4 | name: 'angular-bootstrap',
5 | version: 'Angular 20.0.1',
6 | bootstrap: 'Bootstrap 5.3.6',
7 | fontawesome: 'Font Awesome 6.7.2',
8 | }
9 | };
--------------------------------------------------------------------------------
/frontend-angular/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | application:
3 | {
4 | name: 'angular-bootstrap',
5 | version: 'Angular 20.0.1',
6 | bootstrap: 'Bootstrap 5.3.6',
7 | fontawesome: 'Font Awesome 6.7.2',
8 | }
9 | };
--------------------------------------------------------------------------------
/frontend-angular/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | AngularStarter
6 |
7 |
8 |
9 |
10 |
11 |
12 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/frontend-angular/src/main.server.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { App } from './app/app';
3 | import { config } from './app/app.config.server';
4 |
5 | const bootstrap = () => bootstrapApplication(App, config);
6 |
7 | export default bootstrap;
8 |
--------------------------------------------------------------------------------
/frontend-angular/src/main.ts:
--------------------------------------------------------------------------------
1 | import { bootstrapApplication } from '@angular/platform-browser';
2 | import { appConfig } from './app/app.config';
3 | import { App } from './app/app';
4 |
5 | bootstrapApplication(App, appConfig)
6 | .catch((err) => console.error(err));
7 |
--------------------------------------------------------------------------------
/frontend-angular/src/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 3.5rem;
3 | font-family: "Roboto", sans-serif;
4 | }
--------------------------------------------------------------------------------
/frontend-angular/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2 | /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3 | {
4 | "extends": "./tsconfig.json",
5 | "compilerOptions": {
6 | "outDir": "./out-tsc/app",
7 | "types": [
8 | "node"
9 | ]
10 | },
11 | "include": [
12 | "src/**/*.ts"
13 | ],
14 | "exclude": [
15 | "src/**/*.spec.ts"
16 | ]
17 | }
18 |
--------------------------------------------------------------------------------
/frontend-angular/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2 | /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3 | {
4 | "extends": "./tsconfig.json",
5 | "compilerOptions": {
6 | "outDir": "./out-tsc/spec",
7 | "types": [
8 | "jasmine"
9 | ]
10 | },
11 | "include": [
12 | "src/**/*.ts"
13 | ]
14 | }
15 |
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/css/regular.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :root, :host {
7 | --fa-style-family-classic: 'Font Awesome 6 Free';
8 | --fa-font-regular: normal 400 1em/1 'Font Awesome 6 Free'; }
9 |
10 | @font-face {
11 | font-family: 'Font Awesome 6 Free';
12 | font-style: normal;
13 | font-weight: 400;
14 | font-display: block;
15 | src: url("../webfonts/fa-regular-400.woff2") format("woff2"), url("../webfonts/fa-regular-400.ttf") format("truetype"); }
16 |
17 | .far,
18 | .fa-regular {
19 | font-weight: 400; }
20 |
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/css/regular.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-weight:400}
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/css/solid.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :root, :host {
7 | --fa-style-family-classic: 'Font Awesome 6 Free';
8 | --fa-font-solid: normal 900 1em/1 'Font Awesome 6 Free'; }
9 |
10 | @font-face {
11 | font-family: 'Font Awesome 6 Free';
12 | font-style: normal;
13 | font-weight: 900;
14 | font-display: block;
15 | src: url("../webfonts/fa-solid-900.woff2") format("woff2"), url("../webfonts/fa-solid-900.ttf") format("truetype"); }
16 |
17 | .fas,
18 | .fa-solid {
19 | font-weight: 900; }
20 |
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/css/solid.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | :host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-weight:900}
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/css/v5-font-face.min.css:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
3 | * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
4 | * Copyright 2023 Fonticons, Inc.
5 | */
6 | @font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-brands-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-brands-400.ttf
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-brands-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-brands-400.woff2
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-regular-400.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-regular-400.ttf
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-regular-400.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-regular-400.woff2
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-solid-900.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-solid-900.ttf
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-solid-900.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-solid-900.woff2
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-v4compatibility.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-v4compatibility.ttf
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/fontawesome/webfonts/fa-v4compatibility.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/fontawesome/webfonts/fa-v4compatibility.woff2
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/css/body.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 3.5rem;
3 | font-family: "Roboto", sans-serif;
4 | }
5 |
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/css/footer.css:
--------------------------------------------------------------------------------
1 | .nga-footer {
2 | background-color: #212121;
3 | color: white;
4 | }
5 |
6 | .nga-footer a {
7 | color: white;
8 | text-decoration: none
9 | }
10 |
11 | .nga-footer a:hover,
12 | .nga-footer a:focus {
13 | color: yellow;
14 | text-decoration: underline;
15 | }
16 |
17 | .nga-footer .hint {
18 | background-color: #1976d2;
19 | }
20 |
21 | .nga-footer .hint:hover {
22 | opacity: 0.8;
23 | }
24 |
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/css/header.css:
--------------------------------------------------------------------------------
1 | .navbar.navbar-dark .navbar-nav .nav-item .nav-link {
2 | color: white;
3 | font-weight: 500;
4 | border-top: 1px solid #09238d;
5 | border-bottom: 1px solid #09238d;
6 | }
7 |
8 | .navbar.navbar-dark .navbar-nav .nav-item .nav-link:hover {
9 | color: yellow;
10 | border-top: 1px solid yellow;
11 | border-bottom: 1px solid yellow;
12 | }
13 |
14 | .nga-navbar {
15 | -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 11px 10px 0 rgba(0, 0, 0, 0.12);
16 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 11px 10px 0 rgba(0, 0, 0, 0.12);
17 | background-color: #09238d;
18 | }
19 |
20 | .nga-logo {
21 | font-weight: 700;
22 | }
23 |
24 | .nga-logo:hover {
25 | color: rgba(255, 255, 255, 0.75);
26 | }
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/images/logo/ganatan-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/params/images/logo/ganatan-logo.png
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/images/logo/ganatan-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-angular/ui/assets/params/images/logo/ganatan-logo@2x.png
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/js/popovers.js:
--------------------------------------------------------------------------------
1 | var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-toggle="popover"]'))
2 | var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
3 | return new bootstrap.Popover(popoverTriggerEl)
4 | })
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/js/toasts.js:
--------------------------------------------------------------------------------
1 | var myToastEl = document.getElementById('myToast')
2 | myToastEl.classList.add("show");
3 |
--------------------------------------------------------------------------------
/frontend-angular/ui/assets/params/js/tooltips.js:
--------------------------------------------------------------------------------
1 | var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-toggle="tooltip"]'))
2 | var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
3 | return new bootstrap.Tooltip(tooltipTriggerEl)
4 | })
5 |
--------------------------------------------------------------------------------
/frontend-react/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # production
12 | /build
13 |
14 | # misc
15 | .DS_Store
16 | .env.local
17 | .env.development.local
18 | .env.test.local
19 | .env.production.local
20 |
21 | npm-debug.log*
22 | yarn-debug.log*
23 | yarn-error.log*
24 |
--------------------------------------------------------------------------------
/frontend-react/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/public/favicon.ico
--------------------------------------------------------------------------------
/frontend-react/public/logo192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/public/logo192.png
--------------------------------------------------------------------------------
/frontend-react/public/logo512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/public/logo512.png
--------------------------------------------------------------------------------
/frontend-react/public/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "React App",
3 | "name": "Create React App Sample",
4 | "icons": [
5 | {
6 | "src": "favicon.ico",
7 | "sizes": "64x64 32x32 24x24 16x16",
8 | "type": "image/x-icon"
9 | },
10 | {
11 | "src": "logo192.png",
12 | "type": "image/png",
13 | "sizes": "192x192"
14 | },
15 | {
16 | "src": "logo512.png",
17 | "type": "image/png",
18 | "sizes": "512x512"
19 | }
20 | ],
21 | "start_url": ".",
22 | "display": "standalone",
23 | "theme_color": "#000000",
24 | "background_color": "#ffffff"
25 | }
26 |
--------------------------------------------------------------------------------
/frontend-react/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/frontend-react/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const path = require('path');
3 | const app = express();
4 |
5 | app.use(express.static(path.join(__dirname, 'build')));
6 |
7 | app.get('/*', function (req, res) {
8 | res.sendFile(path.join(__dirname, 'build', 'index.html'));
9 | });
10 |
11 | const port = 3000;
12 | app.listen(port, () => {
13 | console.log(`Example app listening on port ${port}`)
14 | })
15 |
16 |
--------------------------------------------------------------------------------
/frontend-react/src/app/app.test.js:
--------------------------------------------------------------------------------
1 | import { render } from '@testing-library/react';
2 | import { BrowserRouter } from 'react-router-dom';
3 |
4 | import App from './App';
5 |
6 | it('renders App with Routes', () => {
7 | render(
8 |
9 |
10 |
11 | );
12 | expect(true).toStrictEqual(true);
13 | });
14 |
15 |
--------------------------------------------------------------------------------
/frontend-react/src/app/components/seo/seo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { Helmet, HelmetProvider } from 'react-helmet-async';
4 |
5 | class Seo extends React.Component {
6 |
7 | constructor(props) {
8 | super(props);
9 | }
10 |
11 | render() {
12 |
13 | return (
14 |
15 |
16 |
17 | {this.props.title}
18 |
19 |
20 |
21 |
22 | )
23 | }
24 |
25 | }
26 |
27 | export default Seo;
28 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/00-main/main.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-bootstrap/00-main/main.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/00-main/main.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './main.css';
4 |
5 | class Main extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Main;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/accordions/accordions.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-bootstrap/accordions/accordions.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/accordions/accordions.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './accordions.css';
4 |
5 | class Accordions extends React.Component {
6 |
7 | render() {
8 | return (
9 |
10 |
Accordions works!
11 |
12 | )
13 | }
14 |
15 | }
16 | export default Accordions;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/alerts/alerts.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-bootstrap/alerts/alerts.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/alerts/alerts.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './alerts.css';
4 |
5 | class Alerts extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Alerts;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-bootstrap/example-bootstrap-routing.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Routes, Route } from "react-router-dom";
3 |
4 | import Main from './00-main/main';
5 | import Accordions from './accordions/accordions';
6 | import Alerts from './alerts/alerts';
7 |
8 | import Notfound from '../../../modules/general/not-found/not-found';
9 |
10 | class ExampleBootstrapRouting extends React.Component {
11 |
12 | render() {
13 | return (
14 |
15 | } />
16 | } />
17 | } />
18 | } />
19 | } />
20 |
21 | )
22 | }
23 |
24 | }
25 |
26 | export default ExampleBootstrapRouting;
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/00-main/main.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-components/00-main/main.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/00-main/main.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './main.css';
4 |
5 | class Main extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Main;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/accordions/accordions.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-components/accordions/accordions.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/accordions/accordions.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './accordions.css';
4 |
5 | class Accordions extends React.Component {
6 |
7 | render() {
8 | return (
9 |
10 |
Accordions works!
11 |
12 | )
13 | }
14 |
15 | }
16 | export default Accordions;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/alerts/alerts.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-components/alerts/alerts.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/alerts/alerts.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './alerts.css';
4 |
5 | class Alerts extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Alerts;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-components/example-components-routing.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Routes, Route } from "react-router-dom";
3 |
4 | import Main from './00-main/main';
5 | import Accordions from './accordions/accordions';
6 | import Alerts from './alerts/alerts';
7 |
8 | import Notfound from '../../../modules/general/not-found/not-found';
9 |
10 | class ExampleComponentsRouting extends React.Component {
11 |
12 | render() {
13 | return (
14 |
15 | } />
16 | } />
17 | } />
18 | } />
19 | } />
20 |
21 | )
22 | }
23 |
24 | }
25 |
26 | export default ExampleComponentsRouting;
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/00-main/main.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-forms/00-main/main.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/00-main/main.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './main.css';
4 |
5 | class Main extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Main;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/accordions/accordions.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-forms/accordions/accordions.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/accordions/accordions.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './accordions.css';
4 |
5 | class Accordions extends React.Component {
6 |
7 | render() {
8 | return (
9 |
10 |
Accordions works!
11 |
12 | )
13 | }
14 |
15 | }
16 | export default Accordions;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/alerts/alerts.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-forms/alerts/alerts.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/alerts/alerts.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './alerts.css';
4 |
5 | class Alerts extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Alerts;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-forms/example-forms-routing.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Routes, Route } from "react-router-dom";
3 |
4 | import Main from './00-main/main';
5 | import Accordions from './accordions/accordions';
6 | import Alerts from './alerts/alerts';
7 |
8 | import Notfound from '../../../modules/general/not-found/not-found';
9 |
10 | class ExampleComponentsRouting extends React.Component {
11 |
12 | render() {
13 | return (
14 |
15 | } />
16 | } />
17 | } />
18 | } />
19 | } />
20 |
21 | )
22 | }
23 |
24 | }
25 |
26 | export default ExampleComponentsRouting;
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/00-main/main.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-services/00-main/main.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/00-main/main.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './main.css';
4 |
5 | class Main extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Main;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/accordions/accordions.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-services/accordions/accordions.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/accordions/accordions.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './accordions.css';
4 |
5 | class Accordions extends React.Component {
6 |
7 | render() {
8 | return (
9 |
10 |
Accordions works!
11 |
12 | )
13 | }
14 |
15 | }
16 | export default Accordions;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/alerts/alerts.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/application/example-services/alerts/alerts.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/alerts/alerts.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './alerts.css';
4 |
5 | class Alerts extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Alerts;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/application/example-services/example-services-routing.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Routes, Route } from "react-router-dom";
3 |
4 | import Main from './00-main/main';
5 | import Accordions from './accordions/accordions';
6 | import Alerts from './alerts/alerts';
7 |
8 | import Notfound from '../../../modules/general/not-found/not-found';
9 |
10 | class ExampleServicesRouting extends React.Component {
11 |
12 | render() {
13 | return (
14 |
15 | } />
16 | } />
17 | } />
18 | } />
19 | } />
20 |
21 | )
22 | }
23 |
24 | }
25 |
26 | export default ExampleServicesRouting;
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/about/about.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/about/about.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/about/about.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './about.css';
4 | import Seo from '../../../components/seo/seo';
5 |
6 | class About extends React.Component {
7 | render() {
8 |
9 | const content = 'react-pwa - Description - About Page';
10 | const title = 'react-pwa - Title - About Page';
11 |
12 | return (
13 |
19 | )
20 |
21 | }
22 | }
23 |
24 | export default About;
25 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/contact.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/contact/contact.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/mailing/mailing.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/contact/mailing/mailing.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/mailing/mailing.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './mailing.css';
4 |
5 | class Mailing extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Mailing;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/mapping/mapping.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/contact/mapping/mapping.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/mapping/mapping.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './mapping.css';
4 |
5 | class Mapping extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Mapping;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/website/website.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/contact/website/website.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/contact/website/website.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './website.css';
4 |
5 | class Website extends React.Component {
6 |
7 | render() {
8 | return (
9 |
12 | )
13 | }
14 |
15 | }
16 | export default Website;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/home/home.css:
--------------------------------------------------------------------------------
1 | .nga-card {
2 | display: block;
3 | background-color: rgba(255, 255, 255, .8);
4 | box-shadow: 0 1px 3px rgba(0, 0, 0, .12), 0 1px 2px rgba(0, 0, 0, .24);
5 | border-radius: 2px;
6 | transition: all .2s ease-in-out;
7 | cursor: pointer;
8 | }
9 |
10 | .nga-card:hover {
11 | transform: translateY(-3px);
12 | box-shadow: 0 10px 20px rgba(0, 0, 0, .19), 0 6px 6px rgba(0, 0, 0, .23);
13 | }
14 |
15 | .nga-card a {
16 | color: black;
17 | text-decoration: none;
18 | }
19 |
20 | .nga-card a:hover {
21 | color: #0d6efd;
22 | text-decoration: none;
23 | }
24 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/login/login.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/login/login.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/login/login.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './login.css';
4 | import Seo from '../../../components/seo/seo';
5 |
6 | class Login extends React.Component {
7 |
8 | render() {
9 | const content = 'react-pwa - Description - Login Page';
10 | const title = 'react-pwa - Title - Login Page';
11 |
12 | return (
13 |
19 | )
20 | }
21 |
22 | }
23 | export default Login;
24 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/not-found/not-found.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/not-found/not-found.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/not-found/not-found.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './not-found.css';
4 |
5 | class Notfound extends React.Component {
6 |
7 | render() {
8 | return (
9 |
10 |
not-found works!
11 |
12 | )
13 | }
14 |
15 | }
16 | export default Notfound;
17 |
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/signup/signup.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/app/modules/general/signup/signup.css
--------------------------------------------------------------------------------
/frontend-react/src/app/modules/general/signup/signup.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import './signup.css';
4 | import Seo from '../../../components/seo/seo';
5 |
6 | class Signup extends React.Component {
7 |
8 | render() {
9 |
10 | const content = 'react-pwa - Description - Signup Page';
11 | const title = 'react-pwa - Title - Signup Page';
12 |
13 | return (
14 |
20 | )
21 | }
22 |
23 | }
24 | export default Signup;
25 |
--------------------------------------------------------------------------------
/frontend-react/src/assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/assets/.gitkeep
--------------------------------------------------------------------------------
/frontend-react/src/assets/params/images/logo/ganatan-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/assets/params/images/logo/ganatan-logo.png
--------------------------------------------------------------------------------
/frontend-react/src/assets/params/images/logo/ganatan-logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/frontend-react/src/assets/params/images/logo/ganatan-logo@2x.png
--------------------------------------------------------------------------------
/frontend-react/src/environments/environment.js:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | application:
3 | {
4 | name: 'react-pwa',
5 | version: 'React 18.2.0',
6 | bootstrap: 'Bootstrap 5.1.3',
7 | fontawesome: 'Font Awesome 6.1.1',
8 | }
9 | };
--------------------------------------------------------------------------------
/frontend-react/src/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | padding-top: 3.5rem;
3 | font-family: "Roboto", sans-serif;
4 | }
--------------------------------------------------------------------------------
/frontend-react/src/reportWebVitals.js:
--------------------------------------------------------------------------------
1 | const reportWebVitals = onPerfEntry => {
2 | if (onPerfEntry && onPerfEntry instanceof Function) {
3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
4 | getCLS(onPerfEntry);
5 | getFID(onPerfEntry);
6 | getFCP(onPerfEntry);
7 | getLCP(onPerfEntry);
8 | getTTFB(onPerfEntry);
9 | });
10 | }
11 | };
12 |
13 | export default reportWebVitals;
14 |
--------------------------------------------------------------------------------
/frontend-react/src/setupTests.js:
--------------------------------------------------------------------------------
1 | // jest-dom adds custom jest matchers for asserting on DOM nodes.
2 | // allows you to do things like:
3 | // expect(element).toHaveTextContent(/react/i)
4 | // learn more: https://github.com/testing-library/jest-dom
5 | import '@testing-library/jest-dom';
6 |
--------------------------------------------------------------------------------
/img/ganatan-about-github.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ganatan/angular-react-pwa/82f8080373ad283425e7cae8d52aa31ef8ae9867/img/ganatan-about-github.png
--------------------------------------------------------------------------------