react-table-6
Version:
A fast, lightweight, opinionated table and datagrid built on React
834 lines (727 loc) • 115 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReactTableDefaults = undefined;
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _utils = require('./utils');
var _utils2 = _interopRequireDefault(_utils);
var _lifecycle = require('./lifecycle');
var _lifecycle2 = _interopRequireDefault(_lifecycle);
var _methods = require('./methods');
var _methods2 = _interopRequireDefault(_methods);
var _defaultProps = require('./defaultProps');
var _defaultProps2 = _interopRequireDefault(_defaultProps);
var _propTypes = require('./propTypes');
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
//
var ReactTableDefaults = exports.ReactTableDefaults = _defaultProps2.default;
var ReactTable = function (_Methods) {
_inherits(ReactTable, _Methods);
function ReactTable(props) {
_classCallCheck(this, ReactTable);
var _this = _possibleConstructorReturn(this, (ReactTable.__proto__ || Object.getPrototypeOf(ReactTable)).call(this));
_this.getResolvedState = _this.getResolvedState.bind(_this);
_this.getDataModel = _this.getDataModel.bind(_this);
_this.getSortedData = _this.getSortedData.bind(_this);
_this.fireFetchData = _this.fireFetchData.bind(_this);
_this.getPropOrState = _this.getPropOrState.bind(_this);
_this.getStateOrProp = _this.getStateOrProp.bind(_this);
_this.filterData = _this.filterData.bind(_this);
_this.sortData = _this.sortData.bind(_this);
_this.getMinRows = _this.getMinRows.bind(_this);
_this.onPageChange = _this.onPageChange.bind(_this);
_this.onPageSizeChange = _this.onPageSizeChange.bind(_this);
_this.sortColumn = _this.sortColumn.bind(_this);
_this.filterColumn = _this.filterColumn.bind(_this);
_this.resizeColumnStart = _this.resizeColumnStart.bind(_this);
_this.resizeColumnEnd = _this.resizeColumnEnd.bind(_this);
_this.resizeColumnMoving = _this.resizeColumnMoving.bind(_this);
_this.state = {
page: props.defaultPage,
pageSize: props.defaultPageSize,
sorted: props.defaultSorted,
expanded: props.defaultExpanded,
filtered: props.defaultFiltered,
resized: props.defaultResized,
currentlyResizing: false,
skipNextSort: false
};
return _this;
}
_createClass(ReactTable, [{
key: 'render',
value: function render() {
var _this2 = this;
var resolvedState = this.getResolvedState();
var children = resolvedState.children,
className = resolvedState.className,
style = resolvedState.style,
getProps = resolvedState.getProps,
getTableProps = resolvedState.getTableProps,
getTheadGroupProps = resolvedState.getTheadGroupProps,
getTheadGroupTrProps = resolvedState.getTheadGroupTrProps,
getTheadGroupThProps = resolvedState.getTheadGroupThProps,
getTheadProps = resolvedState.getTheadProps,
getTheadTrProps = resolvedState.getTheadTrProps,
getTheadThProps = resolvedState.getTheadThProps,
getTheadFilterProps = resolvedState.getTheadFilterProps,
getTheadFilterTrProps = resolvedState.getTheadFilterTrProps,
getTheadFilterThProps = resolvedState.getTheadFilterThProps,
getTbodyProps = resolvedState.getTbodyProps,
getTrGroupProps = resolvedState.getTrGroupProps,
getTrProps = resolvedState.getTrProps,
getTdProps = resolvedState.getTdProps,
getTfootProps = resolvedState.getTfootProps,
getTfootTrProps = resolvedState.getTfootTrProps,
getTfootTdProps = resolvedState.getTfootTdProps,
getPaginationProps = resolvedState.getPaginationProps,
getLoadingProps = resolvedState.getLoadingProps,
getNoDataProps = resolvedState.getNoDataProps,
getResizerProps = resolvedState.getResizerProps,
showPagination = resolvedState.showPagination,
showPaginationTop = resolvedState.showPaginationTop,
showPaginationBottom = resolvedState.showPaginationBottom,
manual = resolvedState.manual,
loadingText = resolvedState.loadingText,
noDataText = resolvedState.noDataText,
sortable = resolvedState.sortable,
multiSort = resolvedState.multiSort,
resizable = resolvedState.resizable,
filterable = resolvedState.filterable,
pivotIDKey = resolvedState.pivotIDKey,
pivotValKey = resolvedState.pivotValKey,
pivotBy = resolvedState.pivotBy,
subRowsKey = resolvedState.subRowsKey,
aggregatedKey = resolvedState.aggregatedKey,
originalKey = resolvedState.originalKey,
indexKey = resolvedState.indexKey,
groupedByPivotKey = resolvedState.groupedByPivotKey,
loading = resolvedState.loading,
pageSize = resolvedState.pageSize,
page = resolvedState.page,
sorted = resolvedState.sorted,
filtered = resolvedState.filtered,
resized = resolvedState.resized,
expanded = resolvedState.expanded,
pages = resolvedState.pages,
onExpandedChange = resolvedState.onExpandedChange,
TableComponent = resolvedState.TableComponent,
TheadComponent = resolvedState.TheadComponent,
TbodyComponent = resolvedState.TbodyComponent,
TrGroupComponent = resolvedState.TrGroupComponent,
TrComponent = resolvedState.TrComponent,
ThComponent = resolvedState.ThComponent,
TdComponent = resolvedState.TdComponent,
TfootComponent = resolvedState.TfootComponent,
PaginationComponent = resolvedState.PaginationComponent,
LoadingComponent = resolvedState.LoadingComponent,
SubComponent = resolvedState.SubComponent,
NoDataComponent = resolvedState.NoDataComponent,
ResizerComponent = resolvedState.ResizerComponent,
ExpanderComponent = resolvedState.ExpanderComponent,
PivotValueComponent = resolvedState.PivotValueComponent,
PivotComponent = resolvedState.PivotComponent,
AggregatedComponent = resolvedState.AggregatedComponent,
FilterComponent = resolvedState.FilterComponent,
PadRowComponent = resolvedState.PadRowComponent,
resolvedData = resolvedState.resolvedData,
allVisibleColumns = resolvedState.allVisibleColumns,
headerGroups = resolvedState.headerGroups,
hasHeaderGroups = resolvedState.hasHeaderGroups,
sortedData = resolvedState.sortedData,
currentlyResizing = resolvedState.currentlyResizing;
// Pagination
var startRow = pageSize * page;
var endRow = startRow + pageSize;
var pageRows = manual ? resolvedData : sortedData.slice(startRow, endRow);
var minRows = this.getMinRows();
var padRows = _utils2.default.range(Math.max(minRows - pageRows.length, 0));
var hasColumnFooter = allVisibleColumns.some(function (d) {
return d.Footer;
});
var hasFilters = filterable || allVisibleColumns.some(function (d) {
return d.filterable;
});
var recurseRowsViewIndex = function recurseRowsViewIndex(rows) {
var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
return [rows.map(function (row, i) {
index += 1;
var rowWithViewIndex = _extends({}, row, {
_viewIndex: index
});
var newPath = path.concat([i]);
if (rowWithViewIndex[subRowsKey] && _utils2.default.get(expanded, newPath)) {
var _recurseRowsViewIndex = recurseRowsViewIndex(rowWithViewIndex[subRowsKey], newPath, index);
var _recurseRowsViewIndex2 = _slicedToArray(_recurseRowsViewIndex, 2);
rowWithViewIndex[subRowsKey] = _recurseRowsViewIndex2[0];
index = _recurseRowsViewIndex2[1];
}
return rowWithViewIndex;
}), index];
};
var _recurseRowsViewIndex3 = recurseRowsViewIndex(pageRows);
var _recurseRowsViewIndex4 = _slicedToArray(_recurseRowsViewIndex3, 1);
pageRows = _recurseRowsViewIndex4[0];
var canPrevious = page > 0;
var canNext = page + 1 < pages;
var rowMinWidth = _utils2.default.sum(allVisibleColumns.map(function (d) {
var resizedColumn = resized.find(function (x) {
return x.id === d.id;
}) || {};
return _utils2.default.getFirstDefined(resizedColumn.value, d.width, d.minWidth);
}));
var rowIndex = -1;
var finalState = _extends({}, resolvedState, {
startRow: startRow,
endRow: endRow,
pageRows: pageRows,
minRows: minRows,
padRows: padRows,
hasColumnFooter: hasColumnFooter,
canPrevious: canPrevious,
canNext: canNext,
rowMinWidth: rowMinWidth
});
var rootProps = _utils2.default.splitProps(getProps(finalState, undefined, undefined, this));
var tableProps = _utils2.default.splitProps(getTableProps(finalState, undefined, undefined, this));
var tBodyProps = _utils2.default.splitProps(getTbodyProps(finalState, undefined, undefined, this));
var loadingProps = getLoadingProps(finalState, undefined, undefined, this);
var noDataProps = getNoDataProps(finalState, undefined, undefined, this);
// Visual Components
var makeHeaderGroup = function makeHeaderGroup(column, i) {
var resizedValue = function resizedValue(col) {
return (resized.find(function (x) {
return x.id === col.id;
}) || {}).value;
};
var flex = _utils2.default.sum(column.columns.map(function (col) {
return col.width || resizedValue(col) ? 0 : col.minWidth;
}));
var width = _utils2.default.sum(column.columns.map(function (col) {
return _utils2.default.getFirstDefined(resizedValue(col), col.width, col.minWidth);
}));
var maxWidth = _utils2.default.sum(column.columns.map(function (col) {
return _utils2.default.getFirstDefined(resizedValue(col), col.width, col.maxWidth);
}));
var theadGroupThProps = _utils2.default.splitProps(getTheadGroupThProps(finalState, undefined, column, _this2));
var columnHeaderProps = _utils2.default.splitProps(column.getHeaderProps(finalState, undefined, column, _this2));
var classes = [column.headerClassName, theadGroupThProps.className, columnHeaderProps.className];
var styles = _extends({}, column.headerStyle, theadGroupThProps.style, columnHeaderProps.style);
var rest = _extends({}, theadGroupThProps.rest, columnHeaderProps.rest);
var flexStyles = {
flex: flex + ' 0 auto',
width: _utils2.default.asPx(width),
maxWidth: _utils2.default.asPx(maxWidth)
};
return _react2.default.createElement(
ThComponent,
_extends({
key: i + '-' + column.id,
className: (0, _classnames2.default)(classes),
style: _extends({}, styles, flexStyles)
}, rest),
_utils2.default.normalizeComponent(column.Header, {
data: sortedData,
column: column
})
);
};
var makeHeaderGroups = function makeHeaderGroups() {
var theadGroupProps = _utils2.default.splitProps(getTheadGroupProps(finalState, undefined, undefined, _this2));
var theadGroupTrProps = _utils2.default.splitProps(getTheadGroupTrProps(finalState, undefined, undefined, _this2));
return _react2.default.createElement(
TheadComponent,
_extends({
className: (0, _classnames2.default)('-headerGroups', theadGroupProps.className),
style: _extends({}, theadGroupProps.style, {
minWidth: rowMinWidth + 'px'
})
}, theadGroupProps.rest),
_react2.default.createElement(
TrComponent,
_extends({
className: theadGroupTrProps.className,
style: theadGroupTrProps.style
}, theadGroupTrProps.rest),
headerGroups.map(makeHeaderGroup)
)
);
};
var makeHeader = function makeHeader(column, i) {
var resizedCol = resized.find(function (x) {
return x.id === column.id;
}) || {};
var sort = sorted.find(function (d) {
return d.id === column.id;
});
var show = typeof column.show === 'function' ? column.show() : column.show;
var width = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.minWidth);
var maxWidth = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.maxWidth);
var theadThProps = _utils2.default.splitProps(getTheadThProps(finalState, undefined, column, _this2));
var columnHeaderProps = _utils2.default.splitProps(column.getHeaderProps(finalState, undefined, column, _this2));
var classes = [column.headerClassName, theadThProps.className, columnHeaderProps.className];
var styles = _extends({}, column.headerStyle, theadThProps.style, columnHeaderProps.style);
var rest = _extends({}, theadThProps.rest, columnHeaderProps.rest);
var isResizable = _utils2.default.getFirstDefined(column.resizable, resizable, false);
var resizer = isResizable ? _react2.default.createElement(ResizerComponent, _extends({
onMouseDown: function onMouseDown(e) {
return _this2.resizeColumnStart(e, column, false);
},
onTouchStart: function onTouchStart(e) {
return _this2.resizeColumnStart(e, column, true);
}
}, getResizerProps('finalState', undefined, column, _this2))) : null;
var isSortable = _utils2.default.getFirstDefined(column.sortable, sortable, false);
return _react2.default.createElement(
ThComponent,
_extends({
key: i + '-' + column.id,
className: (0, _classnames2.default)(classes, isResizable && 'rt-resizable-header', sort ? sort.desc ? '-sort-desc' : '-sort-asc' : '', isSortable && '-cursor-pointer', !show && '-hidden', pivotBy && pivotBy.slice(0, -1).includes(column.id) && 'rt-header-pivot'),
style: _extends({}, styles, {
flex: width + ' 0 auto',
width: _utils2.default.asPx(width),
maxWidth: _utils2.default.asPx(maxWidth)
}),
toggleSort: function toggleSort(e) {
if (isSortable) _this2.sortColumn(column, multiSort ? e.shiftKey : false);
}
}, rest),
_react2.default.createElement(
'div',
{ className: (0, _classnames2.default)(isResizable && 'rt-resizable-header-content') },
_utils2.default.normalizeComponent(column.Header, {
data: sortedData,
column: column
})
),
resizer
);
};
var makeHeaders = function makeHeaders() {
var theadProps = _utils2.default.splitProps(getTheadProps(finalState, undefined, undefined, _this2));
var theadTrProps = _utils2.default.splitProps(getTheadTrProps(finalState, undefined, undefined, _this2));
return _react2.default.createElement(
TheadComponent,
_extends({
className: (0, _classnames2.default)('-header', theadProps.className),
style: _extends({}, theadProps.style, {
minWidth: rowMinWidth + 'px'
})
}, theadProps.rest),
_react2.default.createElement(
TrComponent,
_extends({
className: theadTrProps.className,
style: theadTrProps.style
}, theadTrProps.rest),
allVisibleColumns.map(makeHeader)
)
);
};
var makeFilter = function makeFilter(column, i) {
var resizedCol = resized.find(function (x) {
return x.id === column.id;
}) || {};
var width = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.minWidth);
var maxWidth = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.maxWidth);
var theadFilterThProps = _utils2.default.splitProps(getTheadFilterThProps(finalState, undefined, column, _this2));
var columnHeaderProps = _utils2.default.splitProps(column.getHeaderProps(finalState, undefined, column, _this2));
var classes = [column.headerClassName, theadFilterThProps.className, columnHeaderProps.className];
var styles = _extends({}, column.headerStyle, theadFilterThProps.style, columnHeaderProps.style);
var rest = _extends({}, theadFilterThProps.rest, columnHeaderProps.rest);
var filter = filtered.find(function (filter) {
return filter.id === column.id;
});
var ResolvedFilterComponent = column.Filter || FilterComponent;
var isFilterable = _utils2.default.getFirstDefined(column.filterable, filterable, false);
return _react2.default.createElement(
ThComponent,
_extends({
key: i + '-' + column.id,
className: (0, _classnames2.default)(classes),
style: _extends({}, styles, {
flex: width + ' 0 auto',
width: _utils2.default.asPx(width),
maxWidth: _utils2.default.asPx(maxWidth)
})
}, rest),
isFilterable ? _utils2.default.normalizeComponent(ResolvedFilterComponent, {
column: column,
filter: filter,
onChange: function onChange(value) {
return _this2.filterColumn(column, value);
}
}, _defaultProps2.default.column.Filter) : null
);
};
var makeFilters = function makeFilters() {
var theadFilterProps = _utils2.default.splitProps(getTheadFilterProps(finalState, undefined, undefined, _this2));
var theadFilterTrProps = _utils2.default.splitProps(getTheadFilterTrProps(finalState, undefined, undefined, _this2));
return _react2.default.createElement(
TheadComponent,
_extends({
className: (0, _classnames2.default)('-filters', theadFilterProps.className),
style: _extends({}, theadFilterProps.style, {
minWidth: rowMinWidth + 'px'
})
}, theadFilterProps.rest),
_react2.default.createElement(
TrComponent,
_extends({
className: theadFilterTrProps.className,
style: theadFilterTrProps.style
}, theadFilterTrProps.rest),
allVisibleColumns.map(makeFilter)
)
);
};
var makePageRow = function makePageRow(row, i) {
var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var rowInfo = {
original: row[originalKey],
row: row,
index: row[indexKey],
viewIndex: rowIndex += 1,
pageSize: pageSize,
page: page,
level: path.length,
nestingPath: path.concat([i]),
aggregated: row[aggregatedKey],
groupedByPivot: row[groupedByPivotKey],
subRows: row[subRowsKey]
};
var isExpanded = _utils2.default.get(expanded, rowInfo.nestingPath);
var trGroupProps = getTrGroupProps(finalState, rowInfo, undefined, _this2);
var trProps = _utils2.default.splitProps(getTrProps(finalState, rowInfo, undefined, _this2));
return _react2.default.createElement(
TrGroupComponent,
_extends({ key: rowInfo.nestingPath.join('_') }, trGroupProps),
_react2.default.createElement(
TrComponent,
_extends({
className: (0, _classnames2.default)(trProps.className, row._viewIndex % 2 ? '-even' : '-odd'),
style: trProps.style
}, trProps.rest),
allVisibleColumns.map(function (column, i2) {
var resizedCol = resized.find(function (x) {
return x.id === column.id;
}) || {};
var show = typeof column.show === 'function' ? column.show() : column.show;
var width = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.minWidth);
var maxWidth = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.maxWidth);
var tdProps = _utils2.default.splitProps(getTdProps(finalState, rowInfo, column, _this2));
var columnProps = _utils2.default.splitProps(column.getProps(finalState, rowInfo, column, _this2));
var classes = [tdProps.className, column.className, columnProps.className];
var styles = _extends({}, tdProps.style, column.style, columnProps.style);
var cellInfo = _extends({}, rowInfo, {
isExpanded: isExpanded,
column: _extends({}, column),
value: rowInfo.row[column.id],
pivoted: column.pivoted,
expander: column.expander,
resized: resized,
show: show,
width: width,
maxWidth: maxWidth,
tdProps: tdProps,
columnProps: columnProps,
classes: classes,
styles: styles
});
var value = cellInfo.value;
var useOnExpanderClick = void 0;
var isBranch = void 0;
var isPreview = void 0;
var onExpanderClick = function onExpanderClick(e) {
var newExpanded = _utils2.default.clone(expanded);
if (isExpanded) {
newExpanded = _utils2.default.set(newExpanded, cellInfo.nestingPath, false);
} else {
newExpanded = _utils2.default.set(newExpanded, cellInfo.nestingPath, {});
}
return _this2.setStateWithData({
expanded: newExpanded
}, function () {
return onExpandedChange && onExpandedChange(newExpanded, cellInfo.nestingPath, e, cellInfo);
});
};
// Default to a standard cell
var resolvedCell = _utils2.default.normalizeComponent(column.Cell, cellInfo, value);
// Resolve Renderers
var ResolvedAggregatedComponent = column.Aggregated || (!column.aggregate ? AggregatedComponent : column.Cell);
var ResolvedExpanderComponent = column.Expander || ExpanderComponent;
var ResolvedPivotValueComponent = column.PivotValue || PivotValueComponent;
var DefaultResolvedPivotComponent = PivotComponent || function (props) {
return _react2.default.createElement(
'div',
null,
_react2.default.createElement(ResolvedExpanderComponent, props),
_react2.default.createElement(ResolvedPivotValueComponent, props)
);
};
var ResolvedPivotComponent = column.Pivot || DefaultResolvedPivotComponent;
// Is this cell expandable?
if (cellInfo.pivoted || cellInfo.expander) {
// Make it expandable by defualt
cellInfo.expandable = true;
useOnExpanderClick = true;
// If pivoted, has no subRows, and does not have a subComponent,
// do not make expandable
if (cellInfo.pivoted && !cellInfo.subRows && !SubComponent) {
cellInfo.expandable = false;
}
}
if (cellInfo.pivoted) {
// Is this column a branch?
isBranch = rowInfo.row[pivotIDKey] === column.id && cellInfo.subRows;
// Should this column be blank?
isPreview = pivotBy.indexOf(column.id) > pivotBy.indexOf(rowInfo.row[pivotIDKey]) && cellInfo.subRows;
// Pivot Cell Render Override
if (isBranch) {
// isPivot
resolvedCell = _utils2.default.normalizeComponent(ResolvedPivotComponent, _extends({}, cellInfo, {
value: row[pivotValKey]
}), row[pivotValKey]);
} else if (isPreview) {
// Show the pivot preview
resolvedCell = _utils2.default.normalizeComponent(ResolvedAggregatedComponent, cellInfo, value);
} else {
resolvedCell = null;
}
} else if (cellInfo.aggregated) {
resolvedCell = _utils2.default.normalizeComponent(ResolvedAggregatedComponent, cellInfo, value);
}
if (cellInfo.expander) {
resolvedCell = _utils2.default.normalizeComponent(ResolvedExpanderComponent, cellInfo, row[pivotValKey]);
if (pivotBy) {
if (cellInfo.groupedByPivot) {
resolvedCell = null;
}
if (!cellInfo.subRows && !SubComponent) {
resolvedCell = null;
}
}
}
var resolvedOnExpanderClick = useOnExpanderClick ? onExpanderClick : function () {};
// If there are multiple onClick events, make sure they don't
// override eachother. This should maybe be expanded to handle all
// function attributes
var interactionProps = {
onClick: resolvedOnExpanderClick
};
if (tdProps.rest.onClick) {
interactionProps.onClick = function (e) {
tdProps.rest.onClick(e, function () {
return resolvedOnExpanderClick(e);
});
};
}
if (columnProps.rest.onClick) {
interactionProps.onClick = function (e) {
columnProps.rest.onClick(e, function () {
return resolvedOnExpanderClick(e);
});
};
}
// Return the cell
return _react2.default.createElement(
TdComponent
// eslint-disable-next-line react/no-array-index-key
,
_extends({ key: i2 + '-' + column.id,
className: (0, _classnames2.default)(classes, !cellInfo.expandable && !show && 'hidden', cellInfo.expandable && 'rt-expandable', (isBranch || isPreview) && 'rt-pivot'),
style: _extends({}, styles, {
flex: width + ' 0 auto',
width: _utils2.default.asPx(width),
maxWidth: _utils2.default.asPx(maxWidth)
})
}, tdProps.rest, columnProps.rest, interactionProps),
resolvedCell
);
})
),
rowInfo.subRows && isExpanded && rowInfo.subRows.map(function (d, i) {
return makePageRow(d, i, rowInfo.nestingPath);
}),
SubComponent && !rowInfo.subRows && isExpanded && SubComponent(rowInfo, function () {
var newExpanded = _utils2.default.clone(expanded);
_utils2.default.set(newExpanded, rowInfo.nestingPath, false);
})
);
};
var makePadColumn = function makePadColumn(column, i) {
var resizedCol = resized.find(function (x) {
return x.id === column.id;
}) || {};
var show = typeof column.show === 'function' ? column.show() : column.show;
var width = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.minWidth);
var flex = width;
var maxWidth = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.maxWidth);
var tdProps = _utils2.default.splitProps(getTdProps(finalState, undefined, column, _this2));
var columnProps = _utils2.default.splitProps(column.getProps(finalState, undefined, column, _this2));
var classes = [tdProps.className, column.className, columnProps.className];
var styles = _extends({}, tdProps.style, column.style, columnProps.style);
return _react2.default.createElement(
TdComponent,
_extends({
key: i + '-' + column.id,
className: (0, _classnames2.default)(classes, !show && 'hidden'),
style: _extends({}, styles, {
flex: flex + ' 0 auto',
width: _utils2.default.asPx(width),
maxWidth: _utils2.default.asPx(maxWidth)
})
}, tdProps.rest),
_utils2.default.normalizeComponent(PadRowComponent)
);
};
var makePadRow = function makePadRow(row, i) {
var trGroupProps = getTrGroupProps(finalState, undefined, undefined, _this2);
var trProps = _utils2.default.splitProps(getTrProps(finalState, undefined, undefined, _this2));
return _react2.default.createElement(
TrGroupComponent,
_extends({ key: 'pad-' + i }, trGroupProps),
_react2.default.createElement(
TrComponent,
{
className: (0, _classnames2.default)('-padRow', (pageRows.length + i) % 2 ? '-even' : '-odd', trProps.className),
style: trProps.style || {}
},
allVisibleColumns.map(makePadColumn)
)
);
};
var makeColumnFooter = function makeColumnFooter(column, i) {
var resizedCol = resized.find(function (x) {
return x.id === column.id;
}) || {};
var show = typeof column.show === 'function' ? column.show() : column.show;
var width = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.minWidth);
var maxWidth = _utils2.default.getFirstDefined(resizedCol.value, column.width, column.maxWidth);
var tFootTdProps = _utils2.default.splitProps(getTfootTdProps(finalState, undefined, column, _this2));
var columnProps = _utils2.default.splitProps(column.getProps(finalState, undefined, column, _this2));
var columnFooterProps = _utils2.default.splitProps(column.getFooterProps(finalState, undefined, column, _this2));
var classes = [tFootTdProps.className, column.className, columnProps.className, columnFooterProps.className];
var styles = _extends({}, tFootTdProps.style, column.style, columnProps.style, columnFooterProps.style);
return _react2.default.createElement(
TdComponent,
_extends({
key: i + '-' + column.id,
className: (0, _classnames2.default)(classes, !show && 'hidden'),
style: _extends({}, styles, {
flex: width + ' 0 auto',
width: _utils2.default.asPx(width),
maxWidth: _utils2.default.asPx(maxWidth)
})
}, columnProps.rest, tFootTdProps.rest, columnFooterProps.rest),
_utils2.default.normalizeComponent(column.Footer, {
data: sortedData,
column: column
})
);
};
var makeColumnFooters = function makeColumnFooters() {
var tFootProps = _utils2.default.splitProps(getTfootProps(finalState, undefined, undefined, _this2));
var tFootTrProps = _utils2.default.splitProps(getTfootTrProps(finalState, undefined, undefined, _this2));
return _react2.default.createElement(
TfootComponent,
_extends({
className: tFootProps.className,
style: _extends({}, tFootProps.style, {
minWidth: rowMinWidth + 'px'
})
}, tFootProps.rest),
_react2.default.createElement(
TrComponent,
_extends({
className: (0, _classnames2.default)(tFootTrProps.className),
style: tFootTrProps.style
}, tFootTrProps.rest),
allVisibleColumns.map(makeColumnFooter)
)
);
};
var makePagination = function makePagination(isTop) {
var paginationProps = _utils2.default.splitProps(getPaginationProps(finalState, undefined, undefined, _this2));
return _react2.default.createElement(PaginationComponent, _extends({}, resolvedState, {
pages: pages,
canPrevious: canPrevious,
canNext: canNext,
onPageChange: _this2.onPageChange,
onPageSizeChange: _this2.onPageSizeChange,
className: paginationProps.className,
style: paginationProps.style,
isTop: isTop
}, paginationProps.rest));
};
var makeTable = function makeTable() {
return _react2.default.createElement(
'div',
_extends({
className: (0, _classnames2.default)('ReactTable', className, rootProps.className),
style: _extends({}, style, rootProps.style)
}, rootProps.rest),
showPagination && showPaginationTop ? _react2.default.createElement(
'div',
{ className: 'pagination-top' },
makePagination(true)
) : null,
_react2.default.createElement(
TableComponent,
_extends({
className: (0, _classnames2.default)(tableProps.className, currentlyResizing ? 'rt-resizing' : ''),
style: tableProps.style
}, tableProps.rest),
hasHeaderGroups ? makeHeaderGroups() : null,
makeHeaders(),
hasFilters ? makeFilters() : null,
_react2.default.createElement(
TbodyComponent,
_extends({
className: (0, _classnames2.default)(tBodyProps.className),
style: _extends({}, tBodyProps.style, {
minWidth: rowMinWidth + 'px'
})
}, tBodyProps.rest),
pageRows.map(function (d, i) {
return makePageRow(d, i);
}),
padRows.map(makePadRow)
),
hasColumnFooter ? makeColumnFooters() : null
),
showPagination && showPaginationBottom ? _react2.default.createElement(
'div',
{ className: 'pagination-bottom' },
makePagination(false)
) : null,
!pageRows.length && _react2.default.createElement(
NoDataComponent,
noDataProps,
_utils2.default.normalizeComponent(noDataText)
),
_react2.default.createElement(LoadingComponent, _extends({ loading: loading, loadingText: loadingText }, loadingProps))
);
};
// childProps are optionally passed to a function-as-a-child
return children ? children(finalState, makeTable, this) : makeTable();
}
}]);
return ReactTable;
}((0, _methods2.default)((0, _lifecycle2.default)(_react.Component)));
ReactTable.propTypes = _propTypes2.default;
ReactTable.defaultProps = _defaultProps2.default;
exports.default = ReactTable;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSZWFjdFRhYmxlRGVmYXVsdHMiLCJkZWZhdWx0UHJvcHMiLCJSZWFjdFRhYmxlIiwicHJvcHMiLCJnZXRSZXNvbHZlZFN0YXRlIiwiYmluZCIsImdldERhdGFNb2RlbCIsImdldFNvcnRlZERhdGEiLCJmaXJlRmV0Y2hEYXRhIiwiZ2V0UHJvcE9yU3RhdGUiLCJnZXRTdGF0ZU9yUHJvcCIsImZpbHRlckRhdGEiLCJzb3J0RGF0YSIsImdldE1pblJvd3MiLCJvblBhZ2VDaGFuZ2UiLCJvblBhZ2VTaXplQ2hhbmdlIiwic29ydENvbHVtbiIsImZpbHRlckNvbHVtbiIsInJlc2l6ZUNvbHVtblN0YXJ0IiwicmVzaXplQ29sdW1uRW5kIiwicmVzaXplQ29sdW1uTW92aW5nIiwic3RhdGUiLCJwYWdlIiwiZGVmYXVsdFBhZ2UiLCJwYWdlU2l6ZSIsImRlZmF1bHRQYWdlU2l6ZSIsInNvcnRlZCIsImRlZmF1bHRTb3J0ZWQiLCJleHBhbmRlZCIsImRlZmF1bHRFeHBhbmRlZCIsImZpbHRlcmVkIiwiZGVmYXVsdEZpbHRlcmVkIiwicmVzaXplZCIsImRlZmF1bHRSZXNpemVkIiwiY3VycmVudGx5UmVzaXppbmciLCJza2lwTmV4dFNvcnQiLCJyZXNvbHZlZFN0YXRlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJzdHlsZSIsImdldFByb3BzIiwiZ2V0VGFibGVQcm9wcyIsImdldFRoZWFkR3JvdXBQcm9wcyIsImdldFRoZWFkR3JvdXBUclByb3BzIiwiZ2V0VGhlYWRHcm91cFRoUHJvcHMiLCJnZXRUaGVhZFByb3BzIiwiZ2V0VGhlYWRUclByb3BzIiwiZ2V0VGhlYWRUaFByb3BzIiwiZ2V0VGhlYWRGaWx0ZXJQcm9wcyIsImdldFRoZWFkRmlsdGVyVHJQcm9wcyIsImdldFRoZWFkRmlsdGVyVGhQcm9wcyIsImdldFRib2R5UHJvcHMiLCJnZXRUckdyb3VwUHJvcHMiLCJnZXRUclByb3BzIiwiZ2V0VGRQcm9wcyIsImdldFRmb290UHJvcHMiLCJnZXRUZm9vdFRyUHJvcHMiLCJnZXRUZm9vdFRkUHJvcHMiLCJnZXRQYWdpbmF0aW9uUHJvcHMiLCJnZXRMb2FkaW5nUHJvcHMiLCJnZXROb0RhdGFQcm9wcyIsImdldFJlc2l6ZXJQcm9wcyIsInNob3dQYWdpbmF0aW9uIiwic2hvd1BhZ2luYXRpb25Ub3AiLCJzaG93UGFnaW5hdGlvbkJvdHRvbSIsIm1hbnVhbCIsImxvYWRpbmdUZXh0Iiwibm9EYXRhVGV4dCIsInNvcnRhYmxlIiwibXVsdGlTb3J0IiwicmVzaXphYmxlIiwiZmlsdGVyYWJsZSIsInBpdm90SURLZXkiLCJwaXZvdFZhbEtleSIsInBpdm90QnkiLCJzdWJSb3dzS2V5IiwiYWdncmVnYXRlZEtleSIsIm9yaWdpbmFsS2V5IiwiaW5kZXhLZXkiLCJncm91cGVkQnlQaXZvdEtleSIsImxvYWRpbmciLCJwYWdlcyIsIm9uRXhwYW5kZWRDaGFuZ2UiLCJUYWJsZUNvbXBvbmVudCIsIlRoZWFkQ29tcG9uZW50IiwiVGJvZHlDb21wb25lbnQiLCJUckdyb3VwQ29tcG9uZW50IiwiVHJDb21wb25lbnQiLCJUaENvbXBvbmVudCIsIlRkQ29tcG9uZW50IiwiVGZvb3RDb21wb25lbnQiLCJQYWdpbmF0aW9uQ29tcG9uZW50IiwiTG9hZGluZ0NvbXBvbmVudCIsIlN1YkNvbXBvbmVudCIsIk5vRGF0YUNvbXBvbmVudCIsIlJlc2l6ZXJDb21wb25lbnQiLCJFeHBhbmRlckNvbXBvbmVudCIsIlBpdm90VmFsdWVDb21wb25lbnQiLCJQaXZvdENvbXBvbmVudCIsIkFnZ3JlZ2F0ZWRDb21wb25lbnQiLCJGaWx0ZXJDb21wb25lbnQiLCJQYWRSb3dDb21wb25lbnQiLCJyZXNvbHZlZERhdGEiLCJhbGxWaXNpYmxlQ29sdW1ucyIsImhlYWRlckdyb3VwcyIsImhhc0hlYWRlckdyb3VwcyIsInNvcnRlZERhdGEiLCJzdGFydFJvdyIsImVuZFJvdyIsInBhZ2VSb3dzIiwic2xpY2UiLCJtaW5Sb3dzIiwicGFkUm93cyIsIl8iLCJyYW5nZSIsIk1hdGgiLCJtYXgiLCJsZW5ndGgiLCJoYXNDb2x1bW5Gb290ZXIiLCJzb21lIiwiZCIsIkZvb3RlciIsImhhc0ZpbHRlcnMiLCJyZWN1cnNlUm93c1ZpZXdJbmRleCIsInJvd3MiLCJwYXRoIiwiaW5kZXgiLCJtYXAiLCJyb3ciLCJpIiwicm93V2l0aFZpZXdJbmRleCIsIl92aWV3SW5kZXgiLCJuZXdQYXRoIiwiY29uY2F0IiwiZ2V0IiwiY2FuUHJldmlvdXMiLCJjYW5OZXh0Iiwicm93TWluV2lkdGgiLCJzdW0iLCJyZXNpemVkQ29sdW1uIiwiZmluZCIsIngiLCJpZCIsImdldEZpcnN0RGVmaW5lZCIsInZhbHVlIiwid2lkdGgiLCJtaW5XaWR0aCIsInJvd0luZGV4IiwiZmluYWxTdGF0ZSIsInJvb3RQcm9wcyIsInNwbGl0UHJvcHMiLCJ1bmRlZmluZWQiLCJ0YWJsZVByb3BzIiwidEJvZHlQcm9wcyIsImxvYWRpbmdQcm9wcyIsIm5vRGF0YVByb3BzIiwibWFrZUhlYWRlckdyb3VwIiwiY29sdW1uIiwicmVzaXplZFZhbHVlIiwiY29sIiwiZmxleCIsImNvbHVtbnMiLCJtYXhXaWR0aCIsInRoZWFkR3JvdXBUaFByb3BzIiwiY29sdW1uSGVhZGVyUHJvcHMiLCJnZXRIZWFkZXJQcm9wcyIsImNsYXNzZXMiLCJoZWFkZXJDbGFzc05hbWUiLCJzdHlsZXMiLCJoZWFkZXJTdHlsZSIsInJlc3QiLCJmbGV4U3R5bGVzIiwiYXNQeCIsIm5vcm1hbGl6ZUNvbXBvbmVudCIsIkhlYWRlciIsImRhdGEiLCJtYWtlSGVhZGVyR3JvdXBzIiwidGhlYWRHcm91cFByb3BzIiwidGhlYWRHcm91cFRyUHJvcHMiLCJtYWtlSGVhZGVyIiwicmVzaXplZENvbCIsInNvcnQiLCJzaG93IiwidGhlYWRUaFByb3BzIiwiaXNSZXNpemFibGUiLCJyZXNpemVyIiwiZSIsImlzU29ydGFibGUiLCJkZXNjIiwiaW5jbHVkZXMiLCJzaGlmdEtleSIsIm1ha2VIZWFkZXJzIiwidGhlYWRQcm9wcyIsInRoZWFkVHJQcm9wcyIsIm1ha2VGaWx0ZXIiLCJ0aGVhZEZpbHRlclRoUHJvcHMiLCJmaWx0ZXIiLCJSZXNvbHZlZEZpbHRlckNvbXBvbmVudCIsIkZpbHRlciIsImlzRmlsdGVyYWJsZSIsIm9uQ2hhbmdlIiwibWFrZUZpbHRlcnMiLCJ0aGVhZEZpbHRlclByb3BzIiwidGhlYWRGaWx0ZXJUclByb3BzIiwibWFrZVBhZ2VSb3ciLCJyb3dJbmZvIiwib3JpZ2luYWwiLCJ2aWV3SW5kZXgiLCJsZXZlbCIsIm5lc3RpbmdQYXRoIiwiYWdncmVnYXRlZCIsImdyb3VwZWRCeVBpdm90Iiwic3ViUm93cyIsImlzRXhwYW5kZWQiLCJ0ckdyb3VwUHJvcHMiLCJ0clByb3BzIiwiam9pbiIsImkyIiwidGRQcm9wcyIsImNvbHVtblByb3BzIiwiY2VsbEluZm8iLCJwaXZvdGVkIiwiZXhwYW5kZXIiLCJ1c2VPbkV4cGFuZGVyQ2xpY2siLCJpc0JyYW5jaCIsImlzUHJldmlldyIsIm9uRXhwYW5kZXJDbGljayIsIm5ld0V4cGFuZGVkIiwiY2xvbmUiLCJzZXQiLCJzZXRTdGF0ZVdpdGhEYXRhIiwicmVzb2x2ZWRDZWxsIiwiQ2VsbCIsIlJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCIsIkFnZ3JlZ2F0ZWQiLCJhZ2dyZWdhdGUiLCJSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50IiwiRXhwYW5kZXIiLCJSZXNvbHZlZFBpdm90VmFsdWVDb21wb25lbnQiLCJQaXZvdFZhbHVlIiwiRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnQiLCJSZXNvbHZlZFBpdm90Q29tcG9uZW50IiwiUGl2b3QiLCJleHBhbmRhYmxlIiwiaW5kZXhPZiIsInJlc29sdmVkT25FeHBhbmRlckNsaWNrIiwiaW50ZXJhY3Rpb25Qcm9wcyIsIm9uQ2xpY2siLCJtYWtlUGFkQ29sdW1uIiwibWFrZVBhZFJvdyIsIm1ha2VDb2x1bW5Gb290ZXIiLCJ0Rm9vdFRkUHJvcHMiLCJjb2x1bW5Gb290ZXJQcm9wcyIsImdldEZvb3RlclByb3BzIiwibWFrZUNvbHVtbkZvb3RlcnMiLCJ0Rm9vdFByb3BzIiwidEZvb3RUclByb3BzIiwibWFrZVBhZ2luYXRpb24iLCJwYWdpbmF0aW9uUHJvcHMiLCJpc1RvcCIsIm1ha2VUYWJsZSIsIkNvbXBvbmVudCIsInByb3BUeXBlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7Ozs7OztBQUxBOzs7QUFPTyxJQUFNQSxrREFBcUJDLHNCQUEzQjs7SUFFY0MsVTs7O0FBSW5CLHNCQUFhQyxLQUFiLEVBQW9CO0FBQUE7O0FBQUE7O0FBR2xCLFVBQUtDLGdCQUFMLEdBQXdCLE1BQUtBLGdCQUFMLENBQXNCQyxJQUF0QixPQUF4QjtBQUNBLFVBQUtDLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQkQsSUFBbEIsT0FBcEI7QUFDQSxVQUFLRSxhQUFMLEdBQXFCLE1BQUtBLGFBQUwsQ0FBbUJGLElBQW5CLE9BQXJCO0FBQ0EsVUFBS0csYUFBTCxHQUFxQixNQUFLQSxhQUFMLENBQW1CSCxJQUFuQixPQUFyQjtBQUNBLFVBQUtJLGNBQUwsR0FBc0IsTUFBS0EsY0FBTCxDQUFvQkosSUFBcEIsT0FBdEI7QUFDQSxVQUFLSyxjQUFMLEdBQXNCLE1BQUtBLGNBQUwsQ0FBb0JMLElBQXBCLE9BQXRCO0FBQ0EsVUFBS00sVUFBTCxHQUFrQixNQUFLQSxVQUFMLENBQWdCTixJQUFoQixPQUFsQjtBQUNBLFVBQUtPLFFBQUwsR0FBZ0IsTUFBS0EsUUFBTCxDQUFjUCxJQUFkLE9BQWhCO0FBQ0EsVUFBS1EsVUFBTCxHQUFrQixNQUFLQSxVQUFMLENBQWdCUixJQUFoQixPQUFsQjtBQUNBLFVBQUtTLFlBQUwsR0FBb0IsTUFBS0EsWUFBTCxDQUFrQlQsSUFBbEIsT0FBcEI7QUFDQSxVQUFLVSxnQkFBTCxHQUF3QixNQUFLQSxnQkFBTCxDQUFzQlYsSUFBdEIsT0FBeEI7QUFDQSxVQUFLVyxVQUFMLEdBQWtCLE1BQUtBLFVBQUwsQ0FB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