Skip to content

Commit 0d874e5

Browse files
committed
feat: uniqueBgClassName
1 parent 0c60e16 commit 0d874e5

File tree

6 files changed

+34
-2
lines changed

6 files changed

+34
-2
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@ bun.lockb
3939

4040
# dumi
4141
.dumi/tmp
42-
.dumi/tmp-production
42+
.dumi/tmp-production
43+
dist/

src/UniqueProvider/FloatBg.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export interface FloatBgProps {
1717
offsetY: number;
1818
popupSize?: { width: number; height: number };
1919
motion?: CSSMotionProps;
20+
uniqueBgClassName?: string;
2021
}
2122

2223
const FloatBg = (props: FloatBgProps) => {
@@ -32,6 +33,7 @@ const FloatBg = (props: FloatBgProps) => {
3233
offsetY,
3334
popupSize,
3435
motion,
36+
uniqueBgClassName,
3537
} = props;
3638

3739
const floatBgCls = `${prefixCls}-float-bg`;
@@ -72,7 +74,7 @@ const FloatBg = (props: FloatBgProps) => {
7274
}}
7375
>
7476
{({ className: motionClassName, style: motionStyle }) => {
75-
const cls = classNames(floatBgCls, motionClassName, {
77+
const cls = classNames(floatBgCls, motionClassName, uniqueBgClassName, {
7678
[`${floatBgCls}-visible`]: motionVisible,
7779
});
7880

src/UniqueProvider/index.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ const UniqueProvider = ({ children }: UniqueProviderProps) => {
216216
offsetY={offsetY}
217217
popupSize={popupSize}
218218
motion={options.popupMotion}
219+
uniqueBgClassName={options.uniqueBgClassName}
219220
/>
220221
</Popup>
221222
</TriggerContext.Provider>

src/context.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export interface UniqueShowOptions {
2020
delay: number;
2121
prefixCls?: string;
2222
popupClassName?: string;
23+
uniqueBgClassName?: string;
2324
popupStyle?: React.CSSProperties;
2425
popupPlacement?: string;
2526
builtinPlacements?: BuildInPlacements;

src/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ export interface TriggerProps {
9898
builtinPlacements?: BuildInPlacements;
9999
popupAlign?: AlignType;
100100
popupClassName?: string;
101+
/** Pass to `UniqueProvider` FloatBg */
102+
uniqueBgClassName?: string;
101103
popupStyle?: React.CSSProperties;
102104
getPopupClassNameFromAlign?: (align: AlignType) => string;
103105
onPopupClick?: React.MouseEventHandler<HTMLDivElement>;
@@ -169,6 +171,7 @@ export function generateTrigger(
169171
// Popup
170172
popup,
171173
popupClassName,
174+
uniqueBgClassName,
172175
popupStyle,
173176

174177
popupPlacement,
@@ -323,6 +326,7 @@ export function generateTrigger(
323326
delay,
324327
prefixCls,
325328
popupClassName,
329+
uniqueBgClassName,
326330
popupStyle,
327331
popupPlacement,
328332
builtinPlacements,

tests/unique.test.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,4 +152,27 @@ describe('Trigger.Unique', () => {
152152
expect(popup.className).toContain('custom-align');
153153
expect(popup.className).toContain('rc-trigger-popup-unique-controlled');
154154
});
155+
156+
it('should apply uniqueBgClassName to FloatBg component', async () => {
157+
const { container } = render(
158+
<UniqueProvider>
159+
<Trigger
160+
action={['click']}
161+
popup={<strong className="x-content">tooltip</strong>}
162+
unique
163+
uniqueBgClassName="custom-bg-class"
164+
popupVisible
165+
>
166+
<div className="target">click me</div>
167+
</Trigger>
168+
</UniqueProvider>,
169+
);
170+
171+
await awaitFakeTimer();
172+
173+
// Check that FloatBg has the custom background className
174+
const floatBg = document.querySelector('.rc-trigger-popup-float-bg');
175+
expect(floatBg).toBeTruthy();
176+
expect(floatBg).toHaveClass('custom-bg-class');
177+
});
155178
});

0 commit comments

Comments
 (0)