You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
157 lines
3.0 KiB
157 lines
3.0 KiB
4 years ago
|
// @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;
|