08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiMain / components / tabpanel / drpMenus.jsx
caibinghong on 4 Jun 2021 add

const drpMenus={
    name:'PTabitem',
    props:{
        children:[Array]
    },  
    data(){
        return {
            menuStyle:{
                right:0,
                left:'auto',
                top:0,
                display:'none',
                overflow:'auto',
                maxHeight:'50%',
                // maxWidth:'150px'
            }
        }
    },
    mounted(){
        document.body.appendChild(this.$el);
        // document.addEventListener('click',this.hide)
    },
    beforeDestroy(){ 
        this.$el.remove();
        // document.removeEventListener('click',this.hide)
    },
    methods:{
       show(x,y){
            // let w=document.documentElement.offsetWidth;
            // let el_w = 150;
            // if(x+el_w>w){
            //     this.menuStyle.left=(w-el_w)+'px';
            // }else{
            //     this.menuStyle.left=(x||0)+'px';
            // }
            if(y){
                this.menuStyle.top=(y||0)+'px';
            }   
            this.menuStyle.display='block'   
       },
       hide(){
            this.menuStyle.display='none'
       },
       onClose(panel,evt){
           evt.stopPropagation();
           this.$emit('onTabClose',panel.name,evt);
        //    this.hide();
       },
       onActive(panel,evt){
            evt.stopPropagation();
            this.$emit('onTabChange',panel,evt)
       }
    },    
    render(h){
        const {onClose,onActive,children}=this;
        const Props={
            style:this.menuStyle,
            on:{
                mouseout:()=>{this.hide()},
                mouseover:()=>{this.show()}
            }
        } 
        return (
            <ul class="pl-menus pl-menus-sub pl-menus-pop" {...Props}>
                {
                    children.map((panel,index)=>{
                        return (
                            <li class="pl-menus-item"  on-click={(ev) => { onActive(panel, ev); } }>
                                <a class="title" >
                                    <span class="txt">{panel.title}</span>
                                    {panel.close&&(
                                        <i class="trigger iconfont  icon-close" on-click={(ev) => { onClose(panel, ev); }}></i>
                                    )}
                                </a>
                            </li> 
                        )
                    })
                }
            </ul>
        )
    }
}

export default drpMenus;