element-plus
Version:
A Component Library for Vue 3
77 lines (75 loc) • 2.13 kB
JavaScript
import { tryCall } from "../utils.mjs";
import TableV2Row from "../components/row.mjs";
import { createVNode, isVNode, mergeProps } from "vue";
//#region ../../packages/components/table-v2/src/renderers/row.tsx
function _isSlot(s) {
return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
}
const RowRenderer = (props, { slots }) => {
const { columns, columnsStyles, depthMap, expandColumnKey, expandedRowKeys, estimatedRowHeight, hasFixedColumns, rowData, rowIndex, style, isScrolling, rowProps, rowClass, rowKey, rowEventHandlers, ns, onRowHovered, onRowExpanded } = props;
const rowKls = tryCall(rowClass, {
columns,
rowData,
rowIndex
}, "");
const additionalProps = tryCall(rowProps, {
columns,
rowData,
rowIndex
});
const _rowKey = rowData[rowKey];
const depth = depthMap[_rowKey] || 0;
const canExpand = Boolean(expandColumnKey);
const isFixedRow = rowIndex < 0;
const kls = [
ns.e("row"),
rowKls,
ns.is("expanded", canExpand && expandedRowKeys.includes(_rowKey)),
ns.is("fixed", !depth && isFixedRow),
ns.is("customized", Boolean(slots.row)),
{ [ns.e(`row-depth-${depth}`)]: canExpand && rowIndex >= 0 }
];
const onRowHover = hasFixedColumns ? onRowHovered : void 0;
const _rowProps = {
...additionalProps,
columns,
columnsStyles,
class: kls,
depth,
expandColumnKey,
estimatedRowHeight: isFixedRow ? void 0 : estimatedRowHeight,
isScrolling,
rowIndex,
rowData,
rowKey: _rowKey,
rowEventHandlers,
style
};
const handlerMouseEnter = (e) => {
onRowHover?.({
hovered: true,
rowKey: _rowKey,
event: e,
rowData,
rowIndex
});
};
const handlerMouseLeave = (e) => {
onRowHover?.({
hovered: false,
rowKey: _rowKey,
event: e,
rowData,
rowIndex
});
};
return createVNode(TableV2Row, mergeProps(_rowProps, {
"onRowExpand": onRowExpanded,
"onMouseenter": handlerMouseEnter,
"onMouseleave": handlerMouseLeave,
"rowkey": _rowKey
}), _isSlot(slots) ? slots : { default: () => [slots] });
};
//#endregion
export { RowRenderer as default };
//# sourceMappingURL=row.mjs.map