song-ui-u
Version:
vue3 + js的PC前端组件库
114 lines (110 loc) • 4.2 kB
JavaScript
;
var vue = require('vue');
require('../../button/index.cjs');
require('../../buttonGroup/index.cjs');
var index = require('../../icon/index.cjs');
require('../../input/index.cjs');
require('../../textarea/index.cjs');
require('../../row/index.cjs');
require('../../col/index.cjs');
require('../../container/index.cjs');
var index$1 = require('../../checkbox/index.cjs');
require('../../switch/index.cjs');
require('../../form/index.cjs');
require('../../message/index.cjs');
require('../../mask/src/mask.cjs');
require('../../modal/index.cjs');
require('../../messageBox/index.cjs');
require('../../drawer/index.cjs');
require('../../badge/index.cjs');
require('../../space/index.cjs');
require('../../image/index.cjs');
require('../../radio/index.cjs');
require('../../divider/index.cjs');
require('../../chat/index.cjs');
require('../../progress/index.cjs');
require('../../upload/index.cjs');
require('../../vTree/index.cjs');
require('../index.cjs');
require('../../tabs/index.cjs');
require('../../menu/index.cjs');
require('../../steps/index.cjs');
require('../../header/index.cjs');
require('../../breadcrumble/index.cjs');
require('../../datePicker/index.cjs');
require('../../tooltip/index.cjs');
require('../../popover/index.cjs');
require('../../timePicker/index.cjs');
require('../../select/index.cjs');
require('../../collapse/index.cjs');
require('../../card/index.cjs');
require('../../timeline/index.cjs');
require('../../tag/index.cjs');
require('../../result/index.cjs');
require('../../sender/index.cjs');
var icons = require('song-ui-pro-icon');
const setColumn = (column) => {
return /* @__PURE__ */ vue.defineComponent({
name: "x-column",
setup(props, {
slots
}) {
const renderSelection = () => {
if (!column.row) {
return vue.createVNode(index$1.XCheckbox, {
"size": "small",
"checked": column.isAllSelected?.value,
"onChange": (e) => column.onSelectAll?.(e),
"indeterminate": column.indeterminate?.value
}, null);
}
const children = column.getAllChildren?.(column.row) || [];
const hasSelectedChildren = children.some((child) => column.isSelected?.(child));
const allChildrenSelected = children.length > 0 && children.every((child) => column.isSelected?.(child));
return vue.createVNode(index$1.XCheckbox, {
"size": "small",
"checked": column.isSelected?.(column.row),
"onChange": () => column.onSelect?.(column.row),
"disabled": !column.column.selectable?.(column.row),
"indeterminate": children.length > 0 && hasSelectedChildren && !allChildrenSelected
}, null);
};
const renderContent = () => {
if (column.column.type === "selection") {
return renderSelection();
}
const content = column.column.slots ? column.column.slots({
row: column.row
}) : column.row[column.column.prop];
const firstNonSelectionColumn = column.columns.find((col) => col.type !== "selection");
if (column.column.prop === firstNonSelectionColumn?.prop) {
return vue.createVNode("div", {
"style": {
display: "flex",
alignItems: "center",
paddingLeft: `${column.level * 6}px`
}
}, [!column.hasChildren && column.level > 0 && vue.createVNode("span", null, null), content, column.hasChildren && vue.createVNode(vue.Fragment, null, [column.isExpanded ? vue.createVNode(index.XIcon, {
"onClick": (e) => {
e.stopPropagation();
column.onExpand();
}
}, {
default: () => [vue.createVNode(icons.ChevronDown, null, null)]
}) : vue.createVNode(index.XIcon, {
"onClick": (e) => {
e.stopPropagation();
column.onExpand();
}
}, {
default: () => [vue.createVNode(icons.ChevronRight, null, null)]
})])]);
}
return content;
};
return () => renderContent();
}
});
};
exports.setColumn = setColumn;
//# sourceMappingURL=column.cjs.map