Merge branch 'dev' into staging
This commit is contained in:
commit
c54afbe454
@ -46,13 +46,18 @@ export default function RoleListContainer(props: IProps) {
|
|||||||
</div>
|
</div>
|
||||||
<div className={classes["folderlist-container"]}>
|
<div className={classes["folderlist-container"]}>
|
||||||
<BlockList
|
<BlockList
|
||||||
blocks={filteredRoles.map((role) => {
|
blocks={filteredRoles
|
||||||
return {
|
.filter((role) => {
|
||||||
name: role.name,
|
if (role.name === "admin") return false;
|
||||||
id: role.uid!,
|
return true;
|
||||||
selected: role.uid === roleUid,
|
})
|
||||||
};
|
.map((role) => {
|
||||||
})}
|
return {
|
||||||
|
name: role.name,
|
||||||
|
id: role.uid!,
|
||||||
|
selected: role.uid === roleUid,
|
||||||
|
};
|
||||||
|
})}
|
||||||
onSelectedBlock={onSelectedBlock}
|
onSelectedBlock={onSelectedBlock}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -178,7 +178,9 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
<SelectField
|
<SelectField
|
||||||
placeholder="Rôle"
|
placeholder="Rôle"
|
||||||
name="role"
|
name="role"
|
||||||
options={availableRoles}
|
options={availableRoles.filter((role) => {
|
||||||
|
return role.label !== "admin";
|
||||||
|
})}
|
||||||
selectedOption={selectedOption!}
|
selectedOption={selectedOption!}
|
||||||
onChange={handleRoleChange}
|
onChange={handleRoleChange}
|
||||||
disabled={userSelected?.role?.name === "super-admin"}
|
disabled={userSelected?.role?.name === "super-admin"}
|
||||||
|
@ -3,18 +3,22 @@ import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
|||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
import JwtService from "@Front/Services/JwtService/JwtService";
|
import JwtService from "@Front/Services/JwtService/JwtService";
|
||||||
import { DeedType, Office } from "le-coffre-resources/dist/Admin";
|
import { DeedType, Office } from "le-coffre-resources/dist/Admin";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { useCallback } from "react";
|
import { useCallback, useState } from "react";
|
||||||
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
type IProps = {};
|
type IProps = {};
|
||||||
export default function DeedTypesCreate(props: IProps) {
|
export default function DeedTypesCreate(props: IProps) {
|
||||||
|
const [hasChanged, setHasChanged] = useState<boolean>(false);
|
||||||
|
const [isConfirmModalVisible, setIsConfirmModalVisible] = useState<boolean>(false);
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const onSubmitHandler = useCallback(
|
const onSubmitHandler = useCallback(
|
||||||
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
||||||
@ -42,20 +46,58 @@ export default function DeedTypesCreate(props: IProps) {
|
|||||||
[router],
|
[router],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const closeConfirmModal = useCallback(() => {
|
||||||
|
setIsConfirmModalVisible(false);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const onFieldChange = useCallback((name: string, field: any) => {
|
||||||
|
setHasChanged(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const redirect = useCallback(() => {
|
||||||
|
router.push(
|
||||||
|
Module.getInstance()
|
||||||
|
.get()
|
||||||
|
.modules.pages.DeedTypes.props.path
|
||||||
|
);
|
||||||
|
}, [router]);
|
||||||
|
|
||||||
|
const onCancel = useCallback(() => {
|
||||||
|
if (hasChanged) {
|
||||||
|
setIsConfirmModalVisible(true);
|
||||||
|
} else {
|
||||||
|
redirect();
|
||||||
|
}
|
||||||
|
}, [hasChanged, redirect]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Créer un type d'acte">
|
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Créer un type d'acte">
|
||||||
<div className={classes["root"]}>
|
<div className={classes["root"]}>
|
||||||
<div className={classes["header"]}>
|
<div className={classes["header"]}>
|
||||||
<Typography typo={ITypo.H1Bis}>Créer un type d'acte</Typography>
|
<Typography typo={ITypo.H1Bis}>Créer un type d'acte</Typography>
|
||||||
</div>
|
</div>
|
||||||
<Form onSubmit={onSubmitHandler} className={classes["form-container"]}>
|
<Form onSubmit={onSubmitHandler} className={classes["form-container"]} onFieldChange={onFieldChange}>
|
||||||
<TextField name="name" placeholder="Nom de l'acte" />
|
<TextField name="name" placeholder="Nom de l'acte" />
|
||||||
<TextAreaField name="description" placeholder="Description" />
|
<TextAreaField name="description" placeholder="Description" />
|
||||||
<div className={classes["buttons-container"]}>
|
<div className={classes["buttons-container"]}>
|
||||||
<Button variant={EButtonVariant.GHOST}>Annuler</Button>
|
<Button variant={EButtonVariant.GHOST} onClick={onCancel}>Annuler</Button>
|
||||||
<Button type="submit">Créer le type d'acte</Button>
|
<Button type="submit">Créer le type d'acte</Button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
|
<Confirm
|
||||||
|
isOpen={isConfirmModalVisible}
|
||||||
|
onClose={closeConfirmModal}
|
||||||
|
onAccept={redirect}
|
||||||
|
closeBtn
|
||||||
|
header={"Êtes-vous sur de vouloir quitter sans enregistrer ?"}
|
||||||
|
cancelText={"Annuler"}
|
||||||
|
confirmText={"Quitter"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Si vous quittez, toutes les modifications que vous avez effectuées ne seront pas enregistrées.
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultDeedTypesDashboard>
|
</DefaultDeedTypesDashboard>
|
||||||
);
|
);
|
||||||
|
@ -3,6 +3,7 @@ import Button, { EButtonVariant } from "@Front/Components/DesignSystem/Button";
|
|||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
import TextAreaField from "@Front/Components/DesignSystem/Form/TextareaField";
|
||||||
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
import TextField from "@Front/Components/DesignSystem/Form/TextField";
|
||||||
|
import Confirm from "@Front/Components/DesignSystem/Modal/Confirm";
|
||||||
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
import Typography, { ITypo } from "@Front/Components/DesignSystem/Typography";
|
||||||
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
import DefaultDeedTypesDashboard from "@Front/Components/LayoutTemplates/DefaultDeedTypeDashboard";
|
||||||
import Module from "@Front/Config/Module";
|
import Module from "@Front/Config/Module";
|
||||||
@ -17,8 +18,11 @@ export default function DeedTypesEdit() {
|
|||||||
let { deedTypeUid } = router.query;
|
let { deedTypeUid } = router.query;
|
||||||
|
|
||||||
const [deedTypeSelected, setDeedTypeSelected] = useState<DeedType | null>(null);
|
const [deedTypeSelected, setDeedTypeSelected] = useState<DeedType | null>(null);
|
||||||
|
const [hasChanged, setHasChanged] = useState<boolean>(false);
|
||||||
|
const [isConfirmModalVisible, setIsConfirmModalVisible] = useState<boolean>(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
setHasChanged(false);
|
||||||
async function getDeedType() {
|
async function getDeedType() {
|
||||||
if (!deedTypeUid) return;
|
if (!deedTypeUid) return;
|
||||||
const deedType = await DeedTypes.getInstance().getByUid(deedTypeUid as string, {
|
const deedType = await DeedTypes.getInstance().getByUid(deedTypeUid as string, {
|
||||||
@ -32,6 +36,10 @@ export default function DeedTypesEdit() {
|
|||||||
getDeedType();
|
getDeedType();
|
||||||
}, [deedTypeUid]);
|
}, [deedTypeUid]);
|
||||||
|
|
||||||
|
const closeConfirmModal = useCallback(() => {
|
||||||
|
setIsConfirmModalVisible(false);
|
||||||
|
}, []);
|
||||||
|
|
||||||
const onSubmitHandler = useCallback(
|
const onSubmitHandler = useCallback(
|
||||||
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
||||||
try {
|
try {
|
||||||
@ -55,20 +63,56 @@ export default function DeedTypesEdit() {
|
|||||||
[deedTypeUid, router],
|
[deedTypeUid, router],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const onFieldChange = useCallback((name: string, field: any) => {
|
||||||
|
setHasChanged(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const redirect = useCallback(() => {
|
||||||
|
router.push(
|
||||||
|
Module.getInstance()
|
||||||
|
.get()
|
||||||
|
.modules.pages.DeedTypes.pages.DeedTypesInformations.props.path.replace("[uid]", deedTypeUid as string),
|
||||||
|
);
|
||||||
|
}, [deedTypeUid, router]);
|
||||||
|
|
||||||
|
const onCancel = useCallback(() => {
|
||||||
|
if (hasChanged) {
|
||||||
|
setIsConfirmModalVisible(true);
|
||||||
|
} else {
|
||||||
|
redirect();
|
||||||
|
}
|
||||||
|
}, [hasChanged, redirect]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Modifier les informations d'un acte">
|
<DefaultDeedTypesDashboard mobileBackText={"Liste des types d'actes"} hasBackArrow title="Modifier les informations d'un acte">
|
||||||
<div className={classes["root"]}>
|
<div className={classes["root"]}>
|
||||||
<div className={classes["header"]}>
|
<div className={classes["header"]}>
|
||||||
<Typography typo={ITypo.H1Bis}>Modifier les informations de l'acte</Typography>
|
<Typography typo={ITypo.H1Bis}>Modifier les informations de l'acte</Typography>
|
||||||
</div>
|
</div>
|
||||||
<Form onSubmit={onSubmitHandler} className={classes["form-container"]}>
|
<Form onSubmit={onSubmitHandler} className={classes["form-container"]} onFieldChange={onFieldChange}>
|
||||||
<TextField name="name" placeholder="Nom de l'acte" defaultValue={deedTypeSelected?.name} />
|
<TextField name="name" placeholder="Nom de l'acte" defaultValue={deedTypeSelected?.name} />
|
||||||
<TextAreaField name="description" placeholder="Description" defaultValue={deedTypeSelected?.description} />
|
<TextAreaField name="description" placeholder="Description" defaultValue={deedTypeSelected?.description} />
|
||||||
<div className={classes["buttons-container"]}>
|
<div className={classes["buttons-container"]}>
|
||||||
<Button variant={EButtonVariant.GHOST}>Annuler</Button>
|
<Button variant={EButtonVariant.GHOST} onClick={onCancel}>
|
||||||
|
Annuler
|
||||||
|
</Button>
|
||||||
<Button type="submit">Enregistrer</Button>
|
<Button type="submit">Enregistrer</Button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
|
<Confirm
|
||||||
|
isOpen={isConfirmModalVisible}
|
||||||
|
onClose={closeConfirmModal}
|
||||||
|
onAccept={redirect}
|
||||||
|
closeBtn
|
||||||
|
header={"Êtes-vous sur de vouloir quitter sans enregistrer ?"}
|
||||||
|
cancelText={"Annuler"}
|
||||||
|
confirmText={"Quitter"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
Si vous quittez, toutes les modifications que vous avez effectuées ne seront pas enregistrées.
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultDeedTypesDashboard>
|
</DefaultDeedTypesDashboard>
|
||||||
);
|
);
|
||||||
|
@ -142,6 +142,9 @@ export default function OfficeInformations(props: IProps) {
|
|||||||
if (!user.office_role && user.role?.name === "admin") {
|
if (!user.office_role && user.role?.name === "admin") {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (!user.office_role && user.role?.name === "super-admin") {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
.map((user) => {
|
.map((user) => {
|
||||||
@ -173,13 +176,16 @@ export default function OfficeInformations(props: IProps) {
|
|||||||
</div>
|
</div>
|
||||||
{officeSelected?.users
|
{officeSelected?.users
|
||||||
?.filter((user) => {
|
?.filter((user) => {
|
||||||
if (user.office_role && user.office_role.name !== "admin") {
|
if (user.office_role && user.office_role.name === "admin") {
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
if (!user.office_role && user.role?.name !== "admin") {
|
if (!user.office_role && user.role?.name === "admin") {
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
return false;
|
if (!user.office_role && user.role?.name === "super-admin") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
})
|
})
|
||||||
.map((user) => {
|
.map((user) => {
|
||||||
return renderUser(user);
|
return renderUser(user);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user