From 60ab7cf8512e689f8b6e8b3956c92ea0b50584d9 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Wed, 14 Dec 2022 17:45:03 +0800 Subject: [PATCH 1/2] Csf-tools: Fix local vars handling in MDX-generated CSF --- code/lib/csf-tools/src/CsfFile.test.ts | 30 ++++++++++++++++++++++++++ code/lib/csf-tools/src/CsfFile.ts | 5 ++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/code/lib/csf-tools/src/CsfFile.test.ts b/code/lib/csf-tools/src/CsfFile.test.ts index 7a2ac4a6a2c1..c2178ec658f4 100644 --- a/code/lib/csf-tools/src/CsfFile.test.ts +++ b/code/lib/csf-tools/src/CsfFile.test.ts @@ -378,6 +378,36 @@ describe('CsfFile', () => { `); }); + it('docs-only story with local vars', () => { + expect( + parse( + dedent` + export const TestControl = () => _jsx("p", { + children: "Hello" + }); + export default { title: 'foo/bar', tags: ['mdx'], includeStories: ["__page"] }; + export const __page = () => {}; + __page.parameters = { docsOnly: true }; + `, + true + ) + ).toMatchInlineSnapshot(` + meta: + title: foo/bar + tags: + - mdx + includeStories: + - __page + stories: + - id: foo-bar--page + name: Page + parameters: + __isArgsStory: false + __id: foo-bar--page + docsOnly: true + `); + }); + it('title variable', () => { expect( parse( diff --git a/code/lib/csf-tools/src/CsfFile.ts b/code/lib/csf-tools/src/CsfFile.ts index fbc167c90a6c..d00000c2bb60 100644 --- a/code/lib/csf-tools/src/CsfFile.ts +++ b/code/lib/csf-tools/src/CsfFile.ts @@ -458,7 +458,10 @@ export class CsfFile { if (isExportStory(key, self._meta)) { const id = toId(self._meta.id || self._meta.title, storyNameFromExport(key)); const parameters: Record = { ...story.parameters, __id: id }; - if (entries.length === 1 && key === '__page') { + if ( + (entries.length === 1 || self._meta?.includeStories?.length === 1) && + key === '__page' + ) { parameters.docsOnly = true; } acc[key] = { ...story, id, parameters }; From 8617bf5dd908a4b374e3b86d4fa8a36f37a40c77 Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Wed, 14 Dec 2022 18:14:20 +0800 Subject: [PATCH 2/2] Fix typescript --- code/lib/csf-tools/src/CsfFile.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/lib/csf-tools/src/CsfFile.ts b/code/lib/csf-tools/src/CsfFile.ts index d00000c2bb60..7527ded87ec7 100644 --- a/code/lib/csf-tools/src/CsfFile.ts +++ b/code/lib/csf-tools/src/CsfFile.ts @@ -458,9 +458,10 @@ export class CsfFile { if (isExportStory(key, self._meta)) { const id = toId(self._meta.id || self._meta.title, storyNameFromExport(key)); const parameters: Record = { ...story.parameters, __id: id }; + const { includeStories } = self._meta || {}; if ( - (entries.length === 1 || self._meta?.includeStories?.length === 1) && - key === '__page' + key === '__page' && + (entries.length === 1 || (Array.isArray(includeStories) && includeStories.length === 1)) ) { parameters.docsOnly = true; }