UNPKG

@neo4j-ndl/react

Version:

React implementation of Neo4j Design System

53 lines (52 loc) 2.39 kB
/** * * Copyright (c) "Neo4j" * Neo4j Sweden AB [http://neo4j.com] * * This file is part of Neo4j. * * Neo4j is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import { type OffsetOptions, type Placement, useFloating, type UseInteractionsReturn } from '@floating-ui/react'; export interface PopoverOptions { isInitialOpen?: boolean; placement?: Placement; isOpen?: boolean; onOpenChange?: (open: boolean, event?: Event) => void; offsetOption?: OffsetOptions; anchorElement?: Element | null; anchorPosition?: { x: number; y: number; }; anchorElementAsPortalAnchor?: boolean; shouldCaptureFocus?: boolean; initialFocus?: number | React.MutableRefObject<HTMLElement | null>; role?: 'tooltip' | 'dialog' | 'alertdialog' | 'menu' | 'listbox' | 'grid' | 'tree'; closeOnClickOutside?: boolean; strategy?: 'fixed' | 'absolute'; } export interface UsePopoverReturn extends UseInteractionsReturn, ReturnType<typeof useFloating> { isOpen: boolean; setIsOpen: (isOpen: boolean) => void; labelId: string | undefined; descriptionId: string | undefined; transitionStyles: React.CSSProperties; setLabelId: (labelId: string | undefined) => void; setDescriptionId: (descriptionId: string | undefined) => void; anchorElementAsPortalAnchor: boolean | undefined; shouldCaptureFocus: boolean | undefined; initialFocus: number | React.MutableRefObject<HTMLElement | null> | undefined; } export declare function usePopover({ isInitialOpen, placement, isOpen: controlledOpen, onOpenChange: setControlledOpen, offsetOption, anchorElement, anchorPosition, anchorElementAsPortalAnchor, shouldCaptureFocus, initialFocus, role: roleProp, closeOnClickOutside, strategy, }?: PopoverOptions): UsePopoverReturn;