ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
77 lines (73 loc) • 2.91 kB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
import { defineComponent } from 'vue';
import Cell from '../Cell';
import { useInjectTable } from '../context/TableContext';
import { getCellFixedInfo } from '../utils/fixUtil';
import { getColumnsKey } from '../utils/valueUtil';
import DragHandleVue from './DragHandle';
export default defineComponent({
name: 'HeaderRow',
props: ['cells', 'stickyOffsets', 'flattenColumns', 'rowComponent', 'cellComponent', 'index', 'customHeaderRow'],
setup: function setup(props) {
var tableContext = useInjectTable();
return function () {
var prefixCls = tableContext.prefixCls,
direction = tableContext.direction;
var cells = props.cells,
stickyOffsets = props.stickyOffsets,
flattenColumns = props.flattenColumns,
RowComponent = props.rowComponent,
CellComponent = props.cellComponent,
customHeaderRow = props.customHeaderRow,
index = props.index;
var rowProps;
if (customHeaderRow) {
rowProps = customHeaderRow(cells.map(function (cell) {
return cell.column;
}), index);
}
var columnsKey = getColumnsKey(cells.map(function (cell) {
return cell.column;
}));
return _createVNode(RowComponent, rowProps, {
default: function _default() {
return [cells.map(function (cell, cellIndex) {
var column = cell.column;
var fixedInfo = getCellFixedInfo(cell.colStart, cell.colEnd, flattenColumns, stickyOffsets, direction);
var additionalProps;
if (column && column.customHeaderCell) {
additionalProps = cell.column.customHeaderCell(column);
}
var col = column;
return _createVNode(Cell, _objectSpread(_objectSpread(_objectSpread({}, cell), {}, {
"cellType": "header",
"ellipsis": column.ellipsis,
"align": column.align,
"component": CellComponent,
"prefixCls": prefixCls,
"key": columnsKey[cellIndex]
}, fixedInfo), {}, {
"additionalProps": additionalProps,
"rowType": "header",
"column": column
}), {
default: function _default() {
return column.title;
},
dragHandle: function dragHandle() {
return col.resizable ? _createVNode(DragHandleVue, {
"prefixCls": prefixCls,
"width": col.width,
"minWidth": col.minWidth,
"maxWidth": col.maxWidth,
"column": col
}, null) : null;
}
});
})];
}
});
};
}
});