index.d.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. // Type definitions for popper.js 1.10
  2. // Project: https://github.com/FezVrasta/popper.js/
  3. // Definitions by: edcarroll <https://github.com/edcarroll>, ggray <https://github.com/giladgray>, rhysd <https://rhysd.github.io>, joscha <https://github.com/joscha>, seckardt <https://github.com/seckardt>, marcfallows <https://github.com/marcfallows>
  4. // This file only declares the public portions of the API.
  5. // It should not define internal pieces such as utils or modifier details.
  6. export type Position = 'top' | 'right' | 'bottom' | 'left';
  7. export type Placement = 'auto-start'
  8. | 'auto'
  9. | 'auto-end'
  10. | 'top-start'
  11. | 'top'
  12. | 'top-end'
  13. | 'right-start'
  14. | 'right'
  15. | 'right-end'
  16. | 'bottom-end'
  17. | 'bottom'
  18. | 'bottom-start'
  19. | 'left-end'
  20. | 'left'
  21. | 'left-start';
  22. export type Boundary = 'scrollParent' | 'viewport' | 'window';
  23. export type Behavior = 'flip' | 'clockwise' | 'counterclockwise';
  24. export type ModifierFn = (data: Data, options: Object) => Data;
  25. export interface BaseModifier {
  26. order?: number;
  27. enabled?: boolean;
  28. fn?: ModifierFn;
  29. }
  30. export interface Modifiers {
  31. shift?: BaseModifier;
  32. offset?: BaseModifier & {
  33. offset?: number | string,
  34. };
  35. preventOverflow?: BaseModifier & {
  36. priority?: Position[],
  37. padding?: number,
  38. boundariesElement?: Boundary | Element,
  39. escapeWithReference?: boolean
  40. };
  41. keepTogether?: BaseModifier;
  42. arrow?: BaseModifier & {
  43. element?: string | Element,
  44. };
  45. flip?: BaseModifier & {
  46. behavior?: Behavior | Position[],
  47. padding?: number,
  48. boundariesElement?: Boundary | Element,
  49. };
  50. inner?: BaseModifier;
  51. hide?: BaseModifier;
  52. applyStyle?: BaseModifier & {
  53. onLoad?: Function,
  54. gpuAcceleration?: boolean,
  55. };
  56. computeStyle?: BaseModifier & {
  57. gpuAcceleration?: boolean;
  58. x?: 'bottom' | 'top',
  59. y?: 'left' | 'right'
  60. };
  61. [name: string]: (BaseModifier & Record<string, any>) | undefined;
  62. }
  63. export interface Offset {
  64. top: number;
  65. left: number;
  66. width: number;
  67. height: number;
  68. }
  69. export interface Data {
  70. instance: Popper;
  71. placement: Placement;
  72. originalPlacement: Placement;
  73. flipped: boolean;
  74. hide: boolean;
  75. arrowElement: Element;
  76. styles: CSSStyleDeclaration;
  77. boundaries: Object;
  78. offsets: {
  79. popper: Offset,
  80. reference: Offset,
  81. arrow: {
  82. top: number,
  83. left: number,
  84. },
  85. };
  86. }
  87. export interface PopperOptions {
  88. placement?: Placement;
  89. positionFixed?: boolean;
  90. eventsEnabled?: boolean;
  91. modifiers?: Modifiers;
  92. removeOnDestroy?: boolean;
  93. onCreate?(data: Data): void;
  94. onUpdate?(data: Data): void;
  95. }
  96. export interface ReferenceObject {
  97. clientHeight: number;
  98. clientWidth: number;
  99. getBoundingClientRect(): ClientRect;
  100. }
  101. declare class Popper {
  102. static modifiers: (BaseModifier & { name: string })[];
  103. static placements: Placement[];
  104. static Defaults: PopperOptions;
  105. options: PopperOptions;
  106. constructor(reference: Element | ReferenceObject, popper: Element, options?: PopperOptions);
  107. destroy(): void;
  108. update(): void;
  109. scheduleUpdate(): void;
  110. enableEventListeners(): void;
  111. disableEventListeners(): void;
  112. }
  113. export default Popper;