import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Tab, TabList, TabPanel, TabPanels, Tabs } from '@carbon/react'; import { Extension, useAssignedExtensions, useConfig } from '@openmrs/esm-framework'; // ComponentContext is not part of the public API but is needed here to render extensions // inside Carbon Tabs structure (TabList + TabPanels must be separate siblings). // eslint-disable-next-line no-restricted-imports import { ComponentContext } from '@openmrs/esm-framework/src/internal'; import { type Config } from '../config-schema'; import styles from './laboratory-tabs.scss'; const labPanelSlot = 'lab-panels-slot'; const LaboratoryOrdersTabs: React.FC = () => { const { t } = useTranslation(); const { enableReviewingLabResultsBeforeApproval } = useConfig(); const [selectedTab, setSelectedTab] = useState(0); const tabExtensions = useAssignedExtensions(labPanelSlot); const filteredExtensions = tabExtensions.filter((extension) => { const meta = extension.meta ?? {}; if (Object.keys(meta).length === 0) { return false; } if (meta.name === 'pendingReviewPanel') { return enableReviewingLabResultsBeforeApproval === true; } return true; }); return (
setSelectedTab(selectedIndex)}> {filteredExtensions.map((extension) => { const { name, title } = extension.meta ?? {}; if (name && title) { return ( {t(title, { ns: extension.moduleName, defaultValue: title, })} ); } else { return null; } })} {filteredExtensions.map((extension) => ( ))}
); }; export default LaboratoryOrdersTabs;