From a5a402c3177310bef5afedfa4562aa8aab54bb4a Mon Sep 17 00:00:00 2001 From: Michael Shilman Date: Sat, 12 Oct 2019 10:02:59 +0800 Subject: [PATCH] CLI: SFC_VUE template MDX support --- lib/cli/generators/SFC_VUE/index.js | 3 + .../SFC_VUE/template-mdx/.storybook/addons.js | 2 + .../SFC_VUE/template-mdx/.storybook/config.js | 4 + .../template-mdx/.storybook/presets.js | 1 + .../src/stories/0-Welcome.stories.mdx | 23 ++++ .../src/stories/1-Button.stories.mdx | 49 +++++++ .../template-mdx/src/stories/MyButton.vue | 29 +++++ .../template-mdx/src/stories/Welcome.vue | 120 ++++++++++++++++++ 8 files changed, 231 insertions(+) create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/.storybook/addons.js create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/.storybook/config.js create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/.storybook/presets.js create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/src/stories/0-Welcome.stories.mdx create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/src/stories/1-Button.stories.mdx create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/src/stories/MyButton.vue create mode 100644 lib/cli/generators/SFC_VUE/template-mdx/src/stories/Welcome.vue diff --git a/lib/cli/generators/SFC_VUE/index.js b/lib/cli/generators/SFC_VUE/index.js index 3338b926fd6..978dc3f22be 100644 --- a/lib/cli/generators/SFC_VUE/index.js +++ b/lib/cli/generators/SFC_VUE/index.js @@ -16,6 +16,9 @@ export default async (npmOptions, { storyFormat = 'csf' }) => { '@storybook/addon-links', '@storybook/addons', ]; + if (storyFormat === 'mdx') { + packages.push('@storybook/addon-docs'); + } const versionedPackages = await getVersions(npmOptions, packages); copyTemplate(__dirname, storyFormat); diff --git a/lib/cli/generators/SFC_VUE/template-mdx/.storybook/addons.js b/lib/cli/generators/SFC_VUE/template-mdx/.storybook/addons.js new file mode 100644 index 00000000000..6aed412d04a --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/.storybook/addons.js @@ -0,0 +1,2 @@ +import '@storybook/addon-actions/register'; +import '@storybook/addon-links/register'; diff --git a/lib/cli/generators/SFC_VUE/template-mdx/.storybook/config.js b/lib/cli/generators/SFC_VUE/template-mdx/.storybook/config.js new file mode 100644 index 00000000000..145eb83c09a --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/.storybook/config.js @@ -0,0 +1,4 @@ +import { configure } from '@storybook/vue'; + +// automatically import all files ending in *.stories.js +configure(require.context('../src/stories', true, /\.stories\.js$/), module); diff --git a/lib/cli/generators/SFC_VUE/template-mdx/.storybook/presets.js b/lib/cli/generators/SFC_VUE/template-mdx/.storybook/presets.js new file mode 100644 index 00000000000..a4707c74c5c --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/.storybook/presets.js @@ -0,0 +1 @@ +module.exports = ['@storybook/addon-docs/vue/preset']; diff --git a/lib/cli/generators/SFC_VUE/template-mdx/src/stories/0-Welcome.stories.mdx b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/0-Welcome.stories.mdx new file mode 100644 index 00000000000..ff8ddef54a9 --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/0-Welcome.stories.mdx @@ -0,0 +1,23 @@ +import { Meta, Story, Preview } from '@storybook/addon-docs/blocks'; +import { linkTo } from '@storybook/addon-links'; +import Welcome from './Welcome.vue'; + + + +# Welcome + +This is a test document written in MDX that defines a `Welcome` story wrapped in a `Preview` doc block: + + + + {() => ({ + components: { + Welcome, + }, + template: '', + methods: { + action: linkTo('Button'), + }, + })} + + diff --git a/lib/cli/generators/SFC_VUE/template-mdx/src/stories/1-Button.stories.mdx b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/1-Button.stories.mdx new file mode 100644 index 00000000000..f18ce7dfcc8 --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/1-Button.stories.mdx @@ -0,0 +1,49 @@ +import { Meta, Story } from '@storybook/addon-docs/blocks'; +import { action } from '@storybook/addon-actions'; +import { linkTo } from '@storybook/addon-links'; +import MyButton from './MyButton.vue'; + + + +# Button + +This `Button` documentation defines three stories: + + + {() => ({ + components: { + MyButton, + }, + template: 'Hello Button', + methods: { + action: action('clicked'), + }, + })} + + + + {() => ({ + components: { + MyButton, + }, + render() { + return With JSX; + }, + methods: { + action: linkTo('clicked'), + }, + })} + + + + {() => ({ + components: { + MyButton, + }, + template: + '😀 😎 👍 💯', + methods: { + action: action('clicked'), + }, + })} + diff --git a/lib/cli/generators/SFC_VUE/template-mdx/src/stories/MyButton.vue b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/MyButton.vue new file mode 100644 index 00000000000..4ad8ff85f08 --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/MyButton.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/lib/cli/generators/SFC_VUE/template-mdx/src/stories/Welcome.vue b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/Welcome.vue new file mode 100644 index 00000000000..a7bbd1c4fab --- /dev/null +++ b/lib/cli/generators/SFC_VUE/template-mdx/src/stories/Welcome.vue @@ -0,0 +1,120 @@ + + + + +