@coko/client
Version:
Client side common code for coko apps
80 lines (79 loc) • 4.87 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _toolkit = require("../../toolkit");
var _common = require("../common");
var _excluded = ["children", "className", "message", "form", "loading", "onSubmit", "showSecondaryButton", "secondaryButtonAction", "secondaryButtonLabel", "submitButtonLabel", "submissionStatus"];
var _templateObject, _templateObject2;
/* eslint-disable react/jsx-props-no-spreading */
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
var Wrapper = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
var FormButtonsContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n display: flex;\n gap: ", ";\n justify-content: right;\n padding: 0 ", ";\n"])), (0, _toolkit.grid)(1), (0, _toolkit.grid)(4));
var ProfileForm = function ProfileForm(props) {
var children = props.children,
className = props.className,
message = props.message,
form = props.form,
loading = props.loading,
onSubmit = props.onSubmit,
showSecondaryButton = props.showSecondaryButton,
secondaryButtonAction = props.secondaryButtonAction,
secondaryButtonLabel = props.secondaryButtonLabel,
submitButtonLabel = props.submitButtonLabel,
submissionStatus = props.submissionStatus,
rest = _objectWithoutProperties(props, _excluded);
return /*#__PURE__*/_react["default"].createElement(Wrapper, {
className: className
}, /*#__PURE__*/_react["default"].createElement(_common.Form, _extends({
form: form,
layout: "vertical",
onFinish: onSubmit,
ribbonMessage: message,
ribbonPosition: "bottom",
submissionStatus: submissionStatus
}, rest), children, /*#__PURE__*/_react["default"].createElement(FormButtonsContainer, null, showSecondaryButton && /*#__PURE__*/_react["default"].createElement(_common.Button, {
disabled: loading,
onClick: secondaryButtonAction
}, secondaryButtonLabel), /*#__PURE__*/_react["default"].createElement(_common.Button, {
"data-testid": "profile-form-submit-button",
htmlType: "submit",
loading: loading,
type: "primary"
}, submitButtonLabel)), loading && /*#__PURE__*/_react["default"].createElement(_common.VisuallyHiddenElement, {
role: "status"
}, "Saving profile")));
};
ProfileForm.propTypes = {
/** optional form instance to control the form from the parent */
form: _propTypes["default"].shape(),
loading: _propTypes["default"].bool,
message: _propTypes["default"].string,
/** Function that receives the values as parameter */
onSubmit: _propTypes["default"].func.isRequired,
showSecondaryButton: _propTypes["default"].bool,
secondaryButtonAction: _propTypes["default"].func,
secondaryButtonLabel: _propTypes["default"].string,
submitButtonLabel: _propTypes["default"].string,
submissionStatus: _propTypes["default"].oneOf(['success', 'error', 'danger'])
};
ProfileForm.defaultProps = {
form: null,
loading: false,
message: '',
showSecondaryButton: false,
secondaryButtonAction: function secondaryButtonAction() {},
secondaryButtonLabel: 'Cancel',
submitButtonLabel: 'Save',
submissionStatus: null
};
var _default = ProfileForm;
exports["default"] = _default;