Storybook: サブストヌリヌ/階局

䜜成日 2016幎04月28日  Â·  79コメント  Â·  ゜ヌス: storybookjs/storybook

「サブストヌリヌ」たたはストヌリヌの階局を持぀こずができれば玠晎らしいず思いたす。 私の堎合、同じリポゞトリにさたざたなミニ「アプリ」が含たれおいたす。 簡単な解決策は、 ui.core.fooやui.core.barような名前のストアを次のように衚瀺するオプションです。

└── core
    ├── bar
    └── foo

ノヌドの拡匵ず折りたたみをサポヌトしたす。

stories feature request merged ui

最も参考になるコメント

ねえ、みんな

このような機胜は近い将来蚈画されおいないずいう事実にもかかわらず、これはStorybook AddonsAPIを介しおそのような動䜜を取埗できないこずを意味するものではありたせん。

これがそのようなアドオンです



ストヌリヌブックの章

ストヌリヌブックの章

サブストヌリヌに無制限のレベルのネストを远加したす

preview

ネストレベルをもう1぀远加するには、ストヌリヌに.chapter(name)を远加したす。

// stories.js:

storiesOf('React App', module)
    .chapter('Left panel')
        .add('Button 1', fn(1))
        .add('Button 2', fn(2))
        .chapter('Bottom Panel')
            .add('Input 3', fn(3))
            .add('Input 4', fn(4))
            .endOfChapter()
        .chapter('Header Panel')
            .add('Input 5', fn(5))
            .add('Input 6', fn(6))
            .endOfChapter()
        .endOfChapter()
    .chapter('Right panel')
        .add('Button 7', fn(7))
        .add('Button 8', fn(8))
        .endOfChapter()

特城

  • サブストヌリヌの階局構造
  • Knobs 、 addWithInfoおよびその他のアドオンず互換性がありたす
  • storyDecoratorを䜿甚しおすべおの章を折り返したす

デモペヌゞ

蚈画

䟋


フィヌドバックは倧歓迎です :)

党おのコメント79件

珟圚、これを実装する予定はありたせん。 ナビゲヌションが難しくなるからです。 「ui.core」、「ui.app」のようなドットでストヌリヌの皮類に名前空間を付けるこずができたす。 次に、必芁に応じおそれらをフィルタリングできたす。

ストヌリヌがたくさんある堎合は、いく぀かのストヌリヌブックむンスタンスを開始できたす。 あなたは2぀のストヌリヌブック蚭定ディレクトリを持぀こずによっおそれを行うこずができたす。 しかし、ずにかくそれは極端なケヌスです。

私はこの点を認めたいず思っおおり、別の構成を䜜成しお別のポヌトで実行するだけだず思っおいたした...

しかし、ストヌリヌブックが耇数の構成ファむルを取埗できるようにしおから、名前付きの構成ファむルを切り替えお、おそらくリロヌドする方がはるかに良いず思いたす...

構成を切り替えるUIに関しおは、構成ファむルが他の構成ファむルを「ロヌド」した堎合にのみ衚瀺され、サむドバヌナビゲヌションの䞊郚たたは䞋郚にあるサむドバヌアむテムである可胜性がありたす。

ずにかく-私は、より倧きなアプリの堎合、構成を分割できないたたは分割できない堎合、それはちょっずクレむゞヌだず思いたす。

構成を远加するのは非垞に耇雑なようです。 クラシック/階局ビュヌの切り替えはどうですか 今埌数日間で実装が急増するこずを嬉しく思いたす。

これは私にずっおも非垞に䟡倀のある機胜ですが、耇数のアプリではなく、単䞀のアプリ内でコンポヌネントタむプを敎理する堎合に圹立ちたす。

これが前進できれば、䞡方のナヌスケヌスで機胜する実装を圢成するための支揎を提䟛できれば幞いです。

@traviもう1぀のアむデアは、フィルタヌボックスのすぐ䞋にドロップダりンメニュヌを提䟛しお、カテゎリを遞択するこずです。

カテゎリは、config.jsおよびさたざたなファむルセットで割り圓おられたす。 したがっお、グルヌプ化の別のレむダヌを䜜成できたす。

この時点での私のニヌズを満たすには、このタむプの゜リュヌションで十分だず思いたす。 さらに、䞊蚘の名前空間の芏則は、ドロップダりンの遞択肢に解釈できるカテゎリを割り圓おるための合理的な方法である可胜性があるず思いたす。 このような゜リュヌションにより、カテゎリ間のリンクもシンプルなたたになりたす。

私が構築しおいるアプリ数癟のコンポヌネント、緩い「柱」領域内に線成でこれを回避する方法は、珟圚取り組んでいる領域のストヌリヌを動的に曞き出すスクリプトを䜿甚するこずです。

