UNPKG

@bigfishtv/cockpit

Version:

136 lines (110 loc) 4.7 kB
'use strict'; exports.__esModule = true; exports.default = undefined; var _dec, _class, _class2, _temp; var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactImmutableProptypes = require('react-immutable-proptypes'); var _reactImmutableProptypes2 = _interopRequireDefault(_reactImmutableProptypes); var _reactDnd = require('react-dnd'); var _treeUtils = require('../../utils/treeUtils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: 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) : subClass.__proto__ = superClass; } /** * Wrapper for TreeItem being dragged */ var TreeDragLayer = (_dec = (0, _reactDnd.DragLayer)(function (monitor) { return { item: monitor.getItem(), itemType: monitor.getItemType(), initialOffset: monitor.getInitialSourceClientOffset(), currentOffset: monitor.getSourceClientOffset() }; }), _dec(_class = (_temp = _class2 = function (_Component) { _inherits(TreeDragLayer, _Component); function TreeDragLayer() { _classCallCheck(this, TreeDragLayer); var _this = _possibleConstructorReturn(this, _Component.call(this)); _this.state = { title: '', count: 0 }; return _this; } TreeDragLayer.prototype.componentWillUpdate = function componentWillUpdate(nextProps, nextState) { if (!this.props.dragging && nextProps.dragging) { var selectedIds = nextProps.selectedIds, InflatedTree = nextProps.InflatedTree; var title = ''; var count = 0; if (selectedIds.length == 1) { var item = (0, _treeUtils.getChildByIdImmutable)(selectedIds[0], InflatedTree).toObject(); title = item.title || item.name; } else if (selectedIds.length > 1) { var titles = selectedIds.map(function (id) { var item = (0, _treeUtils.getChildByIdImmutable)(id, InflatedTree).toObject(); return item.title || item.name; }); count = selectedIds.length; title = titles.join(', '); } this.setState({ title: title, count: count }); } }; TreeDragLayer.prototype.render = function render() { var _props = this.props, initialOffset = _props.initialOffset, currentOffset = _props.currentOffset, dragging = _props.dragging; if (!dragging || !initialOffset || !currentOffset) return null; var title = this.state.title; var count = this.state.count; var transform = 'translate(' + currentOffset.x + 'px, ' + currentOffset.y + 'px)'; var styles = { transform: transform, WebkitTransform: transform }; return _react2.default.createElement( 'div', { className: 'tree-overlay' }, _react2.default.createElement( 'div', { className: 'tree-node', style: styles }, _react2.default.createElement( 'div', { className: 'tree-cell' }, count > 1 && _react2.default.createElement( 'div', { className: 'tree-cell-count' }, count ), _react2.default.createElement( 'div', { className: 'tree-cell-title' }, title ) ) ) ); }; return TreeDragLayer; }(_react.Component), _class2.propTypes = { /** disregard - provided by react-dnd */ initialOffset: _propTypes2.default.shape({ x: _propTypes2.default.number.isRequired, y: _propTypes2.default.number.isRequired }), /** disregard - provided by react-dnd */ currentOffset: _propTypes2.default.shape({ x: _propTypes2.default.number.isRequired, y: _propTypes2.default.number.isRequired }), /** if item is being dragged */ dragging: _propTypes2.default.bool, /** list of ids for selected items */ selectedIds: _propTypes2.default.array, /** immutable tree, list of maps of list of maps etc. */ InflatedTree: _reactImmutableProptypes2.default.listOf(_reactImmutableProptypes2.default.map) }, _temp)) || _class); exports.default = TreeDragLayer;