UNPKG

chowa

Version:

UI component library based on React

156 lines (155 loc) 5.01 kB
/** * @license chowa v1.1.3 * * Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn). * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const React = require("react"); const utils_1 = require("../utils"); const table_column_1 = require("./table-column"); function perfectDataIndex(data) { return data.map((record, index) => { return Object.assign(Object.assign({}, record), { index: utils_1.isExist(record.index) ? record.index : index }); }); } exports.perfectDataIndex = perfectDataIndex; function perfectPropsColumns(columns) { return columns.map((column) => { return Object.assign(Object.assign({}, column), { children: Array.isArray(column.children) ? perfectPropsColumns(column.children) : [] }); }); } exports.perfectPropsColumns = perfectPropsColumns; function transformReactNodeToColumns(children) { const columns = []; React.Children.forEach(children, (child) => { if (!utils_1.isReactElement(child) || child.type !== table_column_1.default) { return; } columns.push(Object.assign(Object.assign({}, child.props), { children: transformReactNodeToColumns(child.props.children) })); }); return columns; } exports.transformReactNodeToColumns = transformReactNodeToColumns; function compileColumnsDataIndexs(columns) { let dataIndexs = []; columns.forEach(({ dataIndex, children }) => { if (children.length === 0) { dataIndexs.push(dataIndex); } else { dataIndexs = dataIndexs.concat(compileColumnsDataIndexs(children)); } }); return dataIndexs; } exports.compileColumnsDataIndexs = compileColumnsDataIndexs; function compileLeftFixedColumns(columns) { const fixedColums = []; for (const column of columns) { if (column.fixed === 'left') { fixedColums.push(column); } else { break; } } return fixedColums; } exports.compileLeftFixedColumns = compileLeftFixedColumns; function compileRightFixedColumns(columns) { const reverseColums = [].concat(columns); const fixedColums = []; reverseColums.reverse(); for (const column of reverseColums) { if (column.fixed === 'right') { fixedColums.push(column); } else { break; } } return fixedColums; } exports.compileRightFixedColumns = compileRightFixedColumns; function getColumnByDataIndex(columns, dataIndex) { let ret; for (const column of columns) { ret = column.dataIndex === dataIndex ? column : getColumnByDataIndex(column.children, dataIndex); if (utils_1.isExist(ret)) { break; } } return ret; } exports.getColumnByDataIndex = getColumnByDataIndex; exports.columnMinSize = 80; function compileColumnsWidthMap(columns, dataIndexs) { const colSizeMap = {}; dataIndexs.forEach((dataIndex) => { colSizeMap[dataIndex] = getColumnByDataIndex(columns, dataIndex).width; }); colSizeMap[utils_1.preClass('table-selection-cell')] = exports.columnMinSize; colSizeMap[utils_1.preClass('table-expanded-cell')] = exports.columnMinSize; return colSizeMap; } exports.compileColumnsWidthMap = compileColumnsWidthMap; function computedColumnTier(column, nextTier = 2) { let tier = 1; column.children.forEach((childColumn) => { if (childColumn.children.length > 0) { tier = computedColumnTier(childColumn, nextTier + 1); } else if (nextTier > tier) { tier = nextTier; } }); return tier; } exports.computedColumnTier = computedColumnTier; function computedColumnAmountCell(column) { let amount = 0; if (column.children.length === 0) { amount = 1; } else { column.children.forEach((childColumn) => { if (childColumn.children.length > 0) { amount += computedColumnAmountCell(childColumn); } else { amount += 1; } }); } return amount; } exports.computedColumnAmountCell = computedColumnAmountCell; function attrMerge(attr, className, style) { if (typeof attr !== 'object' || attr === null) { attr = {}; } if (className) { attr['className'] = utils_1.hasProperty(attr, 'className') ? `${attr['className']} ${className}` : className; } if (style) { attr['style'] = Object.assign({}, attr['style'], style); } return attr; } exports.attrMerge = attrMerge; function cloneColumns(cloumns) { const ret = []; for (const column of cloumns) { ret.push(Object.assign(Object.assign({}, column), { children: cloneColumns(column.children) })); } return ret; } exports.cloneColumns = cloneColumns;