@uiw/react-table
Version:
Table component
144 lines (141 loc) • 4.26 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAllColumnsKeys = getAllColumnsKeys;
exports.getLevelItems = getLevelItems;
exports.locationFixed = locationFixed;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
/**
* Get colspan number
* @param {Array} date
*/
function getColspanNum() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var num = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var childs = [];
for (var i = 0; i < data.length; i += 1) {
if (data[i].children) {
childs = childs.concat(data[i].children || []);
}
}
if (childs && childs.length > 0) {
num = getColspanNum(childs, num + 1);
}
return num;
}
/**
* Get rowspan number
* @param {Array} date
*/
function getRowspanNum() {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var child = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var childs = [];
for (var i = 0; i < data.length; i += 1) {
if (!data[i].children) {
childs.push(data[i]);
} else if (data[i].children && data[i].children.length > 0) {
childs = childs.concat(getRowspanNum(data[i].children, child));
}
}
return childs;
}
/**
* JSON Array => Array
* @param {Array} date
*/
function getLevelItems(data, result) {
if (!result) {
result = {
header: [],
render: {}
};
}
if (result && !result.header) {
result.header = [];
}
if (result && !result.render) {
result.render = {};
}
var child = [];
var levelTop = [];
for (var i = 0; i < data.length; i += 1) {
if (data[i].render && data[i].key) {
result.render[data[i].key] = data[i].render;
}
if (data[i].ellipsis && data[i].key) {
if (!result.ellipsis) result.ellipsis = {};
result.ellipsis[data[i].key] = true;
}
if (result.header.length === 0) {
// Calculation rowspan
if (data[i].children && data[i].children && data[i].children.length > 0) {
data[i].colSpan = getRowspanNum(data[i].children).length;
}
levelTop.push(data[i]);
}
if (data[i] && data[i].children) {
child = child.concat(data[i].children.map(function (item) {
// Calculation rowspan
if (item.children && item.children.length > 0) {
item.colSpan = getRowspanNum(item.children).length;
}
return item;
}));
}
}
// level 1
if (result.header.length === 0) {
var num = getColspanNum(levelTop);
result.header.push(levelTop.map(function (item) {
if (num === 1) return item;
if (!item.children || item.children && item.children.length === 0) {
item.rowSpan = num;
}
return item;
}));
}
if (child && child.length > 0) {
var _num = getColspanNum(child);
result.header.push(child.map(function (item) {
if (_num === 1) return item;
if (!item.children || item.children && item.children.length === 0) {
item.rowSpan = _num;
}
return item;
}));
result = getLevelItems(child, result);
}
return result;
}
/**
* Get all columns keys
* @param {Array} data
*/
function getAllColumnsKeys(data) {
var keys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
for (var i = 0; i < data.length; i += 1) {
if (data[i].children) {
keys = keys.concat(getAllColumnsKeys(data[i].children || []));
} else if (data[i].key) {
keys.push(data[i]);
} else {
keys.push((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, data[i]), {}, {
key: i.toString()
}));
}
}
return keys;
}
function locationFixed(fixed, location, index) {
var _location$index, _location$index2;
if (!fixed) return {};
if (fixed === 'right') return {
right: (_location$index = location[index]) === null || _location$index === void 0 ? void 0 : _location$index.right
};
return {
left: (_location$index2 = location[index]) === null || _location$index2 === void 0 ? void 0 : _location$index2.left
};
}