ka-table
Version:
The customizable, extendable, lightweight, and fully free React Table Component
86 lines (85 loc) • 6.2 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var react_1 = __importStar(require("react"));
var DataUtils_1 = require("../../Utils/DataUtils");
var GroupUtils_1 = require("../../Utils/GroupUtils");
var TreeUtils_1 = require("../../Utils/TreeUtils");
var DataAndDetailsRows_1 = __importDefault(require("../DataAndDetailsRows/DataAndDetailsRows"));
var GroupRow_1 = __importDefault(require("../GroupRow/GroupRow"));
var GroupSummaryRow_1 = require("../GroupSummaryRow/GroupSummaryRow");
var FilterUtils_1 = require("../../Utils/FilterUtils");
var Rows = function (props) {
var childComponents = props.childComponents, columns = props.columns, data = props.data, _a = props.detailsRows, detailsRows = _a === void 0 ? [] : _a, dispatch = props.dispatch, editableCells = props.editableCells, format = props.format, groupedColumns = props.groupedColumns, _b = props.groups, groups = _b === void 0 ? [] : _b, _c = props.groupsExpanded, groupsExpanded = _c === void 0 ? [] : _c, isFirstRowOdd = props.isFirstRowOdd, onFirstRowRendered = props.onFirstRowRendered, treeGroupsExpanded = props.treeGroupsExpanded, rowKeyField = props.rowKeyField, rowReordering = props.rowReordering, selectedRows = props.selectedRows, validation = props.validation, treeExpandButtonColumnKey = props.treeExpandButtonColumnKey, oddEvenRows = props.oddEvenRows;
var groupMark = (0, GroupUtils_1.getGroupMark)();
var firstRowRef = (0, react_1.useRef)(null);
(0, react_1.useEffect)(function () {
onFirstRowRendered(firstRowRef);
}, [firstRowRef, onFirstRowRendered]);
var rowRefLink = firstRowRef;
return (react_1.default.createElement(react_1.default.Fragment, null, data.map(function (d, index) {
if (d.groupMark === groupMark) {
var groupIndex = d.key.length - 1;
var group_1 = groups && groups[groupIndex];
var column = group_1 && groupedColumns.find(function (c) { return c.key === group_1.columnKey; });
return (react_1.default.createElement(GroupRow_1.default, { childComponents: childComponents, column: column, contentColSpan: columns.length - groupIndex + groups.length, dispatch: dispatch, groupIndex: groupIndex, groupKey: d.key, groupItems: d.groupItems, columns: columns, groupedColumns: groupedColumns, isExpanded: groupsExpanded.some(function (ge) { return JSON.stringify(ge) === JSON.stringify(d.key); }), text: (0, GroupUtils_1.getGroupText)(d.value, column, format, d.groupItems), key: JSON.stringify(d.key) }));
}
else if (d.groupSummaryMark === GroupUtils_1.groupSummaryMark) {
return react_1.default.createElement(GroupSummaryRow_1.GroupSummaryRow, __assign({}, props, { groupData: d.groupData, key: d.key, groupIndex: d.groupIndex }));
}
else {
var isTreeGroup = d.treeGroupMark === TreeUtils_1.treeGroupMark;
var isTreeData = d.treeDataMark === TreeUtils_1.treeDataMark;
var isTreeRow = isTreeGroup || isTreeData;
var rowData = isTreeRow ? d.rowData : d;
var rowKeyValue_1 = (0, DataUtils_1.getValueByField)(rowData, rowKeyField);
var isTreeExpanded = isTreeGroup && (!treeGroupsExpanded || treeGroupsExpanded.includes(rowKeyValue_1));
var isSelectedRow = selectedRows.some(function (s) { return s === rowKeyValue_1; });
var isDetailsRowShown = detailsRows.some(function (r) { return r === rowKeyValue_1; });
var rowEditableCells = (0, FilterUtils_1.getRowEditableCells)(rowKeyValue_1, editableCells);
var isOdd = oddEvenRows
? isFirstRowOdd ? (0, DataUtils_1.checkIndexOdd)(index) : !(0, DataUtils_1.checkIndexOdd)(index)
: undefined;
var dataRow = (react_1.default.createElement(DataAndDetailsRows_1.default, { isOdd: isOdd, childComponents: props.childComponents, columns: props.columns, dispatch: dispatch, editableCells: props.editableCells, editingMode: props.editingMode, isTreeGroup: isTreeGroup, isTreeExpanded: isTreeExpanded, treeDeep: isTreeRow === true ? d.treeDeep : undefined, treeExpandButtonColumnKey: treeExpandButtonColumnKey, format: format, groupColumnsCount: props.groupColumnsCount, isDetailsRowShown: isDetailsRowShown, isSelectedRow: isSelectedRow, key: rowKeyValue_1, rowData: rowData, rowEditableCells: rowEditableCells, rowKeyField: props.rowKeyField, rowKeyValue: rowKeyValue_1, rowReordering: rowReordering, selectedRows: props.selectedRows, trRef: rowRefLink, validation: validation }));
rowRefLink = undefined;
return dataRow;
}
})));
};
exports.default = Rows;