react-native-popover-view
Version:
A <Popover /> component for react-native iOS, Android, and Web
61 lines (60 loc) • 2.83 kB
TypeScript
import { Component, PropsWithChildren, RefObject, ReactNode } from 'react';
import PropTypes from 'prop-types';
import { ViewProps } from 'react-native';
import { Rect, PopoverProps, Placement, Mode, Point, Size } from './Types';
export interface PublicPopoverProps extends PropsWithChildren<Omit<PopoverProps, 'displayArea' | 'arrowSize'>> {
displayArea?: Pick<Rect, 'x' | 'y' | 'width' | 'height'>;
arrowSize?: Pick<Size, 'width' | 'height'>;
mode?: Mode;
from?: Rect | RefObject<Component> | ((sourceRef: RefObject<Component>, openPopover: () => void) => ReactNode) | ReactNode | Point;
testID?: ViewProps['testID'];
}
interface PublicPopoverState {
isVisible: boolean;
}
export default class Popover extends Component<PublicPopoverProps, PublicPopoverState> {
static propTypes: {
isVisible: PropTypes.Requireable<boolean>;
from: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
displayArea: PropTypes.Requireable<Required<PropTypes.InferProps<{
x: PropTypes.Requireable<number>;
y: PropTypes.Requireable<number>;
width: PropTypes.Requireable<number>;
height: PropTypes.Requireable<number>;
}>>>;
displayAreaInsets: PropTypes.Requireable<PropTypes.InferProps<{
left: PropTypes.Requireable<number>;
right: PropTypes.Requireable<number>;
top: PropTypes.Requireable<number>;
bottom: PropTypes.Requireable<number>;
}>>;
placement: PropTypes.Requireable<Placement | (Placement | null | undefined)[]>;
animationConfig: PropTypes.Requireable<object>;
popoverStyle: any;
popoverShift: PropTypes.Requireable<PropTypes.InferProps<{
x: PropTypes.Requireable<number>;
y: PropTypes.Requireable<number>;
}>>;
backgroundStyle: any;
arrowSize: PropTypes.Requireable<PropTypes.InferProps<{
width: PropTypes.Requireable<number>;
height: PropTypes.Requireable<number>;
}>>;
arrowShift: PropTypes.Requireable<number>;
onOpenStart: PropTypes.Requireable<(...args: any[]) => any>;
onOpenComplete: PropTypes.Requireable<(...args: any[]) => any>;
onRequestClose: PropTypes.Requireable<(...args: any[]) => any>;
onCloseStart: PropTypes.Requireable<(...args: any[]) => any>;
onCloseComplete: PropTypes.Requireable<(...args: any[]) => any>;
onPositionChange: PropTypes.Requireable<(...args: any[]) => any>;
debug: PropTypes.Requireable<boolean>;
};
static defaultProps: Partial<PublicPopoverProps>;
state: {
isVisible: boolean;
};
requestClose(): void;
private sourceRef;
render(): ReactNode;
}
export {};