UNPKG

2.34 kBTypeScriptView Raw
1import * as Popper from '@popperjs/core';
2export declare type Modifier<Name, Options> = Popper.Modifier<Name, Options>;
3export declare type Options = Popper.Options;
4export declare type Instance = Popper.Instance;
5export declare type Placement = Popper.Placement;
6export declare type VirtualElement = Popper.VirtualElement;
7export declare type State = Popper.State;
8export declare type ModifierMap = Record<string, Partial<Modifier<any, any>>>;
9export declare type Modifiers = Popper.Options['modifiers'] | Record<string, Partial<Modifier<any, any>>>;
10export declare function toModifierMap(modifiers: Modifiers | undefined): Record<string, Partial<Popper.Modifier<any, any>>>;
11export declare function toModifierArray(map?: Modifiers | undefined): Partial<Popper.Modifier<any, any>>[];
12export declare type UsePopperOptions = Omit<Options, 'modifiers' | 'placement' | 'strategy'> & {
13 placement?: Options['placement'];
14 strategy?: Options['strategy'];
15 modifiers?: Modifiers;
16 eventsEnabled?: boolean;
17 enabled?: boolean;
18};
19export interface UsePopperState {
20 placement: Placement;
21 outOfBoundaries: boolean;
22 scheduleUpdate: () => void;
23 styles: Partial<CSSStyleDeclaration>;
24 arrowStyles: Partial<CSSStyleDeclaration>;
25 state?: State;
26}
27/**
28 * Position an element relative some reference element using Popper.js
29 *
30 * @param referenceElement
31 * @param popperElement
32 * @param {object} options
33 * @param {object=} options.modifiers Popper.js modifiers
34 * @param {boolean=} options.enabled toggle the popper functionality on/off
35 * @param {string=} options.placement The popper element placement relative to the reference element
36 * @param {string=} options.strategy the positioning strategy
37 * @param {boolean=} options.eventsEnabled have Popper listen on window resize events to reposition the element
38 * @param {function=} options.onCreate called when the popper is created
39 * @param {function=} options.onUpdate called when the popper is updated
40 *
41 * @returns {UsePopperState} The popper state
42 */
43declare function usePopper(referenceElement: VirtualElement | null | undefined, popperElement: HTMLElement | null | undefined, { enabled, placement, strategy, eventsEnabled, modifiers: userModifiers, ...popperOptions }?: UsePopperOptions): UsePopperState;
44export default usePopper;