From 834666c75484cca3eed3a2f45231b6b0592a3c3d Mon Sep 17 00:00:00 2001 From: Ely Lucas Date: Mon, 21 Oct 2019 06:29:19 -0600 Subject: [PATCH] fix(react): adding change events to iontabs, fixes #19665 (#19711) --- .../src/components/navigation/IonTabBar.tsx | 10 +++++++++- .../react/src/components/navigation/IonTabs.tsx | 16 +++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/react/src/components/navigation/IonTabBar.tsx b/packages/react/src/components/navigation/IonTabBar.tsx index 4bb9593c06..fb656acfd0 100644 --- a/packages/react/src/components/navigation/IonTabBar.tsx +++ b/packages/react/src/components/navigation/IonTabBar.tsx @@ -6,6 +6,8 @@ import { IonTabBarInner } from '../inner-proxies'; import { IonTabButton } from '../proxies'; type Props = LocalJSX.IonTabBar & { + onIonTabsDidChange?: (event: CustomEvent<{ tab: string }>) => void; + onIonTabsWillChange?: (event: CustomEvent<{ tab: string }>) => void; currentPath?: string; slot?: 'bottom' | 'top'; }; @@ -72,9 +74,15 @@ const IonTabBarUnwrapped = /*@__PURE__*/(() => class extends React.Component class extends React.Component { +export class IonTabs extends React.Component { context!: React.ContextType; routerOutletRef: React.Ref = React.createRef(); @@ -38,7 +39,7 @@ export const IonTabs = /*@__PURE__*/(() => class extends React.Component render() { let outlet: React.ReactElement<{}> | undefined; - let tabBar: React.ReactElement<{ slot: 'bottom' | 'top' }> | undefined; + let tabBar: React.ReactElement | undefined; React.Children.forEach(this.props.children, (child: any) => { if (child == null || typeof child !== 'object' || !child.hasOwnProperty('type')) { @@ -48,7 +49,8 @@ export const IonTabs = /*@__PURE__*/(() => class extends React.Component outlet = child; } if (child.type === IonTabBar) { - tabBar = child; + const { onIonTabsDidChange, onIonTabsWillChange } = this.props; + tabBar = React.cloneElement(child, { onIonTabsDidChange, onIonTabsWillChange }); } }); @@ -71,11 +73,7 @@ export const IonTabs = /*@__PURE__*/(() => class extends React.Component ); } - static get displayName() { - return 'IonTabs'; - } - static get contextType() { return NavContext; } -})(); +}