@@ -11,9 +11,11 @@ import {
1111 type ConfigObject ,
1212 useLayoutType ,
1313 isDesktop ,
14+ useAssignedExtensions ,
1415} from '@openmrs/esm-framework' ;
1516import { useAppointmentsStore } from '../../store' ;
1617import styles from './scheduled-appointments.scss' ;
18+ import { type AppointmentPanelConfig } from '../../scheduled-appointments-config-schema' ;
1719
1820dayjs . extend ( isSameOrBefore ) ;
1921
@@ -37,7 +39,7 @@ const ScheduledAppointments: React.FC<ScheduledAppointmentsProps> = ({ appointme
3739
3840 const [ currentTab , setCurrentTab ] = useState ( null ) ;
3941 const [ dateType , setDateType ] = useState < DateType > ( 'today' ) ;
40- const scheduledAppointmentPanels = useConnectedExtensions ( scheduledAppointmentsPanelsSlot ) ;
42+ const scheduledAppointmentPanels = useAssignedExtensions ( scheduledAppointmentsPanelsSlot ) ;
4143 const { allowedExtensions, showExtension, hideExtension } = useAllowedExtensions ( ) ;
4244 const shouldShowPanel = useCallback (
4345 ( panel : Omit < ConnectedExtension , 'config' > ) => allowedExtensions [ panel . name ] ?? false ,
@@ -78,7 +80,7 @@ const ScheduledAppointments: React.FC<ScheduledAppointmentsProps> = ({ appointme
7880 < ContentSwitcher
7981 className = { styles . switcher }
8082 size = { responsiveSize }
81- onChange = { ( { name } ) => setCurrentTab ( name ) }
83+ onChange = { ( { name } ) => setCurrentTab ( name as string ) }
8284 selectedIndex = { panelsToShow . findIndex ( ( panel ) => panel . name == currentTab ) ?? 0 }
8385 selectionMode = "manual" >
8486 { panelsToShow . map ( ( panel ) => (
@@ -161,12 +163,18 @@ function ExtensionWrapper({
161163 ) {
162164 currentConfig . current = extension . config ;
163165 currentDateType . current = dateType ;
164- void ( shouldDisplayExtensionTab ( extension ?. config , dateType )
165- ? showExtensionTab ( extension . name )
166- : hideExtensionTab ( extension . name ) ) ;
166+ if ( shouldDisplayExtensionTab ( extension ?. config as AppointmentPanelConfig , dateType ) ) {
167+ showExtensionTab ( extension . name ) ;
168+ } else {
169+ hideExtensionTab ( extension . name ) ;
170+ }
167171 }
168172 } , [ extension , dateType , showExtensionTab , hideExtensionTab ] ) ;
169173
174+ if ( extension . config == null ) {
175+ return null ;
176+ }
177+
170178 return (
171179 < div
172180 key = { extension . name }
@@ -184,7 +192,7 @@ function ExtensionWrapper({
184192 ) ;
185193}
186194
187- function shouldDisplayExtensionTab ( config : ConfigObject | undefined , dateType : DateType ) : boolean {
195+ function shouldDisplayExtensionTab ( config : AppointmentPanelConfig | undefined , dateType : DateType ) : boolean {
188196 if ( ! config ) {
189197 return false ;
190198 }
0 commit comments