import React, { useCallback, useMemo, useState } from 'react'; import dayjs from 'dayjs'; import { useTranslation } from 'react-i18next'; import { MultiSelect } from '@carbon/react'; import { PageHeader, PageHeaderContent, AppointmentsPictogram, OpenmrsDatePicker } from '@openmrs/esm-framework'; import { omrsDateFormat } from '../constants'; import { useAppointmentServices } from '../hooks/useAppointmentService'; import { useSelectedDateContext } from '../hooks/selected-date-context'; import styles from './appointments-header.scss'; interface AppointmentHeaderProps { title: string; appointmentServiceTypes?: Array; onChange?: (evt) => void; } const AppointmentsHeader: React.FC = ({ title, onChange }) => { const { t } = useTranslation(); const { selectedDate, setSelectedDate } = useSelectedDateContext(); const { serviceTypes } = useAppointmentServices(); const [selectedItems, setSelectedItems] = useState([]); const handleMultiSelectChange = useCallback( ({ selectedItems }) => { const selectedUuids = selectedItems.map((item) => item.id); setSelectedItems(selectedUuids); onChange?.(selectedUuids); }, [onChange], ); const serviceTypeOptions = useMemo( () => serviceTypes?.map((item) => ({ id: item.uuid, label: item.name })) ?? [], [serviceTypes], ); return ( } title={title} />
setSelectedDate(dayjs(date).startOf('day').format(omrsDateFormat))} value={dayjs(selectedDate).toDate()} /> {typeof onChange === 'function' && ( (item ? item.label : '')} label={t('filterAppointmentsByServiceType', 'Filter appointments by service type')} onChange={handleMultiSelectChange} type="inline" /> )}
); }; export default AppointmentsHeader;