index.js 3.2 KB

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