song-ui-u
Version:
vue3 + js的PC前端组件库
112 lines (109 loc) • 4.07 kB
JavaScript
import { defineComponent, createVNode, Fragment } from 'vue';
import '../../button/index.mjs';
import '../../buttonGroup/index.mjs';
import { XIcon } from '../../icon/index.mjs';
import '../../input/index.mjs';
import '../../textarea/index.mjs';
import '../../row/index.mjs';
import '../../col/index.mjs';
import '../../container/index.mjs';
import { XCheckbox } from '../../checkbox/index.mjs';
import '../../switch/index.mjs';
import '../../form/index.mjs';
import '../../message/index.mjs';
import '../../mask/src/mask.mjs';
import '../../modal/index.mjs';
import '../../messageBox/index.mjs';
import '../../drawer/index.mjs';
import '../../badge/index.mjs';
import '../../space/index.mjs';
import '../../image/index.mjs';
import '../../radio/index.mjs';
import '../../divider/index.mjs';
import '../../chat/index.mjs';
import '../../progress/index.mjs';
import '../../upload/index.mjs';
import '../../vTree/index.mjs';
import '../index.mjs';
import '../../tabs/index.mjs';
import '../../menu/index.mjs';
import '../../steps/index.mjs';
import '../../header/index.mjs';
import '../../breadcrumble/index.mjs';
import '../../datePicker/index.mjs';
import '../../tooltip/index.mjs';
import '../../popover/index.mjs';
import '../../timePicker/index.mjs';
import '../../select/index.mjs';
import '../../collapse/index.mjs';
import '../../card/index.mjs';
import '../../timeline/index.mjs';
import '../../tag/index.mjs';
import '../../result/index.mjs';
import '../../sender/index.mjs';
import { ChevronDown, ChevronRight } from 'song-ui-pro-icon';
const setColumn = (column) => {
return /* @__PURE__ */ defineComponent({
name: "x-column",
setup(props, {
slots
}) {
const renderSelection = () => {
if (!column.row) {
return createVNode(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 createVNode(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 createVNode("div", {
"style": {
display: "flex",
alignItems: "center",
paddingLeft: `${column.level * 6}px`
}
}, [!column.hasChildren && column.level > 0 && createVNode("span", null, null), content, column.hasChildren && createVNode(Fragment, null, [column.isExpanded ? createVNode(XIcon, {
"onClick": (e) => {
e.stopPropagation();
column.onExpand();
}
}, {
default: () => [createVNode(ChevronDown, null, null)]
}) : createVNode(XIcon, {
"onClick": (e) => {
e.stopPropagation();
column.onExpand();
}
}, {
default: () => [createVNode(ChevronRight, null, null)]
})])]);
}
return content;
};
return () => renderContent();
}
});
};
export { setColumn };
//# sourceMappingURL=column.mjs.map