@beisen/ethos
Version:
beisencloud pc react components
261 lines (210 loc) • 9.72 kB
JavaScript
'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 _reactDom = require('react-dom');
var _commonFunc = require('../common-func');
var _reactSortablejs = require('react-sortablejs');
var _reactSortablejs2 = _interopRequireDefault(_reactSortablejs);
var _toolTip = require('../tool-tip');
var _toolTip2 = _interopRequireDefault(_toolTip);
var _treeList = require('./treeList');
var _treeList2 = _interopRequireDefault(_treeList);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var List = function (_Component) {
(0, _inherits3.default)(List, _Component);
function List(props) {
(0, _classCallCheck3.default)(this, List);
var _this = (0, _possibleConstructorReturn3.default)(this, (List.__proto__ || (0, _getPrototypeOf2.default)(List)).call(this, props));
_this.handleSelect = function (key) {
_this.props.handleSelect(_this.props.dire, key);
};
_this.cancelSelect = function (key) {
_this.props.cancelSelect(_this.props.dire, key);
};
_this.handleDrop = function (order, sortable, evt) {
// 获取传输方向
var dire = evt.item.getAttribute('data-dire');
// type=update表示单列排序
if (evt.type === 'update') {
_this.props.sortTransfer(order, dire);
} else if (dire !== _this.props.dire) {
//列间拖拽:触发目标列change事件
// chosenIndex: 当前拖拽的ID
var chosenIndex = evt.item.getAttribute('data-index');
_this.props.handleDropTransfer(chosenIndex, order, dire);
}
};
return _this;
}
// 处理选中
// 取消选中
//
(0, _createClass3.default)(List, [{
key: 'render',
value: function render() {
var _this2 = this;
var _props = this.props,
title = _props.title,
data = _props.data,
dire = _props.dire,
style = _props.style,
waitForTrans = _props.waitForTrans,
topPosition = _props.topPosition,
hiddenTip = _props.hiddenTip,
sideTip = _props.sideTip,
treeMode = _props.treeMode,
treeModeLeft = _props.treeModeLeft;
var items = [];
if (treeMode) {
items = _react2.default.createElement(_treeList2.default, (0, _extends3.default)({}, this.props, {
handleSelect: this.handleSelect,
cancelSelect: this.cancelSelect,
hiddenTip: hiddenTip,
sideTip: sideTip
}));
} else {
items = data.map(function (item) {
var active = waitForTrans.indexOf(treeModeLeft ? item.ID : item.index) < 0 ? false : true;
return _react2.default.createElement(ListItem, (0, _extends3.default)({
key: item.index
}, item, {
dire: dire,
active: active,
handleSelect: _this2.handleSelect,
cancelSelect: _this2.cancelSelect,
hiddenTip: hiddenTip,
sideTip: sideTip,
treeModeLeft: treeModeLeft
}));
});
}
return _react2.default.createElement(
'div',
{ className: 'transfer-list', style: { width: style.width } },
_react2.default.createElement(
'div',
{ className: 'transfer-list__text' },
title
),
_react2.default.createElement('div', { className: 'transfer-list__text-bottom' }),
_react2.default.createElement(
'div',
{ className: 'transfer-list__body', id: "transfer-list__body-" + dire },
!treeMode ? _react2.default.createElement(
'div',
null,
_react2.default.createElement(
_reactSortablejs2.default,
{
options: {
animation: 100,
group: 'transfer',
forceFallback: true,
dataIdAttr: 'data-index',
fallbackClass: "transfer-list__item_fallback",
fallbackTolerance: 0,
chosenClass: 'transfer-list__item_chosen',
ghostClass: 'transfer-list__item_ghost'
},
tag: 'ul',
onChange: this.handleDrop
},
items
)
) : _react2.default.createElement(
'div',
null,
items
)
)
);
}
}]);
return List;
}(_react.Component);
module.exports = List;
var ListItem = function (_Component2) {
(0, _inherits3.default)(ListItem, _Component2);
function ListItem(props) {
(0, _classCallCheck3.default)(this, ListItem);
var _this3 = (0, _possibleConstructorReturn3.default)(this, (ListItem.__proto__ || (0, _getPrototypeOf2.default)(ListItem)).call(this, props));
_this3.handleClick = function (e) {
var isChecked = _this3.state.isChecked;
var treeModeLeft = _this3.props.treeModeLeft;
_this3.setState({ isChecked: !isChecked });
if (_this3.props.active) {
//当前选中状态
_this3.props.cancelSelect(treeModeLeft ? _this3.props.ID : _this3.props.index);
} else {
_this3.props.handleSelect(treeModeLeft ? _this3.props.ID : _this3.props.index);
}
e.stopPropagation();
};
_this3.state = {
isChecked: false
};
return _this3;
}
// componentWillReceiveProps(nextProps) {
// if (nextProps.hasOwnProperty('clicked')) {
// this.setState({ isChecked: nextProps.clicked })
// }
// }
// 选中或取消选中
(0, _createClass3.default)(ListItem, [{
key: 'render',
value: function render() {
var isChecked = this.state.isChecked;
var _props2 = this.props,
text = _props2.text,
index = _props2.index,
dire = _props2.dire,
active = _props2.active,
sideTip = _props2.sideTip,
hiddenTip = _props2.hiddenTip,
treeModeLeft = _props2.treeModeLeft,
clicked = _props2.clicked;
var className = (clicked && !treeModeLeft ? ' transfer-list__item active ' : ' transfer-list__item ') + (treeModeLeft ? ' treeNoHoverColor ' : '');
var checkClass = 'icon-check ' + (!isChecked ? 'sys-icon-Checkbox-nomal ' : 'sys-icon-checked-normal ');
return _react2.default.createElement(
'li',
{
className: (active ? 'transfer-list__item active' : 'transfer-list__item') + className,
onClick: this.handleClick,
'data-index': index,
'data-dire': dire
},
treeModeLeft ? _react2.default.createElement('span', { className: checkClass, onClick: this.handleClick, onMouseOver: this.handleHover, onMouseOut: this.handleMouseOut }) : null,
_react2.default.createElement(
_toolTip2.default,
{ title: (0, _commonFunc.decode)(text), hidden: hiddenTip, side: sideTip },
_react2.default.createElement(
'span',
{ className: 'transfer-list__item__text' },
(0, _commonFunc.decode)(text)
)
),
_react2.default.createElement(
'span',
{ className: 'transfer-list__item__drop-icon' },
_react2.default.createElement('span', null),
_react2.default.createElement('span', null),
_react2.default.createElement('span', null)
)
);
}
}]);
return ListItem;
}(_react.Component);