UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

82 lines (81 loc) 9.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "WatchChildErrors", { enumerable: true, get: function() { return WatchChildErrors; } }); const _react = /*#__PURE__*/ _interop_require_default(require("react")); const _types = require("../../../../fields/config/types"); const _useThrottledEffect = /*#__PURE__*/ _interop_require_default(require("../../../hooks/useThrottledEffect")); const _context = require("../Form/context"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const buildPathSegments = (parentPath, fieldSchema)=>{ const pathNames = fieldSchema.reduce((acc, subField)=>{ if ((0, _types.fieldHasSubFields)(subField) && (0, _types.fieldAffectsData)(subField)) { // group, block, array acc.push(parentPath ? `${parentPath}.${subField.name}.` : `${subField.name}.`); } else if ((0, _types.fieldHasSubFields)(subField)) { // rows, collapsibles, unnamed-tab acc.push(...buildPathSegments(parentPath, subField.fields)); } else if (subField.type === 'tabs') { // tabs subField.tabs.forEach((tab)=>{ let tabPath = parentPath; if ((0, _types.tabHasName)(tab)) { tabPath = parentPath ? `${parentPath}.${tab.name}` : tab.name; } acc.push(...buildPathSegments(tabPath, tab.fields)); }); } else if ((0, _types.fieldAffectsData)(subField)) { // text, number, date, etc. acc.push(parentPath ? `${parentPath}.${subField.name}` : subField.name); } return acc; }, []); return pathNames; }; const WatchChildErrors = ({ fieldSchema, path, setErrorCount })=>{ const [fields] = (0, _context.useAllFormFields)(); const hasSubmitted = (0, _context.useFormSubmitted)(); const [pathSegments] = _react.default.useState(()=>{ if (fieldSchema) { return buildPathSegments(path, fieldSchema); } return [ `${path}.` ]; }); (0, _useThrottledEffect.default)(()=>{ let errorCount = 0; if (hasSubmitted) { Object.entries(fields).forEach(([key])=>{ const matchingSegment = pathSegments.some((segment)=>{ if (segment.endsWith('.')) { return key.startsWith(segment); } return key === segment; }); if (matchingSegment) { if ('valid' in fields[key] && !fields[key].valid) { errorCount += 1; } } }); } setErrorCount(errorCount); }, 250, [ fields, hasSubmitted, pathSegments ]); return null; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hZG1pbi9jb21wb25lbnRzL2Zvcm1zL1dhdGNoQ2hpbGRFcnJvcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBUYWJBc0ZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vLi4vZmllbGRzL2NvbmZpZy90eXBlcydcblxuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICcuLi8uLi8uLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHVzZVRocm90dGxlZEVmZmVjdCBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUaHJvdHRsZWRFZmZlY3QnXG5pbXBvcnQgeyB1c2VBbGxGb3JtRmllbGRzLCB1c2VGb3JtU3VibWl0dGVkIH0gZnJvbSAnLi4vRm9ybS9jb250ZXh0J1xuXG5jb25zdCBidWlsZFBhdGhTZWdtZW50cyA9IChwYXJlbnRQYXRoOiBzdHJpbmcsIGZpZWxkU2NoZW1hOiBGaWVsZFtdKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBwYXRoTmFtZXMgPSBmaWVsZFNjaGVtYS5yZWR1Y2UoKGFjYywgc3ViRmllbGQpID0+IHtcbiAgICBpZiAoZmllbGRIYXNTdWJGaWVsZHMoc3ViRmllbGQpICYmIGZpZWxkQWZmZWN0c0RhdGEoc3ViRmllbGQpKSB7XG4gICAgICAvLyBncm91cCwgYmxvY2ssIGFycmF5XG4gICAgICBhY2MucHVzaChwYXJlbnRQYXRoID8gYCR7cGFyZW50UGF0aH0uJHtzdWJGaWVsZC5uYW1lfS5gIDogYCR7c3ViRmllbGQubmFtZX0uYClcbiAgICB9IGVsc2UgaWYgKGZpZWxkSGFzU3ViRmllbGRzKHN1YkZpZWxkKSkge1xuICAgICAgLy8gcm93cywgY29sbGFwc2libGVzLCB1bm5hbWVkLXRhYlxuICAgICAgYWNjLnB1c2goLi4uYnVpbGRQYXRoU2VnbWVudHMocGFyZW50UGF0aCwgc3ViRmllbGQuZmllbGRzKSlcbiAgICB9IGVsc2UgaWYgKHN1YkZpZWxkLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgLy8gdGFic1xuICAgICAgc3ViRmllbGQudGFicy5mb3JFYWNoKCh0YWI6IFRhYkFzRmllbGQpID0+IHtcbiAgICAgICAgbGV0IHRhYlBhdGggPSBwYXJlbnRQYXRoXG4gICAgICAgIGlmICh0YWJIYXNOYW1lKHRhYikpIHtcbiAgICAgICAgICB0YWJQYXRoID0gcGFyZW50UGF0aCA/IGAke3BhcmVudFBhdGh9LiR7dGFiLm5hbWV9YCA6IHRhYi5uYW1lXG4gICAgICAgIH1cbiAgICAgICAgYWNjLnB1c2goLi4uYnVpbGRQYXRoU2VnbWVudHModGFiUGF0aCwgdGFiLmZpZWxkcykpXG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAoZmllbGRBZmZlY3RzRGF0YShzdWJGaWVsZCkpIHtcbiAgICAgIC8vIHRleHQsIG51bWJlciwgZGF0ZSwgZXRjLlxuICAgICAgYWNjLnB1c2gocGFyZW50UGF0aCA/IGAke3BhcmVudFBhdGh9LiR7c3ViRmllbGQubmFtZX1gIDogc3ViRmllbGQubmFtZSlcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIFtdKVxuXG4gIHJldHVybiBwYXRoTmFtZXNcbn1cblxudHlwZSBUcmFja1N1YlNjaGVtYUVycm9yQ291bnRQcm9wcyA9IHtcbiAgLyoqXG4gICAqIE9ubHkgZm9yIGNvbGxhcHNpYmxlcywgYW5kIHVubmFtZWQtdGFic1xuICAgKi9cbiAgZmllbGRTY2hlbWE/OiBGaWVsZFtdXG4gIHBhdGg6IHN0cmluZ1xuICBzZXRFcnJvckNvdW50OiAoY291bnQ6IG51bWJlcikgPT4gdm9pZFxufVxuZXhwb3J0IGNvbnN0IFdhdGNoQ2hpbGRFcnJvcnM6IFJlYWN0LkZDPFRyYWNrU3ViU2NoZW1hRXJyb3JDb3VudFByb3BzPiA9ICh7XG4gIGZpZWxkU2NoZW1hLFxuICBwYXRoLFxuICBzZXRFcnJvckNvdW50LFxufSkgPT4ge1xuICBjb25zdCBbZmllbGRzXSA9IHVzZUFsbEZvcm1GaWVsZHMoKVxuICBjb25zdCBoYXNTdWJtaXR0ZWQgPSB1c2VGb3JtU3VibWl0dGVkKClcbiAgY29uc3QgW3BhdGhTZWdtZW50c10gPSBSZWFjdC51c2VTdGF0ZSgoKSA9PiB7XG4gICAgaWYgKGZpZWxkU2NoZW1hKSB7XG4gICAgICByZXR1cm4gYnVpbGRQYXRoU2VnbWVudHMocGF0aCwgZmllbGRTY2hlbWEpXG4gICAgfVxuXG4gICAgcmV0dXJuIFtgJHtwYXRofS5gXVxuICB9KVxuXG4gIHVzZVRocm90dGxlZEVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBsZXQgZXJyb3JDb3VudCA9IDBcbiAgICAgIGlmIChoYXNTdWJtaXR0ZWQpIHtcbiAgICAgICAgT2JqZWN0LmVudHJpZXMoZmllbGRzKS5mb3JFYWNoKChba2V5XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1hdGNoaW5nU2VnbWVudCA9IHBhdGhTZWdtZW50cy5zb21lKChzZWdtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoc2VnbWVudC5lbmRzV2l0aCgnLicpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBrZXkuc3RhcnRzV2l0aChzZWdtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGtleSA9PT0gc2VnbWVudFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBpZiAobWF0Y2hpbmdTZWdtZW50KSB7XG4gICAgICAgICAgICBpZiAoJ3ZhbGlkJyBpbiBmaWVsZHNba2V5XSAmJiAhZmllbGRzW2tleV0udmFsaWQpIHtcbiAgICAgICAgICAgICAgZXJyb3JDb3VudCArPSAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBzZXRFcnJvckNvdW50KGVycm9yQ291bnQpXG4gICAgfSxcbiAgICAyNTAsXG4gICAgW2ZpZWxkcywgaGFzU3VibWl0dGVkLCBwYXRoU2VnbWVudHNdLFxuICApXG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJuYW1lcyI6WyJXYXRjaENoaWxkRXJyb3JzIiwiYnVpbGRQYXRoU2VnbWVudHMiLCJwYXJlbnRQYXRoIiwiZmllbGRTY2hlbWEiLCJwYXRoTmFtZXMiLCJyZWR1Y2UiLCJhY2MiLCJzdWJGaWVsZCIsImZpZWxkSGFzU3ViRmllbGRzIiwiZmllbGRBZmZlY3RzRGF0YSIsInB1c2giLCJuYW1lIiwiZmllbGRzIiwidHlwZSIsInRhYnMiLCJmb3JFYWNoIiwidGFiIiwidGFiUGF0aCIsInRhYkhhc05hbWUiLCJwYXRoIiwic2V0RXJyb3JDb3VudCIsInVzZUFsbEZvcm1GaWVsZHMiLCJoYXNTdWJtaXR0ZWQiLCJ1c2VGb3JtU3VibWl0dGVkIiwicGF0aFNlZ21lbnRzIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsInVzZVRocm90dGxlZEVmZmVjdCIsImVycm9yQ291bnQiLCJPYmplY3QiLCJlbnRyaWVzIiwia2V5IiwibWF0Y2hpbmdTZWdtZW50Iiwic29tZSIsInNlZ21lbnQiLCJlbmRzV2l0aCIsInN0YXJ0c1dpdGgiLCJ2YWxpZCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkE0Q2FBOzs7ZUFBQUE7Ozs4REE1Q0s7dUJBSThDOzJFQUNqQzt5QkFDb0I7Ozs7OztBQUVuRCxNQUFNQyxvQkFBb0IsQ0FBQ0MsWUFBb0JDO0lBQzdDLE1BQU1DLFlBQVlELFlBQVlFLE1BQU0sQ0FBQyxDQUFDQyxLQUFLQztRQUN6QyxJQUFJQyxJQUFBQSx3QkFBaUIsRUFBQ0QsYUFBYUUsSUFBQUEsdUJBQWdCLEVBQUNGLFdBQVc7WUFDN0Qsc0JBQXNCO1lBQ3RCRCxJQUFJSSxJQUFJLENBQUNSLGFBQWEsQ0FBQyxFQUFFQSxXQUFXLENBQUMsRUFBRUssU0FBU0ksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRUosU0FBU0ksSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvRSxPQUFPLElBQUlILElBQUFBLHdCQUFpQixFQUFDRCxXQUFXO1lBQ3RDLGtDQUFrQztZQUNsQ0QsSUFBSUksSUFBSSxJQUFJVCxrQkFBa0JDLFlBQVlLLFNBQVNLLE1BQU07UUFDM0QsT0FBTyxJQUFJTCxTQUFTTSxJQUFJLEtBQUssUUFBUTtZQUNuQyxPQUFPO1lBQ1BOLFNBQVNPLElBQUksQ0FBQ0MsT0FBTyxDQUFDLENBQUNDO2dCQUNyQixJQUFJQyxVQUFVZjtnQkFDZCxJQUFJZ0IsSUFBQUEsaUJBQVUsRUFBQ0YsTUFBTTtvQkFDbkJDLFVBQVVmLGFBQWEsQ0FBQyxFQUFFQSxXQUFXLENBQUMsRUFBRWMsSUFBSUwsSUFBSSxDQUFDLENBQUMsR0FBR0ssSUFBSUwsSUFBSTtnQkFDL0Q7Z0JBQ0FMLElBQUlJLElBQUksSUFBSVQsa0JBQWtCZ0IsU0FBU0QsSUFBSUosTUFBTTtZQUNuRDtRQUNGLE9BQU8sSUFBSUgsSUFBQUEsdUJBQWdCLEVBQUNGLFdBQVc7WUFDckMsMkJBQTJCO1lBQzNCRCxJQUFJSSxJQUFJLENBQUNSLGFBQWEsQ0FBQyxFQUFFQSxXQUFXLENBQUMsRUFBRUssU0FBU0ksSUFBSSxDQUFDLENBQUMsR0FBR0osU0FBU0ksSUFBSTtRQUN4RTtRQUVBLE9BQU9MO0lBQ1QsR0FBRyxFQUFFO0lBRUwsT0FBT0Y7QUFDVDtBQVVPLE1BQU1KLG1CQUE0RCxDQUFDLEVBQ3hFRyxXQUFXLEVBQ1hnQixJQUFJLEVBQ0pDLGFBQWEsRUFDZDtJQUNDLE1BQU0sQ0FBQ1IsT0FBTyxHQUFHUyxJQUFBQSx5QkFBZ0I7SUFDakMsTUFBTUMsZUFBZUMsSUFBQUEseUJBQWdCO0lBQ3JDLE1BQU0sQ0FBQ0MsYUFBYSxHQUFHQyxjQUFLLENBQUNDLFFBQVEsQ0FBQztRQUNwQyxJQUFJdkIsYUFBYTtZQUNmLE9BQU9GLGtCQUFrQmtCLE1BQU1oQjtRQUNqQztRQUVBLE9BQU87WUFBQyxDQUFDLEVBQUVnQixLQUFLLENBQUMsQ0FBQztTQUFDO0lBQ3JCO0lBRUFRLElBQUFBLDJCQUFrQixFQUNoQjtRQUNFLElBQUlDLGFBQWE7UUFDakIsSUFBSU4sY0FBYztZQUNoQk8sT0FBT0MsT0FBTyxDQUFDbEIsUUFBUUcsT0FBTyxDQUFDLENBQUMsQ0FBQ2dCLElBQUk7Z0JBQ25DLE1BQU1DLGtCQUFrQlIsYUFBYVMsSUFBSSxDQUFDLENBQUNDO29CQUN6QyxJQUFJQSxRQUFRQyxRQUFRLENBQUMsTUFBTTt3QkFDekIsT0FBT0osSUFBSUssVUFBVSxDQUFDRjtvQkFDeEI7b0JBQ0EsT0FBT0gsUUFBUUc7Z0JBQ2pCO2dCQUVBLElBQUlGLGlCQUFpQjtvQkFDbkIsSUFBSSxXQUFXcEIsTUFBTSxDQUFDbUIsSUFBSSxJQUFJLENBQUNuQixNQUFNLENBQUNtQixJQUFJLENBQUNNLEtBQUssRUFBRTt3QkFDaERULGNBQWM7b0JBQ2hCO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBUixjQUFjUTtJQUNoQixHQUNBLEtBQ0E7UUFBQ2hCO1FBQVFVO1FBQWNFO0tBQWE7SUFHdEMsT0FBTztBQUNUIn0=