storybook-addon-root-attributes

Storybook 插件根属性,用于在运行时切换故事的多个 HTML 或 body 属性(适用于 Storybook 7!)

在 Github 上查看

Storybook 插件根属性

:star: 支持 Storybook 7.0.0 :star

demo

这是什么

这个项目受到 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 {} 应包含 namevalue 属性的默认状态。值 nil 将从根节点中删除属性
states [] 包含 namevalue 的对象的数组,其中 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",
        },
      ],
    },
  ],
});
作者
  • junghyeonsu
    junghyeonsu
适用于
    HTML
    React
标签