@beisen/ethos
Version:
beisencloud pc react components
289 lines (260 loc) • 10.3 kB
JavaScript
'use strict';
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 _reactDom = require('react-dom');
var _toolTip = require('../tool-tip');
var _toolTip2 = _interopRequireDefault(_toolTip);
var _commonFunc = require('../common-func');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable */
var UserItems = function (_Component) {
(0, _inherits3.default)(UserItems, _Component);
function UserItems(props) {
(0, _classCallCheck3.default)(this, UserItems);
var _this = (0, _possibleConstructorReturn3.default)(this, (UserItems.__proto__ || (0, _getPrototypeOf2.default)(UserItems)).call(this, props));
_this.setDepartmentElWidth = function () {
// 计算当前姓名所占宽度 在计算剩余宽度
if (_this.nameEl && _this.departmentEl) {
_this.departmentEl.style.width = 'calc(100% - ' + (_this.nameEl.clientWidth + 18) + 'px)';
}
};
_this.state = {
isDelete: props.isDelete || false // 鼠标划过 是否添加
};
_this.liClick = _this.liClick.bind(_this);
_this.onMouseOver = _this.onMouseOver.bind(_this);
_this.onMouseOut = _this.onMouseOut.bind(_this);
return _this;
}
//li click
(0, _createClass3.default)(UserItems, [{
key: 'liClick',
value: function liClick(event) {
if (this.props.userSelect) {
event.stopPropagation();
this.props.userSelect(this.refs.liNode, true);
}
}
}, {
key: 'onMouseOver',
value: function onMouseOver(e) {
this.props.onMouseOver && this.props.onMouseOver(e, this.props.index);
}
}, {
key: 'onMouseOut',
value: function onMouseOut(e) {
this.props.onMouseOut && this.props.onMouseOut(e, -1);
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate() {
this.setDepartmentElWidth();
}
}, {
key: 'componentDidMount',
value: function componentDidMount() {
this.setDepartmentElWidth();
}
}, {
key: 'render',
value: function render() {
var _this2 = this;
var _props = this.props,
Name = _props.Name,
Email = _props.Email,
UserAvatar = _props.UserAvatar,
Id = _props.Id,
_props$isSearch = _props.isSearch,
isSearch = _props$isSearch === undefined ? false : _props$isSearch,
_props$searchVal = _props.searchVal,
searchVal = _props$searchVal === undefined ? null : _props$searchVal,
holdOn = _props.holdOn;
var isDelete = this.state.isDelete;
var avatar = void 0;
avatar = UserAvatar && UserAvatar.HasAvatar ? _react2.default.createElement('img', { className: 'us-avatar', src: UserAvatar.Medium, alt: Name }) : _react2.default.createElement(
'span',
{ className: 'us-avatar', style: { backgroundColor: UserAvatar.Color } },
Name && Name.substr(0, 1)
);
var deleteIcon = isDelete ? _react2.default.createElement('a', { href: 'javascript:void(0)', className: 'sys-icon-close' }) : undefined;
var _Name = _react2.default.createElement(
'p',
{ className: 'us-info-name' },
Name
);
var _Email = _react2.default.createElement(
'p',
{ className: 'us-info-email' },
Email
);
var _arr = [_Name, _Email];
if (isSearch && searchVal) {
// 由于 输入有可能为 ( 开始圆括号,导致RegExp报错, 现使用其它方法代替
//以下正则匹配仅用于获取index
// let patt = new RegExp(searchVal, 'g');
for (var i = 0; i < _arr.length; i++) {
var _tempVal = i == 0 ? (0, _commonFunc.decode)(Name) : (0, _commonFunc.decode)(Email);
// let patResult = patt.exec(_tempVal);
// if (patResult == null) continue;
// let endIndex = patt.lastIndex;
if (_tempVal == null) continue;
var endIndex = _tempVal.indexOf(searchVal) + 1;
var startIndex = endIndex - searchVal.length;
var _classname = i == 0 ? 'name' : 'email';
if (searchVal.length == _tempVal.length) {
_arr[i] = _react2.default.createElement(
'p',
{ className: 'us-info-' + _classname },
_react2.default.createElement(
'em',
null,
searchVal
)
);
} else if (startIndex == 0) {
_arr[i] = _react2.default.createElement(
'p',
{ className: 'us-info-' + _classname },
_react2.default.createElement(
'em',
null,
searchVal
),
_tempVal.substr(endIndex, _tempVal.length)
);
} else if (endIndex == _tempVal.length) {
_arr[i] = _react2.default.createElement(
'p',
{ className: 'us-info-' + _classname },
_tempVal.substr(0, startIndex),
_react2.default.createElement(
'em',
null,
searchVal
)
);
} else {
_arr[i] = _react2.default.createElement(
'p',
{ className: 'us-info-' + _classname },
_tempVal.substr(0, startIndex),
_react2.default.createElement(
'em',
null,
searchVal
),
_tempVal.substr(endIndex, _tempVal.length)
);
}
}
}
var obj = {
0: {
a: null,
b: null,
c: (0, _commonFunc.decode)(Name)
},
1: {
a: null,
b: null,
c: (0, _commonFunc.decode)(Email)
}
};
if (isSearch && searchVal) {
for (var _i = 0; _i < 2; _i++) {
var _tempVal2 = _i == 0 ? (0, _commonFunc.decode)(Name) : (0, _commonFunc.decode)(Email);
var index = _tempVal2 ? _tempVal2.indexOf(searchVal) : -1;
var searchLength = searchVal.length;
if (index == 0) {
var subValue = _tempVal2.substring(index, searchLength);
obj[_i]['b'] = _react2.default.createElement(
'em',
null,
subValue
);
obj[_i]['c'] = _tempVal2.substring(searchLength, _tempVal2.length);
} else if (index > 0) {
obj[_i]['a'] = _tempVal2.substring(0, index);
var _subValue = _tempVal2.substring(index, searchLength + index);
obj[_i]['b'] = _react2.default.createElement(
'em',
null,
_subValue
);
obj[_i]['c'] = _tempVal2.substring(searchLength + index, _tempVal2.length);
}
}
}
var holdOnClass = holdOn ? 'us-item-list us-user clearfix user-hold-on' : 'us-item-list us-user clearfix';
// isDelete用于判断是否是在结果中,结果中不显示部门信息
// 增加参数判断是否显示部门
var departName = this.props.Department && this.props.isShowDepartmentName && !this.state.isDelete ? (0, _commonFunc.decode)(this.props.Department) + (this.props.TopDepartmentName && this.props.Department !== this.props.TopDepartmentName ? '(' + (0, _commonFunc.decode)(this.props.TopDepartmentName) + ')' : '') : '';
return _react2.default.createElement(
'li',
{ className: 'us-item us-item-user', ref: 'liNode', onClick: this.liClick, 'data-id': Id, onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },
_react2.default.createElement(
'div',
{ className: holdOnClass },
avatar,
_react2.default.createElement(
'div',
{ className: 'us-user-info' },
_react2.default.createElement(
'p',
{ className: 'us-info-name' },
_react2.default.createElement(
_toolTip2.default,
{ title: (0, _commonFunc.decode)(Name) + ' ' + departName },
_react2.default.createElement(
'span',
{ className: 'us-info-dis-tip', ref: function ref(nameEl) {
return _this2.nameEl = nameEl;
} },
obj[0]['a'],
obj[0]['b'],
obj[0]['c']
)
),
_react2.default.createElement(
_toolTip2.default,
{ title: departName },
_react2.default.createElement(
'span',
{ className: 'us-info-dis-tip last-department', ref: function ref(departmentEl) {
return _this2.departmentEl = departmentEl;
} },
departName
)
)
),
_react2.default.createElement(
_toolTip2.default,
{ title: (0, _commonFunc.decode)(Email) },
_react2.default.createElement(
'p',
{ className: 'us-info-email', title: (0, _commonFunc.decode)(Email) },
obj[1]['a'],
obj[1]['b'],
obj[1]['c']
)
)
),
deleteIcon
),
_react2.default.createElement('ul', { className: 'us-item-container' })
);
}
}]);
return UserItems;
}(_react.Component);
module.exports = UserItems;