UNPKG

tav-ui

Version:
221 lines (216 loc) 7.22 kB
'use strict'; 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