@6thquake/react-material
Version:
React components that implement Google's Material Design.
128 lines (99 loc) • 3.58 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireDefault(require("react"));
var _reactDom = _interopRequireDefault(require("react-dom"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactDnd = require("react-dnd");
var _CrossTabulationColumn = _interopRequireDefault(require("./CrossTabulationColumn"));
var _CrossTabulationUtilities = require("./CrossTabulationUtilities");
/**
* @ignore - do not document.
*/
var ItemTypes = {
FILTER: 'filterBox',
COLUMN: 'column',
CHIP: 'chip'
};
var columnTarget = {
drop: function drop(props, monitor, component) {
// 获取正在拖放的数据
var item = monitor.getItem(); // 更新组件状态
var items = component.state.items;
items.push(item.name);
component.setState({
items: items
});
component.props.onDrop(items);
}
};
function chipDropcollect(connect, monitor) {
return {
connectDropTarget: connect.dropTarget()
};
}
/**
* @ignore - internal component.
*/
var DropZone =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(DropZone, _React$Component);
function DropZone(props) {
var _this;
(0, _classCallCheck2.default)(this, DropZone);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(DropZone).call(this, props));
_this.dragOut = function (val) {
return function () {
var items = _this.state.items;
var index = items.indexOf(val);
if (index > -1) {
items.splice(index, 1);
_this.setState({
items: items
});
}
};
};
_this.state = {
items: props.items
};
return _this;
}
(0, _createClass2.default)(DropZone, [{
key: "render",
value: function render() {
var _this2 = this;
var connectDropTarget = this.props.connectDropTarget;
return connectDropTarget(_react.default.createElement("div", {
style: {
display: 'inline-block',
width: '100%',
height: '100%'
}
}, this.state.items.map(function (value, index) {
return _react.default.createElement(_CrossTabulationColumn.default, (0, _extends2.default)({
name: value,
key: value,
attrValues: _this2.props.attrValuess[value],
valueFilter: _this2.props.valueFilters[value] || {},
zIndex: _this2.props.zIndices[value] || _this2.props.maxZIndex,
sorter: (0, _CrossTabulationUtilities.getSort)(_this2.props.sorters, value),
dragOut: _this2.dragOut(value).bind(_this2)
}, _this2.props));
})));
}
}]);
return DropZone;
}(_react.default.Component);
var _default = (0, _reactDnd.DropTarget)(ItemTypes.CHIP, columnTarget, chipDropcollect)(DropZone);
exports.default = _default;