diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap index 14ef4f380..2ec871e47 100644 --- a/packages/compiler-core/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap +++ b/packages/compiler-core/__tests__/transforms/__snapshots__/vSlot.spec.ts.snap @@ -26,6 +26,35 @@ return function render(_ctx, _cache) { }" `; +exports[`compiler: transform component slots > dynamically named slots 1`] = ` +"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + [_ctx.one]: _withCtx(({ foo }) => [_toDisplayString(foo), _toDisplayString(_ctx.bar)]), + [_ctx.two]: _withCtx(({ bar }) => [_toDisplayString(_ctx.foo), _toDisplayString(bar)]), + _: 2 /* DYNAMIC */ + }, 1024 /* DYNAMIC_SLOTS */)) +}" +`; + +exports[`compiler: transform component slots > implicit default slot 1`] = ` +"const { createElementVNode: _createElementVNode, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + default: _withCtx(() => [ + _createElementVNode("div") + ]), + _: 1 /* STABLE */ + })) +}" +`; + exports[`compiler: transform component slots > named slot with v-for w/ prefixIdentifiers: true 1`] = ` "const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, renderList: _renderList, createSlots: _createSlots, openBlock: _openBlock, createBlock: _createBlock } = Vue @@ -115,6 +144,27 @@ return function render(_ctx, _cache) { }" `; +exports[`compiler: transform component slots > named slots w/ implicit default slot 1`] = ` +"const _Vue = Vue + +return function render(_ctx, _cache) { + with (_ctx) { + const { createElementVNode: _createElementVNode, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = _Vue + + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + one: _withCtx(() => ["foo"]), + default: _withCtx(() => [ + "bar", + _createElementVNode("span") + ]), + _: 1 /* STABLE */ + })) + } +}" +`; + exports[`compiler: transform component slots > nested slots scoping 1`] = ` "const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, createVNode: _createVNode, openBlock: _openBlock, createBlock: _createBlock } = Vue @@ -137,3 +187,101 @@ return function render(_ctx, _cache) { })) }" `; + +exports[`compiler: transform component slots > on component dynamically named slot 1`] = ` +"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + [_ctx.named]: _withCtx(({ foo }) => [_toDisplayString(foo), _toDisplayString(_ctx.bar)]), + _: 2 /* DYNAMIC */ + }, 1024 /* DYNAMIC_SLOTS */)) +}" +`; + +exports[`compiler: transform component slots > on component named slot 1`] = ` +"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + named: _withCtx(({ foo }) => [_toDisplayString(foo), _toDisplayString(_ctx.bar)]), + _: 1 /* STABLE */ + })) +}" +`; + +exports[`compiler: transform component slots > on-component default slot 1`] = ` +"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + default: _withCtx(({ foo }) => [_toDisplayString(foo), _toDisplayString(_ctx.bar)]), + _: 1 /* STABLE */ + })) +}" +`; + +exports[`compiler: transform component slots > template named slots 1`] = ` +"const { toDisplayString: _toDisplayString, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + one: _withCtx(({ foo }) => [_toDisplayString(foo), _toDisplayString(_ctx.bar)]), + two: _withCtx(({ bar }) => [_toDisplayString(_ctx.foo), _toDisplayString(bar)]), + _: 1 /* STABLE */ + })) +}" +`; + +exports[`compiler: transform component slots > with whitespace: 'preserve' > implicit default slot 1`] = ` +"const { createElementVNode: _createElementVNode, resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + header: _withCtx(() => [" Header "]), + default: _withCtx(() => [ + " ", + _createElementVNode("p") + ]), + _: 1 /* STABLE */ + })) +}" +`; + +exports[`compiler: transform component slots > with whitespace: 'preserve' > named default slot + implicit whitespace content 1`] = ` +"const { resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + header: _withCtx(() => [" Header "]), + default: _withCtx(() => [" Default "]), + _: 1 /* STABLE */ + })) +}" +`; + +exports[`compiler: transform component slots > with whitespace: 'preserve' > should not generate whitespace only default slot 1`] = ` +"const { resolveComponent: _resolveComponent, withCtx: _withCtx, openBlock: _openBlock, createBlock: _createBlock } = Vue + +return function render(_ctx, _cache) { + const _component_Comp = _resolveComponent("Comp") + + return (_openBlock(), _createBlock(_component_Comp, null, { + header: _withCtx(() => [" Header "]), + footer: _withCtx(() => [" Footer "]), + _: 1 /* STABLE */ + })) +}" +`;