UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

212 lines (173 loc) 6.64 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _mobx = require("mobx"); var _mobxReactLite = require("mobx-react-lite"); var _reactBeautifulDnd = require("react-beautiful-dnd"); var _sortBy = _interopRequireDefault(require("lodash/sortBy")); var _Group = _interopRequireDefault(require("./Group")); var _localeContext = require("../../../locale-context"); var _ItemTitle = _interopRequireDefault(require("./ItemTitle")); var _TableContext = _interopRequireDefault(require("../../TableContext")); var _ItemSuffix = _interopRequireDefault(require("./ItemSuffix")); var ColumnGroups = function ColumnGroups(props) { var dataSet = props.dataSet; var groupedTreeRecords = dataSet.groupedTreeRecords; var _useContext = (0, _react.useContext)(_TableContext["default"]), _useContext$tableStor = _useContext.tableStore, columnDraggable = _useContext$tableStor.columnDraggable, prefixCls = _useContext$tableStor.proPrefixCls; var groups = (0, _react.useMemo)(function () { var array = [{ value: 'left', records: [] }, { value: 'right', records: [] }, { value: false, records: [] }]; return array.map(function (group) { var value = group.value; var found = groupedTreeRecords.find(function (item) { return value === item.value; }); if (found) { group.records = _mobx.observable.array((0, _sortBy["default"])(found.records, [function (r) { return r.get('sort'); }])); } else { group.records = _mobx.observable.array(); } return group; }); }, [groupedTreeRecords]); var handleDragTree = (0, _react.useCallback)((0, _mobx.action)(function (srcIndex, destIndex, srcLock, destLock) { var srcGroup = groups.find(function (group) { return String(group.value) === srcLock; }); if (srcGroup) { var records = srcGroup.records; var _records$splice = records.splice(srcIndex, 1), _records$splice2 = (0, _slicedToArray2["default"])(_records$splice, 1), removed = _records$splice2[0]; if (srcLock === destLock) { records.splice(destIndex, 0, removed); records.forEach(function (r, index) { r.set('sort', index); }); } else { removed.set('fixed', destLock === 'false' ? false : destLock); var destGroup = groups.find(function (group) { return String(group.value) === destLock; }); if (destGroup) { var destRecords = destGroup.records; if (destRecords.length) { destRecords.splice(destIndex, 0, removed); } else { destRecords.push(removed); } records.forEach(function (r, index) { r.set('sort', index); }); destRecords.forEach(function (r, index) { r.set('sort', index); }); } } } }), [groups]); var handleDragTreeNode = (0, _react.useCallback)((0, _mobx.action)(function (srcIndex, destIndex, parentId) { var parent = dataSet.find(function (r) { return String(r.key) === parentId; }); if (parent) { var children = parent.children; if (children) { var records = (0, _sortBy["default"])(children, [function (r) { return r.get('sort'); }]); var _records$splice3 = records.splice(srcIndex, 1), _records$splice4 = (0, _slicedToArray2["default"])(_records$splice3, 1), removed = _records$splice4[0]; records.splice(destIndex, 0, removed); records.forEach(function (r, index) { r.set('sort', index); }); } } }), [dataSet]); var handleDragEnd = (0, _react.useCallback)(function (_ref) { var destination = _ref.destination, _ref$source = _ref.source, srcDroppableId = _ref$source.droppableId, srcIndex = _ref$source.index; if (destination) { var destDroppableId = destination.droppableId, destIndex = destination.index; var dest = destDroppableId.split('__--__'); var src = srcDroppableId.split('__--__'); if (srcIndex !== destIndex || src[1] !== dest[1]) { if (dest[0] === 'tree' && src[0] === 'tree') { handleDragTree(srcIndex, destIndex, src[1], dest[1]); } else if (dest[0] === 'treenode' && src[0] === 'treenode') { handleDragTreeNode(srcIndex, destIndex, src[1]); } } } }, [handleDragTree, handleDragTreeNode]); var treeNodeRenderer = (0, _react.useCallback)(function (record, provided) { return /*#__PURE__*/_react["default"].createElement(_ItemTitle["default"], { record: record, provided: provided }); }, []); var treeNodeSuffix = (0, _react.useCallback)(function (record, index, records) { return /*#__PURE__*/_react["default"].createElement(_ItemSuffix["default"], { record: record, index: index, records: records, groups: groups }); }, [groups]); function getGroupHeader(lock) { switch (lock) { case 'left': return (0, _localeContext.$l)('Table', 'left_lock'); case 'right': return (0, _localeContext.$l)('Table', 'right_lock'); default: return (0, _localeContext.$l)('Table', 'unlocked'); } } var groupNodes = groups.map(function (_ref2) { var value = _ref2.value, records = _ref2.records; return /*#__PURE__*/_react["default"].createElement(_Group["default"], { key: String(value), value: value, header: getGroupHeader(value), records: records, onDragEnd: handleDragEnd, treeNodeRenderer: treeNodeRenderer, treeNodeSuffix: treeNodeSuffix }); }); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-customization-panel-content") }, columnDraggable ? /*#__PURE__*/_react["default"].createElement(_reactBeautifulDnd.DragDropContext, { onDragEnd: handleDragEnd }, groupNodes) : groupNodes); }; ColumnGroups.displayName = 'ColumnGroups'; var _default = (0, _mobxReactLite.observer)(ColumnGroups); exports["default"] = _default; //# sourceMappingURL=index.js.map