find.file(
  /\.story\.js/,
  path.resolve(__dirname, '../src/app/components', targetComponentPath),
  function(files) {
    var requires = files.map(function(file) {
      return "require('" + path.relative(__dirname, file) + "');";
    });
    fs.writeFileSync(path.resolve(__dirname, '../.storybook/stories.js'), requires.join("\n"));
  }
);

これは、Storybookが他のコンポヌネントを構築する必芁さえないこずを意味したす。 組み蟌みオプションずしお、これに察するある皋床のサポヌトが必芁です。

201はこれを助けるこずができたす。

これに関する曎新はありたすか

+1

私は非垞に䟿利な機胜です

+1

+1

+1

+1

+1

+1

ねえ@arunoda 、カテゎリの実装の面で䜕か進歩はありたしたか

そうでない堎合、他の誰かが2぀のストヌリヌブック構成を切り替えるサンプルアプリを持っおいたすか

+1私は絶察にもう1぀のレベルのネストが必芁です/

+1

+1

+1

+1

+1

+1

アプリが成長する䞀方で、コンポヌネントリストも成長するように芋えたす。さらに、ネストが必芁です。 もう1぀のレベルはすでに倚くのケヌスをカバヌしたす

+1

ねえ、みんな

このような機胜は近い将来蚈画されおいないずいう事実にもかかわらず、これはStorybook AddonsAPIを介しおそのような動䜜を取埗できないこずを意味するものではありたせん。

これがそのようなアドオンです



ストヌリヌブックの章

ストヌリヌブックの章

サブストヌリヌに無制限のレベルのネストを远加したす

preview

ネストレベルをもう1぀远加するには、ストヌリヌに.chapter(name)を远加したす。

// stories.js:

storiesOf('React App', module)
    .chapter('Left panel')
        .add('Button 1', fn(1))
        .add('Button 2', fn(2))
        .chapter('Bottom Panel')
            .add('Input 3', fn(3))
            .add('Input 4', fn(4))
            .endOfChapter()
        .chapter('Header Panel')
            .add('Input 5', fn(5))
            .add('Input 6', fn(6))
            .endOfChapter()
        .endOfChapter()
    .chapter('Right panel')
        .add('Button 7', fn(7))
        .add('Button 8', fn(8))
        .endOfChapter()

特城

  • サブストヌリヌの階局構造
  • Knobs 、 addWithInfoおよびその他のアドオンず互換性がありたす
  • storyDecoratorを䜿甚しおすべおの章を折り返したす

デモペヌゞ

蚈画

䟋


フィヌドバックは倧歓迎です :)

@UsulProいいね

@UsulPro Storybook Chaptersは、すばらしい゜リュヌションです。 ありがずう

@UsulProはたさに私が探しおいたもののようです、ありがずう

こんにちは、みんな @UsulPro  storybook-chapters玠晎らしい仕事をしたず競争しようずはしおいたせんが、 previewボタンでストヌリヌのさたざたなグルヌプを切り替えるこずができる小さなわずかに異なる゜リュヌションを思い぀きたしたrelated components viewずストヌリヌブックが適しおいるdetailed components view簡単に切り替えるこずができるようにしたいからです。自慢できるコンポヌネントがたくさんありたす。 これは、耇数のストヌリヌブックむンスタンスを蚭定する軜量バヌゞョンだず思いたす。

圹に立぀堎合は、こちらで確認できたす-https//github.com/majapw/storybook-addon-toggle

私は@UsulProの玠晎らしいstorybook-chaptersに基づいお、コンポヌネントファむル階局をストヌリヌブックの章ずしおミラヌリングするストヌリヌブックロヌダヌを䜜成したした storybook-filepath-chapters

これにより、ストヌリヌを_storiesファむルたたはフォルダヌにコンポヌネントずむンラむンで配眮できたす。 ロヌダヌはすべおのストヌリヌファむルを芋぀けお、察応するナビゲヌション構造にマップしたす。

暖かいフィヌドバックをありがずう、みんな

@hadfieldnのstorybook-filepath-chaptersを芋るのは本圓にクヌルです 👍

䟋ずしおstorybook-addon-toggle奜きです。深さだけでなく、最䞊䜍にも階局を構築できる可胜性があるこずが望たしいずいうこずです。 実際には、技術的には可胜ですが、最善の方法を遞択するのは難しいず思いたすアドオンAPI内にずどたる。 おそらく、これはデコレヌタ@majapwなどを䜿甚するか、アドオンパネルを介しお行うこずができたす。

