Only one user folder opened working

This commit is contained in:
Maxime Lalo 2023-05-05 14:34:32 +02:00
parent 528293430c
commit 84e049ce9d
2 changed files with 14 additions and 54 deletions

View File

@ -22,12 +22,10 @@ type IProps = {
folder: IDashBoardFolder; folder: IDashBoardFolder;
isArchived?: boolean; isArchived?: boolean;
isOpened: boolean; isOpened: boolean;
onOpen: (id: string) => void; onChange: (id: string) => void;
onClose: () => void;
}; };
type IState = { type IState = {
isOpenDeletionModal: boolean; isOpenDeletionModal: boolean;
willClose: boolean;
}; };
export default class UserFolder extends React.Component<IProps, IState> { export default class UserFolder extends React.Component<IProps, IState> {
@ -41,13 +39,10 @@ export default class UserFolder extends React.Component<IProps, IState> {
super(props); super(props);
this.state = { this.state = {
isOpenDeletionModal: false, isOpenDeletionModal: false,
willClose: false,
}; };
this.toggleOpen = this.toggleOpen.bind(this);
this.closeDeletionModal = this.closeDeletionModal.bind(this); this.closeDeletionModal = this.closeDeletionModal.bind(this);
this.openDeletionModal = this.openDeletionModal.bind(this); this.openDeletionModal = this.openDeletionModal.bind(this);
this.openComponent = this.openComponent.bind(this); this.changeUserFolder = this.changeUserFolder.bind(this);
this.closeComponent = this.closeComponent.bind(this);
} }
public override render(): JSX.Element { public override render(): JSX.Element {
const documentsAsked: Document[] | null = this.getDocumentsByStatus("ASKED"); const documentsAsked: Document[] | null = this.getDocumentsByStatus("ASKED");
@ -67,7 +62,7 @@ export default class UserFolder extends React.Component<IProps, IState> {
Êtes-vous vous de vouloir supprimer la demande de document ? Êtes-vous vous de vouloir supprimer la demande de document ?
</Confirm> </Confirm>
<div className={classes["header"]} onClick={this.toggleOpen}> <div className={classes["header"]} onClick={this.changeUserFolder}>
<UserFolderHeader <UserFolderHeader
customer={this.props.customer} customer={this.props.customer}
folder={this.props.folder} folder={this.props.folder}
@ -77,12 +72,12 @@ export default class UserFolder extends React.Component<IProps, IState> {
src={ChevronIcon} src={ChevronIcon}
alt="chevron open close" alt="chevron open close"
className={classNames(classes["chevron-icon"], this.props.isOpened && classes["open"])} className={classNames(classes["chevron-icon"], this.props.isOpened && classes["open"])}
onClick={this.toggleOpen} onClick={this.changeUserFolder}
/> />
</div> </div>
{this.props.isOpened && ( {this.props.isOpened && (
<div className={classes["container"]} data-will-close={this.state.willClose.toString()} ref={this.rootRefElement}> <div className={classes["container"]} ref={this.rootRefElement}>
<QuantityProgressBar <QuantityProgressBar
title="Complétion du dossier client" title="Complétion du dossier client"
total={100} total={100}
@ -123,17 +118,8 @@ export default class UserFolder extends React.Component<IProps, IState> {
public override componentDidUpdate(prevProps: IProps): void { public override componentDidUpdate(prevProps: IProps): void {
this.rootRefElement.current?.style.setProperty("--animation-delay", this.props.animationDelay!.toString().concat("ms")); this.rootRefElement.current?.style.setProperty("--animation-delay", this.props.animationDelay!.toString().concat("ms"));
if(prevProps.isOpened !== this.props.isOpened) {
if(this.props.isOpened) {
this.openComponent();
}else{
this.closeComponent();
}
}
} }
private calculateDocumentsPercentageProgress(): number { private calculateDocumentsPercentageProgress(): number {
if (!this.props.customer.documents) return 0; if (!this.props.customer.documents) return 0;
const totalDocuments: number = this.props.customer.documents.length; const totalDocuments: number = this.props.customer.documents.length;
@ -165,27 +151,9 @@ export default class UserFolder extends React.Component<IProps, IState> {
// return this.props.customer.documents.filter((document) => !documentToExclude.includes(document)); // return this.props.customer.documents.filter((document) => !documentToExclude.includes(document));
// } // }
private toggleOpen(): void {
if (this.props.isOpened) {
this.closeComponent();
} else {
this.openComponent();
}
}
private openComponent(): void { private changeUserFolder(){
this.props.onOpen(this.props.folder.uid!); this.props.onChange(this.props.customer.uid!);
}
private closeComponent(): void {
if (this.state.willClose) return;
this.setState({ willClose: true });
window.setTimeout(() => {
this.props.onClose();
this.setState({
willClose: false,
});
}, this.props.animationDelay);
} }
private openDeletionModal(uid?: string): void { private openDeletionModal(uid?: string): void {

View File

@ -23,8 +23,7 @@ export default class ClientSection extends React.Component<IProps, IState> {
openedCustomer: "", openedCustomer: "",
}; };
this.selectUserFolder = this.selectUserFolder.bind(this); this.changeUserFolder = this.changeUserFolder.bind(this);
this.closeUserFolder = this.closeUserFolder.bind(this);
} }
public override render(): JSX.Element { public override render(): JSX.Element {
@ -63,15 +62,13 @@ export default class ClientSection extends React.Component<IProps, IState> {
private renderCustomerFolders() { private renderCustomerFolders() {
const output = this.props.folder.office_folder_has_customers?.map((folderHasCustomer, index) => { const output = this.props.folder.office_folder_has_customers?.map((folderHasCustomer, index) => {
if (!folderHasCustomer.customer) return null; 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 (
<UserFolder <UserFolder
folder={this.props.folder} folder={this.props.folder}
customer={folderHasCustomer.customer} customer={folderHasCustomer.customer}
key={this.props.folder.uid} key={folderHasCustomer.customer.uid}
isOpened={this.state.openedCustomer === this.props.folder.uid} isOpened={this.state.openedCustomer === folderHasCustomer.customer.uid}
onOpen={this.selectUserFolder} onChange={this.changeUserFolder}
onClose={this.closeUserFolder}
/> />
); );
}); });
@ -79,15 +76,10 @@ export default class ClientSection extends React.Component<IProps, IState> {
} }
private closeUserFolder() { private changeUserFolder(uid: string) {
console.log("changeUserFolder", uid)
this.setState({ this.setState({
openedCustomer: "", openedCustomer: uid === this.state.openedCustomer ? "" : uid,
});
}
private selectUserFolder(index: string) {
this.setState({
openedCustomer: index,
}); });
} }