From 039eedab0ac2568b5db05643a3e1bd7527574401 Mon Sep 17 00:00:00 2001 From: Tom Coleman Date: Thu, 22 Jul 2021 21:29:16 +1000 Subject: [PATCH] Don't set arg in validateOptions if it would be `undefined`. Fixes #15630 --- lib/client-api/src/args.test.ts | 5 +++++ lib/client-api/src/args.ts | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/client-api/src/args.test.ts b/lib/client-api/src/args.test.ts index b26d877943b2..952ab73fa29f 100644 --- a/lib/client-api/src/args.test.ts +++ b/lib/client-api/src/args.test.ts @@ -185,6 +185,11 @@ describe('combineArgs', () => { }); describe('validateOptions', () => { + // https://github.com/storybookjs/storybook/issues/15630 + it('does not set args to `undefined` if they are unset', () => { + expect(validateOptions({}, { a: {} })).toStrictEqual({}); + }); + it('omits arg and warns if value is not one of options', () => { expect(validateOptions({ a: 1 }, { a: { options: [2, 3] } })).toStrictEqual({}); expect(once.warn).toHaveBeenCalledWith( diff --git a/lib/client-api/src/args.ts b/lib/client-api/src/args.ts index f09e3bf91910..85af91b9fedd 100644 --- a/lib/client-api/src/args.ts +++ b/lib/client-api/src/args.ts @@ -72,7 +72,9 @@ export const combineArgs = (value: any, update: any): Args => { export const validateOptions = (args: Args, argTypes: ArgTypes): Args => { return Object.entries(argTypes).reduce((acc, [key, { options }]) => { if (!options) { - acc[key] = args[key]; + if (key in args) { + acc[key] = args[key]; + } return acc; }