You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.4 KiB
80 lines
3.4 KiB
"use strict";
|
|
|
|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = exports.FormProvider = void 0;
|
|
|
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
|
|
var React = _interopRequireWildcard(require("react"));
|
|
|
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
|
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
|
|
var FormContext = 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 React.createElement(FormContext.Provider, {
|
|
value: _objectSpread({}, formContext, {
|
|
validateMessages: _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({}, formsRef.current, (0, _defineProperty2.default)({}, 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);
|
|
};
|
|
|
|
exports.FormProvider = FormProvider;
|
|
var _default = FormContext;
|
|
exports.default = _default; |