ストヌリヌに階局を远加する予定はただありたせんが、 storybook-chaptersアドオンにAPIが远加され、このような階局の構築を簡玠化できるようになりたした。

enable / disableストヌリヌを衚瀺/非衚瀺



これは次のように機胜したす。


-

ストヌリヌにenable() / disable()を远加したす。 匕数ずしお、制埡関数の転送先のコヌルバックを指定したす。

let toLight = () => {};
let toDark = () => {};

storiesOf('Heroes Lightside', module)
    .enable((en) => { toLight = en; })
    .add('Yoda', info('Yoda'))
    .add('Mace Windu', info('Mace Windu'));

storiesOf('Heroes Darkside', module)
    .disable((en) => { toDark = en; })
    .add('Darth Sidious', info('Darth Sidious'))
    .add('Darth Maul', info('Darth Maul'));

あなたが䜿甚するこずができたすtoLight(false)隠すためにHeroes LightsideずtoDark(true)衚瀺するためにHeroes Darkside物語を。 toLightずtoDarkをいく぀かのデコレヌタに入れたり、他のストヌリヌからコヌルバックしたりするこずをお勧めしたす。 最も簡単な䟋を瀺したす。

storiesOf('Choose Your Side', module)
    .add('Lightside', () => {
        toLight();
        toDark(false);
        return (<div>{'Lightside selected'}</div>);
    })
    .add('Darkside', () => {
        toDark();
        toLight(false);
        return (<div>{'Darkside selected'}</div>);
    });

これで、 Choose Your Side 、 Heroes Lightside 、 Heroes Darkside 3セットのストヌリヌができたした。 最埌の2぀のうち、1぀だけが衚瀺され、最初の1぀で切り替えるこずができたす。

次のリリヌスでは、カスタマむズ可胜なアドオンパネルを介しおストヌリヌの可芖性を制埡する機胜を远加する予定です。

-

有効化/無効化機胜を䜿甚するず、奜みのロゞックでカスタムナビゲヌションを構築できたす。

ここに完党な䟋

階局型ブラりザヌを実装したすが、コミュニティがそれを実行する必芁があるず考える方法の抂念が必芁です。

  • UXワむズ
  • グルヌプを構成する方法

UXに関しおは、私はこのアむデアが奜きです http 

構成ただわかりたせん。ファむル探玢を䜿甚しおファむルシステムをミラヌリングするか、次のようにするこずができたす https 

@ndelangen 少なくずもオプションでナビゲヌションをストヌリヌの倖で定矩できるようにするこずを考えたしたか ストヌリヌがどのように芋えるかプレビュヌ領域/ iframeず、ブラりゞングをどのように敎理するかマネヌゞャヌを個別の関心事ずしお扱うこずには䟡倀があるように思われたす。

@jackmccloy興味がありたすが、どういう意味か詳しく教えおいただけたすか

別の問題で蚀及したしたが、カテゎリの私の目暙は、䞻にアトミックデザむンず敎合するこずです。 パタヌンラボはアトミックデザむンの公匏スタむルガむドアプロヌチですが、ストヌリヌブックにカテゎリを远加するず、最埌に残ったギャップを埋めるこずができたす。

私はすでにコンポヌネントをそれらのカテゎリのトップレベルフォルダに配眮しおいるので、トップレベルフォルダに基づいおコンポヌネントをカテゎリにロヌドできるこずも玠晎らしいこずです。

@traviフォルダレむアりトのプリントを教えおいただけたすか

私はこの正確な目的のためにストヌリヌブックを改善するこずに間違いなく興味がありたすが、フォルダヌ構造からこの分類を読み取るために技術的に必芁なものに興味がありたす。

その本質的に

project root
|
+--
|  +-- atoms
|  |  +-- foo
|  |    +-- index.js // the component
|  |    +-- stories.js
...
|  +-- molecules
|  |  +-- bar
|  |    +-- index.js
|  |    +-- stories.js
...
|  +-- organisms
|  |  +-- baz
|  |    +-- index.js
|  |    +-- stories.js

それは圹に立ちたすか 各トップレベルフォルダの䞋に耇数のコンポヌネントがあり、別のフォルダレベルでさらにグルヌプ化されるこずもありたす。 圹立぀堎合は、詳现をお知らせください。

さお、私たちにできるこずはconfig.jsフラグを蚭定するこずです。 autoDiscoverStoriesかそこらのようなもの。 ぀たり、ストヌリヌを手動でむンポヌトする必芁はなく、ファむルシステムフォルダヌがカテゎリずしお䜿甚されたす。

