yuang-framework-ui-pc
Version:
yuang-framework-ui-pc Library
92 lines (91 loc) • 3 kB
JavaScript
"use strict";
const vue = require("vue");
const util = require("../../ele-virtual-table/util");
const _sfc_main = vue.defineComponent({
name: "ToolPrintHeaderCell",
components: { CellRender: util.CellRender },
props: {
/** 列数据 */
col: {
type: Object,
required: true
},
/** 列索引 */
columnIndex: Number,
/** 单元格样式 */
headerCellStyle: [Object, Function],
/** 单元格类名自定义 */
headerCellClass: [String, Function]
},
setup(props, { slots }) {
const renderOpt = vue.computed(() => {
const { text, column } = props.col;
const params = [{ column, $index: props.columnIndex }];
const slotName = column ? column.printHeaderSlot || column.headerSlot : void 0;
if (column && slotName && typeof slots[slotName] === "function") {
return { render: slots[slotName], params };
}
return { render: () => text, params };
});
const cellParam = vue.computed(() => {
return {
column: props.col.column,
columnIndex: props.columnIndex,
rowIndex: props.col.index
};
});
const cellStyle = vue.computed(() => {
if (typeof props.headerCellStyle === "function") {
if (cellParam.value.column == null) {
return;
}
return props.headerCellStyle(cellParam.value);
}
return props.headerCellStyle;
});
const cellClass = vue.computed(() => {
const classes = [];
const column = cellParam.value.column;
if (column) {
const align = column.headerAlign || column.align;
if (align) {
classes.push("is-align-" + align);
}
if (typeof props.headerCellClass === "function") {
const temp = props.headerCellClass(cellParam.value);
if (temp) {
classes.push(temp);
}
} else if (props.headerCellClass) {
classes.push(props.headerCellClass);
}
if (column.labelClassName) {
classes.push(column.labelClassName);
}
}
return classes.join(" ");
});
return { renderOpt, cellStyle, cellClass };
}
});
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key, val] of props) {
target[key] = val;
}
return target;
};
const _hoisted_1 = ["colspan", "rowspan"];
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_CellRender = vue.resolveComponent("CellRender");
return vue.openBlock(), vue.createElementBlock("th", {
colspan: _ctx.col.colspan,
rowspan: _ctx.col.rowspan,
style: vue.normalizeStyle(_ctx.cellStyle),
class: vue.normalizeClass(_ctx.cellClass)
}, [
vue.createVNode(_component_CellRender, vue.normalizeProps(vue.guardReactiveProps(_ctx.renderOpt)), null, 16)
], 14, _hoisted_1);
}
const toolPrintHeaderCell = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
module.exports = toolPrintHeaderCell;