import ChevronIcon from "@Assets/Icons/chevron.svg"; import Users, { IGetUsersparams } from "@Front/Api/LeCoffreApi/Admin/Users/Users"; import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; import Header from "@Front/Components/DesignSystem/Header"; import Version from "@Front/Components/DesignSystem/Version"; import BackArrow from "@Front/Components/Elements/BackArrow"; import JwtService from "@Front/Services/JwtService/JwtService"; import WindowStore from "@Front/Stores/WindowStore"; import classNames from "classnames"; import User from "le-coffre-resources/dist/Admin"; import Image from "next/image"; import React, { ReactNode } from "react"; import classes from "./classes.module.scss"; import CollaboratorListContainer from "./CollaboratorListContainer"; type IProps = { title: string; children?: ReactNode; onSelectedUser: (user: User) => void; hasBackArrow: boolean; backArrowUrl?: string; mobileBackText?: string; }; type IState = { collaborators: User[] | null; isLeftSideOpen: boolean; leftSideCanBeClosed: boolean; }; export default class DefaultCollaboratorDashboard extends React.Component { private onWindowResize = () => {}; public static defaultProps: Partial = { hasBackArrow: false, }; public constructor(props: IProps) { super(props); this.state = { collaborators: 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.state.collaborators && ( )}
open side menu
{this.props.hasBackArrow && (
)} {this.props.mobileBackText && (
)} {this.props.children}
); } public override async componentDidMount() { this.onWindowResize = WindowStore.getInstance().onResize((window) => this.onResize(window)); const jwt = JwtService.getInstance().decodeJwt(); if (!jwt) return; const query: IGetUsersparams = { where: { office_uid: jwt.office_Id }, include: { contact: true }, }; const collaborators = await Users.getInstance().get(query); this.setState({ collaborators }); } 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 }); } }