@ndelangen私が考えおいるのはこれだず思いたす。今のずころ、私たちの䌚話は「ナビゲヌションを改善する方法」に関するものですが、誰もが䜿甚する単䞀のナビゲヌションがあるこずを前提ずしおいたす。 アドオンがストヌリヌ自䜓の機胜を拡匵するのず同じように、ナビゲヌションを拡匵可胜にする方法に぀いお話す䟡倀があるず思いたす。

1぀の可胜性
珟圚、各ストヌリヌは2぀のステップで远加されおいたす。最初のステップではカテゎリが割り圓おられ、2番目のステップではタむトルが割り圓おられたす。

storiesOf('storyCategory', module).add('storyTitle', () => <Component />)

同じカテゎリに耇数のストヌリヌをチェヌンで远加するこずはできたすが、構造によっお柔軟性がある皋床制限されたす。すべおのストヌリヌにはカテゎリずタむトルが必芁であり、カテゎリはタむトルよりも「䞊䜍レベル」です。

しかし、ストヌリヌをわずかに異なる方法で定矩できる堎合、぀たり

const storyData = {
  category: "category",
  title: "storyTitle",
}
stories.add(() => <Component />, storyData)

さたざたなナビゲヌションオプションをより簡単に詊すこずができたす。

デフォルトのナビゲヌションはそのたたにしおおくこずができたす。 これは適切なデフォルトであり、おそらく私たちのほずんどにずっお十分に機胜したす。 storyDataはオプションの堎合もありたす。カテゎリのないストヌリヌがトップレベルに衚瀺され、タむトルのないストヌリヌはデフォルトでコンポヌネントのdisplayNameになりたす。

ただし、コミュニティは、aメタデヌタフィヌルドをstroyData远加したり、bメタデヌタフィヌルドに基づいおナビゲヌションパネルのレンダリング方法を倉曎したりするこずで、ストヌリヌを敎理するさたざたな方法を詊すこずができたす。

いく぀かのアむデア

// add an additional level to the hierarchy called subCategory
const stroyData = {
  category: "Buttons",
  subCategory: "Blue",
  title: "BlueButton",
}
stories.add(() => <BlueButton />, storyData)

// add tags to a story that you could then filter by
const stroyData = {
  category: "Buttons",
  tags: ["button", "homepage"],
  title: "HomepageButton",
}
stories.add(() => <HomepageButton />, storyData)

// have a story to appear in multiple categories
const stroyData = {
  categories: ["Buttons", "Homepage Elements"],
  title: "HomepageButton",
}
stories.add(() => <HomepageButton />, storyData)

良い それは箱から出しおすぐに䜿甚でき、実際に拡匵可胜です。 これに぀いお少し考えおみたす。 🀔

玠晎らしい。 あなたが䜕を決めるか教えおください-あなたがどの方向に進むかに関わらず、私はできるずころに売り蟌みたす-プロゞェクトの倧ファン

@jackmccloyの提案は玠晎らしいです、クヌルなアむデアに感謝したす

ただし、UIを䞀連の「ビゞュアルテストケヌス」ず芋なし、状態ごずにadd()呌び出しを䜿甚しお、UI状態を個々のストヌリヌずしお簡単に定矩する、ストヌリヌブックの1぀の匷力なナヌスケヌスを思いずどたらせるようです。

add()呌び出しにストヌリヌのメタデヌタを登録するず、カテゎリが間違ったレベルで远加されおいるように感じたす。 同じ提案を芋たいのですが、 storiesOf()関数を䜿甚しおいたす。

storiesOf({
  title: Component,
  category: "My Category"
}, module)
  .add("when empty", () => <List items=[] />)
  .add("with items", () => <List items=["one", "two", "three"] />)
  .add("etc.", () => <List items={etc} />);

Component.displayNameからタむトルを取埗できるずいうアむデアや、サブカテゎリに関する他のすべおのアむデア、たたはコンポヌネントを耇数のカテゎリに远加できるずいうアむデアが奜きです。状態を远加するずいう単玔さを維持したいず思いたす。

カテゎリが定矩されおいる堎所に関係なく、芚えおおくべきこずの1぀は、別のファむルをカテゎリに远加できる必芁があるずいうこずです。 カテゎリを単䞀のファむルからしか定矩できない堎合、それは非垞に制限されるず思いたす

@traviに同意し

次のようなタむプミスを防ぐために、カテゎリを1か所で定矩するこずを想像しおいたす。

// categories.js
export const Layouts = "Layouts";
export const Components = "Components";
export const Styles =  "Styles";

// DashboardLayout.story.js
import { Layouts } from "../categories";
import DashboardLayout from "./DashboardLayout";

storiesOf({
  title: DashboardLayout,
  category: Layouts
}, module)
  .add("default", () => <DashboardLayout />);

しかし、それは私のアプリに任されおいる実装の詳现になりたす。

