@appbuckets/react-ui-forms
Version:
An utilities package to manage and create Form using AppBuckets ReactUI
104 lines (97 loc) • 2.84 kB
JavaScript
;
var _tslib = require('../_virtual/_tslib.js');
var React = require('react');
var Button = require('@appbuckets/react-ui/Button');
var HookedForm_context = require('../context/HookedForm.context.js');
function _interopDefaultLegacy(e) {
return e && typeof e === 'object' && 'default' in e ? e : { default: e };
}
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(
n,
k,
d.get
? d
: {
enumerable: true,
get: function () {
return e[k];
},
}
);
}
});
}
n['default'] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/ _interopNamespace(React);
var Button__default = /*#__PURE__*/ _interopDefaultLegacy(Button);
/* --------
* Component Definition
* -------- */
var HookedFormActions = function () {
/** Get the Wrapper Component */
var _a = HookedForm_context.useHookedFormContext(),
Wrapper = _a.actionsWrapper,
cancelButton = _a.cancelButton,
formState = _a.formState,
handleCancel = _a.handleCancel,
submitButton = _a.submitButton;
/** No Wrapper, no Party */
if (!Wrapper) {
return null;
}
/** Omit props on React.Fragment, they are not allowed */
var wrapperProps =
Wrapper === React__namespace.Fragment
? undefined
: { className: 'form-actions' };
/** Build elements using Shorthand */
var cancelButtonElement = Button__default['default'].create(cancelButton, {
autoGenerateKey: false,
defaultProps: {
className: 'cancel',
},
overrideProps: function (originalProps) {
return {
disabled: formState.isSubmitting,
onClick: function (event, buttonProps) {
/** Use user defined onClick handler if exists */
if (typeof originalProps.onClick === 'function') {
originalProps.onClick(event, buttonProps);
}
/** Call internal Handler */
handleCancel();
},
};
},
});
var submitButtonElement = Button__default['default'].create(submitButton, {
autoGenerateKey: false,
defaultProps: {
className: 'submit',
primary: true,
loading: formState.isSubmitting,
},
overrideProps: {
disabled: formState.isSubmitting,
type: 'submit',
},
});
/** Return the Component */
return React__namespace.createElement(
Wrapper,
_tslib.__assign({}, wrapperProps),
cancelButtonElement,
submitButtonElement
);
};
HookedFormActions.displayName = 'HookedFormActions';
module.exports = HookedFormActions;