57 lines
2.3 KiB
JavaScript
57 lines
2.3 KiB
JavaScript
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
||
|
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
||
|
import * as React from 'react';
|
||
|
var FormContext = /*#__PURE__*/React.createContext({
|
||
|
triggerFormChange: function triggerFormChange() {},
|
||
|
triggerFormFinish: function triggerFormFinish() {},
|
||
|
registerForm: function registerForm() {},
|
||
|
unregisterForm: function unregisterForm() {}
|
||
|
});
|
||
|
var FormProvider = function FormProvider(_ref) {
|
||
|
var validateMessages = _ref.validateMessages,
|
||
|
onFormChange = _ref.onFormChange,
|
||
|
onFormFinish = _ref.onFormFinish,
|
||
|
children = _ref.children;
|
||
|
var formContext = React.useContext(FormContext);
|
||
|
var formsRef = React.useRef({});
|
||
|
return /*#__PURE__*/React.createElement(FormContext.Provider, {
|
||
|
value: _objectSpread(_objectSpread({}, formContext), {}, {
|
||
|
validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),
|
||
|
// =========================================================
|
||
|
// = Global Form Control =
|
||
|
// =========================================================
|
||
|
triggerFormChange: function triggerFormChange(name, changedFields) {
|
||
|
if (onFormChange) {
|
||
|
onFormChange(name, {
|
||
|
changedFields: changedFields,
|
||
|
forms: formsRef.current
|
||
|
});
|
||
|
}
|
||
|
formContext.triggerFormChange(name, changedFields);
|
||
|
},
|
||
|
triggerFormFinish: function triggerFormFinish(name, values) {
|
||
|
if (onFormFinish) {
|
||
|
onFormFinish(name, {
|
||
|
values: values,
|
||
|
forms: formsRef.current
|
||
|
});
|
||
|
}
|
||
|
formContext.triggerFormFinish(name, values);
|
||
|
},
|
||
|
registerForm: function registerForm(name, form) {
|
||
|
if (name) {
|
||
|
formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));
|
||
|
}
|
||
|
formContext.registerForm(name, form);
|
||
|
},
|
||
|
unregisterForm: function unregisterForm(name) {
|
||
|
var newForms = _objectSpread({}, formsRef.current);
|
||
|
delete newForms[name];
|
||
|
formsRef.current = newForms;
|
||
|
formContext.unregisterForm(name);
|
||
|
}
|
||
|
})
|
||
|
}, children);
|
||
|
};
|
||
|
export { FormProvider };
|
||
|
export default FormContext;
|