Skip to content

Commit e409f75

Browse files
authored
fix(react-utilities): ensure slot className is saved from defaultProps (microsoft#35555)
1 parent 9eca6a1 commit e409f75

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "patch",
3+
"comment": "fix: ensure slot className is saved from defaultProps",
4+
"packageName": "@fluentui/react-utilities",
5+
"email": "[email protected]",
6+
"dependentChangeType": "patch"
7+
}

packages/react-components/react-utilities/src/compose/slot.test.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,22 @@ describe('slot', () => {
9898
});
9999
});
100100

101+
it('saves the original className from defaultProps', () => {
102+
const props: TestProps = { slotA: {} };
103+
const resolvedProps = slot.optional(props.slotA, {
104+
elementType: 'div',
105+
defaultProps: { className: 'defaultClass' },
106+
});
107+
if (resolvedProps) {
108+
resolvedProps.className = [resolvedProps.className, 'addedClass'].join(' ');
109+
}
110+
expect(resolvedProps).toEqual({
111+
[SLOT_ELEMENT_TYPE_SYMBOL]: 'div',
112+
[SLOT_CLASS_NAME_PROP_SYMBOL]: 'defaultClass',
113+
className: 'defaultClass addedClass',
114+
});
115+
});
116+
101117
describe('.resolveShorthand', () => {
102118
it('resolves a string', () => {
103119
expect(slot.resolveShorthand('hello')).toEqual({ children: 'hello' });

packages/react-components/react-utilities/src/compose/slot.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function always<Props extends UnknownSlotProps>(
4040
...defaultProps,
4141
...props,
4242
[SLOT_ELEMENT_TYPE_SYMBOL]: elementType,
43-
[SLOT_CLASS_NAME_PROP_SYMBOL]: props?.className,
43+
[SLOT_CLASS_NAME_PROP_SYMBOL]: props?.className || defaultProps?.className,
4444
} as SlotComponentType<Props>;
4545

4646
if (props && typeof props.children === 'function') {

0 commit comments

Comments
 (0)