-
Be sure to check the installation section of the general addon-docs page before proceeding.
-
Be sure to have a custom-elements.json file.
-
Add to your
.storybook/preview.js
import { setCustomElements } from '@storybook/web-components'; import customElements from '../custom-elements.json'; setCustomElements(customElements);
-
Add to your story files
export default { title: 'Demo Card', component: 'your-component-name', // which is also found in the `custom-elements.json` };
In order to get Props tables documentation for web-components you will need to have a custom-elements.json file.
You can hand write it or better generate it. Depending on the web components sugar you are choosing your milage may vary.
Known analyzers that output custom-elements.json
:
- web-component-analyzer
- Supports LitElement, Polymer, Vanilla, (Stencil)
- stenciljs
- Supports Stencil (but does not have all metadata)
To generate this file with Stencil, add docs-vscode
to outputTargets in stencil.config.ts
:
{
type: 'docs-vscode',
file: 'custom-elements.json'
},
The file looks something like this:
{
"version": 2,
"tags": [
{
"name": "demo-wc-card",
"properties": [
{
"name": "header",
"type": "String",
"attribute": "header",
"description": "Shown at the top of the card",
"default": "Your Message"
}
],
"events": [],
"slots": [],
"cssProperties": []
}
]
}
For a full example see the web-components-kitchen-sink/custom-elements.json.
By default stories are rendered inline. For web components that is usually fine as they are style encapsulated via shadow dom. However when you have a style tag in you template it might be best to show them in an iframe.
To always use iframes you can set
addParameters({
docs: {
inlineStories: false,
},
});
or add it to individual stories.
<Story inline={false} />
Want to learn more? Here are some more articles on Storybook Docs: