canner
Version:
Build CMS in few lines of code for different data sources
210 lines (170 loc) • 7.68 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.Label = Label;
exports.default = withTitleAndDescription;
require("antd/lib/row/style");
var _row = _interopRequireDefault(require("antd/lib/row"));
require("antd/lib/alert/style");
var _alert = _interopRequireDefault(require("antd/lib/alert"));
require("antd/lib/col/style");
var _col = _interopRequireDefault(require("antd/lib/col"));
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 _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
require("antd/lib/tooltip/style");
var _tooltip = _interopRequireDefault(require("antd/lib/tooltip"));
require("antd/lib/icon/style");
var _icon = _interopRequireDefault(require("antd/lib/icon"));
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var React = _interopRequireWildcard(require("react"));
var _antd = require("antd");
var _context = require("./context");
var _cannerHelpers = require("canner-helpers");
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _lodash = require("lodash");
function _templateObject2() {
var data = (0, _taggedTemplateLiteral2.default)(["\n color: red;\n font-size: 14px;\n"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = (0, _taggedTemplateLiteral2.default)(["\n color: rgba(0, 0, 0, 0.85);\n padding: ", "\n\n & > span:before {\n content: ", ";\n color: red;\n }\n"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var Title = _styledComponents.default.div(_templateObject(), function (props) {
return props.layout === 'horizontal' ? 0 : '0 0 8px';
}, function (props) {
return props.required && props.title ? '"* "' : '""';
});
var ErrorMessage = _styledComponents.default.div(_templateObject2());
function Label(_ref) {
var required = _ref.required,
description = _ref.description,
title = _ref.title,
layout = _ref.layout;
return React.createElement(Title, {
required: required,
title: title,
layout: layout
}, React.createElement("span", null, title), title && description && React.createElement(_tooltip.default, {
placement: "top",
title: description
}, React.createElement(_icon.default, {
type: "info-circle-o",
style: {
marginLeft: 12,
color: '#aaa'
}
})));
} // $FlowFixMe
function withTitleAndDescription(Com) {
return (
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(ComponentWithTitleAndDescription, _React$Component);
function ComponentWithTitleAndDescription() {
(0, _classCallCheck2.default)(this, ComponentWithTitleAndDescription);
return (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ComponentWithTitleAndDescription).apply(this, arguments));
}
(0, _createClass2.default)(ComponentWithTitleAndDescription, [{
key: "shouldComponentUpdate",
value: function shouldComponentUpdate(nextProps) {
if (!(0, _lodash.isEqual)(nextProps.value, this.props.value) || !(0, _lodash.isEqual)(nextProps.relationValue, this.props.relationValue) || !(0, _lodash.isEqual)(nextProps.isRelationFetching, this.props.isRelationFetching) || nextProps.error !== this.props.error || nextProps.disabled !== this.props.disabled) {
return true;
}
return false;
}
}, {
key: "render",
value: function render() {
var _this$props = this.props,
title = _this$props.title,
layout = _this$props.layout,
description = _this$props.description,
hideTitle = _this$props.hideTitle,
fetch = _this$props.fetch,
subscribe = _this$props.subscribe,
request = _this$props.request,
deploy = _this$props.deploy,
reset = _this$props.reset,
query = _this$props.query,
renderChildren = _this$props.renderChildren,
renderComponent = _this$props.renderComponent,
renderConfirmButton = _this$props.renderConfirmButton,
renderCancelButton = _this$props.renderCancelButton,
refId = _this$props.refId,
routes = _this$props.routes,
updateQuery = _this$props.updateQuery,
type = _this$props.type,
imageStorage = _this$props.imageStorage,
onDeploy = _this$props.onDeploy,
removeOnDeploy = _this$props.removeOnDeploy,
required = _this$props.required,
dataChanged = _this$props.dataChanged,
error = _this$props.error,
errorInfo = _this$props.errorInfo,
beforeFetch = _this$props.beforeFetch;
var labelCol = layout === 'horizontal' ? this.props.labelCol || {
span: 6
} : null;
var itemCol = layout === 'horizontal' ? this.props.itemCol || {
span: 14
} : null; // $FlowFixMe: default funcitons in HOCContext only throw error, so they don't have any arguments
return React.createElement(_context.HOCContext.Provider, {
value: {
fetch: fetch,
subscribe: subscribe,
request: request,
deploy: deploy,
reset: reset,
query: query,
updateQuery: updateQuery,
onDeploy: onDeploy,
removeOnDeploy: removeOnDeploy,
dataChanged: dataChanged,
beforeFetch: beforeFetch
}
}, React.createElement(_cannerHelpers.Context.Provider, {
value: {
renderChildren: renderChildren,
renderComponent: renderComponent,
renderConfirmButton: renderConfirmButton,
renderCancelButton: renderCancelButton,
refId: refId,
routes: routes
}
}, React.createElement(_row.default, {
type: layout === 'horizontal' ? 'flex' : '',
style: {
marginBottom: 24
}
}, React.createElement(_col.default, labelCol, React.createElement(Label, {
required: required,
type: type,
layout: layout,
description: description,
title: hideTitle ? '' : title
})), React.createElement(_col.default, itemCol, type === 'image' && (0, _lodash.isEmpty)(imageStorage) && React.createElement(_alert.default, {
style: {
margin: '16px 0'
},
message: "There is no storage config so you can't upload image. Checkout the storage section to know more",
type: "warning"
}), React.createElement(Com, this.props), error && React.createElement(ErrorMessage, null, errorInfo[0].message)))));
}
}]);
return ComponentWithTitleAndDescription;
}(React.Component)
);
}