diff --git a/app/.DS_Store b/app/.DS_Store index 61eaee2..6dbe7dc 100644 Binary files a/app/.DS_Store and b/app/.DS_Store differ diff --git a/client/.DS_Store b/client/.DS_Store index 98da61b..1e4f339 100644 Binary files a/client/.DS_Store and b/client/.DS_Store differ diff --git a/client/src/components/center-calendar/CenterCalendar.js b/client/src/components/center-calendar/CenterCalendar.js index 6e2f898..1d0ea14 100644 --- a/client/src/components/center-calendar/CenterCalendar.js +++ b/client/src/components/center-calendar/CenterCalendar.js @@ -458,8 +458,8 @@ const EventsCalendar = () => { } }; - const calendarView =
-
+ const calendarView =
+
{calendar && } {/* Dynamic Legend */}
@@ -483,85 +483,87 @@ const EventsCalendar = () => {
-
-
+
+
List
- {(!groupedEvents || groupedEvents.size === 0) && ( -
- No events for this period -
- )} - { - Array.from(groupedEvents?.keys())?.map((key) => { - return
-
{key}
- { - groupedEvents.get(key).map(eventItem =>
currentTab === 'medicalCalendar' && goToView(eventItem.id)} - style={{ cursor: currentTab === 'medicalCalendar' ? 'pointer' : 'default', padding: '8px 12px', borderRadius: '4px' }} - > - {/* Medical Events */} - {currentTab === 'medicalCalendar' && ( - <> -
- {formatFullName(eventItem.customer)} - {moment(eventItem?.start_time).format('HH:mm')} - {moment(eventItem?.stop_time || eventItem?.start_time).format('HH:mm')} -
-
Provider: {eventItem?.doctor || '-'}
- - )} - - {/* Activities */} - {currentTab === 'activitiesCalendar' && ( - <> -
- {eventItem.title} - {moment(eventItem?.start_time).format('HH:mm')} -
-
Location: {eventItem?.event_location || '-'}
- - )} - - {/* Attendance Notes */} - {currentTab === 'incidentsCalendar' && ( - <> -
- {eventItem?.target_name || eventItem.title} - {moment(eventItem?.start_time).format('MM/DD')} -
-
Reason: {eventItem?.description || '-'}
- - )} - - {/* Meal Plan */} - {currentTab === 'mealPlanCalendar' && ( - <> -
- {eventItem.title} - {eventItem?.meal_type || '-'} -
-
Ingredients: {eventItem?.ingredients || '-'}
- - )} - - {/* Important Dates / Reminders */} - {currentTab === 'reminderDatesCalendar' && ( - <> -
- {eventItem.title} - {moment(eventItem?.start_time).format('MM/DD')} -
-
{eventItem?.target_type === 'vehicle' ? 'Vehicle' : 'Person'}: {eventItem?.target_name || '-'}
- {eventItem?.event_prediction_date &&
Deadline: {moment(eventItem?.event_prediction_date).format('MM/DD/YYYY')}
} - - )} -
) - } +
+ {(!groupedEvents || groupedEvents.size === 0) && ( +
+ No events for this period
- }) - } + )} + { + Array.from(groupedEvents?.keys())?.map((key) => { + return
+
{key}
+ { + groupedEvents.get(key).map(eventItem =>
currentTab === 'medicalCalendar' && goToView(eventItem.id)} + style={{ cursor: currentTab === 'medicalCalendar' ? 'pointer' : 'default', padding: '8px 12px', borderRadius: '4px' }} + > + {/* Medical Events */} + {currentTab === 'medicalCalendar' && ( + <> +
+ {formatFullName(eventItem.customer)} + {moment(eventItem?.start_time).format('HH:mm')} - {moment(eventItem?.stop_time || eventItem?.start_time).format('HH:mm')} +
+
Provider: {eventItem?.doctor || '-'}
+ + )} + + {/* Activities */} + {currentTab === 'activitiesCalendar' && ( + <> +
+ {eventItem.title} + {moment(eventItem?.start_time).format('HH:mm')} +
+
Location: {eventItem?.event_location || '-'}
+ + )} + + {/* Attendance Notes */} + {currentTab === 'incidentsCalendar' && ( + <> +
+ {eventItem?.target_name || eventItem.title} + {moment(eventItem?.start_time).format('MM/DD')} +
+
Reason: {eventItem?.description || '-'}
+ + )} + + {/* Meal Plan */} + {currentTab === 'mealPlanCalendar' && ( + <> +
+ {eventItem.title} + {eventItem?.meal_type || '-'} +
+
Ingredients: {eventItem?.ingredients || '-'}
+ + )} + + {/* Important Dates / Reminders */} + {currentTab === 'reminderDatesCalendar' && ( + <> +
+ {eventItem.title} + {moment(eventItem?.start_time).format('MM/DD')} +
+
{eventItem?.target_type === 'vehicle' ? 'Vehicle' : 'Person'}: {eventItem?.target_name || '-'}
+ {eventItem?.event_prediction_date &&
Deadline: {moment(eventItem?.event_prediction_date).format('MM/DD/YYYY')}
} + + )} +
) + } +
+ }) + } +
diff --git a/client/src/components/customers/CustomersList.js b/client/src/components/customers/CustomersList.js index 98cc15d..48f33d8 100644 --- a/client/src/components/customers/CustomersList.js +++ b/client/src/components/customers/CustomersList.js @@ -50,7 +50,7 @@ const CustomersList = () => { navigate(`/customers`); } - const additionalButtons = ( + const additionalButtons = ({ showExportDropdown, onExportToggle }) => ( <>
diff --git a/client/src/shared/components/Export.js b/client/src/shared/components/Export.js index 5bd62ca..0985595 100644 --- a/client/src/shared/components/Export.js +++ b/client/src/shared/components/Export.js @@ -2,12 +2,16 @@ import React, { useState } from "react"; import { Dropdown } from "react-bootstrap"; import { Download } from "react-bootstrap-icons"; -const Export = ({ columns, data, filename = "export", customActions = [] }) => { - const [showExportDropdown, setShowExportDropdown] = useState(false); +const Export = ({ columns, data, filename = "export", customActions = [], show, onToggle }) => { + const [internalShow, setInternalShow] = useState(false); const [exportColumns, setExportColumns] = useState( columns.map(col => ({ ...col, show: true })) ); + // Use external control if provided, otherwise use internal state + const showExportDropdown = show !== undefined ? show : internalShow; + const handleToggle = onToggle || ((isOpen) => setInternalShow(isOpen)); + const handleColumnToggle = (columnKey) => { const updatedColumns = exportColumns.map(col => col.key === columnKey ? { ...col, show: !col.show } : col @@ -17,7 +21,7 @@ const Export = ({ columns, data, filename = "export", customActions = [] }) => { const handleCancel = () => { setExportColumns(columns.map(col => ({ ...col, show: true }))); - setShowExportDropdown(false); + handleToggle(false); }; const generateCSV = () => { @@ -179,7 +183,7 @@ const Export = ({ columns, data, filename = "export", customActions = [] }) => { id="export-dropdown" className="me-2" show={showExportDropdown} - onToggle={() => setShowExportDropdown(!showExportDropdown)} + onToggle={handleToggle} autoClose={false} >