1
+ import { JSX as LocalJSX } from '@ionic/core' ;
1
2
import React from 'react' ;
2
3
3
4
import { NavContext } from '../../contexts/NavContext' ;
4
5
import { IonRouterOutlet } from '../IonRouterOutlet' ;
5
6
6
7
import { IonTabBar } from './IonTabBar' ;
7
8
8
- interface Props {
9
+ interface Props extends LocalJSX . IonTabs {
9
10
children : React . ReactNode ;
10
11
}
11
12
@@ -28,7 +29,7 @@ const tabsInner: React.CSSProperties = {
28
29
contain : 'layout size style'
29
30
} ;
30
31
31
- export const IonTabs = /* @__PURE__ */ ( ( ) => class extends React . Component < Props > {
32
+ export class IonTabs extends React . Component < Props > {
32
33
context ! : React . ContextType < typeof NavContext > ;
33
34
routerOutletRef : React . Ref < HTMLIonRouterOutletElement > = React . createRef ( ) ;
34
35
@@ -38,7 +39,7 @@ export const IonTabs = /*@__PURE__*/(() => class extends React.Component<Props>
38
39
39
40
render ( ) {
40
41
let outlet : React . ReactElement < { } > | undefined ;
41
- let tabBar : React . ReactElement < { slot : 'bottom' | 'top' } > | undefined ;
42
+ let tabBar : React . ReactElement | undefined ;
42
43
43
44
React . Children . forEach ( this . props . children , ( child : any ) => {
44
45
if ( child == null || typeof child !== 'object' || ! child . hasOwnProperty ( 'type' ) ) {
@@ -48,7 +49,8 @@ export const IonTabs = /*@__PURE__*/(() => class extends React.Component<Props>
48
49
outlet = child ;
49
50
}
50
51
if ( child . type === IonTabBar ) {
51
- tabBar = child ;
52
+ const { onIonTabsDidChange, onIonTabsWillChange } = this . props ;
53
+ tabBar = React . cloneElement ( child , { onIonTabsDidChange, onIonTabsWillChange } ) ;
52
54
}
53
55
} ) ;
54
56
@@ -71,11 +73,7 @@ export const IonTabs = /*@__PURE__*/(() => class extends React.Component<Props>
71
73
) ;
72
74
}
73
75
74
- static get displayName ( ) {
75
- return 'IonTabs' ;
76
- }
77
-
78
76
static get contextType ( ) {
79
77
return NavContext ;
80
78
}
81
- } ) ( ) ;
79
+ }
0 commit comments