doj-react-adminlte
Version:
Simple and easy-to-use AdminLTE components for React
192 lines (143 loc) • 8.48 kB
JavaScript
;
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _DataTableRow = _interopRequireDefault(require("./DataTableRow"));
require("./styles.css");
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 _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); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var DataTable = /*#__PURE__*/function (_React$Component) {
_inherits(DataTable, _React$Component);
var _super = _createSuper(DataTable);
function DataTable() {
var _this;
_classCallCheck(this, DataTable);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.renderCell = function (object, renderValue, index) {
var cell = null;
if (typeof renderValue === 'string') {
cell = object[renderValue];
} else if (typeof renderValue === 'function') {
cell = renderValue(object, _this.props.data, _this.props.extra);
}
return /*#__PURE__*/_react.default.createElement("td", {
key: index
}, cell);
};
_this.renderRow = function (object, key) {
return /*#__PURE__*/_react.default.createElement(_DataTableRow.default, {
key: object[_this.props.identifierKey] || key,
object: object,
onClick: _this.props.onRowClick
}, _this.props.columnDefs.map(function (column, index) {
return _this.renderCell(object, column.renderValue, index);
}));
};
_this.renderHeaders = function () {
return _this.props.columnDefs.map(function (column, index) {
return /*#__PURE__*/_react.default.createElement("th", {
key: index
}, column.header);
});
};
_this.renderEmptyMessage = function () {
var showEmptyMessageRow = _this.props.showEmptyMessageRow;
return showEmptyMessageRow ? /*#__PURE__*/_react.default.createElement("tr", null, /*#__PURE__*/_react.default.createElement("td", {
colSpan: _this.props.columnDefs.length
}, _this.props.emptyMessage)) : null;
};
_this.renderTableBody = function () {
var data = _this.props.data;
if (_this.props.bodyRenderer) {
var body = _this.props.bodyRenderer(data, _this.renderRow);
if (body && (body.constructor !== Array || body.length)) {
return body;
}
return _this.renderEmptyMessage();
}
if (!data.length) {
return _this.renderEmptyMessage();
}
return data.map(function (object, index) {
return _this.renderRow(object, index);
});
};
return _this;
}
_createClass(DataTable, [{
key: "renderTableFoot",
value: function renderTableFoot() {
if (this.props.footRenderer) {
return this.props.footRenderer();
}
}
}, {
key: "render",
value: function render() {
return /*#__PURE__*/_react.default.createElement("div", {
className: "row"
}, /*#__PURE__*/_react.default.createElement("div", {
className: "col-xs-12 table-responsive " + this.props.className
}, /*#__PURE__*/_react.default.createElement("table", {
className: "table table-hover " + this.props.tableClassName
}, /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement("tr", null, this.renderHeaders())), /*#__PURE__*/_react.default.createElement("tbody", null, this.renderTableBody()), /*#__PURE__*/_react.default.createElement("tfoot", null, this.renderTableFoot()))));
}
}]);
return DataTable;
}(_react.default.Component);
DataTable.defaultProps = {
className: "",
columnDefs: [],
data: [],
emptyMessage: "No records found.",
extra: {},
identifierKey: 'id',
onRowClick: function onRowClick(object) {},
showEmptyMessageRow: true,
tableClassName: ""
};
DataTable.propTypes = process.env.NODE_ENV !== "production" ? {
/** It sets the data inside the Table Body.*/
bodyRenderer: _propTypes.default.func,
/** className gets and sets the value of the class attribute of the specified element. You can also add a CSS class in this prop to style a particular element.*/
className: _propTypes.default.string,
/** It sets a column definition properties.*/
columnDefs: _propTypes.default.arrayOf(_propTypes.default.shape({
header: _propTypes.default.string,
renderValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func])
})),
/** You can set the data of the table by passing an array or object in this prop.*/
data: _propTypes.default.arrayOf(_propTypes.default.object),
/** The message that will be shown when there's no data in the table.*/
emptyMessage: _propTypes.default.string,
/** You can add an extra user-defined props by binding it in this prop.*/
extra: _propTypes.default.object,
/** It sets the data inside the Footer Body.*/
footRenderer: _propTypes.default.func,
/** It sets the identifier key of the Table.*/
identifierKey: _propTypes.default.string,
/** Function to invoke when a row is clicked.*/
onRowClick: _propTypes.default.func,
/** Set to true so that the empty message will be shown.*/
showEmptyMessageRow: _propTypes.default.bool,
/** The className of the table.*/
tableClassName: _propTypes.default.string
} : {};
var _default = DataTable;
exports.default = _default;