fixed: image url, and updated form phone input validation

This commit is contained in:
nabijonovdavronbek619@gmail.com
2025-12-26 15:15:39 +05:00
parent ca80c6920c
commit 3dfce04ab0
6 changed files with 67 additions and 41 deletions

View File

@@ -12,6 +12,7 @@ export function ContactForm() {
const { t } = useLanguage();
const productName = useProductStore((state) => state.productName);
const reset = useProductStore((state) => state.resetProductName);
const [formData, setFormData] = useState({
name: "",
@@ -26,15 +27,29 @@ export function ContactForm() {
text: string;
} | null>(null);
const phoneRegex = /^\+?\d*$/; // + majburiy
const handleChange = (
e: React.ChangeEvent<
HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement
>
) => {
setFormData((prev) => ({
...prev,
[e.target.name]: e.target.value,
}));
const { name, value } = e.target;
if (name === "phone") {
// regexga mos kelmasa — state ozgarmaydi
if (!phoneRegex.test(value)) return;
setFormData((prev) => ({
...prev,
phone: value,
}));
} else {
setFormData((prev) => ({
...prev,
[name]: value,
}));
}
};
const handleSubmit = async (e: React.FormEvent) => {
@@ -62,6 +77,8 @@ ${formData.message || "—"}
text: text,
});
setMessage({ type: "success", text: t.contact.success });
reset();
setFormData({ name: "", phone: "", message: "", productName: "" });
} catch {
setMessage({ type: "error", text: t.contact.error });
} finally {
@@ -168,7 +185,7 @@ ${formData.message || "—"}
value={formData.name}
onChange={handleChange}
placeholder={t.contact.namePlaceholder}
className="w-full px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
className="w-full text-black px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
</div>
@@ -184,7 +201,7 @@ ${formData.message || "—"}
onChange={handleChange}
placeholder={t.contact.phonePlaceholder}
required
className="w-full px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
className="w-full text-black px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
</div>
@@ -199,7 +216,7 @@ ${formData.message || "—"}
onChange={handleChange}
placeholder={t.contact.messagePlaceholder}
rows={4}
className="w-full px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none"
className="w-full text-black px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 resize-none"
/>
</div>
@@ -214,7 +231,7 @@ ${formData.message || "—"}
value={productName ? productName : formData.productName}
onChange={handleChange}
placeholder={t.contact.product}
className="w-full px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
className="w-full text-black px-4 py-2 border border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500"
/>
</div>