tav-ui
Version:
221 lines (216 loc) • 7.22 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var antDesignVue = require('ant-design-vue');
var _const = require('../const2.js');
function autoAddChoosenElement(columns = [], checkboxConfig, radioConfig, tableRef, emit, isCheckboxCacheEnabled, createCheckboxCache, createAllCheckboxCache, deleteCheckboxCache, deleteAllCheckboxCache) {
const isColumnsHasCheckbox = columns?.find((column) => column.type === "checkbox");
const isColumnsHasRadio = columns?.find((column) => column.type === "radio");
if (!columns.length)
return columns;
if (!isColumnsHasCheckbox && checkboxConfig.enabled) {
columns.unshift({
field: "checkboxField",
type: "checkbox",
fixed: "left",
slots: {
header: (info) => {
const {
checked,
indeterminate
} = info;
return [vue.createVNode(antDesignVue.Checkbox, {
"indeterminate": indeterminate,
"checked": checked,
"onChange": async () => {
const result = {
...info,
checked: !checked
};
if (isCheckboxCacheEnabled.value) {
const {
fullData
} = vue.unref(tableRef).getTableData();
if (result.checked) {
await createAllCheckboxCache(vue.toRaw(fullData));
} else {
await deleteAllCheckboxCache({
deleteByPage: true
});
}
} else {
await vue.unref(tableRef)?.toggleAllCheckboxRow();
}
emit("CheckboxAll", {
...result
});
}
}, null)];
},
checkbox: (info) => {
const {
row,
checked,
indeterminate
} = info;
return [vue.createVNode(antDesignVue.Checkbox, {
"indeterminate": indeterminate,
"checked": checked,
"onChange": async () => {
const result = {
...info,
checked: !checked
};
if (isCheckboxCacheEnabled.value) {
if (result.checked) {
await createCheckboxCache(vue.toRaw(result.row));
} else {
await deleteCheckboxCache(vue.toRaw(result.row));
}
} else {
await vue.unref(tableRef)?.toggleCheckboxRow(row);
}
emit("CheckboxChange", {
...result
});
}
}, null)];
}
}
});
}
if (!isColumnsHasRadio && radioConfig.enabled) {
columns.unshift({
field: "radioField",
type: "radio",
fixed: "left"
});
}
return columns;
}
function setColumnMinWidth(columns) {
return columns.length ? columns?.map((column) => {
if (column.type && _const.SELECT_COMPONENTS.includes(column.type)) {
if (!column.width)
column.width = _const.MIN_WIDTH_SMALL;
} else if (column.field && _const.ACTION_COLUMNS.includes(column.field)) {
if (!column.minWidth) {
if (!column.width) {
column.minWidth = _const.MIN_WIDTH_SMALL + 15;
} else {
column.minWidth = column.width;
}
}
} else {
if (!column.minWidth) {
if (!column.width) {
column.minWidth = _const.MIN_WIDTH;
} else {
column.minWidth = column.width;
}
}
}
return column;
}) : columns;
}
function wrapperColumnSlot(columns) {
const handleWrapper = (column) => {
const {
customRender
} = column;
column["cellRender"] = {
name: _const.ComponentCellName,
options: [{
customRender
}]
};
return column;
};
return columns.length ? columns.map((column) => {
const {
children
} = column;
if (children && children.length) {
column.children = children.map((_column) => handleWrapper(_column));
return column;
} else {
return handleWrapper(column);
}
}) : columns;
}
function setFixedColumnVisible(columns) {
const handler = (column) => {
if (column.fixed && !column.visible) {
column.visible = true;
}
return column;
};
return columns.length ? columns?.map((column) => {
const {
children
} = column;
if (children && children.length) {
column.children = children.map((_column) => handler(_column));
return handler(column);
} else {
return handler(column);
}
}) : columns;
}
function setFixedMultiHeader(columns) {
let fixed = [];
const handler = (column, idx, parentColumn) => {
if (parentColumn) {
if (Reflect.has(parentColumn, "fixed")) {
column.fixed = parentColumn.fixed;
} else {
fixed.push(column.fixed);
}
if (idx === parentColumn.children.length - 1 && fixed.length) {
const fixedResult = fixed.filter((val) => val !== void 0);
parentColumn.fixed = fixedResult.length ? fixedResult[0] : void 0;
parentColumn.children.forEach((childColumn) => childColumn.fixed = parentColumn.fixed);
}
}
return column;
};
return columns.length ? columns?.map((column) => {
const {
children
} = column;
if (children && children.length) {
fixed = [];
column.children = children.map((_column, idx) => handler(_column, idx, column));
return handler(column);
} else {
return handler(column);
}
}) : columns;
}
function setVisibleMultiHeader(columns) {
const handler = (column, parentVisible) => {
if (parentVisible === false) {
column.visible = false;
} else if (parentVisible === true && column.visible === void 0) {
column.visible = true;
}
if (column.children && column.children.length) {
column.children.forEach((childColumn) => handler(childColumn, column.visible));
if (column.children.every((child) => child.visible === false)) {
column.visible = false;
}
}
return column;
};
return columns.length ? columns.map((column) => handler(column, column.visible)) : columns;
}
function useColumns(columns = [], checkboxConfig, radioConfig, tableRef, emit, isCheckboxCacheEnabled, createCheckboxCache, createAllCheckboxCache, deleteCheckboxCache, deleteAllCheckboxCache) {
const autoAddChoosenElementColumns = autoAddChoosenElement(columns, checkboxConfig, radioConfig, tableRef, emit, isCheckboxCacheEnabled, createCheckboxCache, createAllCheckboxCache, deleteCheckboxCache, deleteAllCheckboxCache);
const setColumnMinWidthColumns = setColumnMinWidth(autoAddChoosenElementColumns);
const setFixedMultiHeaderColumns = setFixedMultiHeader(setColumnMinWidthColumns);
const setVisibleMultiHeaderColumns = setVisibleMultiHeader(setFixedMultiHeaderColumns);
const setFixedColumnVisibleColumns = setFixedColumnVisible(setVisibleMultiHeaderColumns);
return wrapperColumnSlot(setFixedColumnVisibleColumns);
}
exports.useColumns = useColumns;
//# sourceMappingURL=useColums2.js.map