web/plugins/BottomSheet/BottomSheetAddUserToPositio...

97 lines
2.9 KiB
React
Raw Normal View History

2023-11-20 00:07:55 +03:30
"use client";
import React, { useContext, useEffect, useRef, useState } from "react";
import { BottomSheet } from "react-spring-bottom-sheet";
import Input from "plugins/Input/page";
import AppContext from "@ctx/AppContext";
import SimpleReactValidator from "simple-react-validator";
import CheckBoxBriz from "plugins/CheckBoxBriz/page";
import Buttonbriz from "plugins/Buttonbriz/page";
import { toast } from "react-toastify";
const BottomSheetAddUserToPositionShiftPlan = ({
setUserAndPositionIds,
userAndPositionIds,
positionId,
positionName,
2023-12-13 12:02:50 +03:30
usersData,
2023-11-20 00:07:55 +03:30
}) => {
const CTX = useContext(AppContext);
const [, forceUpdate] = useState();
const validator = useRef(
new SimpleReactValidator({
messages: {
required: "پر کردن این فیلد الزامی میباشد",
},
element: (message) => (
<>
<div className="text-right px-1 ">
<small className="text-red-600 t-ig-small ">{message}</small>
</div>
</>
),
})
);
return (
<BottomSheet
open={CTX.state.BottomSheetAddUserToPositionShiftPlanOpen}
onDismiss={() => CTX.setBottomSheetAddUserToPositionShiftPlanOpen(false)}
blocking={true}
2023-11-20 00:07:55 +03:30
>
<div className="text-center py-2 bg-secondary-950 ">
<p className="mb-0 text-primary-300 relative top-[-5px]">
2023-11-20 00:07:55 +03:30
افزودن یوزر به پوزیشن {positionName}
</p>
</div>
{usersData?.map((e) => (
<div
className={`rounded-2xl m-3 tr03 ${
2023-12-13 12:02:50 +03:30
userAndPositionIds?.find(
2023-11-20 00:07:55 +03:30
(item) => item.value === e.userId && item.key == positionId
)
? "bg-primary-100"
: "bg-gray-100"
}`}
onClick={() => {
2023-12-13 12:02:50 +03:30
const userExistsIndex = userAndPositionIds?.findIndex(
2023-11-20 00:07:55 +03:30
(item) => item.value === e.userId && item.key === positionId
);
2024-02-27 13:43:07 +03:30
if (!userAndPositionIds || userExistsIndex === -1) {
2023-11-20 00:07:55 +03:30
setUserAndPositionIds((current) => [
2024-02-27 13:43:07 +03:30
...(current || []),
2023-11-20 00:07:55 +03:30
{
key: positionId,
2024-02-27 13:43:07 +03:30
value: e.userId,
2023-11-20 00:07:55 +03:30
},
]);
2024-02-27 13:43:07 +03:30
} else {
setUserAndPositionIds((current) => [
...(current ? current.slice(0, userExistsIndex) : []),
...(current ? current.slice(userExistsIndex + 1) : []),
]);
2023-11-20 00:07:55 +03:30
}
CTX.setBottomSheetAddUserToPositionShiftPlanOpen(false);
2023-11-20 00:07:55 +03:30
}}
>
<div className="flex rtl justify-between p-1">
<p className="mb-0 m-1 text-sm">
2023-11-20 00:07:55 +03:30
{e?.firstName} {e?.lastName}
</p>
<p className="mb-0 text-secondary-700 pl-4 rounded-full text-sm">
2023-11-20 00:07:55 +03:30
{e?.roleNames[0]}
</p>
</div>
</div>
))}
</BottomSheet>
);
};
export default BottomSheetAddUserToPositionShiftPlan;