| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- import { compile } from '../src'
- // transition-group should flatten and concat its children fragments into
- // a single one
- describe('transition-group', () => {
- test('basic', () => {
- expect(
- compile(`<transition-group><div v-for="i in list"/></transition-group>`)
- .code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<!--[-->\`)
- _ssrRenderList(_ctx.list, (i) => {
- _push(\`<div></div>\`)
- })
- _push(\`<!--]-->\`)
- }"
- `)
- })
- test('with static tag', () => {
- expect(
- compile(
- `<transition-group tag="ul"><div v-for="i in list"/></transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<ul\${_ssrRenderAttrs(_attrs)}>\`)
- _ssrRenderList(_ctx.list, (i) => {
- _push(\`<div></div>\`)
- })
- _push(\`</ul>\`)
- }"
- `)
- })
- // #11514
- test('with static tag + v-if comment', () => {
- expect(
- compile(
- `<transition-group tag="ul"><div v-for="i in list"/><div v-if="false"></div></transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<ul\${_ssrRenderAttrs(_attrs)}>\`)
- _ssrRenderList(_ctx.list, (i) => {
- _push(\`<div></div>\`)
- })
- if (false) {
- _push(\`<div></div>\`)
- }
- _push(\`</ul>\`)
- }"
- `)
- })
- // #11958
- test('with static tag + comment', () => {
- expect(
- compile(
- `<transition-group tag="ul"><div v-for="i in list"/><!--test--></transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<ul\${_ssrRenderAttrs(_attrs)}>\`)
- _ssrRenderList(_ctx.list, (i) => {
- _push(\`<div></div>\`)
- })
- _push(\`</ul>\`)
- }"
- `)
- })
- test('with dynamic tag', () => {
- expect(
- compile(
- `<transition-group :tag="someTag"><div v-for="i in list"/></transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<\${
- _ctx.someTag
- }\${
- _ssrRenderAttrs(_attrs)
- }>\`)
- _ssrRenderList(_ctx.list, (i) => {
- _push(\`<div></div>\`)
- })
- _push(\`</\${_ctx.someTag}>\`)
- }"
- `)
- })
- test('with dynamic tag shorthand', () => {
- expect(
- compile(
- `<transition-group :tag><div v-for="i in list"/></transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderAttrs: _ssrRenderAttrs, ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<\${
- _ctx.tag
- }\${
- _ssrRenderAttrs(_attrs)
- }>\`)
- _ssrRenderList(_ctx.list, (i) => {
- _push(\`<div></div>\`)
- })
- _push(\`</\${_ctx.tag}>\`)
- }"
- `)
- })
- test('with multi fragments children', () => {
- expect(
- compile(
- `<transition-group>
- <div v-for="i in 10"/>
- <div v-for="i in 10"/>
- <template v-if="ok"><div>ok</div></template>
- </transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { ssrRenderList: _ssrRenderList } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<!--[-->\`)
- _ssrRenderList(10, (i) => {
- _push(\`<div></div>\`)
- })
- _ssrRenderList(10, (i) => {
- _push(\`<div></div>\`)
- })
- if (_ctx.ok) {
- _push(\`<div>ok</div>\`)
- }
- _push(\`<!--]-->\`)
- }"
- `)
- })
- test('attribute fallthrough', () => {
- expect(
- compile(
- `<transition-group tag="ul" class="red" id="ok">
- </transition-group>`,
- ).code,
- ).toMatchInlineSnapshot(`
- "const { mergeProps: _mergeProps } = require("vue")
- const { ssrRenderAttrs: _ssrRenderAttrs } = require("vue/server-renderer")
- return function ssrRender(_ctx, _push, _parent, _attrs) {
- _push(\`<ul\${_ssrRenderAttrs(_mergeProps({
- class: "red",
- id: "ok"
- }, _attrs))}></ul>\`)
- }"
- `)
- })
- })
|