import React, { useEffect, useMemo, useState } from 'react'; import { Tab, Tabs, TabList, TabPanels } from '@carbon/react'; import { useTranslation } from 'react-i18next'; import { showSnackbar, useConfig, useSession } from '@openmrs/esm-framework'; import { type CustomTab } from '../types'; import { type PharmacyConfig } from '../config-schema'; import { MissingOptionalBackendDependencyError, useLocations } from '../location/location.resource'; import PatientSearchTabPanel from './patient-search-tab-panel.component'; import PrescriptionTabPanel from './prescription-tab-panel.component'; import styles from './prescriptions.scss'; const PrescriptionTabLists: React.FC = () => { const { t } = useTranslation(); const config = useConfig(); const session = useSession(); const { locations, isLoading: isLocationsLoading, error: locationsError } = useLocations(config); useEffect(() => { if (locationsError instanceof MissingOptionalBackendDependencyError) { showSnackbar({ kind: 'error', title: t('configurationError', 'Configuration error'), subtitle: t( 'locationFilterMisconfigured', 'The location filter is misconfigured. Check that the required backend module is installed.', ), }); } }, [locationsError, t]); const [selectedTab, setSelectedTab] = useState(0); // filter tabs based on session location const customTabs: Array = useMemo(() => { return ( config?.customTabs?.filter( (tab) => !tab.associatedLocations || tab.associatedLocations.includes(session.sessionLocation?.uuid), ) || [] ); }, [session, config]); const handleTabChange = (event) => { setSelectedTab(event.selectedIndex); }; return (
{t('search', 'Search')} {t('activePrescriptions', 'Active Prescriptions')} {t('allPrescriptions', 'All Prescriptions')} {customTabs.map((tab, index) => ( {t(tab.title)} ))} {customTabs.map((tab, index) => ( ))}
); }; export default PrescriptionTabLists;