From 52134a88d0e374f7471fe43a8a77fa5aa261f381 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 29 Nov 2019 12:02:31 -0500 Subject: [PATCH] fix(compiler-core): handle base-transition --- .../transforms/transformElement.spec.ts | 27 ++++++++++++++++++- packages/compiler-core/src/parse.ts | 2 +- packages/compiler-core/src/runtimeHelpers.ts | 2 -- .../src/transforms/transformElement.ts | 8 +++--- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts index 69cbce00..17ee4724 100644 --- a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts +++ b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts @@ -10,7 +10,8 @@ import { PORTAL, RESOLVE_DYNAMIC_COMPONENT, SUSPENSE, - KEEP_ALIVE + KEEP_ALIVE, + BASE_TRANSITION } from '../../src/runtimeHelpers' import { CallExpression, @@ -356,6 +357,30 @@ describe('compiler: element transform', () => { assert(`KeepAlive`) }) + test('should handle ', () => { + function assert(tag: string) { + const { root, node } = parseWithElementTransform( + `<${tag}>` + ) + expect(root.components.length).toBe(0) + expect(root.helpers).toContain(BASE_TRANSITION) + expect(node.callee).toBe(CREATE_VNODE) + expect(node.arguments).toMatchObject([ + BASE_TRANSITION, + `null`, + createObjectMatcher({ + default: { + type: NodeTypes.JS_FUNCTION_EXPRESSION + }, + _compiled: `[true]` + }) + ]) + } + + assert(`base-transition`) + assert(`BaseTransition`) + }) + test('error on v-bind with no argument', () => { const onError = jest.fn() parseWithElementTransform(`
`, { onError }) diff --git a/packages/compiler-core/src/parse.ts b/packages/compiler-core/src/parse.ts index a794b3cf..e2ca0638 100644 --- a/packages/compiler-core/src/parse.ts +++ b/packages/compiler-core/src/parse.ts @@ -31,7 +31,7 @@ import { extend } from '@vue/shared' // Portal and Fragment are native types, not components const isBuiltInComponent = /*#__PURE__*/ makeMap( - `suspense,keep-alive,keepalive,transition`, + `suspense,keep-alive,keepalive,base-transition`, true ) diff --git a/packages/compiler-core/src/runtimeHelpers.ts b/packages/compiler-core/src/runtimeHelpers.ts index 9ee8a452..59e9e25c 100644 --- a/packages/compiler-core/src/runtimeHelpers.ts +++ b/packages/compiler-core/src/runtimeHelpers.ts @@ -2,7 +2,6 @@ export const FRAGMENT = Symbol(__DEV__ ? `Fragment` : ``) export const PORTAL = Symbol(__DEV__ ? `Portal` : ``) export const SUSPENSE = Symbol(__DEV__ ? `Suspense` : ``) export const KEEP_ALIVE = Symbol(__DEV__ ? `KeepAlive` : ``) -export const TRANSITION = Symbol(__DEV__ ? `Transition` : ``) export const BASE_TRANSITION = Symbol(__DEV__ ? `BaseTransition` : ``) export const OPEN_BLOCK = Symbol(__DEV__ ? `openBlock` : ``) export const CREATE_BLOCK = Symbol(__DEV__ ? `createBlock` : ``) @@ -32,7 +31,6 @@ export const helperNameMap: any = { [PORTAL]: `Portal`, [SUSPENSE]: `Suspense`, [KEEP_ALIVE]: `KeepAlive`, - [TRANSITION]: `Transition`, [BASE_TRANSITION]: `BaseTransition`, [OPEN_BLOCK]: `openBlock`, [CREATE_BLOCK]: `createBlock`, diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 14335ce3..f1b7f6d5 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -28,7 +28,7 @@ import { PORTAL, SUSPENSE, KEEP_ALIVE, - TRANSITION + BASE_TRANSITION } from '../runtimeHelpers' import { getInnerRange, isVSlot, toValidAssetId, findProp } from '../utils' import { buildSlots } from './vSlot' @@ -60,7 +60,7 @@ export const transformElement: NodeTransform = (node, context) => { const isPortal = isBuiltInType(tag, 'Portal') const isSuspense = isBuiltInType(tag, 'Suspense') const isKeepAlive = isBuiltInType(tag, 'KeepAlive') - const isTransition = isBuiltInType(tag, 'Transition') + const isBaseTransition = isBuiltInType(tag, 'BaseTransition') const isComponent = tagType === ElementTypes.COMPONENT let hasProps = props.length > 0 @@ -102,8 +102,8 @@ export const transformElement: NodeTransform = (node, context) => { nodeType = context.helper(SUSPENSE) } else if (isKeepAlive) { nodeType = context.helper(KEEP_ALIVE) - } else if (isTransition) { - nodeType = context.helper(TRANSITION) + } else if (isBaseTransition) { + nodeType = context.helper(BASE_TRANSITION) } else if (isComponent) { // user component w/ resolve context.helper(RESOLVE_COMPONENT)