UNPKG

@beisen/ethos

Version:

beisencloud pc react components

207 lines (165 loc) 6.55 kB
'use strict'; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _reactDom = require('react-dom'); var _commonFunc = require('../../common-func'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var React = require('react'); var assign = require('object-assign'); var Scroller = require('../react-virtual-scroller'); function emptyFn() {} module.exports = React.createClass({ displayName: 'ReactDataGrid.Wrapper', propTypes: { scrollLeft: React.PropTypes.number, scrollTop: React.PropTypes.number, scrollbarSize: React.PropTypes.number, rowHeight: React.PropTypes.any }, getDefaultProps: function getDefaultProps() { return { scrollLeft: 0, scrollTop: 0 }; }, onMount: function onMount(scroller) { (this.props.onMount || emptyFn)(this, scroller); }, handleWheelLeft: function handleWheelLeft(e) { this.handleWheel(e, "left"); }, handleWheelRight: function handleWheelRight(e) { this.handleWheel(e, "left"); }, componentDidMount: function componentDidMount() { this.props.addRightWrapperShadow && this.props.addRightWrapperShadow(); }, handleWheel: function handleWheel(e, from) { var props = this.props; var thisDom = (0, _reactDom.findDOMNode)(this); var topP = thisDom.scrollTop; var leftP = thisDom.scrollLeft; this.oldScroll = topP; this.props.onScrollTop && this.props.onScrollTop(e, topP, leftP, from); }, render: function render() { var props = this.prepareProps(this.props); var groupsCount = 0; if (props.groupData) { groupsCount = props.groupData.groupsCount; } var verticalScrollerSize = (props.totalLength + groupsCount) * props.rowHeight; // + loadersSize var screenWidth = window.screen.width; var emptyTextStyle = (0, _extends3.default)({ marginLeft: 0 - screenWidth / 2, 'display': 'none' }, props.emptyTextStyle); var content = props.fixStatus == 'no' && props.empty ? React.createElement( 'div', { className: 'z-empty-text', style: emptyTextStyle }, props.emptyText ) : React.createElement('div', (0, _extends3.default)({}, props.tableProps, { ref: 'table' })); //wuzhe----固定列不需要渲染滚动条 if (this.props.fixStatus == "left") { var events = { onScroll: this.handleWheelLeft }; return React.createElement( 'div', (0, _extends3.default)({ className: 'fixWrapperLeft', style: { width: props.width + "px", "overflow": "auto" } }, events), content ); } if (this.props.fixStatus == "right") { var width = props.width; //修复firefox下有空白bug if (!(navigator.userAgent.indexOf("Firefox") > -1) && props.haspadding) { width = width - props.haspadding; } var events = { onScroll: this.handleWheelRight //left:(props.left)+"px" //wangyongning add; };var isIE = !!window.ActiveXObject || "ActiveXObject" in window; var isEdge = navigator.userAgent.indexOf('Edge') > 0 ? true : false; var right = 0; var operator = props.allColumns && props.allColumns.filter(function (item) { return item.title == '操作'; })[0]; var pop = document.getElementsByClassName("modal-pop"); if (props.allColumns && props.allColumns.length >= 2) { if (this.props.hasScroll) { if (isEdge) { right = props.allColumns.length >= 2 ? -3 : -this.props.scrollWidth - 1; } else if (!isIE) { right = -this.props.scrollWidth - 1; } else { width += operator && operator.width == 50 ? 0 : -3; } } else { if (isIE) { width += operator && operator.width == 50 ? 11 : 10; } if (isEdge) { width += operator && operator.width == 50 ? 6 : 5; } } //如果有滚动条就给它往右平移个滚动条宽度 } else { var scrollWidth = -this.props.scrollWidth - 1; var right = !isIE && this.props.hasScroll ? scrollWidth : 0; //如果有滚动条就给它往右平移个滚动条宽度 var pop = document.getElementsByClassName("modal-pop"); width = isIE && pop.length == 0 ? 36 : this.props.isLookUpv1 ? 36 : isEdge ? 36 : width; } var maxWidth = 'none'; if (isIE && props.allColumns && props.allColumns.length < 2 && operator && operator.width != 50) { if ((0, _commonFunc.judgeBrowser)().isIe10) { maxWidth = '7px'; } else { maxWidth = '10px'; } } width += this.props.hasScroll ? 0 : 3; //如果没有滚动条了把减去的宽度加回来 width = isIE && !this.props.hasScroll && width < 24 ? 24 : width; //针对ie11浏览器下后面空白的问题修改 return React.createElement( 'div', (0, _extends3.default)({ className: 'fixWrapperRight', style: { maxWidth: maxWidth, width: width + "px", "overflow": "auto", position: "absolute", zIndex: 2, top: 0, right: right + "px" } }, events), content ); } return React.createElement( Scroller, { onMount: this.onMount, preventDefaultHorizontal: true, loadMask: !props.loadMaskOverHeader, loading: props.loading, scrollbarSize: props.scrollbarSize, minVerticalScrollStep: props.rowHeight, scrollTop: props.scrollTop, scrollLeft: props.scrollLeft, scrollHeight: verticalScrollerSize, scrollWidth: props.minRowWidth, onVerticalScroll: this.onVerticalScroll, onHorizontalScroll: this.onHorizontalScroll, onScrollTop: props.onScrollTop, rollHeight: props.rollHeight, nozScroll: props.nozScroll, marginLeft: props.marginLeft, style: props.style, height: props.height, tbodyWidth: props.bodyWidth }, content ); }, onVerticalScrollOverflow: function onVerticalScrollOverflow() {}, onHorizontalScrollOverflow: function onHorizontalScrollOverflow() {}, onHorizontalScroll: function onHorizontalScroll(scrollLeft) { this.props.onScrollLeft(scrollLeft); }, onVerticalScroll: function onVerticalScroll(pos) { this.props.hoverClear(); this.props.onScrollTop(pos); }, prepareProps: function prepareProps(thisProps) { var props = {}; assign(props, thisProps); return props; } });