import type { JSX as LocalJSX } from '@ionic/core/components'; import React from 'react'; import type { RouterOptions } from '../../models'; import type { IonicReactProps } from '../IonicReactProps'; import { IonTabButtonInner } from '../inner-proxies'; type Props = LocalJSX.IonTabButton & IonicReactProps & { routerOptions?: RouterOptions; ref?: React.Ref; onClick?: (e: CustomEvent) => void; onPointerDown?: React.PointerEventHandler; onTouchEnd?: React.TouchEventHandler; onTouchMove?: React.TouchEventHandler; children?: React.ReactNode; }; export class IonTabButton extends React.Component { shouldComponentUpdate(): boolean { return true; } constructor(props: Props) { super(props); this.handleIonTabButtonClick = this.handleIonTabButtonClick.bind(this); } handleIonTabButtonClick() { if (this.props.onClick) { this.props.onClick( new CustomEvent('ionTabButtonClick', { detail: { tab: this.props.tab, href: this.props.href, routeOptions: this.props.routerOptions, }, }) ); } } render() { /** * onClick is excluded from the props, since it has a custom * implementation within IonTabBar.tsx. Calling onClick within this * component would result in duplicate handler calls. */ // eslint-disable-next-line @typescript-eslint/no-unused-vars const { onClick, ...rest } = this.props; return ; } static get displayName() { return 'IonTabButton'; } }