chowa
Version:
UI component library based on React
156 lines (155 loc) • 5.01 kB
JavaScript
/**
* @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.
*/
;
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;