From b438b39ada611eb1536f19b570ae2ab2db676060 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Sat, 13 Jun 2026 12:28:51 +0330 Subject: [PATCH] upload icon --- .env | 2 +- src/pages/food/components/CategoryForm.tsx | 74 +++++++++++++++++++++- 2 files changed, 73 insertions(+), 3 deletions(-) diff --git a/.env b/.env index 7c4b687..7b5e9c6 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ VITE_TOKEN_NAME = 'dmnu_a_t' VITE_REFRESH_TOKEN_NAME = 'dmnu-a-rt' -VITE_BASE_URL = 'https://dmenuplus-api-production.dev.danakcorp.com' +VITE_BASE_URL = 'https://dmenu-api.danakcorp.com' # VITE_BASE_URL = 'http://192.168.99.131:2000' VITE_SOCKET_URL = 'https://dmenu-api.danakcorp.com' \ No newline at end of file diff --git a/src/pages/food/components/CategoryForm.tsx b/src/pages/food/components/CategoryForm.tsx index b80945f..668c60e 100644 --- a/src/pages/food/components/CategoryForm.tsx +++ b/src/pages/food/components/CategoryForm.tsx @@ -1,5 +1,5 @@ -import { type FC, useState } from 'react' -import { Add, Image } from 'iconsax-react' +import { type FC, useEffect, useRef, useState } from 'react' +import { Add, DocumentUpload, Image } from 'iconsax-react' import Input from '@/components/Input' import SwitchComponent from '@/components/Switch' import Button from '@/components/Button' @@ -29,6 +29,8 @@ const CategoryForm: FC = ({ formik, isActive, onActiveChange, + onIconChange, + iconFiles = [], isSubmitting, isEditing = false, onIconUrlChange, @@ -37,6 +39,17 @@ const CategoryForm: FC = ({ const { data: iconsData } = useGetIcons() const icons = iconsData?.data || [] const [isIconModalOpen, setIsIconModalOpen] = useState(false) + const [uploadPreviewUrl, setUploadPreviewUrl] = useState('') + const fileInputRef = useRef(null) + + useEffect(() => { + if (iconFiles.length > 0) { + const url = URL.createObjectURL(iconFiles[0]) + setUploadPreviewUrl(url) + return () => URL.revokeObjectURL(url) + } + setUploadPreviewUrl('') + }, [iconFiles]) const handleIconSelect = (url: string) => { if (onIconUrlChange) { @@ -45,6 +58,18 @@ const CategoryForm: FC = ({ setIsIconModalOpen(false) } + const handleUploadIconChange = (files: File[]) => { + onIconChange?.(files) + formik.setFieldValue('icon', files) + } + + const handleClearUploadedIcon = () => { + handleUploadIconChange([]) + if (fileInputRef.current) { + fileInputRef.current.value = '' + } + } + return (

{isEditing ? 'ویرایش دسته بندی' : 'اضافه کردن دسته بندی'}

@@ -88,6 +113,51 @@ const CategoryForm: FC = ({ انتخاب آیکون + { + const files = e.target.files ? Array.from(e.target.files) : [] + if (files.length > 0) { + handleUploadIconChange(files) + } + }} + /> + + {iconFiles.length > 0 && uploadPreviewUrl && ( +
+
+ uploaded icon +
+
+
آیکون آپلود شده
+
+ {iconFiles[0].name} +
+
+ +
+ )} {selectedIconUrl && (