UNPKG

react-bootstrap-table-next

Version:
337 lines (288 loc) 13.8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); 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 _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _header = require('./header'); var _header2 = _interopRequireDefault(_header); var _filters = require('./filters'); var _filters2 = _interopRequireDefault(_filters); var _caption = require('./caption'); var _caption2 = _interopRequireDefault(_caption); var _body = require('./body'); var _body2 = _interopRequireDefault(_body); var _footer = require('./footer'); var _footer2 = _interopRequireDefault(_footer); var _propsResolver = require('./props-resolver'); var _propsResolver2 = _interopRequireDefault(_propsResolver); var _const = require('./const'); var _const2 = _interopRequireDefault(_const); var _utils = require('./utils'); var _utils2 = _interopRequireDefault(_utils); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return 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; } /* eslint camelcase: 0 */ /* eslint arrow-body-style: 0 */ var BootstrapTable = function (_PropsBaseResolver) { _inherits(BootstrapTable, _PropsBaseResolver); function BootstrapTable(props) { _classCallCheck(this, BootstrapTable); var _this = _possibleConstructorReturn(this, (BootstrapTable.__proto__ || Object.getPrototypeOf(BootstrapTable)).call(this, props)); _this.getData = function () { return _this.visibleRows(); }; _this.validateProps(); return _this; } _createClass(BootstrapTable, [{ key: 'UNSAFE_componentWillReceiveProps', value: function UNSAFE_componentWillReceiveProps(nextProps) { if (nextProps.onDataSizeChange && !nextProps.pagination) { if (nextProps.data.length !== this.props.data.length) { nextProps.onDataSizeChange({ dataSize: nextProps.data.length }); } } } // Exposed APIs }, { key: 'render', value: function render() { var _props = this.props, loading = _props.loading, overlay = _props.overlay; if (overlay) { var LoadingOverlay = overlay(loading); return _react2.default.createElement( LoadingOverlay, null, this.renderTable() ); } return this.renderTable(); } }, { key: 'renderTable', value: function renderTable() { var _props2 = this.props, columns = _props2.columns, keyField = _props2.keyField, tabIndexCell = _props2.tabIndexCell, id = _props2.id, classes = _props2.classes, bootstrap4 = _props2.bootstrap4, striped = _props2.striped, hover = _props2.hover, bordered = _props2.bordered, condensed = _props2.condensed, noDataIndication = _props2.noDataIndication, caption = _props2.caption, rowStyle = _props2.rowStyle, rowClasses = _props2.rowClasses, wrapperClasses = _props2.wrapperClasses, rowEvents = _props2.rowEvents, selectRow = _props2.selectRow, expandRow = _props2.expandRow, cellEdit = _props2.cellEdit, filterPosition = _props2.filterPosition; var tableWrapperClass = (0, _classnames2.default)('react-bootstrap-table', wrapperClasses); var tableClass = (0, _classnames2.default)('table', _defineProperty({ 'table-striped': striped, 'table-hover': hover, 'table-bordered': bordered }, bootstrap4 ? 'table-sm' : 'table-condensed', condensed), classes); var hasFilters = columns.some(function (col) { return col.filter || col.filterRenderer; }); var hasFooter = _utils2.default.filter(columns, function (col) { return _utils2.default.has(col, 'footer'); }).length > 0; var tableCaption = caption && _react2.default.createElement( _caption2.default, { bootstrap4: bootstrap4 }, caption ); return _react2.default.createElement( 'div', { className: tableWrapperClass }, _react2.default.createElement( 'table', { id: id, className: tableClass }, tableCaption, _react2.default.createElement(_header2.default, { columns: columns, className: this.props.headerClasses, wrapperClasses: this.props.headerWrapperClasses, sortField: this.props.sortField, sortOrder: this.props.sortOrder, onSort: this.props.onSort, globalSortCaret: this.props.sort && this.props.sort.sortCaret, onFilter: this.props.onFilter, currFilters: this.props.currFilters, onExternalFilter: this.props.onExternalFilter, selectRow: selectRow, expandRow: expandRow, filterPosition: filterPosition }), hasFilters && filterPosition !== _const2.default.FILTERS_POSITION_INLINE && _react2.default.createElement(_filters2.default, { columns: columns, className: this.props.filtersClasses, onSort: this.props.onSort, onFilter: this.props.onFilter, currFilters: this.props.currFilters, filterPosition: this.props.filterPosition, onExternalFilter: this.props.onExternalFilter, selectRow: selectRow, expandRow: expandRow }), _react2.default.createElement(_body2.default, { className: this.props.bodyClasses, data: this.getData(), keyField: keyField, tabIndexCell: tabIndexCell, columns: columns, isEmpty: this.isEmpty(), visibleColumnSize: this.visibleColumnSize(), noDataIndication: noDataIndication, cellEdit: cellEdit, selectRow: selectRow, expandRow: expandRow, rowStyle: rowStyle, rowClasses: rowClasses, rowEvents: rowEvents }), hasFooter && _react2.default.createElement(_footer2.default, { data: this.getData(), columns: columns, selectRow: selectRow, expandRow: expandRow, className: this.props.footerClasses }) ) ); } }]); return BootstrapTable; }((0, _propsResolver2.default)(_react.Component)); BootstrapTable.propTypes = { keyField: _propTypes2.default.string.isRequired, data: _propTypes2.default.array.isRequired, columns: _propTypes2.default.array.isRequired, bootstrap4: _propTypes2.default.bool, remote: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.shape({ pagination: _propTypes2.default.bool })]), noDataIndication: _propTypes2.default.oneOfType([_propTypes2.default.node, _propTypes2.default.func]), striped: _propTypes2.default.bool, bordered: _propTypes2.default.bool, hover: _propTypes2.default.bool, tabIndexCell: _propTypes2.default.bool, id: _propTypes2.default.string, classes: _propTypes2.default.string, headerClasses: _propTypes2.default.string, bodyClasses: _propTypes2.default.string, wrapperClasses: _propTypes2.default.string, headerWrapperClasses: _propTypes2.default.string, condensed: _propTypes2.default.bool, caption: _propTypes2.default.oneOfType([_propTypes2.default.node, _propTypes2.default.string]), pagination: _propTypes2.default.object, filter: _propTypes2.default.object, cellEdit: _propTypes2.default.object, selectRow: _propTypes2.default.shape({ mode: _propTypes2.default.oneOf([_const2.default.ROW_SELECT_SINGLE, _const2.default.ROW_SELECT_MULTIPLE, _const2.default.ROW_SELECT_DISABLED]).isRequired, clickToSelect: _propTypes2.default.bool, clickToExpand: _propTypes2.default.bool, clickToEdit: _propTypes2.default.bool, hideSelectAll: _propTypes2.default.bool, onSelect: _propTypes2.default.func, onSelectAll: _propTypes2.default.func, style: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]), classes: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), nonSelectable: _propTypes2.default.array, nonSelectableStyle: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), nonSelectableClasses: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), bgColor: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), hideSelectColumn: _propTypes2.default.bool, selectionRenderer: _propTypes2.default.func, selectionHeaderRenderer: _propTypes2.default.func, headerColumnStyle: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]), selectColumnStyle: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]), selectColumnPosition: _propTypes2.default.oneOf([_const2.default.INDICATOR_POSITION_LEFT, _const2.default.INDICATOR_POSITION_RIGHT]) }), expandRow: _propTypes2.default.shape({ renderer: _propTypes2.default.func, expanded: _propTypes2.default.array, onExpand: _propTypes2.default.func, onExpandAll: _propTypes2.default.func, nonExpandable: _propTypes2.default.array, showExpandColumn: _propTypes2.default.bool, onlyOneExpanding: _propTypes2.default.bool, expandByColumnOnly: _propTypes2.default.bool, expandColumnRenderer: _propTypes2.default.func, expandHeaderColumnRenderer: _propTypes2.default.func, expandColumnPosition: _propTypes2.default.oneOf([_const2.default.INDICATOR_POSITION_LEFT, _const2.default.INDICATOR_POSITION_RIGHT]), className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), parentClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]) }), rowStyle: _propTypes2.default.oneOfType([_propTypes2.default.object, _propTypes2.default.func]), rowEvents: _propTypes2.default.object, rowClasses: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func]), filtersClasses: _propTypes2.default.string, filterPosition: _propTypes2.default.oneOf([_const2.default.FILTERS_POSITION_TOP, _const2.default.FILTERS_POSITION_INLINE, _const2.default.FILTERS_POSITION_BOTTOM]), footerClasses: _propTypes2.default.string, defaultSorted: _propTypes2.default.arrayOf(_propTypes2.default.shape({ dataField: _propTypes2.default.string.isRequired, order: _propTypes2.default.oneOf([_const2.default.SORT_DESC, _const2.default.SORT_ASC]).isRequired })), sort: _propTypes2.default.shape({ dataField: _propTypes2.default.string, order: _propTypes2.default.oneOf([_const2.default.SORT_DESC, _const2.default.SORT_ASC]), sortFunc: _propTypes2.default.func, sortCaret: _propTypes2.default.func }), defaultSortDirection: _propTypes2.default.oneOf([_const2.default.SORT_DESC, _const2.default.SORT_ASC]), overlay: _propTypes2.default.func, onTableChange: _propTypes2.default.func, onSort: _propTypes2.default.func, onFilter: _propTypes2.default.func, onExternalFilter: _propTypes2.default.func, onDataSizeChange: _propTypes2.default.func, // Inject from toolkit search: _propTypes2.default.shape({ searchText: _propTypes2.default.string, searchContext: _propTypes2.default.func }), setDependencyModules: _propTypes2.default.func }; BootstrapTable.defaultProps = { bootstrap4: false, remote: false, striped: false, bordered: true, hover: false, condensed: false, noDataIndication: null, selectRow: { mode: _const2.default.ROW_SELECT_DISABLED, selected: [], hideSelectColumn: true }, expandRow: { renderer: undefined, expanded: [], nonExpandable: [] }, cellEdit: { mode: null, nonEditableRows: [] }, filterPosition: _const2.default.FILTERS_POSITION_INLINE }; exports.default = BootstrapTable;