parent
							
								
									ef59a30cab
								
							
						
					
					
						commit
						7cd85be2db
					
				| @ -7,7 +7,7 @@ import { | ||||
|   SlotOutletNode, | ||||
|   createFunctionExpression | ||||
| } from '../ast' | ||||
| import { isSlotOutlet, findProp } from '../utils' | ||||
| import { isSlotOutlet, isBindKey, isStaticExp } from '../utils' | ||||
| import { buildProps, PropsExpression } from './transformElement' | ||||
| import { createCompilerError, ErrorCodes } from '../errors' | ||||
| import { RENDER_SLOT } from '../runtimeHelpers' | ||||
| @ -54,35 +54,32 @@ export function processSlotOutlet( | ||||
|   let slotName: string | ExpressionNode = `"default"` | ||||
|   let slotProps: PropsExpression | undefined = undefined | ||||
| 
 | ||||
|   // check for <slot name="xxx" OR :name="xxx" />
 | ||||
|   const name = findProp(node, 'name') | ||||
|   if (name) { | ||||
|     if (name.type === NodeTypes.ATTRIBUTE && name.value) { | ||||
|       // static name
 | ||||
|       slotName = JSON.stringify(name.value.content) | ||||
|     } else if (name.type === NodeTypes.DIRECTIVE && name.exp) { | ||||
|       // dynamic name
 | ||||
|       slotName = name.exp | ||||
|   const nonNameProps = [] | ||||
|   for (let i = 0; i < node.props.length; i++) { | ||||
|     const p = node.props[i] | ||||
|     if (p.type === NodeTypes.ATTRIBUTE) { | ||||
|       if (p.value) { | ||||
|         if (p.name === 'name') { | ||||
|           slotName = JSON.stringify(p.value.content) | ||||
|         } else { | ||||
|           p.name = camelize(p.name) | ||||
|           nonNameProps.push(p) | ||||
|         } | ||||
|       } | ||||
|     } else { | ||||
|       if (p.name === 'bind' && isBindKey(p.arg, 'name')) { | ||||
|         if (p.exp) slotName = p.exp | ||||
|       } else { | ||||
|         if (p.name === 'bind' && p.arg && isStaticExp(p.arg)) { | ||||
|           p.arg.content = camelize(p.arg.content) | ||||
|         } | ||||
|         nonNameProps.push(p) | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   const propsWithoutName = name | ||||
|     ? node.props.filter(p => p !== name) | ||||
|     : node.props | ||||
| 
 | ||||
|   if (propsWithoutName.length > 0) { | ||||
|     //#2488
 | ||||
|     propsWithoutName.forEach(prop => { | ||||
|       if ( | ||||
|         prop.type === NodeTypes.DIRECTIVE && | ||||
|         prop.arg && | ||||
|         prop.arg.type === NodeTypes.SIMPLE_EXPRESSION | ||||
|       ) { | ||||
|         prop.arg.content = camelize(prop.arg.content) | ||||
|       } | ||||
|     }) | ||||
| 
 | ||||
|     const { props, directives } = buildProps(node, context, propsWithoutName) | ||||
|   if (nonNameProps.length > 0) { | ||||
|     const { props, directives } = buildProps(node, context, nonNameProps) | ||||
|     slotProps = props | ||||
| 
 | ||||
|     if (directives.length) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user