diff --git a/flow/component.js b/flow/component.js index fb4492af..5f676171 100644 --- a/flow/component.js +++ b/flow/component.js @@ -14,7 +14,6 @@ declare interface Component { // assets static directive: (id: string, def?: Function | Object) => Function | Object | void; static component: (id: string, def?: Class | Object) => Class; - static transition: (id: string, def?: Object) => Object | void; static filter: (id: string, def?: Function) => Function | void; // public properties diff --git a/flow/global-api.js b/flow/global-api.js index f0f2c340..c467f147 100644 --- a/flow/global-api.js +++ b/flow/global-api.js @@ -14,7 +14,6 @@ declare interface GlobalAPI { directive: (id: string, def?: Function | Object) => Function | Object | void; component: (id: string, def?: Class | Object) => Class; - transition: (id: string, def?: Object) => Object | void; filter: (id: string, def?: Function) => Function | void; // allow dynamic method registration diff --git a/flow/options.js b/flow/options.js index 913bd6b6..f9ee7117 100644 --- a/flow/options.js +++ b/flow/options.js @@ -56,7 +56,7 @@ declare type ComponentOptions = { _isComponent?: true, _propKeys?: Array, _parentVnode?: VNode, - _parentListeners?: ?{ [key: string]: Function | Array }, + _parentListeners?: ?Object, _renderChildren?: ?VNodeChildren } diff --git a/flow/vnode.js b/flow/vnode.js index 79befee9..d6b2aaba 100644 --- a/flow/vnode.js +++ b/flow/vnode.js @@ -44,7 +44,7 @@ declare interface VNodeData { staticAttrs?: { [key: string]: string }; hook?: { [key: string]: Function }; on?: { [key: string]: Function | Array }; - transition?: string | Object; + transition?: Object; inlineTemplate?: { render: Function, staticRenderFns: Array diff --git a/src/platforms/web/runtime/components/transition-group.js b/src/platforms/web/runtime/components/transition-group.js index f2a4aca8..af0f621a 100644 --- a/src/platforms/web/runtime/components/transition-group.js +++ b/src/platforms/web/runtime/components/transition-group.js @@ -1,3 +1,5 @@ +/* @flow */ + // Provides transition support for list items. // supports move transitions using the FLIP technique. @@ -29,7 +31,7 @@ delete props.mode export default { props, - render (h) { + render (h: Function) { const tag = this.tag || this.$vnode.data.tag || 'span' const map = Object.create(null) const prevChildren = this.prevChildren = this.children @@ -127,7 +129,7 @@ export default { }, methods: { - hasMove (el, moveClass) { + hasMove (el: Element, moveClass: string): boolean { /* istanbul ignore if */ if (!hasTransition) { return false diff --git a/src/platforms/web/runtime/components/transition.js b/src/platforms/web/runtime/components/transition.js index fb05b692..2bc2f1b7 100644 --- a/src/platforms/web/runtime/components/transition.js +++ b/src/platforms/web/runtime/components/transition.js @@ -1,3 +1,5 @@ +/* @flow */ + // Provides transition support for a single element/component. // supports transition mode (out-in / in-out) @@ -18,7 +20,7 @@ export const transitionProps = { appearActiveClass: String } -export function extractTransitionData (comp) { +export function extractTransitionData (comp: Component): Object { const data = {} const options = comp.$options // props @@ -38,7 +40,7 @@ export default { name: 'transition', props: transitionProps, _abstract: true, - render (h) { + render (h: Function) { let children = this.$slots.default if (!children) { return @@ -91,10 +93,11 @@ export default { // apply transition data to child // use getRealChild() to ignore abstract components e.g. keep-alive const child = getRealChild(rawChild) + if (!child) return child.key = child.key || `__v${child.tag + this._uid}__` const data = (child.data || (child.data = {})).transition = extractTransitionData(this) const oldRawChild = this._vnode - const oldChild = getRealChild(oldRawChild) + const oldChild: any = getRealChild(oldRawChild) // handle transition mode if (mode && oldChild && oldChild.data && oldChild.key !== child.key) {