39a844fd57415073dde0f4a784de30f9366ef3cf0806574a9aea06d104154186e660120468a413bfd177ee16b5313132d108fcab4d1bd4f53f4beb43bb8cd7 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var layoutObserver = require('../layout-observer.js');
  5. var util = require('../util.js');
  6. var tokens = require('../tokens.js');
  7. var renderHelper = require('./render-helper.js');
  8. var defaults = require('./defaults.js');
  9. var index = require('../../../../hooks/use-namespace/index.js');
  10. var style = require('../../../../utils/dom/style.js');
  11. var core = require('@vueuse/core');
  12. var raf = require('../../../../utils/raf.js');
  13. var TableBody = vue.defineComponent({
  14. name: "ElTableBody",
  15. props: defaults["default"],
  16. setup(props) {
  17. var _a;
  18. const instance = vue.getCurrentInstance();
  19. const parent = vue.inject(tokens.TABLE_INJECTION_KEY);
  20. const ns = index.useNamespace("table");
  21. const { wrappedRowRender, tooltipContent, tooltipTrigger } = renderHelper["default"](props);
  22. const { onColumnsChange, onScrollableChange } = layoutObserver["default"](parent);
  23. const hoveredCellList = [];
  24. vue.watch((_a = props.store) == null ? void 0 : _a.states.hoverRow, (newVal, oldVal) => {
  25. var _a2, _b;
  26. const el = instance == null ? void 0 : instance.vnode.el;
  27. const rows = Array.from((el == null ? void 0 : el.children) || []).filter((e) => e == null ? void 0 : e.classList.contains(`${ns.e("row")}`));
  28. let rowNum = newVal;
  29. const childNodes = (_a2 = rows[rowNum]) == null ? void 0 : _a2.childNodes;
  30. if (childNodes == null ? void 0 : childNodes.length) {
  31. let control = 0;
  32. const indexes = Array.from(childNodes).reduce((acc, item, index) => {
  33. var _a3, _b2;
  34. if (((_a3 = childNodes[index]) == null ? void 0 : _a3.colSpan) > 1) {
  35. control = (_b2 = childNodes[index]) == null ? void 0 : _b2.colSpan;
  36. }
  37. if (item.nodeName !== "TD" && control === 0) {
  38. acc.push(index);
  39. }
  40. control > 0 && control--;
  41. return acc;
  42. }, []);
  43. indexes.forEach((rowIndex) => {
  44. var _a3;
  45. rowNum = newVal;
  46. while (rowNum > 0) {
  47. const preChildNodes = (_a3 = rows[rowNum - 1]) == null ? void 0 : _a3.childNodes;
  48. if (preChildNodes[rowIndex] && preChildNodes[rowIndex].nodeName === "TD" && preChildNodes[rowIndex].rowSpan > 1) {
  49. style.addClass(preChildNodes[rowIndex], "hover-cell");
  50. hoveredCellList.push(preChildNodes[rowIndex]);
  51. break;
  52. }
  53. rowNum--;
  54. }
  55. });
  56. } else {
  57. hoveredCellList.forEach((item) => style.removeClass(item, "hover-cell"));
  58. hoveredCellList.length = 0;
  59. }
  60. if (!((_b = props.store) == null ? void 0 : _b.states.isComplex.value) || !core.isClient)
  61. return;
  62. raf.rAF(() => {
  63. const oldRow = rows[oldVal];
  64. const newRow = rows[newVal];
  65. if (oldRow && !oldRow.classList.contains("hover-fixed-row")) {
  66. style.removeClass(oldRow, "hover-row");
  67. }
  68. if (newRow) {
  69. style.addClass(newRow, "hover-row");
  70. }
  71. });
  72. });
  73. vue.onUnmounted(() => {
  74. var _a2;
  75. (_a2 = util.removePopper) == null ? void 0 : _a2();
  76. });
  77. return {
  78. ns,
  79. onColumnsChange,
  80. onScrollableChange,
  81. wrappedRowRender,
  82. tooltipContent,
  83. tooltipTrigger
  84. };
  85. },
  86. render() {
  87. const { wrappedRowRender, store } = this;
  88. const data = (store == null ? void 0 : store.states.data.value) || [];
  89. return vue.h("tbody", { tabIndex: -1 }, [
  90. data.reduce((acc, row) => {
  91. return acc.concat(wrappedRowRender(row, acc.length));
  92. }, [])
  93. ]);
  94. }
  95. });
  96. exports["default"] = TableBody;
  97. //# sourceMappingURL=index.js.map