Skip to content

Commit

Permalink
refacto(web): move titles and breadcrumbs inside each impact modal de…
Browse files Browse the repository at this point in the history
…scription components
  • Loading branch information
cdhenin committed Jan 8, 2025
1 parent 510e20c commit d702eea
Show file tree
Hide file tree
Showing 54 changed files with 962 additions and 1,205 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#modal-impacts-description .fr-modal__title {
display: none;
}

#modal-impacts-description.fr-modal .fr-modal__content {
padding-top: 0;
}

#modal-impacts-description .fr-modal__header {
padding-bottom: 0;
}

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { ReactNode, useState } from "react";
import { createModal } from "@codegouvfr/react-dsfr/Modal";
import { useIsModalOpen } from "@codegouvfr/react-dsfr/Modal/useIsModalOpen";
import { ReactNode, useEffect, useLayoutEffect, useState } from "react";
import {
BuildingFloorAreaUsageDistribution,
ReconversionProjectImpacts,
Expand Down Expand Up @@ -46,6 +48,11 @@ type State = ImpactDescriptionModalCategory;

const INITAL_OPEN_STATE = undefined;

const modal = createModal({
id: `modal-impacts-description`,
isOpenedByDefault: false,
});

function ImpactModalDescriptionProvider({
children,
projectData,
Expand All @@ -62,6 +69,23 @@ function ImpactModalDescriptionProvider({
setOpenState(INITAL_OPEN_STATE);
};

useIsModalOpen(modal, {
onConceal: resetOpenState,
});

useEffect(() => {
if (openState) {
modal.open();
}
}, [openState]);

useLayoutEffect(() => {
const domModalBody = document.querySelector(`#${modal.id} .fr-modal__body`);
if (domModalBody) {
domModalBody.scrollTo({ top: 0, left: 0, behavior: "instant" });
}
}, [openState]);

return (
<ImpactModalDescriptionContext.Provider
value={{
Expand All @@ -71,11 +95,14 @@ function ImpactModalDescriptionProvider({
}}
>
{children}
<ImpactDescriptionModalWizard
projectData={projectData}
siteData={siteData}
impactsData={impactsData}
/>

<modal.Component title={undefined} concealingBackdrop={true} size="large">
<ImpactDescriptionModalWizard
projectData={projectData}
siteData={siteData}
impactsData={impactsData}
/>
</modal.Component>
</ImpactModalDescriptionContext.Provider>
);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
import ExternalLink from "@/shared/views/components/ExternalLink/ExternalLink";

import ModalHeader from "../shared/ModalHeader";
import ModalTitleTwo from "../shared/ModalTitleTwo";

const EconomicBalanceDescription = () => {
return (
<>
<ModalHeader
title="📉 Bilan de l'opération"
breadcrumbSegments={[
{
label: "Bilan de l'opération",
},
]}
/>
<p>
Le bilan d'opération regroupe l'ensemble des recettes et des dépenses d'une opération
d'aménagement ou de construction. Son périmètre est donc circonscrit au porteur du projet.
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
import ModalHeader from "../../shared/ModalHeader";

const RealEstateAcquisitionDescription = () => {
return (
<>
<ModalHeader
title="🏠 Acquisition du site"
breadcrumbSegments={[
{
label: "Bilan de l'opération",
id: "economic-balance",
},
{ label: "Acquisition du site" },
]}
/>
<p>
Il s'agit des dépenses d'acquisition foncière (y compris bâtiments) nécessaires à la
réalisation du projet, auxquelles s'ajoutent les éventuels frais d'enregistrement (« frais
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,23 @@
import ExternalLink from "@/shared/views/components/ExternalLink/ExternalLink";

import ModalHeader from "../../shared/ModalHeader";
import ModalTitleTwo from "../../shared/ModalTitleTwo";

const SiteReinstatementDescription = () => {
return (
<>
<ModalHeader
title="🚧 Remise en état de la friche"
breadcrumbSegments={[
{
label: "Bilan de l'opération",
id: "economic-balance",
},

{ label: "Remise en état de la friche" },
]}
/>

<p>
Le recyclage de friches ou de fonciers déjà artificialisés implique le plus souvent des
études et de travaux du fait des activités passées qu’elles ont accueillies : présence de
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import ModalHeader from "../shared/ModalHeader";

const EnvironmentalMainDescription = () => {
return (
<>
<ModalHeader
title="Impacts environnementaux"
breadcrumbSegments={[{ label: "Impacts environnementaux" }]}
/>
<p>Les impacts environnementaux se décompose en différents types d'indicateurs :</p>
<ul>
<li>les quantités de CO2-eq stocké ou d'émissions de CO2-eq évitées,</li>
Expand Down
Loading

0 comments on commit d702eea

Please sign in to comment.