UNPKG

@coko/client

Version:

Client side common code for coko apps

80 lines (79 loc) 4.87 kB
"use strict"; 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;