storybook-addon-root-attributes
Storybook 插件根属性,用于在运行时切换故事的多个 HTML 或 body 属性(适用于 Storybook 7!)
Storybook 插件根属性
:star: 支持 Storybook 7.0.0 :star
这是什么
这个项目受到 le0pard/storybook-addon-root-attribute 的启发
现有的库 仅接收 **一个属性**。因此,此库可以通过接收 **数组** 形式的属性来更改多个属性。
Storybook 插件根属性,用于在运行时切换故事的 html、body 或某些元素属性 Storybook
演示
安装
yarn add -D storybook-addon-root-attributes
配置
创建一个名为 main.js
的文件,并在 addons
部分添加插件
module.exports = {
...
addons: [
...
'storybook-addon-root-attributes'
]
};
使用
创建一个名为 preview.js
的文件,并在 addParameters
中添加参数
import { addParameters } from "@storybook/react";
// global
addParameters({
rootAttributes: [
{
defaultState: {
name: "Default",
value: null,
},
states: [
{
name: "Dark",
value: "dark",
},
],
},
{
defaultState: {
name: "Default",
value: null,
},
states: [
{
name: "IOS",
value: "ios",
},
],
},
],
});
您可以使用 rootAttributes
参数来单独覆盖每个故事的资源
// per story: Button.stories.js
export default {
title: "Example/Button",
component: Button,
parameters: {
rootAttributes: [
{
root: "html",
attribute: "data-color-scheme",
defaultState: {
name: "Yellow",
value: "yellow",
},
states: [
{
name: "Blue",
value: "blue",
},
{
name: "Red",
value: "red",
},
{
name: "Green",
value: "green",
},
],
},
],
},
};
如果要使用工具提示(面板不会消失),需要在参数中使用 true
值设置 rootAttributesTooltip
addParameters({
rootAttributesTooltip: true, // you need to set this property
rootAttributes: [
{
root: "html",
attribute: "data-scale-color",
defaultState: {
name: "Light",
value: "light",
},
states: [
{
name: "Dark",
value: "dark",
},
{
name: "Gray",
value: "gray",
},
],
},
{
root: "html",
attribute: "data-letter-spacing",
defaultState: {
name: "IOS",
value: "ios",
},
states: [
{
name: "Android",
value: "android",
},
],
},
],
});
配置
rootAttributes
参数的配置参数
名称 | 默认值 | 变体 | 描述 |
---|---|---|---|
rootAttributes | rootAttribute[] | 包含 rootAttribute 的对象的数组 |
查看下方更多详细信息 |
rootAttributesTooltip | false | 布尔值 | 为 Storybook 添加工具提示按钮 |
rootAttribute
参数的配置参数
名称 | 默认值 | 变体 | 描述 |
---|---|---|---|
root | 'html' | 'html'、'body' 或 `document.querySelector()` 返回的第一个元素,如果未找到则为 'html' | 根节点,插件将更改其属性 |
attribute | 'class' | 任何有效的属性名称 | 属性名称 |
defaultState | {} | 应包含 name 和 value |
属性的默认状态。值 nil 将从根节点中删除属性 |
states | [] | 包含 name 和 value 的对象的数组,其中 name 唯一 |
属性值所需的所有状态。每个对象都应包含唯一的 name (用于按钮)和属性的 value |
配置示例
addParameters({
rootAttributesTooltip: true,
rootAttributes: [
{
root: "html",
attribute: "data-scale-color",
defaultState: {
name: "Light",
value: "light",
},
states: [
{
name: "Dark",
value: "dark",
},
{
name: "Gray",
value: "gray",
},
],
},
{
root: "html",
attribute: "data-letter-spacing",
defaultState: {
name: "IOS",
value: "ios",
},
states: [
{
name: "Android",
value: "android",
},
],
},
],
});