index.js 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. var _typeof3 = require("@babel/runtime/helpers/typeof");
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = void 0;
  8. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  9. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  10. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  11. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  12. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  13. var _context = require("@rc-component/context");
  14. var _classnames = _interopRequireDefault(require("classnames"));
  15. var React = _interopRequireWildcard(require("react"));
  16. var _TableContext = _interopRequireDefault(require("../context/TableContext"));
  17. var _useRenderTimes = _interopRequireDefault(require("../hooks/useRenderTimes"));
  18. var _useCellRender3 = _interopRequireDefault(require("./useCellRender"));
  19. var _useHoverState3 = _interopRequireDefault(require("./useHoverState"));
  20. var _rcUtil = require("rc-util");
  21. function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
  22. function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
  23. var getTitleFromCellRenderChildren = function getTitleFromCellRenderChildren(_ref) {
  24. var ellipsis = _ref.ellipsis,
  25. rowType = _ref.rowType,
  26. children = _ref.children;
  27. var title;
  28. var ellipsisConfig = ellipsis === true ? {
  29. showTitle: true
  30. } : ellipsis;
  31. if (ellipsisConfig && (ellipsisConfig.showTitle || rowType === 'header')) {
  32. if (typeof children === 'string' || typeof children === 'number') {
  33. title = children.toString();
  34. } else if ( /*#__PURE__*/React.isValidElement(children) && typeof children.props.children === 'string') {
  35. title = children.props.children;
  36. }
  37. }
  38. return title;
  39. };
  40. function Cell(props) {
  41. var _ref2, _ref3, _legacyCellProps$colS, _ref4, _ref5, _legacyCellProps$rowS, _additionalProps$titl, _classNames;
  42. if (process.env.NODE_ENV !== 'production') {
  43. (0, _useRenderTimes.default)(props);
  44. }
  45. var Component = props.component,
  46. children = props.children,
  47. ellipsis = props.ellipsis,
  48. scope = props.scope,
  49. prefixCls = props.prefixCls,
  50. className = props.className,
  51. align = props.align,
  52. record = props.record,
  53. render = props.render,
  54. dataIndex = props.dataIndex,
  55. renderIndex = props.renderIndex,
  56. shouldCellUpdate = props.shouldCellUpdate,
  57. index = props.index,
  58. rowType = props.rowType,
  59. colSpan = props.colSpan,
  60. rowSpan = props.rowSpan,
  61. fixLeft = props.fixLeft,
  62. fixRight = props.fixRight,
  63. firstFixLeft = props.firstFixLeft,
  64. lastFixLeft = props.lastFixLeft,
  65. firstFixRight = props.firstFixRight,
  66. lastFixRight = props.lastFixRight,
  67. appendNode = props.appendNode,
  68. _props$additionalProp = props.additionalProps,
  69. additionalProps = _props$additionalProp === void 0 ? {} : _props$additionalProp,
  70. isSticky = props.isSticky;
  71. var cellPrefixCls = "".concat(prefixCls, "-cell");
  72. var _useContext = (0, _context.useContext)(_TableContext.default, ['supportSticky', 'allColumnsFixedLeft', 'rowHoverable']),
  73. supportSticky = _useContext.supportSticky,
  74. allColumnsFixedLeft = _useContext.allColumnsFixedLeft,
  75. rowHoverable = _useContext.rowHoverable;
  76. // ====================== Value =======================
  77. var _useCellRender = (0, _useCellRender3.default)(record, dataIndex, renderIndex, children, render, shouldCellUpdate),
  78. _useCellRender2 = (0, _slicedToArray2.default)(_useCellRender, 2),
  79. childNode = _useCellRender2[0],
  80. legacyCellProps = _useCellRender2[1];
  81. // ====================== Fixed =======================
  82. var fixedStyle = {};
  83. var isFixLeft = typeof fixLeft === 'number' && supportSticky;
  84. var isFixRight = typeof fixRight === 'number' && supportSticky;
  85. if (isFixLeft) {
  86. fixedStyle.position = 'sticky';
  87. fixedStyle.left = fixLeft;
  88. }
  89. if (isFixRight) {
  90. fixedStyle.position = 'sticky';
  91. fixedStyle.right = fixRight;
  92. }
  93. // ================ RowSpan & ColSpan =================
  94. var mergedColSpan = (_ref2 = (_ref3 = (_legacyCellProps$colS = legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.colSpan) !== null && _legacyCellProps$colS !== void 0 ? _legacyCellProps$colS : additionalProps.colSpan) !== null && _ref3 !== void 0 ? _ref3 : colSpan) !== null && _ref2 !== void 0 ? _ref2 : 1;
  95. var mergedRowSpan = (_ref4 = (_ref5 = (_legacyCellProps$rowS = legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.rowSpan) !== null && _legacyCellProps$rowS !== void 0 ? _legacyCellProps$rowS : additionalProps.rowSpan) !== null && _ref5 !== void 0 ? _ref5 : rowSpan) !== null && _ref4 !== void 0 ? _ref4 : 1;
  96. // ====================== Hover =======================
  97. var _useHoverState = (0, _useHoverState3.default)(index, mergedRowSpan),
  98. _useHoverState2 = (0, _slicedToArray2.default)(_useHoverState, 2),
  99. hovering = _useHoverState2[0],
  100. onHover = _useHoverState2[1];
  101. var onMouseEnter = (0, _rcUtil.useEvent)(function (event) {
  102. var _additionalProps$onMo;
  103. if (record) {
  104. onHover(index, index + mergedRowSpan - 1);
  105. }
  106. additionalProps === null || additionalProps === void 0 || (_additionalProps$onMo = additionalProps.onMouseEnter) === null || _additionalProps$onMo === void 0 || _additionalProps$onMo.call(additionalProps, event);
  107. });
  108. var onMouseLeave = (0, _rcUtil.useEvent)(function (event) {
  109. var _additionalProps$onMo2;
  110. if (record) {
  111. onHover(-1, -1);
  112. }
  113. additionalProps === null || additionalProps === void 0 || (_additionalProps$onMo2 = additionalProps.onMouseLeave) === null || _additionalProps$onMo2 === void 0 || _additionalProps$onMo2.call(additionalProps, event);
  114. });
  115. // ====================== Render ======================
  116. if (mergedColSpan === 0 || mergedRowSpan === 0) {
  117. return null;
  118. }
  119. // >>>>> Title
  120. var title = (_additionalProps$titl = additionalProps.title) !== null && _additionalProps$titl !== void 0 ? _additionalProps$titl : getTitleFromCellRenderChildren({
  121. rowType: rowType,
  122. ellipsis: ellipsis,
  123. children: childNode
  124. });
  125. // >>>>> ClassName
  126. var mergedClassName = (0, _classnames.default)(cellPrefixCls, className, (_classNames = {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(_classNames, "".concat(cellPrefixCls, "-fix-left"), isFixLeft && supportSticky), "".concat(cellPrefixCls, "-fix-left-first"), firstFixLeft && supportSticky), "".concat(cellPrefixCls, "-fix-left-last"), lastFixLeft && supportSticky), "".concat(cellPrefixCls, "-fix-left-all"), lastFixLeft && allColumnsFixedLeft && supportSticky), "".concat(cellPrefixCls, "-fix-right"), isFixRight && supportSticky), "".concat(cellPrefixCls, "-fix-right-first"), firstFixRight && supportSticky), "".concat(cellPrefixCls, "-fix-right-last"), lastFixRight && supportSticky), "".concat(cellPrefixCls, "-ellipsis"), ellipsis), "".concat(cellPrefixCls, "-with-append"), appendNode), "".concat(cellPrefixCls, "-fix-sticky"), (isFixLeft || isFixRight) && isSticky && supportSticky), (0, _defineProperty2.default)(_classNames, "".concat(cellPrefixCls, "-row-hover"), !legacyCellProps && hovering)), additionalProps.className, legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.className);
  127. // >>>>> Style
  128. var alignStyle = {};
  129. if (align) {
  130. alignStyle.textAlign = align;
  131. }
  132. // The order is important since user can overwrite style.
  133. // For example ant-design/ant-design#51763
  134. var mergedStyle = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, legacyCellProps === null || legacyCellProps === void 0 ? void 0 : legacyCellProps.style), fixedStyle), alignStyle), additionalProps.style);
  135. // >>>>> Children Node
  136. var mergedChildNode = childNode;
  137. // Not crash if final `childNode` is not validate ReactNode
  138. if ((0, _typeof2.default)(mergedChildNode) === 'object' && !Array.isArray(mergedChildNode) && ! /*#__PURE__*/React.isValidElement(mergedChildNode)) {
  139. mergedChildNode = null;
  140. }
  141. if (ellipsis && (lastFixLeft || firstFixRight)) {
  142. mergedChildNode = /*#__PURE__*/React.createElement("span", {
  143. className: "".concat(cellPrefixCls, "-content")
  144. }, mergedChildNode);
  145. }
  146. return /*#__PURE__*/React.createElement(Component, (0, _extends2.default)({}, legacyCellProps, additionalProps, {
  147. className: mergedClassName,
  148. style: mergedStyle
  149. // A11y
  150. ,
  151. title: title,
  152. scope: scope
  153. // Hover
  154. ,
  155. onMouseEnter: rowHoverable ? onMouseEnter : undefined,
  156. onMouseLeave: rowHoverable ? onMouseLeave : undefined
  157. //Span
  158. ,
  159. colSpan: mergedColSpan !== 1 ? mergedColSpan : null,
  160. rowSpan: mergedRowSpan !== 1 ? mergedRowSpan : null
  161. }), appendNode, mergedChildNode);
  162. }
  163. var _default = exports.default = /*#__PURE__*/React.memo(Cell);