157 lines
3 KiB
Plaintext
157 lines
3 KiB
Plaintext
// @flow
|
|
|
|
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 Offset = {
|
|
top: number,
|
|
left: number,
|
|
width: number,
|
|
height: number,
|
|
position: Position,
|
|
};
|
|
|
|
export type Boundary = 'scrollParent' | 'viewport' | 'window';
|
|
|
|
export type Behavior = 'flip' | 'clockwise' | 'counterclockwise';
|
|
|
|
export type Data = {
|
|
instance: Popper,
|
|
placement: Placement,
|
|
originalPlacement: Placement,
|
|
flipped: boolean,
|
|
hide: boolean,
|
|
arrowElement: Element,
|
|
styles: CSSStyleDeclaration,
|
|
arrowStyles: CSSStyleDeclaration,
|
|
boundaries: Object,
|
|
offsets: {
|
|
popper: Offset,
|
|
reference: Offset,
|
|
arrow: {
|
|
top: number,
|
|
left: number,
|
|
},
|
|
},
|
|
};
|
|
|
|
export type ModifierFn = (data: Data, options: Object) => Data;
|
|
|
|
export type Padding = {
|
|
top?: number,
|
|
bottom?: number,
|
|
left?: number,
|
|
right?: number,
|
|
};
|
|
|
|
export type BaseModifier = {
|
|
order?: number,
|
|
enabled?: boolean,
|
|
fn?: ModifierFn,
|
|
};
|
|
|
|
export type Modifiers = {
|
|
shift?: BaseModifier,
|
|
offset?: BaseModifier & {
|
|
offset?: number | string,
|
|
},
|
|
preventOverflow?: BaseModifier & {
|
|
priority?: Position[],
|
|
padding?: number | Padding,
|
|
boundariesElement?: Boundary | Element,
|
|
escapeWithReference?: boolean,
|
|
},
|
|
keepTogether?: BaseModifier,
|
|
arrow?: BaseModifier & {
|
|
element?: string | Element | null,
|
|
},
|
|
flip?: BaseModifier & {
|
|
behavior?: Behavior | Position[],
|
|
padding?: number | Padding,
|
|
boundariesElement?: Boundary | Element,
|
|
flipVariations?: boolean,
|
|
flipVariationsByContent?: boolean,
|
|
},
|
|
inner?: BaseModifier,
|
|
hide?: BaseModifier,
|
|
applyStyle?: BaseModifier & {
|
|
onLoad?: Function,
|
|
gpuAcceleration?: boolean,
|
|
},
|
|
computeStyle?: BaseModifier & {
|
|
gpuAcceleration?: boolean,
|
|
x?: 'bottom' | 'top',
|
|
y?: 'left' | 'right',
|
|
},
|
|
|
|
[name: string]: (BaseModifier & { [string]: * }) | null,
|
|
};
|
|
|
|
export type Options = {
|
|
placement?: Placement,
|
|
positionFixed?: boolean,
|
|
eventsEnabled?: boolean,
|
|
modifiers?: Modifiers,
|
|
removeOnDestroy?: boolean,
|
|
|
|
onCreate?: (data: Data) => void,
|
|
|
|
onUpdate?: (data: Data) => void,
|
|
};
|
|
|
|
export type ReferenceObject = {
|
|
+clientHeight: number,
|
|
+clientWidth: number,
|
|
+referenceNode?: Node,
|
|
|
|
getBoundingClientRect():
|
|
| ClientRect
|
|
| {
|
|
width: number,
|
|
height: number,
|
|
top: number,
|
|
right: number,
|
|
bottom: number,
|
|
left: number,
|
|
},
|
|
};
|
|
|
|
export type Instance = {
|
|
destroy: () => void,
|
|
scheduleUpdate: () => void,
|
|
update: () => void,
|
|
enableEventListeners: () => void,
|
|
disableEventListeners: () => void,
|
|
};
|
|
|
|
declare class Popper {
|
|
static placements: Placement;
|
|
|
|
popper: Element;
|
|
reference: Element | ReferenceObject;
|
|
|
|
constructor(
|
|
reference: Element | ReferenceObject,
|
|
popper: Element,
|
|
options?: Options
|
|
): Instance;
|
|
}
|
|
|
|
declare export default typeof Popper;
|