UNPKG

es-grid-template

Version:

es-grid-template

192 lines (191 loc) 7.6 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _TableBodyCell = _interopRequireDefault(require("./TableBodyCell")); var _TableBodyCellEdit = _interopRequireDefault(require("./TableBodyCellEdit")); var _react = _interopRequireDefault(require("react")); var _useContext = require("../useContext"); var _classnames = _interopRequireDefault(require("classnames")); const TableBodyRow = ({ tableId, table, columnVirtualizer, row, rowVirtualizer, virtualPaddingLeft, virtualPaddingRight, virtualRow, fixedLeftColumns, fixedRightColumns, commandClick, editAble, isEditing, contextMenuItems, onContextMenu, ...rest }) => { const { prefix, recordDoubleClick, focusedCell, rowClassName, rowEditable, onRowStyles } = _react.default.useContext(_useContext.TableContext); const visibleCells = row.getVisibleCells(); const virtualColumns = columnVirtualizer.getVirtualItems(); const centerCOlumns = virtualColumns.filter(vc => !(table.getState().columnPinning.left?.includes(visibleCells[vc.index].column.id) || table.getState().columnPinning.right?.includes(visibleCells[vc.index].column.id))); const leftTemplate = fixedLeftColumns.length > 0 ? fixedLeftColumns.map(it => row.getVisibleCells().find(c => c.column.id === it.id).column.getSize()) : []; const rightTemplate = fixedRightColumns.length > 0 ? fixedRightColumns.map(it => row.getVisibleCells().find(c => c.column.id === it.id).column.getSize()) : []; const centerTemplate = centerCOlumns.map(it => it.size); const virtualLeft = virtualPaddingLeft ? [virtualPaddingLeft] : []; const virtualRight = virtualPaddingRight ? [virtualPaddingRight] : []; const templateColumns = [...leftTemplate, ...virtualLeft, ...centerTemplate, ...virtualRight, ...rightTemplate]; const rowClass = typeof rowClassName === 'function' ? rowClassName(row.original, row.index, row.depth) : rowClassName; const rowStyles = typeof onRowStyles === 'function' ? onRowStyles(row.original, row) : onRowStyles; const isRowEditable = rowEditable ? rowEditable(row.original) : true; return /*#__PURE__*/_react.default.createElement("div", { "data-index": virtualRow.index //needed for dynamic row height measurement , ref: node => rowVirtualizer.measureElement(node) //measure dynamic row height , key: row.id, "data-row-key": row.id, className: (0, _classnames.default)(`${prefix}-grid-row ${rowClass ?? ''}`, { [`${prefix}-grid-row-selected`]: row.getIsSelected(), [`${prefix}-grid-row-focus`]: row.id === focusedCell?.rowId && !editAble, [`${prefix}-grid-row-parent`]: row.subRows && row.subRows.length > 0 || Array.isArray(row.originalSubRows) }), style: { // display: 'flex', display: 'grid', // position: 'absolute', transform: `translateY(${virtualRow.start}px)`, //this should always be a `style` as it changes on scroll // height: isEditing ? '36px' : undefined, gridTemplateColumns: `${templateColumns.map(n => `${n}fr`).join(" ")}`, height: isEditing ? virtualRow.size : undefined, minHeight: isEditing ? undefined : virtualRow.size, // backgroundColor: Array.isArray(row.originalSubRows) ? '#f5f5f5' : undefined, // fontWeight: Array.isArray(row.originalSubRows) ? '500' : undefined, ...rowStyles }, onDoubleClick: e => { recordDoubleClick?.({ e, rowData: row.original, rowIndex: row.index }); }, onContextMenu: e => { if (contextMenuItems && contextMenuItems.length) { const cell = e.target.closest('[data-col-key]'); const colKey = cell?.getAttribute('data-col-key'); onContextMenu?.({ rowData: row.original, field: colKey })(e); } } }, fixedLeftColumns.length > 0 ? fixedLeftColumns.map(column => { const cell = row.getVisibleCells().find(c => c.column.id === column.id); if (editAble) { return /*#__PURE__*/_react.default.createElement(_TableBodyCellEdit.default, (0, _extends2.default)({}, rest, { table: table, tableId: tableId, key: cell.id, cell: cell, commandClick: commandClick, virtualRow: virtualRow, isEditing: isEditing, isRowEditable: isRowEditable, rowVirtualizer: rowVirtualizer, columnVirtualizer: columnVirtualizer })); } return /*#__PURE__*/_react.default.createElement(_TableBodyCell.default, (0, _extends2.default)({}, rest, { table: table, tableId: tableId, key: cell.id, cell: cell, commandClick: commandClick, virtualRow: virtualRow, isEditing: false, rowVirtualizer: rowVirtualizer, columnVirtualizer: columnVirtualizer })); }) : null, virtualPaddingLeft ? /*#__PURE__*/_react.default.createElement("div", { className: "", style: { display: "flex", width: virtualPaddingLeft } }) : null, virtualColumns.map(vc => { const cell = visibleCells[vc.index]; const isFixed = table.getState().columnPinning.left?.includes(cell.column.id) || table.getState().columnPinning.right?.includes(cell.column.id); if (cell && !isFixed) { if (editAble) { return /*#__PURE__*/_react.default.createElement(_TableBodyCellEdit.default, (0, _extends2.default)({}, rest, { table: table, key: cell.id, tableId: tableId, cell: cell, commandClick: commandClick, isEditing: isEditing, isRowEditable: isRowEditable, rowVirtualizer: rowVirtualizer, columnVirtualizer: columnVirtualizer, virtualRow: virtualRow })); } return /*#__PURE__*/_react.default.createElement(_TableBodyCell.default, (0, _extends2.default)({}, rest, { table: table, key: cell.id, tableId: tableId, cell: cell, commandClick: commandClick, isEditing: false, rowVirtualizer: rowVirtualizer, columnVirtualizer: columnVirtualizer, virtualRow: virtualRow })); } }), fixedRightColumns.length > 0 ? fixedRightColumns.map(column => { if (editAble) { return /*#__PURE__*/_react.default.createElement(_TableBodyCellEdit.default, (0, _extends2.default)({}, rest, { table: table, key: column.id, tableId: tableId, cell: row.getVisibleCells().find(c => c.column.id === column.id), commandClick: commandClick, isEditing: isEditing, isRowEditable: isRowEditable, rowVirtualizer: rowVirtualizer, columnVirtualizer: columnVirtualizer, virtualRow: virtualRow })); } return /*#__PURE__*/_react.default.createElement(_TableBodyCell.default, (0, _extends2.default)({}, rest, { table: table, key: column.id, tableId: tableId, cell: row.getVisibleCells().find(c => c.column.id === column.id), commandClick: commandClick, isEditing: false, rowVirtualizer: rowVirtualizer, columnVirtualizer: columnVirtualizer, virtualRow: virtualRow })); }) : null, virtualPaddingRight ? /*#__PURE__*/_react.default.createElement("div", { className: "", style: { display: "flex", width: virtualPaddingRight } }) : null); }; var _default = exports.default = TableBodyRow;