index.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _ExpandedRow = _interopRequireDefault(require("./ExpandedRow"));
  9. var _valueUtil = require("../utils/valueUtil");
  10. var _MeasureCell = _interopRequireDefault(require("./MeasureCell"));
  11. var _BodyRow = _interopRequireDefault(require("./BodyRow"));
  12. var _useFlattenRecords = _interopRequireDefault(require("../hooks/useFlattenRecords"));
  13. var _ResizeContext = require("../context/ResizeContext");
  14. var _TableContext = require("../context/TableContext");
  15. var _BodyContext = require("../context/BodyContext");
  16. var _HoverContext = require("../context/HoverContext");
  17. var _default2 = (0, _vue.defineComponent)({
  18. name: 'Body',
  19. props: ['data', 'getRowKey', 'measureColumnWidth', 'expandedKeys', 'customRow', 'rowExpandable', 'childrenColumnName'],
  20. slots: ['emptyNode'],
  21. setup: function setup(props, _ref) {
  22. var slots = _ref.slots;
  23. var resizeContext = (0, _ResizeContext.useInjectResize)();
  24. var tableContext = (0, _TableContext.useInjectTable)();
  25. var bodyContext = (0, _BodyContext.useInjectBody)();
  26. var flattenData = (0, _useFlattenRecords.default)((0, _vue.toRef)(props, 'data'), (0, _vue.toRef)(props, 'childrenColumnName'), (0, _vue.toRef)(props, 'expandedKeys'), (0, _vue.toRef)(props, 'getRowKey'));
  27. var startRow = (0, _vue.ref)(-1);
  28. var endRow = (0, _vue.ref)(-1);
  29. var timeoutId;
  30. (0, _HoverContext.useProvideHover)({
  31. startRow: startRow,
  32. endRow: endRow,
  33. onHover: function onHover(start, end) {
  34. clearTimeout(timeoutId);
  35. timeoutId = setTimeout(function () {
  36. startRow.value = start;
  37. endRow.value = end;
  38. }, 100);
  39. }
  40. });
  41. return function () {
  42. var data = props.data,
  43. getRowKey = props.getRowKey,
  44. measureColumnWidth = props.measureColumnWidth,
  45. expandedKeys = props.expandedKeys,
  46. customRow = props.customRow,
  47. rowExpandable = props.rowExpandable,
  48. childrenColumnName = props.childrenColumnName;
  49. var onColumnResize = resizeContext.onColumnResize;
  50. var prefixCls = tableContext.prefixCls,
  51. getComponent = tableContext.getComponent;
  52. var flattenColumns = bodyContext.flattenColumns;
  53. var WrapperComponent = getComponent(['body', 'wrapper'], 'tbody');
  54. var trComponent = getComponent(['body', 'row'], 'tr');
  55. var tdComponent = getComponent(['body', 'cell'], 'td');
  56. var rows;
  57. if (data.length) {
  58. rows = flattenData.value.map(function (item, idx) {
  59. var record = item.record,
  60. indent = item.indent,
  61. renderIndex = item.index;
  62. var key = getRowKey(record, idx);
  63. return (0, _vue.createVNode)(_BodyRow.default, {
  64. "key": key,
  65. "rowKey": key,
  66. "record": record,
  67. "recordKey": key,
  68. "index": idx,
  69. "renderIndex": renderIndex,
  70. "rowComponent": trComponent,
  71. "cellComponent": tdComponent,
  72. "expandedKeys": expandedKeys,
  73. "customRow": customRow,
  74. "getRowKey": getRowKey,
  75. "rowExpandable": rowExpandable,
  76. "childrenColumnName": childrenColumnName,
  77. "indent": indent
  78. }, null);
  79. });
  80. } else {
  81. var _slots$emptyNode;
  82. rows = (0, _vue.createVNode)(_ExpandedRow.default, {
  83. "expanded": true,
  84. "class": "".concat(prefixCls, "-placeholder"),
  85. "prefixCls": prefixCls,
  86. "component": trComponent,
  87. "cellComponent": tdComponent,
  88. "colSpan": flattenColumns.length,
  89. "isEmpty": true
  90. }, {
  91. default: function _default() {
  92. return [(_slots$emptyNode = slots.emptyNode) === null || _slots$emptyNode === void 0 ? void 0 : _slots$emptyNode.call(slots)];
  93. }
  94. });
  95. }
  96. var columnsKey = (0, _valueUtil.getColumnsKey)(flattenColumns);
  97. return (0, _vue.createVNode)(WrapperComponent, {
  98. "class": "".concat(prefixCls, "-tbody")
  99. }, {
  100. default: function _default() {
  101. return [measureColumnWidth && (0, _vue.createVNode)("tr", {
  102. "aria-hidden": "true",
  103. "class": "".concat(prefixCls, "-measure-row"),
  104. "style": {
  105. height: 0,
  106. fontSize: 0
  107. }
  108. }, [columnsKey.map(function (columnKey) {
  109. return (0, _vue.createVNode)(_MeasureCell.default, {
  110. "key": columnKey,
  111. "columnKey": columnKey,
  112. "onColumnResize": onColumnResize
  113. }, null);
  114. })]), rows];
  115. }
  116. });
  117. };
  118. }
  119. });
  120. exports.default = _default2;