UNPKG

4.2 kBTypeScriptView Raw
1import Popper from 'popper.js'
2
3export type BasicPlacement = 'top' | 'bottom' | 'left' | 'right'
4
5export type Placement = Popper.Placement
6
7export type Content = string | Element | ((ref: Element) => Element | string)
8
9export type Targets = string | Element | Element[] | NodeList | VirtualReference
10
11export interface ReferenceElement extends Element {
12 _tippy?: Instance
13}
14
15export interface PopperElement extends HTMLDivElement {
16 _tippy?: Instance
17}
18
19export interface VirtualReference extends Popper.ReferenceObject {
20 _tippy?: Instance
21 parentNode?: Element
22 contains(): void
23 setAttribute(key: string, value: any): void
24 getAttribute(key: string): string
25 removeAttribute(key: string): void
26 hasAttribute(key: string): boolean
27 addEventListener(): void
28 removeEventListener(): void
29 attributes: {
30 [key: string]: any
31 }
32 classList: {
33 add(key: string): void
34 remove(key: string): void
35 contains(key: string): boolean
36 classNames: {
37 [key: string]: boolean
38 }
39 [key: string]: any
40 }
41}
42
43export interface PopperInstance extends Popper {
44 reference: ReferenceElement
45 popper: PopperElement
46 modifiers: { name: string; padding: object | number }[]
47}
48
49export interface Options {
50 a11y?: boolean
51 allowHTML?: boolean
52 animateFill?: boolean
53 animation?: 'fade' | 'scale' | 'shift-toward' | 'perspective' | 'shift-away'
54 appendTo?: 'parent' | Element | ((ref: Element) => Element)
55 aria?: 'describedby' | 'labelledby' | null
56 arrow?: boolean
57 arrowType?: 'sharp' | 'round'
58 boundary?: 'scrollParent' | 'window' | 'viewport' | HTMLElement
59 content?: Content
60 delay?: number | [number, number]
61 distance?: number
62 duration?: number | [number, number]
63 flip?: boolean
64 flipBehavior?: 'flip' | Placement[]
65 flipOnUpdate?: boolean
66 followCursor?: boolean | 'vertical' | 'horizontal' | 'initial'
67 hideOnClick?: boolean | 'toggle'
68 ignoreAttributes?: boolean
69 inertia?: boolean
70 interactive?: boolean
71 interactiveBorder?: number
72 interactiveDebounce?: number
73 lazy?: boolean
74 maxWidth?: number | string
75 multiple?: boolean
76 offset?: number | string
77 onHidden?(instance: Instance): void
78 onHide?(instance: Instance): void | false
79 onMount?(instance: Instance): void
80 onShow?(instance: Instance): void | false
81 onShown?(instance: Instance): void
82 onTrigger?(instance: Instance, event: Event): void
83 placement?: Placement
84 popperOptions?: Popper.PopperOptions
85 role?: string
86 showOnInit?: boolean
87 size?: 'small' | 'regular' | 'large'
88 sticky?: boolean
89 target?: string
90 theme?: 'dark' | 'light' | 'light-border' | 'google' | string
91 touch?: boolean
92 touchHold?: boolean
93 trigger?: string
94 triggerTarget?: Element | null
95 updateDuration?: number
96 wait?: ((instance: Instance, event?: Event) => void) | null
97 zIndex?: number
98}
99
100/**
101 * @deprecated
102 * Use `Options` instead.
103 */
104export type Props = Options
105
106export interface Instance {
107 clearDelayTimeouts(): void
108 destroy(): void
109 disable(): void
110 enable(): void
111 hide(duration?: number): void
112 id: number
113 popper: PopperElement
114 popperChildren: PopperChildren
115 popperInstance: PopperInstance | null
116 props: Props
117 reference: ReferenceElement | VirtualReference
118 set(options: Options): void
119 setContent(content: Content): void
120 show(duration?: number): void
121 state: {
122 isEnabled: boolean
123 isVisible: boolean
124 isDestroyed: boolean
125 isMounted: boolean
126 isShown: boolean
127 }
128}
129
130export interface GroupedInstance extends Instance {
131 _originalProps: Props
132}
133
134export interface GroupOptions {
135 delay?: number | [number, number]
136 duration?: number | [number, number]
137}
138
139export interface PopperChildren {
140 tooltip: HTMLDivElement
141 content: HTMLDivElement
142 arrow: HTMLDivElement | null
143 backdrop: HTMLDivElement | null
144}
145
146export interface HideAllOptions {
147 duration?: number
148 exclude?: Instance | ReferenceElement
149}
150
151export interface Tippy {
152 (targets: Targets, options?: Props): Instance | Instance[]
153 readonly defaults: Props
154 readonly version: string
155 group(instances: Instance[], options?: GroupOptions): void
156 hideAll(options?: HideAllOptions): void
157 setDefaults(options: Props): void
158}
159
160declare const tippy: Tippy
161export default tippy
162
\No newline at end of file