import {cloneElement} from '@main/utils/vnode';
const PopMenu = {
props: {
mode: {
type: String,
default: 'inline'
},
eventKey: {
type: String
},
level:{
type:Number
},
children: {
type: Array,
default: () => {
return [];
}
},
parent:{
type:Object,
default:null
}
},
methods: {
renderMenuItem(c, i) {
if (!c) {
return null;
}
let {...props} =this.$props;
let newProps={
props:{
...props,
level:props.level,
parent:props.parent
}
}
let vnd = cloneElement(c,newProps)
return vnd;
},
handleMouseEnter(evt){
this.$emit('mouseenter')
},
handleMouseLeave(evt){
this.$emit('mouseleave')
}
},
render(h) {
const { ...props } = this.$props;
const { eventKey, children, mode } = props;
const nodeProp = {
class: {
['pl-Smenus']: 1,
[`pl-Smenus-${mode}`]: 1
},
on:{
mouseenter:this.handleMouseEnter,
mouseleave:this.handleMouseLeave
},
attrs:{
level:props.level
}
}
return (
<ul {...nodeProp}>
{children.map((c, i) => this.renderMenuItem(c, i, eventKey || '0-menu-'))}
</ul>
)
}
}
export default PopMenu;