Skip to content

Commit

Permalink
fix(react-card): use resolved slot instead of raw prop object (micros…
Browse files Browse the repository at this point in the history
  • Loading branch information
marcosmoura authored Jul 14, 2023
1 parent 876a9f3 commit 820b2c5
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "patch",
"comment": "fix: use resolved slot instead of raw prop object",
"packageName": "@fluentui/react-card",
"email": "marcosvmmoura@gmail.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { cardHeaderClassNames } from './useCardHeaderStyles.styles';
*
* @param header - the header prop of CardHeader
*/
function getChildWithId(header: CardHeaderProps['header']) {
function getChildWithId(header: React.ReactNode) {
function isReactElementWithIdProp(element: React.ReactNode): element is React.ReactElement {
return React.isValidElement(element) && Boolean(element.props.id);
}
Expand Down Expand Up @@ -62,14 +62,22 @@ export const useCardHeader_unstable = (props: CardHeaderProps, ref: React.Ref<HT
const hasChildId = React.useRef(false);
const generatedId = useId(cardHeaderClassNames.header, referenceId);

const headerSlot = resolveShorthand(header, {
required: true,
defaultProps: {
ref: headerRef,
id: !hasChildId.current ? referenceId : undefined,
},
});

React.useEffect(() => {
const headerId = !hasChildId.current ? headerRef.current?.id : undefined;
const childWithId = getChildWithId(header);
const childWithId = getChildWithId(headerSlot?.children);

hasChildId.current = Boolean(childWithId);

setReferenceId(getReferenceId(headerId, childWithId, generatedId));
}, [generatedId, header, setReferenceId]);
}, [generatedId, header, headerSlot, setReferenceId]);

return {
components: {
Expand All @@ -85,13 +93,7 @@ export const useCardHeader_unstable = (props: CardHeaderProps, ref: React.Ref<HT
...props,
}),
image: resolveShorthand(image),
header: resolveShorthand(header, {
required: true,
defaultProps: {
ref: headerRef,
id: !hasChildId.current ? referenceId : undefined,
},
}),
header: headerSlot,
description: resolveShorthand(description),
action: resolveShorthand(action),
};
Expand Down

0 comments on commit 820b2c5

Please sign in to comment.