fix:user edit
This commit is contained in:
parent
6202af2149
commit
19f71eb972
|
|
@ -202,86 +202,96 @@ export default function FormMasterUserEdit() {
|
||||||
className="w-full lg:w-1/2 lg:ml-4"
|
className="w-full lg:w-1/2 lg:ml-4"
|
||||||
>
|
>
|
||||||
<Card className="rounded-md p-5 flex flex-col gap-3">
|
<Card className="rounded-md p-5 flex flex-col gap-3">
|
||||||
<Controller
|
<div className="flex flex-col gap-1">
|
||||||
control={control}
|
<p className="text-sm">Nama Lengkap</p>
|
||||||
name="fullname"
|
<Controller
|
||||||
render={({ field: { onChange, value } }) => (
|
control={control}
|
||||||
<Input
|
name="fullname"
|
||||||
type="text"
|
render={({ field: { onChange, value } }) => (
|
||||||
id="title"
|
<Input
|
||||||
placeholder="Nama Lengkap..."
|
type="text"
|
||||||
label="Nama Lengkap"
|
id="title"
|
||||||
value={value}
|
placeholder="Nama Lengkap..."
|
||||||
onChange={onChange}
|
label=""
|
||||||
labelPlacement="outside"
|
value={value}
|
||||||
className="w-full"
|
onChange={onChange}
|
||||||
classNames={{
|
labelPlacement="outside"
|
||||||
inputWrapper: [
|
className="w-full"
|
||||||
"border-1 rounded-lg",
|
classNames={{
|
||||||
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
input: "outline-none",
|
||||||
],
|
inputWrapper: [
|
||||||
}}
|
"border-1 rounded-lg",
|
||||||
variant="bordered"
|
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
||||||
/>
|
],
|
||||||
|
}}
|
||||||
|
variant="bordered"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.fullname?.message && (
|
||||||
|
<p className="text-red-400 text-sm">{errors.fullname?.message}</p>
|
||||||
)}
|
)}
|
||||||
/>
|
</div>
|
||||||
{errors.fullname?.message && (
|
<div className="flex flex-col gap-1">
|
||||||
<p className="text-red-400 text-sm">{errors.fullname?.message}</p>
|
<p className="text-sm">Username</p>
|
||||||
)}
|
|
||||||
<Controller
|
|
||||||
control={control}
|
|
||||||
name="username"
|
|
||||||
render={({ field: { onChange, value } }) => (
|
|
||||||
<Input
|
|
||||||
type="text"
|
|
||||||
id="username"
|
|
||||||
placeholder="Username..."
|
|
||||||
label="Username"
|
|
||||||
value={value}
|
|
||||||
onChange={onChange}
|
|
||||||
labelPlacement="outside"
|
|
||||||
className="w-full"
|
|
||||||
classNames={{
|
|
||||||
inputWrapper: [
|
|
||||||
"border-1 rounded-lg",
|
|
||||||
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
variant="bordered"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
{errors.username?.message && (
|
|
||||||
<p className="text-red-400 text-sm">{errors.username?.message}</p>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
name="email"
|
name="username"
|
||||||
render={({ field: { onChange, value } }) => (
|
render={({ field: { onChange, value } }) => (
|
||||||
<Input
|
<Input
|
||||||
type="email"
|
type="text"
|
||||||
id="email"
|
id="username"
|
||||||
placeholder="Email..."
|
placeholder="Username..."
|
||||||
label="Email"
|
label=""
|
||||||
value={value}
|
value={value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
labelPlacement="outside"
|
labelPlacement="outside"
|
||||||
className="w-full"
|
className="w-full"
|
||||||
classNames={{
|
classNames={{
|
||||||
inputWrapper: [
|
inputWrapper: [
|
||||||
"border-1 rounded-lg",
|
"border-1 rounded-lg",
|
||||||
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
||||||
],
|
],
|
||||||
}}
|
}}
|
||||||
variant="bordered"
|
variant="bordered"
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.username?.message && (
|
||||||
|
<p className="text-red-400 text-sm">{errors.username?.message}</p>
|
||||||
)}
|
)}
|
||||||
/>
|
</div>
|
||||||
{errors.email?.message && (
|
<div className="flex flex-col gap-1">
|
||||||
<p className="text-red-400 text-sm">{errors.email?.message}</p>
|
<p className="text-sm">Email</p>
|
||||||
)}
|
|
||||||
|
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name="email"
|
||||||
|
render={({ field: { onChange, value } }) => (
|
||||||
|
<Input
|
||||||
|
type="email"
|
||||||
|
id="email"
|
||||||
|
placeholder="Email..."
|
||||||
|
label=""
|
||||||
|
value={value}
|
||||||
|
onChange={onChange}
|
||||||
|
labelPlacement="outside"
|
||||||
|
className="w-full"
|
||||||
|
classNames={{
|
||||||
|
inputWrapper: [
|
||||||
|
"border-1 rounded-lg",
|
||||||
|
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
||||||
|
],
|
||||||
|
}}
|
||||||
|
variant="bordered"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.email?.message && (
|
||||||
|
<p className="text-red-400 text-sm">{errors.email?.message}</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
{/* <Controller
|
{/* <Controller
|
||||||
control={control}
|
control={control}
|
||||||
name="identityType"
|
name="identityType"
|
||||||
|
|
@ -306,165 +316,183 @@ export default function FormMasterUserEdit() {
|
||||||
{errors.identityType?.message}
|
{errors.identityType?.message}
|
||||||
</p>
|
</p>
|
||||||
)} */}
|
)} */}
|
||||||
<Controller
|
<div className="flex flex-col gap-1">
|
||||||
control={control}
|
<p className="text-sm">NRP</p>
|
||||||
name="identityNumber"
|
|
||||||
render={({ field: { onChange, value } }) => (
|
|
||||||
<Input
|
|
||||||
type="number"
|
|
||||||
id="identityNumber"
|
|
||||||
placeholder="NRP..."
|
|
||||||
label="NRP"
|
|
||||||
value={value}
|
|
||||||
onChange={onChange}
|
|
||||||
labelPlacement="outside"
|
|
||||||
className="w-full"
|
|
||||||
classNames={{
|
|
||||||
inputWrapper: [
|
|
||||||
"border-1 rounded-lg",
|
|
||||||
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
variant="bordered"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
{errors.identityNumber?.message && (
|
|
||||||
<p className="text-red-400 text-sm">
|
|
||||||
{errors.identityNumber?.message}
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Controller
|
<Controller
|
||||||
control={control}
|
control={control}
|
||||||
name="address"
|
name="identityNumber"
|
||||||
render={({ field: { onChange, value } }) => (
|
render={({ field: { onChange, value } }) => (
|
||||||
<Textarea
|
<Input
|
||||||
label="Alamat"
|
type="number"
|
||||||
labelPlacement="outside"
|
id="identityNumber"
|
||||||
placeholder="Alamat..."
|
placeholder="NRP..."
|
||||||
variant="bordered"
|
label=""
|
||||||
value={value}
|
|
||||||
classNames={{
|
|
||||||
inputWrapper: [
|
|
||||||
"border-1 rounded-lg",
|
|
||||||
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
|
||||||
],
|
|
||||||
}}
|
|
||||||
onValueChange={onChange}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
{errors.address?.message && (
|
|
||||||
<p className="text-red-400 text-sm">{errors.address?.message}</p>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Controller
|
|
||||||
control={control}
|
|
||||||
name="genderType"
|
|
||||||
render={({ field: { onChange, value } }) => (
|
|
||||||
<RadioGroup
|
|
||||||
orientation="horizontal"
|
|
||||||
label="Gender"
|
|
||||||
value={value}
|
|
||||||
onValueChange={onChange}
|
|
||||||
>
|
|
||||||
<Radio value="Male">Laki-laki</Radio>
|
|
||||||
<Radio value="Female">Perempuan</Radio>
|
|
||||||
</RadioGroup>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
{errors.genderType?.message && (
|
|
||||||
<p className="text-red-400 text-sm">{errors.genderType?.message}</p>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<Controller
|
|
||||||
control={control}
|
|
||||||
name="userLevelType"
|
|
||||||
render={({ field: { onChange, value } }) => (
|
|
||||||
<>
|
|
||||||
<p className="text-sm mt-3">Level Pengguna</p>
|
|
||||||
<ReactSelect
|
|
||||||
className="basic-single text-black z-50"
|
|
||||||
classNames={{
|
|
||||||
control: (state: any) =>
|
|
||||||
"!rounded-lg bg-white !border-1 !border-gray-200 dark:!border-stone-500",
|
|
||||||
}}
|
|
||||||
classNamePrefix="select"
|
|
||||||
value={value}
|
value={value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
closeMenuOnSelect={false}
|
labelPlacement="outside"
|
||||||
components={animatedComponents}
|
className="w-full"
|
||||||
isClearable={true}
|
|
||||||
isSearchable={true}
|
|
||||||
isMulti={false}
|
|
||||||
placeholder=""
|
|
||||||
name="sub-module"
|
|
||||||
options={parentList}
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
{errors.userLevelType?.message && (
|
|
||||||
<p className="text-red-400 text-sm">
|
|
||||||
{errors.userLevelType?.message}
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
<Controller
|
|
||||||
control={control}
|
|
||||||
name="userRoleType"
|
|
||||||
render={({ field: { onChange, value } }) => (
|
|
||||||
<>
|
|
||||||
<p className="text-sm mt-3">Peran Pengguna</p>
|
|
||||||
<ReactSelect
|
|
||||||
className="basic-single text-black z-49"
|
|
||||||
classNames={{
|
classNames={{
|
||||||
control: (state: any) =>
|
inputWrapper: [
|
||||||
"!rounded-lg bg-white !border-1 !border-gray-200 dark:!border-stone-500",
|
"border-1 rounded-lg",
|
||||||
|
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
||||||
|
],
|
||||||
}}
|
}}
|
||||||
classNamePrefix="select"
|
variant="bordered"
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.identityNumber?.message && (
|
||||||
|
<p className="text-red-400 text-sm">
|
||||||
|
{errors.identityNumber?.message}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<p className="text-sm">Alamat</p>
|
||||||
|
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name="address"
|
||||||
|
render={({ field: { onChange, value } }) => (
|
||||||
|
<Textarea
|
||||||
|
label=""
|
||||||
|
labelPlacement="outside"
|
||||||
|
placeholder="Alamat..."
|
||||||
|
variant="bordered"
|
||||||
|
value={value}
|
||||||
|
classNames={{
|
||||||
|
inputWrapper: [
|
||||||
|
"border-1 rounded-lg",
|
||||||
|
"dark:group-data-[focused=false]:bg-transparent !border-1 dark:!border-gray-400",
|
||||||
|
],
|
||||||
|
}}
|
||||||
|
onValueChange={onChange}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.address?.message && (
|
||||||
|
<p className="text-red-400 text-sm">{errors.address?.message}</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<p className="text-sm">Gender</p>
|
||||||
|
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name="genderType"
|
||||||
|
render={({ field: { onChange, value } }) => (
|
||||||
|
<RadioGroup
|
||||||
|
orientation="horizontal"
|
||||||
|
label=""
|
||||||
|
value={value}
|
||||||
|
onValueChange={onChange}
|
||||||
|
>
|
||||||
|
<Radio value="Male">Laki-laki</Radio>
|
||||||
|
<Radio value="Female">Perempuan</Radio>
|
||||||
|
</RadioGroup>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.genderType?.message && (
|
||||||
|
<p className="text-red-400 text-sm">
|
||||||
|
{errors.genderType?.message}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name="userLevelType"
|
||||||
|
render={({ field: { onChange, value } }) => (
|
||||||
|
<>
|
||||||
|
<p className="text-sm mt-3">Level Pengguna</p>
|
||||||
|
<ReactSelect
|
||||||
|
className="basic-single text-black z-50"
|
||||||
|
classNames={{
|
||||||
|
control: (state: any) =>
|
||||||
|
"!rounded-lg bg-white !border-1 !border-gray-200 dark:!border-stone-500",
|
||||||
|
}}
|
||||||
|
classNamePrefix="select"
|
||||||
|
value={value}
|
||||||
|
onChange={onChange}
|
||||||
|
closeMenuOnSelect={false}
|
||||||
|
components={animatedComponents}
|
||||||
|
isClearable={true}
|
||||||
|
isSearchable={true}
|
||||||
|
isMulti={false}
|
||||||
|
placeholder=""
|
||||||
|
name="sub-module"
|
||||||
|
options={parentList}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.userLevelType?.message && (
|
||||||
|
<p className="text-red-400 text-sm">
|
||||||
|
{errors.userLevelType?.message}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name="userRoleType"
|
||||||
|
render={({ field: { onChange, value } }) => (
|
||||||
|
<>
|
||||||
|
<p className="text-sm mt-3">Peran Pengguna</p>
|
||||||
|
<ReactSelect
|
||||||
|
className="basic-single text-black z-49"
|
||||||
|
classNames={{
|
||||||
|
control: (state: any) =>
|
||||||
|
"!rounded-lg bg-white !border-1 !border-gray-200 dark:!border-stone-500",
|
||||||
|
}}
|
||||||
|
classNamePrefix="select"
|
||||||
|
value={value}
|
||||||
|
onChange={onChange}
|
||||||
|
closeMenuOnSelect={false}
|
||||||
|
components={animatedComponents}
|
||||||
|
isClearable={true}
|
||||||
|
isSearchable={true}
|
||||||
|
isMulti={false}
|
||||||
|
placeholder=""
|
||||||
|
name="sub-module"
|
||||||
|
options={listRole}
|
||||||
|
/>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
{errors.userRoleType?.message && (
|
||||||
|
<p className="text-red-400 text-sm">
|
||||||
|
{errors.userRoleType?.message}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<p className="text-sm">No. Handphone</p>
|
||||||
|
|
||||||
|
<Controller
|
||||||
|
control={control}
|
||||||
|
name="phoneNumber"
|
||||||
|
render={({ field: { onChange, value } }) => (
|
||||||
|
<Input
|
||||||
|
type="number"
|
||||||
|
id="identityNumber"
|
||||||
|
placeholder="08*********"
|
||||||
|
label=""
|
||||||
value={value}
|
value={value}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
closeMenuOnSelect={false}
|
labelPlacement="outside"
|
||||||
components={animatedComponents}
|
className="w-full z-0"
|
||||||
isClearable={true}
|
variant="bordered"
|
||||||
isSearchable={true}
|
|
||||||
isMulti={false}
|
|
||||||
placeholder=""
|
|
||||||
name="sub-module"
|
|
||||||
options={listRole}
|
|
||||||
/>
|
/>
|
||||||
</>
|
)}
|
||||||
|
/>
|
||||||
|
{errors.phoneNumber?.message && (
|
||||||
|
<p className="text-red-400 text-sm">
|
||||||
|
{errors.phoneNumber?.message}
|
||||||
|
</p>
|
||||||
)}
|
)}
|
||||||
/>
|
</div>
|
||||||
{errors.userRoleType?.message && (
|
|
||||||
<p className="text-red-400 text-sm">
|
|
||||||
{errors.userRoleType?.message}
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
<Controller
|
|
||||||
control={control}
|
|
||||||
name="phoneNumber"
|
|
||||||
render={({ field: { onChange, value } }) => (
|
|
||||||
<Input
|
|
||||||
type="number"
|
|
||||||
id="identityNumber"
|
|
||||||
placeholder="08*********"
|
|
||||||
label="No. Handphone"
|
|
||||||
value={value}
|
|
||||||
onChange={onChange}
|
|
||||||
labelPlacement="outside"
|
|
||||||
className="w-full z-0"
|
|
||||||
variant="bordered"
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
{errors.phoneNumber?.message && (
|
|
||||||
<p className="text-red-400 text-sm">
|
|
||||||
{errors.phoneNumber?.message}
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
|
|
||||||
<div className="flex justify-end gap-3">
|
<div className="flex justify-end gap-3">
|
||||||
<Link href={`/admin/master-user`}>
|
<Link href={`/admin/master-user`}>
|
||||||
<Button color="danger" variant="ghost">
|
<Button color="danger" variant="ghost">
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ export async function setupEmail(data: any) {
|
||||||
export async function getDetailMasterUsers(id: string) {
|
export async function getDetailMasterUsers(id: string) {
|
||||||
const headers = {
|
const headers = {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
|
Authorization: `Bearer ${token}`,
|
||||||
};
|
};
|
||||||
return await httpGet(`/users/detail/${id}`, headers);
|
return await httpGet(`/users/detail/${id}`, headers);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue