import { Component, Children, cloneElement } from 'react'; import PopoverContext, { IPopoverContext } from '../Context'; import Anchor from '../Anchor'; export interface IPopoverTriggerProps { children: React.ReactElement | string | number; } /** * @deprecated */ export class PopoverTrigger< TriggerChildProps = {}, // eslint-disable-line @typescript-eslint/ban-types T extends IPopoverTriggerProps = IPopoverTriggerProps > extends Component { static contextType = PopoverContext; context!: IPopoverContext; protected getTriggerProps( _child: React.ReactElement ): Partial { return {}; } render() { let child: React.ReactElement | string | number = Children.only(this.props.children); if (!child) { throw new Error('Popover Trigger requires a child'); } if (typeof child === 'number' || typeof child === 'string') { child = {child}; } return {cloneElement(child, this.getTriggerProps(child))}; } } export default PopoverTrigger;