diff --git a/src/front/Components/DesignSystem/FolderBoxInformation/index.tsx b/src/front/Components/DesignSystem/FolderBoxInformation/index.tsx index 99d05b91..16df26a8 100644 --- a/src/front/Components/DesignSystem/FolderBoxInformation/index.tsx +++ b/src/front/Components/DesignSystem/FolderBoxInformation/index.tsx @@ -6,6 +6,7 @@ import PenICon from "@Assets/Icons/pen.svg"; import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; import Typography, { ITypo } from "../Typography"; import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = { folder: IDashBoardFolder; @@ -14,9 +15,14 @@ type IProps = { export default function FolderBoxInformation(props: IProps) { const { isDescription = false } = props; - const path = isDescription - ? "/folder/".concat(props.folder.uid).concat("/update/description") - : "/folder/".concat(props.folder.uid).concat("/update/metadata"); + const editDescriptionPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.EditDescription.props.path.replace("[folderUid]", props.folder.uid); + const editInformationsPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.EditDescription.props.path.replace("[folderUid]", props.folder.uid); + + const path = isDescription ? editDescriptionPath : editInformationsPath; return (
diff --git a/src/front/Components/DesignSystem/FolderList/index.tsx b/src/front/Components/DesignSystem/FolderList/index.tsx index f6129161..778aad3c 100644 --- a/src/front/Components/DesignSystem/FolderList/index.tsx +++ b/src/front/Components/DesignSystem/FolderList/index.tsx @@ -5,9 +5,11 @@ import React from "react"; import FolderContainer from "../FolderContainer"; import classes from "./classes.module.scss"; +import Module from "@Front/Config/Module"; type IProps = { folders: IDashBoardFolder[]; + isArchived: boolean; onSelectedFolder?: (folder: IDashBoardFolder) => void; onCloseLeftSide?: () => void; }; @@ -20,6 +22,9 @@ type IState = {}; class FolderListClass extends React.Component { public override render(): JSX.Element { + const redirectPath: string = this.props.isArchived + ? Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.pages.FolderInformation.props.path + : Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path; return (
{this.props.folders.map((folder) => { @@ -28,7 +33,7 @@ class FolderListClass extends React.Component { onClick={this.props.onCloseLeftSide} key={folder.uid} className={folder.uid === this.props.selectedFolder ? classes["active"] : ""}> - + ;
diff --git a/src/front/Components/DesignSystem/FolderListContainer/index.tsx b/src/front/Components/DesignSystem/FolderListContainer/index.tsx index acdf0c67..70ac65bf 100644 --- a/src/front/Components/DesignSystem/FolderListContainer/index.tsx +++ b/src/front/Components/DesignSystem/FolderListContainer/index.tsx @@ -6,9 +6,11 @@ import Button from "../Button"; import FolderList from "../FolderList"; import SearchBar from "../SearchBar"; import classes from "./classes.module.scss"; +import Module from "@Front/Config/Module"; type IProps = { folders: IDashBoardFolder[]; + isArchived: boolean; onSelectedFolder?: (folder: IDashBoardFolder) => void; onCloseLeftSide?: () => void; }; @@ -26,7 +28,7 @@ export default class FolderListContainer extends React.Component } public override render(): JSX.Element { - const navigatePath = "/folder/create"; + const navigatePath = Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path; return (
@@ -37,12 +39,15 @@ export default class FolderListContainer extends React.Component folders={this.state.filteredFolders} onSelectedFolder={this.props.onSelectedFolder && this.props.onSelectedFolder} onCloseLeftSide={this.props.onCloseLeftSide} + isArchived={this.props.isArchived} />
- - - + {!this.props.isArchived && ( + + + + )}
); diff --git a/src/front/Components/DesignSystem/Header/BurgerMenu/BurgerModal/index.tsx b/src/front/Components/DesignSystem/Header/BurgerMenu/BurgerModal/index.tsx index 0ed143a4..a45ef59a 100644 --- a/src/front/Components/DesignSystem/Header/BurgerMenu/BurgerModal/index.tsx +++ b/src/front/Components/DesignSystem/Header/BurgerMenu/BurgerModal/index.tsx @@ -3,6 +3,7 @@ import React from "react"; import NavigationLink from "../../NavigationLink"; import classes from "./classes.module.scss"; +import Module from "@Front/Config/Module"; type IProps = { isOpen: boolean; @@ -18,7 +19,7 @@ export default class BurgerModal extends React.Component { <>
- +
diff --git a/src/front/Components/DesignSystem/Header/HeaderLink/index.tsx b/src/front/Components/DesignSystem/Header/HeaderLink/index.tsx index 64c154c4..a2af0095 100644 --- a/src/front/Components/DesignSystem/Header/HeaderLink/index.tsx +++ b/src/front/Components/DesignSystem/Header/HeaderLink/index.tsx @@ -1,8 +1,7 @@ import classNames from "classnames"; import Link from "next/link"; -import router from "next/router"; +import { useRouter } from "next/router"; import React from "react"; -import { useEffect, useState } from "react"; import Typography, { ITypo } from "../../Typography"; import classes from "./classes.module.scss"; @@ -39,8 +38,13 @@ class HeaderLinkClass extends React.Component { } export default function HeaderLink(props: IPropsClass) { - const [url, setUrl] = useState(""); - useEffect(() => setUrl(router?.asPath), []); - const isActive = url.includes(props.path!); + /** + * TODO: We need to fix the check and include subPathName + * BUT + * `/folder/archived` and `/folder/xxx` should be differenciated + */ + const router = useRouter(); + const { pathname } = router; + const isActive = pathname === props.path; return ; } diff --git a/src/front/Components/DesignSystem/Header/Navigation/index.tsx b/src/front/Components/DesignSystem/Header/Navigation/index.tsx index 86069c31..0319b1a3 100644 --- a/src/front/Components/DesignSystem/Header/Navigation/index.tsx +++ b/src/front/Components/DesignSystem/Header/Navigation/index.tsx @@ -2,6 +2,7 @@ import React from "react"; import HeaderLink from "../HeaderLink"; import classes from "./classes.module.scss"; +import Module from "@Front/Config/Module"; type IProps = {}; type IState = {}; @@ -10,8 +11,11 @@ export default class Navigation extends React.Component { public override render(): JSX.Element { return (
- - + +
); } diff --git a/src/front/Components/DesignSystem/SearchBar/index.tsx b/src/front/Components/DesignSystem/SearchBar/index.tsx index 4f057ad2..66f8f693 100644 --- a/src/front/Components/DesignSystem/SearchBar/index.tsx +++ b/src/front/Components/DesignSystem/SearchBar/index.tsx @@ -45,7 +45,7 @@ export default class SearchBar extends React.Component { const hasValue = event.target.value.length > 0; this.doesInputHaveValue(hasValue); if (!this.props.onChange) return; - this.props.onChange(this.filterFolders(event)); + this.props.onChange(this.filterFolders(event)!); } private doesInputHaveValue(hasValue: boolean) { diff --git a/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx b/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx index 0293f7b3..02b683d0 100644 --- a/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx +++ b/src/front/Components/DesignSystem/UserFolder/UserFolderHeader/index.tsx @@ -6,6 +6,7 @@ import Image from "next/image"; import PenIcon from "@Assets/Icons/pen.svg"; import WarningBadge from "../../WarningBadge"; import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = { contact: { @@ -22,7 +23,10 @@ type IState = {}; export default class UserFolderHeaderClass extends React.Component { public override render(): JSX.Element { - const redirectPath = "/folder/".concat(this.props.selectedFolderUid, "/update/client/", this.props.contact.uid); + const redirectPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.EditClient.props.path.replace("[folderUid]", this.props.selectedFolderUid) + .replace("[clientUid]", this.props.contact.uid); return (
diff --git a/src/front/Components/DesignSystem/UserFolder/index.tsx b/src/front/Components/DesignSystem/UserFolder/index.tsx index 979a6093..4d56f190 100644 --- a/src/front/Components/DesignSystem/UserFolder/index.tsx +++ b/src/front/Components/DesignSystem/UserFolder/index.tsx @@ -13,6 +13,7 @@ import QuantityProgressBar from "../QuantityProgressBar"; import classes from "./classes.module.scss"; import DocumentList from "./DocumentList"; import UserFolderHeader from "./UserFolderHeader"; +import Module from "@Front/Config/Module"; type IProps = { customer: Customer; @@ -47,7 +48,9 @@ export default class UserFolder extends React.Component { public override render(): JSX.Element { const documentsAsked: Document[] | null = this.getDocumentsByStatus("ASKED"); const otherDocuments: Document[] | null = this.getValidatedAndPendindDocuments(); - + const redirectPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.AskDocument.props.path.replace("[folderUid]", this.props.folder.uid); return (
{ />
- + diff --git a/src/front/Components/LayoutTemplates/DefaultNotaryDashboard/index.tsx b/src/front/Components/LayoutTemplates/DefaultNotaryDashboard/index.tsx index 556003c7..3133c29a 100644 --- a/src/front/Components/LayoutTemplates/DefaultNotaryDashboard/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultNotaryDashboard/index.tsx @@ -7,6 +7,7 @@ import Header from "@Front/Components/DesignSystem/Header"; import Version from "@Front/Components/DesignSystem/Version"; import BackArrow from "@Front/Components/Elements/BackArrow"; import { folders } from "@Front/Components/Layouts/DesignSystem/dummyData"; +import { foldersArchived } from "@Front/Components/Layouts/DesignSystem/dummyData"; import WindowStore from "@Front/Stores/WindowStore"; import classNames from "classnames"; import { OfficeFolder } from "le-coffre-resources/dist/Customer"; @@ -19,13 +20,14 @@ import classes from "./classes.module.scss"; type IProps = { title: string; children?: ReactNode; + isArchived?: boolean; onSelectedFolder: (folder: IDashBoardFolder) => void; hasBackArrow: boolean; backArrowUrl?: string; mobileBackText?: string; }; type IState = { - folders: IDashBoardFolder[]; + folders: IDashBoardFolder[] | null; isLeftSideOpen: boolean; leftSideCanBeClosed: boolean; }; @@ -44,12 +46,13 @@ export default class DefaultNotaryDashboard extends React.Component {}; public static defaultProps: Partial = { hasBackArrow: false, + isArchived: false, }; public constructor(props: IProps) { super(props); this.state = { - folders: folders, + folders: null, isLeftSideOpen: false, leftSideCanBeClosed: typeof window !== "undefined" ? window.innerWidth < 1024 : false, }; @@ -64,11 +67,14 @@ export default class DefaultNotaryDashboard extends React.Component {this.state.isLeftSideOpen &&
}
- + {this.state.folders && ( + + )}
open side menu @@ -102,6 +108,15 @@ export default class DefaultNotaryDashboard extends React.Component this.onResize(window)); + /** + * We set folders state according to the isArchived props + * TODO: Front connexion we need to get from bdd + */ + if (this.props.isArchived) { + this.setState({ folders: foldersArchived }); + } else { + this.setState({ folders: folders }); + } } public override componentWillUnmount() { this.onWindowResize(); diff --git a/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss b/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss index ef16371d..42caf111 100644 --- a/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss +++ b/src/front/Components/LayoutTemplates/DefaultTemplate/classes.module.scss @@ -4,6 +4,8 @@ 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; @@ -12,4 +14,4 @@ @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 962a4834..c31fafc6 100644 --- a/src/front/Components/LayoutTemplates/DefaultTemplate/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultTemplate/index.tsx @@ -23,9 +23,7 @@ export default class DefaultTemplate extends React.Component { return ( <>
-
-
{this.props.children}
-
+
{this.props.children}
); diff --git a/src/front/Components/Layouts/DesignSystem/dummyData.ts b/src/front/Components/Layouts/DesignSystem/dummyData.ts index fa647ccb..95da8113 100644 --- a/src/front/Components/Layouts/DesignSystem/dummyData.ts +++ b/src/front/Components/Layouts/DesignSystem/dummyData.ts @@ -158,7 +158,7 @@ export const folderWithPendingDocument: OfficeFolder = { uid: "ferzferzfezeefzdd", folder_number: "00001", name: "Mon dossier", - status: EFolderStatus.ARCHIVED, + status: EFolderStatus.LIVE, deed: deed, office: office, created_at: new Date(), @@ -171,7 +171,7 @@ export const folderWithPendingDocument1: OfficeFolder = { uid: "gtrtyutyhretgytu", folder_number: "00002", name: "Mon dossier", - status: EFolderStatus.ARCHIVED, + status: EFolderStatus.LIVE, deed: deed, office: office, created_at: new Date(), @@ -184,7 +184,7 @@ export const folderWithPendingDocument2: OfficeFolder = { uid: "adzefzefsfrefzrtgtr", folder_number: "00003", name: "Mon dossier", - status: EFolderStatus.ARCHIVED, + status: EFolderStatus.LIVE, deed: deed, office: office, created_at: new Date(), @@ -210,6 +210,21 @@ export const officeFolderHasCustomer2: OfficeFolderHasCustomer = { updated_at: new Date(), }; +export const folderWithPendingDocument3: OfficeFolder = { + uid: "mkovrijvrezviev", + folder_number: "00014", + name: "Mon dossier", + status: EFolderStatus.LIVE, + deed: deed, + office: office, + created_at: new Date(), + updated_at: new Date(), + description: "Description", + archived_description: "Archived description", + documents: [document, documentDeposited, documentPending], + office_folder_has_customers: [officeFolderHasCustomer1, officeFolderHasCustomer2], +}; + export const document8: Document = { uid: "eztreggrgbyunjukhg", depositor: customer, @@ -220,9 +235,9 @@ export const document8: Document = { created_at: new Date(), }; -export const folderWithPendingDocument3: OfficeFolder = { - uid: "mkovrijvrezviev", - folder_number: "00014", +export const folderWithPendingDocumentArchived1: OfficeFolder = { + uid: "gtrtyutyhrdazafad&éfytu", + folder_number: "00007", name: "Mon dossier", status: EFolderStatus.ARCHIVED, deed: deed, @@ -231,8 +246,20 @@ export const folderWithPendingDocument3: OfficeFolder = { updated_at: new Date(), description: "Description", archived_description: "Archived description", - documents: [document, documentDeposited, documentPending], - office_folder_has_customers: [officeFolderHasCustomer1, officeFolderHasCustomer2], + documents: [documentDeposited], +}; +export const folderWithPendingDocumentArchived2: OfficeFolder = { + uid: "adzefdazdaazzrtgtr", + folder_number: "00008", + name: "Mon dossier", + status: EFolderStatus.ARCHIVED, + deed: deed, + office: office, + created_at: new Date(), + updated_at: new Date(), + description: "Description", + archived_description: "Archived description", + documents: [document], }; export const document2: Document = { @@ -251,3 +278,5 @@ export const folders: OfficeFolder[] = [ folderWithPendingDocument2, folderWithPendingDocument3, ]; + +export const foldersArchived: OfficeFolder[] = [folderWithPendingDocumentArchived1, folderWithPendingDocumentArchived2]; diff --git a/src/front/Components/Layouts/DesignSystem/index.tsx b/src/front/Components/Layouts/DesignSystem/index.tsx index 57aa28fa..f1e0742d 100644 --- a/src/front/Components/Layouts/DesignSystem/index.tsx +++ b/src/front/Components/Layouts/DesignSystem/index.tsx @@ -266,7 +266,7 @@ export default class DesignSystem extends BasePage { Folder List
- +
diff --git a/src/front/Components/Layouts/Folder/AddClientToFolder/index.tsx b/src/front/Components/Layouts/Folder/AddClientToFolder/index.tsx index 3906f638..8d3883a5 100644 --- a/src/front/Components/Layouts/Folder/AddClientToFolder/index.tsx +++ b/src/front/Components/Layouts/Folder/AddClientToFolder/index.tsx @@ -13,6 +13,7 @@ import { ActionMeta, MultiValue } from "react-select"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = { selectedFolderUid: string; @@ -43,7 +44,9 @@ class AddClientToFolderClass extends BasePage { { value: "rijgreipgje", label: "jane Doe" }, { value: "gipjerpogkzfe", label: "Marcelino Doe" }, ]; - const backwardPath = "/folder/".concat(this.props.selectedFolderUid); + const backwardPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.selectedFolderUid); return (
diff --git a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx index 0b9b84f7..46ab0cb5 100644 --- a/src/front/Components/Layouts/Folder/AskDocuments/index.tsx +++ b/src/front/Components/Layouts/Folder/AskDocuments/index.tsx @@ -145,8 +145,6 @@ export default class AskDocuments extends BasePage { } private addDocument() { - console.log(this.state.documentName); - console.log(this.state.visibleDescription); this.setState({ isCreateDocumentModalVisible: false, documentName: "", diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientSection/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientSection/index.tsx index 2569f719..2acba430 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientSection/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientSection/index.tsx @@ -6,6 +6,7 @@ import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; import PlusIcon from "@Assets/Icons/plus.svg"; import UserFolder from "@Front/Components/DesignSystem/UserFolder"; import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = { folder: IDashBoardFolder; @@ -14,7 +15,9 @@ type IState = {}; export default class ClientSection extends React.Component { public override render(): JSX.Element { - const navigatePath = "/folder/".concat(this.props.folder.uid).concat("/add/client"); + const navigatePath = Module.getInstance() + .get() + .modules.pages.Folder.pages.AddClient.props.path.replace("[folderUid]", this.props.folder.uid); return (
{this.doesFolderHaveCustomer() ? ( diff --git a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx index 9a097b05..f88e1d9d 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/index.tsx @@ -14,10 +14,17 @@ import { useRouter } from "next/router"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; import ClientSection from "./ClientSection"; +import Link from "next/link"; +import { useEffect, useState } from "react"; +import Module from "@Front/Config/Module"; -type IPropsClass = { +type IProps = {}; + +type IPropsClass = IProps & { selectedFolderUid: string; + isArchivedFolders: boolean; }; + type IState = { selectedFolder: IDashBoardFolder | null; isArchivedModalOpen: boolean; @@ -37,8 +44,11 @@ class FolderInformationClass extends BasePage { // TODO: Message if the user has not created any folder yet // TODO: get the selected folder from the api in componentDidMount public override render(): JSX.Element { + const redirectPathEditCollaborators = Module.getInstance() + .get() + .modules.pages.Folder.pages.EditCollaborators.props.path.replace("[folderUid]", this.props.selectedFolderUid); return ( - +
{this.state.selectedFolder ? (
@@ -47,9 +57,11 @@ class FolderInformationClass extends BasePage {
Informations du dossier
- + + +
@@ -101,10 +113,6 @@ class FolderInformationClass extends BasePage { ); } public override async componentDidMount() { - // if() - // const selectedFolder = await Fodler.getInstance().getByUid(this.props.selectedFolderUid); - // this.setState({ selectedFolder }); - // console.log(folders); for (const folder of folders) { if (folder.uid === this.props.selectedFolderUid) { this.setState({ selectedFolder: folder }); @@ -130,9 +138,12 @@ class FolderInformationClass extends BasePage { } } -export default function FolderInformation() { +export default function FolderInformation(props: IProps) { const router = useRouter(); let { folderUid } = router.query; folderUid = folderUid as string; - return ; + const [url, setUrl] = useState(""); + useEffect(() => setUrl(router?.asPath), []); + const isArchivedFolders = url.includes("archived"); + return ; } diff --git a/src/front/Components/Layouts/Folder/UpdateClient/index.tsx b/src/front/Components/Layouts/Folder/UpdateClient/index.tsx index debc474b..08981795 100644 --- a/src/front/Components/Layouts/Folder/UpdateClient/index.tsx +++ b/src/front/Components/Layouts/Folder/UpdateClient/index.tsx @@ -11,6 +11,7 @@ import classes from "./classes.module.scss"; import Link from "next/link"; import { ChangeEvent } from "react"; import Confirm from "@Front/Components/DesignSystem/Modal/Confirm"; +import Module from "@Front/Config/Module"; type IProps = { selectedFolderUid: string; @@ -45,7 +46,9 @@ class UpdateClientClass extends BasePage { this.closeLeavingModal = this.closeLeavingModal.bind(this); } public override render(): JSX.Element { - const backwardPath = "/folder/".concat(this.props.selectedFolderUid); + const backwardPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.selectedFolderUid); return (
diff --git a/src/front/Components/Layouts/Folder/UpdateFolderCollaborators/classes.module.scss b/src/front/Components/Layouts/Folder/UpdateFolderCollaborators/classes.module.scss new file mode 100644 index 00000000..d24db555 --- /dev/null +++ b/src/front/Components/Layouts/Folder/UpdateFolderCollaborators/classes.module.scss @@ -0,0 +1,61 @@ +@import "@Themes/constants.scss"; + +.root { + display: flex; + flex-direction: column; + min-height: 100%; + align-items: flex-start; + width: fit-content; + + .back-arrow { + margin-bottom: 24px; + } + + .form { + width: 100%; + + .content { + margin-top: 32px; + + >:not(:last-child) { + margin-bottom: 24px; + } + + } + + .sub-content { + margin-top: 32px; + margin-bottom: 24px; + } + + .button-container { + width: 100%; + display: flex; + text-align: center; + margin-top: 24px; + + .cancel-button { + display: flex; + margin-right: 12px; + } + + @media (max-width: $screen-m) { + display: flex; + flex-direction: column-reverse; + + .cancel-button { + margin-left: 0; + margin-top: 12px; + + >* { + flex: 1; + } + } + + >* { + width: 100%; + } + } + } + } +} \ No newline at end of file diff --git a/src/front/Components/Layouts/Folder/UpdateFolderCollaborators/index.tsx b/src/front/Components/Layouts/Folder/UpdateFolderCollaborators/index.tsx new file mode 100644 index 00000000..7defa139 --- /dev/null +++ b/src/front/Components/Layouts/Folder/UpdateFolderCollaborators/index.tsx @@ -0,0 +1,104 @@ +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import Form from "@Front/Components/DesignSystem/Form"; +import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; +import BackArrow from "@Front/Components/Elements/BackArrow"; +import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; + +import BasePage from "../../Base"; +import classes from "./classes.module.scss"; +import Link from "next/link"; +import { useRouter } from "next/router"; +import RadioBox from "@Front/Components/DesignSystem/RadioBox"; +import MultiSelect from "@Front/Components/DesignSystem/MultiSelect"; + +type IPropsClass = { + selectedFolderUid: string; +}; +type IState = { + selectedFolder: IDashBoardFolder | null; + selectedOption?: ERadioBoxValue; +}; + +enum ERadioBoxValue { + ALL = "all", + SELECTION = "selection", +} + +class UpdateFolderCollaboratorsClass extends BasePage { + constructor(props: IPropsClass) { + super(props); + this.state = { + selectedFolder: null, + }; + this.onSelectedFolder = this.onSelectedFolder.bind(this); + this.onSelectedOptionAllOffice = this.onSelectedOptionAllOffice.bind(this); + this.onSelectedOptionSpecific = this.onSelectedOptionSpecific.bind(this); + } + public override render(): JSX.Element { + const backwardPath = "/folder/".concat(this.props.selectedFolderUid); + const selectOptions = [ + { value: "adazzdsqaad", label: "John Doe" }, + { value: "azdzafzad", label: "Jahn Doe" }, + { value: "azdazkdazoaz", label: "Marcelino Doe" }, + ]; + return ( + +
+
+ +
+ Modifier les collaborateurs + +
+
+ + Tout l’office + + + Sélectionner des collaborateurs + +
+ + {this.state.selectedOption === ERadioBoxValue.SELECTION && ( +
+ +
+ )} + +
+ + + + +
+
+
+
+ ); + } + + private onSelectedOptionAllOffice(event: React.ChangeEvent) { + if (event.target.value !== ERadioBoxValue.ALL) return; + this.setState({ + selectedOption: ERadioBoxValue.ALL, + }); + } + + private onSelectedOptionSpecific(event: React.ChangeEvent) { + if (event.target.value !== ERadioBoxValue.SELECTION) return; + this.setState({ + selectedOption: ERadioBoxValue.SELECTION, + }); + } + + private onSelectedFolder(folder: IDashBoardFolder): void { + this.setState({ selectedFolder: folder }); + } +} + +export default function UpdateFolderCollaborators() { + const router = useRouter(); + let { folderUid } = router.query; + folderUid = folderUid as string; + return ; +} diff --git a/src/front/Components/Layouts/Folder/UpdateFolderDescription/index.tsx b/src/front/Components/Layouts/Folder/UpdateFolderDescription/index.tsx index e4031898..3416e816 100644 --- a/src/front/Components/Layouts/Folder/UpdateFolderDescription/index.tsx +++ b/src/front/Components/Layouts/Folder/UpdateFolderDescription/index.tsx @@ -9,6 +9,7 @@ import { useRouter } from "next/router"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = { selectedFolderUid: string; @@ -25,7 +26,9 @@ class UpdateFolderDescriptionClass extends BasePage { this.onSelectedFolder = this.onSelectedFolder.bind(this); } public override render(): JSX.Element { - const backwardPath = "/folder/".concat(this.props.selectedFolderUid); + const backwardPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.selectedFolderUid); return (
diff --git a/src/front/Components/Layouts/Folder/UpdateFolderMetadata/index.tsx b/src/front/Components/Layouts/Folder/UpdateFolderMetadata/index.tsx index 03ed9b84..21f3aa7f 100644 --- a/src/front/Components/Layouts/Folder/UpdateFolderMetadata/index.tsx +++ b/src/front/Components/Layouts/Folder/UpdateFolderMetadata/index.tsx @@ -10,6 +10,7 @@ import { useRouter } from "next/router"; import BasePage from "../../Base"; import classes from "./classes.module.scss"; import Link from "next/link"; +import Module from "@Front/Config/Module"; type IProps = { selectedFolderUid: string; @@ -33,7 +34,9 @@ class UpdateFolderMetadataClass extends BasePage { { value: "adazzqsdaad", label: "Vente immobilière" }, { value: "adazzqsdaad", label: "Acte de divorce" }, ]; - const backwardPath = "/folder/".concat(this.props.selectedFolderUid); + const backwardPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.selectedFolderUid); return (
diff --git a/src/front/Components/Layouts/Folder/index.tsx b/src/front/Components/Layouts/Folder/index.tsx index 8782e08f..bfd2968a 100644 --- a/src/front/Components/Layouts/Folder/index.tsx +++ b/src/front/Components/Layouts/Folder/index.tsx @@ -17,8 +17,6 @@ export default class Folder extends BasePage { isArchivedModalOpen: false, }; this.onSelectedFolder = this.onSelectedFolder.bind(this); - this.openArchivedModal = this.openArchivedModal.bind(this); - this.closeArchivedModal = this.closeArchivedModal.bind(this); } // TODO: Message if the user has not created any folder yet @@ -42,12 +40,4 @@ export default class Folder extends BasePage { private onSelectedFolder(folder: IDashBoardFolder): void { this.setState({ selectedFolder: folder }); } - - private openArchivedModal(): void { - this.setState({ isArchivedModalOpen: true }); - } - - private closeArchivedModal(): void { - this.setState({ isArchivedModalOpen: false }); - } } diff --git a/src/front/Components/Layouts/FolderArchived/FolderInformation/ClientSection/classes.module.scss b/src/front/Components/Layouts/FolderArchived/FolderInformation/ClientSection/classes.module.scss new file mode 100644 index 00000000..1ac3bba8 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/FolderInformation/ClientSection/classes.module.scss @@ -0,0 +1,25 @@ +@import "@Themes/constants.scss"; + +.root { + width: 100%; + padding-bottom: 32px; + + .no-client { + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + padding: 72px; + + .title { + margin-bottom: 16px; + text-align: center; + } + } + + .client { + display: grid; + gap: 32px; + margin-bottom: 32px; + } +} diff --git a/src/front/Components/Layouts/FolderArchived/FolderInformation/ClientSection/index.tsx b/src/front/Components/Layouts/FolderArchived/FolderInformation/ClientSection/index.tsx new file mode 100644 index 00000000..2acba430 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/FolderInformation/ClientSection/index.tsx @@ -0,0 +1,66 @@ +import React from "react"; +import classes from "./classes.module.scss"; +import { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; +import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import PlusIcon from "@Assets/Icons/plus.svg"; +import UserFolder from "@Front/Components/DesignSystem/UserFolder"; +import Link from "next/link"; +import Module from "@Front/Config/Module"; + +type IProps = { + folder: IDashBoardFolder; +}; +type IState = {}; + +export default class ClientSection extends React.Component { + public override render(): JSX.Element { + const navigatePath = Module.getInstance() + .get() + .modules.pages.Folder.pages.AddClient.props.path.replace("[folderUid]", this.props.folder.uid); + return ( +
+ {this.doesFolderHaveCustomer() ? ( + <> +
{this.renderCustomerFolders()}
+ + + + + ) : ( +
+
+ + Aucun client n’est associé au dossier. + +
+ + + +
+ )} +
+ ); + } + + private renderCustomerFolders() { + const output = this.props.folder.office_folder_has_customers?.map((folderHasCustomer, key) => { + if (!folderHasCustomer.customer) return null; + // TODO : Les documents ASKED fonctionne mais les autres documents ne doivcent etre seulement ceux qui correspondent au folder + return ( + //
+ + //
+ ); + }); + return output ?? null; + } + + private doesFolderHaveCustomer(): boolean { + return this.props.folder.office_folder_has_customers !== undefined; + } +} diff --git a/src/front/Components/Layouts/FolderArchived/FolderInformation/classes.module.scss b/src/front/Components/Layouts/FolderArchived/FolderInformation/classes.module.scss new file mode 100644 index 00000000..a1052297 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/FolderInformation/classes.module.scss @@ -0,0 +1,89 @@ +@import "@Themes/constants.scss"; + +.root { + display: flex; + align-items: center; + flex-direction: column; + min-height: 100%; + + .no-folder-selected { + width: 100%; + + .choose-a-folder { + margin-top: 96px; + text-align: center; + } + } + + .folder-informations { + width: 100%; + min-height: 100%; + display: flex; + justify-content: space-between; + align-items: center; + flex-direction: column; + flex-grow: 1; + + .folder-header { + width: 100%; + + .header { + margin-bottom: 32px; + width: 100%; + display: flex; + justify-content: space-between; + align-items: center; + + @media (max-width: $screen-m) { + flex-wrap: wrap; + + .title { + margin-bottom: 24px; + } + } + } + } + } + + .second-box { + margin-top: 24px; + margin-bottom: 32px; + } + + .progress-bar { + margin-bottom: 32px; + } + + .button-container { + width: 100%; + display: flex; + text-align: center; + justify-content: center; + + .delete-folder { + display: flex; + margin-left: 12px; + } + + @media (max-width: $screen-m) { + display: block; + + .delete-folder { + margin-left: 0; + margin-top: 12px; + + >* { + flex: 1; + } + } + + >* { + width: 100%; + } + } + } + + .modal-title { + margin-bottom: 24px; + } +} \ No newline at end of file diff --git a/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx b/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx new file mode 100644 index 00000000..25ee7d73 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/FolderInformation/index.tsx @@ -0,0 +1,143 @@ +import "reflect-metadata"; + +import ChevronIcon from "@Assets/Icons/chevron.svg"; +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import FolderBoxInformation from "@Front/Components/DesignSystem/FolderBoxInformation"; +import InputField from "@Front/Components/DesignSystem/Form/Elements/InputField"; +import Confirm from "@Front/Components/DesignSystem/Modal/Confirm"; +import QuantityProgressBar from "@Front/Components/DesignSystem/QuantityProgressBar"; +import Typography, { ITypo, ITypoColor } from "@Front/Components/DesignSystem/Typography"; +import { folders } from "@Front/Components/Layouts/DesignSystem/dummyData"; +import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; +import { useRouter } from "next/router"; + +import BasePage from "../../Base"; +import classes from "./classes.module.scss"; +import ClientSection from "./ClientSection"; +import { useEffect, useState } from "react"; + +type IProps = {}; + +type IPropsClass = IProps & { + selectedFolderUid: string; + isArchivedFolders: boolean; +}; + +type IState = { + selectedFolder: IDashBoardFolder | null; + isArchivedModalOpen: boolean; +}; +class FolderInformationClass extends BasePage { + public constructor(props: IPropsClass) { + super(props); + this.state = { + selectedFolder: null, + isArchivedModalOpen: false, + }; + this.onSelectedFolder = this.onSelectedFolder.bind(this); + this.openArchivedModal = this.openArchivedModal.bind(this); + this.closeArchivedModal = this.closeArchivedModal.bind(this); + } + + // TODO: Message if the user has not created any folder yet + // TODO: get the selected folder from the api in componentDidMount + public override render(): JSX.Element { + return ( + +
+ {this.state.selectedFolder ? ( +
+
+
+
+ Informations du dossier +
+ +
+ +
+ +
+
+ +
+ {this.doesFolderHaveCustomer() && } +
+ + {!this.doesFolderHaveCustomer() && } + +
+ + {!this.doesFolderHaveCustomer() && ( + + + + )} +
+ +
+ Souhaitez-vous vraiment archiver le dossier ? +
+ +
+
+ ) : ( +
+ Informations du dossier +
+ + Veuillez sélectionner un dossier. + +
+
+ )} +
+
+ ); + } + public override async componentDidMount() { + for (const folder of folders) { + if (folder.uid === this.props.selectedFolderUid) { + this.setState({ selectedFolder: folder }); + break; + } + } + } + + private doesFolderHaveCustomer(): boolean { + return this.state.selectedFolder?.office_folder_has_customers !== undefined; + } + + private onSelectedFolder(folder: IDashBoardFolder): void { + this.setState({ selectedFolder: folder }); + } + + private openArchivedModal(): void { + this.setState({ isArchivedModalOpen: true }); + } + + private closeArchivedModal(): void { + this.setState({ isArchivedModalOpen: false }); + } +} + +export default function FolderInformation(props: IProps) { + const router = useRouter(); + let { folderUid } = router.query; + folderUid = folderUid as string; + const [url, setUrl] = useState(""); + useEffect(() => setUrl(router?.asPath), []); + const isArchivedFolders = url.includes("archived"); + console.log("isArchivedFolders >> ", isArchivedFolders); + return ; +} diff --git a/src/front/Components/Layouts/FolderArchived/UpdateFolderDescription/classes.module.scss b/src/front/Components/Layouts/FolderArchived/UpdateFolderDescription/classes.module.scss new file mode 100644 index 00000000..cd3ceba2 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/UpdateFolderDescription/classes.module.scss @@ -0,0 +1,56 @@ +@import "@Themes/constants.scss"; + +.root { + display: flex; + flex-direction: column; + min-height: 100%; + align-items: flex-start; + width: fit-content; + + .back-arrow { + margin-bottom: 24px; + } + + .form { + width: 100%; + + .content { + margin-top: 32px; + + >:not(:last-child) { + margin-bottom: 24px; + } + + } + + .button-container { + width: 100%; + display: flex; + text-align: center; + margin-top: 24px; + + .cancel-button { + display: flex; + margin-right: 32px; + } + + @media (max-width: $screen-m) { + display: flex; + flex-direction: column-reverse; + + .cancel-button { + margin-left: 0; + margin-top: 12px; + + >* { + flex: 1; + } + } + + >* { + width: 100%; + } + } + } + } +} \ No newline at end of file diff --git a/src/front/Components/Layouts/FolderArchived/UpdateFolderDescription/index.tsx b/src/front/Components/Layouts/FolderArchived/UpdateFolderDescription/index.tsx new file mode 100644 index 00000000..3416e816 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/UpdateFolderDescription/index.tsx @@ -0,0 +1,67 @@ +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import Form from "@Front/Components/DesignSystem/Form"; +import InputField from "@Front/Components/DesignSystem/Form/Elements/InputField"; +import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; +import BackArrow from "@Front/Components/Elements/BackArrow"; +import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; +import { useRouter } from "next/router"; + +import BasePage from "../../Base"; +import classes from "./classes.module.scss"; +import Link from "next/link"; +import Module from "@Front/Config/Module"; + +type IProps = { + selectedFolderUid: string; +}; +type IState = { + selectedFolder: IDashBoardFolder | null; +}; +class UpdateFolderDescriptionClass extends BasePage { + constructor(props: IProps) { + super(props); + this.state = { + selectedFolder: null, + }; + this.onSelectedFolder = this.onSelectedFolder.bind(this); + } + public override render(): JSX.Element { + const backwardPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.selectedFolderUid); + return ( + +
+
+ +
+ Modifier la note du dossier + +
+
+ +
+ +
+ + + + +
+
+
+
+ ); + } + + private onSelectedFolder(folder: IDashBoardFolder): void { + this.setState({ selectedFolder: folder }); + } +} + +export default function UpdateFolderDescription() { + const router = useRouter(); + let { folderUid } = router.query; + folderUid = folderUid as string; + return ; +} diff --git a/src/front/Components/Layouts/FolderArchived/UpdateFolderMetadata/classes.module.scss b/src/front/Components/Layouts/FolderArchived/UpdateFolderMetadata/classes.module.scss new file mode 100644 index 00000000..4724e9d9 --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/UpdateFolderMetadata/classes.module.scss @@ -0,0 +1,56 @@ +@import "@Themes/constants.scss"; + +.root { + display: flex; + flex-direction: column; + min-height: 100%; + align-items: flex-start; + width: fit-content; + + .back-arrow { + margin-bottom: 24px; + } + + .form { + width: 100%; + + .content { + margin-top: 32px; + + >:not(:last-child) { + margin-bottom: 24px; + } + + } + + .button-container { + width: 100%; + display: flex; + text-align: center; + margin-top: 24px; + + .cancel-button { + display: flex; + margin-right: 12px; + } + + @media (max-width: $screen-m) { + display: flex; + flex-direction: column-reverse; + + .cancel-button { + margin-left: 0; + margin-top: 12px; + + >* { + flex: 1; + } + } + + >* { + width: 100%; + } + } + } + } +} \ No newline at end of file diff --git a/src/front/Components/Layouts/FolderArchived/UpdateFolderMetadata/index.tsx b/src/front/Components/Layouts/FolderArchived/UpdateFolderMetadata/index.tsx new file mode 100644 index 00000000..21f3aa7f --- /dev/null +++ b/src/front/Components/Layouts/FolderArchived/UpdateFolderMetadata/index.tsx @@ -0,0 +1,89 @@ +import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button"; +import Form from "@Front/Components/DesignSystem/Form"; +import InputField from "@Front/Components/DesignSystem/Form/Elements/InputField"; +import Select, { IOption } from "@Front/Components/DesignSystem/Select"; +import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography"; +import BackArrow from "@Front/Components/Elements/BackArrow"; +import DefaultNotaryDashboard, { IDashBoardFolder } from "@Front/Components/LayoutTemplates/DefaultNotaryDashboard"; +import { useRouter } from "next/router"; + +import BasePage from "../../Base"; +import classes from "./classes.module.scss"; +import Link from "next/link"; +import Module from "@Front/Config/Module"; + +type IProps = { + selectedFolderUid: string; +}; +type IState = { + selectedFolder: IDashBoardFolder | null; + selectedOption?: IOption; +}; +class UpdateFolderMetadataClass extends BasePage { + constructor(props: IProps) { + super(props); + this.state = { + selectedFolder: null, + }; + this.onSelectedFolder = this.onSelectedFolder.bind(this); + this.onSelectedOption = this.onSelectedOption.bind(this); + } + public override render(): JSX.Element { + const selectOptions = [ + { value: "adazzdsqaad", label: "Acte de mariage" }, + { value: "adazzqsdaad", label: "Vente immobilière" }, + { value: "adazzqsdaad", label: "Acte de divorce" }, + ]; + const backwardPath = Module.getInstance() + .get() + .modules.pages.Folder.pages.FolderInformation.props.path.replace("[folderUid]", this.props.selectedFolderUid); + return ( + +
+
+ +
+ Modifier les informations du dossier + +
+
+ + + - + Il n'y a rien ici, la page que vous avez demandé n'existe pas + + +
); diff --git a/src/front/Config/Module/development.json b/src/front/Config/Module/development.json new file mode 100644 index 00000000..b449fef6 --- /dev/null +++ b/src/front/Config/Module/development.json @@ -0,0 +1,124 @@ +{ + "app": "lecoffre", + "theme": {}, + "modules": { + "pages": { + "Home": { + "enabled": true, + "props": { + "path": "/", + "labelKey": "homepage" + } + }, + "DesignSystem": { + "enabled": true, + "props": { + "path": "/design-system", + "labelKey": "design_system" + } + }, + "Login": { + "enabled": true, + "props": { + "path": "/login", + "labelKey": "design_system" + } + }, + "Folder": { + "enabled": true, + "props": { + "path": "/folders", + "labelKey": "folder" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]", + "labelKey": "folder_information" + } + }, + "CreateFolder": { + "enabled": true, + "props": { + "path": "/folders/create", + "labelKey": "create_folder" + } + }, + "AddClient": { + "enabled": true, + "props": { + "path": "/folders/add/clients", + "labelKey": "add_client_to_folder" + } + }, + "AskDocument": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/ask-documents", + "labelKey": "ask_documents" + } + }, + "EditDescription": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/description", + "labelKey": "edit_description" + } + }, + "EditInformations": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/informations", + "labelKey": "edit_informations" + } + }, + "EditClient": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/clients/[clientUid]", + "labelKey": "edit_informations" + } + }, + "EditCollaborators": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/collaborators", + "labelKey": "edit_collaborators" + } + }, + "FolderArchived": { + "enabled": true, + "props": { + "path": "/folders/archived", + "labelKey": "archived_folders" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/archived/[folderUid]", + "labelKey": "archived_folder_information" + } + } + } + } + } + }, + "MyAccount": { + "enabled": true, + "props": { + "path": "/my-account", + "labelKey": "my_account" + } + }, + "404": { + "enabled": true, + "props": { + "path": "/404", + "labelKey": "not_found" + } + } + } + } +} diff --git a/src/front/Config/Module/index.ts b/src/front/Config/Module/index.ts new file mode 100644 index 00000000..47832ef9 --- /dev/null +++ b/src/front/Config/Module/index.ts @@ -0,0 +1,38 @@ +import developmentConfig from "./development.json"; +import productionConfig from "./production.json"; +import stagingConfig from "./staging.json"; +import preprodConfig from "./preprod.json"; + +export default class Module { + private static ctx: Module; + private config: typeof developmentConfig = developmentConfig; + constructor() { + if (Module.ctx) return Module.ctx; + Module.ctx = this; + this.setConfig(); + return Module.ctx; + } + + public static getInstance() { + if (!Module.ctx) new this(); + return Module.ctx; + } + + public get() { + return this.config; + } + + private setConfig() { + switch (process.env["NEXTJS_APP_ENV_NAME"]) { + case "staging": + this.config = stagingConfig; + break; + case "preprod": + this.config = preprodConfig; + break; + case "production": + this.config = productionConfig; + break; + } + } +} diff --git a/src/front/Config/Module/preprod.json b/src/front/Config/Module/preprod.json new file mode 100644 index 00000000..b5d6f276 --- /dev/null +++ b/src/front/Config/Module/preprod.json @@ -0,0 +1,117 @@ +{ + "app": "lecoffre", + "theme": {}, + "modules": { + "pages": { + "Home": { + "enabled": true, + "props": { + "path": "/", + "labelKey": "homepage" + } + }, + "DesignSystem": { + "enabled": true, + "props": { + "path": "/design-system", + "labelKey": "design_system" + } + }, + "Login": { + "enabled": true, + "props": { + "path": "/login", + "labelKey": "design_system" + } + }, + "Folder": { + "enabled": true, + "props": { + "path": "/folders", + "labelKey": "folder" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]", + "labelKey": "folder_information" + } + }, + "CreateFolder": { + "enabled": true, + "props": { + "path": "/folders/create", + "labelKey": "create_folder" + } + }, + "AddClient": { + "enabled": true, + "props": { + "path": "/folders/add/client", + "labelKey": "add_client_to_folder" + } + }, + "AskDocument": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/ask-documents", + "labelKey": "ask_documents" + } + }, + "EditDescription": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/description", + "labelKey": "edit_description" + } + }, + "EditInformations": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/informations", + "labelKey": "edit_informations" + } + }, + "EditClient": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/clients/[clientUid]", + "labelKey": "edit_informations" + } + }, + "FolderArchived": { + "enabled": true, + "props": { + "path": "/folders/archived", + "labelKey": "archived_folders" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/archived/[folderUid]", + "labelKey": "archived_folder_information" + } + } + } + } + } + }, + "MyAccount": { + "enabled": true, + "props": { + "path": "/my-account", + "labelKey": "my_account" + } + }, + "404": { + "enabled": true, + "props": { + "path": "/404", + "labelKey": "not_found" + } + } + } + } +} diff --git a/src/front/Config/Module/production.json b/src/front/Config/Module/production.json new file mode 100644 index 00000000..b5d6f276 --- /dev/null +++ b/src/front/Config/Module/production.json @@ -0,0 +1,117 @@ +{ + "app": "lecoffre", + "theme": {}, + "modules": { + "pages": { + "Home": { + "enabled": true, + "props": { + "path": "/", + "labelKey": "homepage" + } + }, + "DesignSystem": { + "enabled": true, + "props": { + "path": "/design-system", + "labelKey": "design_system" + } + }, + "Login": { + "enabled": true, + "props": { + "path": "/login", + "labelKey": "design_system" + } + }, + "Folder": { + "enabled": true, + "props": { + "path": "/folders", + "labelKey": "folder" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]", + "labelKey": "folder_information" + } + }, + "CreateFolder": { + "enabled": true, + "props": { + "path": "/folders/create", + "labelKey": "create_folder" + } + }, + "AddClient": { + "enabled": true, + "props": { + "path": "/folders/add/client", + "labelKey": "add_client_to_folder" + } + }, + "AskDocument": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/ask-documents", + "labelKey": "ask_documents" + } + }, + "EditDescription": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/description", + "labelKey": "edit_description" + } + }, + "EditInformations": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/informations", + "labelKey": "edit_informations" + } + }, + "EditClient": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/clients/[clientUid]", + "labelKey": "edit_informations" + } + }, + "FolderArchived": { + "enabled": true, + "props": { + "path": "/folders/archived", + "labelKey": "archived_folders" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/archived/[folderUid]", + "labelKey": "archived_folder_information" + } + } + } + } + } + }, + "MyAccount": { + "enabled": true, + "props": { + "path": "/my-account", + "labelKey": "my_account" + } + }, + "404": { + "enabled": true, + "props": { + "path": "/404", + "labelKey": "not_found" + } + } + } + } +} diff --git a/src/front/Config/Module/staging.json b/src/front/Config/Module/staging.json new file mode 100644 index 00000000..b5d6f276 --- /dev/null +++ b/src/front/Config/Module/staging.json @@ -0,0 +1,117 @@ +{ + "app": "lecoffre", + "theme": {}, + "modules": { + "pages": { + "Home": { + "enabled": true, + "props": { + "path": "/", + "labelKey": "homepage" + } + }, + "DesignSystem": { + "enabled": true, + "props": { + "path": "/design-system", + "labelKey": "design_system" + } + }, + "Login": { + "enabled": true, + "props": { + "path": "/login", + "labelKey": "design_system" + } + }, + "Folder": { + "enabled": true, + "props": { + "path": "/folders", + "labelKey": "folder" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]", + "labelKey": "folder_information" + } + }, + "CreateFolder": { + "enabled": true, + "props": { + "path": "/folders/create", + "labelKey": "create_folder" + } + }, + "AddClient": { + "enabled": true, + "props": { + "path": "/folders/add/client", + "labelKey": "add_client_to_folder" + } + }, + "AskDocument": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/ask-documents", + "labelKey": "ask_documents" + } + }, + "EditDescription": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/description", + "labelKey": "edit_description" + } + }, + "EditInformations": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/informations", + "labelKey": "edit_informations" + } + }, + "EditClient": { + "enabled": true, + "props": { + "path": "/folders/[folderUid]/edit/clients/[clientUid]", + "labelKey": "edit_informations" + } + }, + "FolderArchived": { + "enabled": true, + "props": { + "path": "/folders/archived", + "labelKey": "archived_folders" + }, + "pages": { + "FolderInformation": { + "enabled": true, + "props": { + "path": "/folders/archived/[folderUid]", + "labelKey": "archived_folder_information" + } + } + } + } + } + }, + "MyAccount": { + "enabled": true, + "props": { + "path": "/my-account", + "labelKey": "my_account" + } + }, + "404": { + "enabled": true, + "props": { + "path": "/404", + "labelKey": "not_found" + } + } + } + } +} diff --git a/src/pages/folder/[folderUid]/update/description.tsx b/src/pages/folder/[folderUid]/update/description.tsx deleted file mode 100644 index 074f361f..00000000 --- a/src/pages/folder/[folderUid]/update/description.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import UpdateFolderDescription from "@Front/Components/Layouts/Folder/UpdateFolderDescription"; - -export default function Route() { - return ; -} diff --git a/src/pages/folder/[folderUid]/ask-documents/index.tsx b/src/pages/folders/[folderUid]/ask-documents/index.tsx similarity index 100% rename from src/pages/folder/[folderUid]/ask-documents/index.tsx rename to src/pages/folders/[folderUid]/ask-documents/index.tsx diff --git a/src/pages/folder/[folderUid]/update/client/[clientUid].tsx b/src/pages/folders/[folderUid]/edit/clients/[clientUid].tsx similarity index 100% rename from src/pages/folder/[folderUid]/update/client/[clientUid].tsx rename to src/pages/folders/[folderUid]/edit/clients/[clientUid].tsx diff --git a/src/pages/folders/[folderUid]/edit/collaborators.tsx b/src/pages/folders/[folderUid]/edit/collaborators.tsx new file mode 100644 index 00000000..7707dbe9 --- /dev/null +++ b/src/pages/folders/[folderUid]/edit/collaborators.tsx @@ -0,0 +1,5 @@ +import UpdateFolderCollaborators from "@Front/Components/Layouts/Folder/UpdateFolderCollaborators"; + +export default function Route() { + return ; +} diff --git a/src/pages/folders/[folderUid]/edit/description.tsx b/src/pages/folders/[folderUid]/edit/description.tsx new file mode 100644 index 00000000..2b90f293 --- /dev/null +++ b/src/pages/folders/[folderUid]/edit/description.tsx @@ -0,0 +1,13 @@ +import UpdateFolderDescription from "@Front/Components/Layouts/Folder/UpdateFolderDescription"; +import Module from "@Front/Config/Module"; +import { useRouter } from "next/router"; + +export default function Route() { + const isEnabled: boolean = Module.getInstance().get().modules.pages.Folder.pages.EditDescription.enabled; + const router = useRouter(); + if (!isEnabled) { + router.push("/404"); + return null; + } + return ; +} diff --git a/src/pages/folder/[folderUid]/update/metadata.tsx b/src/pages/folders/[folderUid]/edit/informations.tsx similarity index 100% rename from src/pages/folder/[folderUid]/update/metadata.tsx rename to src/pages/folders/[folderUid]/edit/informations.tsx diff --git a/src/pages/folder/[folderUid]/index.tsx b/src/pages/folders/[folderUid]/index.tsx similarity index 100% rename from src/pages/folder/[folderUid]/index.tsx rename to src/pages/folders/[folderUid]/index.tsx diff --git a/src/pages/folder/[folderUid]/add/client.tsx b/src/pages/folders/add/clients.tsx similarity index 100% rename from src/pages/folder/[folderUid]/add/client.tsx rename to src/pages/folders/add/clients.tsx diff --git a/src/pages/folders/archived/[folderUid]/index.tsx b/src/pages/folders/archived/[folderUid]/index.tsx new file mode 100644 index 00000000..2b6680d9 --- /dev/null +++ b/src/pages/folders/archived/[folderUid]/index.tsx @@ -0,0 +1,5 @@ +import FolderInformation from "@Front/Components/Layouts/Folder/FolderInformation"; + +export default function Route() { + return ; +} diff --git a/src/pages/folders/archived/index.tsx b/src/pages/folders/archived/index.tsx new file mode 100644 index 00000000..04918be3 --- /dev/null +++ b/src/pages/folders/archived/index.tsx @@ -0,0 +1,5 @@ +import FolderArchived from "@Front/Components/Layouts/FolderArchived"; + +export default function Route() { + return ; +} diff --git a/src/pages/folder/create.tsx b/src/pages/folders/create.tsx similarity index 100% rename from src/pages/folder/create.tsx rename to src/pages/folders/create.tsx diff --git a/src/pages/folder/index.tsx b/src/pages/folders/index.tsx similarity index 100% rename from src/pages/folder/index.tsx rename to src/pages/folders/index.tsx