canner
Version:
Build CMS in few lines of code for different data sources
198 lines (165 loc) • 7.57 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 = deploy;
exports.genDeployButton = genDeployButton;
exports.genCancelButton = genCancelButton;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
require("antd/lib/button/style");
var _button = _interopRequireDefault(require("antd/lib/button"));
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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var React = _interopRequireWildcard(require("react"));
var _antd = require("antd");
var _lodash = require("lodash");
var _cache = require("./cache");
function deploy(Com) {
return (
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(ComponentWithDeploy, _React$Component);
function ComponentWithDeploy() {
var _getPrototypeOf2;
var _this;
(0, _classCallCheck2.default)(this, ComponentWithDeploy);
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)(ComponentWithDeploy)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "deploy", function (refId, callback) {
var deploy = _this.props.deploy;
return deploy(refId.getPathArr()[0]).then(callback).catch(function () {});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "reset", function (refId, callback) {
var _this$props = _this.props,
reset = _this$props.reset,
rootValue = _this$props.rootValue;
var key = refId.getPathArr()[0];
var recordId = getItemId(rootValue, refId);
reset(key, recordId);
callback();
});
return _this;
}
(0, _createClass2.default)(ComponentWithDeploy, [{
key: "render",
value: function render() {
var _this$props2 = this.props,
routerParams = _this$props2.routerParams,
routes = _this$props2.routes,
refId = _this$props2.refId,
path = _this$props2.path,
pattern = _this$props2.pattern,
controlDeployAndResetButtons = _this$props2.controlDeployAndResetButtons,
hideButtons = _this$props2.hideButtons;
var buttonContainer = {
textAlign: 'right',
marginTop: 60
};
var renderConfirmButton = genDeployButton(this.deploy, refId);
var renderCancelButton = genCancelButton(this.reset, refId);
var isCreateOp = routerParams.operator === 'create';
var shouldRenderButtons = (routes.length === 1 || (0, _cache.isRoutesEndAtMe)({
routes: routes,
path: path,
pattern: pattern
}) && isCreateOp) && !controlDeployAndResetButtons && !hideButtons && refId.getPathArr().length <= routes.length;
return React.createElement("div", null, React.createElement(Com, (0, _extends2.default)({}, this.props, {
renderConfirmButton: renderConfirmButton,
renderCancelButton: renderCancelButton
})), shouldRenderButtons && // $FlowFixMe
React.createElement("div", {
style: buttonContainer
}, renderConfirmButton({
callback: function callback() {// location.href = routerParams.backUrl || location.href.split('?')[0];
},
style: {
marginRight: 16
}
}), renderCancelButton({
hidden: isCreateOp
})));
}
}]);
return ComponentWithDeploy;
}(React.Component)
);
}
function genDeployButton(deploy, currentRefId) {
return function DeployButton() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref$disabled = _ref.disabled,
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
_ref$style = _ref.style,
style = _ref$style === void 0 ? {
marginRight: 16
} : _ref$style,
_ref$refId = _ref.refId,
refId = _ref$refId === void 0 ? currentRefId : _ref$refId,
_ref$onClick = _ref.onClick,
_onClick = _ref$onClick === void 0 ? deploy : _ref$onClick,
_ref$callback = _ref.callback,
callback = _ref$callback === void 0 ? function () {} : _ref$callback,
_ref$text = _ref.text,
text = _ref$text === void 0 ? 'Confirm' : _ref$text,
_ref$Component = _ref.Component,
Component = _ref$Component === void 0 ? _button.default : _ref$Component;
return React.createElement(Component, {
disabled: disabled,
style: style,
type: "primary",
onClick: function onClick() {
return _onClick(refId, callback);
},
"data-testid": "confirm-button"
}, text);
};
}
function genCancelButton(reset, currentRefId) {
return function CancelButton() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref2$disabled = _ref2.disabled,
disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
_ref2$style = _ref2.style,
style = _ref2$style === void 0 ? {} : _ref2$style,
_ref2$refId = _ref2.refId,
refId = _ref2$refId === void 0 ? currentRefId : _ref2$refId,
_ref2$onClick = _ref2.onClick,
_onClick2 = _ref2$onClick === void 0 ? reset : _ref2$onClick,
_ref2$callback = _ref2.callback,
callback = _ref2$callback === void 0 ? function () {} : _ref2$callback,
_ref2$text = _ref2.text,
text = _ref2$text === void 0 ? 'Reset' : _ref2$text,
_ref2$Component = _ref2.Component,
Component = _ref2$Component === void 0 ? _button.default : _ref2$Component;
return React.createElement(Component, {
disabled: disabled,
style: style,
onClick: function onClick() {
return _onClick2(refId, callback);
},
"data-testid": "reset-button"
}, text);
};
}
function getItemId(rootValue, refId) {
var _refId$getPathArr = refId.getPathArr(),
_refId$getPathArr2 = (0, _slicedToArray2.default)(_refId$getPathArr, 2),
key = _refId$getPathArr2[0],
index = _refId$getPathArr2[1];
var itemId = '';
var value = rootValue[key];
if ((0, _lodash.isArray)(value) && index) {
itemId = value[index].id;
}
return itemId;
}