diff --git a/components/FicheDetail.vue b/components/FicheDetail.vue index 6628b2e..5472b46 100644 --- a/components/FicheDetail.vue +++ b/components/FicheDetail.vue @@ -6,12 +6,14 @@ style="background: var(--nav-surface); border: 1px solid var(--nav-bg-alt);" > -
-
-

+
+ {{ org.nom }}

+ >{{ org.nom }} -
+ + + +
-
+
@@ -106,7 +118,8 @@
@@ -186,7 +199,15 @@ const baseTiles = useBaseTiles() import type { Org } from '~/types/org' -const props = defineProps<{ org: Org }>() +const props = defineProps<{ + org: Org + /** Panneau de détail de la vue fiches (B12, 380 px) : tout en colonne, titre en h2. */ + compact?: boolean + /** Fonctions en chips cliquables : la vue fiches ajoute le filtre. */ + etiquettesCliquables?: boolean +}>() + +const emit = defineEmits<{ etiquette: [fonction: string] }>() // ── Champs ────────────────────────────────────────────────────────────── const descriptionUser = computed(() => diff --git a/components/FicheModal.vue b/components/FicheModal.vue deleted file mode 100644 index 71bb252..0000000 --- a/components/FicheModal.vue +++ /dev/null @@ -1,183 +0,0 @@ - - - - - diff --git a/components/FicheModalV2.vue b/components/FicheModalV2.vue deleted file mode 100644 index 5091e16..0000000 --- a/components/FicheModalV2.vue +++ /dev/null @@ -1,360 +0,0 @@ - - - - - diff --git a/components/FicheReseauContenu.vue b/components/FicheReseauContenu.vue new file mode 100644 index 0000000..23f2bdc --- /dev/null +++ b/components/FicheReseauContenu.vue @@ -0,0 +1,291 @@ + + + + + + diff --git a/components/NavMap.vue b/components/NavMap.vue index b54da7e..87fc8ca 100644 --- a/components/NavMap.vue +++ b/components/NavMap.vue @@ -26,6 +26,8 @@ const props = defineProps<{ selectedId?: number | null /** Fiche survolée dans la liste (B11) : épingle safran, sans recentrer. */ survolId?: number | null + /** « Voir sur la carte » (B12) : zoome jusqu'à l'épingle, sortie de son cluster ; `n` change à chaque demande. */ + centrage?: { id: number; n: number } | null }>() const emit = defineEmits<{ @@ -275,4 +277,20 @@ onUnmounted(() => { mapInstance = null } }) + +// « Voir sur la carte » (B12) : la carte vient peut-être de s'afficher (Fiches → Mixte) ; +// on attend sa taille réelle, puis on sort l'épingle de son cluster. +watch( + () => props.centrage?.n, + () => { + const c = props.centrage + if (!c) return + setTimeout(() => { + if (!mapInstance || !clusterGroup) return + mapInstance.invalidateSize({ pan: false }) + const m = markers.get(c.id) + if (m) clusterGroup.zoomToShowLayer(m, () => mapInstance?.panTo(m.getLatLng(), { animate: true })) + }, 260) + }, +) diff --git a/components/NavMapV2.vue b/components/NavMapV2.vue index d923b33..12e8b9b 100644 --- a/components/NavMapV2.vue +++ b/components/NavMapV2.vue @@ -23,6 +23,8 @@ const props = defineProps<{ selectedId?: string | null /** Fiche survolée dans la liste (B11) : épingle cerclée de safran, sans recentrer. */ survolId?: string | null + /** « Voir sur la carte » (B12) : zoome jusqu'à l'épingle, sortie de son cluster ; `n` change à chaque demande. */ + centrage?: { id: string; n: number } | null }>() const emit = defineEmits<{ @@ -272,4 +274,20 @@ onUnmounted(() => { mapInstance = null } }) + +// « Voir sur la carte » (B12) : la carte vient peut-être de s'afficher (Fiches → Mixte) ; +// on attend sa taille réelle, puis on sort l'épingle de son cluster. +watch( + () => props.centrage?.n, + () => { + const c = props.centrage + if (!c) return + setTimeout(() => { + if (!mapInstance || !clusterGroup) return + mapInstance.invalidateSize({ pan: false }) + const m = markers.get(c.id) + if (m) clusterGroup.zoomToShowLayer(m, () => mapInstance?.panTo(m.getLatLng(), { animate: true })) + }, 260) + }, +) diff --git a/pages/agences.vue b/pages/agences.vue index 0754fa1..e807ec6 100644 --- a/pages/agences.vue +++ b/pages/agences.vue @@ -11,7 +11,6 @@ libelle-recherche="Rechercher une structure…" :pending="pending" :selected-id="selectedId" - @select="(f) => onSelectStructure(String(f.id))" > - - - + + +