✨ Validation popup on rules modifying
This commit is contained in:
parent
6a091581f7
commit
d307869633
@ -163,6 +163,7 @@ export default function CollaboratorInformations(props: IProps) {
|
|||||||
label: "Nommer administrateur de l'office",
|
label: "Nommer administrateur de l'office",
|
||||||
}}
|
}}
|
||||||
toolTip="blabla"
|
toolTip="blabla"
|
||||||
|
checked={userSelected?.office_role?.name! === "admin"}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -158,7 +158,7 @@ export default function DeedTypesInformations(props: IProps) {
|
|||||||
</div>
|
</div>
|
||||||
<div className={classes["delete-container"]}>
|
<div className={classes["delete-container"]}>
|
||||||
<Button variant={EButtonVariant.GHOST} onClick={openDeleteModal}>
|
<Button variant={EButtonVariant.GHOST} onClick={openDeleteModal}>
|
||||||
Archiver
|
Supprimer
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
<Confirm
|
<Confirm
|
||||||
@ -166,12 +166,12 @@ export default function DeedTypesInformations(props: IProps) {
|
|||||||
onClose={closeDeleteModal}
|
onClose={closeDeleteModal}
|
||||||
onAccept={deleteDeedType}
|
onAccept={deleteDeedType}
|
||||||
closeBtn
|
closeBtn
|
||||||
header={"Archiver le type d'acte ?"}
|
header={"Supprimer le type d'acte ?"}
|
||||||
confirmText={"Valider"}
|
confirmText={"Valider"}
|
||||||
cancelText={"Annuler"}>
|
cancelText={"Annuler"}>
|
||||||
<div className={classes["modal-content"]}>
|
<div className={classes["modal-content"]}>
|
||||||
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
Êtes-vous sûr de vouloir archiver ce type d'acte ?
|
Êtes-vous sûr de vouloir supprimer ce type d'acte ?
|
||||||
</Typography>
|
</Typography>
|
||||||
</div>
|
</div>
|
||||||
</Confirm>
|
</Confirm>
|
||||||
|
@ -3,11 +3,13 @@ import Rules from "@Front/Api/LeCoffreApi/Admin/Rules/Rules";
|
|||||||
import Button from "@Front/Components/DesignSystem/Button";
|
import Button from "@Front/Components/DesignSystem/Button";
|
||||||
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
import CheckBox from "@Front/Components/DesignSystem/CheckBox";
|
||||||
import Form from "@Front/Components/DesignSystem/Form";
|
import Form from "@Front/Components/DesignSystem/Form";
|
||||||
|
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 DefaultRoleDashboard from "@Front/Components/LayoutTemplates/DefaultRoleDashboard";
|
import DefaultRoleDashboard from "@Front/Components/LayoutTemplates/DefaultRoleDashboard";
|
||||||
import { Role, Rule } from "le-coffre-resources/dist/Admin";
|
import { Role, Rule } from "le-coffre-resources/dist/Admin";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import { useCallback, useEffect, useState } from "react";
|
import { useCallback, useEffect, useState } from "react";
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
import classes from "./classes.module.scss";
|
import classes from "./classes.module.scss";
|
||||||
|
|
||||||
@ -22,6 +24,17 @@ export default function RolesInformations(props: IProps) {
|
|||||||
const [roleSelected, setRoleSelected] = useState<Role | null>(null);
|
const [roleSelected, setRoleSelected] = useState<Role | null>(null);
|
||||||
const [rulesCheckboxes, setRulesCheckboxes] = useState<RuleCheckbox[]>([]);
|
const [rulesCheckboxes, setRulesCheckboxes] = useState<RuleCheckbox[]>([]);
|
||||||
const [selectAll, setSelectAll] = useState<boolean>(false);
|
const [selectAll, setSelectAll] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const [isConfirmModalOpened, setIsConfirmModalOpened] = useState<boolean>(false);
|
||||||
|
|
||||||
|
const openConfirmModal = useCallback(() => {
|
||||||
|
setIsConfirmModalOpened(true);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const closeConfirmModal = useCallback(() => {
|
||||||
|
setIsConfirmModalOpened(false);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setSelectAll(false);
|
setSelectAll(false);
|
||||||
async function getUser() {
|
async function getUser() {
|
||||||
@ -64,20 +77,17 @@ export default function RolesInformations(props: IProps) {
|
|||||||
[rulesCheckboxes],
|
[rulesCheckboxes],
|
||||||
);
|
);
|
||||||
|
|
||||||
const onSubmitHandler = useCallback(
|
const modifyRules = useCallback(async () => {
|
||||||
async (e: React.FormEvent<HTMLFormElement> | null, values: { [key: string]: string }) => {
|
if (!roleSelected || !roleSelected.uid) return;
|
||||||
if (!roleSelected || !roleSelected.uid) return;
|
const rules = rulesCheckboxes.filter((rule) => rule.checked)?.map((rule) => Rule.hydrate<Rule>(rule));
|
||||||
const rules = rulesCheckboxes.filter((rule) => rule.checked)?.map((rule) => Rule.hydrate<Rule>(rule));
|
const role = await Roles.getInstance().put(roleSelected.uid, {
|
||||||
const role = await Roles.getInstance().put(roleSelected.uid, {
|
rules,
|
||||||
rules,
|
});
|
||||||
});
|
if (!role) return;
|
||||||
if (!role) return;
|
setRoleSelected(role);
|
||||||
setRoleSelected(role);
|
if (!role.rules) return;
|
||||||
if (!role.rules) return;
|
setRulesCheckboxes(role.rules.map((rule) => ({ ...rule, checked: false })));
|
||||||
setRulesCheckboxes(role.rules.map((rule) => ({ ...rule, checked: false })));
|
}, [roleSelected, rulesCheckboxes]);
|
||||||
},
|
|
||||||
[roleSelected, rulesCheckboxes],
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DefaultRoleDashboard mobileBackText={"Liste des rôles"}>
|
<DefaultRoleDashboard mobileBackText={"Liste des rôles"}>
|
||||||
@ -103,7 +113,7 @@ export default function RolesInformations(props: IProps) {
|
|||||||
checked={selectAll}
|
checked={selectAll}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<Form onSubmit={onSubmitHandler}>
|
<Form>
|
||||||
<div className={classes["rights"]}>
|
<div className={classes["rights"]}>
|
||||||
{rulesCheckboxes.map((rule) => (
|
{rulesCheckboxes.map((rule) => (
|
||||||
<div className={classes["right"]} key={rule.uid}>
|
<div className={classes["right"]} key={rule.uid}>
|
||||||
@ -112,10 +122,24 @@ export default function RolesInformations(props: IProps) {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<div className={classes["save-container"]}>
|
<div className={classes["save-container"]}>
|
||||||
<Button type="submit">Enregistrer</Button>
|
<Button onClick={openConfirmModal}>Enregistrer</Button>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
</div>
|
</div>
|
||||||
|
<Confirm
|
||||||
|
isOpen={isConfirmModalOpened}
|
||||||
|
onClose={closeConfirmModal}
|
||||||
|
onAccept={modifyRules}
|
||||||
|
closeBtn
|
||||||
|
header={"Êtes-vous sûr d'enregistrer ?"}
|
||||||
|
confirmText={"Valider"}
|
||||||
|
cancelText={"Annuler"}>
|
||||||
|
<div className={classes["modal-content"]}>
|
||||||
|
<Typography typo={ITypo.P_16} className={classes["text"]}>
|
||||||
|
En enregistrant vous modifier les droits des rôles.
|
||||||
|
</Typography>
|
||||||
|
</div>
|
||||||
|
</Confirm>
|
||||||
</div>
|
</div>
|
||||||
</DefaultRoleDashboard>
|
</DefaultRoleDashboard>
|
||||||
);
|
);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user