From 0e499543b14e299585f4234eb510e9441855777b Mon Sep 17 00:00:00 2001 From: Florian Sommariva Date: Tue, 4 Jul 2023 12:14:28 +0200 Subject: [PATCH] Handle reservationWidget anchor --- docs/customization.md | 2 ++ frontend/config/details.json | 2 +- frontend/src/components/pages/details/Details.tsx | 6 +++++- .../DetailsDownloadIcons/DetailsDownloadIcons.tsx | 13 ++++++++----- .../components/DetailsHeader/DetailsHeader.tsx | 7 ++++--- .../components/DetailsTopIcons/DetailsTopIcons.tsx | 9 ++++++++- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/docs/customization.md b/docs/customization.md index 1cc50dc4d..7fd441118 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -136,6 +136,8 @@ There are 4 properties : - `anchor`: boolean to display or not an anchor link in the menu navigation bar - `order`: number to define the position of this section +NB: For "report" and "reservationWidget" sections with `anchors` set to `true`, anchor links are not displayed like other elements, but by a dedicated icon. + - In the `footer.json` file, you can define social networks, informations about your organization, and some links (see example in https://github.com/GeotrekCE/Geotrek-rando-v3/blob/main/frontend/customization/config/footer.json). - Social networks: `facebook`, `twitter`, `youtube`, `instagram` or `fallback`. diff --git a/frontend/config/details.json b/frontend/config/details.json index b8e3bacdb..22978b7e9 100644 --- a/frontend/config/details.json +++ b/frontend/config/details.json @@ -82,7 +82,7 @@ { "name": "reservationWidget", "display": true, - "anchor": false, + "anchor": true, "order": 140 } ], diff --git a/frontend/src/components/pages/details/Details.tsx b/frontend/src/components/pages/details/Details.tsx index caebba1e5..2b224fc34 100644 --- a/frontend/src/components/pages/details/Details.tsx +++ b/frontend/src/components/pages/details/Details.tsx @@ -164,7 +164,11 @@ export const DetailsUIWithoutContext: React.FC = ({ slug, parentId, langu flex flex-col" ref={sectionsContainerRef} > - + {sectionsTrek.map(section => { if (section.name === 'presentation') { diff --git a/frontend/src/components/pages/details/components/DetailsDownloadIcons/DetailsDownloadIcons.tsx b/frontend/src/components/pages/details/components/DetailsDownloadIcons/DetailsDownloadIcons.tsx index 30cd448f7..e5b75fa9d 100644 --- a/frontend/src/components/pages/details/components/DetailsDownloadIcons/DetailsDownloadIcons.tsx +++ b/frontend/src/components/pages/details/components/DetailsDownloadIcons/DetailsDownloadIcons.tsx @@ -28,13 +28,15 @@ interface DetailsTopIconsProps { | OutdoorCourseDetails | TouristicEventDetails; size?: number; - hideReport?: boolean; + displayReport?: boolean; + displayReservationWidget?: boolean; } export const DetailsDownloadIcons: React.FC = ({ details, size = 24, - hideReport = false, + displayReport = true, + displayReservationWidget = true, }) => { const [open3D, setOpen3D] = useState(false); const { setReportVisibility } = useDetailsAndMapContext(); @@ -101,7 +103,7 @@ export const DetailsDownloadIcons: React.FC = ({ )} - {Number(details.id) && !hideReport && getGlobalConfig().enableReport && ( + {displayReport && Number(details.id) && getGlobalConfig().enableReport && ( setReportVisibility(true)}> @@ -109,12 +111,13 @@ export const DetailsDownloadIcons: React.FC = ({ )} - {(details as Details).reservation && + {displayReservationWidget && + (details as Details).reservation && (details as Details).reservation_id && getGlobalConfig().reservationPartner && getGlobalConfig().reservationProject && ( - + diff --git a/frontend/src/components/pages/details/components/DetailsHeader/DetailsHeader.tsx b/frontend/src/components/pages/details/components/DetailsHeader/DetailsHeader.tsx index 86a3ab83c..e6a5fe72d 100644 --- a/frontend/src/components/pages/details/components/DetailsHeader/DetailsHeader.tsx +++ b/frontend/src/components/pages/details/components/DetailsHeader/DetailsHeader.tsx @@ -33,8 +33,8 @@ export const DetailsHeader: React.FC = ({ const availableSection = anchors.filter(item => Object.keys(detailsHeaderSection).includes(item)); const isMounted = useHasMounted(); const sections = availableSection - // Report anchor is in below - .filter(sectionId => sectionId !== 'report'); + // Report and ReservationWidget anchors are in below + .filter(sectionId => sectionId !== 'report' && sectionId !== 'reservationWidget'); return ( ); diff --git a/frontend/src/components/pages/details/components/DetailsTopIcons/DetailsTopIcons.tsx b/frontend/src/components/pages/details/components/DetailsTopIcons/DetailsTopIcons.tsx index 00d0c479b..2d13663d4 100644 --- a/frontend/src/components/pages/details/components/DetailsTopIcons/DetailsTopIcons.tsx +++ b/frontend/src/components/pages/details/components/DetailsTopIcons/DetailsTopIcons.tsx @@ -19,6 +19,7 @@ interface DetailsTopIconsProps { | TouristicEventDetails; practice?: Activity | null; type?: 'TREK' | 'TOURISTIC_CONTENT' | 'OUTDOOR_SITE' | 'OUTDOOR_COURSE' | 'TOURISTIC_EVENT'; + displayReservationWidget?: boolean; } interface IconProps { @@ -41,6 +42,7 @@ export const DetailsTopIcons: React.FC = ({ details, practice, type = 'TREK', + displayReservationWidget = true, }) => { return ( <> @@ -57,7 +59,12 @@ export const DetailsTopIcons: React.FC = ({ : undefined } > - +