import { FloatingFocusManager, FloatingPortal, useDismiss, useFloating, useInteractions, useRole, } from '@floating-ui/react'; import { Transition, TransitionChild } from '@headlessui/react'; import { FocusScope } from '@react-aria/focus'; import { ThemeProvider, useTheme } from '@wise/components-theming'; import { clsx } from 'clsx'; import { Fragment, useState } from 'react'; import { CloseButton } from '../../../common/closeButton'; import { useVirtualKeyboard } from '../../../common/hooks/useVirtualKeyboard'; import { PreventScroll } from '../../../common/preventScroll/PreventScroll'; import { Size } from '../../../common/propsValues/size'; export interface SelectInputBottomSheetProps { open: boolean; renderTrigger?: (args: { ref: React.RefCallback; getInteractionProps: (customEventHandlers?: React.HTMLProps) => { [key: string]: unknown; }; }) => React.ReactNode; title?: string; initialFocusRef?: React.MutableRefObject; padding?: 'none' | 'md'; children?: React.ReactNode; onClose?: () => void; onCloseEnd?: () => void; } export function SelectInputBottomSheet({ open, renderTrigger, title, initialFocusRef, padding = 'md', children, onClose, onCloseEnd, }: SelectInputBottomSheetProps) { useVirtualKeyboard(open); const { refs, context } = useFloating({ open, onOpenChange: (value) => { if (!value) { onClose?.(); } }, }); const dismiss = useDismiss(context); const role = useRole(context); const { getReferenceProps, getFloatingProps } = useInteractions([dismiss, role]); const [floatingKey, setFloatingKey] = useState(0); const { theme, screenMode } = useTheme(); return ( <> {open ? : null} {renderTrigger?.({ ref: refs.setReference, getInteractionProps: getReferenceProps, })} { setFloatingKey((prev) => prev + 1); }} afterLeave={onCloseEnd} >
{ onClose?.(); }} />
{title ? (

{title}

) : null}
{children}
); }