全域控制

@luigiminardim/storybook-addon-globals-controls 提供一個圖形化介面,讓您能夠動態地與 Storybook 的全域變數互動。它會在您的元件範例(「stories」)旁邊建立一個擴充功能面板,讓您可以即時編輯這些變數。

在 Github 上檢視

全域控制 Storybook 擴充功能

有時候,您的設計會為了在不同專案之間擴展而建構,並且需要在這些專案之間設定一些客製化項目。在這些情況下,您可能會想要在全域上下文中設定變數,以針對特定專案所需的特定方式來配置您的元件。檢查套用在設計元件上的可能預先配置,也是一個好主意。

為此,「全域控制」擴充功能提供與 Storybook Controls 相同的圖形化介面,但用於動態地與 Storybook 的全域變數互動。

開始使用

使用以下指令安裝「全域控制」Storybook 擴充功能

yarn add -D @luigiminardim/storybook-addon-globals-controls

然後,將以下內容新增至 .storybook/main.js

module.exports = {
  addons: ['@luigiminardim/storybook-addon-globals-controls'],
};

用法

在您的 .storybook/preview.js 中,以您設定 argTypes 的相同 API 匯出全域類型。請查看 Storybook 官方文件關於控制項註釋以瞭解控制項 API。

您也可以使用與標準 Storybook Controls 相同的 API 設定預設色彩。

雖然並非必要,但若要使用全域變數,我們建議使用匯出的裝飾器 withGlobals

範例

// .storybook/preview.js

import { withGlobals } from "@luigiminardim/storybook-addon-globals-controls";

export const globalTypes = {
  uncontrolled: {
    name: "Uncontrolled",
    description: "Should not have any controls.",
  },
  boolean: {
    name: "Boolean",
    description: "Boolean Description",
    defaultValue: true,
    control: { type: "boolean" },
  },
  number: {
    name: "Number",
    description: "Number Description",
    defaultValue: 8,
    control: { type: "number", min: 6, max: 10, step: 2 },
  },
};

export const parameters = {
  globalsControls: {
    presetColors: [
      { color: "#ff4785", title: "Coral" },
      "rgba(0, 159, 183, 1)",
      "#fe4a49",
    ],
  },
};

const withDisplayGlobals = withGlobals((Story, globalValues) => (
  <div>
    {JSON.stringify(globalValues, null, 2)}
    <Story />
  </div>
));

export const decorators = [withDisplayGlobals];

panel example

注意: 控制項僅適用於標記有 control 屬性的參數,例如 (control: {type: 'text'})。

貢獻

您可以 fork main 分支並發送 pull request 來貢獻這個擴充功能,您也可以在 repo 中開啟一個 issue 來尋求協助或要求新功能。