Skip to content

Commit

Permalink
Merge pull request #17043 from storybookjs/11697-project-args-v6
Browse files Browse the repository at this point in the history
Allow setting project args/argTypes for v6 store
  • Loading branch information
shilman committed Jan 5, 2022
2 parents 4188513 + 0c63303 commit 48763ac
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 6 deletions.
3 changes: 3 additions & 0 deletions examples/official-storybook/preview.js
Expand Up @@ -243,3 +243,6 @@ export const globalTypes = {
};

export const loaders = [async () => ({ globalValue: 1 })];

export const argTypes = { color: { control: 'color' } };
export const args = { color: 'red' };
Expand Up @@ -3,19 +3,22 @@ import {
addDecorator,
addParameters,
addLoader,
addArgs,
addArgTypes,
addArgsEnhancer,
addArgTypesEnhancer,
setGlobalRender,
} from '{{clientApi}}';
import { logger } from '{{clientLogger}}';
import * as config from '{{configFilename}}';

Object.keys(config).forEach((key) => {
const value = config[key];
switch (key) {
case 'args':
case 'args': {
return addArgs(value);
}
case 'argTypes': {
return logger.warn('Invalid args/argTypes in config, ignoring.', JSON.stringify(value));
return addArgTypes(value);
}
case 'decorators': {
return value.forEach((decorator) => addDecorator(decorator, false));
Expand Down
Expand Up @@ -3,19 +3,22 @@ import {
addDecorator,
addParameters,
addLoader,
addArgs,
addArgTypes,
addArgsEnhancer,
addArgTypesEnhancer,
setGlobalRender,
} from '{{clientApi}}';
import { logger } from '{{clientLogger}}';
import * as config from '{{configFilename}}';

Object.keys(config).forEach((key) => {
const value = config[key];
switch (key) {
case 'args':
case 'args': {
return addArgs(value);
}
case 'argTypes': {
return logger.warn('Invalid args/argTypes in config, ignoring.', JSON.stringify(value));
return addArgTypes(value);
}
case 'decorators': {
return value.forEach((decorator) => addDecorator(decorator, false));
Expand Down
26 changes: 26 additions & 0 deletions lib/client-api/src/ClientApi.ts
Expand Up @@ -3,6 +3,8 @@ import dedent from 'ts-dedent';
import global from 'global';
import { logger } from '@storybook/client-logger';
import {
Args,
ArgTypes,
AnyFramework,
toId,
DecoratorFunction,
Expand Down Expand Up @@ -103,6 +105,16 @@ export const addLoader = (loader: LoaderFunction<AnyFramework>, deprecationWarni
singleton.addLoader(loader);
};

export const addArgs = (args: Args) => {
checkMethod('addArgs', false);
singleton.addArgs(args);
};

export const addArgTypes = (argTypes: ArgTypes) => {
checkMethod('addArgTypes', false);
singleton.addArgTypes(argTypes);
};

export const addArgsEnhancer = (enhancer: ArgsEnhancer<AnyFramework>) => {
checkMethod('addArgsEnhancer', false);
singleton.addArgsEnhancer(enhancer);
Expand Down Expand Up @@ -211,6 +223,20 @@ export class ClientApi<TFramework extends AnyFramework> {
this.facade.projectAnnotations.loaders.push(loader);
};

addArgs = (args: Args) => {
this.facade.projectAnnotations.args = {
...this.facade.projectAnnotations.args,
...args,
};
};

addArgTypes = (argTypes: ArgTypes) => {
this.facade.projectAnnotations.argTypes = {
...this.facade.projectAnnotations.argTypes,
...normalizeInputTypes(argTypes),
};
};

addArgsEnhancer = (enhancer: ArgsEnhancer<TFramework>) => {
this.facade.projectAnnotations.argsEnhancers.push(enhancer);
};
Expand Down
2 changes: 2 additions & 0 deletions lib/client-api/src/StoryStoreFacade.ts
Expand Up @@ -49,6 +49,8 @@ export class StoryStoreFacade<TFramework extends AnyFramework> {
parameters: {},
argsEnhancers: [],
argTypesEnhancers: [],
args: {},
argTypes: {},
};

this.stories = {};
Expand Down
4 changes: 4 additions & 0 deletions lib/client-api/src/index.ts
Expand Up @@ -3,6 +3,8 @@ import {
addDecorator,
addParameters,
addLoader,
addArgs,
addArgTypes,
addArgsEnhancer,
addArgTypesEnhancer,
setGlobalRender,
Expand All @@ -19,6 +21,8 @@ export {
addArgTypesEnhancer,
addDecorator,
addLoader,
addArgs,
addArgTypes,
addParameters,
setGlobalRender,
ClientApi,
Expand Down

0 comments on commit 48763ac

Please sign in to comment.