@@ -68,126 +68,130 @@ const Wrapper = styled.div`
68
68
white-space: nowrap;
69
69
` ;
70
70
71
- const Tooltip = forwardRef < HTMLSpanElement , TooltipProps > ( function Tooltip (
72
- {
73
- className,
74
- children,
75
- disableFocusListener = false ,
76
- disableMouseListener = false ,
77
- enterDelay = 1000 ,
78
- leaveDelay = 0 ,
79
- onBlur,
80
- onClose,
81
- onFocus,
82
- onMouseEnter,
83
- onMouseLeave,
84
- onOpen,
85
- style,
86
- text,
87
- position = 'top' ,
88
- ...otherProps
89
- } ,
90
- ref
91
- ) {
92
- const [ show , setShow ] = useState ( false ) ;
93
- const [ openTimer , setOpenTimer ] = useState < number > ( ) ;
94
- const [ closeTimer , setCloseTimer ] = useState < number > ( ) ;
95
-
96
- const isUsingFocus = ! disableFocusListener ;
97
- const isUsingMouse = ! disableMouseListener ;
98
-
99
- const handleOpen = (
100
- event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
101
- ) => {
102
- window . clearTimeout ( openTimer ) ;
103
- window . clearTimeout ( closeTimer ) ;
104
-
105
- const timer = window . setTimeout ( ( ) => {
106
- setShow ( true ) ;
107
-
108
- onOpen ?.( event ) ;
109
- } , enterDelay ) ;
110
-
111
- setOpenTimer ( timer ) ;
112
- } ;
113
-
114
- const handleEnter = (
115
- event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
116
- ) => {
117
- event . persist ( ) ;
118
-
119
- if ( isReactFocusEvent ( event ) ) {
120
- onFocus ?.( event ) ;
121
- } else if ( isReactMouseEvent ( event ) ) {
122
- onMouseEnter ?.( event ) ;
123
- }
124
-
125
- handleOpen ( event ) ;
126
- } ;
127
-
128
- const handleClose = (
129
- event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
130
- ) => {
131
- window . clearTimeout ( openTimer ) ;
132
- window . clearTimeout ( closeTimer ) ;
133
-
134
- const timer = window . setTimeout ( ( ) => {
135
- setShow ( false ) ;
136
-
137
- onClose ?.( event ) ;
138
- } , leaveDelay ) ;
139
-
140
- setCloseTimer ( timer ) ;
141
- } ;
142
-
143
- const handleLeave = (
144
- event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
71
+ const Tooltip = forwardRef < HTMLSpanElement , TooltipProps > (
72
+ (
73
+ {
74
+ className,
75
+ children,
76
+ disableFocusListener = false ,
77
+ disableMouseListener = false ,
78
+ enterDelay = 1000 ,
79
+ leaveDelay = 0 ,
80
+ onBlur,
81
+ onClose,
82
+ onFocus,
83
+ onMouseEnter,
84
+ onMouseLeave,
85
+ onOpen,
86
+ style,
87
+ text,
88
+ position = 'top' ,
89
+ ...otherProps
90
+ } ,
91
+ ref
145
92
) => {
146
- event . persist ( ) ;
147
-
148
- if ( isReactFocusEvent ( event ) ) {
149
- onBlur ?.( event ) ;
150
- } else if ( isReactMouseEvent ( event ) ) {
151
- onMouseLeave ?.( event ) ;
152
- }
153
-
154
- handleClose ( event ) ;
155
- } ;
156
-
157
- // set callbacks for onBlur and onFocus, unless disableFocusListener is true
158
- const blurCb = isUsingFocus ? handleLeave : undefined ;
159
- const focusCb = isUsingFocus ? handleEnter : undefined ;
160
-
161
- // set callbacks for onMouseEnter and onMouseLeave, unless disableMouseListener is true
162
- const mouseEnterCb = isUsingMouse ? handleEnter : undefined ;
163
- const mouseLeaveCb = isUsingMouse ? handleLeave : undefined ;
164
-
165
- // set the wrapper's tabIndex for focus events, unless disableFocusListener is true
166
- const tabIndex = isUsingFocus ? 0 : undefined ;
167
-
168
- return (
169
- < Wrapper
170
- data-testid = 'tooltip-wrapper'
171
- onBlur = { blurCb }
172
- onFocus = { focusCb }
173
- onMouseEnter = { mouseEnterCb }
174
- onMouseLeave = { mouseLeaveCb }
175
- tabIndex = { tabIndex }
176
- >
177
- < Tip
178
- className = { className }
179
- data-testid = 'tooltip'
180
- position = { position }
181
- ref = { ref }
182
- show = { show }
183
- style = { style }
184
- { ...otherProps }
93
+ const [ show , setShow ] = useState ( false ) ;
94
+ const [ openTimer , setOpenTimer ] = useState < number > ( ) ;
95
+ const [ closeTimer , setCloseTimer ] = useState < number > ( ) ;
96
+
97
+ const isUsingFocus = ! disableFocusListener ;
98
+ const isUsingMouse = ! disableMouseListener ;
99
+
100
+ const handleOpen = (
101
+ event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
102
+ ) => {
103
+ window . clearTimeout ( openTimer ) ;
104
+ window . clearTimeout ( closeTimer ) ;
105
+
106
+ const timer = window . setTimeout ( ( ) => {
107
+ setShow ( true ) ;
108
+
109
+ onOpen ?.( event ) ;
110
+ } , enterDelay ) ;
111
+
112
+ setOpenTimer ( timer ) ;
113
+ } ;
114
+
115
+ const handleEnter = (
116
+ event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
117
+ ) => {
118
+ event . persist ( ) ;
119
+
120
+ if ( isReactFocusEvent ( event ) ) {
121
+ onFocus ?.( event ) ;
122
+ } else if ( isReactMouseEvent ( event ) ) {
123
+ onMouseEnter ?.( event ) ;
124
+ }
125
+
126
+ handleOpen ( event ) ;
127
+ } ;
128
+
129
+ const handleClose = (
130
+ event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
131
+ ) => {
132
+ window . clearTimeout ( openTimer ) ;
133
+ window . clearTimeout ( closeTimer ) ;
134
+
135
+ const timer = window . setTimeout ( ( ) => {
136
+ setShow ( false ) ;
137
+
138
+ onClose ?.( event ) ;
139
+ } , leaveDelay ) ;
140
+
141
+ setCloseTimer ( timer ) ;
142
+ } ;
143
+
144
+ const handleLeave = (
145
+ event : React . FocusEvent < HTMLDivElement > | React . MouseEvent < HTMLDivElement >
146
+ ) => {
147
+ event . persist ( ) ;
148
+
149
+ if ( isReactFocusEvent ( event ) ) {
150
+ onBlur ?.( event ) ;
151
+ } else if ( isReactMouseEvent ( event ) ) {
152
+ onMouseLeave ?.( event ) ;
153
+ }
154
+
155
+ handleClose ( event ) ;
156
+ } ;
157
+
158
+ // set callbacks for onBlur and onFocus, unless disableFocusListener is true
159
+ const blurCb = isUsingFocus ? handleLeave : undefined ;
160
+ const focusCb = isUsingFocus ? handleEnter : undefined ;
161
+
162
+ // set callbacks for onMouseEnter and onMouseLeave, unless disableMouseListener is true
163
+ const mouseEnterCb = isUsingMouse ? handleEnter : undefined ;
164
+ const mouseLeaveCb = isUsingMouse ? handleLeave : undefined ;
165
+
166
+ // set the wrapper's tabIndex for focus events, unless disableFocusListener is true
167
+ const tabIndex = isUsingFocus ? 0 : undefined ;
168
+
169
+ return (
170
+ < Wrapper
171
+ data-testid = 'tooltip-wrapper'
172
+ onBlur = { blurCb }
173
+ onFocus = { focusCb }
174
+ onMouseEnter = { mouseEnterCb }
175
+ onMouseLeave = { mouseLeaveCb }
176
+ tabIndex = { tabIndex }
185
177
>
186
- { text }
187
- </ Tip >
188
- { children }
189
- </ Wrapper >
190
- ) ;
191
- } ) ;
178
+ < Tip
179
+ className = { className }
180
+ data-testid = 'tooltip'
181
+ position = { position }
182
+ ref = { ref }
183
+ show = { show }
184
+ style = { style }
185
+ { ...otherProps }
186
+ >
187
+ { text }
188
+ </ Tip >
189
+ { children }
190
+ </ Wrapper >
191
+ ) ;
192
+ }
193
+ ) ;
194
+
195
+ Tooltip . displayName = 'Tooltip' ;
192
196
193
197
export { Tooltip , TooltipProps } ;
0 commit comments