Skip to content

Commit e5acdc6

Browse files
committed
feat: motion conig support
1 parent a05e475 commit e5acdc6

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

src/Tooltip.tsx

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import * as React from 'react';
22
import { useRef, useImperativeHandle, forwardRef } from 'react';
3-
import Trigger, { TriggerProps } from 'rc-trigger';
4-
import { AlignType, AnimationType, ActionType } from 'rc-trigger/lib/interface';
3+
import Trigger from 'rc-trigger';
4+
import type { TriggerProps } from 'rc-trigger';
5+
import type { AlignType, AnimationType, ActionType } from 'rc-trigger/lib/interface';
56
import { placements } from './placements';
67
import Content from './Content';
78

@@ -10,8 +11,12 @@ export interface TooltipProps extends Pick<TriggerProps, 'onPopupAlign' | 'built
1011
defaultVisible?: boolean;
1112
visible?: boolean;
1213
placement?: string;
14+
/** @deprecated Use `motion` instead */
1315
transitionName?: string;
16+
/** @deprecated Use `motion` instead */
1417
animation?: AnimationType;
18+
/** Config popup motion */
19+
motion?: TriggerProps['popupMotion'];
1520
onVisibleChange?: (visible: boolean) => void;
1621
afterVisibleChange?: (visible: boolean) => void;
1722
overlay: (() => React.ReactNode) | React.ReactNode;
@@ -47,6 +52,7 @@ const Tooltip = (props: TooltipProps, ref) => {
4752
afterVisibleChange,
4853
transitionName,
4954
animation,
55+
motion,
5056
placement = 'right',
5157
align = {},
5258
destroyTooltipOnHide = false,
@@ -105,6 +111,7 @@ const Tooltip = (props: TooltipProps, ref) => {
105111
afterPopupVisibleChange={afterVisibleChange}
106112
popupTransitionName={transitionName}
107113
popupAnimation={animation}
114+
popupMotion={motion}
108115
defaultPopupVisible={defaultVisible}
109116
destroyPopupOnHide={destroyTooltip}
110117
autoDestroy={autoDestroy}

tests/index.test.js

+15-18
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,9 @@ import Tooltip from '../src';
44

55
const verifyContent = (wrapper, content) => {
66
expect(wrapper.find('.x-content').text()).toBe(content);
7-
expect(
8-
wrapper
9-
.find('Trigger')
10-
.instance()
11-
.getPopupDomNode(),
12-
).toBeTruthy();
7+
expect(wrapper.find('Trigger').instance().getPopupDomNode()).toBeTruthy();
138
wrapper.find('.target').simulate('click');
14-
expect(
15-
wrapper
16-
.find('.rc-tooltip')
17-
.hostNodes()
18-
.hasClass('rc-tooltip-hidden'),
19-
).toBe(true);
9+
expect(wrapper.find('.rc-tooltip').hostNodes().hasClass('rc-tooltip-hidden')).toBe(true);
2010
};
2111

2212
describe('rc-tooltip', () => {
@@ -84,12 +74,7 @@ describe('rc-tooltip', () => {
8474
const destroyVerifyContent = (wrapper, content) => {
8575
wrapper.find('.target').simulate('click');
8676
expect(wrapper.find('.x-content').text()).toBe(content);
87-
expect(
88-
wrapper
89-
.find('Trigger')
90-
.instance()
91-
.getPopupDomNode(),
92-
).toBeTruthy();
77+
expect(wrapper.find('Trigger').instance().getPopupDomNode()).toBeTruthy();
9378
wrapper.find('.target').simulate('click');
9479
};
9580
it('default value', () => {
@@ -148,4 +133,16 @@ describe('rc-tooltip', () => {
148133
expect(wrapper.html()).toBe('<div class="target">Click this</div>');
149134
});
150135
});
136+
137+
// This is only test for motion pass to internal rc-trigger
138+
// It's safe to remove since meaningless to rc-tooltip if refactor
139+
it('should motion props work', () => {
140+
const wrapper = mount(
141+
<Tooltip overlay="Light" motion={{ motionName: 'bamboo-is-light' }}>
142+
<span>Bamboo</span>
143+
</Tooltip>,
144+
);
145+
146+
expect(wrapper.find('Trigger').props().popupMotion).toEqual({ motionName: 'bamboo-is-light' });
147+
});
151148
});

0 commit comments

Comments
 (0)