From 2745e95b49f2534aceccce1934e3534f993f4400 Mon Sep 17 00:00:00 2001 From: Vishnu Date: Fri, 16 May 2025 16:41:43 +0530 Subject: [PATCH] done --- .../appointments/add-appointment-modal.tsx | 5 + .../appointments/appointment-form.tsx | 93 ++++++++++++------- .../src/components/ui/deleteDialog.tsx | 8 +- apps/Frontend/src/pages/appointments-page.tsx | 39 +++++++- apps/Frontend/src/pages/settings-page.tsx | 2 +- 5 files changed, 103 insertions(+), 44 deletions(-) diff --git a/apps/Frontend/src/components/appointments/add-appointment-modal.tsx b/apps/Frontend/src/components/appointments/add-appointment-modal.tsx index c38f7c5..4ff1a33 100644 --- a/apps/Frontend/src/components/appointments/add-appointment-modal.tsx +++ b/apps/Frontend/src/components/appointments/add-appointment-modal.tsx @@ -28,6 +28,7 @@ interface AddAppointmentModalProps { open: boolean; onOpenChange: (open: boolean) => void; onSubmit: (data: InsertAppointment | UpdateAppointment) => void; + onDelete?: (id: number) => void; isLoading: boolean; appointment?: Appointment; patients: Patient[]; @@ -37,10 +38,12 @@ export function AddAppointmentModal({ open, onOpenChange, onSubmit, + onDelete, isLoading, appointment, patients, }: AddAppointmentModalProps) { + return ( @@ -58,6 +61,8 @@ export function AddAppointmentModal({ onOpenChange(false); }} isLoading={isLoading} + onDelete={onDelete} + onOpenChange={onOpenChange} /> diff --git a/apps/Frontend/src/components/appointments/appointment-form.tsx b/apps/Frontend/src/components/appointments/appointment-form.tsx index 1d99a31..f89bc6a 100644 --- a/apps/Frontend/src/components/appointments/appointment-form.tsx +++ b/apps/Frontend/src/components/appointments/appointment-form.tsx @@ -73,6 +73,8 @@ interface AppointmentFormProps { appointment?: Appointment; patients: Patient[]; onSubmit: (data: InsertAppointment | UpdateAppointment) => void; + onDelete?: (id: number) => void; + onOpenChange?: (open: boolean) => void; isLoading?: boolean; } @@ -80,18 +82,19 @@ export function AppointmentForm({ appointment, patients, onSubmit, + onDelete, + onOpenChange, isLoading = false, }: AppointmentFormProps) { const { user } = useAuth(); const inputRef = useRef(null); -useEffect(() => { - const timeout = setTimeout(() => { - inputRef.current?.focus(); - }, 50); // small delay ensures content is mounted - - return () => clearTimeout(timeout); -}, []); + useEffect(() => { + const timeout = setTimeout(() => { + inputRef.current?.focus(); + }, 50); // small delay ensures content is mounted + return () => clearTimeout(timeout); + }, []); const { data: staffMembersRaw = [] as Staff[], isLoading: isLoadingStaff } = useQuery({ @@ -177,18 +180,19 @@ useEffect(() => { const [filteredPatients, setFilteredPatients] = useState(patients); useEffect(() => { - if (!debouncedSearchTerm.trim()) { - setFilteredPatients(patients); - } else { - const term = debouncedSearchTerm.toLowerCase(); - setFilteredPatients( - patients.filter((p) => - `${p.firstName} ${p.lastName} ${p.phone} ${p.dob}`.toLowerCase().includes(term) - ) - ); - } -}, [debouncedSearchTerm, patients]); - + if (!debouncedSearchTerm.trim()) { + setFilteredPatients(patients); + } else { + const term = debouncedSearchTerm.toLowerCase(); + setFilteredPatients( + patients.filter((p) => + `${p.firstName} ${p.lastName} ${p.phone} ${p.dob}` + .toLowerCase() + .includes(term) + ) + ); + } + }, [debouncedSearchTerm, patients]); // Force form field values to update and clean up storage useEffect(() => { @@ -304,8 +308,7 @@ useEffect(() => { -
e.stopPropagation()}> - +
e.stopPropagation()}> { value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} onKeyDown={(e) => { - const navKeys = ['ArrowDown', 'ArrowUp', 'Enter']; - if (!navKeys.includes(e.key)) { - e.stopPropagation(); // Only stop keys that affect select state - } - }} + const navKeys = ["ArrowDown", "ArrowUp", "Enter"]; + if (!navKeys.includes(e.key)) { + e.stopPropagation(); // Only stop keys that affect select state + } + }} />
- {filteredPatients.length > 0 ? ( filteredPatients.map((patient) => (
- - {patient.firstName} {patient.lastName} - - - DOB: {new Date(patient.dateOfBirth).toLocaleDateString()} • {patient.phone} - -
+ > +
+ + {patient.firstName} {patient.lastName} + + + DOB:{" "} + {new Date( + patient.dateOfBirth + ).toLocaleDateString()}{" "} + • {patient.phone} + +
)) ) : ( @@ -589,6 +596,22 @@ useEffect(() => { + + {appointment?.id && onDelete && ( + + )}
diff --git a/apps/Frontend/src/components/ui/deleteDialog.tsx b/apps/Frontend/src/components/ui/deleteDialog.tsx index 3c3d957..a1c6f46 100644 --- a/apps/Frontend/src/components/ui/deleteDialog.tsx +++ b/apps/Frontend/src/components/ui/deleteDialog.tsx @@ -2,12 +2,12 @@ export const DeleteConfirmationDialog = ({ isOpen, onConfirm, onCancel, - patientName, + entityName, }: { isOpen: boolean; onConfirm: () => void; onCancel: () => void; - patientName?: string; + entityName?: string; }) => { if (!isOpen) return null; @@ -15,7 +15,9 @@ export const DeleteConfirmationDialog = ({

Confirm Deletion

-

Are you sure you want to delete {patientName}?

+

+ Are you sure you want to delete {entityName}? +