UNPKG

choerodon-ui

Version:

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

908 lines (752 loc) 33.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _mobxReactLite = require("mobx-react-lite"); var _mobx = require("mobx"); var _raf = _interopRequireDefault(require("raf")); var _classnames = _interopRequireDefault(require("classnames")); var _isNil = _interopRequireDefault(require("lodash/isNil")); var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject")); var _isString = _interopRequireDefault(require("lodash/isString")); var _isObject = _interopRequireDefault(require("lodash/isObject")); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _KeyCode = _interopRequireDefault(require("../../../lib/_util/KeyCode")); var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar")); var _ConfigContext = _interopRequireDefault(require("../../../lib/config-provider/ConfigContext")); var _TableContext = _interopRequireDefault(require("./TableContext")); var _utils = require("./utils"); var _enum = require("../data-set/enum"); var _TableStore = require("./TableStore"); var _enum2 = require("./enum"); var _CheckBox = _interopRequireDefault(require("../check-box/CheckBox")); var _localeContext = require("../locale-context"); var _Button = _interopRequireDefault(require("../button/Button")); var _enum3 = require("../button/enum"); var _enum4 = require("../form/enum"); var _focusable = require("../_util/focusable"); var _SelectionTreeBox = _interopRequireDefault(require("./SelectionTreeBox")); var _utils2 = require("../field/utils"); var _LocaleContext = _interopRequireDefault(require("../locale-context/LocaleContext")); var _isEmpty = _interopRequireDefault(require("../_util/isEmpty")); var _enum5 = require("../core/enum"); var _util = _interopRequireDefault(require("../overflow-tip/util")); var _singleton = require("../tooltip/singleton"); var _useComputed = _interopRequireDefault(require("../use-computed")); var _enum6 = require("../field/enum"); var _utils3 = require("../output/utils"); var _iteratorUtils = require("../_util/iteratorUtils"); var _excluded = ["afterClick"]; var inTab = false; var TableCellInner = function TableCellInner(props) { var column = props.column, record = props.record, children = props.children, style = props.style, disabled = props.disabled, inAggregation = props.inAggregation, prefixCls = props.prefixCls, colSpan = props.colSpan, headerGroup = props.headerGroup, rowGroup = props.rowGroup; var multipleValidateMessageLengthRef = (0, _react.useRef)(0); var tooltipShownRef = (0, _react.useRef)(); var _useContext = (0, _react.useContext)(_ConfigContext["default"]), getTooltip = _useContext.getTooltip, getTooltipTheme = _useContext.getTooltipTheme, getTooltipPlacement = _useContext.getTooltipPlacement; var _useContext2 = (0, _react.useContext)(_TableContext["default"]), pristine = _useContext2.pristine, aggregation = _useContext2.aggregation, inlineEdit = _useContext2.inlineEdit, rowHeight = _useContext2.rowHeight, tableStore = _useContext2.tableStore, dataSet = _useContext2.dataSet, columnEditorBorder = _useContext2.columnEditorBorder, indentSize = _useContext2.indentSize, checkField = _useContext2.checkField, selectionMode = _useContext2.selectionMode; var innerPrefixCls = "".concat(prefixCls, "-inner"); var tooltip = tableStore.getColumnTooltip(column); var name = column.name, key = column.key, lock = column.lock, renderer = column.renderer, command = column.command, align = column.align, tooltipProps = column.tooltipProps; var columnKey = (0, _utils.getColumnKey)(column); var height = record.getState("__column_resize_height_".concat(name)); var currentEditRecord = tableStore.currentEditRecord; var field = dataSet.getField(name); var fieldDisabled = disabled || field && field.get('disabled', record); var innerRef = (0, _react.useRef)(null); var prefixRef = (0, _react.useRef)(null); var _useState = (0, _react.useState)(children ? indentSize * record.level : 0), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), paddingLeft = _useState2[0], setPaddingLeft = _useState2[1]; var columnCommand = (0, _useComputed["default"])(function () { if (typeof command === 'function') { return command({ dataSet: dataSet, record: record, aggregation: aggregation }); } return command; }, [record, command, dataSet, aggregation]); var canFocus = (0, _react.useMemo)(function () { return !fieldDisabled && (!inlineEdit || record === currentEditRecord); }, [fieldDisabled, record, currentEditRecord, inlineEdit]); var cellEditor = (0, _utils.getEditorByColumnAndRecord)(column, record); var cellEditorInCell = (0, _utils.isInCellEditor)(cellEditor); var hasEditor = !pristine && cellEditor && !cellEditorInCell; var showEditor = (0, _react.useCallback)(function (cell) { if (name) { if (!lock && tableStore.overflowX) { var tableBodyWrap = tableStore.virtual ? cell.offsetParent.parentNode.parentNode : cell.offsetParent; if (tableBodyWrap) { var _tableStore$columnGro = tableStore.columnGroups, leftLeafColumnsWidth = _tableStore$columnGro.leftLeafColumnsWidth, rightLeafColumnsWidth = _tableStore$columnGro.rightLeafColumnsWidth; var offsetLeft = cell.offsetLeft, offsetWidth = cell.offsetWidth; var scrollLeft = tableBodyWrap.scrollLeft; var width = Math.round(tableBodyWrap.getBoundingClientRect().width); var leftSide = offsetLeft - leftLeafColumnsWidth; var rightSide = offsetLeft + offsetWidth - width + rightLeafColumnsWidth + (0, _measureScrollbar["default"])(); var sl = scrollLeft; if (sl < rightSide) { sl = rightSide; } if (sl > leftSide) { sl = leftSide; } if (sl !== scrollLeft) { tableBodyWrap.scrollLeft = sl; } } } tableStore.showEditor(name); var editor = tableStore.editors.get(name); if (editor) { if (editor.cellNode) { if (tableStore.inlineEdit) { if (editor.inTab) { editor.inTab = false; } else { editor.focus(); } } else { editor.hideEditor(); } } else if (tableStore.inlineEdit) { editor.focus(); } else { (0, _raf["default"])(function () { editor.alignEditor(!(0, _utils.isStickySupport)() && lock ? (0, _utils.findCell)(tableStore, columnKey, lock, undefined, true) : cell); editor.focus(); }); } } } }, [column, name, columnKey, tableStore]); var handleEditorKeyDown = (0, _react.useCallback)(function (e) { switch (e.keyCode) { case _KeyCode["default"].TAB: { var cell = (0, _utils.findCell)(tableStore, columnKey); if (cell) { if (cell.contains(document.activeElement)) { inTab = true; } else { var node = (0, _focusable.findFirstFocusableElement)(cell); if (node) { inTab = true; node.focus(); } } } break; } default: } }, [tableStore, columnKey]); var handleCommandSave = (0, _react.useCallback)(function () { return dataSet.submit().then(function (result) { if (result !== false) { tableStore.currentEditRecord = undefined; } }); }, [tableStore, dataSet]); var handleCommandCancel = (0, _react.useCallback)(function () { if (record.status === _enum.RecordStatus.add) { dataSet.remove(record); } else { record.reset(); tableStore.currentEditRecord = undefined; } }, [tableStore, record, dataSet]); var handleCommandEdit = (0, _react.useCallback)(function () { if (tableStore.inlineEdit) { tableStore.currentEditRecord = record; } }, [tableStore, record]); var handleCommandDelete = (0, _react.useCallback)(function () { dataSet["delete"](record); }, [dataSet, record]); var multiLine = field && field.get('multiLine', record); var fieldType = !aggregation && rowHeight !== 'auto' && field && field.get('type', record); var rows = multiLine ? (0, _iteratorUtils.iteratorReduce)(dataSet.fields.values(), function (count, dsField) { var bind = dsField.get('bind', record); if (bind && bind.startsWith("".concat(name, "."))) { return count + 1; } return count; }, 0) : 0; var checkBox = function () { if (children) { if (selectionMode === _enum2.SelectionMode.treebox) { return /*#__PURE__*/_react["default"].createElement(_SelectionTreeBox["default"], { record: record }); } if (checkField && !tableStore.hasCheckFieldColumn) { var indeterminate = !dataSet.props.treeCheckStrictly && record.isIndeterminate; return /*#__PURE__*/_react["default"].createElement(_CheckBox["default"], { name: checkField, record: record, disabled: disabled, indeterminate: indeterminate }); } } }(); var renderCommand = (0, _react.useCallback)(function () { var tableCommandProps = tableStore.getConfig('tableCommandProps'); var classString = (0, _classnames["default"])("".concat(prefixCls, "-command"), tableCommandProps && tableCommandProps.className); if (record.editing) { return [/*#__PURE__*/_react["default"].createElement(_Button["default"], (0, _extends2["default"])({}, tableCommandProps, { key: "save", className: classString, onClick: handleCommandSave, funcType: _enum3.FuncType.link }), (0, _localeContext.$l)('Table', 'save_button')), /*#__PURE__*/_react["default"].createElement(_Button["default"], (0, _extends2["default"])({}, tableCommandProps, { key: "cancel", className: classString, onClick: handleCommandCancel, funcType: _enum3.FuncType.link }), (0, _localeContext.$l)('Table', 'cancel_button'))]; } if (columnCommand) { var commands = []; columnCommand.forEach(function (button) { var tableButtonProps = {}; if ((0, _mobx.isArrayLike)(button)) { tableButtonProps = button[1] || {}; button = button[0]; } if ((0, _isString["default"])(button) && button in _enum2.TableCommandType) { var getButtonProps = function getButtonProps(type) { switch (type) { case _enum2.TableCommandType.edit: return { funcType: _enum3.FuncType.link, onClick: handleCommandEdit, disabled: disabled, children: (0, _localeContext.$l)('Table', 'edit_button'), key: 'edit' }; case _enum2.TableCommandType["delete"]: return { funcType: _enum3.FuncType.link, onClick: handleCommandDelete, disabled: disabled, children: (0, _localeContext.$l)('Table', 'delete_button'), key: 'delete' }; default: } }; var defaultButtonProps = getButtonProps(button); if (defaultButtonProps) { var _tableButtonProps = tableButtonProps, afterClick = _tableButtonProps.afterClick, buttonProps = (0, _objectWithoutProperties2["default"])(_tableButtonProps, _excluded); if (afterClick) { var onClick = defaultButtonProps.onClick; defaultButtonProps.onClick = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(e) { return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: e.persist(); _context.prev = 1; _context.next = 4; return onClick(e); case 4: _context.prev = 4; afterClick(e); return _context.finish(4); case 7: case "end": return _context.stop(); } } }, _callee, null, [[1,, 4, 7]]); })); return function (_x) { return _ref.apply(this, arguments); }; }(); } var otherProps = (0, _extends2["default"])({}, defaultButtonProps); commands.push( /*#__PURE__*/_react["default"].createElement(_Button["default"], (0, _extends2["default"])({}, tableCommandProps, otherProps, buttonProps, { className: (0, _classnames["default"])(classString, otherProps.className, buttonProps.className) }))); } } else if ( /*#__PURE__*/(0, _react.isValidElement)(button)) { commands.push( /*#__PURE__*/(0, _react.cloneElement)(button, (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, tableCommandProps), button.props), {}, { className: (0, _classnames["default"])(classString, button.props.className) }))); } else if ((0, _isObject["default"])(button)) { commands.push( /*#__PURE__*/_react["default"].createElement(_Button["default"], (0, _extends2["default"])({}, tableCommandProps, button, { className: (0, _classnames["default"])(classString, button.className) }))); } }); return commands; } }, [tableStore, prefixCls, record, columnCommand, aggregation, disabled, handleCommandEdit, handleCommandDelete, handleCommandSave, handleCommandCancel]); var renderEditor = (0, _react.useCallback)(function () { if ( /*#__PURE__*/(0, _react.isValidElement)(cellEditor)) { /** * 渲染多行编辑器 */ if (multiLine) { return cellEditor; } var newEditorProps = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, cellEditor.props), {}, { record: record, name: name, pristine: pristine, disabled: disabled || inlineEdit && !record.editing, indeterminate: checkField && checkField === name && record.isIndeterminate, labelLayout: _enum4.LabelLayout.none, showHelp: _enum6.ShowHelp.none }); return /*#__PURE__*/(0, _react.cloneElement)(cellEditor, newEditorProps); } }, [disabled, cellEditor, checkField, multiLine, record, name, pristine, inlineEdit]); var cellRenderer = (0, _react.useMemo)(function () { if (columnCommand) { return renderCommand; } if (cellEditorInCell) { return renderEditor; } if (aggregation && renderer) { return function (rendererProps) { return renderer((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, rendererProps), {}, { aggregation: aggregation })); }; } return renderer; }, [columnCommand, cellEditorInCell, renderEditor, renderCommand, renderer, field, aggregation]); var prefixStyle = (0, _react.useMemo)(function () { if (!aggregation || !tableStore.hasAggregationColumn) { if (height !== undefined && rows === 0) { return (0, _objectSpread2["default"])({ height: (0, _UnitConvertor.pxToRem)(height), lineHeight: 1.5 }, style); } if (rowHeight !== 'auto') { var isComboQueryColumn = key === _TableStore.COMBOBAR_KEY; var isCheckBox = fieldType === _enum.FieldType["boolean"] || key === _TableStore.SELECTION_KEY; var multiple = field && field.get('multiple', record); var borderPadding = isCheckBox || multiple || isComboQueryColumn ? 4 : 2; var heightPx = rows > 0 ? (rowHeight + 2) * rows + 1 : rowHeight; var lineHeightPx = hasEditor || isCheckBox || multiple || isComboQueryColumn ? rowHeight - borderPadding : rowHeight; return (0, _objectSpread2["default"])({ height: (0, _UnitConvertor.pxToRem)(heightPx), lineHeight: rows > 0 ? 'inherit' : (0, _UnitConvertor.pxToRem)(lineHeightPx) }, style); } } return style; }, [fieldType, key, rows, rowHeight, height, style, aggregation, hasEditor]); var textAlign = (0, _react.useMemo)(function () { return align || (columnCommand ? _enum2.ColumnAlign.center : tableStore.getConfig('tableColumnAlign')(column, field, record)); }, [columnCommand, align, column, field, record]); var colSpanStyle = (0, _react.useMemo)(function () { return colSpan && colSpan > 1 && (textAlign === _enum2.ColumnAlign.right || textAlign === _enum2.ColumnAlign.center) ? { width: "calc(100% - ".concat((0, _UnitConvertor.pxToRem)(30), ")") } : {}; }, [colSpan, textAlign]); var innerStyle = (0, _react.useMemo)(function () { if (inAggregation) { return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, prefixStyle), colSpanStyle); } return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({ textAlign: textAlign }, prefixStyle), colSpanStyle); }, [inAggregation, textAlign, prefixStyle, colSpanStyle]); var value = name ? pristine ? record.getPristineValue(name) : record.get(name) : undefined; var renderValidationResult = (0, _react.useCallback)(function (validationResult) { if (validationResult && validationResult.validationMessage) { var validationMessage = validationResult.validationMessage; if (name) { var editor = tableStore.editors.get(name); if (editor && editor.editorProps && typeof editor.editorProps.validationRenderer === 'function') { var validationRenderer = editor.editorProps.validationRenderer; validationMessage = validationRenderer(validationResult, validationResult.validationProps); if ((0, _isNil["default"])(validationMessage)) { return; } } } return (0, _utils2.renderValidationMessage)(validationMessage, true, tableStore.getProPrefixCls); } }, [name, tableStore.editors]); var isValidationMessageHidden = (0, _react.useCallback)(function (message) { return !message || pristine; }, [pristine]); var editorBorder = !inlineEdit && hasEditor; var processValue = function processValue(v) { if (!(0, _isNil["default"])(v)) { var _text = (0, _isPlainObject["default"])(v) ? v : (0, _utils2.processValue)(v, { dateFormat: (0, _utils2.getDateFormatByField)(field, undefined, record), showInvalidDate: tableStore.getConfig('showInvalidDate'), isNumber: [_enum.FieldType.number, _enum.FieldType.currency, _enum.FieldType.bigNumber].includes(fieldType), precision: field && field.get('precision', record), useZeroFilledDecimal: tableStore.getConfig('useZeroFilledDecimal') }); return (0, _utils2.processFieldValue)(_text, field, { getProp: function getProp(propName) { return field && field.get(propName, record); }, lang: dataSet && dataSet.lang || _LocaleContext["default"].locale.lang }, true, record, tableStore.getConfig); } return ''; }; var processRenderer = function processRenderer(value, repeat) { var processedValue; if (field && (field.getLookup(record) || field.get('options', record) || field.get('lovCode', record))) { if ((0, _mobx.isArrayLike)(value)) { var isCascader = !field.get('multiple', record) || value.some(function (v) { return (0, _mobx.isArrayLike)(v); }); processedValue = value.map(function (v) { return field.getText(v, undefined, record); }).join(isCascader ? '/' : '、'); } else { processedValue = field.getText(value, undefined, record); } } // 值集中不存在 再去取直接返回的值 var text = (0, _isNil["default"])(processedValue) ? processValue(value) : processedValue; return (cellRenderer || _utils3.defaultOutputRenderer)({ value: value, text: text, record: record, dataSet: dataSet, name: name, repeat: repeat, headerGroup: headerGroup, rowGroup: rowGroup }); }; var getRenderedValue = function getRenderedValue() { if (field) { if (!cellEditorInCell) { var multiple = field.get('multiple', record); var range = field.get('range', record); var tagRenderer = tableStore.getColumnTagRenderer(column); if (multiple) { var _renderMultipleValues = (0, _utils2.renderMultipleValues)(value, { disabled: disabled, readOnly: true, range: range, prefixCls: prefixCls, tagRenderer: tagRenderer, processRenderer: processRenderer, renderValidationResult: renderValidationResult, isValidationMessageHidden: isValidationMessageHidden, showValidationMessage: function showValidationMessage(e, message) { return (0, _utils2.showValidationMessage)(e, message, getTooltipTheme('validation'), getTooltipPlacement('validation'), tableStore.getConfig); }, validationResults: field.getValidationErrorValues(record), rangeSeparator: tableStore.getConfig('rangeSeparator') }), tags = _renderMultipleValues.tags, multipleValidateMessageLength = _renderMultipleValues.multipleValidateMessageLength, _isOverflowMaxTagCount = _renderMultipleValues.isOverflowMaxTagCount; multipleValidateMessageLengthRef.current = multipleValidateMessageLength; return { result: tags, isOverflowMaxTagCount: _isOverflowMaxTagCount }; } if (range) { return { result: (0, _utils2.renderRangeValue)((0, _utils2.toRangeValue)(value, range), { processRenderer: processRenderer }) }; } } if (field.get('multiLine', record)) { var _renderMultiLine = (0, _utils2.renderMultiLine)({ name: name, field: field, record: record, dataSet: dataSet, prefixCls: innerPrefixCls, renderer: cellRenderer, renderValidationResult: renderValidationResult, isValidationMessageHidden: isValidationMessageHidden, processValue: processValue, tooltip: tooltip, labelTooltip: getTooltip('label') }), lines = _renderMultiLine.lines, _multipleValidateMessageLength = _renderMultiLine.multipleValidateMessageLength; multipleValidateMessageLengthRef.current = _multipleValidateMessageLength; return lines; } } var textNode = processRenderer(value); return { result: textNode === '' ? tableStore.getConfig('tableDefaultRenderer') : textNode }; }; var _getRenderedValue = getRenderedValue(), result = _getRenderedValue.result, isOverflowMaxTagCount = _getRenderedValue.isOverflowMaxTagCount; var text = (0, _isEmpty["default"])(result) || (0, _mobx.isArrayLike)(result) && !result.length ? editorBorder ? undefined : tableStore.getConfig('renderEmpty')('Output') : result; var handleFocus = (0, _react.useCallback)(function (e) { if (canFocus) { handleMouseEnter(e); if (key !== _TableStore.SELECTION_KEY) { dataSet.current = record; } if (hasEditor && !tableStore.shiftKey) { showEditor(e.currentTarget); } if (!(0, _utils.isStickySupport)() && (key === _TableStore.SELECTION_KEY || !hasEditor)) { var cell = (0, _utils.findCell)(tableStore, columnKey, lock); if (cell && !cell.contains(document.activeElement)) { var node = (0, _focusable.findFirstFocusableElement)(cell); if (node && !inTab) { node.focus(); } } } } inTab = false; }, [tableStore, dataSet, record, lock, columnKey, canFocus, hasEditor, showEditor, text]); var showTooltip = (0, _react.useCallback)(function (e) { if (field && !(multipleValidateMessageLengthRef.current > 0 || !field.get('validator', record) && field.get('multiple', record) && (0, _utils2.toMultipleValue)(value, field.get('range', record)).length)) { var validationResults = field.getValidationErrorValues(record); var message = validationResults && !!validationResults.length && renderValidationResult(validationResults[0]); if (!isValidationMessageHidden(message)) { (0, _utils2.showValidationMessage)(e, message, getTooltipTheme('validation'), getTooltipPlacement('validation'), tableStore.getConfig); return true; } } var element = e.currentTarget; if (element && !multiLine && (tooltip === _enum5.Tooltip.always || tooltip === _enum5.Tooltip.overflow && (0, _util["default"])(element)) || isOverflowMaxTagCount) { var current = innerRef.current; if (text && current && current.contains(element)) { var tooltipConfig = (0, _isObject["default"])(tooltipProps) ? tooltipProps : {}; var getMultipleText = function getMultipleText() { var values = field ? (0, _utils2.toMultipleValue)(value, field.get('range', record)) : []; var repeats = new Map(); var texts = values.map(function (v) { var key = (0, _utils2.getValueKey)(v); var repeat = repeats.get(key) || 0; var text = processRenderer(v); repeats.set(key, repeat + 1); if (!(0, _isNil["default"])(text)) { return text; } return undefined; }); return texts.join('、'); }; var duration = (tooltipConfig.mouseEnterDelay || 0.1) * 1000; (0, _singleton.show)(element, (0, _objectSpread2["default"])({ title: isOverflowMaxTagCount ? getMultipleText() : text, placement: getTooltipPlacement('table-cell') || 'right', theme: getTooltipTheme('table-cell') }, tooltipConfig), duration); return true; } } return false; }, [getTooltipTheme, getTooltipPlacement, renderValidationResult, isValidationMessageHidden, field, record, tooltip, multiLine, text, innerRef]); var handleMouseEnter = (0, _react.useCallback)(function (e) { if (!tableStore.columnResizing && !tooltipShownRef.current && showTooltip(e)) { tooltipShownRef.current = true; } }, [tooltipShownRef, tableStore, showTooltip]); var handleMouseLeave = (0, _react.useCallback)(function () { if (!tableStore.columnResizing && tooltipShownRef.current) { var tooltipConfig = (0, _isObject["default"])(tooltipProps) ? tooltipProps : {}; var duration = (tooltipConfig.mouseLeaveDelay || 0.1) * 1000; (0, _singleton.hide)(duration); tooltipShownRef.current = false; } }, [tooltipShownRef, tableStore]); (0, _react.useEffect)(function () { if (name && inlineEdit && record === currentEditRecord) { var currentEditor = tableStore.editors.get(name); if (currentEditor) { currentEditor.alignEditor(); } return function () { if (currentEditor) { currentEditor.hideEditor(); } }; } }, []); (0, _react.useEffect)(function () { return function () { if (tooltipShownRef.current) { (0, _singleton.hide)(); tooltipShownRef.current = false; } }; }, [tooltipShownRef]); (0, _react.useLayoutEffect)(function () { var current = innerRef.current; var activeEmptyCell = tableStore.activeEmptyCell; if (current && activeEmptyCell && activeEmptyCell.dataset.index === name && tableStore.dataSet.current === record) { delete tableStore.activeEmptyCell; if (current.tabIndex === -1) { var firstFocusableElement = (0, _focusable.findFirstFocusableElement)(current); if (firstFocusableElement) { firstFocusableElement.focus(); } } else { current.focus(); } } }, [record]); var innerProps = { tabIndex: hasEditor && canFocus ? 0 : -1, onFocus: handleFocus, children: text, ref: innerRef }; var empty = field ? (0, _utils2.isFieldValueEmpty)(value, field.get('range', record), field.get('multiple', record), field.get('type', record) === _enum.FieldType.object ? field.get('valueField', record) : undefined, field.get('type', record) === _enum.FieldType.object ? field.get('textField', record) : undefined) : false; var innerClassName = [innerPrefixCls]; if (columnEditorBorder) { innerClassName.push("".concat(prefixCls, "-inner-bordered")); } if (editorBorder) { innerClassName.push("".concat(prefixCls, "-inner-editable")); } var highlight; var inValid; if (field) { if (!pristine && field.isDirty(record)) { innerClassName.push("".concat(prefixCls, "-inner-dirty")); } if (!inlineEdit && !cellEditorInCell) { inValid = !field.isValid(record); field.get('required', record); if (inValid) { innerClassName.push("".concat(prefixCls, "-inner-invalid")); } } if (editorBorder) { if (field.get('required', record) && (empty || !tableStore.getConfig('showRequiredColorsOnlyEmpty'))) { innerClassName.push("".concat(prefixCls, "-inner-required")); } highlight = field.get('highlight', record); if (highlight) { innerClassName.push("".concat(prefixCls, "-inner-highlight")); } } } if (fieldDisabled) { innerClassName.push("".concat(prefixCls, "-inner-disabled")); } if (multiLine) { innerClassName.push("".concat(prefixCls, "-inner-multiLine")); } if (!(0, _utils.isStickySupport)() && !hasEditor) { innerProps.onKeyDown = handleEditorKeyDown; } if (inValid || tooltip) { innerProps.onMouseEnter = handleMouseEnter; innerProps.onMouseLeave = handleMouseLeave; } if (rowHeight === 'auto') { innerClassName.push("".concat(prefixCls, "-inner-auto-height")); } else { innerClassName.push("".concat(prefixCls, "-inner-row-height-fixed")); } if (height !== undefined && rows === 0) { innerClassName.push("".concat(prefixCls, "-inner-fixed-height")); } if ((0, _isString["default"])(innerProps.children) && innerProps.children.includes('\n') && (rowHeight === 'auto' || height !== undefined && rows === 0)) { innerClassName.push("".concat(prefixCls, "-inner-pre")); } (0, _react.useEffect)(function () { // 兼容Table Tree模式嵌套过深样式 var current = prefixRef.current; if (current && paddingLeft !== 0) { var parentElement = current.parentElement, prefixWidth = current.offsetWidth; if (parentElement) { var parentWidth = parentElement.clientWidth; if (prefixWidth > parentWidth) { setPaddingLeft(Math.max(paddingLeft - (prefixWidth - parentWidth), 0)); } } } }, [prefixRef, paddingLeft, setPaddingLeft]); var indentText = children && /*#__PURE__*/_react["default"].createElement("span", { style: { paddingLeft: (0, _UnitConvertor.pxToRem)(paddingLeft) } }); var prefix = children && /*#__PURE__*/_react["default"].createElement("span", { key: "prefix", className: "".concat(prefixCls, "-prefix"), style: prefixStyle, ref: prefixRef }, indentText, children, checkBox); var output = /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({ key: "output" }, innerProps, { style: innerStyle, className: innerClassName.join(' ') })); return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, prefix, highlight ? (column.highlightRenderer || tableStore.cellHighlightRenderer)((0, _utils2.transformHighlightProps)(highlight, { dataSet: dataSet, record: record, name: name }), output) : output); }; TableCellInner.displayName = 'TableCellInner'; var _default = (0, _mobxReactLite.observer)(TableCellInner); exports["default"] = _default; //# sourceMappingURL=TableCellInner.js.map