UNPKG

1.29 kBTypeScriptView Raw
1import * as React from 'react';
2import * as PropTypes from 'prop-types';
3import ReakitPopover from 'reakit/Popover';
4
5export type PopoverContainerRenderProps = {
6 isVisible: boolean;
7 hide(): void;
8 show(): void;
9 toggle(): void;
10};
11export type LocalPopoverContainerProps = {
12 children: ({ isVisible, hide, show, toggle, ...args }: PopoverContainerRenderProps) => React.ReactNode;
13 defaultVisible?: boolean;
14 initialState?: {};
15};
16export type PopoverContainerProps = LocalPopoverContainerProps;
17
18export const PopoverContainer: React.FunctionComponent<LocalPopoverContainerProps> = ({
19 children,
20 defaultVisible,
21 initialState,
22 ...props
23}) => (
24 <ReakitPopover.Container initialState={{ visible: defaultVisible, ...initialState }} {...props}>
25 {({ visible, ...rest }: { visible: boolean }) => children({ isVisible: visible, ...rest } as any)}
26 </ReakitPopover.Container>
27);
28
29export const popoverContainerPropTypes = {
30 children: PropTypes.func.isRequired,
31 defaultVisible: PropTypes.bool,
32 initialState: PropTypes.object
33};
34PopoverContainer.propTypes = popoverContainerPropTypes;
35
36export const popoverContainerDefaultProps = {
37 defaultVisible: false,
38 initialState: {}
39};
40PopoverContainer.defaultProps = popoverContainerDefaultProps;
41
42export default PopoverContainer;