From 227e5ee4d9584072170a6400bc938df59b8ca6ff Mon Sep 17 00:00:00 2001 From: Hugo Lextrait Date: Fri, 28 Apr 2023 16:57:35 +0200 Subject: [PATCH] :sparkles: client dashboard --- .../DefaultTemplate/classes.module.scss | 15 ++- .../LayoutTemplates/DefaultTemplate/index.tsx | 5 +- .../ClientDashboard/classes.module.scss | 86 ++++++++++++++ .../Layouts/ClientDashboard/index.tsx | 105 ++++++++++++++++++ src/pages/client-dashboard.tsx | 5 + 5 files changed, 209 insertions(+), 7 deletions(-) create mode 100644 src/front/Components/Layouts/ClientDashboard/classes.module.scss create mode 100644 src/front/Components/Layouts/ClientDashboard/index.tsx create mode 100644 src/pages/client-dashboard.tsx diff --git a/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss b/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss index 42caf111..5ed93eb5 100644 --- a/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss +++ b/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss @@ -2,16 +2,19 @@ .root { margin: var(--root-margin); - padding: var(--root-padding); max-width: var(--root-max-width); min-width: 100%; min-height: calc(100vh - 83px); - @media screen and (max-width: $screen-m) { - padding: 0 24px; - } + &.padding { + padding: var(--root-padding); - @media screen and (max-width: $screen-s) { - padding: 0 16px; + @media screen and (max-width: $screen-m) { + padding: 0 24px; + } + + @media screen and (max-width: $screen-s) { + padding: 0 16px; + } } } \ No newline at end of file diff --git a/src/front/Components/LayoutTemplates/DefaultTemplate/index.tsx b/src/front/Components/LayoutTemplates/DefaultTemplate/index.tsx index c4c6edcf..bbb87f0a 100644 --- a/src/front/Components/LayoutTemplates/DefaultTemplate/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultTemplate/index.tsx @@ -4,6 +4,7 @@ import React, { ReactNode } from "react"; import classes from "./classes.module.scss"; import Header from "@Front/Components/DesignSystem/Header"; import Version from "@Front/Components/DesignSystem/Version"; +import classNames from "classnames"; type IProps = { title: string; @@ -12,19 +13,21 @@ type IProps = { * @description scroll top with number or disabled with null */ scrollTop: number | null; + isPadding?: boolean; }; type IState = {}; export default class DefaultTemplate extends React.Component { public static defaultProps = { scrollTop: 0, + isPadding: true, }; public override render(): JSX.Element { return ( <>
-
{this.props.children}
+
{this.props.children}
); diff --git a/src/front/Components/Layouts/ClientDashboard/classes.module.scss b/src/front/Components/Layouts/ClientDashboard/classes.module.scss new file mode 100644 index 00000000..991b88f4 --- /dev/null +++ b/src/front/Components/Layouts/ClientDashboard/classes.module.scss @@ -0,0 +1,86 @@ +@import "@Themes/constants.scss"; + +.root { + .header { + display: flex; + padding: 64px; + + @media (max-width: $screen-m) { + flex-wrap: wrap; + + .text { + margin: 32px 0; + } + } + + @media (max-width: $screen-s) { + flex-wrap: wrap; + + .text { + margin: 32px 0; + } + + .button { + flex: 1; + } + } + + .subtitle { + margin: 32px 0; + } + } + + .sub-container { + background-color: var(--grey-soft); + padding: 64px; + + .content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 32px; + margin-bottom: 64px; + + @media (max-width: $screen-s) { + grid-template-columns: 1fr; + } + + + + } + + .component-to-replace { + min-width: 124px; + height: 98px; + background-color: white; + } + + .text { + margin: 32px 0; + } + + .button { + width: fit-content; + } + + @media (max-width: $screen-s) { + .button { + width: 100%; + } + } + } + + .modal-content { + .text { + margin: 24px 0; + } + + .component-to-replace { + background-color: var(--grey-soft); + height: 98px; + width: 100%; + + } + } + + +} \ No newline at end of file diff --git a/src/front/Components/Layouts/ClientDashboard/index.tsx b/src/front/Components/Layouts/ClientDashboard/index.tsx new file mode 100644 index 00000000..86abc8c3 --- /dev/null +++ b/src/front/Components/Layouts/ClientDashboard/index.tsx @@ -0,0 +1,105 @@ +import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; +import Base from "@Front/Components/Layouts/Base"; +import DefaultTemplate from "@Front/Components/LayoutTemplates/DefaultTemplate"; +import React from "react"; + +import classes from "./classes.module.scss"; +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import Confirm from "@Front/Components/DesignSystem/Modal/Confirm"; +import InputField from "@Front/Components/DesignSystem/Form/Elements/InputField"; + +type IProps = {}; +type IState = { + isAddDocumentModalVisible: boolean; +}; + +export default class ClientDashboard extends Base { + public constructor(props: IProps) { + super(props); + this.state = { + isAddDocumentModalVisible: false, + }; + this.onCloseModalAddDocument = this.onCloseModalAddDocument.bind(this); + this.onOpenModalAddDocument = this.onOpenModalAddDocument.bind(this); + } + + public override render(): JSX.Element { + return ( + +
+ {this.renderHeader()} +
+
+
+
+
+
+
+
+
+ Documents supplémentaires (facultatif) + + Vous souhaitez envoyer d’autres documents à votre notaire ? + + +
+ +
+ + Vous souhaitez envoyer un autre document à votre notaire ? + + + + Glissez / Déposez votre document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le + document correspondant. + +
+
+
+
+
+ ); + } + + private renderHeader(): JSX.Element { + return ( +
+
+ {/* TODO Get name from userStore */} + + Bonjour John Doe + + + + Documents à envoyer + + + + Votre notaire est dans l'attente de documents pour valider votre dossier. Voici la liste des documents.
Veuillez + glisser / déposez chaque document dans la zone prévue à cet effet ou cliquez sur la zone puis sélectionnez le + document correspondant. Si un des documents demandés ne vous concernent pas, veuillez contacter votre notaire à + l’aide du bouton ci-dessus. + +
+ +
+ ); + } + + private onCloseModalAddDocument() { + this.setState({ isAddDocumentModalVisible: false }); + } + + private onOpenModalAddDocument() { + this.setState({ isAddDocumentModalVisible: true }); + } +} diff --git a/src/pages/client-dashboard.tsx b/src/pages/client-dashboard.tsx new file mode 100644 index 00000000..eb839556 --- /dev/null +++ b/src/pages/client-dashboard.tsx @@ -0,0 +1,5 @@ +import ClientDashboard from "@Front/Components/Layouts/ClientDashboard"; + +export default function Route() { + return ; +}