diff --git a/popper.js/popper-tests.ts b/popper.js/popper-tests.ts new file mode 100644 index 0000000000..2dc98bbda3 --- /dev/null +++ b/popper.js/popper-tests.ts @@ -0,0 +1,39 @@ +/// + +import * as Popper from 'popper.js'; + +var reference = document.querySelector('.my-button'); +var thePopper = new Popper( + reference, { + content: 'My awesome popper!' + } +); +thePopper.update(); +thePopper.destroy(); + +var options = { + placement: 'bottom', + offset: 0, + arrowElement: document.querySelector('.arrow'), + modifiersIgnored: ['applyStyle'], + } as Popper.PopperOptions; + +var thePopperWithOptions = new Popper( + reference, { + content: 'My awesome popper!', + }, options); + +var popper = document.querySelector('.my-popper'); +var anotherPopper = new Popper( + reference, + popper +); + +var reference = document.querySelector('.my-button'); +var popper = document.querySelector('.my-popper'); +var anotherPopper = new Popper(reference, popper).onCreate(function(instance) { + console.log(instance.offsets); +}).onUpdate(function(data) { + var p = data.offsets.popper; + console.log(`top: ${p.top}, left: ${p.left}`); +}); diff --git a/popper.js/popper.d.ts b/popper.js/popper.d.ts new file mode 100644 index 0000000000..71713a2ae1 --- /dev/null +++ b/popper.js/popper.d.ts @@ -0,0 +1,58 @@ +// Type definitions for popper.js v0.4.0 +// Project: https://github.com/FezVrasta/popper.js/ +// Definitions by: rhysd +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace Popper { + export interface PopperOptions { + placement?: string; + gpuAcceleration?: boolean; + offset?: number; + boundariesElement?: string | Element; + boundariesPadding?: number; + preventOverflowOrder?: ("left" | "right" | "top" | "bottom")[]; + flipBehavior?: string | string[]; + modifiers?: string[]; + modifiersIgnored?: string[]; + removeOnDestroy?: boolean; + arrowElement?: string | Element; + } + export class Modifiers { + applyStyle(data: Object): Object; + shift(data: Object): Object; + preventOverflow(data: Object): Object; + keepTogether(data: Object): Object; + flip(data: Object): Object; + offset(data: Object): Object; + arrow(data: Object): Object; + } + export interface Data { + placement: string; + offsets: { + popper: { + position: string; + top: number; + left: number; + }; + }; + } +} + +declare class Popper { + public modifiers: Popper.Modifiers; + public placement: string; + + constructor(reference: Element, popper: Element | Object, options?: Popper.PopperOptions); + + destroy(): void; + update(): void; + onCreate(cb: (data: Popper.Data) => void): this; + onUpdate(cb: (data: Popper.Data) => void): this; + parse(config: Object): Element; + runModifiers(data: Object, modifiers: string[], ends: Function): void; + isModifierRequired(): boolean; +} + +declare module "popper.js" { + export = Popper; +}