UNPKG

@base-ui-components/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

52 lines 2.21 kB
import * as React from 'react'; import { ReactStore } from '@base-ui-components/utils/store'; import type { FloatingEvents, ContextData, ReferenceType } from "../types.js"; import { type BaseUIChangeEventDetails } from "../../utils/createBaseUIEventDetails.js"; import { type PopupTriggerMap } from "../../utils/popups/index.js"; export interface FloatingRootState { open: boolean; domReferenceElement: Element | null; referenceElement: ReferenceType | null; floatingElement: HTMLElement | null; positionReference: ReferenceType | null; /** * The ID of the floating element. */ floatingId: string | undefined; } export interface FloatingRootStoreContext { onOpenChange: ((open: boolean, eventDetails: BaseUIChangeEventDetails<string>) => void) | undefined; readonly dataRef: React.RefObject<ContextData>; readonly events: FloatingEvents; nested: boolean; noEmit: boolean; readonly triggerElements: PopupTriggerMap; } declare const selectors: { open: (state: FloatingRootState) => boolean; domReferenceElement: (state: FloatingRootState) => Element | null; referenceElement: (state: FloatingRootState) => ReferenceType | null; floatingElement: (state: FloatingRootState) => HTMLElement | null; floatingId: (state: FloatingRootState) => string | undefined; }; interface FloatingRootStoreOptions { open: boolean; referenceElement: ReferenceType | null; floatingElement: HTMLElement | null; triggerElements: PopupTriggerMap; floatingId: string | undefined; nested: boolean; noEmit: boolean; onOpenChange: ((open: boolean, eventDetails: BaseUIChangeEventDetails<string>) => void) | undefined; } export declare class FloatingRootStore extends ReactStore<Readonly<FloatingRootState>, FloatingRootStoreContext, typeof selectors> { constructor(options: FloatingRootStoreOptions); /** * Emits the `openchange` event through the internal event emitter and calls the `onOpenChange` handler with the provided arguments. * * @param newOpen The new open state. * @param eventDetails Details about the event that triggered the open state change. */ setOpen: (newOpen: boolean, eventDetails: BaseUIChangeEventDetails<string>) => void; } export {};