diff --git a/examples/vue2/src/SharedControls.story.vue b/examples/vue2/src/SharedControls.story.vue new file mode 100644 index 00000000..1e6736ba --- /dev/null +++ b/examples/vue2/src/SharedControls.story.vue @@ -0,0 +1,64 @@ + + + diff --git a/packages/histoire-plugin-vue2/src/client/app/RenderStory.ts b/packages/histoire-plugin-vue2/src/client/app/RenderStory.ts index 93da3cdc..5c3d73e7 100644 --- a/packages/histoire-plugin-vue2/src/client/app/RenderStory.ts +++ b/packages/histoire-plugin-vue2/src/client/app/RenderStory.ts @@ -111,9 +111,19 @@ export default _defineComponent({ }, render: () => { - const vnodes = props.variant.slots()?.[props.slotName]?.({ + const ensureFn = (fn: any) => { + if (typeof fn === 'function') { + return fn + } else if (fn != null) { + return () => fn + } else { + return null + } + } + + const vnodes = ensureFn(props.variant.slots()?.[props.slotName])?.({ state: externalState, - }) ?? props.story.slots()?.[props.slotName]?.({ + }) ?? ensureFn(props.story.slots()?.[props.slotName])?.({ state: externalState, })