/** * @fileoverview This file only declares the public portions of the API. * It should not define internal pieces such as utils or modifier details. * * Original definitions by: edcarroll , ggray , rhysd , joscha , seckardt , marcfallows */ /** * This kind of namespace declaration is not necessary, but is kept here for backwards-compatibility with * popper.js 1.x. It can be removed in 2.x so that the default export is simply the Popper class * and all the types / interfaces are top-level named exports. */ declare namespace Popper { export type Position = 'top' | 'right' | 'bottom' | 'left'; export type Placement = 'auto-start' | 'auto' | 'auto-end' | 'top-start' | 'top' | 'top-end' | 'right-start' | 'right' | 'right-end' | 'bottom-end' | 'bottom' | 'bottom-start' | 'left-end' | 'left' | 'left-start'; export type Boundary = 'scrollParent' | 'viewport' | 'window'; export type Behavior = 'flip' | 'clockwise' | 'counterclockwise'; export type ModifierFn = (data: Data, options: Object) => Data; export interface BaseModifier { order?: number; enabled?: boolean; fn?: ModifierFn; } export interface Modifiers { shift?: BaseModifier; offset?: BaseModifier & { offset?: number | string, }; preventOverflow?: BaseModifier & { priority?: Position[], padding?: number, boundariesElement?: Boundary | Element, escapeWithReference?: boolean }; keepTogether?: BaseModifier; arrow?: BaseModifier & { element?: string | Element, }; flip?: BaseModifier & { behavior?: Behavior | Position[], padding?: number, boundariesElement?: Boundary | Element, }; inner?: BaseModifier; hide?: BaseModifier; applyStyle?: BaseModifier & { onLoad?: Function, gpuAcceleration?: boolean, }; computeStyle?: BaseModifier & { gpuAcceleration?: boolean; x?: 'bottom' | 'top', y?: 'left' | 'right' }; [name: string]: (BaseModifier & Record) | undefined; } export interface Offset { top: number; left: number; width: number; height: number; } export interface Data { instance: Popper; placement: Placement; originalPlacement: Placement; flipped: boolean; hide: boolean; arrowElement: Element; styles: CSSStyleDeclaration; boundaries: Object; offsets: { popper: Offset, reference: Offset, arrow: { top: number, left: number, }, }; } export interface PopperOptions { placement?: Placement; positionFixed?: boolean; eventsEnabled?: boolean; modifiers?: Modifiers; removeOnDestroy?: boolean; onCreate?(data: Data): void; onUpdate?(data: Data): void; } export interface ReferenceObject { clientHeight: number; clientWidth: number; getBoundingClientRect(): ClientRect; } } // Re-export types in the Popper namespace so that they can be accessed as top-level named exports. // These re-exports should be removed in 2.x when the "declare namespace Popper" syntax is removed. export type Position = Popper.Position; export type Placement = Popper.Placement; export type Boundary = Popper.Boundary; export type Behavior = Popper.Behavior; export type ModifierFn = Popper.ModifierFn; export type BaseModifier = Popper.BaseModifier; export type Modifiers = Popper.Modifiers; export type Offset = Popper.Offset; export type Data = Popper.Data; export type PopperOptions = Popper.PopperOptions; export type ReferenceObject = Popper.ReferenceObject; declare class Popper { static modifiers: (BaseModifier & { name: string })[]; static placements: Placement[]; static Defaults: PopperOptions; options: PopperOptions; constructor(reference: Element | ReferenceObject, popper: Element, options?: PopperOptions); destroy(): void; update(): void; scheduleUpdate(): void; enableEventListeners(): void; disableEventListeners(): void; } export default Popper;