Skip to content

Commit 68fe682

Browse files
kasperpeulenstorybook-bot
authored andcommitted
Merge pull request #26639 from storybookjs/kasper/empty-union
React-Docgen: Make sure to be able to handle empty unions (cherry picked from commit 889cfdf)
1 parent 8ceebed commit 68fe682

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

code/lib/docs-tools/src/argTypes/convert/flow/convert.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ export const convert = (type: FlowType): SBType | void => {
4141
case 'signature':
4242
return { ...base, ...convertSig(type) };
4343
case 'union':
44-
if (type.elements.every(isLiteral)) {
45-
return { ...base, name: 'enum', value: type.elements.map(toEnumOption) };
44+
if (type.elements?.every(isLiteral)) {
45+
return { ...base, name: 'enum', value: type.elements?.map(toEnumOption) };
4646
}
47-
return { ...base, name, value: type.elements.map(convert) };
47+
return { ...base, name, value: type.elements?.map(convert) };
4848

4949
case 'intersection':
50-
return { ...base, name, value: type.elements.map(convert) };
50+
return { ...base, name, value: type.elements?.map(convert) };
5151
default:
5252
return { ...base, name: 'other', value: name };
5353
}

code/lib/docs-tools/src/argTypes/convert/typescript/convert.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,19 @@ export const convert = (type: TSType): SBType | void => {
3838
return { ...base, ...convertSig(type) };
3939
case 'union':
4040
let result;
41-
if (type.elements.every((element) => element.name === 'literal')) {
41+
if (type.elements?.every((element) => element.name === 'literal')) {
4242
result = {
4343
...base,
4444
name: 'enum',
4545
// @ts-expect-error fix types
46-
value: type.elements.map((v) => parseLiteral(v.value)),
46+
value: type.elements?.map((v) => parseLiteral(v.value)),
4747
};
4848
} else {
49-
result = { ...base, name, value: type.elements.map(convert) };
49+
result = { ...base, name, value: type.elements?.map(convert) };
5050
}
5151
return result;
5252
case 'intersection':
53-
return { ...base, name, value: type.elements.map(convert) };
53+
return { ...base, name, value: type.elements?.map(convert) };
5454
default:
5555
return { ...base, name: 'other', value: name };
5656
}

code/lib/docs-tools/src/argTypes/convert/typescript/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ type TSArgType = TSType;
99

1010
type TSCombinationType = TSBaseType & {
1111
name: 'union' | 'intersection';
12-
elements: TSType[];
12+
elements?: TSType[];
1313
};
1414

1515
type TSFuncSigType = TSBaseType & {

0 commit comments

Comments
 (0)