// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import * as React from 'react'; import { Popover as MaterialPopover } from '@material-ui/core'; import { PopoverOrigin } from '@material-ui/core/Popover'; import IconButton, { IconButtonProps } from '@material-ui/core/IconButton'; export interface PopoverProps { triggerComponent?: React.ComponentType<{ onClick: (event: React.MouseEvent) => void }>; closeOnContentClick?: boolean; } export class Popover extends React.Component { state = { anchorEl: undefined }; transformOrigin: PopoverOrigin = { vertical: "top", horizontal: "right", }; render() { const Trigger = this.props.triggerComponent || DefaultTrigger; return ( <> {this.props.children} ); } handleClose = () => { this.setState({ anchorEl: undefined }); } handleTriggerClick = (event: React.MouseEvent) => { this.setState({ anchorEl: event.currentTarget }); } handleSelfClick = () => { if (this.props.closeOnContentClick) { this.handleClose(); } } } export const DefaultTrigger: React.SFC = (props) => ( );