yanzhen-design-vue
Version:
101 lines (100 loc) • 3.01 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const useVxeTableMethods = require("./hooks/use-vxe-table-methods.cjs");
const useVxeTableObserver = require("./hooks/use-vxe-table-observer.cjs");
const useVxeTableConfig = require("./hooks/use-vxe-table-config.cjs");
const handleTableProps = require("./utils/handleTableProps.cjs");
function useVxeTable(props, emit) {
const $slots = vue.useSlots();
const { tag, ...config } = vue.toRefs(props);
const {
tableRef,
expose: tableExpose,
elTableProps,
aTableProps,
vxeTableProps,
columnSlotRecordRef,
hiddenCellClassName,
virtualRef,
loading,
dataSource,
isElTableTag,
isATableTag,
...otherMethods
} = useVxeTableMethods.useVxeTableMethods(props);
const { onTableScroll, tableWrapper } = useVxeTableObserver.useVxeTableObserver(tableRef, {
scroll: {
debounce: 300
},
onResizeBodyColRecord(record) {
vue.unref(columnSlotRecordRef).cellNodeRect.updateNodeRect(record);
vue.unref(virtualRef).virtualNodeRect.updateNodeRect(record);
},
onResizeBodyRowRecord(record) {
vue.unref(columnSlotRecordRef).cellNodeRect.updateRowNodeRect(record);
},
onTableResizeObserver(tableWrapper2) {
vue.unref(virtualRef).onVirtualScroll(vue.unref(tableWrapper2), false);
vue.unref(columnSlotRecordRef).cellNodeRect.updateRowsNodeRect(
vue.unref(tableWrapper2).tbody
);
},
onScroll(tableWrapper2) {
vue.unref(virtualRef).onVirtualScroll(vue.unref(tableWrapper2), false);
vue.unref(columnSlotRecordRef).cellNodeRect.updateRowsNodeRect(
vue.unref(tableWrapper2).tbody
);
}
});
const tableProps = vue.computed(() => {
switch (true) {
case vue.unref(isATableTag):
return vue.unref(aTableProps);
case vue.unref(isElTableTag):
return vue.unref(elTableProps);
default:
return handleTableProps.handleVxeTableProps(
vue.unref(vxeTableProps),
vue.unref(tableExpose),
{
rowClassName: ({ isEdit }) => {
return isEdit ? "is-row-edit" : "row-1212121";
},
cellClassName: vue.unref(virtualRef).virtualCellClassName,
rowStyle: vue.unref(columnSlotRecordRef).cellNodeRect.tableCellStyle
},
{
cellClassName: hiddenCellClassName
}
);
}
});
useVxeTableConfig.provideVxeTableConfig({
config: vue.readonly({ ...config, data: dataSource }),
data: dataSource,
tag,
table: tableExpose
});
const ctx = {
...otherMethods,
tableWrapperRef: tableWrapper,
tableRef,
tableExpose,
loading,
dataSource,
$slots,
tableProps,
isElTableTag,
isATableTag
};
const methods = {
...otherMethods,
handleTableScroll: onTableScroll
};
return {
ctx,
methods
};
}
exports.useVxeTable = useVxeTable;