UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

80 lines (75 loc) 1.94 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var defaults = require('../table/defaults.js'); const getAllColumns = (columns) => { const result = []; columns.forEach((column) => { if (column.children) { result.push(column); result.push.apply(result, getAllColumns(column.children)); } else { result.push(column); } }); return result; }; const convertToRows = (originColumns) => { let maxLevel = 1; const traverse = (column, parent) => { if (parent) { column.level = parent.level + 1; if (maxLevel < column.level) { maxLevel = column.level; } } if (column.children) { let colSpan = 0; column.children.forEach((subColumn) => { traverse(subColumn, column); colSpan += subColumn.colSpan; }); column.colSpan = colSpan; } else { column.colSpan = 1; } }; originColumns.forEach((item) => { item.level = 1; traverse(item, void 0); }); const rows = []; for (let i = 0; i < maxLevel; i++) { rows.push([]); } const allColumns = getAllColumns(originColumns); allColumns.forEach((item) => { if (!item.children) { item.rowSpan = maxLevel - item.level + 1; } else { item.rowSpan = 1; item.children.forEach((col) => col.isSubColumn = true); } rows[item.level - 1].push(item); }); return rows; }; function useUtils(props) { const IvueTable = vue.inject(defaults.TableContextKey); const columnRows = vue.computed(() => { return convertToRows(props.store.states.originColumns.value); }); const isGroup = vue.computed(() => { const result = columnRows.value.length > 1; if (result && IvueTable) { IvueTable.state.isGroup.value = true; } return result; }); return { isGroup, columnRows }; } exports["default"] = useUtils; //# sourceMappingURL=utils.js.map