import React from 'react';
import { Pressable, StyleSheet, View, type ViewStyle } from 'react-native';
import { Portal } from '../../../../internal/overlay/Portal';
import type { PopoverPlacement } from '../../../../types/popover';
import { usePopoverLayout } from './usePopoverLayout';
/*** Renders and positions one mounted popover overlay for an open anchor. */
export function PopoverOverlay({
anchorRef,
children,
closeOnOutsidePress,
offset,
onClose,
passive,
placement,
testID,
}: PopoverOverlayProps) {
const { onContentLayout, position, ready } = usePopoverLayout({
anchorRef,
offset,
open: true,
placement,
});
return (
{closeOnOutsidePress ? (
) : null}
{children}
);
}
interface PopoverOverlayProps {
anchorRef: React.RefObject | null>;
children?: React.ReactNode;
closeOnOutsidePress: boolean;
offset: number;
onClose: () => void;
passive: boolean;
placement: PopoverPlacement;
testID?: string;
}
const absoluteFill: ViewStyle = {
bottom: 0,
left: 0,
position: 'absolute',
right: 0,
top: 0,
};
const styles = StyleSheet.create({
backdrop: absoluteFill,
content: { position: 'absolute' },
overlay: absoluteFill,
});