šŸš€ Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more →
Socket
Sign inDemoInstall
Socket

@verkstedt/storybook-store-decorator

Package Overview
Dependencies
Maintainers
4
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@verkstedt/storybook-store-decorator

Provide a store decorator for storybookjs

1.2.1
latest
npm
Version published
Weekly downloads
18
-25%
Maintainers
4
Weekly downloads
Ā 
Created
Source

Store Decorator for Storybook

Scoped data provider for storybook stories. Add store objects to a global/scoped store and access their props from you're stories components.

installation

npm npm -i storybook-store-decorator

yarn yarn add storybook-store-decorator

usage

populate the store

storeObject must be on object

as a global decorator in .storybook/config.js

import withStoreDecorator from 'storybook-store-decorator'
...

addDecorator(withStoreDecorator({
  props: storeObject, // values for the store
  globalStore: true,  // sets the object as the global default one
  reset: true         // replace the store instead of merge the new values
}))

Using globalStore: true and reset: true will ensure, that oin every start of storybook, we start with an empty store into which ouer storeObject will be inserted.

as a scoped decorator in a [name].stories.js file

import withStoreDecorator from 'storybook-store-decorator'
...

storysOf('myStory', module)
  .addDecorator(withStoreDecorator({
    props: storeObject, // this values will be merged into the current store (the global store)
                        // this changes are available for 'storyA', 'storyB' and 'storyC'
  }))
  .add('storyA', () => <storyA />)
  .addDecorator(withStoreDecorator({
    props: storeObject, // this values will be merged into the current store
                        // (global store + previouse changes)
                        // this changes are just available for 'storyB' and 'storyC'
  }))
  .add('storyB', () => <storyB />)
  .add('storyC', () => <storyC />)

in an individual story:

import { useStoreWith } from 'storybook-store-decorator'
...

storysOf('myStory', module)
  .add('storyA', () => {
    useStoreWith({
      props:  storeObject, // this values will be merged into the current store
                           // this changes are just available for 'storyA'
    })
    return <storyA />
  })
  .add('storyB', () => <storyB />)

modifing the global store

As described before, scoped changes will just last the current story or storysOf() chain. Should you ever want to modify the global store set globalStore: true now you're props will be merged into the global store. Be aware, that this changes will be applyed when the decorator is actually called.

resetting a store

Setting reset: true will clear all entries from the store before merging the new props. The combination globalStore: true and reset: true which is used in the global decorator example ensures, that storybook starts with a clean new shop.

retrive a value from the store

Retrieves a prop from the storeObject

import { getProp } from 'storybook-store-decorator'
...

const prop = getProp('propName')

FAQs

Package last updated on 14 Apr 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts