hongluan-ui
Version:
Hongluan Component Library for Vue 3
71 lines (66 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../components/index.js');
var constants = require('../constants.js');
var _private = require('../private.js');
var utils = require('../utils.js');
var headerCell = require('../components/header-cell.js');
var sortIcon = require('../components/sort-icon.js');
const HeaderCellRenderer = (props, {
slots
}) => {
const {
column,
style,
onColumnSorted
} = props;
const cellStyle = utils.enforceUnit(style);
if (column.placeholderSign === _private.placeholderSign) {
return vue.createVNode("div", {
"class": "table-v2-header-row-cell-placeholder",
"style": cellStyle
}, null);
}
const {
headerCellRenderer,
headerClass,
sortable
} = column;
const cellProps = {
...props,
class: "table-v2-header-cell-text"
};
const columnCellRenderer = utils.componentToSlot(headerCellRenderer);
const Cell = columnCellRenderer ? columnCellRenderer(cellProps) : vue.renderSlot(slots, "default", cellProps, () => [vue.createVNode(headerCell["default"], cellProps, null)]);
const {
sortBy,
sortState,
headerCellProps
} = props;
let sorting, sortOrder;
if (sortState) {
const order = sortState[column.key];
sorting = Boolean(constants.oppositeOrderMap[order]);
sortOrder = sorting ? order : constants.SortOrder.ASC;
} else {
sorting = column.key === sortBy.key;
sortOrder = sorting ? sortBy.order : constants.SortOrder.ASC;
}
const cellKls = ["table-v2-header-cell", utils.tryCall(headerClass, props, ""), column.align === constants.Alignment.CENTER && "is-align-center", column.align === constants.Alignment.RIGHT && "is-align-right", sortable && "is-sortable"];
const cellWrapperProps = {
...utils.tryCall(headerCellProps, props),
onClick: column.sortable ? onColumnSorted : void 0,
class: cellKls,
style: cellStyle,
["data-key"]: column.key
};
return vue.createVNode("div", vue.mergeProps(cellWrapperProps, {
"role": "columnheader"
}), [Cell, sortable && vue.createVNode(sortIcon["default"], {
"class": ["table-v2-sort-icon", sorting && "is-sorting"],
"sortOrder": sortOrder
}, null)]);
};
exports["default"] = HeaderCellRenderer;
//# sourceMappingURL=header-cell.js.map