Skip to content

Commit 250a7c6

Browse files
authored
refactor: use Container instead (#582)
1 parent 888b0df commit 250a7c6

File tree

6 files changed

+58
-58
lines changed

6 files changed

+58
-58
lines changed

assets/index.less

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@
7474
}
7575
}
7676

77-
// =============== Unique Body ===============
78-
&-unique-body {
77+
// =============== Unique Container ===============
78+
&-unique-container {
7979
position: absolute;
8080
z-index: 0;
8181
box-sizing: border-box;

src/UniqueProvider/UniqueBody.tsx renamed to src/UniqueProvider/UniqueContainer.tsx

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import CSSMotion from '@rc-component/motion';
55
import type { CSSMotionProps } from '@rc-component/motion';
66
import type { AlignType, ArrowPos } from '../interface';
77

8-
export interface UniqueBodyProps {
9-
prefixCls: string; // ${prefixCls}-unique-body
8+
export interface UniqueContainerProps {
9+
prefixCls: string; // ${prefixCls}-unique-container
1010
isMobile: boolean;
1111
ready: boolean;
1212
open: boolean;
@@ -18,11 +18,11 @@ export interface UniqueBodyProps {
1818
arrowPos?: ArrowPos;
1919
popupSize?: { width: number; height: number };
2020
motion?: CSSMotionProps;
21-
uniqueBgClassName?: string;
22-
uniqueBgStyle?: React.CSSProperties;
21+
uniqueContainerClassName?: string;
22+
uniqueContainerStyle?: React.CSSProperties;
2323
}
2424

25-
const UniqueBody = (props: UniqueBodyProps) => {
25+
const UniqueContainer = (props: UniqueContainerProps) => {
2626
const {
2727
prefixCls,
2828
isMobile,
@@ -36,11 +36,11 @@ const UniqueBody = (props: UniqueBodyProps) => {
3636
arrowPos,
3737
popupSize,
3838
motion,
39-
uniqueBgClassName,
40-
uniqueBgStyle,
39+
uniqueContainerClassName,
40+
uniqueContainerStyle,
4141
} = props;
4242

43-
const bodyCls = `${prefixCls}-unique-body`;
43+
const containerCls = `${prefixCls}-unique-container`;
4444

4545
const [motionVisible, setMotionVisible] = React.useState(false);
4646

@@ -78,16 +78,16 @@ const UniqueBody = (props: UniqueBodyProps) => {
7878
motionEnter
7979
motionLeave
8080
removeOnLeave={false}
81-
leavedClassName={`${bodyCls}-hidden`}
81+
leavedClassName={`${containerCls}-hidden`}
8282
{...motion}
8383
visible={open}
8484
onVisibleChanged={(nextVisible) => {
8585
setMotionVisible(nextVisible);
8686
}}
8787
>
8888
{({ className: motionClassName, style: motionStyle }) => {
89-
const cls = classNames(bodyCls, motionClassName, uniqueBgClassName, {
90-
[`${bodyCls}-visible`]: motionVisible,
89+
const cls = classNames(containerCls, motionClassName, uniqueContainerClassName, {
90+
[`${containerCls}-visible`]: motionVisible,
9191
});
9292

9393
return (
@@ -100,7 +100,7 @@ const UniqueBody = (props: UniqueBodyProps) => {
100100
...cachedOffsetStyleRef.current,
101101
...sizeStyle,
102102
...motionStyle,
103-
...uniqueBgStyle,
103+
...uniqueContainerStyle,
104104
} as React.CSSProperties
105105
}
106106
/>
@@ -110,4 +110,4 @@ const UniqueBody = (props: UniqueBodyProps) => {
110110
);
111111
};
112112

113-
export default UniqueBody;
113+
export default UniqueContainer;

src/UniqueProvider/index.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import Popup from '../Popup';
1212
import { useEvent } from '@rc-component/util';
1313
import useTargetState from './useTargetState';
1414
import { isDOM } from '@rc-component/util/lib/Dom/findDOMNode';
15-
import UniqueBody from './UniqueBody';
15+
import UniqueContainer from './UniqueContainer';
1616
import classNames from 'classnames';
1717
import { getAlignPopupClassName } from '../util';
1818

@@ -223,7 +223,7 @@ const UniqueProvider = ({
223223
maskMotion={mergedOptions.maskMotion}
224224
getPopupContainer={mergedOptions.getPopupContainer}
225225
>
226-
<UniqueBody
226+
<UniqueContainer
227227
prefixCls={prefixCls}
228228
isMobile={false}
229229
ready={ready}
@@ -239,11 +239,11 @@ const UniqueProvider = ({
239239
}}
240240
popupSize={popupSize}
241241
motion={mergedOptions.popupMotion}
242-
uniqueBgClassName={classNames(
243-
mergedOptions.uniqueBgClassName,
242+
uniqueContainerClassName={classNames(
243+
mergedOptions.uniqueContainerClassName,
244244
alignedClassName,
245245
)}
246-
uniqueBgStyle={mergedOptions.uniqueBgStyle}
246+
uniqueContainerStyle={mergedOptions.uniqueContainerStyle}
247247
/>
248248
</Popup>
249249
</TriggerContext.Provider>

src/context.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ export interface UniqueShowOptions {
2020
delay: number;
2121
prefixCls?: string;
2222
popupClassName?: string;
23-
uniqueBgClassName?: string;
24-
uniqueBgStyle?: React.CSSProperties;
23+
uniqueContainerClassName?: string;
24+
uniqueContainerStyle?: React.CSSProperties;
2525
popupStyle?: React.CSSProperties;
2626
popupPlacement?: string;
2727
builtinPlacements?: BuildInPlacements;

src/index.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,10 @@ export interface TriggerProps {
101101
builtinPlacements?: BuildInPlacements;
102102
popupAlign?: AlignType;
103103
popupClassName?: string;
104-
/** Pass to `UniqueProvider` FloatBg */
105-
uniqueBgClassName?: string;
106-
/** Pass to `UniqueProvider` FloatBg */
107-
uniqueBgStyle?: React.CSSProperties;
104+
/** Pass to `UniqueProvider` UniqueContainer */
105+
uniqueContainerClassName?: string;
106+
/** Pass to `UniqueProvider` UniqueContainer */
107+
uniqueContainerStyle?: React.CSSProperties;
108108
popupStyle?: React.CSSProperties;
109109
getPopupClassNameFromAlign?: (align: AlignType) => string;
110110
onPopupClick?: React.MouseEventHandler<HTMLDivElement>;
@@ -176,8 +176,8 @@ export function generateTrigger(
176176
// Popup
177177
popup,
178178
popupClassName,
179-
uniqueBgClassName,
180-
uniqueBgStyle,
179+
uniqueContainerClassName,
180+
uniqueContainerStyle,
181181
popupStyle,
182182

183183
popupPlacement,
@@ -332,8 +332,8 @@ export function generateTrigger(
332332
delay,
333333
prefixCls,
334334
popupClassName,
335-
uniqueBgClassName,
336-
uniqueBgStyle,
335+
uniqueContainerClassName,
336+
uniqueContainerStyle,
337337
popupStyle,
338338
popupPlacement,
339339
builtinPlacements,

tests/unique.test.tsx

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import { awaitFakeTimer } from './util';
55
import type { TriggerProps } from '../src';
66
import classNames from 'classnames';
77

8-
// Mock UniqueBody to check if open props changed
8+
// Mock UniqueContainer to check if open props changed
99
global.openChangeLog = [];
1010

11-
jest.mock('../src/UniqueProvider/UniqueBody', () => {
12-
const OriginalUniqueBody = jest.requireActual(
13-
'../src/UniqueProvider/UniqueBody',
11+
jest.mock('../src/UniqueProvider/UniqueContainer', () => {
12+
const OriginalUniqueContainer = jest.requireActual(
13+
'../src/UniqueProvider/UniqueContainer',
1414
).default;
1515
const OriginReact = jest.requireActual('react');
1616

@@ -25,7 +25,7 @@ jest.mock('../src/UniqueProvider/UniqueBody', () => {
2525
}
2626
}, [open]);
2727

28-
return OriginReact.createElement(OriginalUniqueBody, props);
28+
return OriginReact.createElement(OriginalUniqueContainer, props);
2929
};
3030
});
3131

@@ -105,7 +105,7 @@ describe('Trigger.Unique', () => {
105105
'-hidden',
106106
);
107107
expect(
108-
document.querySelector('.rc-trigger-popup-unique-body').className,
108+
document.querySelector('.rc-trigger-popup-unique-container').className,
109109
).not.toContain('-hidden');
110110

111111
// Move from first to second trigger - popup should not hide, but content should change
@@ -122,13 +122,13 @@ describe('Trigger.Unique', () => {
122122
'-hidden',
123123
);
124124
expect(
125-
document.querySelector('.rc-trigger-popup-unique-body').className,
125+
document.querySelector('.rc-trigger-popup-unique-container').className,
126126
).not.toContain('-hidden');
127127

128128
// There should only be one popup element
129129
expect(document.querySelectorAll('.rc-trigger-popup').length).toBe(1);
130130
expect(
131-
document.querySelectorAll('.rc-trigger-popup-unique-body').length,
131+
document.querySelectorAll('.rc-trigger-popup-unique-container').length,
132132
).toBe(1);
133133

134134
// FloatBg open prop should not have changed during transition (no close animation)
@@ -184,36 +184,36 @@ describe('Trigger.Unique', () => {
184184
expect(popup.className).toContain('rc-trigger-popup-unique-controlled');
185185
});
186186

187-
it('should apply uniqueBgClassName to UniqueBody component', async () => {
188-
await setupAndOpenPopup({ uniqueBgClassName: 'custom-bg-class' });
187+
it('should apply uniqueContainerClassName to UniqueContainer component', async () => {
188+
await setupAndOpenPopup({ uniqueContainerClassName: 'custom-container-class' });
189189

190-
// Check that UniqueBody has the custom background className
191-
const uniqueBody = document.querySelector('.rc-trigger-popup-unique-body');
192-
expect(uniqueBody).toBeTruthy();
193-
expect(uniqueBody.className).toContain('custom-bg-class');
190+
// Check that UniqueContainer has the custom container className
191+
const uniqueContainer = document.querySelector('.rc-trigger-popup-unique-container');
192+
expect(uniqueContainer).toBeTruthy();
193+
expect(uniqueContainer.className).toContain('custom-container-class');
194194
});
195195

196-
it('should apply uniqueBgStyle to UniqueBody component', async () => {
196+
it('should apply uniqueContainerStyle to UniqueContainer component', async () => {
197197
await setupAndOpenPopup({
198-
uniqueBgStyle: { backgroundColor: 'red', border: '1px solid blue' },
198+
uniqueContainerStyle: { backgroundColor: 'red', border: '1px solid blue' },
199199
});
200200

201-
// Check that UniqueBody has the custom background style
202-
const uniqueBody = document.querySelector('.rc-trigger-popup-unique-body');
203-
expect(uniqueBody).toBeTruthy();
204-
expect(uniqueBody).toHaveStyle({
201+
// Check that UniqueContainer has the custom container style
202+
const uniqueContainer = document.querySelector('.rc-trigger-popup-unique-container');
203+
expect(uniqueContainer).toBeTruthy();
204+
expect(uniqueContainer).toHaveStyle({
205205
backgroundColor: 'red',
206206
border: '1px solid blue',
207207
});
208208
});
209209

210-
it('should not apply any additional className to UniqueBody when uniqueBgClassName is not provided', async () => {
210+
it('should not apply any additional className to UniqueContainer when uniqueContainerClassName is not provided', async () => {
211211
await setupAndOpenPopup();
212212

213-
// Check that UniqueBody exists but does not have custom background className
214-
const uniqueBody = document.querySelector('.rc-trigger-popup-unique-body');
215-
expect(uniqueBody).toBeTruthy();
216-
expect(uniqueBody.className).not.toContain('undefined');
213+
// Check that UniqueContainer exists but does not have custom container className
214+
const uniqueContainer = document.querySelector('.rc-trigger-popup-unique-container');
215+
expect(uniqueContainer).toBeTruthy();
216+
expect(uniqueContainer.className).not.toContain('undefined');
217217
});
218218

219219
it('should pass alignedClassName on unique body', async () => {
@@ -246,13 +246,13 @@ describe('Trigger.Unique', () => {
246246
);
247247

248248
expect(document.querySelector('.rc-trigger-popup')).toHaveClass('bamboo');
249-
expect(document.querySelector('.rc-trigger-popup-unique-body')).toHaveClass(
249+
expect(document.querySelector('.rc-trigger-popup-unique-container')).toHaveClass(
250250
'bamboo',
251251
);
252252

253253
// Check that arrow position CSS variables are set
254-
const uniqueBody = document.querySelector('.rc-trigger-popup-unique-body');
255-
const computedStyle = getComputedStyle(uniqueBody);
254+
const uniqueContainer = document.querySelector('.rc-trigger-popup-unique-container');
255+
const computedStyle = getComputedStyle(uniqueContainer);
256256
expect(computedStyle.getPropertyValue('--arrow-x')).not.toBe('');
257257
expect(computedStyle.getPropertyValue('--arrow-y')).not.toBe('');
258258
});

0 commit comments

Comments
 (0)