import React from 'react'
import PropTypes from 'prop-types'
import Component from '../utils/Component'
import classnames from 'classnames'
/**
* tab选项卡组件<br/>
* - 通过heading设置选项卡的显示内容。
* - 可通过clickCallback设置点击选项卡的回调函数。
* - 可自定义className等常用属性以及事件。
*
* 具体属性和接口如下:
* - heading:选项卡的显示内容, 默认'tab'
* - clickCallback:点击事件的回调函数
*
* 示例:
* ```code
* <Tabset index={this.state.index} tabCallback={(index)=>{console.log(index);}>
* <Tab heading='标题1' className='tab-test'>
* 横向内容1
* </Tab>
* <Tab heading='标题2' clickCallback={(index)=>{console.log(index);}>
* 横向内容2
* </Tab>
* </Tabset>
* ```
*
* @class Tab
* @module 选项卡
* @extends Component
* @constructor
* @since 0.1.0
* @demo tab|tab.js{展示}
* @show true
* */
export default class Tab extends Component {
static ProTypes = {
/**
* 选项卡的标题文字,默认为‘tab’
* @property heading
* @type String
* @default 'tab'
* */
heading: PropTypes.string,
/**
* 点击事件的回调函数
* @method clickCallback
* @param {number} index 索引值
* @type Function
* @default null
* */
clickCallback: PropTypes.func
};
static defaultProps = {
heading: 'tab',
activeIndex:0,
vertical:false,
clickCallback: null,
classPrefix:'tab',
classMapping : {}
};
constructor(props,context){
super(props,context);
}
handleClick(){
this.props.changeActive(this.props.index);
this.props.clickCallback && this.props.clickCallback(this.props.index);
}
isActive(){
return this.props.index == this.props.activeIndex ? 'active':'';
}
isVertical(){
return !!this.props.vertical ? '': this.setPhPrefix('col',true);
}
renderTab(){
let {className} = this.props;
return(
<li {...this.otherProps} className={
classnames(
this.isVertical(),
this.setPhPrefix('tab-nav',true),
this.isActive(),
className
)
} onClick={this.handleClick.bind(this)}>
<a href='javascript:;'>{this.props.heading}</a>
</li>
)
}
render(){
return this.renderTab()
}
}