UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

136 lines (132 loc) 4.27 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _ahooks = require("ahooks"); var _lodash = require("lodash"); var _inputDataEdit = _interopRequireDefault(require("./inputDataEdit")); const SheelTabelCell = props => { const { record, col, rowKey, children, rowIndex, colIndex, onMouseDown, onMouseOver, isSelected, selectIng, onContextMenu, onDoubleClick, dataSourceChange, ...restProps } = props; const { onMouseEnter, onMouseLeave, ...clearProps } = restProps; const { isSelected: _selected = false, isEnd = false, isRightEnd = false, isEditing = false, isVaildCommit = false, selectedReadonly = false } = isSelected?.(rowIndex, colIndex) || {}; const [value, setValue] = (0, _react.useState)(record?.[col?.dataIndex] || ''); const valueRef = (0, _react.useRef)(record?.[col?.dataIndex] || ''); const endCellRef = (0, _react.useRef)(null); (0, _ahooks.useUpdateEffect)(() => { valueRef.current = value; }, [value]); (0, _ahooks.useUpdateEffect)(() => { if (value !== record?.[col?.dataIndex]) { setValue(record?.[col?.dataIndex]); } }, [record]); /** 鼠标点击 */ const handleMouseDown = e => { if (e.button === 2) { console.log('点击了右键'); } else if (!col?.disableEvents) { onMouseDown?.(rowIndex, colIndex, e, !!endCellRef?.current?.contains(e.target)); } }; /** 鼠标右键 */ const handleContextMenu = e => { if (col && !col.disableEvents) { onContextMenu?.(e, rowIndex, colIndex); } }; /** 鼠标松开 */ const handleMouseOver = e => { if (!col?.disableEvents) { onMouseOver?.(rowIndex, colIndex); } }; /** 双击 */ const handleDoubleClick = e => { /** 当行数据中带内部关键词_group时,认为当前双击的是分组行,不允许进行编辑 */ if (!col?.disableEvents && !record?._group) { onDoubleClick?.(rowIndex, colIndex, col); } }; const renderComponent = () => { const { component, readOnly } = col || {}; if (isEditing && !readOnly) { return component || null; } return null; }; const saveRenderValue = () => { if (valueRef.current !== record?.[col?.dataIndex]) { dataSourceChange?.(rowIndex, colIndex, valueRef.current, { ...record, [col.dataIndex]: valueRef.current }); } }; const renderEditor = () => { if (isEditing) { const Editor = col?.dataEditor || _inputDataEdit.default; return /*#__PURE__*/_react.default.createElement(Editor, { cell: col, row: rowIndex, col: colIndex, value: value, onChange: value => { setValue(value); }, handleSave: saveRenderValue }); } return null; }; const renderViewer = children; const content = renderComponent() || renderEditor() || renderViewer; return /*#__PURE__*/_react.default.createElement("td", (0, _extends2.default)({}, (0, _lodash.omit)(clearProps, ['commitIng', 'editIng']), { // style={{ userSelect: 'none' }} className: (0, _classnames.default)(colIndex === undefined && `${'row_selection_td'}`, 'unselection', _selected && selectIng && 'selected', isEnd && 'end', isRightEnd && 'right_end', isEditing && 'editing', isVaildCommit && 'commiting', selectedReadonly && 'readonly_red'), onMouseDown: handleMouseDown, onMouseOver: handleMouseOver, onContextMenu: handleContextMenu, onDoubleClick: handleDoubleClick, key: `${rowIndex}_${colIndex}` }), content, isRightEnd && isEnd && !isEditing && /*#__PURE__*/_react.default.createElement("div", { ref: endCellRef, className: "lmtable_cell_end_icon" })); }; var _default = SheelTabelCell; exports.default = _default;