diff --git a/src/front/Components/DesignSystem/Alert/index.tsx b/src/front/Components/DesignSystem/Alert/index.tsx index a00022bc..64d70a5c 100644 --- a/src/front/Components/DesignSystem/Alert/index.tsx +++ b/src/front/Components/DesignSystem/Alert/index.tsx @@ -49,7 +49,7 @@ export default function Alert(props: IProps) { {title} - + {description} diff --git a/src/front/Components/DesignSystem/BlockList/index.tsx b/src/front/Components/DesignSystem/BlockList/index.tsx deleted file mode 100644 index e733a3ac..00000000 --- a/src/front/Components/DesignSystem/BlockList/index.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { useCallback } from "react"; -import classes from "./classes.module.scss"; -import Typography, { ETypo } from "../Typography"; -import ChevronIcon from "@Assets/Icons/chevron.svg"; -import Image from "next/image"; -import WarningBadge from "../WarningBadge"; - -export type IBlock = { - name: string; - id: string; - selected: boolean; - rightIcon?: JSX.Element; - hasFlag?: boolean; -}; - -type IProps = { - blocks: IBlock[]; - onSelectedBlock: (block: IBlock) => void; -}; -export default function BlockList({ blocks, onSelectedBlock }: IProps) { - const selectBlock = useCallback( - (e: React.MouseEvent) => { - onSelectedBlock && onSelectedBlock(blocks.find((folder) => folder.id === e.currentTarget.id)!); - }, - [blocks, onSelectedBlock], - ); - - return ( -
- {blocks.map((folder) => { - return ( -
-
-
- {folder.name} -
-
- {folder.hasFlag && } - {folder.rightIcon} - chevron -
-
-
- ); - })} -
- ); -} diff --git a/src/front/Components/DesignSystem/FolderArchivedListContainer/index.tsx b/src/front/Components/DesignSystem/FolderArchivedListContainer/index.tsx index 19797c52..c77c890c 100644 --- a/src/front/Components/DesignSystem/FolderArchivedListContainer/index.tsx +++ b/src/front/Components/DesignSystem/FolderArchivedListContainer/index.tsx @@ -5,12 +5,13 @@ import Link from "next/link"; import { NextRouter, useRouter } from "next/router"; import React from "react"; -import BlockList, { IBlock } from "../BlockList"; import Button from "../Button"; import SearchBar from "../SearchBar"; import classes from "./classes.module.scss"; import Rules, { RulesMode } from "@Front/Components/Elements/Rules"; import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule"; +import { IBlock } from "../SearchBlockList/BlockList/Block"; +import BlockList from "../SearchBlockList/BlockList"; type IProps = { folders: OfficeFolder[]; @@ -106,9 +107,10 @@ class FolderArchivedListContainerClass extends React.Component { return { id: folder.uid!, - name: folder.folder_number! + " - " + folder.name!, - selected: this.props.selectedFolder === folder.uid, - hasFlag: folder.documents?.some((document) => document.document_status === EDocumentStatus.DEPOSITED), + primaryText: folder.name, + isActive: this.props.selectedFolder === folder.uid, + secondaryText: folder.folder_number, + showAlert: folder.documents?.some((document) => document.document_status === EDocumentStatus.DEPOSITED), }; }); } diff --git a/src/front/Components/DesignSystem/FolderListContainer/index.tsx b/src/front/Components/DesignSystem/FolderListContainer/index.tsx index 0ac30339..6b8c3e46 100644 --- a/src/front/Components/DesignSystem/FolderListContainer/index.tsx +++ b/src/front/Components/DesignSystem/FolderListContainer/index.tsx @@ -1,16 +1,12 @@ import Module from "@Front/Config/Module"; import { OfficeFolder } from "le-coffre-resources/dist/Notary"; import { EDocumentStatus } from "le-coffre-resources/dist/Notary/Document"; -import Link from "next/link"; -import { NextRouter, useRouter } from "next/router"; -import React from "react"; +import { useRouter } from "next/router"; +import React, { useCallback, useEffect } from "react"; -import BlockList, { IBlock } from "../BlockList"; -import Button from "../Button"; -import SearchBar from "../SearchBar"; import classes from "./classes.module.scss"; -import Rules, { RulesMode } from "@Front/Components/Elements/Rules"; -import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule"; +import { IBlock } from "../SearchBlockList/BlockList/Block"; +import SearchBlockList from "../SearchBlockList"; type IProps = { folders: OfficeFolder[]; @@ -19,132 +15,76 @@ type IProps = { onCloseLeftSide?: () => void; }; -type IPropsClass = IProps & { - router: NextRouter; - selectedFolder: string; -}; - -type IState = { - filteredFolders: OfficeFolder[]; - blocks: IBlock[]; -}; - -class FolderListContainerClass extends React.Component { - private 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; - public constructor(props: IPropsClass) { - super(props); - this.state = { - filteredFolders: this.props.folders, - blocks: this.getBlocks(this.props.folders), - }; - this.filterFolders = this.filterFolders.bind(this); - this.onSelectedFolder = this.onSelectedFolder.bind(this); - } - - public override render(): JSX.Element { - const navigatePath = Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path; - return ( -
-
-
- -
-
- -
-
- {!this.props.isArchived && ( -
- - - - - -
- )} -
- ); - } - - public override componentDidUpdate(prevProps: Readonly, prevState: Readonly, snapshot?: any): void { - if (prevProps.selectedFolder !== this.props.selectedFolder) { - this.setState({ filteredFolders: this.props.folders, blocks: this.getBlocks(this.props.folders) }); - } - } - private getBlocks(folders: OfficeFolder[]): IBlock[] { - const pendingFolders = folders - .filter((folder) => { - const pendingDocuments = (folder.documents ?? []).filter( - (document) => document.document_status === EDocumentStatus.DEPOSITED, - ); - return pendingDocuments.length >= 1; - }) - .sort((folder1, folder2) => { - return folder1.created_at! > folder2.created_at! ? -1 : 1; - }); - - const otherFolders = folders - .filter((folder) => { - const pendingDocuments = (folder.documents ?? []).filter( - (document) => document.document_status === EDocumentStatus.DEPOSITED, - ); - return pendingDocuments.length === 0; - }) - .sort((folder1, folder2) => { - return folder1.created_at! > folder2.created_at! ? -1 : 1; - }); - - return [...pendingFolders, ...otherFolders].map((folder) => { - return { - id: folder.uid!, - name: folder.folder_number! + " - " + folder.name!, - selected: this.props.selectedFolder === folder.uid, - hasFlag: folder.documents?.some((document) => document.document_status === EDocumentStatus.DEPOSITED), - }; - }); - } - - private onSelectedFolder(block: IBlock) { - const folder = this.props.folders.find((folder) => folder.uid === block.id); - if (!folder) return; - this.props.onSelectedFolder && this.props.onSelectedFolder(folder); - const path = this.redirectPath.replace("[folderUid]", folder.uid ?? ""); - this.props.router.push(path); - } - - private filterFolders(value: string): void { - const filteredFolders: OfficeFolder[] = this.props.folders.filter((folder) => { - const name = folder.name.toLowerCase(); - const number = folder.folder_number.toLowerCase(); - value = value.toLowerCase(); - if (folder.customers) { - const customerNames = folder.customers - .map((customer) => { - return `${customer.contact?.first_name.toLowerCase()} ${customer.contact?.last_name.toLowerCase()}`; - }) - .join(", "); - - return name.includes(value) || number.includes(value) || customerNames.includes(value); - } - - return name.includes(value) || number.includes(value); - }); - - this.setState({ filteredFolders, blocks: this.getBlocks(filteredFolders) }); - } -} - export default function FolderListContainer(props: IProps) { const router = useRouter(); const { folderUid } = router.query; - return ; + const { folders, isArchived } = props; + + const redirectPath: string = isArchived + ? Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.pages.FolderInformation.props.path + : Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path; + + const getBlocks = useCallback( + (folders: OfficeFolder[]): IBlock[] => { + const pendingFolders = folders + .filter((folder) => { + const pendingDocuments = (folder.documents ?? []).filter( + (document) => document.document_status === EDocumentStatus.DEPOSITED, + ); + return pendingDocuments.length >= 1; + }) + .sort((folder1, folder2) => { + return folder1.created_at! > folder2.created_at! ? -1 : 1; + }); + + const otherFolders = folders + .filter((folder) => { + const pendingDocuments = (folder.documents ?? []).filter( + (document) => document.document_status === EDocumentStatus.DEPOSITED, + ); + return pendingDocuments.length === 0; + }) + .sort((folder1, folder2) => { + return folder1.created_at! > folder2.created_at! ? -1 : 1; + }); + + return [...pendingFolders, ...otherFolders].map((folder) => { + return { + id: folder.uid!, + primaryText: folder.name, + secondaryText: folder.folder_number, + isActive: folderUid === folder.uid, + showAlert: folder.documents?.some((document) => document.document_status === EDocumentStatus.DEPOSITED), + }; + }); + }, + [folderUid], + ); + + const [blocks, setBlocks] = React.useState(getBlocks(folders)); + + const onSelectedFolder = (block: IBlock) => { + const folder = folders.find((folder) => folder.uid === block.id); + if (!folder) return; + props.onSelectedFolder && props.onSelectedFolder(folder); + const path = redirectPath.replace("[folderUid]", folder.uid ?? ""); + router.push(path); + }; + + useEffect(() => { + setBlocks(getBlocks(folders)); + }, [folders, getBlocks]); + + return ( +
+ +
+ ); } diff --git a/src/front/Components/DesignSystem/SearchBar/classes.module.scss b/src/front/Components/DesignSystem/SearchBar/classes.module.scss index 326e7950..bfb3e58c 100644 --- a/src/front/Components/DesignSystem/SearchBar/classes.module.scss +++ b/src/front/Components/DesignSystem/SearchBar/classes.module.scss @@ -2,30 +2,67 @@ .root { display: flex; - align-items: center; - padding-left: 24px; - background-color: var(--color-generic-white); - border: 1px solid var(--color-neutral-200); - position: relative; + padding: var(--spacing-2, 16px) var(--spacing-sm, 8px); + align-items: flex-start; + gap: var(--spacing-2, 16px); - .fake-placeholder { - position: absolute; - left: 47px; - top: 24px; - color: var(--color-neutral-500); - pointer-events: none; + border-radius: var(--input-radius, 0px); + border: 1px solid var(--input-main-border-default, #d7dce0); + background: var(--input-background, #fff); + + &:hover { + border-radius: var(--input-radius, 0px); + border: 1px solid var(--input-main-border-hovered, #b4bec5); + background: var(--input-background, #fff); } - .input { - border: 0; - margin-left: 8px; - padding: 24px 0; - width: 100%; - font-family: "Inter", sans-serif; - font-style: normal; - font-weight: 400; - font-size: 18px; - line-height: 22px; - color: var(--color-neutral-500); + &[data-has-value="true"] { + border-radius: var(--input-radius, 0px); + border: 1px solid var(--input-main-border-filled, #6d7e8a); + background: var(--input-background, #fff); + } + + &[data-is-focused="true"] { + border-radius: var(--input-radius, 0px); + border: 1px solid var(--input-main-border-focused, #005bcb); + background: var(--input-background, #fff); + } + + .input-container { + display: flex; + flex: 1; + gap: 8px; + padding: 0px var(--spacing-2, 16px); + + .input { + flex: 1; + border: none; + + color: var(--input-placeholder-filled, #24282e); + + /* text/md/semibold */ + font-family: var(--font-text-family, Poppins); + font-size: 16px; + font-style: normal; + font-weight: var(--font-text-weight-semibold, 600); + line-height: normal; + letter-spacing: 0.08px; + width: 100%; + + &::placeholder { + color: var(--input-placeholder-empty, #6d7e8a); + /* text/md/regular */ + font-family: var(--font-text-family, Poppins); + font-size: 16px; + font-style: normal; + font-weight: var(--font-text-weight-regular, 400); + line-height: normal; + letter-spacing: 0.08px; + } + } + + .cross { + cursor: pointer; + } } } diff --git a/src/front/Components/DesignSystem/SearchBar/index.tsx b/src/front/Components/DesignSystem/SearchBar/index.tsx index 8c16ee0c..57a7af19 100644 --- a/src/front/Components/DesignSystem/SearchBar/index.tsx +++ b/src/front/Components/DesignSystem/SearchBar/index.tsx @@ -1,54 +1,45 @@ -import LoopIcon from "@Assets/Icons/loop.svg"; -import Image from "next/image"; -import React from "react"; +import React, { useCallback } from "react"; -import Typography, { ETypo, ETypoColor } from "../Typography"; import classes from "./classes.module.scss"; +import { MagnifyingGlassIcon, XMarkIcon } from "@heroicons/react/24/outline"; type IProps = { onChange?: (input: string) => void; placeholder?: string; }; -type IState = { - hasValue: boolean; -}; +export default function SearchBar({ onChange, placeholder = "Rechercher" }: IProps) { + const [isFocused, setIsFocused] = React.useState(false); + const [value, setValue] = React.useState(""); -export default class SearchBar extends React.Component { - static defaultProps = { - placeholder: "Search", - }; + const changeValue = useCallback( + (value: string) => { + setValue(value); + onChange && onChange(value); + }, + [onChange], + ); - public constructor(props: IProps) { - super(props); - this.state = { - hasValue: false, - }; - this.doesInputHaveValue = this.doesInputHaveValue.bind(this); - this.onChange = this.onChange.bind(this); - } - public override render(): JSX.Element { - return ( -
- Loop icon - {!this.state.hasValue && ( - -
{this.props.placeholder}
-
- )} - + const handleOnChange = (event: React.ChangeEvent) => changeValue(event.target.value); + const handleFocus = () => setIsFocused(true); + const handleBlur = () => setIsFocused(false); + const clearValue = () => changeValue(""); + + return ( + + ); } diff --git a/src/front/Components/DesignSystem/SearchBlockList/BlockList/Block/classes.module.scss b/src/front/Components/DesignSystem/SearchBlockList/BlockList/Block/classes.module.scss new file mode 100644 index 00000000..f775beaf --- /dev/null +++ b/src/front/Components/DesignSystem/SearchBlockList/BlockList/Block/classes.module.scss @@ -0,0 +1,29 @@ +.root { + background: var(--navigation-button-background-default, #f7f8f8); + cursor: pointer; + &:hover { + background: var(--navigation-button-background-actived, #edeff1); + } + + &[data-is-active="true"] { + border-left: 3px solid var(--navigation-border, #005bcb); + background: var(--navigation-button-background-actived, #edeff1); + } + + .content { + display: flex; + padding: var(--spacing-md, 16px) var(--spacing-lg, 24px); + align-items: center; + gap: var(--spacing-sm, 8px); + + .text-container { + flex: 1; + } + } + + .separator { + width: 100%; + height: 1px; + background: var(--separator-stroke-light, #d7dce0); + } +} diff --git a/src/front/Components/DesignSystem/SearchBlockList/BlockList/Block/index.tsx b/src/front/Components/DesignSystem/SearchBlockList/BlockList/Block/index.tsx new file mode 100644 index 00000000..c9914f64 --- /dev/null +++ b/src/front/Components/DesignSystem/SearchBlockList/BlockList/Block/index.tsx @@ -0,0 +1,44 @@ +import { ChevronRightIcon } from "@heroicons/react/24/outline"; +import classes from "./classes.module.scss"; +import { useCallback } from "react"; +import { ExclamationCircleIcon } from "@heroicons/react/20/solid"; +import Typography, { ETypo, ETypoColor } from "@Front/Components/DesignSystem/Typography"; + +export type IBlock = { + id: string; + primaryText: string; + secondaryText?: string; + showAlert?: boolean; + isActive?: boolean; +}; + +type IProps = IBlock & { + hasSeparator?: boolean; + onClick?: (id: string) => void; +}; + +export default function Block(props: IProps) { + const { primaryText, secondaryText, showAlert = false, hasSeparator = true, isActive = false, onClick } = props; + + const handleOnClick = useCallback(() => onClick && onClick(props.id), [onClick, props.id]); + + return ( +
+
+
+ + {secondaryText} + + + {primaryText} + +
+ {showAlert && ( + + )} + +
+ {hasSeparator &&
} +
+ ); +} diff --git a/src/front/Components/DesignSystem/BlockList/classes.module.scss b/src/front/Components/DesignSystem/SearchBlockList/BlockList/classes.module.scss similarity index 100% rename from src/front/Components/DesignSystem/BlockList/classes.module.scss rename to src/front/Components/DesignSystem/SearchBlockList/BlockList/classes.module.scss diff --git a/src/front/Components/DesignSystem/SearchBlockList/BlockList/index.tsx b/src/front/Components/DesignSystem/SearchBlockList/BlockList/index.tsx new file mode 100644 index 00000000..ef103838 --- /dev/null +++ b/src/front/Components/DesignSystem/SearchBlockList/BlockList/index.tsx @@ -0,0 +1,23 @@ +import React, { useCallback } from "react"; +import Block, { IBlock } from "./Block"; + +type IProps = { + blocks: IBlock[]; + onSelectedBlock: (block: IBlock) => void; +}; +export default function BlockList({ blocks, onSelectedBlock }: IProps) { + const selectBlock = useCallback( + (id: string) => { + onSelectedBlock && onSelectedBlock(blocks.find((folder) => folder.id === id)!); + }, + [blocks, onSelectedBlock], + ); + + return ( +
+ {blocks.map((block) => { + return ; + })} +
+ ); +} diff --git a/src/front/Components/DesignSystem/SearchBlockList/classes.module.scss b/src/front/Components/DesignSystem/SearchBlockList/classes.module.scss new file mode 100644 index 00000000..48148e82 --- /dev/null +++ b/src/front/Components/DesignSystem/SearchBlockList/classes.module.scss @@ -0,0 +1,30 @@ +.root { + width: 336px; + height: 100%; + max-height: 100%; + + border-radius: var(--navigation-radius, 0px); + background: var(--navigation-button-background-default, #f7f8f8); + display: flex; + flex-direction: column; + justify-content: flex-start; + + .block-list { + overflow-y: auto; + ::-webkit-scrollbar { + display: none; + } + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ + } + + .searchbar { + padding: var(--spacing-md, 16px); + } + + .bottom-container { + position: fixed; + bottom: 0; + width: 336px; + } +} diff --git a/src/front/Components/DesignSystem/SearchBlockList/index.tsx b/src/front/Components/DesignSystem/SearchBlockList/index.tsx new file mode 100644 index 00000000..46434edd --- /dev/null +++ b/src/front/Components/DesignSystem/SearchBlockList/index.tsx @@ -0,0 +1,69 @@ +import { useCallback, useEffect, useRef, useState } from "react"; +import BlockList from "./BlockList"; +import { IBlock } from "./BlockList/Block"; +import classes from "./classes.module.scss"; +import SearchBar from "../SearchBar"; +import Button from "../Button"; +import Link from "next/link"; + +type IProps = { + blocks: IBlock[]; + onSelectedBlock: (block: IBlock) => void; + bottomButton?: { + text: string; + link: string; + }; +}; +export default function SearchBlockList(props: IProps) { + const { blocks, onSelectedBlock, bottomButton } = props; + + const [blocksShowing, setBlocksShowing] = useState(blocks); + const bottomButtonRef = useRef(null); + const searchBarRef = useRef(null); + const handleSearchChange = useCallback( + (value: string) => { + const filteredBlocks = blocks.filter((block) => { + const name = block.primaryText.toLowerCase(); + const number = block.secondaryText?.toLowerCase(); + value = value.toLowerCase(); + return name.includes(value) || number?.includes(value); + }); + setBlocksShowing(filteredBlocks); + }, + [blocks], + ); + + const getHeight = useCallback(() => { + let heightToSubstract = 0; + if (bottomButton && bottomButtonRef.current) { + heightToSubstract += bottomButtonRef.current.clientHeight; + } + if (searchBarRef.current) { + heightToSubstract += searchBarRef.current.clientHeight; + } + + return { + maxHeight: `calc(100% - ${heightToSubstract}px)`, + }; + }, [bottomButton]); + + useEffect(() => { + setBlocksShowing(blocks); + }, [blocks]); + + return ( +
+
+ +
+
+ +
+ {bottomButton && ( + + + + )} +
+ ); +} diff --git a/src/front/Components/DesignSystem/Typography/index.tsx b/src/front/Components/DesignSystem/Typography/index.tsx index 8c5e87b1..17db7964 100644 --- a/src/front/Components/DesignSystem/Typography/index.tsx +++ b/src/front/Components/DesignSystem/Typography/index.tsx @@ -28,25 +28,25 @@ export enum ETypo { TEXT_LG_SEMIBOLD = "text-lg-semibold", TEXT_LG_REGULAR = "text-lg-regular", TEXT_LG_UPPERCASE = "text-lg-uppercase", - TEXT_LG_light = "text-lg-light", + TEXT_LG_LIGHT = "text-lg-light", TEXT_MD_BOLD = "text-md-bold", TEXT_MD_SEMIBOLD = "text-md-semibold", TEXT_MD_REGULAR = "text-md-regular", TEXT_MD_UPPERCASE = "text-md-uppercase", - TEXT_MD_light = "text-md-light", + TEXT_MD_LIGHT = "text-md-light", TEXT_SM_BOLD = "text-sm-bold", TEXT_SM_SEMIBOLD = "text-sm-semibold", TEXT_SM_REGULAR = "text-sm-regular", TEXT_SM_UPPERCASE = "text-sm-uppercase", - TEXT_SM_light = "text-sm-light", + TEXT_SM_LIGHT = "text-sm-light", TEXT_XS_BOLD = "text-xs-bold", TEXT_XS_SEMIBOLD = "text-xs-semibold", TEXT_XS_REGULAR = "text-xs-regular", TEXT_XS_UPPERCASE = "text-xs-uppercase", - TEXT_XS_light = "text-xs-light", + TEXT_XS_LIGHT = "text-xs-light", CAPTION_BOLD = "caption-bold", CAPTION_SEMIBOLD = "caption-semibold", @@ -153,6 +153,7 @@ export enum ETypoColor { CONTRAST_DEFAULT = "--contrast-default", CONTRAST_HOVERED = "--contrast-hovered", ERROR_WEAK_CONTRAST = "--error-weak-contrast", + NAVIGATION_BUTTON_CONTRAST_DEFAULT = "--navigation-button-contrast-default", } export default function Typography(props: IProps) { diff --git a/src/front/Components/LayoutTemplates/DefaultCollaboratorDashboard/CollaboratorListContainer/index.tsx b/src/front/Components/LayoutTemplates/DefaultCollaboratorDashboard/CollaboratorListContainer/index.tsx index 792c377e..9df33274 100644 --- a/src/front/Components/LayoutTemplates/DefaultCollaboratorDashboard/CollaboratorListContainer/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultCollaboratorDashboard/CollaboratorListContainer/index.tsx @@ -3,9 +3,10 @@ import React, { useCallback, useState } from "react"; import classes from "./classes.module.scss"; import SearchBar from "@Front/Components/DesignSystem/SearchBar"; import User from "le-coffre-resources/dist/Notary"; -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import { useRouter } from "next/router"; import Module from "@Front/Config/Module"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; type IProps = { collaborators: User[]; @@ -50,7 +51,7 @@ export default function CollaboratorListContainer(props: IProps) { { return { - name: user.contact?.first_name + " " + user.contact?.last_name, + primaryText: user.contact?.first_name + " " + user.contact?.last_name, id: user.uid!, selected: user.uid === collaboratorUid, rightIcon: user.seats?.some((seat) => new Date(seat.subscription!.end_date) >= new Date()) ? ( diff --git a/src/front/Components/LayoutTemplates/DefaultDeedTypeDashboard/DeedTypeListContainer/index.tsx b/src/front/Components/LayoutTemplates/DefaultDeedTypeDashboard/DeedTypeListContainer/index.tsx index a4889258..6dc34c85 100644 --- a/src/front/Components/LayoutTemplates/DefaultDeedTypeDashboard/DeedTypeListContainer/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultDeedTypeDashboard/DeedTypeListContainer/index.tsx @@ -1,5 +1,4 @@ import DeedTypes from "@Front/Api/LeCoffreApi/Admin/DeedTypes/DeedTypes"; -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import Button from "@Front/Components/DesignSystem/Button"; import SearchBar from "@Front/Components/DesignSystem/SearchBar"; import Module from "@Front/Config/Module"; @@ -9,6 +8,8 @@ import { useRouter } from "next/router"; import React, { useCallback, useState } from "react"; import classes from "./classes.module.scss"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; type IProps = { deedTypes: DeedType[]; @@ -50,7 +51,7 @@ export default function DeedListContainer(props: IProps) { { return { - name: deed.name, + primaryText: deed.name, id: deed.uid!, selected: deedTypeUid === deed.uid, }; diff --git a/src/front/Components/LayoutTemplates/DefaultDocumentTypesDashboard/DocumentTypeListContainer/index.tsx b/src/front/Components/LayoutTemplates/DefaultDocumentTypesDashboard/DocumentTypeListContainer/index.tsx index ada6b7a7..3e41b785 100644 --- a/src/front/Components/LayoutTemplates/DefaultDocumentTypesDashboard/DocumentTypeListContainer/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultDocumentTypesDashboard/DocumentTypeListContainer/index.tsx @@ -1,4 +1,3 @@ -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import Button from "@Front/Components/DesignSystem/Button"; import SearchBar from "@Front/Components/DesignSystem/SearchBar"; import Module from "@Front/Config/Module"; @@ -8,6 +7,8 @@ import { useRouter } from "next/router"; import React, { useCallback, useState } from "react"; import classes from "./classes.module.scss"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; type IProps = { documentTypes: DocumentType[]; @@ -49,7 +50,7 @@ export default function DocumentTypeListContainer(props: IProps) { { return { - name: documentType.name, + primaryText: documentType.name, id: documentType.uid!, selected: documentType.uid === documentTypeUid, }; diff --git a/src/front/Components/LayoutTemplates/DefaultOfficeDashboard/OfficeListContainer/index.tsx b/src/front/Components/LayoutTemplates/DefaultOfficeDashboard/OfficeListContainer/index.tsx index fec898d0..b6db9a28 100644 --- a/src/front/Components/LayoutTemplates/DefaultOfficeDashboard/OfficeListContainer/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultOfficeDashboard/OfficeListContainer/index.tsx @@ -1,4 +1,3 @@ -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import SearchBar from "@Front/Components/DesignSystem/SearchBar"; import Module from "@Front/Config/Module"; import { Office } from "le-coffre-resources/dist/SuperAdmin"; @@ -6,6 +5,8 @@ import { useRouter } from "next/router"; import React, { useCallback, useState } from "react"; import classes from "./classes.module.scss"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; type IProps = { offices: Office[]; @@ -49,7 +50,7 @@ export default function OfficeListContainer(props: IProps) { { return { - name: office.crpcen + " - " + office.name, + primaryText: office.crpcen + " - " + office.name, id: office.uid!, selected: office.uid === officeUid, }; diff --git a/src/front/Components/LayoutTemplates/DefaultRoleDashboard/RoleListContainer/index.tsx b/src/front/Components/LayoutTemplates/DefaultRoleDashboard/RoleListContainer/index.tsx index 1f52f6fb..1ee4c395 100644 --- a/src/front/Components/LayoutTemplates/DefaultRoleDashboard/RoleListContainer/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultRoleDashboard/RoleListContainer/index.tsx @@ -1,4 +1,3 @@ -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import SearchBar from "@Front/Components/DesignSystem/SearchBar"; import Module from "@Front/Config/Module"; import { OfficeRole } from "le-coffre-resources/dist/Admin"; @@ -8,6 +7,8 @@ import React, { useCallback, useState } from "react"; import classes from "./classes.module.scss"; import Link from "next/link"; import Button from "@Front/Components/DesignSystem/Button"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; type IProps = { roles: OfficeRole[]; @@ -55,7 +56,7 @@ export default function RoleListContainer(props: IProps) { }) .map((role) => { return { - name: role.name, + primaryText: role.name, id: role.uid!, selected: role.uid === roleUid, }; diff --git a/src/front/Components/LayoutTemplates/DefaultUserDashboard/UserListContainer/index.tsx b/src/front/Components/LayoutTemplates/DefaultUserDashboard/UserListContainer/index.tsx index 8128b38d..f543cba6 100644 --- a/src/front/Components/LayoutTemplates/DefaultUserDashboard/UserListContainer/index.tsx +++ b/src/front/Components/LayoutTemplates/DefaultUserDashboard/UserListContainer/index.tsx @@ -1,4 +1,3 @@ -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import SearchBar from "@Front/Components/DesignSystem/SearchBar"; import Module from "@Front/Config/Module"; import User from "le-coffre-resources/dist/Notary"; @@ -6,6 +5,8 @@ import { useRouter } from "next/router"; import React, { useCallback, useState } from "react"; import classes from "./classes.module.scss"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; type IProps = { users: User[]; @@ -50,7 +51,7 @@ export default function UserListContainer(props: IProps) { { return { - name: user.contact?.first_name + " " + user.contact?.last_name, + primaryText: user.contact?.first_name + " " + user.contact?.last_name, id: user.uid!, selected: user.uid === userUid, }; diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/DeleteCustomerModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/DeleteCustomerModal/index.tsx index bdf407d9..7ea02fc7 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/DeleteCustomerModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/DeleteCustomerModal/index.tsx @@ -24,7 +24,7 @@ export default function DeleteCustomerModal(props: IProps) { title={"Êtes-vous sûr de vouloir supprimer ce client du dossier ?"} firstButton={{ children: "Annuler", onClick: onClose }} secondButton={{ children: "Supprimer le client", onClick: handleDelete }}> - + Cette action retirera le client de ce dossier. Vous ne pourrez plus récupérer les informations associées à ce client dans ce dossier une fois supprimées. 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 c0d1fd86..4cd16cce 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/ClientBox/index.tsx @@ -131,7 +131,7 @@ export default function ClientBox(props: IProps) { onClose={closeErrorModal} title={"Suppression impossible"} secondButton={{ children: "Fermer", onClick: closeErrorModal, fullwidth: true }}> - + Ce client ne peut pas être supprimé car des documents sont associés à son dossier. Veuillez d'abord gérer ou supprimer ces documents avant de tenter de supprimer le client. diff --git a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/DeleteAskedDocumentModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/DeleteAskedDocumentModal/index.tsx index 901780d9..731bb4c9 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/DeleteAskedDocumentModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/ClientView/DocumentTables/DeleteAskedDocumentModal/index.tsx @@ -31,7 +31,7 @@ export default function DeleteAskedDocumentModal(props: IProps) { title={"Êtes-vous sûr de vouloir supprimer cette demande de document ?"} firstButton={{ children: "Annuler", onClick: onClose }} secondButton={{ children: "Supprimer la demande", onClick: onDelete }}> - Cette action annulera la demande du document en cours. + Cette action annulera la demande du document en cours. ); } diff --git a/src/front/Components/Layouts/Folder/FolderInformation/NoClientView/DeleteFolderModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/NoClientView/DeleteFolderModal/index.tsx index 814f5d56..cf50489f 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/NoClientView/DeleteFolderModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/NoClientView/DeleteFolderModal/index.tsx @@ -34,7 +34,7 @@ export default function DeleteFolderModal(props: IProps) { title={"Êtes-vous sûr de vouloir supprimer ce dossier ?"} firstButton={{ children: "Annuler", onClick: onClose }} secondButton={{ children: "Supprimer le dossier", onClick: onDelete }}> - + Cette action est irréversible. En supprimant ce dossier, toutes les informations associées seront définitivement perdues. diff --git a/src/front/Components/Layouts/Folder/FolderInformation/elements/AnchoringModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/elements/AnchoringModal/index.tsx index 071ddc34..24cbecf9 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/elements/AnchoringModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/elements/AnchoringModal/index.tsx @@ -44,13 +44,13 @@ export default function AnchoringModal(props: IProps) { firstButton={!isAnchoring ? { children: "Non, Annuler", onClick: onClose } : undefined} secondButton={!isAnchoring ? { children: "Oui, certifier et ancrer", onClick: anchor } : undefined}> {!isAnchoring ? ( - + La certification et l'ancrage de ce dossier dans la blockchain sont des actions définitives et garantiront la sécurité et l'authenticité de tous les documents. Veuillez confirmer que vous souhaitez continuer. ) : (
- + Vos documents sont en train d'être ancrés dans la blockchain. Cela peut prendre quelques instants. Merci de votre patience. diff --git a/src/front/Components/Layouts/Folder/FolderInformation/elements/ArchiveModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/elements/ArchiveModal/index.tsx index 177ddf8e..ff1c6621 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/elements/ArchiveModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/elements/ArchiveModal/index.tsx @@ -37,7 +37,7 @@ export default function ArchiveModal(props: IProps) { firstButton={{ children: "Annuler", onClick: onClose }} secondButton={{ children: "Archiver le dossier", onClick: archive }}>
- + Archiver ce dossier le déplacera dans la section des dossiers archivés. Vous pouvez ajouter une note de dossier avant d'archiver si vous le souhaitez. diff --git a/src/front/Components/Layouts/Folder/FolderInformation/elements/DownloadAnchoringProofModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/elements/DownloadAnchoringProofModal/index.tsx index 910076a4..e9bd477a 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/elements/DownloadAnchoringProofModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/elements/DownloadAnchoringProofModal/index.tsx @@ -38,7 +38,7 @@ export default function DownloadAnchoringProofModal(props: IProps) { title={"Félicitations ! Dossier ancré avec succès"} firstButton={{ children: "Fermer", onClick: onClose }} secondButton={{ children: "Télécharger la preuve d’ancrage", onClick: downloadAnchoringProof }}> - + Votre dossier a été validé et ancré dans la blockchain. Vous pouvez maintenant télécharger la preuve d'ancrage pour vos archives. diff --git a/src/front/Components/Layouts/Folder/FolderInformation/elements/RequireAnchoringModal/index.tsx b/src/front/Components/Layouts/Folder/FolderInformation/elements/RequireAnchoringModal/index.tsx index d6273927..26e41eee 100644 --- a/src/front/Components/Layouts/Folder/FolderInformation/elements/RequireAnchoringModal/index.tsx +++ b/src/front/Components/Layouts/Folder/FolderInformation/elements/RequireAnchoringModal/index.tsx @@ -23,7 +23,7 @@ export default function RequireAnchoringModal(props: IProps) { title={"Archiver le dossier, action requise : Ancrer et certifier le dossier"} firstButton={{ children: "Annuler", onClick: onClose }} secondButton={{ children: "Ancrer le dossier", onClick: onAnchor }}> - + Pour archiver ce dossier, il est nécessaire de l'ancrer dans la blockchain afin de garantir la sécurité et l'authenticité des documents. Veuillez procéder à l'ancrage avant de continuer. diff --git a/src/front/Components/Layouts/SelectFolder/index.tsx b/src/front/Components/Layouts/SelectFolder/index.tsx index e40b2a82..5d84f4bb 100644 --- a/src/front/Components/Layouts/SelectFolder/index.tsx +++ b/src/front/Components/Layouts/SelectFolder/index.tsx @@ -1,5 +1,4 @@ import Folders from "@Front/Api/LeCoffreApi/Customer/Folders/Folders"; -import BlockList, { IBlock } from "@Front/Components/DesignSystem/BlockList"; import Typography, { ETypo } from "@Front/Components/DesignSystem/Typography"; import DefaultDoubleSidePage from "@Front/Components/LayoutTemplates/DefaultDoubleSidePage"; import JwtService from "@Front/Services/JwtService/JwtService"; @@ -9,6 +8,8 @@ import { useCallback, useEffect, useState } from "react"; import LandingImage from "../Login/landing-connect.jpeg"; import classes from "./classes.module.scss"; +import { IBlock } from "@Front/Components/DesignSystem/SearchBlockList/BlockList/Block"; +import BlockList from "@Front/Components/DesignSystem/SearchBlockList/BlockList"; export default function SelectFolder() { const [folders, setFolders] = useState([]); @@ -66,7 +67,7 @@ export default function SelectFolder() { blocks={folders.map((folder) => { return { id: folder.uid!, - name: folder.name!, + primaryText: folder.name!, selected: false, }; })}