UNPKG

@react-form-fields/native-base

Version:

Native Base Form Fields

46 lines 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var ValidationContext_1 = require("@react-form-fields/core/ValidationContext"); var React = require("react"); var react_native_1 = require("react-native"); var uuidV4 = require("uuid/v4"); var context_1 = require("./hooks/useFieldFlow/context"); var fieldsMap = {}; var ValidationContext = React.memo(React.forwardRef(function (_a, ref) { var children = _a.children, props = tslib_1.__rest(_a, ["children"]); var _b = React.useState(null), fieldId = _b[0], setFieldId = _b[1]; React.useEffect(function () { var fieldId = uuidV4(); setFieldId(fieldId); var fields = []; fieldsMap[fieldId] = { registerPosition: function (position, onFocusHandler) { fields.push({ position: position, onFocusHandler: onFocusHandler }); }, unregisterPosition: function (position) { var index = fields.findIndex(function (f) { return f.position === position; }); if (index < 0) return; fields.splice(index, 1); }, goNext: function (currenPosition) { var nextField = fields .sort(function (a, b) { return (a.position > b.position ? 1 : a.position === b.position ? 0 : -1); }) .find(function (f) { return f.position > currenPosition; }); if (!nextField) return false; react_native_1.InteractionManager.runAfterInteractions().then(function () { return nextField.onFocusHandler(); }); return true; } }; return function () { return delete fieldsMap[fieldId]; }; }, []); if (!fieldsMap[fieldId]) return null; return (React.createElement(context_1.default.Provider, { value: fieldsMap[fieldId] }, React.createElement(ValidationContext_1.default, tslib_1.__assign({}, props, { ref: ref }), children))); })); ValidationContext.displayName = 'ValidationContext'; exports.default = ValidationContext; //# sourceMappingURL=ValidationContext.js.map