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

const TabItem={
    name:'PTabitem',
    props:{
        close:[String,Number,Boolean],
        title:{
            type:String,
            default:""
        },
        index:[String,Number],
        active:{
            type:Boolean,
            default:false
        },
        eventKey:{
            type:String
        }
    }, 
    inject:['addItem'],
    data(){
        return {
        }
    },
    mounted(){
        this.addItem(this)
    },
    beforeDestroy(){ 
        this.$el.remove();
    },
    methods:{
        handleTabClose(e){
            e.stopPropagation();
            if(this.$listeners.handleBeforeClose&&this.$listeners.handleBeforeClose()){
                return;
            }
            this.$emit('onTabClose',{
                key:this.eventKey
            },e);
        },
        handleTabChange(e){
            this.$listeners.handleSelected&&this.$listeners.handleSelected()
            this.$emit('onTabChange',{
                key:this.eventKey,
                el:this.$el
            },e)
        },
        handleContextMenu(e){
            e.preventDefault()
            e.stopPropagation();
            this.$emit('onContextMenu',{
                key:this.eventKey,
                el:this.$el
            },e)
        },
        getKey(){
            return this.eventKey;
        }
    },    
    render(h){
        const {title,close,eventKey,active} =this.$props;        
        const closeTpl = (
            <i class="pl-tabs-itemClose iconfont icon-close" onClick={this.handleTabClose}></i>
        )  
        const nodeProps = {
            class:{                
                ['pl-tabs-item']:1,
                ['pl-tabs-itemSeld']:active
            },
            on:{
                click:this.handleTabChange,
                contextmenu:this.handleContextMenu
            }
        };
        //sys-tab-item-text 
        return (
            <li>
                <div {...nodeProps}v>
                    <span class="pl-tabs-itemTxt sys-tab-item-text">{title}</span>
                    {(close===""||close===true)&&closeTpl}
                </div>
            </li>
        )
    }
}

export default TabItem;