UNPKG

@bootstrap-styled/ra-ui

Version:
176 lines (142 loc) 6 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.getRelatedIds = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactRedux = require("react-redux"); var _GetApp = _interopRequireDefault(require("@material-ui/icons/GetApp")); var _raCore = require("ra-core"); var _papaparse = require("papaparse/papaparse.min"); var _Button = _interopRequireDefault(require("./Button")); var sanitizeRestProps = function sanitizeRestProps(_ref) { var basePath = _ref.basePath, crudGetAll = _ref.crudGetAll, dispatch = _ref.dispatch, exporter = _ref.exporter, filter = _ref.filter, maxResults = _ref.maxResults, resource = _ref.resource, sort = _ref.sort, rest = (0, _objectWithoutProperties2.default)(_ref, ["basePath", "crudGetAll", "dispatch", "exporter", "filter", "maxResults", "resource", "sort"]); return rest; }; var getRelatedIds = function getRelatedIds(records, field) { return Array.from(new Set(records.filter(function (record) { return record[field] != null; }).map(function (record) { return record[field]; }).reduce(function (ids, value) { return ids.concat(value); }, []))); }; exports.getRelatedIds = getRelatedIds; var fetchRelatedRecords = function fetchRelatedRecords(dispatch) { return function (data, field, resource) { return new Promise(function (resolve, reject) { dispatch({ type: _raCore.CRUD_GET_MANY, payload: { ids: getRelatedIds(data, field) }, meta: { resource: resource, fetch: _raCore.GET_MANY, onSuccess: { callback: function callback(_ref2) { var data = _ref2.payload.data; resolve(data.reduce(function (acc, post) { acc[post.id] = post; return acc; }, {})); } }, onFailure: { notification: { body: 'ra.notification.http_error', level: 'warning' }, callback: function callback(_ref3) { var error = _ref3.error; return reject(error); } } } }); }); }; }; var ExportButton = function (_Component) { (0, _inherits2.default)(ExportButton, _Component); function ExportButton() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, ExportButton); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(ExportButton)).call.apply(_getPrototypeOf2, [this].concat(args))); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleClick", function () { var _this$props = _this.props, dispatch = _this$props.dispatch, exporter = _this$props.exporter, filter = _this$props.filter, maxResults = _this$props.maxResults, sort = _this$props.sort, resource = _this$props.resource, onClick = _this$props.onClick; dispatch((0, _raCore.crudGetAll)(resource, sort, filter, maxResults, function (_ref4) { var data = _ref4.payload.data; return exporter ? exporter(data, fetchRelatedRecords(dispatch), dispatch) : (0, _raCore.downloadCSV)((0, _papaparse.unparse)(data), resource); })); if (typeof onClick === 'function') { onClick(); } }); return _this; } (0, _createClass2.default)(ExportButton, [{ key: "render", value: function render() { var _this$props2 = this.props, label = _this$props2.label, icon = _this$props2.icon, rest = (0, _objectWithoutProperties2.default)(_this$props2, ["label", "icon"]); return _react.default.createElement(_Button.default, (0, _extends2.default)({ onClick: this.handleClick, label: label }, sanitizeRestProps(rest)), icon); } }]); return ExportButton; }(_react.Component); (0, _defineProperty2.default)(ExportButton, "propTypes", { basePath: _propTypes.default.string, dispatch: _propTypes.default.func, exporter: _propTypes.default.func, filter: _propTypes.default.object, label: _propTypes.default.string, maxResults: _propTypes.default.number.isRequired, resource: _propTypes.default.string.isRequired, sort: _propTypes.default.object, icon: _propTypes.default.element }); (0, _defineProperty2.default)(ExportButton, "defaultProps", { label: 'ra.action.export', maxResults: 1000, icon: _react.default.createElement(_GetApp.default, null) }); var _default = (0, _reactRedux.connect)()(ExportButton); exports.default = _default;