From 9475c1e25be5c063a3f6e168a46d459e28e8764b Mon Sep 17 00:00:00 2001 From: Claudio Catterina Date: Thu, 24 Nov 2022 13:02:41 +0100 Subject: [PATCH 1/2] vue: fix type.name check in extractArgTypes --- code/renderers/vue/src/docs/extractArgTypes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/renderers/vue/src/docs/extractArgTypes.ts b/code/renderers/vue/src/docs/extractArgTypes.ts index f214d9f7c7b0..6af85399c6b0 100644 --- a/code/renderers/vue/src/docs/extractArgTypes.ts +++ b/code/renderers/vue/src/docs/extractArgTypes.ts @@ -11,7 +11,7 @@ const SECTIONS = ['props', 'events', 'slots', 'methods']; function isEnum(propDef: PropDef, docgenInfo: DocgenInfo): false | PropDef { // cast as any, since "values" doesn't exist in DocgenInfo type const { type, values } = docgenInfo as any; - const matched = Array.isArray(values) && values.length && type?.name === 'enum'; + const matched = Array.isArray(values) && values.length && type && type.name !== 'enum'; if (!matched) { return false; From 5fbdb506dc836218df3427cdbd911a127da3abcf Mon Sep 17 00:00:00 2001 From: Claudio Catterina Date: Sat, 10 Dec 2022 12:41:14 +0100 Subject: [PATCH 2/2] vue: rename `isEnum` and describe its purpose --- code/renderers/vue/src/docs/extractArgTypes.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/renderers/vue/src/docs/extractArgTypes.ts b/code/renderers/vue/src/docs/extractArgTypes.ts index 6af85399c6b0..654f68927feb 100644 --- a/code/renderers/vue/src/docs/extractArgTypes.ts +++ b/code/renderers/vue/src/docs/extractArgTypes.ts @@ -5,10 +5,10 @@ import { hasDocgen, extractComponentProps, convert } from '@storybook/docs-tools const SECTIONS = ['props', 'events', 'slots', 'methods']; /** - * Check if "@values" tag is defined within docgenInfo. - * If true, then propDef is mutated. + * As @enum tag is not implemented in vuedocgen, infers propdef enum type + * from the presence of @values tag. */ -function isEnum(propDef: PropDef, docgenInfo: DocgenInfo): false | PropDef { +function inferEnum(propDef: PropDef, docgenInfo: DocgenInfo): false | PropDef { // cast as any, since "values" doesn't exist in DocgenInfo type const { type, values } = docgenInfo as any; const matched = Array.isArray(values) && values.length && type && type.name !== 'enum'; @@ -42,7 +42,7 @@ function verifyPropDef(propDef: PropDef, docgenInfo: DocgenInfo): [PropDef, bool // another callback can be added here. // callback is mutually exclusive from each other. - const callbacks = [isEnum]; + const callbacks = [inferEnum]; for (let i = 0, len = callbacks.length; i < len; i += 1) { const matched = callbacks[i](propDef, docgenInfo); if (matched) {