diff --git a/src/app/app.component.html b/src/app/app.component.html
index 2934ad1..5e470c1 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -1 +1,3 @@
-
+
+
+
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index f33c411..56171c1 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -1,12 +1,13 @@
import { Component } from '@angular/core';
import { HomeComponent } from './pages/home/home.component';
-
+import { NavbarComponent } from './components/navbar/navbar.component';
+import { RouterModule } from '@angular/router';
@Component({
selector: 'app-root',
standalone: true,
- imports: [HomeComponent],
+ imports: [HomeComponent, NavbarComponent, RouterModule],
templateUrl: './app.component.html',
- styleUrl: './app.component.css'
+ styleUrl: './app.component.css',
})
export class AppComponent {
title = 'TASK-NG-Routing';
diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts
index dc39edb..ab1ed51 100644
--- a/src/app/app.routes.ts
+++ b/src/app/app.routes.ts
@@ -1,3 +1,21 @@
-import { Routes } from '@angular/router';
+import { RouterModule, Routes } from '@angular/router';
-export const routes: Routes = [];
+export const routes: Routes = [
+ {
+ path: 'trips',
+ loadComponent: () =>
+ import('./pages/trips-list/trips-list.component').then(
+ (m) => m.TripsListComponent
+ ),
+ },
+ {
+ path: 'trips/:slug',
+ loadComponent: () =>
+ import('./pages/trip/trip.component').then((m) => m.TripComponent),
+ },
+ {
+ path: '',
+ loadComponent: () =>
+ import('./pages/home/home.component').then((m) => m.HomeComponent),
+ },
+];
diff --git a/src/app/components/navbar/navbar.component.html b/src/app/components/navbar/navbar.component.html
index 86bcc47..5a1c573 100644
--- a/src/app/components/navbar/navbar.component.html
+++ b/src/app/components/navbar/navbar.component.html
@@ -6,13 +6,14 @@
+
diff --git a/src/app/components/navbar/navbar.component.ts b/src/app/components/navbar/navbar.component.ts
index aef9405..22e10eb 100644
--- a/src/app/components/navbar/navbar.component.ts
+++ b/src/app/components/navbar/navbar.component.ts
@@ -1,12 +1,11 @@
import { Component } from '@angular/core';
-
+import { RouterLink, RouterOutlet } from '@angular/router';
+import { RouterModule } from '@angular/router';
@Component({
selector: 'app-navbar',
standalone: true,
- imports: [],
+ imports: [RouterModule],
templateUrl: './navbar.component.html',
- styleUrl: './navbar.component.css'
+ styleUrl: './navbar.component.css',
})
-export class NavbarComponent {
-
-}
+export class NavbarComponent {}
diff --git a/src/app/components/trip-card/trip-card.component.html b/src/app/components/trip-card/trip-card.component.html
index 0428d14..9c17bfa 100644
--- a/src/app/components/trip-card/trip-card.component.html
+++ b/src/app/components/trip-card/trip-card.component.html
@@ -1,5 +1,5 @@
-
+
diff --git a/src/app/components/trip-card/trip-card.component.ts b/src/app/components/trip-card/trip-card.component.ts
index eb6eee8..c54c9ae 100644
--- a/src/app/components/trip-card/trip-card.component.ts
+++ b/src/app/components/trip-card/trip-card.component.ts
@@ -1,13 +1,17 @@
import { Component, Input } from '@angular/core';
import { Trip } from '../../../data/trips';
+import { RouterModule } from '@angular/router';
@Component({
selector: 'app-trip-card',
standalone: true,
- imports: [],
+ imports: [RouterModule],
templateUrl: './trip-card.component.html',
styleUrl: './trip-card.component.css',
})
export class TripCardComponent {
@Input() trip!: Trip;
+ test() {
+ console.log(this.trip);
+ }
}
diff --git a/src/app/pages/home/home.component.html b/src/app/pages/home/home.component.html
index 08171ab..d6d93f0 100644
--- a/src/app/pages/home/home.component.html
+++ b/src/app/pages/home/home.component.html
@@ -1,11 +1,11 @@
-
+
-
+
-@if (selectedTrip) {
+
diff --git a/src/app/pages/trip/trip.component.css b/src/app/pages/trip/trip.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/trip/trip.component.html b/src/app/pages/trip/trip.component.html
new file mode 100644
index 0000000..9c50078
--- /dev/null
+++ b/src/app/pages/trip/trip.component.html
@@ -0,0 +1,4 @@
+@if (selectedTrip) {
+
+}
+
diff --git a/src/app/pages/trip/trip.component.spec.ts b/src/app/pages/trip/trip.component.spec.ts
new file mode 100644
index 0000000..4c19a5b
--- /dev/null
+++ b/src/app/pages/trip/trip.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TripComponent } from './trip.component';
+
+describe('TripComponent', () => {
+ let component: TripComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [TripComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(TripComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/trip/trip.component.ts b/src/app/pages/trip/trip.component.ts
new file mode 100644
index 0000000..8ab0e4d
--- /dev/null
+++ b/src/app/pages/trip/trip.component.ts
@@ -0,0 +1,28 @@
+import { Component, Input } from '@angular/core';
+import { Trip, trips } from '../../../data/trips';
+import { TripDetailsComponent } from '../../components/trip-details/trip-details.component';
+import { ActivatedRoute, Router, RouterModule } from '@angular/router';
+@Component({
+ selector: 'app-trip',
+ standalone: true,
+ imports: [TripDetailsComponent, RouterModule],
+ templateUrl: './trip.component.html',
+ styleUrl: './trip.component.css',
+})
+export class TripComponent {
+ // selectedTrip: Trip = trips[0];
+ selectedTrip?: Trip;
+
+ constructor(private route: ActivatedRoute, private router: Router) {
+ const id = +this.route.snapshot.paramMap.get('slug')!;
+ this.selectedTrip = trips.find((trip) => trip.id === id); // Find the fruit by ID
+ // console.log('PLEASE WORK!!!');
+ // console.log(this.selectedTrip);
+
+ if (!this.selectedTrip) {
+ // this.router.navigate(['/trips-list']);
+ this.router.navigate(['/trips-list']);
+ console.log('trip selected: ', this.selectedTrip);
+ }
+ }
+}
diff --git a/src/app/pages/trips-list/trips-list.component.css b/src/app/pages/trips-list/trips-list.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/pages/trips-list/trips-list.component.html b/src/app/pages/trips-list/trips-list.component.html
new file mode 100644
index 0000000..6ddc75c
--- /dev/null
+++ b/src/app/pages/trips-list/trips-list.component.html
@@ -0,0 +1,20 @@
+
+
+
+
Explore Trips
+
+
+
+
+
+
+
diff --git a/src/app/pages/trips-list/trips-list.component.spec.ts b/src/app/pages/trips-list/trips-list.component.spec.ts
new file mode 100644
index 0000000..354f397
--- /dev/null
+++ b/src/app/pages/trips-list/trips-list.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TripsListComponent } from './trips-list.component';
+
+describe('TripsListComponent', () => {
+ let component: TripsListComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [TripsListComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(TripsListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/pages/trips-list/trips-list.component.ts b/src/app/pages/trips-list/trips-list.component.ts
new file mode 100644
index 0000000..e67da0f
--- /dev/null
+++ b/src/app/pages/trips-list/trips-list.component.ts
@@ -0,0 +1,44 @@
+import { Component } from '@angular/core';
+import { SearchFilterComponent } from '../../components/search-filter/search-filter.component';
+import { DividerComponent } from '../../components/divider/divider.component';
+import { TripsGridComponent } from '../../components/trips-grid/trips-grid.component';
+import { DifficultyLevel, Trip, trips } from '../../../data/trips';
+
+@Component({
+ selector: 'app-trips-list',
+ standalone: true,
+ imports: [SearchFilterComponent, DividerComponent, TripsGridComponent],
+ templateUrl: './trips-list.component.html',
+ styleUrl: './trips-list.component.css',
+})
+export class TripsListComponent {
+ trips: Trip[] = trips;
+ filteredTrips: Trip[] = [...trips];
+ selectedTrip: Trip = trips[0];
+ searchQuery: string = '';
+ activeDifficultyFilter: DifficultyLevel = 'All';
+
+ handleSearch(searchTerm: string) {
+ this.searchQuery = searchTerm.toLowerCase();
+ this.applyFilters();
+ }
+ handleFilter(difficulty: DifficultyLevel) {
+ this.activeDifficultyFilter = difficulty;
+ this.applyFilters();
+ }
+
+ private applyFilters() {
+ this.filteredTrips = this.trips.filter((trip) => {
+ const matchesSearch =
+ !this.searchQuery ||
+ trip.name.toLowerCase().includes(this.searchQuery.toLowerCase()) ||
+ trip.city.toLowerCase().includes(this.searchQuery.toLowerCase());
+
+ const matchesDifficulty =
+ this.activeDifficultyFilter === 'All' ||
+ trip.difficulty === this.activeDifficultyFilter;
+
+ return matchesSearch && matchesDifficulty;
+ });
+ }
+}