Skip to content

Commit c8d83d1

Browse files
authoredOct 26, 2023
feat: Tooltip ref support nativeElement (#463)
1 parent d023229 commit c8d83d1

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed
 

‎package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
},
4242
"dependencies": {
4343
"@babel/runtime": "^7.11.2",
44-
"@rc-component/trigger": "^1.17.0",
44+
"@rc-component/trigger": "^1.18.0",
4545
"classnames": "^2.3.1"
4646
},
4747
"devDependencies": {

‎src/Tooltip.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface TooltipProps
4343
}
4444

4545
export interface TooltipRef {
46+
nativeElement: HTMLElement;
4647
forceAlign: VoidFunction;
4748
}
4849

@@ -74,7 +75,7 @@ const Tooltip = (props: TooltipProps, ref: React.Ref<TooltipRef>) => {
7475
} = props;
7576

7677
const triggerRef = useRef<TriggerRef>(null);
77-
useImperativeHandle(ref, () => triggerRef.current as TriggerRef);
78+
useImperativeHandle(ref, () => triggerRef.current);
7879

7980
const extraProps: Partial<TooltipProps & TriggerProps> = { ...restProps };
8081
if ('visible' in props) {

‎tests/index.test.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { act, fireEvent, render } from '@testing-library/react';
22
import React from 'react';
3-
import Tooltip from '../src';
3+
import Tooltip, { TooltipRef } from '../src';
44

55
const verifyContent = (wrapper: HTMLElement, content: string) => {
66
expect(wrapper.querySelector('.x-content').textContent).toBe(content);
@@ -188,7 +188,7 @@ describe('rc-tooltip', () => {
188188
placement="left"
189189
overlay={<strong className="x-content">Tooltip content</strong>}
190190
showArrow={{
191-
className: 'abc'
191+
className: 'abc',
192192
}}
193193
>
194194
<div className="target">Click this</div>
@@ -239,4 +239,16 @@ describe('rc-tooltip', () => {
239239
fireEvent.click(container.querySelector('.target'));
240240
expect(container.querySelector('.x-content')).toBeTruthy();
241241
});
242+
243+
it('ref support nativeElement', () => {
244+
const nodeRef = React.createRef<TooltipRef>();
245+
246+
const { container } = render(
247+
<Tooltip ref={nodeRef} overlay={<div />}>
248+
<button />
249+
</Tooltip>,
250+
);
251+
252+
expect(nodeRef.current.nativeElement).toBe(container.querySelector('button'));
253+
});
242254
});

0 commit comments

Comments
 (0)
Please sign in to comment.