Merge branch 'dev' into staging

This commit is contained in:
Maxime Lalo 2024-07-29 12:41:00 +02:00
commit 903065f792
13 changed files with 219 additions and 11 deletions

View File

@ -15,6 +15,10 @@
overflow-y: auto; overflow-y: auto;
padding: var(--spacing-lg, 24px); padding: var(--spacing-lg, 24px);
&[data-no-padding] {
padding: 0;
}
@media (max-width: $screen-m) { @media (max-width: $screen-m) {
width: 100%; width: 100%;
} }

View File

@ -13,19 +13,29 @@ export type IPropsDashboardWithList = {
backArrowUrl?: string; backArrowUrl?: string;
mobileBackText?: string; mobileBackText?: string;
headerConnected?: boolean; headerConnected?: boolean;
noPadding?: boolean;
}; };
type IProps = IPropsDashboardWithList & ISearchBlockListProps; type IProps = IPropsDashboardWithList & ISearchBlockListProps;
export default function DefaultDashboardWithList(props: IProps) { export default function DefaultDashboardWithList(props: IProps) {
const { hasBackArrow, backArrowUrl, children, blocks, onSelectedBlock, headerConnected = true, bottomButton } = props; const {
hasBackArrow,
backArrowUrl,
children,
blocks,
onSelectedBlock,
headerConnected = true,
bottomButton,
noPadding = false,
} = props;
return ( return (
<div className={classes["root"]}> <div className={classes["root"]}>
<Header isUserConnected={headerConnected} /> <Header isUserConnected={headerConnected} />
<div className={classes["content"]}> <div className={classes["content"]}>
<SearchBlockList blocks={blocks} onSelectedBlock={onSelectedBlock} bottomButton={bottomButton} /> <SearchBlockList blocks={blocks} onSelectedBlock={onSelectedBlock} bottomButton={bottomButton} />
<div className={classes["right-side"]}> <div className={classes["right-side"]} data-no-padding={noPadding}>
{hasBackArrow && ( {hasBackArrow && (
<div className={classes["back-arrow-desktop"]}> <div className={classes["back-arrow-desktop"]}>
<BackArrow url={backArrowUrl ?? ""} /> <BackArrow url={backArrowUrl ?? ""} />

View File

@ -0,0 +1,57 @@
import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block";
import { useRouter } from "next/router";
import DefaultDashboardWithList, { IPropsDashboardWithList } from "../DefaultDashboardWithList";
import { useMemo } from "react";
import Module from "@Front/Config/Module";
type IProps = IPropsDashboardWithList;
export enum ELegalOptions {
LEGAL_MENTIONS = "mentions-legales",
CGU = "cgu",
CGS = "cgs",
POLITIQUE_DE_CONFIDENTIALITE = "politique-de-confidentialite",
POLITIQUE_DE_GESTION_DES_COOKIES = "politique-de-gestion-des-cookies",
}
export default function DefaultLegalDashboard(props: IProps) {
const router = useRouter();
const { legalUid } = router.query;
const onSelectedBlock = (block: IBlock) => {
router.push(Module.getInstance().get().modules.pages.Legal.pages.LegalInformations.props.path.replace("[legalUid]", block.id));
};
const blocks: IBlock[] = useMemo<IBlock[]>(
() => [
{
id: ELegalOptions.LEGAL_MENTIONS,
primaryText: "Mentions légales",
isActive: legalUid === ELegalOptions.LEGAL_MENTIONS,
},
{
id: ELegalOptions.CGU,
primaryText: "CGU",
isActive: legalUid === ELegalOptions.CGU,
},
{
id: ELegalOptions.CGS,
primaryText: "CGS",
isActive: legalUid === ELegalOptions.CGS,
},
{
id: ELegalOptions.POLITIQUE_DE_CONFIDENTIALITE,
primaryText: "Politique de confidentialité",
isActive: legalUid === ELegalOptions.POLITIQUE_DE_CONFIDENTIALITE,
},
{
id: ELegalOptions.POLITIQUE_DE_GESTION_DES_COOKIES,
primaryText: "Politique de gestion des cookies",
isActive: legalUid === ELegalOptions.POLITIQUE_DE_GESTION_DES_COOKIES,
},
],
[legalUid],
);
return <DefaultDashboardWithList {...props} onSelectedBlock={onSelectedBlock} blocks={blocks} noPadding />;
}

View File

@ -1,21 +1,16 @@
import Folders, { IGetFoldersParams } from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; import Folders, { IGetFoldersParams } from "@Front/Api/LeCoffreApi/Notary/Folders/Folders";
import EFolderStatus from "le-coffre-resources/dist/Customer/EFolderStatus"; import EFolderStatus from "le-coffre-resources/dist/Customer/EFolderStatus";
import { OfficeFolder } from "le-coffre-resources/dist/Notary"; import { OfficeFolder } from "le-coffre-resources/dist/Notary";
import React, { ReactNode, useCallback, useEffect } from "react"; import React, { useCallback, useEffect } from "react";
import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document"; import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document";
import Module from "@Front/Config/Module"; import Module from "@Front/Config/Module";
import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import DefaultDashboardWithList from "../DefaultDashboardWithList"; import DefaultDashboardWithList, { IPropsDashboardWithList } from "../DefaultDashboardWithList";
type IProps = { type IProps = IPropsDashboardWithList & {
title: string; isArchived: boolean;
children?: ReactNode;
isArchived?: boolean;
hasBackArrow?: boolean;
backArrowUrl?: string;
mobileBackText?: string;
}; };
export default function DefaultNotaryDashboard(props: IProps) { export default function DefaultNotaryDashboard(props: IProps) {

View File

@ -0,0 +1,11 @@
.pdf-viewer {
width: 100%;
height: 100%;
min-height: 100%;
min-width: 100%;
.no-pdf-text {
padding: 16px;
text-align: center;
}
}

View File

@ -0,0 +1,34 @@
import { useRouter } from "next/router";
import React from "react";
import classes from "./classes.module.scss";
import DefaultLegalDashboard, { ELegalOptions } from "@Front/Components/LayoutTemplates/DefaultLegalDashboard";
import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography";
import Link from "next/link";
const pdfLinks: Record<ELegalOptions, string> = {
"mentions-legales": "https://s3.fr-par.scw.cloud/lecoffre.io-bucket/footer/mentions_legales.pdf",
"politique-de-confidentialite": "https://s3.fr-par.scw.cloud/lecoffre.io-bucket/footer/politique_confidentialite.pdf",
"politique-de-gestion-des-cookies": "https://s3.fr-par.scw.cloud/lecoffre.io-bucket/footer/politique_cookies.pdf",
cgs: "https://s3.fr-par.scw.cloud/lecoffre.io-bucket/footer/cgs.pdf",
cgu: "https://s3.fr-par.scw.cloud/lecoffre.io-bucket/footer/cgu.pdf",
};
export default function LegalInformations() {
const router = useRouter();
let { legalUid } = router.query;
const legalUidTyped = legalUid as ELegalOptions;
return (
<DefaultLegalDashboard>
<object data={pdfLinks[legalUidTyped]} type="application/pdf" width="100%" height="100%" className={classes["pdf-viewer"]}>
<Typography typo={ETypo.TEXT_LG_LIGHT} className={classes["no-pdf-text"]}>
Votre navigateur ne prend pas en charge l'affichage des pdf&nbsp;
<Typography typo={ETypo.TEXT_LG_LIGHT} type="span">
<Link href={pdfLinks[legalUidTyped]} target="_blank" style={{ color: `var(${ETypoColor.COLOR_PRIMARY_500})` }}>
cliquez ici pour télécharger le pdf.
</Link>
</Typography>
</Typography>
</object>
</DefaultLegalDashboard>
);
}

View File

@ -0,0 +1,23 @@
import DefaultLegalDashboard, { ELegalOptions } from "@Front/Components/LayoutTemplates/DefaultLegalDashboard";
import { useRouter } from "next/router";
import Module from "@Front/Config/Module";
import { useEffect } from "react";
type IProps = {};
export default function Legal(props: IProps) {
const router = useRouter();
const { legalUid } = router.query;
useEffect(() => {
if (!legalUid && router.isReady) {
router.push(
Module.getInstance()
.get()
.modules.pages.Legal.pages.LegalInformations.props.path.replace("[legalUid]", ELegalOptions.LEGAL_MENTIONS),
);
}
}, [legalUid, router]);
return <DefaultLegalDashboard />;
}

View File

@ -390,6 +390,22 @@
} }
} }
} }
},
"Legal": {
"enabled": true,
"props": {
"path": "/legal",
"labelKey": "legal"
},
"pages": {
"LegalInformations": {
"enabled": true,
"props": {
"path": "/legal/[legalUid]",
"labelKey": "legal_informations"
}
}
}
} }
} }
} }

