1 |
|
2 |
|
3 |
|
4 |
|
5 | import React,{Component} from "react";
|
6 | import PropTypes from "prop-types";
|
7 | import classnames from "classnames";
|
8 | import createClass from 'create-react-class';
|
9 |
|
10 | const propTypes = {
|
11 | className: PropTypes.string,
|
12 | active: PropTypes.bool,
|
13 | style: PropTypes.any,
|
14 | destroyInactiveTabPane: PropTypes.bool,
|
15 | forceRender: PropTypes.bool,
|
16 | placeholder: PropTypes.node
|
17 | };
|
18 | const defaultProps = {
|
19 | placeholder: null
|
20 | };
|
21 | class TabPane extends Component {
|
22 | render() {
|
23 | const props = this.props;
|
24 | const { className, destroyInactiveTabPane, active, forceRender } = props;
|
25 | this._isActived = this._isActived || active;
|
26 | const clsPrefix = `${props.rootclsPrefix}-tabpane`;
|
27 | const cls = classnames({
|
28 | [clsPrefix]: 1,
|
29 | [`${clsPrefix}-inactive`]: !active,
|
30 | [`${clsPrefix}-active`]: active,
|
31 | [className]: className
|
32 | });
|
33 | const isRender = destroyInactiveTabPane ? active : this._isActived;
|
34 | return (
|
35 | <div
|
36 | style={props.style}
|
37 | role="tabpanel"
|
38 | aria-hidden={props.active ? "false" : "true"}
|
39 | className={cls}
|
40 | >
|
41 | {isRender || forceRender ? props.children : props.placeholder}
|
42 | </div>
|
43 | );
|
44 | }
|
45 | }
|
46 | TabPane.propTypes = propTypes;
|
47 | TabPane.defaultProps = defaultProps;
|
48 |
|
49 | export default TabPane;
|