FormContext.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
  2. import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
  3. import * as React from 'react';
  4. var FormContext = /*#__PURE__*/React.createContext({
  5. triggerFormChange: function triggerFormChange() {},
  6. triggerFormFinish: function triggerFormFinish() {},
  7. registerForm: function registerForm() {},
  8. unregisterForm: function unregisterForm() {}
  9. });
  10. var FormProvider = function FormProvider(_ref) {
  11. var validateMessages = _ref.validateMessages,
  12. onFormChange = _ref.onFormChange,
  13. onFormFinish = _ref.onFormFinish,
  14. children = _ref.children;
  15. var formContext = React.useContext(FormContext);
  16. var formsRef = React.useRef({});
  17. return /*#__PURE__*/React.createElement(FormContext.Provider, {
  18. value: _objectSpread(_objectSpread({}, formContext), {}, {
  19. validateMessages: _objectSpread(_objectSpread({}, formContext.validateMessages), validateMessages),
  20. // =========================================================
  21. // = Global Form Control =
  22. // =========================================================
  23. triggerFormChange: function triggerFormChange(name, changedFields) {
  24. if (onFormChange) {
  25. onFormChange(name, {
  26. changedFields: changedFields,
  27. forms: formsRef.current
  28. });
  29. }
  30. formContext.triggerFormChange(name, changedFields);
  31. },
  32. triggerFormFinish: function triggerFormFinish(name, values) {
  33. if (onFormFinish) {
  34. onFormFinish(name, {
  35. values: values,
  36. forms: formsRef.current
  37. });
  38. }
  39. formContext.triggerFormFinish(name, values);
  40. },
  41. registerForm: function registerForm(name, form) {
  42. if (name) {
  43. formsRef.current = _objectSpread(_objectSpread({}, formsRef.current), {}, _defineProperty({}, name, form));
  44. }
  45. formContext.registerForm(name, form);
  46. },
  47. unregisterForm: function unregisterForm(name) {
  48. var newForms = _objectSpread({}, formsRef.current);
  49. delete newForms[name];
  50. formsRef.current = newForms;
  51. formContext.unregisterForm(name);
  52. }
  53. })
  54. }, children);
  55. };
  56. export { FormProvider };
  57. export default FormContext;