diff --git a/src/front/Components/DesignSystem/Alert/classes.module.scss b/src/front/Components/DesignSystem/Alert/classes.module.scss index e800be15..77dd499e 100644 --- a/src/front/Components/DesignSystem/Alert/classes.module.scss +++ b/src/front/Components/DesignSystem/Alert/classes.module.scss @@ -11,6 +11,36 @@ border: 1px solid var(--alerts-info-border); background: var(--alerts-info-background); + @media screen and (max-width: 680px) { + flex-direction: column; + } + + .top { + align-self: stretch; + display: flex; + justify-content: space-between; + align-items: center; + } + + .close-button { + display: block; + &.desktop { + display: block; + + @media screen and (max-width: 680px) { + display: none; + } + } + + &.mobile { + display: none; + + @media screen and (max-width: 680px) { + display: block; + } + } + } + .content { display: flex; flex-direction: column; @@ -25,64 +55,34 @@ .button-container { display: flex; gap: var(--spacing-md, 16px); - } - } - .icon { - display: flex; - padding: var(--spacing-1, 8px); - align-items: center; - align-self: flex-start; - - border-radius: var(--alerts-badge-radius, 360px); - border: 1px solid var(--alerts-badge-border, rgba(0, 0, 0, 0)); - background: var(--alerts-badge-background, #fff); - box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.1); - - svg { - width: 24px; - height: 24px; - min-width: 24px; - min-height: 24px; - - stroke: var(--alerts-badge-contrast-info); + @media screen and (max-width: 680px) { + flex-direction: column; + button { + width: 100%; + } + } } } &.error { border-color: var(--alerts-error-border); background: var(--alerts-error-background); - - .icon svg { - stroke: var(--alerts-badge-contrast-error); - } } &.warning { border-color: var(--alerts-warning-border); background: var(--alerts-warning-background); - - .icon svg { - stroke: var(--alerts-badge-contrast-warning); - } } &.success { border-color: var(--alerts-success-border); background: var(--alerts-success-background); - - .icon svg { - stroke: var(--alerts-badge-contrast-success); - } } &.neutral { border-color: var(--alerts-neutral-border); background: var(--alerts-neutral-background); - - .icon svg { - stroke: var(--alerts-badge-contrast-neutral); - } } &.fullwidth { diff --git a/src/front/Components/DesignSystem/Alert/index.tsx b/src/front/Components/DesignSystem/Alert/index.tsx index ac3c8298..c3568abb 100644 --- a/src/front/Components/DesignSystem/Alert/index.tsx +++ b/src/front/Components/DesignSystem/Alert/index.tsx @@ -52,7 +52,13 @@ export default function Alert(props: IProps) { return (
- } color={variantColorMap[variant]} /> +
+ } color={variantColorMap[variant]} /> + {closeButton && ( + } /> + )} +
+
@@ -84,7 +90,7 @@ export default function Alert(props: IProps) { )}
- {closeButton && } />} + {closeButton && } />}
); } diff --git a/src/front/Components/DesignSystem/CircleProgress/index.tsx b/src/front/Components/DesignSystem/CircleProgress/index.tsx index 4b66e985..ee6f9208 100644 --- a/src/front/Components/DesignSystem/CircleProgress/index.tsx +++ b/src/front/Components/DesignSystem/CircleProgress/index.tsx @@ -1,13 +1,15 @@ import React, { useCallback, useEffect, useRef, useState } from "react"; import Typography, { ETypo, ETypoColor } from "../Typography"; import classes from "./classes.module.scss"; +import classNames from "classnames"; type IProps = { percentage: number; + className?: string; }; export default function CircleProgress(props: IProps) { - const { percentage } = props; + const { percentage, className } = props; const [animatedProgress, setAnimatedProgress] = useState(0); const requestRef = useRef(); @@ -41,7 +43,7 @@ export default function CircleProgress(props: IProps) { const offset = circumference - (animatedProgress / 100) * circumference; return ( -
+
); -} \ No newline at end of file +} diff --git a/src/front/Components/DesignSystem/Separator/index.tsx b/src/front/Components/DesignSystem/Separator/index.tsx index bb9c4389..c3d2b26b 100644 --- a/src/front/Components/DesignSystem/Separator/index.tsx +++ b/src/front/Components/DesignSystem/Separator/index.tsx @@ -20,14 +20,15 @@ type IProps = { direction?: ESeperatorDirection; size?: number; thickness?: number; + className?: string; }; export default function Separator(props: IProps) { - const { color = ESeperatorColor.DEFAULT, direction = ESeperatorDirection.HORIZONTAL, size, thickness = 1 } = props; + const { color = ESeperatorColor.DEFAULT, direction = ESeperatorDirection.HORIZONTAL, size, thickness = 1, className } = props; return (
); diff --git a/src/front/Components/Elements/BackArrow/index.tsx b/src/front/Components/Elements/BackArrow/index.tsx index 8421b1b5..b4714259 100644 --- a/src/front/Components/Elements/BackArrow/index.tsx +++ b/src/front/Components/Elements/BackArrow/index.tsx @@ -5,6 +5,7 @@ import React from "react"; type IProps = { url?: string; + text?: string; }; type IPropsClass = IProps & { @@ -26,7 +27,7 @@ class BackArrowClass extends React.Component { styletype={EButtonstyletype.TEXT} size={EButtonSize.SM} onClick={this.handleClick}> - Retour + {this.props.text ?? "Retour"} ); } diff --git a/src/front/Components/Elements/HelpBox/classes.module.scss b/src/front/Components/Elements/HelpBox/classes.module.scss new file mode 100644 index 00000000..0c94c931 --- /dev/null +++ b/src/front/Components/Elements/HelpBox/classes.module.scss @@ -0,0 +1,5 @@ +.root { + display: flex; + flex-direction: column; + gap: var(--spacing-sm, 8px); +} diff --git a/src/front/Components/Elements/HelpBox/index.tsx b/src/front/Components/Elements/HelpBox/index.tsx new file mode 100644 index 00000000..9770f464 --- /dev/null +++ b/src/front/Components/Elements/HelpBox/index.tsx @@ -0,0 +1,39 @@ +import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import classes from "./classes.module.scss"; +import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; +import Link from "next/link"; + +export type IProps = { + title: string; + description: string; + button: { text: string; link?: string; onClick?: () => void }; +}; + +export default function HelpBox(props: IProps) { + const { title, description, button } = props; + return ( +
+ + {title} + + + {description} + + {button.link ? ( + + + + ) : ( + + )} +
+ ); +} diff --git a/src/front/Components/LayoutTemplates/DefaultDashboardWithList/classes.module.scss b/src/front/Components/LayoutTemplates/DefaultDashboardWithList/classes.module.scss index da2293c5..0d189a58 100644 --- a/src/front/Components/LayoutTemplates/DefaultDashboardWithList/classes.module.scss +++ b/src/front/Components/LayoutTemplates/DefaultDashboardWithList/classes.module.scss @@ -32,6 +32,10 @@ .right-side { min-width: 100%; + + .right-side-content { + overflow-y: hidden; + } } } } diff --git a/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/classes.module.scss b/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/classes.module.scss new file mode 100644 index 00000000..62f8849f --- /dev/null +++ b/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/classes.module.scss @@ -0,0 +1,23 @@ +@import "@Themes/constants.scss"; + +.root { + padding: var(--spacing-3) var(--spacing-15); + max-width: 1156px; + + display: flex; + flex-direction: column; + align-items: flex-start; + gap: var(--spacing-xl, 32px); + + .table{ + width: 100%; + } + + @media screen and (max-width: $screen-m) { + padding: var(--spacing-3); + } + + @media screen and (max-width: $screen-s) { + padding: var(--spacing-2); + } +} diff --git a/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx b/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx new file mode 100644 index 00000000..bbd62240 --- /dev/null +++ b/src/front/Components/Layouts/ClientDashboard/ReceivedDocuments/index.tsx @@ -0,0 +1,59 @@ +import React from "react"; + +import classes from "./classes.module.scss"; +import { useRouter } from "next/router"; + +import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; +import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; +import Module from "@Front/Config/Module"; +import BackArrow from "@Front/Components/Elements/BackArrow"; +import { ArrowDownTrayIcon } from "@heroicons/react/24/outline"; +import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import { IHead } from "@Front/Components/DesignSystem/Table/MuiTable"; +import Table from "@Front/Components/DesignSystem/Table"; + +type IProps = {}; + +const header: readonly IHead[] = [ + { + key: "name", + title: "Nom", + }, + { + key: "sentAt", + title: "Envoyé le", + }, + { + key: "actions", + title: "Action", + }, +]; + +export default function ReceivedDocuments(props: IProps) { + const router = useRouter(); + let { folderUid } = router.query; + + return ( + +
+ + + Un document vous a été envoyé + + + + + + ); +} diff --git a/src/front/Components/Layouts/ClientDashboard/index.tsx b/src/front/Components/Layouts/ClientDashboard/index.tsx index 84e097c5..d1fe593d 100644 --- a/src/front/Components/Layouts/ClientDashboard/index.tsx +++ b/src/front/Components/Layouts/ClientDashboard/index.tsx @@ -19,6 +19,8 @@ import ContactBox from "@Front/Components/Elements/ContactBox"; import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; import { ArrowDownTrayIcon } from "@heroicons/react/24/outline"; import DepositDocumentComponent from "./DepositDocumentComponent"; +import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = {}; @@ -169,9 +171,17 @@ export default function ClientDashboard(props: IProps) { Télécharger le RIB )} - + + +
diff --git a/src/front/Components/Layouts/Folder/DocumentsReminderHistory/classes.module.scss b/src/front/Components/Layouts/Folder/DocumentsReminderHistory/classes.module.scss new file mode 100644 index 00000000..62f8849f --- /dev/null +++ b/src/front/Components/Layouts/Folder/DocumentsReminderHistory/classes.module.scss @@ -0,0 +1,23 @@ +@import "@Themes/constants.scss"; + +.root { + padding: var(--spacing-3) var(--spacing-15); + max-width: 1156px; + + display: flex; + flex-direction: column; + align-items: flex-start; + gap: var(--spacing-xl, 32px); + + .table{ + width: 100%; + } + + @media screen and (max-width: $screen-m) { + padding: var(--spacing-3); + } + + @media screen and (max-width: $screen-s) { + padding: var(--spacing-2); + } +} diff --git a/src/front/Components/Layouts/Folder/DocumentsReminderHistory/index.tsx b/src/front/Components/Layouts/Folder/DocumentsReminderHistory/index.tsx new file mode 100644 index 00000000..f946f00c --- /dev/null +++ b/src/front/Components/Layouts/Folder/DocumentsReminderHistory/index.tsx @@ -0,0 +1,53 @@ +import Table from "@Front/Components/DesignSystem/Table"; +import { IHead } from "@Front/Components/DesignSystem/Table/MuiTable"; +import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; +import BackArrow from "@Front/Components/Elements/BackArrow"; +import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; +import Module from "@Front/Config/Module"; +import { useRouter } from "next/router"; +import React from "react"; + +import classes from "./classes.module.scss"; + +type IProps = {}; + +const header: readonly IHead[] = [ + { + key: "remindedAt", + title: "Date de relance", + }, + { + key: "customer", + title: "Client", + }, + { + key: "document_type", + title: "Type de document", + }, + { + key: "statut", + title: "Satut", + }, +]; + +export default function DocumentsReminderHistory(props: IProps) { + const router = useRouter(); + let { folderUid } = router.query; + + return ( + +
+ + + Historique des relances de documents + +
+ + + ); +} diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/index.tsx index 882aaaaf..44c86b1c 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/index.tsx @@ -6,16 +6,15 @@ import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Ty import Module from "@Front/Config/Module"; import useOpenable from "@Front/Hooks/useOpenable"; import { PencilSquareIcon, TrashIcon, UsersIcon } from "@heroicons/react/24/outline"; -import { Note } from "le-coffre-resources/dist/Customer"; +import Customer, { Note } from "le-coffre-resources/dist/Customer"; import { useCallback } from "react"; -import { ICustomer } from ".."; import { AnchorStatus } from "../.."; import classes from "./classes.module.scss"; import DeleteCustomerModal from "./DeleteCustomerModal"; type IProps = { - customer: ICustomer; + customer: Customer; anchorStatus: AnchorStatus; folderUid: string | undefined; customerNote: Note | null; diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/index.tsx index de516731..103c3270 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/index.tsx @@ -16,6 +16,7 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import classes from "./classes.module.scss"; import DeleteAskedDocumentModal from "./DeleteAskedDocumentModal"; import DeleteSentDocumentModal from "./DeleteSentDocumentModal"; +import { useMediaQuery } from "@mui/material"; type IProps = { documents: Document[]; @@ -34,6 +35,8 @@ export default function DocumentTables(props: IProps) { const [documents, setDocuments] = useState(documentsProps); const [documentUid, setDocumentUid] = useState(null); + const isMobile = useMediaQuery("(max-width:524px)"); + const deleteAskedDocumentModal = useOpenable(); const deleteSentDocumentModal = useOpenable(); @@ -232,11 +235,11 @@ export default function DocumentTables(props: IProps) { - {askedDocuments.length > 0 &&
} - {toValidateDocuments.length > 0 &&
} - {validatedDocuments.length > 0 &&
} - {refusedDocuments.length > 0 &&
} - {sentDocuments.length > 0 &&
} + {askedDocuments.length > 0 &&
} + {toValidateDocuments.length > 0 &&
} + {validatedDocuments.length > 0 &&
} + {refusedDocuments.length > 0 &&
} + {sentDocuments.length > 0 &&
} {documentUid && ( <> void; + onRemindSuccess: () => void; + customer: Customer; +}; + +export default function ReminderModal(props: IProps) { + const { isOpen, onClose, onRemindSuccess, customer } = props; + + const onRemind = useCallback(() => { + onRemindSuccess(); + onClose?.(); + }, [onClose, onRemindSuccess]); + + return ( + +
+ + Sélectionnez le(s) document(s) pour lequel vous souhaitez relancer le client. + +
+
+ ); +} diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/EmailReminder/classes.module.scss b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/EmailReminder/classes.module.scss new file mode 100644 index 00000000..d427c5b7 --- /dev/null +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/EmailReminder/classes.module.scss @@ -0,0 +1,19 @@ +@import "@Themes/constants.scss"; + +.root { + display: flex; + flex-direction: column; + gap: var(--spacing-md, 32px); + + .reminder-info { + display: flex; + gap: 8px; + align-items: center; + + .info { + display: flex; + flex-direction: column; + gap: 4px; + } + } +} diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/EmailReminder/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/EmailReminder/index.tsx new file mode 100644 index 00000000..f3812518 --- /dev/null +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/EmailReminder/index.tsx @@ -0,0 +1,55 @@ +import Button, { EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import IconButton, { EIconButtonVariant } from "@Front/Components/DesignSystem/IconButton"; +import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; +import useOpenable from "@Front/Hooks/useOpenable"; +import { ClockIcon, EnvelopeIcon } from "@heroicons/react/24/outline"; +import Customer from "le-coffre-resources/dist/Customer"; + +import classes from "./classes.module.scss"; +import ReminderModal from "./ReminderModal"; +import { useRouter } from "next/router"; +import Module from "@Front/Config/Module"; +import Link from "next/link"; + +type IProps = { + customer: Customer; +}; + +export default function EmailReminder(props: IProps) { + const { customer } = props; + const { isOpen, open, close } = useOpenable(); + const router = useRouter(); + + let { folderUid } = router.query; + + return ( +
+ +
+ + } variant={EIconButtonVariant.NEUTRAL} /> + +
+ + Dernière relance: todo + + + Nombre de relance: todo + +
+
+ {}} onClose={close} customer={customer} /> +
+ ); +} diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/classes.module.scss b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/classes.module.scss index 673d2297..e3002c6c 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/classes.module.scss +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/classes.module.scss @@ -1,5 +1,7 @@ @import "@Themes/constants.scss"; +$mobile-breakpoint: 664px; + .root { display: flex; flex-direction: column; @@ -20,11 +22,30 @@ display: flex; gap: var(--spacing-lg, 24px); - .client-box { + @media screen and (max-width: $screen-s) { + flex-direction: column; + } + + .client-box-container { display: flex; flex-direction: column; gap: var(--spacing-lg, 24px); + + .button-container { + display: flex; + flex-direction: column; + gap: var(--spacing-lg, 24px); + } + + @media screen and (max-width: $screen-s) { + flex-direction: row; + } + + @media screen and (max-width: $mobile-breakpoint) { + flex-direction: column; + margin: auto; + } } } } diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/index.tsx index 3a02bd33..dc4a9361 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/index.tsx @@ -1,20 +1,20 @@ +import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; +import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; import Tabs from "@Front/Components/Elements/Tabs"; +import Module from "@Front/Config/Module"; +import { DocumentIcon, UserPlusIcon } from "@heroicons/react/24/outline"; import Customer from "le-coffre-resources/dist/Customer"; +import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document"; import { OfficeFolder } from "le-coffre-resources/dist/Notary"; - +import Link from "next/link"; import { useCallback, useMemo, useState } from "react"; import { AnchorStatus } from ".."; import classes from "./classes.module.scss"; import ClientBox from "./ClientBox"; -import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; -import { DocumentIcon, UserPlusIcon } from "@heroicons/react/24/outline"; -import Module from "@Front/Config/Module"; -import Link from "next/link"; -import NoDocument from "./NoDocument"; import DocumentTables from "./DocumentTables"; -import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; -import { EDocumentStatus } from "le-coffre-resources/dist/Customer/Document"; +import EmailReminder from "./EmailReminder"; +import NoDocument from "./NoDocument"; type IProps = { folder: OfficeFolder; @@ -95,7 +95,7 @@ export default function ClientView(props: IProps) { )}
-
+
value.customer?.uid === customer.uid) ?? null} /> - {anchorStatus === AnchorStatus.NOT_ANCHORED && ( - - - - )} +
+ {anchorStatus === AnchorStatus.NOT_ANCHORED && ( + + + + )} + +
+ {doesCustomerHaveDocument ? ( ) : ( diff --git a/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/classes.module.scss b/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/classes.module.scss index dd4839c0..bf486242 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/classes.module.scss +++ b/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/classes.module.scss @@ -1,18 +1,41 @@ @import "@Themes/constants.scss"; +$mobile-breakpoint: 600px; + .root { display: flex; - gap: var(--spacing-lg, 40px); + gap: var(--spacing-lg, 24px); + + @media screen and (max-width: $mobile-breakpoint) { + flex-direction: column; + } + .info-box1 { display: flex; width: 100%; flex-direction: column; gap: var(--spacing-sm, 8px); + .folder-number-container { + display: flex; + justify-content: space-between; + align-items: center; + gap: var(--spacing-lg, 24px); + + } + .open-date { display: flex; gap: var(--spacing-sm, 8px); } + + @media screen and (max-width: $screen-s) { + width: 54vw; + } + + @media screen and (max-width: $mobile-breakpoint) { + width: 100%; + } } .info-box2 { @@ -22,22 +45,74 @@ width: 100%; max-width: 400px; + @media screen and (max-width: $mobile-breakpoint) { + max-width: 100%; + } + .progress-container { - width: 100%; display: flex; justify-content: space-between; align-items: center; - .icon-container { - display: flex; - gap: var(--spacing-md, 8px); + @media screen and (max-width: $screen-s) { + flex-direction: column-reverse; + gap: var(--spacing-lg, 24px); + } + + @media screen and (max-width: $mobile-breakpoint) { + align-items: flex-start; + } + } + } + + .icon-container { + display: flex; + gap: var(--spacing-md, 8px); + + &.desktop { + display: flex; + @media screen and (max-width: $mobile-breakpoint) { + display: none; } } - .description-container { - .text { - max-height: 60px; - overflow-y: auto; + &.mobile { + display: none; + @media screen and (max-width: $mobile-breakpoint) { + display: flex; + } + } + } + + .description-container { + .text { + max-height: 60px; + overflow-y: auto; + white-space: normal; + word-wrap: break-word; + } + + &.desktop { + @media screen and (max-width: $screen-s) { + display: none; + } + } + + &.ipad { + display: none; + @media screen and (max-width: $screen-s) { + display: block; + } + + @media screen and (max-width: $mobile-breakpoint) { + display: none; + } + } + + &.mobile { + display: none; + @media screen and (max-width: $mobile-breakpoint) { + display: block; } } } @@ -46,5 +121,10 @@ background-color: var(--separator-stroke-light); width: 1px; align-self: stretch; + + @media screen and (max-width: $mobile-breakpoint) { + height: 1px; + width: 100%; + } } } diff --git a/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/index.tsx index 7e2e3067..eef289b6 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/InformationSection/index.tsx @@ -6,12 +6,13 @@ import Tag, { ETagColor } from "@Front/Components/DesignSystem/Tag"; import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; import Module from "@Front/Config/Module"; import { ArchiveBoxIcon, EllipsisHorizontalIcon, PaperAirplaneIcon, PencilSquareIcon, UsersIcon } from "@heroicons/react/24/outline"; +import classNames from "classnames"; import { OfficeFolder } from "le-coffre-resources/dist/Notary"; +import Link from "next/link"; import { useMemo } from "react"; import { AnchorStatus } from ".."; import classes from "./classes.module.scss"; -import Link from "next/link"; type IProps = { folder: OfficeFolder | null; @@ -24,7 +25,7 @@ type IProps = { export default function InformationSection(props: IProps) { const { folder, progress, onArchive, anchorStatus, isArchived } = props; - const menuItems = useMemo(() => { + const menuItemsDekstop = useMemo(() => { let elements: IItem[] = []; // Creating the three elements and adding them conditionnally @@ -48,17 +49,71 @@ export default function InformationSection(props: IProps) { // If the folder is not anchored, we can modify the collaborators and the informations if (anchorStatus === AnchorStatus.NOT_ANCHORED) { elements.push(modifyCollaboratorsElement); - elements.push(modifyInformationsElement); } return elements; }, [anchorStatus, folder?.uid]); + + const menuItemsMobile = useMemo(() => { + let elements: IItem[] = []; + + // Creating the three elements and adding them conditionnally + const modifyCollaboratorsElement = { + icon: , + text: "Modifier les collaborateurs", + link: Module.getInstance() + .get() + .modules.pages.Folder.pages.EditCollaborators.props.path.replace("[folderUid]", folder?.uid ?? ""), + hasSeparator: true, + }; + const modifyInformationsElement = { + icon: , + text: "Modifier les informations du dossier", + link: Module.getInstance() + .get() + .modules.pages.Folder.pages.EditInformations.props.path.replace("[folderUid]", folder?.uid ?? ""), + hasSeparator: true, + }; + + // If the folder is not anchored, we can modify the collaborators and the informations + if (anchorStatus === AnchorStatus.NOT_ANCHORED) { + elements.push(modifyCollaboratorsElement); + elements.push(modifyInformationsElement); + } + + elements.push({ + icon: , + text: "Envoyer des documents", + link: Module.getInstance() + .get() + .modules.pages.Folder.pages.SendDocuments.props.path.replace("[folderUid]", folder?.uid ?? ""), + hasSeparator: !isArchived, + }); + + if (!isArchived) { + elements.push({ + icon: , + text: "Archiver le dossier", + onClick: onArchive, + hasSeparator: false, + }); + } + + return elements; + }, [anchorStatus, folder?.uid, isArchived, onArchive]); return (
- {folder?.folder_number} +
+ {folder?.folder_number} +
+ + } variant={EIconButtonVariant.NEUTRAL} /> + +
+
{folder?.name}
@@ -69,13 +124,22 @@ export default function InformationSection(props: IProps) { {folder?.created_at ? new Date(folder.created_at).toLocaleDateString() : ""}
+ +
+ + Note du dossier + + + {folder?.description} + +
-
+
} variant={EIconButtonVariant.NEUTRAL} /> - + + } variant={EIconButtonVariant.NEUTRAL} /> {!isArchived && } variant={EIconButtonVariant.ERROR} />}
-
+
Note du dossier diff --git a/src/front/Components/Layouts/Folder/classes.module.scss b/src/front/Components/Layouts/Folder/classes.module.scss index 850483a8..9fd3d27a 100644 --- a/src/front/Components/Layouts/Folder/classes.module.scss +++ b/src/front/Components/Layouts/Folder/classes.module.scss @@ -3,7 +3,7 @@ .root { .content { display: flex; - width: 648px; + max-width: 648px; flex-direction: column; justify-content: center; gap: var(--spacing-2xl, 40px); @@ -14,8 +14,8 @@ gap: var(--spacing-md, 16px); align-self: stretch; - .logo{ - fill: "red" + .logo { + fill: "red"; } } @@ -39,17 +39,23 @@ display: flex; gap: var(--spacing-lg, 24px); - .box { - display: flex; + @media screen and (max-width: 600px) { flex-direction: column; - gap: var(--spacing-sm, 8px); - } - - .separator { - background-color: var(--separator-stroke-light); - width: 1px; - align-self: stretch; } } } + + .mobile { + display: none; + @media screen and (max-width: 600px) { + display: flex; + } + } + + .desktop { + display: flex; + @media screen and (max-width: 600px) { + display: none; + } + } } diff --git a/src/front/Components/Layouts/Folder/index.tsx b/src/front/Components/Layouts/Folder/index.tsx index 099f05db..5bab6189 100644 --- a/src/front/Components/Layouts/Folder/index.tsx +++ b/src/front/Components/Layouts/Folder/index.tsx @@ -1,9 +1,12 @@ import LogoIcon from "@Assets/logo_small_blue.svg"; import Folders from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; -import Button, { EButtonSize, EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import Separator, { ESeperatorColor, ESeperatorDirection } from "@Front/Components/DesignSystem/Separator"; import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; +import HelpBox from "@Front/Components/Elements/HelpBox"; import DefaultNotaryDashboard from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; import Module from "@Front/Config/Module"; +import useUser from "@Front/Hooks/useUser"; import { DocumentIcon } from "@heroicons/react/24/outline"; import EFolderStatus from "le-coffre-resources/dist/Customer/EFolderStatus"; import Image from "next/image"; @@ -12,7 +15,6 @@ import { useRouter } from "next/router"; import { useEffect, useState } from "react"; import classes from "./classes.module.scss"; -import useUser from "@Front/Hooks/useUser"; export default function Folder() { const [_isArchivedModalOpen, _setIsArchivedModalOpen] = useState(true); @@ -37,7 +39,6 @@ export default function Folder() { ); }); }, [router]); - return (
@@ -80,22 +81,25 @@ export default function Folder() {
-
- Besoin d'aide ? - Consultez nos guides pour bien démarrer. - -
-
+ -
- Vous avez des questions ? - Notre équipe de support est là pour vous aider. - -
+ + + +
diff --git a/src/front/Components/Layouts/PageNotFound/classes.module.scss b/src/front/Components/Layouts/PageNotFound/classes.module.scss index 0921d66e..6e8af869 100644 --- a/src/front/Components/Layouts/PageNotFound/classes.module.scss +++ b/src/front/Components/Layouts/PageNotFound/classes.module.scss @@ -1,21 +1,34 @@ -@import "@Themes/constants.scss"; @import "@Themes/animation.scss"; +@import "@Themes/constants.scss"; .root { - height: 100%; - width: 100%; + margin: 80px auto; + width: 474px; + display: flex; + flex-direction: column; + gap: var(--spacing-xl, 32px); - .content { + @media (max-width: $screen-s) { + width: 100%; margin: auto; - - .text { - margin: 32px 0; - } - - @media(max-width: $screen-s) { - text-align: center; - } + padding: var(--spacing-md, 16px); } -} \ No newline at end of file + .content { + display: flex; + padding: var(--spacing-xl, 32px) var(--spacing-lg, 24px); + flex-direction: column; + gap: var(--spacing-lg, 24px); + + border-radius: var(--radius-rounded, 16px); + background: var(--background-primary, #fff); + box-shadow: 0px 4px 16px 0px rgba(0, 0, 0, 0.1); + + .text { + display: flex; + flex-direction: column; + gap: var(--spacing-sm); + } + } +} diff --git a/src/front/Components/Layouts/PageNotFound/index.tsx b/src/front/Components/Layouts/PageNotFound/index.tsx index d1d53861..ba8a15a2 100644 --- a/src/front/Components/Layouts/PageNotFound/index.tsx +++ b/src/front/Components/Layouts/PageNotFound/index.tsx @@ -1,27 +1,51 @@ +import backgroundImage from "@Assets/images/background_refonte.svg"; +import LogoIcon from "@Assets/logo_small_blue.svg"; import Button from "@Front/Components/DesignSystem/Button"; -import Typography, { ETypo } from "@Front/Components/DesignSystem/Typography"; +import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; +import HelpBox from "@Front/Components/Elements/HelpBox"; +import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; import Module from "@Front/Config/Module"; +import Image from "next/image"; import Link from "next/link"; + import BasePage from "../Base"; import classes from "./classes.module.scss"; -import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; - -import backgroundImage from "@Assets/images/404-background-image.jpeg"; export default class PageNotFound extends BasePage { public override render(): JSX.Element { return (
-
- Erreur 404 - - La page que vous recherchez semble introuvable. +
+ + + Oups ! Page introuvable + + Il semble que la page que vous recherchez n'existe pas ou a été déplacée. + +
+
+
+ + Pas de panique ! Voici ce que vous pouvez faire : + + + • Retourner à la page d'accueil en cliquant sur le bouton ci-dessous. + + + • Contactez-nous si vous avez besoin d'aide. + +
+
); diff --git a/src/front/Config/Module/development.json b/src/front/Config/Module/development.json index b3d4b6d1..e6628aad 100644 --- a/src/front/Config/Module/development.json +++ b/src/front/Config/Module/development.json @@ -36,6 +36,15 @@ "props": { "path": "/client-dashboard/[folderUid]", "labelKey": "client-dashboard" + }, + "pages": { + "ReceiveDocuments": { + "enabled": true, + "props": { + "path": "/client-dashboard/[folderUid]/received-documents", + "labelKey": "received_documents" + } + } } }, "Folder": { @@ -52,6 +61,13 @@ "labelKey": "folder_information" } }, + "DocumentsReminderHistory": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/documents-reminder-history", + "labelKey": "documents_reminder_history" + } + }, "CreateFolder": { "enabled": true, "props": { diff --git a/src/front/Config/Module/preprod.json b/src/front/Config/Module/preprod.json index b3d4b6d1..e6628aad 100644 --- a/src/front/Config/Module/preprod.json +++ b/src/front/Config/Module/preprod.json @@ -36,6 +36,15 @@ "props": { "path": "/client-dashboard/[folderUid]", "labelKey": "client-dashboard" + }, + "pages": { + "ReceiveDocuments": { + "enabled": true, + "props": { + "path": "/client-dashboard/[folderUid]/received-documents", + "labelKey": "received_documents" + } + } } }, "Folder": { @@ -52,6 +61,13 @@ "labelKey": "folder_information" } }, + "DocumentsReminderHistory": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/documents-reminder-history", + "labelKey": "documents_reminder_history" + } + }, "CreateFolder": { "enabled": true, "props": { diff --git a/src/front/Config/Module/production.json b/src/front/Config/Module/production.json index b3d4b6d1..e6628aad 100644 --- a/src/front/Config/Module/production.json +++ b/src/front/Config/Module/production.json @@ -36,6 +36,15 @@ "props": { "path": "/client-dashboard/[folderUid]", "labelKey": "client-dashboard" + }, + "pages": { + "ReceiveDocuments": { + "enabled": true, + "props": { + "path": "/client-dashboard/[folderUid]/received-documents", + "labelKey": "received_documents" + } + } } }, "Folder": { @@ -52,6 +61,13 @@ "labelKey": "folder_information" } }, + "DocumentsReminderHistory": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/documents-reminder-history", + "labelKey": "documents_reminder_history" + } + }, "CreateFolder": { "enabled": true, "props": { diff --git a/src/front/Config/Module/staging.json b/src/front/Config/Module/staging.json index b3d4b6d1..e6628aad 100644 --- a/src/front/Config/Module/staging.json +++ b/src/front/Config/Module/staging.json @@ -36,6 +36,15 @@ "props": { "path": "/client-dashboard/[folderUid]", "labelKey": "client-dashboard" + }, + "pages": { + "ReceiveDocuments": { + "enabled": true, + "props": { + "path": "/client-dashboard/[folderUid]/received-documents", + "labelKey": "received_documents" + } + } } }, "Folder": { @@ -52,6 +61,13 @@ "labelKey": "folder_information" } }, + "DocumentsReminderHistory": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/documents-reminder-history", + "labelKey": "documents_reminder_history" + } + }, "CreateFolder": { "enabled": true, "props": { diff --git a/src/pages/client-dashboard/[folderUid]/received-documents/index.tsx b/src/pages/client-dashboard/[folderUid]/received-documents/index.tsx new file mode 100644 index 00000000..d4856fbc --- /dev/null +++ b/src/pages/client-dashboard/[folderUid]/received-documents/index.tsx @@ -0,0 +1,5 @@ +import ReceivedDocuments from "@Front/Components/Layouts/ClientDashboard/ReceivedDocuments"; + +export default function Route() { + return ; +} diff --git a/src/pages/folders/[folderUid]/documents-reminder-history/index.tsx b/src/pages/folders/[folderUid]/documents-reminder-history/index.tsx new file mode 100644 index 00000000..5672d61d --- /dev/null +++ b/src/pages/folders/[folderUid]/documents-reminder-history/index.tsx @@ -0,0 +1,5 @@ +import DocumentsReminderHistory from "@Front/Components/Layouts/Folder/DocumentsReminderHistory"; + +export default function Route() { + return ; +}