-
{{ pin.title }}
-
0; else noImagesPlaceholder"
- class="relative carousel overflow-hidden"
+
+
+
+
{{ pin.title }}
+
+
+
+ 0; else noImagesPlaceholder">
+
-
+
-
-
![]()
-
- Loading image...
-
-
+
Loading image...
@@ -120,14 +114,14 @@
1">
+
-
-
-
- No images available
-
-
+
+
-
+
+
- {{ pin.description || "Aucune description" }}
+ Aucune image disponible
+
-
- 200" class="text-right mb-6">
-
-
+
+
+ {{ pin.description || "Aucune description" }}
+
+
+
+ 200" class="text-right mt-2 mb-4">
+
diff --git a/src/app/services/intro/intro.service.ts b/src/app/services/intro/intro.service.ts
index f02eade..521b174 100644
--- a/src/app/services/intro/intro.service.ts
+++ b/src/app/services/intro/intro.service.ts
@@ -1,12 +1,16 @@
import { Injectable } from '@angular/core';
import introJs from 'intro.js';
import { ModalService } from '../modal/modal.service';
+import { NavbarService } from '../navbar/navbar.service';
@Injectable({
providedIn: 'root'
})
export class IntroService {
- constructor(private modalService: ModalService) {}
+ constructor(
+ private modalService: ModalService,
+ private navbarService: NavbarService
+ ) {}
private sleep(ms: number): Promise {
return new Promise(resolve => setTimeout(resolve, ms));
@@ -20,6 +24,23 @@ export class IntroService {
steps: [
{ intro: 'Bienvenue sur MemoryMap ! ' },
{ intro: 'Ensemble nous allons explorer les différentes fonctionnalitées disponible !'},
+ ],
+ exitOnOverlayClick: false,
+ disableInteraction: false,
+ });
+ intro.oncomplete(() => {
+ resolve();
+ });
+
+ intro.start();
+ });
+ await this.sleep(300);
+
+ await new Promise((resolve) => {
+ const intro = introJs();
+ intro.setOptions({
+ tooltipClass: 'custom-tooltip-with-avatar',
+ steps: [
{ element: '#timeline', intro: 'Ici retrouvez tous vos souvenirs grâce à une frise chronologique de vos voyages!' },
{ element: '#quete', intro: "N'hésitez pas à réaliser les différentes quètes, pour un petit plaisir personnel, que vous pourrez retrouvez ici !" },
],
@@ -27,6 +48,11 @@ export class IntroService {
disableInteraction: false,
});
+ intro.onstart(async (element) => {
+ this.navbarService.toggleNavbar();
+ await this.sleep(100);
+ });
+
intro.oncomplete(() => {
resolve();
});
@@ -102,6 +128,7 @@ export class IntroService {
intro.oncomplete(() => {
this.modalService.closeModal('friend-modal');
+ this.navbarService.toggleNavbar();
resolve();
});
diff --git a/src/app/services/navbar/navbar.service.ts b/src/app/services/navbar/navbar.service.ts
new file mode 100644
index 0000000..0a46084
--- /dev/null
+++ b/src/app/services/navbar/navbar.service.ts
@@ -0,0 +1,21 @@
+import { Injectable } from '@angular/core';
+import { BehaviorSubject } from 'rxjs';
+
+@Injectable({
+ providedIn: 'root'
+})
+export class NavbarService {
+ private isSearchOpenSubject = new BehaviorSubject(false);
+ private isNavbarOpenSubject = new BehaviorSubject(false);
+
+ isSearchOpen$ = this.isSearchOpenSubject.asObservable();
+ isNavbarOpen$ = this.isNavbarOpenSubject.asObservable();
+
+ toggleSearch(): void {
+ this.isSearchOpenSubject.next(!this.isSearchOpenSubject.value);
+ }
+
+ toggleNavbar(): void {
+ this.isNavbarOpenSubject.next(!this.isNavbarOpenSubject.value);
+ }
+}
\ No newline at end of file
diff --git a/src/styles.css b/src/styles.css
index b1cc100..c9cf1c2 100644
--- a/src/styles.css
+++ b/src/styles.css
@@ -53,6 +53,16 @@
height: 100%;
}
+.custom-popup-fixed-size .leaflet-popup-content {
+ width: 300px !important;
+ height: 350px !important;
+}
+
+.custom-popup-fixed-size .leaflet-popup-content {
+ width: 300px !important;
+ height: 350px !important;
+}
+
.custom-tooltip-with-avatar {
position: relative;
padding-left: 6rem !important;