UNPKG

vue

Version:

Reactive, component-oriented view layer for modern web interfaces.

41 lines (37 loc) 1.05 kB
/* @flow */ import { extend, warn, isObject } from 'core/util/index' /** * Runtime helper for rendering <slot> */ export function renderSlot ( name: string, fallbackRender: ?((() => Array<VNode>) | Array<VNode>), props: ?Object, bindObject: ?Object ): ?Array<VNode> { const scopedSlotFn = this.$scopedSlots[name] let nodes if (scopedSlotFn) { // scoped slot props = props || {} if (bindObject) { if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) { warn('slot v-bind without argument expects an Object', this) } props = extend(extend({}, bindObject), props) } nodes = scopedSlotFn(props) || (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender) } else { nodes = this.$slots[name] || (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender) } const target = props && props.slot if (target) { return this.$createElement('template', { slot: target }, nodes) } else { return nodes } }