@bootstrap-styled/ra-ui
Version:
UI components for react-admin
171 lines (135 loc) • 6.54 kB
JavaScript
"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.SaveButton = 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 _compose = _interopRequireDefault(require("recompose/compose"));
var _Button = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Button"));
var _Save = _interopRequireDefault(require("@material-ui/icons/Save"));
var _classnames = _interopRequireDefault(require("classnames"));
var _raCore = require("ra-core");
var _CircularProgress = _interopRequireDefault(require("@material-ui/core/CircularProgress"));
var sanitizeRestProps = function sanitizeRestProps(_ref) {
var basePath = _ref.basePath,
className = _ref.className,
saving = _ref.saving,
label = _ref.label,
invalid = _ref.invalid,
translate = _ref.translate,
handleSubmit = _ref.handleSubmit,
handleSubmitWithRedirect = _ref.handleSubmitWithRedirect,
submitOnEnter = _ref.submitOnEnter,
redirect = _ref.redirect,
locale = _ref.locale,
showNotification = _ref.showNotification,
rest = (0, _objectWithoutProperties2.default)(_ref, ["basePath", "className", "saving", "label", "invalid", "translate", "handleSubmit", "handleSubmitWithRedirect", "submitOnEnter", "redirect", "locale", "showNotification"]);
return rest;
};
var SaveButton = function (_Component) {
(0, _inherits2.default)(SaveButton, _Component);
function SaveButton() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, SaveButton);
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)(SaveButton)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleClick", function (e) {
var _this$props = _this.props,
handleSubmitWithRedirect = _this$props.handleSubmitWithRedirect,
invalid = _this$props.invalid,
redirect = _this$props.redirect,
saving = _this$props.saving,
showNotification = _this$props.showNotification,
onClick = _this$props.onClick;
if (saving) {
e.preventDefault();
} else {
if (invalid) {
showNotification('ra.message.invalid_form', 'warning');
}
if (e) {
e.preventDefault();
}
handleSubmitWithRedirect(redirect)();
}
if (typeof onClick === 'function') {
onClick();
}
});
return _this;
}
(0, _createClass2.default)(SaveButton, [{
key: "render",
value: function render() {
var _this$props2 = this.props,
className = _this$props2.className,
invalid = _this$props2.invalid,
_this$props2$label = _this$props2.label,
label = _this$props2$label === void 0 ? 'ra.action.save' : _this$props2$label,
pristine = _this$props2.pristine,
redirect = _this$props2.redirect,
saving = _this$props2.saving,
submitOnEnter = _this$props2.submitOnEnter,
translate = _this$props2.translate,
icon = _this$props2.icon,
onClick = _this$props2.onClick,
rest = (0, _objectWithoutProperties2.default)(_this$props2, ["className", "invalid", "label", "pristine", "redirect", "saving", "submitOnEnter", "translate", "icon", "onClick"]);
var type = submitOnEnter ? 'submit' : 'button';
return _react.default.createElement(_Button.default, (0, _extends2.default)({
className: (0, _classnames.default)(className, 'cursor-pointer d-flex align-items-center'),
type: type,
onClick: this.handleClick,
color: "primary"
}, sanitizeRestProps(rest)), saving && saving.redirect === redirect ? _react.default.createElement(_CircularProgress.default, {
size: 25,
thickness: 2
}) : _react.default.cloneElement(icon, {
className: 'pr-2'
}), label && translate(label, {
_: label
}));
}
}]);
return SaveButton;
}(_react.Component);
exports.SaveButton = SaveButton;
(0, _defineProperty2.default)(SaveButton, "propTypes", {
className: _propTypes.default.string,
handleSubmitWithRedirect: _propTypes.default.func,
invalid: _propTypes.default.bool,
label: _propTypes.default.string,
pristine: _propTypes.default.bool,
redirect: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool, _propTypes.default.func]),
saving: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.bool]),
showNotification: _propTypes.default.func,
submitOnEnter: _propTypes.default.bool,
translate: _propTypes.default.func.isRequired,
icon: _propTypes.default.element
});
(0, _defineProperty2.default)(SaveButton, "defaultProps", {
handleSubmitWithRedirect: function handleSubmitWithRedirect() {
return function () {};
},
icon: _react.default.createElement(_Save.default, null)
});
var enhance = (0, _compose.default)(_raCore.translate, (0, _reactRedux.connect)(undefined, {
showNotification: _raCore.showNotification
}));
var _default = enhance(SaveButton);
exports.default = _default;