UNPKG

@beisen/ethos

Version:

beisencloud pc react components

1,007 lines (938 loc) 41.7 kB
'use strict'; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _commonFunc = require('../common-func'); require('./styles/all.scss'); var _baseButton = require('../base-button'); var _baseButton2 = _interopRequireDefault(_baseButton); var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultTranslation = { alreadyKnown: '我知道了', viewMore: '查看更多', correctMsgText: '正确!', errorMsgText: '错误!', attentionMsgText: '注意!', questionMarkMsgText: '问号!', messageMsgText: '信息!', notificationMsgText: '提示!', confirmText: '确定', cancelText: '取消' }; /* eslint-disable */ var PopLayer = function (_Component) { (0, _inherits3.default)(PopLayer, _Component); function PopLayer(props) { (0, _classCallCheck3.default)(this, PopLayer); var _this = (0, _possibleConstructorReturn3.default)(this, (PopLayer.__proto__ || (0, _getPrototypeOf2.default)(PopLayer)).call(this, props)); _this.lookMorehover = function () { if (_this.refs.showAllIcon) { _this.refs.showAllIcon.className = 'sys-icon-arrowdown2-active arrowdown'; } }; _this.lookMorehOut = function () { if (_this.refs.showAllIcon) { _this.refs.showAllIcon.className = 'sys-icon-arrowdown2-nomal arrowdown'; } }; _this.showAllInfo = function () { _this.refs.tipsContent.style.maxHeight = '280px'; _this.refs.tipsContent.style.overflowY = 'auto'; if (_this.refs.tipsContent.scrollHeight > 280) { if (_this.refs.manualClose) { _this.refs.manualClose.className = 'manual-close manual-close-hasShadow'; } if (_this.refs.hasNoButtonShadowLine) { _this.refs.hasNoButtonShadowLine.className = 'hasNoButtonLine hasNoButtonLine_hasShadow'; } } if (_this.refs.showAllBtn) { _this.refs.showAllBtn.style.display = 'none'; } }; _this.DetermineChineseCharacterNum = function (str) { var sum = 0; var re = /[\u4E00-\u9FA5]/g; //测试中文字符的正则 if (str) { if (re.test(str)) { //使用正则判断是否存在中文 return str.match(re).length; //返回中文的个数 } } return 0; }; _this.renderIcon = function (style, type) { if (style == 'round-pattern') { if (type == 'success') { return _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon-border round-pattern-tips-icon-border-success' }, _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon' }, _react2.default.createElement( 'div', { className: 'successEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'successFaceLeftEyes', ref: 'successFaceLeftEyes' }), _react2.default.createElement('div', { className: 'successFaceRightEyes', ref: 'successFaceRightEyes' }) ), _react2.default.createElement( 'div', { className: 'successFaceMouse', ref: 'mouseActive' }, _react2.default.createElement('div', { className: 'successMouseFadeOut fadeOut-top', ref: 'fadeOutTop' }) ) ) ); } else if (type == 'error') { return _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon-border round-pattern-tips-icon-border-error' }, _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon', ref: 'roundPatternTipsIcon' }, _react2.default.createElement( 'div', { className: 'errorEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'errorFaceLeftEyes', ref: 'errorFaceLeftEyes' }), _react2.default.createElement('div', { className: 'errorFaceRightEyes', ref: 'errorFaceRightEyes' }) ), _react2.default.createElement( 'div', { className: 'errorFaceMouse', ref: 'mouseActive' }, _react2.default.createElement('div', { className: 'errorMouseFadeOut fadeOut-bottom', ref: 'fadeOutBottom' }) ) ) ); } else if (type == 'warning') { return _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon-border round-pattern-tips-icon-border-warning' }, _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon', ref: 'roundPatternTipsIcon' }, _react2.default.createElement( 'div', { className: 'warningEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'warningFaceLeftEyes', ref: 'warningFaceLeftEyes' }), _react2.default.createElement('div', { className: 'warningFaceRightEyes', ref: 'warningFaceRightEyes' }) ), _react2.default.createElement('div', { className: 'warningFaceMouse', ref: 'mouseActive' }) ) ); } else if (type == 'remind') { return _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon-border round-pattern-tips-icon-border-remind' }, _react2.default.createElement( 'div', { className: 'round-pattern-tips-icon' }, _react2.default.createElement( 'div', { className: 'remindEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'remindFaceLeftEyes', ref: 'remindFaceLeftEyes' }), _react2.default.createElement('div', { className: 'remindFaceRightEyes', ref: 'remindFaceRightEyes' }) ), _react2.default.createElement( 'div', { className: 'remindFaceMouse', ref: 'mouseActive' }, _react2.default.createElement('div', { className: 'remindMouseFadeOut fadeOut-top', ref: 'fadeOutTop' }) ) ) ); } } else { if (type == 'success') { return _react2.default.createElement( 'div', { className: 'tips-icon-border tips-icon-border-success' }, _react2.default.createElement( 'div', { className: 'tips-icon' }, _react2.default.createElement( 'div', { className: 'successEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'successFaceLeftEyes', ref: 'successFaceLeftEyes' }), _react2.default.createElement('div', { className: 'successFaceRightEyes', ref: 'successFaceRightEyes' }) ), _react2.default.createElement( 'div', { className: 'successFaceMouse', ref: 'mouseActive' }, _react2.default.createElement('div', { className: 'successMouseFadeOut fadeOut-top', ref: 'fadeOutTop' }) ) ) ); } else if (type == 'error') { return _react2.default.createElement( 'div', { className: 'tips-icon-border tips-icon-border-error' }, _react2.default.createElement( 'div', { className: 'tips-icon', ref: 'roundPatternTipsIcon' }, _react2.default.createElement( 'div', { className: 'errorEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'errorFaceLeftEyes', ref: 'errorFaceLeftEyes' }), _react2.default.createElement('div', { className: 'errorFaceRightEyes', ref: 'errorFaceRightEyes' }) ), _react2.default.createElement( 'div', { className: 'errorFaceMouse', ref: 'mouseActive' }, _react2.default.createElement('div', { className: 'errorMouseFadeOut fadeOut-bottom', ref: 'fadeOutBottom' }) ) ) ); } else if (type == 'warning') { return _react2.default.createElement( 'div', { className: 'tips-icon-border tips-icon-border-warning' }, _react2.default.createElement( 'div', { className: 'tips-icon', ref: 'roundPatternTipsIcon' }, _react2.default.createElement( 'div', { className: 'warningEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'warningFaceLeftEyes', ref: 'warningFaceLeftEyes' }), _react2.default.createElement('div', { className: 'warningFaceRightEyes', ref: 'warningFaceRightEyes' }) ), _react2.default.createElement('div', { className: 'warningFaceMouse', ref: 'mouseActive' }) ) ); } else if (type == 'remind') { return _react2.default.createElement( 'div', { className: 'tips-icon-border tips-icon-border-remind' }, _react2.default.createElement( 'div', { className: 'tips-icon' }, _react2.default.createElement( 'div', { className: 'remindEyesBorder', ref: 'eyesBorder' }, _react2.default.createElement('div', { className: 'remindFaceLeftEyes', ref: 'remindFaceLeftEyes' }), _react2.default.createElement('div', { className: 'remindFaceRightEyes', ref: 'remindFaceRightEyes' }) ), _react2.default.createElement( 'div', { className: 'remindFaceMouse', ref: 'mouseActive' }, _react2.default.createElement('div', { className: 'remindMouseFadeOut fadeOut-top', ref: 'fadeOutTop' }) ) ) ); } } }; _this.extFieldChange = function (data) { if (_this.props.onChange) { _this.props.onChange(data); } }; _this.showFaceActive = function (type) { if (type == 'success') { setTimeout(function () { var mouseActive = _this.refs.mouseActive; if (mouseActive) { mouseActive.className = mouseActive.className + ' successMouseMove'; } setTimeout(function () { var eyesDom = _this.refs.eyesBorder; if (eyesDom) { eyesDom.className = eyesDom.className + ' successEyesMove'; } }, 300); }, 1000); } else if (type == 'error') { setTimeout(function () { var fadeOutBottom = _this.refs.fadeOutBottom; var eyesDom = _this.refs.eyesBorder; if (fadeOutBottom && eyesDom) { fadeOutBottom.className = fadeOutBottom.className + ' fadeOutMove'; eyesDom.className = eyesDom.className + ' errorEyesMove'; } setTimeout(function () { var icon = _this.refs.roundPatternTipsIcon; if (icon) { icon.className = icon.className + ' iconshake'; } }, 0); }, 1000); } else if (type == 'warning') { setTimeout(function () { var eyesDom = _this.refs.eyesBorder; if (eyesDom) { var timeTag = 0; _this.warningTimeOut = setInterval(function () { timeTag++; var faceLeftEyes = _this.refs.warningFaceLeftEyes; var faceRightEyes = _this.refs.warningFaceRightEyes; if (timeTag > 0 && timeTag < 50) { if (faceLeftEyes) faceLeftEyes.style.left = '2px'; if (faceRightEyes) faceRightEyes.style.left = '9px'; } else { if (faceLeftEyes) faceLeftEyes.style.left = '1px'; if (faceRightEyes) faceRightEyes.style.left = '10px'; } setTimeout(function () { clearInterval(_this.warningTimeOut); }, 600); }, 10); } setTimeout(function () { var icon = _this.refs.roundPatternTipsIcon; if (icon) { icon.className = icon.className + ' iconshake'; } }, 0); }, 1000); } else if (type == 'remind') { setTimeout(function () { _react2.default.createElement('div', { className: 'remindMouseFadeOut fadeOut-top', ref: 'fadeOutTop' }); var fadeOutTop = _this.refs.fadeOutTop; if (fadeOutTop) { fadeOutTop.className = fadeOutTop.className + ' fadeOutMove'; } setTimeout(function () { var eyesDom = _this.refs.eyesBorder; if (eyesDom) { eyesDom.className = eyesDom.className + ' warningEyesMove'; } }, 400); }, 1000); } }; _this.setCenterPosition = function () { if (_this.refs.popDirection) { if (_this.props.target) { var _computePositionToMak = (0, _utils.computePositionToMakePopCenter)(_this.refs.popDirection, _this.props.target), top = _computePositionToMak.top, left = _computePositionToMak.left, marginTop = _computePositionToMak.marginTop, marginLeft = _computePositionToMak.marginLeft; _this.refs.popDirection.style.top = top; _this.refs.popDirection.style.left = left; _this.refs.popDirection.style.marginTop = marginTop + 'px'; _this.refs.popDirection.style.marginLeft = marginLeft + 'px'; } else { console.warn('当布局方式为居中时,相对居中对象target是必需的'); } } }; _this.createMask = function (hidden) { var dom = document.getElementsByClassName('pop-layer_is-show')[0]; if (!hidden && !dom && _this.props.showMask) { _this.container = document.body; _this.wrapper = document.createElement('div'); _this.wrapper.className = 'pop-layer_is-show'; _this.container.appendChild(_this.wrapper); } }; _this.removeMask = function () { var dom = document.getElementsByClassName('pop-layer_is-show')[0]; if (dom) document.body.removeChild(dom); }; _this.translation = (0, _extends3.default)({}, defaultTranslation, props.translation); var disappearTime = _this.props.disappearTime ? _this.props.disappearTime : "3000"; _this.clickClose = _this.clickClose.bind(_this); _this.moveTips = _this.moveTips.bind(_this); var disTime = disappearTime; var infoType = _this.props.infoType ? _this.props.infoType : "0"; var infoColor = void 0, iconName = void 0, title = void 0, roundInfoColor = void 0, roundIconName = void 0, roundCloseIconName = void 0, promptMessageType = void 0; var showStateDuring = false; switch (infoType) { case "0": promptMessageType = 'success'; infoColor = " color-zero"; iconName = " successFace-tip-icon"; roundInfoColor = " color-zero"; roundIconName = " successFace-tip-icon"; roundCloseIconName = " successClose"; title = _this.props.title ? _this.props.title : _this.translation.correctMsgText; break; case "1": promptMessageType = 'error'; infoColor = " color-one"; iconName = " errorFace-tip-icon"; roundInfoColor = " color-one"; roundIconName = " errorFace-tip-icon"; roundCloseIconName = " errorClose"; title = _this.props.title ? _this.props.title : _this.translation.errorMsgText; break; case "2": promptMessageType = 'warning'; infoColor = " color-two"; iconName = " warningFace-tip-icon"; roundInfoColor = " color-two"; roundIconName = " warningFace-tip-icon"; roundCloseIconName = " warningClose"; title = _this.props.title ? _this.props.title : _this.translation.attentionMsgText; break; case "3": promptMessageType = 'remind'; infoColor = " color-three"; iconName = " remindFace-tip-icon"; roundInfoColor = " color-three"; roundIconName = " remindFace-tip-icon"; roundCloseIconName = " remindClose"; title = _this.props.title ? _this.props.title : _this.translation.questionMarkMsgText; break; case "4": promptMessageType = 'info'; infoColor = " color-four"; iconName = " infoFace-tip-icon"; roundInfoColor = " color-four"; roundIconName = " infoFace-tip-icon"; roundCloseIconName = " infoClose"; title = _this.props.title ? _this.props.title : _this.translation.messageMsgText; break; case "5": promptMessageType = 'caution'; infoColor = " color-five"; iconName = " cautionFace-tip-icon"; roundInfoColor = " color-five"; roundIconName = " cautionFace-tip-icon"; roundCloseIconName = " cautionClose"; title = _this.props.title ? _this.props.title : _this.translation.notificationMsgText; break; default: return (0, _possibleConstructorReturn3.default)(_this); } var sureButton = { bsStyle: "default", bsSize: "small", active: true, title: _this.props.sureButtonContent ? _this.props.sureButtonContent : _this.translation.confirmText, onClick: _this.sureClick.bind(_this) }; var cancelButton = { bsStyle: "weaken", bsSize: "small", active: true, title: _this.props.cancleButtonContent ? _this.props.cancleButtonContent : _this.translation.cancelText, onClick: _this.closeClick.bind(_this) }; var autoDirection = void 0; if (_this.props.autoDirection == undefined) { autoDirection = true; } else { autoDirection = _this.props.autoDirection; } var setPosition = true; if (_this.props.top === undefined && _this.props.left === undefined && _this.props.right === undefined && _this.props.bottom === undefined) { setPosition = false; } var defualt = { popType: _this.props.popType ? _this.props.popType : "0", infoType: infoType, infoColor: infoColor, iconName: iconName, roundInfoColor: roundInfoColor, roundIconName: roundIconName, roundCloseIconName: roundCloseIconName, showMask: false, manualClose: _this.props.manualClose ? _this.props.manualClose : false, disappearTime: disappearTime, disTime: disTime, promptMessageType: promptMessageType, title: _this.props.title ? _this.props.title : _this.translation.notificationMsgText, content: _this.props.content ? _this.props.content : [], popShow: false, moveTips: false, moveRountTips: false, moveConform: false, sureButton: sureButton, cancelButton: cancelButton, autoDirection: autoDirection, direction: _this.props.direction ? _this.props.direction : "left-down", target: _this.props.target ? _this.props.target : "", listViewDirection: _this.props.autoDirection ? "left-down" : _this.props.direction, left: _this.props.left ? _this.props.left : 0, right: _this.props.right ? _this.props.right : 0, top: _this.props.top ? _this.props.top : 0, bottom: _this.props.bottom ? _this.props.bottom : 0, setPosition: setPosition, count: 0 }; _this.state = (0, _extends3.default)({}, defualt, props); _this.popClose = _this.popClose.bind(_this); return _this; } /* 确定回调 */ (0, _createClass3.default)(PopLayer, [{ key: 'sureClick', value: function sureClick(val) { var extFieldData = this.refs.extFieldData && this.refs.extFieldData.getChildrenValue ? this.refs.extFieldData.getChildrenValue() : null; if (extFieldData) { val.target['extFieldData'] = extFieldData; } val.stopPropagation(); this.props.onSure && this.props.onSure(val); this.popClose(true); } /* 取消回调 */ }, { key: 'closeClick', value: function closeClick(val) { var extFieldData = this.refs.extFieldData && this.refs.extFieldData.getChildrenValue ? this.refs.extFieldData.getChildrenValue() : null; if (extFieldData) { val.target['extFieldData'] = extFieldData; } val.stopPropagation(); this.props.onClose && this.props.onClose(val); this.popClose(true); } }, { key: 'popClose', value: function popClose(flag, e) { var self = this; if (e && e.stopPropagation) { e && e.stopPropagation(); } if (!this.props.cliCloBtnNoHide) { this.setState({ popShow: false }); } this.removeMask(); setTimeout(function () { self.props.showHide && self.props.showHide(flag, e); }, 300); } }, { key: 'componentWillMount', value: function componentWillMount(props) { if (!this.props.hidden) { document.removeEventListener('mousedown', this.moveTips); this.setState({ popShow: true }); }; } }, { key: 'componentWillUnmount', value: function componentWillUnmount() { this.removeMask(); document.removeEventListener('mousedown', this.moveTips); document.removeEventListener('mousedown', this.clickClose); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { var self = this; var _state = this.state, autoDirection = _state.autoDirection, direction = _state.direction; if (this.props.title == nextProps.title && this.props.cancleButtonContent == nextProps.cancleButtonContent && this.props.hidden == nextProps.hidden && this.props.direction == nextProps.direction && this.props.disappearTime == nextProps.disappearTime && this.props.infoType == nextProps.infoType && this.props.left == nextProps.left && this.props.manualClose == nextProps.manualClose && this.props.popType == nextProps.popType && this.props.sureButtonContent == nextProps.sureButtonContent && this.props.target == nextProps.target && this.props.title == nextProps.title && this.props.top == nextProps.top && this.props.bottom == nextProps.bottom && this.props.right == nextProps.right) { this.showStateDuring = false; } else { this.showStateDuring = true; } if (!nextProps.hidden && !this.showStateDuring) { this.setState({ popShow: true }); this.createMask(nextProps.hidden); if (self.state.popType === "1") { self.setState({ target: nextProps.target ? nextProps.target : "" }); if (nextProps.target && self.refs.popDirection) { var newTarget = nextProps.target; var popTarget = self.refs.popDirection.getBoundingClientRect(); var length = popTarget.height; var winHeight = window.innerHeight; var winWidth = window.innerWidth; var horizontal = winWidth / 2 > newTarget.left ? "right" : "left"; var vertical = winHeight / 2 > newTarget.top ? winHeight - newTarget.top > length ? "-down" : "-top" : winHeight - newTarget.top > length ? "-down" : "-top"; this.state.listViewDirection = autoDirection ? horizontal + vertical : direction; this.setState(this.state); }; }; }; if (nextProps.content != this.props.content) { this.setState({ content: nextProps.content }); } } }, { key: 'shouldComponentUpdate', value: function shouldComponentUpdate(nextProps) { this.state.count++; if (this.props.popType === "0" && this.props.manualClose === false && this.state.count !== 1) { var res = true; if (this.props.cancleButtonContent == nextProps.cancleButtonContent && this.props.hidden == nextProps.hidden && this.props.direction == nextProps.direction && this.props.disappearTime == nextProps.disappearTime && this.props.infoType == nextProps.infoType && this.props.left == nextProps.left && this.props.manualClose == nextProps.manualClose && this.props.popType == nextProps.popType && this.props.sureButtonContent == nextProps.sureButtonContent && this.props.target == nextProps.target && this.props.title == nextProps.title && this.props.top == nextProps.top && this.props.bottom == nextProps.bottom && this.props.right == nextProps.right) { res = false; } return res; } else { return true; } } //添加拓展组件内容 }, { key: 'render', value: function render() { var _state2 = this.state, popType = _state2.popType, infoColor = _state2.infoColor, iconName = _state2.iconName, manualClose = _state2.manualClose, title = _state2.title, content = _state2.content, sureButton = _state2.sureButton, cancelButton = _state2.cancelButton, listViewDirection = _state2.listViewDirection, left = _state2.left, top = _state2.top, setPosition = _state2.setPosition, moveTips = _state2.moveTips, moveRountTips = _state2.moveRountTips, bottom = _state2.bottom, right = _state2.right, roundIconName = _state2.roundIconName, roundInfoColor = _state2.roundInfoColor, roundCloseIconName = _state2.roundCloseIconName, promptMessageType = _state2.promptMessageType; var _props = this.props, hidden = _props.hidden, maxHeight = _props.maxHeight, removeSubBtn = _props.removeSubBtn, translation = _props.translation, target = _props.target, direction = _props.direction, width = _props.width; var innerStyle = maxHeight ? { "maxHeight": maxHeight, 'overflowX': 'hidden' } : {}; var manualClosePart = void 0; var manualCloseForRoundPatter = void 0; if (!manualClose) { manualClosePart = _react2.default.createElement('div', { className: 'hasNoButtonLine', ref: 'hasNoButtonShadowLine' }); manualCloseForRoundPatter = ''; } else { manualClosePart = _react2.default.createElement( 'div', { className: "manual-close", ref: 'manualClose' }, _react2.default.createElement( 'div', { className: 'manual-close-content', onClick: this.popClose }, _react2.default.createElement( 'span', { className: "manual-close-word" }, this.translation.alreadyKnown ) ) ); manualCloseForRoundPatter = _react2.default.createElement( 'div', { className: 'round-pattern-manual-close' }, _react2.default.createElement('div', { className: 'round-pattern-divide-line' }), _react2.default.createElement('div', { className: "round-pattern-close-btn" + roundCloseIconName, onClick: this.popClose }) ); } var tipsContent = []; var tipsContentConfirm = []; if (content) { if (content.length == 1) { var _html = { __html: (0, _commonFunc.decode)(content[0]) }; tipsContent.push(_react2.default.createElement('li', { key: '0', dangerouslySetInnerHTML: _html })); tipsContentConfirm.push(_react2.default.createElement('li', { key: '0', dangerouslySetInnerHTML: _html })); } else { content.map(function (item, index) { var _html = { __html: index + 1 + "、" + (0, _commonFunc.decode)(content[index]) }; var _html1 = { __html: (0, _commonFunc.decode)(content[index]) }; tipsContent.push(_react2.default.createElement('li', { key: index, dangerouslySetInnerHTML: _html })); tipsContentConfirm.push(_react2.default.createElement('li', { key: index, dangerouslySetInnerHTML: _html1 })); }); } }; if (hidden) { return _react2.default.createElement('div', null); } else if (popType === "0") { var num = this.DetermineChineseCharacterNum((0, _commonFunc.decode)(title)); var maxCharacter = manualClose ? 108 : 120; if (tipsContent.length == 0 && (0, _commonFunc.decode)(title).length + num <= maxCharacter) { return _react2.default.createElement( 'div', { className: "round-pattern-pop-outer " + roundInfoColor + (this.state.popShow ? " pop-open-tip" : " pop-close") + (moveRountTips ? ' round-pattern-pop-outer-move' : ''), style: { "left": left + "px", "top": top + "px", opacity: 0 }, ref: 'roundPatternPopOuter' }, _react2.default.createElement( 'div', { className: "round-pattern-tips-container", ref: 'roundPatternTipsContainer' }, this.renderIcon('round-pattern', promptMessageType), _react2.default.createElement( 'div', { className: manualClose ? "round-pattern-tips-wrap round-pattern-tips-wrap-short" : "round-pattern-tips-wrap round-pattern-tips-wrap-long", ref: 'roundPatternTipsWrap' }, _react2.default.createElement( 'span', { className: "round-pattern-tips-title" }, (0, _commonFunc.decode)(title) ) ), manualCloseForRoundPatter ) ); } else { return _react2.default.createElement( 'div', { className: "pop-outer hint-pop" + (this.state.popShow ? " pop-open-tip" : " pop-close") + infoColor + (content.length > 0 ? " with-content" : "") + (moveTips ? " pop-out-move" : ""), style: { "left": left + "px", "top": top + "px" }, ref: 'popOut' }, _react2.default.createElement( 'div', { className: "tips-container", style: innerStyle }, this.renderIcon('no-round-pattern', promptMessageType), _react2.default.createElement( 'div', { className: 'tips-wrap' }, _react2.default.createElement( 'span', { className: "tips-title" }, (0, _commonFunc.decode)(title) ) ), _react2.default.createElement( 'ul', { className: "tips-content", ref: 'tipsContent' }, tipsContent ), _react2.default.createElement( 'div', { className: 'showallBtn', ref: 'showAllBtn', onMouseOver: this.lookMorehover, onMouseOut: this.lookMorehOut, onClick: this.showAllInfo }, this.translation.viewMore, _react2.default.createElement('div', { className: 'sys-icon-arrowdown2-nomal arrowdown', ref: 'showAllIcon' }) ) ), manualClosePart ); } } else { var dirClass = void 0; switch (listViewDirection) { case "right-down": dirClass = "top left"; break; case "left-down": dirClass = "top right"; break; case "left-top": dirClass = "bottom right"; break; case "right-top": dirClass = "bottom left"; break; default: }; var popStyle = void 0, popClassName = void 0; popClassName = (setPosition ? '' : listViewDirection) + ' pop-outer confirm-pop ' + (this.state.popShow ? "pop-open" : "pop-close") + ' ' + (direction === 'center' && target ? 'pop-layer__center' : ''); popStyle = (0, _utils.genPopStyleIfPosition)(dirClass, maxHeight, setPosition, this.props); if (direction === 'center') { if (target) { var _computeTargetCenterP = (0, _utils.computeTargetCenterPosition)(target), _top = _computeTargetCenterP.top, _left = _computeTargetCenterP.left; popStyle = (0, _utils.genPopStyleIfPosition)(dirClass, (maxHeight || _utils.MAX_CONFIRM_HEIGHT) - 44, true, { top: _top, left: _left }); if (width) { popStyle.width = width; } else { popStyle.width = 340; } if (this.state.popShow === false) { popClassName += ' pop-layer__center_close'; } } else { console.warn('当布局方式为居中时,相对居中对象target是必需的'); } } var confirm_connect_style = this.props.connectStyle ? this.props.connectStyle : { 'top': '-9px', 'left': '0px' }; var PageType = window._beisenCmp && window._beisenCmp[this.props.extComponentName] ? window._beisenCmp[this.props.extComponentName] : null; var centerConfirmStyle = direction === 'center' ? { maxHeight: maxHeight ? maxHeight - 44 - 36 : _utils.MAX_CONFIRM_HEIGHT - 44 - 36, overflowY: 'scroll' } : {}; return _react2.default.createElement( 'div', { ref: 'popDirection', className: this.state.moveConform ? popClassName + ' acConfirmMove' : popClassName, style: popStyle }, listViewDirection !== 'center' && _react2.default.createElement('div', { className: 'confirm-connect', style: confirm_connect_style }) /* 当布局方式为居中时,不显示气泡的小尖角 */, _react2.default.createElement( 'div', { style: centerConfirmStyle, className: 'confirm-content-container' }, _react2.default.createElement( 'div', { className: 'confirm-title' }, _react2.default.createElement('div', { className: 'confirm-title-image pc_sys_zhuyi_nomal' }), _react2.default.createElement( 'div', { className: 'confirm-title-message' }, (0, _commonFunc.decode)(title) ) ), PageType ? _react2.default.createElement(PageType, { ref: 'extFieldData' }) : '', _react2.default.createElement( 'ul', { className: tipsContent.length > 0 ? "confirm-message confirm-message-hasInfo" : "confirm-message confirm-message-emptyInfo", style: listViewDirection === 'center' ? { maxHeight: 10000 } : {} }, tipsContentConfirm ) ), _react2.default.createElement( 'div', { className: 'us-footer clearfix' }, removeSubBtn ? '' : _react2.default.createElement(_baseButton2.default, sureButton), _react2.default.createElement(_baseButton2.default, cancelButton) ) ); } } }, { key: 'componentDidUpdate', value: function componentDidUpdate() { if (this.refs.tipsContent && this.refs.tipsContent.scrollHeight <= 100) { this.refs.showAllBtn.style.display = 'none'; } if (this.props.direction === 'center') { this.setCenterPosition(); } } }, { key: 'componentDidMount', value: function componentDidMount() { var _this2 = this; //这里要做创建虚拟dom的操作 因为可能存在didMount操作的时候找得到节点 但是节点因为涉及到变淡弹层弹出 没显示问题 造成表单无权限提示信息错乱的问题 var setTime = this.props.popLayerShowArea == 'form' ? 500 : 0; setTimeout(function () { var textvalveBorder = document.createElement('div'); if (_this2.props.manualClose) { textvalveBorder.className = 'poplayer_text_Border poplayer_text_Border_short'; } else { textvalveBorder.className = 'poplayer_text_Border poplayer_text_Border_long'; } textvalveBorder.innerText = (0, _commonFunc.decode)(_this2.props.title); document.body.appendChild(textvalveBorder); if (_this2.refs.roundPatternTipsContainer) { if (_this2.props.manualClose) { _this2.refs.roundPatternPopOuter.style.opacity = '1'; _this2.refs.roundPatternPopOuter.style.width = textvalveBorder.clientWidth + 52 + 'px'; _this2.refs.roundPatternTipsContainer.style.height = textvalveBorder.clientHeight + 'px'; } else { _this2.refs.roundPatternPopOuter.style.opacity = '1'; _this2.refs.roundPatternPopOuter.style.width = textvalveBorder.clientWidth + 23 + 'px'; _this2.refs.roundPatternTipsContainer.style.height = textvalveBorder.clientHeight + 'px'; } } document.body.removeChild(textvalveBorder); }, [setTime]); this.showFaceActive(this.state.promptMessageType); if (this.refs.tipsContent) { if (this.refs.tipsContent.scrollHeight > 100) {} else { if (this.refs.showAllBtn) { this.refs.showAllBtn.style.display = 'none'; } } } var _state3 = this.state, popType = _state3.popType, manualClose = _state3.manualClose, disTime = _state3.disTime; var self = this; if (popType === "0" && !manualClose) { setTimeout(function () { self.setState({ popShow: false }); setTimeout(function () { self.props.showHide && self.props.showHide(); }, 300); }, disTime); } else if (popType === "1") { document.removeEventListener('mousedown', this.clickClose); document.addEventListener('mousedown', this.clickClose); if (this.props.direction === 'center') { this.setCenterPosition(); } } else if (popType === "0" && manualClose) { document.removeEventListener('mousedown', this.moveTips); document.addEventListener('mousedown', this.moveTips); } this.createMask(this.props.hidden); } }, { key: 'moveTips', value: function moveTips(e) { var _this3 = this; var area = this.refs.popOut; var area1 = this.refs.roundPatternPopOuter; if (area && area.contains(e.target)) { return; } else if (area1 && area1.contains(e.target)) { return; } var self = this; if (!this.moveUnAble) { var popOutTest = this.refs.popOut; var popOutTest1 = this.refs.roundPatternPopOuter; if (popOutTest1) { this.moveUnAble = true; popOutTest1.className = popOutTest1.className.split('pop-open-after')[0] + ' round-pattern-pop-outer-move'; setTimeout(function () { popOutTest1.className = popOutTest1.className.split('round-pattern-pop-outer-move')[0] + ' pop-open-after'; _this3.moveUnAble = false; }, 1200); } if (popOutTest) { this.moveUnAble = true; popOutTest.className = popOutTest.className.split('pop-open-after')[0] + ' pop-out-move'; setTimeout(function () { popOutTest.className = popOutTest.className.split('pop-out-move')[0] + ' pop-open-after'; _this3.moveUnAble = false; }, 1200); } } } }, { key: 'clickClose', value: function clickClose(e) { var area = this.refs.popDirection; var self = this; if (area == undefined) return; if (area.contains(e.target)) return; //这里做点击其他处 弹层晃动的操作 // this.popClose(false, e); if (!this.clickBool) { this.clickClassName = this.refs.popDirection.className + ' pop-open-after'; this.clickBool = 1; } if (this.clickBool == 1) { if (this.refs.popDirection.className.split('pop-open-after')[0].indexOf('acConfirmMove') <= 0) { this.refs.popDirection.className = this.refs.popDirection.className.split('pop-open-after')[0] + ' acConfirmMove'; } } clearTimeout(this.timeOut); this.timeOut = setTimeout(function () { if (self.refs.popDirection) { self.refs.popDirection.className = self.clickClassName; } self.clickBool == 0; }, 900); // document.removeEventListener('mousedown', this.clickClose); } }]); return PopLayer; }(_react.Component); module.exports = PopLayer;