diff --git a/src/queue-list/laboratory-tabs.component.tsx b/src/queue-list/laboratory-tabs.component.tsx index bd2b1732..e3abb8f7 100644 --- a/src/queue-list/laboratory-tabs.component.tsx +++ b/src/queue-list/laboratory-tabs.component.tsx @@ -15,6 +15,7 @@ import { EmptyState } from "@openmrs/esm-patient-common-lib"; import WorkList from "../work-list/work-list.component"; import ReviewList from "../review-list/review-list.component"; import CompletedList from "../completed-list/completed-list.component"; +import { ComponentContext } from "@openmrs/esm-framework/src/internal"; enum TabTypes { STARRED, @@ -23,6 +24,10 @@ enum TabTypes { ALL, } +// The lab-panels-slot will not be visible in the implementer tools UI when used below +// in the value for ComponentContext.Provider as the UI viewer depends on the div that +// cannot be added because of how the Carbon components work. Implementers can add more +// tab extensions to this slot via the routes.js file configuration const labPanelSlot = "lab-panels-slot"; const LaboratoryQueueTabs: React.FC = () => { @@ -32,48 +37,6 @@ const LaboratoryQueueTabs: React.FC = () => { labPanelSlot ) as AssignedExtension[]; - const [derivedSlots, setDerivedSlots] = useState< - { slot: string; extension: string }[] - >([]); - - const extraPanels = useMemo(() => { - const filteredExtensions = tabExtensions.filter( - (extension) => Object.keys(extension.meta).length > 0 - ); - const derivedSlotsBuffer = []; - return filteredExtensions.map((extension, index) => { - const slotName = `${labPanelSlot}-${index}`; - derivedSlotsBuffer.push({ - slot: slotName, - extension: extension.name, - }); - if (filteredExtensions.length === index + 1) { - setDerivedSlots(derivedSlotsBuffer); - } - - return ( - -
-
- -
-
- ); - }); - }, [tabExtensions?.length]); - - useEffect(() => { - derivedSlots.forEach(({ slot, extension }) => { - attach(slot, extension); - }); - - return () => { - derivedSlots.forEach(({ slot }) => { - detachAll(slot); - }); - }; - }, [derivedSlots]); - return (
@@ -118,7 +81,27 @@ const LaboratoryQueueTabs: React.FC = () => { - {extraPanels} + {tabExtensions + .filter((extension) => Object.keys(extension.meta).length > 0) + .map((extension, index) => { + return ( + + + + + + ); + })}