View File

@ -390,6 +390,22 @@
} }
} }
} }
},
"Legal": {
"enabled": true,
"props": {
"path": "/legal",
"labelKey": "legal"
},
"pages": {
"LegalInformations": {
"enabled": true,
"props": {
"path": "/legal/[legalUid]",
"labelKey": "legal_informations"
}
}
}
} }
} }
} }

View File

@ -390,6 +390,22 @@
} }
} }
} }
},
"Legal": {
"enabled": true,
"props": {
"path": "/legal",
"labelKey": "legal"
},
"pages": {
"LegalInformations": {
"enabled": true,
"props": {
"path": "/legal/[legalUid]",
"labelKey": "legal_informations"
}
}
}
} }
} }
} }

View File

@ -390,6 +390,22 @@
} }
} }
} }
},
"Legal": {
"enabled": true,
"props": {
"path": "/legal",
"labelKey": "legal"
},
"pages": {
"LegalInformations": {
"enabled": true,
"props": {
"path": "/legal/[legalUid]",
"labelKey": "legal_informations"
}
}
}
} }
} }
} }

View File

@ -0,0 +1,5 @@
import LegalInformations from "@Front/Components/Layouts/Legal/LegalInformations";
export default function Route() {
return <LegalInformations />;
}

View File

@ -0,0 +1,5 @@
import Legal from "@Front/Components/Layouts/Legal";
export default function Route() {
return <Legal />;
}