Compare commits

...

2 Commits

3 changed files with 32 additions and 5 deletions

View File

@ -1,4 +1,4 @@
import React, { useEffect } from "react"; import React, { useEffect, useState } from "react";
import { FormProvider, useForm } from "react-hook-form"; import { FormProvider, useForm } from "react-hook-form";
import { import {
useCreateOrganization, useCreateOrganization,
@ -14,6 +14,7 @@ import Label from "../common/Label";
import { useGlobalServices } from "../../hooks/masterHook/useMaster"; import { useGlobalServices } from "../../hooks/masterHook/useMaster";
import { zodResolver } from "@hookform/resolvers/zod"; import { zodResolver } from "@hookform/resolvers/zod";
import SelectMultiple from "../common/SelectMultiple"; import SelectMultiple from "../common/SelectMultiple";
import { LogoUpload } from "../Tenant/LogoUpload";
const ManagOrg = () => { const ManagOrg = () => {
const { data: service, isLoading } = useGlobalServices(); const { data: service, isLoading } = useGlobalServices();
@ -31,10 +32,14 @@ const ManagOrg = () => {
defaultValues: defaultOrganizationValues, defaultValues: defaultOrganizationValues,
}); });
const [logoPreview, setLogoPreview] = useState(null);
const [logoName, setLogoName] = useState("");
const { const {
handleSubmit, handleSubmit,
register, register,
reset, reset,
getValues,
formState: { errors }, formState: { errors },
} = method; } = method;
@ -62,6 +67,7 @@ const ManagOrg = () => {
email: organization.email || "", email: organization.email || "",
serviceIds: organization.services?.map((s) => s.id) || [], serviceIds: organization.services?.map((s) => s.id) || [],
address: organization.address || "", address: organization.address || "",
logoImage: organization.logoImage || "",
}); });
} }
}, [organization, reset, service?.data]); }, [organization, reset, service?.data]);
@ -93,6 +99,14 @@ const ManagOrg = () => {
} }
onOpen({ startStep: 2 }); onOpen({ startStep: 2 });
}; };
useEffect(() => {
const logoImage = getValues("logoImage");
if (logoImage) {
setLogoPreview(logoImage);
setLogoName("Uploaded Logo");
}
}, [getValues]);
return ( return (
<FormProvider {...method}> <FormProvider {...method}>
<form className="form" onSubmit={handleSubmit(onSubmit)}> <form className="form" onSubmit={handleSubmit(onSubmit)}>
@ -176,6 +190,17 @@ const ManagOrg = () => {
)} )}
</div> </div>
<div className="col-sm-12 text-start mt-2">
<Label htmlFor="logoImage" required>Logo Image</Label>
<LogoUpload
preview={logoPreview}
setPreview={setLogoPreview}
fileName={logoName}
setFileName={setLogoName}
/>
</div>
<div className="d-flex justify-content-between gap-2 my-2"> <div className="d-flex justify-content-between gap-2 my-2">
<button <button
type="button" type="button"

View File

@ -13,6 +13,7 @@ export const organizationSchema = z.object({
.regex(phoneRegex, { message: "Invalid phone number" }), .regex(phoneRegex, { message: "Invalid phone number" }),
contactPerson: z.string().min(1, { message: "Person name required" }), contactPerson: z.string().min(1, { message: "Person name required" }),
address: z.string().min(1, { message: "Address is required!" }), address: z.string().min(1, { message: "Address is required!" }),
logoImage: z.string().min(1, { message: "Logo is required!" }),
email: z email: z
.string().trim() .string().trim()
.min(1, { message: "Email is required" }) .min(1, { message: "Email is required" })
@ -28,6 +29,7 @@ export const defaultOrganizationValues = {
contactPerson: "", contactPerson: "",
address: "", address: "",
email: "", email: "",
logoImage:"",
serviceIds: [], serviceIds: [],
}; };

View File

@ -45,7 +45,7 @@ export const LogoUpload = ({ preview, setPreview, fileName, setFileName }) => {
return ( return (
<div className="col-sm-12 mb-3"> <div className="col-sm-12 mb-3">
<div <div
className="border border-secondary border-dashed rounded p-2 text-center position-relative" className="border border-secondary text-black border-dashed rounded p-2 text-center position-relative"
style={{ cursor: "pointer" }} style={{ cursor: "pointer" }}
onClick={() => document.getElementById("logoImageInput")?.click()} onClick={() => document.getElementById("logoImageInput")?.click()}
> >