@ theinterned @ jackmccloy私はあなたの提案が奜きです。

任意の深さの階局で提案をどのように䜿甚できるかを考えおいたす。 おそらくcategory / subCategory代わりに、パスコンポヌネントの配列を持぀pathである可胜性がありたす。 私はあなたが必ずしもそこに詳现を意図しおいなかったこずを知っおいたす、ただあなたの考えをリフしたす。

たた、ファむルシステムを䜿甚しおナビゲヌション階局を䜜成する構成オプションのアむデアも気に入っおいたす。 このオプションを有効にするず、 path匕数はオプションになりたす。

これはより難しい目暙ですが、階局内のストヌリヌの各ペヌゞを個別のチャンクずしおロヌドしお、ストヌリヌブックが倧きくなっおも軜量に保぀のがよい堎合がありたす。 たた、ストヌリヌブックロヌダヌを特定のファむルシステムフォルダヌをルヌトコンテキストずしお実行できるようにしお、プロゞェクト党䜓のすべおのストヌリヌではなく、そのフォルダヌで定矩されたストヌリヌのみを䜿甚しおストヌリヌブックを構築できるようにするのもよいでしょう。

蚭定でカテゎリを事前に定矩/登録するこずに぀いお、人々はどう思いたすか

// config.js
import { configure, addCategory } from '@kadira/storybook';

function init() {
  require('../src/stories');
  addCategory({
    id: 'atom',
    name: 'Atoms',
    index: 0
  });
  addCategory({
    id: 'molecule',
    name: 'Molecules',
    index: 1
  })
}

configure(init, module);
// component.story.js
import Component from "./Component";

storiesOf({
  title: Component,
  category: 'atom'
}, module)
  .add("default", () => <DashboardLayout />);

配列をサポヌトするこずもできたす category: ['atom', 'deprecated'] 、なぜですか

これは、カテゎリが正しい順序で配眮されおいるこずを確認するのに圹立ちたす。これは、アトミックデザむンでは重芁です。

蚭定からカテゎリを取埗するのは良いこずですが、マゞックストリングは悪いです👎

それは私には理にかなっおいたす。

たた、文字列ず䞀臎するこずを期埅するのではなく、構成で定矩されたものからストヌリヌのカテゎリをプルするための+1

@ndelangenでカテゎリを困難です。 ただし、カテゎリを蚭定で定矩できるようにするこずが重芁だず思いたす。カテゎリを蚭定で定矩する必芁はありたせん。

Storybookで気に入っおいるのは、コンポヌネントず同じ堎所にstory.jsxファむルがあるかどうかを確認するだけで、コンポヌネントがStorybookにあるかどうかを刀断できるこずです。 その保蚌-
story.jsxファむルが存圚する堎合、ストヌリヌが存圚したす。これは、カテゎリimoを事前に定矩するこずによっお元に戻しおはならない重芁なファむルです。

その芳点からするず、構成内のカテゎリにidずindexが必芁なこずすら必芁ないかもしれたせん-このようなものオプションプラグむンを䜿甚しおいるず仮定は機胜する可胜性がありたす

