From 3bab9c04815cde398ffa6f3e82ded20d5a487a05 Mon Sep 17 00:00:00 2001 From: laxmanhalaki Date: Thu, 5 Feb 2026 21:06:00 +0530 Subject: [PATCH] ui made stable for the non templatized and changed to support postman request submit --- src/components/modals/NewRequestModal.tsx | 64 +- .../workflow/CreateRequest/DocumentsStep.tsx | 81 +- .../components/UserAllRequestsFilters.tsx | 4 +- .../DealerUserAllRequestsFilters.tsx | 12 +- .../components/request-detail/WorkflowTab.tsx | 2575 +++++++++-------- .../hooks/useCreateRequestSubmission.ts | 2 + .../services/createRequestService.ts | 16 +- .../types/createRequest.types.ts | 2 + src/pages/Requests/Requests.tsx | 4 +- src/pages/Requests/hooks/useUserSearch.ts | 4 +- src/services/workflowApi.ts | 2 + src/utils/requestDetailHelpers.tsx | 9 +- 12 files changed, 1423 insertions(+), 1352 deletions(-) diff --git a/src/components/modals/NewRequestModal.tsx b/src/components/modals/NewRequestModal.tsx index 6d323b1..3729b20 100644 --- a/src/components/modals/NewRequestModal.tsx +++ b/src/components/modals/NewRequestModal.tsx @@ -12,12 +12,12 @@ import { Card, CardContent, CardHeader, CardTitle } from '../ui/card'; import { Switch } from '../ui/switch'; import { Calendar } from '../ui/calendar'; import { Popover, PopoverContent, PopoverTrigger } from '../ui/popover'; -import { - ArrowLeft, - ArrowRight, - Calendar as CalendarIcon, - Upload, - X, +import { + ArrowLeft, + ArrowRight, + Calendar as CalendarIcon, + Upload, + X, FileText, Check, Users @@ -42,6 +42,7 @@ export function NewRequestModal({ open, onClose, onSubmit }: NewRequestModalProp spectators: [] as any[], documents: [] as File[] }); + const [isDragging, setIsDragging] = useState(false); const totalSteps = 5; @@ -78,9 +79,36 @@ export function NewRequestModal({ open, onClose, onSubmit }: NewRequestModalProp updateFormData('spectators', formData.spectators.filter(s => s.id !== userId)); }; - const handleFileUpload = (event: React.ChangeEvent) => { - const files = Array.from(event.target.files || []); - updateFormData('documents', [...formData.documents, ...files]); + const handleFileUpload = (event: React.ChangeEvent | React.DragEvent) => { + let files: File[] = []; + if ('target' in event && event.target instanceof HTMLInputElement && event.target.files) { + files = Array.from(event.target.files); + } else if ('dataTransfer' in event && event.dataTransfer.files) { + files = Array.from(event.dataTransfer.files); + } + + if (files.length > 0) { + updateFormData('documents', [...formData.documents, ...files]); + } + }; + + const handleDragOver = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(true); + }; + + const handleDragLeave = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(false); + }; + + const handleDrop = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(false); + handleFileUpload(e); }; const removeDocument = (index: number) => { @@ -150,7 +178,7 @@ export function NewRequestModal({ open, onClose, onSubmit }: NewRequestModalProp onChange={(e) => updateFormData('title', e.target.value)} /> - +