1 | import React, { ReactNode, Component } from 'react'
|
2 | import { PopperProps, PopperChildrenProps } from 'react-popper'
|
3 | import PopperJs from 'popper.js'
|
4 |
|
5 | declare enum TriggerType {
|
6 | click = 0,
|
7 | hover = 1,
|
8 | }
|
9 | interface ReactPopperProps {
|
10 | |
11 |
|
12 |
|
13 |
|
14 |
|
15 | forceShow?: boolean
|
16 | |
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | trigger?: TriggerType
|
24 | |
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 | delayShow?: number
|
32 | |
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 | delayHide?: number
|
42 | className?: string
|
43 | |
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 | placement?: PopperProps['placement']
|
51 | |
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | referenceRef?:
|
59 | | PopperProps['referenceElement']
|
60 | | (() => PopperProps['referenceElement'])
|
61 | children?:
|
62 | | ((
|
63 | props: PopperChildrenProps & {
|
64 | popperRef: ReactPopper
|
65 | },
|
66 | ) => ReactNode)
|
67 | | ReactNode
|
68 | /**
|
69 | * Modifiers config of popperjs
|
70 | * See in https://popper.js.org/popper-documentation.html#Popper.Defaults.modifiers
|
71 | * */
|
72 | modifiers?: PopperProps['modifiers']
|
73 | /**
|
74 | * Default: true
|
75 | * */
|
76 | positionFixed?: PopperProps['positionFixed']
|
77 | /**
|
78 | * Arrow 箭头的问题
|
79 | *
|
80 | * Position of arrow
|
81 | *
|
82 | * Default: 'middle'
|
83 | * */
|
84 | arrowPosition?: 'start' | 'end' | 'middle'
|
85 | /**
|
86 | * Arrow 箭头的偏移量
|
87 | *
|
88 | * Position offset of arrow
|
89 | *
|
90 | * Default: 15
|
91 | * */
|
92 | arrowOffset?: number
|
93 | /**
|
94 | * popper 显示/隐藏之前触发的回调,返回值确定是否应该显示或者隐藏
|
95 | * */
|
96 | shouldToggle?(
|
97 | toVisible: boolean,
|
98 | context: ReactPopper,
|
99 | ev?: React.MouseEvent<any>,
|
100 | ): boolean
|
101 | /**
|
102 | * popper 显示/隐藏之后触发的回调
|
103 | *
|
104 | * The callback triggered after popper's show/hide
|
105 | * */
|
106 | afterToggle?(visible: boolean, context: ReactPopper): void
|
107 | }
|
108 |
|
109 | declare class ReactPopper extends Component<
|
110 | ReactPopperProps,
|
111 | {
|
112 | visible: boolean
|
113 | isMounted: boolean
|
114 | }
|
115 | > {
|
116 | /**
|
117 | * scheduleUpdate of popper
|
118 | * */
|
119 | scheduleUpdate: () => void
|
120 | popperRef?: HTMLDivElement
|
121 | arrowRef?: HTMLDivElement
|
122 | timer: {
|
123 | type: 'show' | 'hide' | ''
|
124 | id: any
|
125 | }
|
126 | constructor(props: ReactPopperProps)
|
127 | readonly referenceEl: PopperProps['referenceElement']
|
128 | readonly isHover: boolean
|
129 | readonly eventName: 'mouseover' | 'click'
|
130 | readonly modifiers: PopperProps['modifiers']
|
131 | readonly visible: boolean
|
132 | readonly delayShow: number
|
133 | readonly delayHide: number
|
134 | readonly shouldToggle: NonNullable<ReactPopperProps['shouldToggle']>
|
135 | /**
|
136 | * Show the popper
|
137 | *
|
138 | * Use it outside the component:
|
139 | *
|
140 | * <ReactPopper ref={compInstance => ref = compInstance}></ReactPopper>
|
141 | * ref.show()
|
142 | * */
|
143 | show: (ev?: React.MouseEvent<any, MouseEvent> | undefined) => void
|
144 | |
145 |
|
146 |
|
147 |
|
148 |
|
149 | hide: (ev?: React.MouseEvent<any, MouseEvent> | undefined) => void
|
150 | |
151 |
|
152 |
|
153 |
|
154 |
|
155 | toggle: (ev?: React.MouseEvent<any, MouseEvent> | undefined) => void
|
156 | componentDidMount(): void
|
157 | componentWillUnmount(): void
|
158 | render(): JSX.Element
|
159 | private eventHandler
|
160 | private afterToggle
|
161 | }
|
162 |
|
163 | declare function arrowModifier(
|
164 | arrowPosition: ReactPopperProps['arrowPosition'],
|
165 | arrowOffset: ReactPopperProps['arrowOffset'],
|
166 | ...[dataObject, options]: Parameters<
|
167 | NonNullable<NonNullable<PopperJs.Modifiers['arrow']>['fn']>
|
168 | >
|
169 | ): PopperJs.Data
|
170 | declare function convertPos(
|
171 | data: PopperJs.Data,
|
172 | type: 'left' | 'top',
|
173 | arrowPosition?: ReactPopperProps['arrowPosition'],
|
174 | arrowOffset?: ReactPopperProps['arrowOffset'],
|
175 | ): number
|
176 |
|
177 | declare function containsOrEqual(
|
178 | parent: PopperProps['referenceElement'],
|
179 | target?: HTMLElement,
|
180 | ): boolean
|
181 | declare function getReferenceEl(
|
182 | popperRef?: HTMLElement,
|
183 | referenceRef?:
|
184 | | PopperProps['referenceElement']
|
185 | | (() => PopperProps['referenceElement']),
|
186 | ): PopperProps['referenceElement']
|
187 |
|
188 | export default ReactPopper
|
189 | export {
|
190 | ReactPopperProps,
|
191 | TriggerType,
|
192 | arrowModifier,
|
193 | containsOrEqual,
|
194 | convertPos,
|
195 | getReferenceEl,
|
196 | }
|
197 |
|
\ | No newline at end of file |