UNPKG

@aliretail/react-materials-components

Version:
145 lines (114 loc) 5.03 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _tree = _interopRequireDefault(require("@alifd/next/lib/tree")); var _button = _interopRequireDefault(require("@alifd/next/lib/button")); var _icon = _interopRequireDefault(require("@alifd/next/lib/icon")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _overlay = _interopRequireDefault(require("@alifd/next/lib/overlay")); var React = _interopRequireWildcard(require("react")); var _util = require("./util"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var Popup = _overlay["default"].Popup; var modClassName = 'aliretail-table-column-picker'; var ColumnPicker = /*#__PURE__*/function (_React$Component) { (0, _inheritsLoose2["default"])(ColumnPicker, _React$Component); function ColumnPicker(props) { var _this; _this = _React$Component.call(this, props) || this; _this.onDrop = function (info) { if (!info.dragNode) { return; } var dragKey = info.dragNode.props.eventKey; var dropKey = info.node.props.eventKey; var dropPosition = info.dropPosition; var loop = function loop(data, key, callback) { data.forEach(function (item, index, arr) { if ((0, _util.getColumnKey)(item) === key) { return callback(item, index, arr); } if (item.children) { return loop(item.children, key, callback); } }); }; var data = [].concat(_this.props.dataSource); var dragObj; // 拖拽走了哪一个节点,删除此节点 loop(data, dragKey, function (item, index, arr) { arr.splice(index, 1); dragObj = item; }); if (info.dropPosition === 0) { loop(data, dropKey, function (item) { item.children = item.children || []; item.children.push(dragObj); }); } else { var ar; var i; loop(data, dropKey, function (item, index, arr) { ar = arr; i = index; }); if (dropPosition === -1) { ar.splice(i, 0, dragObj); } else { ar.splice(i + 1, 0, dragObj); } } _this.props.onColumnChange(data); }; _this.handleSelect = function (selectedKeys) { _this.props.onVisibleChange(selectedKeys); }; _this.state = { dataSource: (0, _util.tableSourceToTreeSource)(props.dataSource) }; return _this; } ColumnPicker.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps) { return { dataSource: (0, _util.tableSourceToTreeSource)(nextProps.dataSource) }; }; var _proto = ColumnPicker.prototype; _proto.render = function render() { var value = this.props.value; var dataSource = this.state.dataSource; var trigger = /*#__PURE__*/React.createElement(_button["default"], { text: true, size: "large" }, /*#__PURE__*/React.createElement(_icon["default"], { type: "list" })); return /*#__PURE__*/React.createElement(Popup, { className: modClassName, trigger: trigger, container: function container(triggerNode) { return triggerNode.parentNode; }, triggerType: "click", align: "tr br" }, /*#__PURE__*/React.createElement("div", { className: modClassName + "-popup" }, /*#__PURE__*/React.createElement(_tree["default"], { style: { textAlign: 'left' }, checkable: true, selectable: false, defaultExpandAll: true, defaultCheckedKeys: value, draggable: true, onDrop: this.onDrop, onCheck: this.handleSelect, dataSource: dataSource }))); }; return ColumnPicker; }(React.Component); var _default = ColumnPicker; exports["default"] = _default;