2017-01-12 08:53:51 +08:00
'use strict' ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = require ( 'react' ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2017-06-03 20:34:07 +08:00
var _propTypes = require ( 'prop-types' ) ;
var _propTypes2 = _interopRequireDefault ( _propTypes ) ;
2017-01-12 08:53:51 +08:00
var _TableCell = require ( './TableCell' ) ;
var _TableCell2 = _interopRequireDefault ( _TableCell ) ;
var _ExpandIcon = require ( './ExpandIcon' ) ;
var _ExpandIcon2 = _interopRequireDefault ( _ExpandIcon ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { "default" : obj } ; }
function _defaults ( obj , defaults ) { var keys = Object . getOwnPropertyNames ( defaults ) ; for ( var i = 0 ; i < keys . length ; i ++ ) { var key = keys [ i ] ; var value = Object . getOwnPropertyDescriptor ( defaults , key ) ; if ( value && value . configurable && obj [ key ] === undefined ) { Object . defineProperty ( obj , key , value ) ; } } return obj ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : _defaults ( subClass , superClass ) ; }
var propTypes = {
2017-06-03 20:34:07 +08:00
onDestroy : _propTypes2 [ "default" ] . func ,
onRowClick : _propTypes2 [ "default" ] . func ,
onRowDoubleClick : _propTypes2 [ "default" ] . func ,
record : _propTypes2 [ "default" ] . object ,
clsPrefix : _propTypes2 [ "default" ] . string ,
expandIconColumnIndex : _propTypes2 [ "default" ] . number ,
onHover : _propTypes2 [ "default" ] . func ,
columns : _propTypes2 [ "default" ] . array ,
height : _propTypes2 [ "default" ] . oneOfType ( [ _propTypes2 [ "default" ] . string , _propTypes2 [ "default" ] . number ] ) ,
visible : _propTypes2 [ "default" ] . bool ,
index : _propTypes2 [ "default" ] . number ,
hoverKey : _propTypes2 [ "default" ] . any ,
expanded : _propTypes2 [ "default" ] . bool ,
expandable : _propTypes2 [ "default" ] . any ,
onExpand : _propTypes2 [ "default" ] . func ,
needIndentSpaced : _propTypes2 [ "default" ] . bool ,
className : _propTypes2 [ "default" ] . string ,
indent : _propTypes2 [ "default" ] . number ,
indentSize : _propTypes2 [ "default" ] . number ,
expandIconAsCell : _propTypes2 [ "default" ] . bool ,
expandRowByClick : _propTypes2 [ "default" ] . bool ,
store : _propTypes2 [ "default" ] . object . isRequired
2017-01-12 08:53:51 +08:00
} ;
var defaultProps = {
onRowClick : function onRowClick ( ) { } ,
onRowDoubleClick : function onRowDoubleClick ( ) { } ,
onDestroy : function onDestroy ( ) { } ,
expandIconColumnIndex : 0 ,
expandRowByClick : false ,
onHover : function onHover ( ) { }
} ;
var TableRow = function ( _Component ) {
_inherits ( TableRow , _Component ) ;
function TableRow ( props ) {
_classCallCheck ( this , TableRow ) ;
var _this = _possibleConstructorReturn ( this , _Component . call ( this , props ) ) ;
2018-05-02 15:37:38 +08:00
_this . set = function ( fn ) {
_this . clear ( ) ;
_this . _timeout = window . setTimeout ( fn , 300 ) ;
} ;
_this . clear = function ( event ) {
if ( _this . _timeout ) {
window . clearTimeout ( _this . _timeout ) ;
}
} ;
2018-12-20 09:41:51 +08:00
_this . bindElement = function ( el ) {
_this . element = el ;
} ;
2018-05-02 15:37:38 +08:00
_this . _timeout = null ;
2017-01-12 08:53:51 +08:00
_this . state = {
hovered : false
} ;
_this . onRowClick = _this . onRowClick . bind ( _this ) ;
_this . onRowDoubleClick = _this . onRowDoubleClick . bind ( _this ) ;
_this . onMouseEnter = _this . onMouseEnter . bind ( _this ) ;
_this . onMouseLeave = _this . onMouseLeave . bind ( _this ) ;
2018-12-20 09:41:51 +08:00
_this . expandHeight = 0 ;
2017-01-12 08:53:51 +08:00
return _this ;
}
TableRow . prototype . componentDidMount = function componentDidMount ( ) {
var _this2 = this ;
var _props = this . props ,
store = _props . store ,
hoverKey = _props . hoverKey ;
this . unsubscribe = store . subscribe ( function ( ) {
if ( store . getState ( ) . currentHoverKey === hoverKey ) {
_this2 . setState ( { hovered : true } ) ;
} else if ( _this2 . state . hovered === true ) {
_this2 . setState ( { hovered : false } ) ;
}
} ) ;
2018-12-20 09:41:51 +08:00
this . setRowHeight ( ) ;
} ;
TableRow . prototype . componentDidUpdate = function componentDidUpdate ( prevProps ) {
if ( this . props . index !== prevProps . index ) {
this . setRowHeight ( ) ;
}
2017-01-12 08:53:51 +08:00
} ;
TableRow . prototype . componentWillUnmount = function componentWillUnmount ( ) {
var _props2 = this . props ,
record = _props2 . record ,
onDestroy = _props2 . onDestroy ,
index = _props2 . index ;
onDestroy ( record , index ) ;
if ( this . unsubscribe ) {
this . unsubscribe ( ) ;
}
} ;
2018-12-20 09:41:51 +08:00
TableRow . prototype . setRowHeight = function setRowHeight ( ) {
2017-01-12 08:53:51 +08:00
var _props3 = this . props ,
2018-12-20 09:41:51 +08:00
setRowHeight = _props3 . setRowHeight ,
expandedContentHeight = _props3 . expandedContentHeight ,
_props3$lazyCurrentIn = _props3 . lazyCurrentIndex ,
lazyCurrentIndex = _props3$lazyCurrentIn === undefined ? 0 : _props3$lazyCurrentIn ,
fixed = _props3 . fixed ;
if ( ! setRowHeight || ! this . element || fixed ) return ;
setRowHeight ( this . element . clientHeight + expandedContentHeight , this . props . index + lazyCurrentIndex ) ;
} ;
TableRow . prototype . onRowClick = function onRowClick ( event ) {
var _props4 = this . props ,
record = _props4 . record ,
index = _props4 . index ,
onRowClick = _props4 . onRowClick ,
expandable = _props4 . expandable ,
expandRowByClick = _props4 . expandRowByClick ,
expanded = _props4 . expanded ,
onExpand = _props4 . onExpand ;
2017-01-12 08:53:51 +08:00
if ( expandable && expandRowByClick ) {
2017-06-03 20:34:07 +08:00
onExpand ( ! expanded , record , index , event ) ;
2017-01-12 08:53:51 +08:00
}
2018-05-02 15:37:38 +08:00
this . set ( function ( e ) {
onRowClick ( record , index , event ) ;
} ) ;
2017-01-12 08:53:51 +08:00
} ;
TableRow . prototype . onRowDoubleClick = function onRowDoubleClick ( event ) {
2018-12-20 09:41:51 +08:00
var _props5 = this . props ,
record = _props5 . record ,
index = _props5 . index ,
onRowDoubleClick = _props5 . onRowDoubleClick ;
2017-01-12 08:53:51 +08:00
2018-05-02 15:37:38 +08:00
this . clear ( ) ;
2017-01-12 08:53:51 +08:00
onRowDoubleClick ( record , index , event ) ;
} ;
TableRow . prototype . onMouseEnter = function onMouseEnter ( ) {
2018-12-20 09:41:51 +08:00
var _props6 = this . props ,
onHover = _props6 . onHover ,
hoverKey = _props6 . hoverKey ;
2017-01-12 08:53:51 +08:00
onHover ( true , hoverKey ) ;
} ;
TableRow . prototype . onMouseLeave = function onMouseLeave ( ) {
2018-12-20 09:41:51 +08:00
var _props7 = this . props ,
onHover = _props7 . onHover ,
hoverKey = _props7 . hoverKey ;
2017-01-12 08:53:51 +08:00
onHover ( false , hoverKey ) ;
} ;
TableRow . prototype . render = function render ( ) {
2018-12-20 09:41:51 +08:00
var _props8 = this . props ,
clsPrefix = _props8 . clsPrefix ,
columns = _props8 . columns ,
record = _props8 . record ,
height = _props8 . height ,
visible = _props8 . visible ,
index = _props8 . index ,
expandIconColumnIndex = _props8 . expandIconColumnIndex ,
expandIconAsCell = _props8 . expandIconAsCell ,
expanded = _props8 . expanded ,
expandRowByClick = _props8 . expandRowByClick ,
expandable = _props8 . expandable ,
onExpand = _props8 . onExpand ,
needIndentSpaced = _props8 . needIndentSpaced ,
indent = _props8 . indent ,
indentSize = _props8 . indentSize ,
isHiddenExpandIcon = _props8 . isHiddenExpandIcon ,
fixed = _props8 . fixed ,
_props8$lazyCurrentIn = _props8 . lazyCurrentIndex ,
lazyCurrentIndex = _props8$lazyCurrentIn === undefined ? 0 : _props8$lazyCurrentIn ;
2018-12-16 22:22:45 +08:00
var showSum = false ;
2017-01-12 08:53:51 +08:00
var className = this . props . className ;
if ( this . state . hovered ) {
className += ' ' + clsPrefix + '-hover' ;
}
2018-12-16 22:22:45 +08:00
//判断是否为合计行
if ( className . indexOf ( 'sumrow' ) > - 1 ) {
showSum = true ;
}
2017-01-12 08:53:51 +08:00
var cells = [ ] ;
var expandIcon = _react2 [ "default" ] . createElement ( _ExpandIcon2 [ "default" ] , {
expandable : expandable ,
clsPrefix : clsPrefix ,
onExpand : onExpand ,
needIndentSpaced : needIndentSpaced ,
expanded : expanded ,
2018-01-31 19:46:40 +08:00
record : record ,
isHiddenExpandIcon : isHiddenExpandIcon
2017-01-12 08:53:51 +08:00
} ) ;
for ( var i = 0 ; i < columns . length ; i ++ ) {
2018-12-16 22:22:45 +08:00
if ( expandIconAsCell && i === 0 && ! showSum ) {
2017-01-12 08:53:51 +08:00
cells . push ( _react2 [ "default" ] . createElement (
'td' ,
{
className : clsPrefix + '-expand-icon-cell' ,
key : 'rc-table-expand-icon-cell'
} ,
expandIcon
) ) ;
}
2018-12-16 22:22:45 +08:00
var isColumnHaveExpandIcon = expandIconAsCell || expandRowByClick || showSum ? false : i === expandIconColumnIndex ;
2017-01-12 08:53:51 +08:00
cells . push ( _react2 [ "default" ] . createElement ( _TableCell2 [ "default" ] , {
clsPrefix : clsPrefix ,
record : record ,
indentSize : indentSize ,
indent : indent ,
2018-12-20 09:41:51 +08:00
index : index + lazyCurrentIndex ,
2017-01-12 08:53:51 +08:00
column : columns [ i ] ,
key : columns [ i ] . key ,
2018-09-12 14:14:05 +08:00
fixed : fixed ,
2018-12-16 22:22:45 +08:00
showSum : showSum ,
2017-01-12 08:53:51 +08:00
expandIcon : isColumnHaveExpandIcon ? expandIcon : null
} ) ) ;
}
var style = { height : height } ;
if ( ! visible ) {
style . display = 'none' ;
}
return _react2 [ "default" ] . createElement (
'tr' ,
{
onClick : this . onRowClick ,
onDoubleClick : this . onRowDoubleClick ,
onMouseEnter : this . onMouseEnter ,
onMouseLeave : this . onMouseLeave ,
className : clsPrefix + ' ' + className + ' ' + clsPrefix + '-level-' + indent ,
2018-12-20 09:41:51 +08:00
style : style ,
ref : this . bindElement
2017-01-12 08:53:51 +08:00
} ,
cells
) ;
} ;
return TableRow ;
} ( _react . Component ) ;
;
TableRow . propTypes = propTypes ;
TableRow . defaultProps = defaultProps ;
exports [ "default" ] = TableRow ;
module . exports = exports [ 'default' ] ;