UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

118 lines (111 loc) 3.02 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _core = require("@dnd-kit/core"); var _modifiers = require("@dnd-kit/modifiers"); var _sortable = require("@dnd-kit/sortable"); var _lodash = require("lodash"); var _ = require("../../.."); require("./index.less"); /* eslint-disable no-unused-vars */ const DragOver = /*#__PURE__*/_react.default.memo(({ instance }) => { const { isDragging, activeId, rowKey, options, columns } = instance; const item = activeId && options.find(v => v[rowKey] === activeId); const filterCol = columns?.filter(item => (0, _lodash.omit)(item, 'onCell')); return /*#__PURE__*/_react.default.createElement(_core.DragOverlay, { adjustScale: false }, isDragging ? /*#__PURE__*/_react.default.createElement("div", { className: "lm_editable_darg_item", style: { width: instance.tableWidth, backgroundColor: '#fff', overflowX: 'hidden' } }, /*#__PURE__*/_react.default.createElement(_.Table, { columns: filterCol || [], showHeader: false, style: { overflow: 'hidden' }, pagination: false, dataSource: [item] })) : null); }); // 可拖拽容器 const DndContainer = ({ children, options, move, rowKey, items, tableWidth, columns }) => { const [isDragging, setIsDragging] = _react.default.useState(false); // 是否拖拽中 const [activeId, setActiveId] = _react.default.useState(null); // 是否拖拽中 const sensors = (0, _core.useSensors)((0, _core.useSensor)(_core.PointerSensor), (0, _core.useSensor)(_core.KeyboardSensor, { coordinateGetter: _sortable.sortableKeyboardCoordinates })); // 开始拖拽 const handleDragStart = ({ active }) => { setIsDragging(true); if (!active) { return; } setActiveId(active.id); }; // 拖拽结束 const handleDragEnd = event => { const { active, over } = event; setActiveId(null); // 未移入时触发 if (!over?.id) { return; } // 移入时触发更新数据 if (active.id !== over.id) { move?.(active.id, over.id); } }; // @ts-ignore const instance = { isDragging, activeId, options, rowKey, children, move, items, tableWidth, columns }; return /*#__PURE__*/_react.default.createElement(_core.DndContext, { sensors: sensors, onDragStart: handleDragStart, onDragCancel: () => setActiveId(null), collisionDetection: _core.closestCenter, onDragEnd: handleDragEnd, modifiers: [_modifiers.restrictToParentElement, _modifiers.restrictToVerticalAxis] }, children, /*#__PURE__*/_react.default.createElement(DragOver, { instance: instance })); }; var _default = /*#__PURE__*/(0, _react.memo)(DndContainer); exports.default = _default;