-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(storybook): implement argTypeEnhancers for improved Slot API docs rendering #33838
base: master
Are you sure you want to change the base?
feat(storybook): implement argTypeEnhancers for improved Slot API docs rendering #33838
Conversation
📊 Bundle size report✅ No changes found |
🕵 FluentUIV0 No visual regressions between this PR and main |
Pull request demo site: URL |
const styles = useStyles(); | ||
|
||
const { component } = withSlotEnhancer(story); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Task:
- verify that this doesn't mutate story object as we don't wanna do that to prevent any unwanted side effects
@@ -219,7 +256,7 @@ export const FluentDocsPage = () => { | |||
{videos && <VideoPreviews videos={videos} />} | |||
</div> | |||
<RenderPrimaryStory primaryStory={primaryStory} skipPrimaryStory={skipPrimaryStory} /> | |||
<RenderArgsTable primaryStory={primaryStory} hideArgsTable={hideArgsTable} /> | |||
<RenderArgsTable story={primaryStory} hideArgsTable={hideArgsTable} argTypes={primaryStoryContext.argTypes} /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these argTypes are properly transformed via preview enhance in preview.js although we cannot use them it seems
Task:
- revert this argTypes prop change
@carlamntn please see comments and Task to follow-up/finish this PR ty |
apps/public-docsite-v9/src/DocsComponents/FluentDocsPage.stories.tsx
Outdated
Show resolved
Hide resolved
all <code>aria-*</code> and <code>data-*</code> attributes, can be applied as native props on this | ||
component. | ||
</span> | ||
{story.argTypes.as && story.argTypes.as?.type?.name === 'enum' && ( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we have here a repetition already - time to encapsulate this into separate component
Task:
- create a local component with following API usage:
<AdditionalApiDocs>
custom content
</AdditionalApiDocs>
- render these components with extra info conditionaly
const hasArgAsProp = story.argTypes.as && story.argTypes.as?.type?.name === 'enum';
const hasArgSlotProp = ???;
return
{ hasArgAsProp ? <AdditionalApiDocs>
custom content
</AdditionalApiDocs>: null }
{ hasArgSlotProp ? <AdditionalApiDocs>
custom content
</AdditionalApiDocs>: null }
const RenderArgsTable = ({ hideArgsTable, primaryStory }: { primaryStory: PrimaryStory; hideArgsTable: boolean }) => { | ||
const slotRegex = /as\?:\s*"([^"]+)"/; | ||
|
||
function withSlotEnhancer(story: PreparedStory) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Task:
- tweak this function to get info if Slot was set
We can leverage this logic to flag if Slot
was found and set.
Later on, this flag can be used as part of the API of this function to be leveraged later in conditional rendering of additional info component.
Previous Behavior
New Behavior
Leverages Storybook Arg enhancer hook to tweak ouput as needed without any changes necessary in v9 codebase ( not affecting consumers of v9 )
Related Issue(s)
Slot<T>
type #27105