import ChevronIcon from "@Assets/Icons/chevron.svg"; import Folders, { IGetFoldersParams } from "@Front/Api/LeCoffreApi/Notary/Folders/Folders"; import Button, { EButtonstyletype, EButtonVariant } from "@Front/Components/DesignSystem/Button"; import FolderArchivedListContainer from "@Front/Components/DesignSystem/FolderArchivedListContainer"; import FolderListContainer from "@Front/Components/DesignSystem/FolderListContainer"; import Header from "@Front/Components/DesignSystem/Header"; import Version from "@Front/Components/DesignSystem/Version"; import BackArrow from "@Front/Components/Elements/BackArrow"; import WindowStore from "@Front/Stores/WindowStore"; import { ChevronLeftIcon } from "@heroicons/react/24/outline"; import classNames from "classnames"; import EFolderStatus from "le-coffre-resources/dist/Customer/EFolderStatus"; import { OfficeFolder } from "le-coffre-resources/dist/Notary"; import Image, { StaticImageData } from "next/image"; import React, { ReactNode } from "react"; import classes from "./classes.module.scss"; import Module from "@Front/Config/Module"; import router from "next/router"; type IProps = { title: string; children?: ReactNode; isArchived?: boolean; onSelectedFolder: (folder: OfficeFolder) => void; hasBackArrow: boolean; backArrowUrl?: string; mobileBackText?: string; image?: StaticImageData; }; type IState = { folders: OfficeFolder[] | null; isLeftSideOpen: boolean; leftSideCanBeClosed: boolean; }; export default class DefaultNotaryDashboard extends React.Component { private onWindowResize = () => {}; public static defaultProps: Partial = { hasBackArrow: false, isArchived: false, }; public constructor(props: IProps) { super(props); this.state = { folders: null, isLeftSideOpen: false, leftSideCanBeClosed: typeof window !== "undefined" ? window.innerWidth < 1024 : false, }; this.onOpenLeftSide = this.onOpenLeftSide.bind(this); this.onCloseLeftSide = this.onCloseLeftSide.bind(this); } public override render(): JSX.Element { return (
{this.state.isLeftSideOpen &&
}
{this.props.isArchived && this.state.folders && ( )} {!this.props.isArchived && this.state.folders && ( )}
open side menu
{this.props.hasBackArrow && (
)} {this.props.mobileBackText && (
)} {this.props.children}
{this.props.image && (
{"right
)}
); } public override async componentDidMount() { this.onWindowResize = WindowStore.getInstance().onResize((window) => this.onResize(window)); let targetedStatus: EFolderStatus = EFolderStatus["LIVE" as keyof typeof EFolderStatus]; if (this.props.isArchived) targetedStatus = EFolderStatus.ARCHIVED; const query: IGetFoldersParams = { q: { where: { status: targetedStatus }, include: { deed: { include: { deed_type: true } }, office: true, customers: { include: { contact: true, documents: { include: { folder: true, document_type: true, files: true, }, }, }, }, documents: { include: { depositor: { include: { contact: true, }, }, }, }, }, }, }; const folders = await Folders.getInstance().get(query); if (folders.length > 0) this.props.isArchived ? router.push( Module.getInstance() .get() .modules.pages.Folder.pages.FolderArchived.pages.FolderInformation.props.path.replace( "[folderUid]", folders[0]?.uid ?? "", ), ) : router.push( Module.getInstance() .get() .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", folders[0]?.uid ?? ""), ); this.setState({ folders: folders }); } public override componentWillUnmount() { this.onWindowResize(); } private onOpenLeftSide() { this.setState({ isLeftSideOpen: true }); } private onCloseLeftSide() { if (!this.state.leftSideCanBeClosed) return; this.setState({ isLeftSideOpen: false }); } private onResize(window: Window) { if (window.innerWidth > 1023) { if (!this.state.leftSideCanBeClosed) return; this.setState({ leftSideCanBeClosed: false }); } this.setState({ leftSideCanBeClosed: true }); } }