Files
nobat724_front/components/panel/userAccount/account/form/index.js
T
2024-10-26 00:51:59 +03:30

158 lines
4.7 KiB
JavaScript

"use client";
import { useState } from "react";
import ContentText from "../../../../../app/component/ContentText";
import EditField from "@/app/component/EditField";
import AutoCompleteSelect from "@/app/component/element/AutoCompleteSelect";
import { bank, city, state } from "./listSelector";
import AddLocationP from "@/components/icons/AddLocationP";
import { Button } from "@mui/material";
import ArrowLeftButtonP from "@/components/icons/ArrowLeftButtonP";
const validate_phone_number = {
min: 1,
max: 9999999999,
};
function Form() {
const [data, setData] = useState({
name: { value: "", isEdit: true },
national_code: { value: "", isEdit: true },
address: { value: "", isEdit: true },
phone: { value: "", isEdit: true },
account_number: { value: "", isEdit: true },
});
const [selected, setSelected] = useState({
state: "",
city: "",
bank: "",
});
const updateSelect = (event, name) =>
setSelected({ ...selected, [name]: event });
const changeData = (value, type, name) =>
setData({
...data,
[name]: {
...data[name],
[type]: value,
},
});
const updateNum = (value, type, name) => {
const parseValue = +value;
const { max } = validate_phone_number;
const validateValue = parseValue > max ? data[name].value : value;
changeData(validateValue, type, name);
};
return (
<div className="flex flex-col items-start justify-start mt-[24px] md:mt-[28px] lg:mt-[32px] gap-[32px] md:gap-[40px] lg:gap-[48px]">
<ul className="grid w-full grid-cols-1 md:grid-cols-2 gap-x-[48px] gap-y-[24px] md:gap-y-[28px] lg:gap-y-[32px]">
<ContentText text="نام و نام خانوادگی">
<EditField
isTransparent={true}
iconGray={true}
changeData={changeData}
data={data?.name}
name="name"
/>
</ContentText>
<ContentText text="کد ملی">
<EditField
isTransparent={true}
iconGray={true}
changeData={updateNum}
data={data?.national_code}
noDisable={true}
type="number"
placeholder="کد ملی"
name="national_code"
props={{
inputProps: validate_phone_number,
}}
/>
</ContentText>
<ContentText text="استان">
<AutoCompleteSelect
updateData={updateSelect}
label="انتخاب کنید..."
name="state"
list={state}
/>
</ContentText>
<ContentText text="شهر">
<AutoCompleteSelect
updateData={updateSelect}
label="انتخاب کنید..."
name="city"
list={city}
/>
</ContentText>
<ContentText text="آدرس">
<EditField
icon={<AddLocationP />}
isTransparent={true}
placeholder="از روی نقشه انتخاب کنید..."
iconGray={true}
changeData={changeData}
data={data?.address}
name="address"
/>
</ContentText>
<ContentText text="شماره موبایل">
<EditField
isTransparent={true}
iconGray={true}
changeData={updateNum}
data={data?.phone}
noDisable={true}
type="number"
placeholder="شماره موبایل"
name="phone"
props={{
inputProps: validate_phone_number,
}}
/>
</ContentText>
<ContentText text="شماره حساب">
<EditField
isTransparent={true}
iconGray={true}
changeData={updateNum}
data={data?.account_number}
noDisable={true}
type="number"
placeholder="شماره حساب"
name="account_number"
props={{
inputProps: validate_phone_number,
}}
/>
</ContentText>
<ContentText text="بانک">
<AutoCompleteSelect
updateData={updateSelect}
label="انتخاب کنید..."
name="bank"
list={bank}
/>
</ContentText>
</ul>
<div className="w-full flex justify-end">
<Button
variant="contained"
className="!gap-[4px] !py-[8px] !px-[24px] !rounded-[4px] !w-full md:!w-fit
!shadow-none !text-[#EFEFEF] !text-[14px] md:!text-[16px] !font-medium"
>
ثبت اطلاعات
<ArrowLeftButtonP />
</Button>
</div>
</div>
);
}
export default Form;