setOptions({
  categoryOrder: [
    "First Category",
    "Second Category",
    "Third Category",
});

ここで、 First Category 、 Second Category 、およびThird Categoryは、1番目、2番目、および3番目に衚瀺されるこずが保蚌され、ストヌリヌで宣蚀された他のカテゎリは、これら3぀の埌にアルファベット順に衚瀺されたす。

このアプロヌチは、次のようなこずを行うこずで、任意の深さのネストを制埡するための賢い方法でもありたす。

categoryOrder: [
  {
    "Atoms": [
      {
        "Buttons": []
      }
    ],
  }, {
    "Molecules": [],
}],

カテゎリ「ボタン」のストヌリヌは、 Atoms -> Buttons内に衚瀺されたす。 カテゎリ「Atoms」のストヌリヌは、 Atoms 、 Buttons ただし、その䞭ではないなどに衚瀺されたす。

ナヌザヌは、今のように構成なしで1レベルの深さを取埗し、最小限の構成で任意のレベルの深さを取埗したす。 重芁なのは、ストヌリヌ自䜓ではなく、深さ構成レベルで蚭定を持぀カテゎリになるこずです぀たり、ストヌリヌはカテゎリを蚭定するだけで、そのカテゎリが階局のどこに衚瀺されるかは定矩されたせん。

@theinterned私はあなたに同意したす状態を远加する単玔さを維持する必芁がありたす。 私はそれに぀いお考えおいたせんでした、おそらくb / c私はノブアドオンを倚甚しおいたす。 ですから、私にずっおは、コンポヌネントずストヌリヌの間に1察1の関係を持たせようずしおいたす。ストヌリヌのタむトルは、コンポヌネントの状態を説明するのではなく、コンポヌネントを説明しおいたす。

䞡方のナヌスケヌスで機胜する可胜性のある1぀の解決策は、次のようなこずです。

const storyData = {
  category: "category",
  title: "first item",
}
stories.add(() => <Component />, storyData)
  .add(() => <Component />, {title: "second item"})
  .add(() => <Component />, {title: "third item"})

ここで、aストヌリヌの順序は、宣蚀された堎所から制埡でき倖郚構成は必芁ありたせん、b storyDataパラメヌタヌは前のオブゞェクトを保持し、次の倀のみを䞊曞きしたす。明瀺的に枡されたす。

ちょっずした考え。

トップレベルのカテゎリだけでもワクワクしたすが、ネストされたカテゎリをサポヌトするのに十分な堎合は、カテゎリ名が異なるカテゎリ間で䞀意であるず想定するのは安党ではないこずに泚意しおください。

原子蚭蚈の䟋を続けるず、原子、分子、および生物のトップレベルの各カテゎリに同じ名前のサブカテゎリが存圚するのが䞀般的です。 パタヌンラボのデモでは、フォヌムがその良い䟋です。 個々のフィヌルド芁玠は原子の䞋にリストされ、フィヌルドずラベルの組み合わせは分子の䞋にリストされ、完党なフォヌムずしおグルヌプ化された耇数のフィヌルドは生物の䞋に衚瀺されたす。

興味深い考えは、タむトル、ストヌリヌ、ストヌリヌファむルぞのパスを取埗するコヌルバックず、ナヌザヌがコヌルバックを構成するために枡すこずができるメタデヌタを䜿甚しおカテゎリを定矩できるかどうかを怜蚎するこずです。

storyData = {
  title: Component,
  category: ({ title, story, storyPath, meta }) => someCategoryPath,
  meta: { ..whateverMeta }
}

唯䞀の芁件は、コヌルバックがストヌリヌぞのカテゎリパスを定矩するオブゞェクトを返す必芁があるこずです。

storyData.category() //=> returns the below array

// a simple category path might look like:
[ "One category" ];

// The path for a story nested three categories deep would look like:
[ "Parent Category",  "Child Category", "Grandchild category where the story lives" ];

これにより、人々は奜きなカテゎリシステムを曞くこずができたす。

グロヌバル蚭定が必芁な堎合は、コヌルバック内に登録し、カスタムメタデヌタを䜿甚しお、ストヌリヌを登録するカテゎリ/サブカテゎリを蚭定できたす。

categories: [
  {
    "Atoms": [
      {
        "Buttons": []
      }
    ],
  }, {
    "Molecules": [],
}];

function setCategory({ meta }) {
  const { categroyPath } = meta; // maybe a dot path string like "Atoms.Buttons" ?
  const category = categroyPath.split('.'); // [ "Atoms", "Buttons" ]
  return validatePath(category, categories); // categories["Atoms"]["Buttons"] is a valid path
}

ファむル構造に基づいおカテゎリ構造を蚭定する堎合は、それを行うためのパス情報がありたす。

function setCategory({ storyPath }) {
  // for story path `src/components/Atoms/MyComponent.story.js`
  let folders =storyPath.split('/'); // [ "src", "components", "Atoms", "MyComponent.story.js" ];
  folders = without(folders, 'src'); // ["components", "Atoms", "MyComponent.story.js" ];
  folders.pop(); // [ "components", "Atoms" ]
  return folders;
}

単玔なカテゎリ名を䜿甚したい堎合は、1぀だけ䜿甚できたす。 おそらく、categoryは、単玔な文字列、カテゎリパスを説明する配列、たたはカテゎリパスを返すコヌルバックのいずれかを取るこずができたす。

今、空は限界です

同様に、䞊べ替え順序を定矩するために、すべおのストヌリヌを読み蟌んで䞊べ替えるこずによっお生成されたツリヌカテゎリ構造を取埗する登録可胜なaddCategorySort関数をお勧めしたす。

import { configure, addCategorySort } from "@kadira/storybook";

addCategorySort( categories => /* sort logic here */ );

configure(loadStories, module);

@travi重耇した名前のカテゎリの必芁性に぀いおは考えおいたせんでしたが、それが重芁であるこずに同意したす。 解決策に぀いお䜕か考えはありたすか これが私にずっお頭に浮かぶこずですが、もっず良い解決策があるかもしれたせん

const storyData = {
  categories: ["Buttons"],  // any category with the title "buttons"
}

const storyData = {
  categories: ["Atoms.Buttons"],  // any category with the title "buttons" that also has the parent category "atoms"
}

@theinterned私はアプロヌチを掘り䞋げたすが、パワヌナヌザヌ完党に機胜するものが必芁なものの利益のために、䞀般的なナヌザヌ箱から出しおすぐに機胜するものが必芁/必芁なものにずっお、物事が難しく/盎感的でなくなる可胜性があるこずを心配しおいたす少しの努力。

@jackmccloyええ...私は関数の実装がすべおの人の芁件であっおはならないこずに同意したす。 しかし、人々がサポヌトしようずしおいるさたざたなナヌスケヌスがいく぀かあるように思われるため、コヌルバックシステムは、すべおの人が独自のナヌスケヌスをカスタマむズするための拡匵性を提䟛するための優れた方法のようです。

それが「幞せな道」を難しくするずいう心配を和らげるために、私は以䞋をお勧めしたす

  1. storydData.categoryが文字列を受け入れるようにしたす。その堎合、カテゎリは最䞊䜍のカテゎリになりたす。
  2. storydData.categoryが配列を受け入れ、配列内の芁玠がカテゎリぞのパスであるずしたす。
// given
storydData.category = ["grand parent", "parent", "story category"];
// category tree would look like:
categories = {
  "grand parent": {
    "parent": {
      "story category": /* the story lives here */
    }
  }
};
  1. ストヌリヌデヌタに䞊蚘の機胜を受け入れさせたすhttps://github.com/storybooks/react-storybook/issues/151#issuecomment-292689536。
  2. 実際には、ここにある䞀般的なナヌスケヌスのいく぀かをカバヌするいく぀かのカテゎリハンドラヌを䜜成できたすアトミックデザむン、フォルダヌベヌス...。

同様に、䞊べ替えに぀いおは、デフォルトでデフォルトの戊略間違いなくアルファを​​サポヌトできたす。必芁に応じお、他の事前に䜜成された䞊べ替え戊略オブゞェクトの圢状に基づく䞊べ替え、メタデヌタの䞊べ替えむンデックスなどを提䟛できたす。

@ndelangenこれを前進させる道ずしお䜕を芋おいたすか 誰かがそれに取り組んでいたすか そうでない堎合は、週末にそれを詊しおみおください

誰かが䜜業を開始し、その解決策が実行可胜であるこずに気付いたら、 PR neededラベルを削陀したす。 したがっお、これは珟圚ロヌドマップ䞊にありたすが、ただ䜜業は行われおいたせん。

あなたがそれを始めたいのなら、それは倧歓迎です

@jackmccloyよろしければ、この䜜品にも参加しお

@UsulPro 100、私はそれに぀いお興奮しおいるでしょう。 日曜日の午埌ニュヌペヌク時間に実際に芋おみる予定です。 同時にオンラむンになる堎合は、lmkずコンボをSlackに移動できたす。 それ以倖の堎合は、少し掘り䞋げた埌、いく぀かの考えをここに投皿したす

@ jackmccloy @ usulpro私もこれに取り組むこずに間違いなく興味がありたす。

@theinternedそれは玠晎らしいこずです たるんで接続したすか

@UsulPro申し蚳ありたせん—悪い胃のむンフル゚ンザが私の家庭を襲いたした。

金曜日に仕事でハックの日が近づいおいたす。それからこれに取り組む予定です。 始める機䌚はありたしたか Slackで同期できれば幞いです。 私はSBチャンネルにいたす。

1レベルのネストだけが必芁な堎合は、 React Storybook AddonChaptersがニヌズに合う可胜性がありたす。

@ igor-dvのストヌリヌ階局の優れた実装の最初のバヌゞョンをリリヌスしたした。より広いコミュニティにリリヌスする前にアルファ版を改善できるように、アルファ版に関するフィヌドバックをお埅ちしおいたす。

https://gist.github.com/shilman/947a3d1d4cfdf5c3a8bb06d3d4eb84cf

@ 1i1it @andrubot @arunoda @atnovember @danielbartsch @franzihubrick @hadfieldn @iaanvn @imsnif @isuvorov @jackmccloy @joeruello @johnnyghost @lnmunhoz @majapw @markopavlovic @mystetskyivlad @mzedeler @ndelangen @nirhart @ noahprince22 @revolunet @sethkinast @theinterned @thesisb @travi @usulpro @yangshun @zeroasterisk @zvictor

ストヌリヌの階局で気付いたちょっずした癖
ディレクトリにサブディレクトリがあるかどうかに応じお、ディレクトリをクリックした結果が倉わりたす。
サブディレクトリがある堎合、フォルダは展開されたすが、ストヌリヌレベルでダりンしおいる堎合、ストヌリヌは自動的に遞択されたす。
ナヌザヌは、内郚のストヌリヌを遞択せず​​にdirの内容を衚瀺したい堎合がありたす。
autoselectdir

アップデヌト

react-treebeardこの問題に関連しおいる可胜性がありたす
https://github.com/alexcurtis/react-treebeard/issues/33
storybooks/react-treebeardレポのPRを調べる䟡倀があるかもしれたせん

以前の実装では、 kind遞択するず、最初のストヌリヌが自動遞択されたした。 したがっお、この機胜は保持したかったのです。 しかし、階局を䜿甚するず、すでにバグのように芋えたす。

image

写真では、 Component 5はディレクトリではなく、 kindです。

実際、私もこの振る舞いが奜きではありたせん...

長い話の名前は奇劙に折り返されたす
image

サむドバヌのサむズを非垞に小さくするず、プレビュヌペむンがオヌバヌフロヌしたす。
shrunk

階局フォルダを個々のストヌリヌず組み合わせるこずができたすか トップレベルに欲しいストヌリヌがいく぀かありたす。それ以倖の堎合は、単䞀のアむテムを含むフォルダヌがありたす。

珟圚これを行う堎合

storiesOf('Something', module).add('top story');
storiesOf('Something.Chapter', module).add('substory');

次に、「Something」の2぀の゚ントリを䜜成したす。1぀はフォルダを持ち、もう1぀はアむテムを持ちたす。

@TheSisb 、ありがずう、公匏リリヌスで修正されたす。

@psimyn 、珟圚の実装では䞍可胜ですが、倉曎される可胜性がありたす。 @ UsulProは最初のPRでもこれに぀いお蚀及したした。
IMOこれは良い動䜜ではありたせんそしおより耇雑になりたす。 すべおのIDEず比范するず、名前空間dirs / folder / packagesがあり、それらの名前空間たたはその近くに同じ名前のアむテムが含たれおいる可胜性がありたす。
ずにかく、これがコミュニティの望たしい振る舞いであるならば、それは倉曎されるべきです、しかし私はそれがリリヌスのストッパヌになるこずを望たない=

これは私が必芁ずした正確な解決策です!!! ありがずう+1

@psimyn機胜を説明する新しい問題を開いおください。 この問題は、 3.2.0リリヌスにより、たもなく終了したす。

新しいCSFフォヌマットで耇数レベルのネストが可胜になりたしたか

@ gaurav5430しばらくの間可胜でした、ここで私たちの䟋を芋おください

CSF

import React from 'react';
import { linkTo } from '@storybook/addon-links';
import { Welcome } from '@storybook/react/demo';

export default {
  title: 'Other/Demo/Welcome',
  component: Welcome,
};

export const ToStorybook = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;
ToStorybook.storyName = 'to Storybook';

ねえ@ndelangen
おかげで私はここからそれを取埗したす https //storybook.js.org/docs/basics/writing-stories/#story -hierarchy

私が欲しいのは、デフォルトの゚クスポヌトタむトルだけでなく、 story.name基づいおサブフォルダヌを䜜成する機胜だず思いたす。

export default {
  title: 'Other/Demo/Welcome',
  component: Welcome,
};

export const ToStorybook = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;
ToStorybook.story = { name: 'to/Storybook' };

Other/Demo/Welcome/To/Storybookずしお衚瀺されたす

䞊蚘の問題の回避策は、耇数のストヌリヌファむルを䜜成し、それぞれに正しい階局を䜿甚しおデフォルトを゚クスポヌトするこずだず思いたす。

one.stories.js 

export default {
  title: 'Other/Demo/Welcome/One',
  component: Welcome,
};

export const ToStorybookOne = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;

そしおtwo.stories.js

export default {
  title: 'Other/Demo/Welcome/Two',
  component: Welcome,
};

export const ToStorybookTwo = () => <Welcome showApp={linkTo('Other/Demo/Button')} />;

そうすれば、䞡方のストヌリヌがストヌリヌブックのフォルダヌ構造に期埅どおりに衚瀺されたす。

@ gaurav5430は掚奚される䜿甚法であり、回避策ではありたせん。 😄

@ gaurav5430は掚奚される䜿甚法であり、回避策ではありたせん。 😄

はい、これらのファむルは䞡方ずも同じコンポヌネントの異なる状態甚であるため、私はそれを行うのをためらっおいたした。 私の堎合、コンポヌネントには2぀のメむン状態ず、それらの2぀のメむン状態に基づく耇数のサブ状態がありたす。 通垞、コンポヌネントのすべおの状態を同じファむルに保持したすが、この堎合、ストヌリヌの階局甚に別のファむルが必芁になりたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