New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@codegateinc/react-form-builder-v2

Package Overview
Dependencies
Maintainers
3
Versions
58
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@codegateinc/react-form-builder-v2 - npm Package Compare versions

Comparing version 1.1.0 to 1.2.0

readme.md

209

dist/react-form-builder-v2.cjs.development.js

@@ -39,4 +39,6 @@ 'use strict';

initialValue = _ref.initialValue,
validationRules = _ref.validationRules,
isRequired = _ref.isRequired,
_ref$validationRules = _ref.validationRules,
validationRules = _ref$validationRules === void 0 ? [] : _ref$validationRules,
_ref$isRequired = _ref.isRequired,
isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
placeholder = _ref.placeholder,

@@ -53,5 +55,6 @@ _ref$validateOnBlur = _ref.validateOnBlur,

var _useState2 = react.useState({
value: localInitialValue,
value: localInitialValue || '',
isPristine: true,
errorMessage: ''
errorMessage: '',
hasError: false
}),

@@ -67,3 +70,6 @@ field = _useState2[0],

if (!forceCheck && field.isPristine || !validationRules) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -74,7 +80,15 @@

if (isRequired && ramda.isEmpty(val)) {
return validationRules[0].errorMessage;
var _validationRules$;
return {
errorMessage: (_validationRules$ = validationRules[0]) == null ? void 0 : _validationRules$.errorMessage,
hasError: true
};
}
if (!isRequired && !Boolean(val)) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -85,3 +99,6 @@

});
return firstError ? firstError.errorMessage : '';
return {
errorMessage: firstError ? firstError.errorMessage : '',
hasError: Boolean(firstError == null ? void 0 : firstError.errorMessage)
};
};

@@ -96,2 +113,3 @@

parentKey: '',
hasError: field.hasError,
value: field.value,

@@ -101,15 +119,27 @@ hasChange: field.value !== localInitialValue,

onBlur: function onBlur() {
return validateOnBlur && setField(function (prevState) {
return _extends({}, prevState, {
isPristine: false,
errorMessage: computeErrorMessage(undefined, true)
if (validateOnBlur) {
var _computeErrorMessage = computeErrorMessage(undefined, true),
errorMessage = _computeErrorMessage.errorMessage,
hasError = _computeErrorMessage.hasError;
setField(function (prevState) {
return _extends({}, prevState, {
isPristine: false,
errorMessage: errorMessage,
hasError: hasError
});
});
});
}
},
onChangeValue: function onChangeValue(newValue) {
return setField(function (prevState) {
var _computeErrorMessage2 = computeErrorMessage(newValue, !validateOnBlur),
hasError = _computeErrorMessage2.hasError,
errorMessage = _computeErrorMessage2.errorMessage;
setField(function (prevState) {
return _extends({}, prevState, {
value: liveParser ? liveParser(newValue) : newValue,
isPristine: prevState.isPristine ? validateOnBlur : prevState.isPristine,
errorMessage: computeErrorMessage(newValue)
errorMessage: errorMessage,
hasError: hasError
});

@@ -130,14 +160,16 @@ });

validateOnSubmit: function validateOnSubmit() {
var errorMessage = computeErrorMessage(undefined, true);
var _computeErrorMessage3 = computeErrorMessage(undefined, true),
hasError = _computeErrorMessage3.hasError,
errorMessage = _computeErrorMessage3.errorMessage;
if (errorMessage) {
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: errorMessage
});
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: errorMessage,
hasError: hasError
});
return errorMessage;
}
return '';
});
return {
hasError: hasError,
errorMessage: errorMessage
};
},

@@ -156,3 +188,3 @@ setError: function setError(errorMessage) {

errorMessage: '',
value: initialValue
value: initialValue || ''
});

@@ -162,5 +194,10 @@ });

validate: function validate() {
return setField(function (prevState) {
var _computeErrorMessage4 = computeErrorMessage(undefined, true),
hasError = _computeErrorMessage4.hasError,
errorMessage = _computeErrorMessage4.errorMessage;
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: computeErrorMessage(undefined, true)
errorMessage: errorMessage,
hasError: hasError
});

@@ -185,3 +222,6 @@ });

if (!forceCheck && field.isPristine || !field.validationRules) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -192,7 +232,15 @@

if (field.isRequired && ramda.isEmpty(val)) {
return field.validationRules[0].errorMessage;
var _field$validationRule;
return {
errorMessage: (_field$validationRule = field.validationRules[0]) == null ? void 0 : _field$validationRule.errorMessage,
hasError: true
};
}
if (!field.isRequired && !Boolean(val)) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -203,3 +251,6 @@

});
return firstError ? firstError.errorMessage : '';
return {
errorMessage: firstError ? firstError.errorMessage : '',
hasError: Boolean(firstError == null ? void 0 : firstError.errorMessage)
};
};

@@ -212,2 +263,3 @@

parentKey: parentKey,
hasError: prevState[fieldConfig.key].hasError,
isRequired: fieldConfig.isRequired || false,

@@ -227,4 +279,9 @@ validateOnBlur: fieldConfig.validateOnBlur || false,

var _computeErrorMessage = computeErrorMessage(changedField, value),
errorMessage = _computeErrorMessage.errorMessage,
hasError = _computeErrorMessage.hasError;
return _extends({}, prevState, (_extends2 = {}, _extends2[fieldConfig.key] = _extends({}, changedField, {
errorMessage: computeErrorMessage(changedField, value)
errorMessage: errorMessage,
hasError: hasError
}), _extends2));

@@ -234,26 +291,35 @@ });

onBlur: function onBlur() {
return fieldConfig.validateOnBlur && setState(function (prevState) {
var _extends3;
if (fieldConfig.validateOnBlur) {
var _computeErrorMessage2 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
errorMessage = _computeErrorMessage2.errorMessage,
hasError = _computeErrorMessage2.hasError;
return _extends({}, prevState, (_extends3 = {}, _extends3[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
isPristine: false,
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
}), _extends3));
});
},
validateOnSubmit: function validateOnSubmit() {
var errorMessage = computeErrorMessage(prevState[fieldConfig.key], undefined, true);
if (errorMessage) {
setState(function (prevState) {
var _extends4;
var _extends3;
return _extends({}, prevState, (_extends4 = {}, _extends4[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: errorMessage
}), _extends4));
return _extends({}, prevState, (_extends3 = {}, _extends3[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
isPristine: false,
errorMessage: errorMessage,
hasError: hasError
}), _extends3));
});
return errorMessage;
}
},
validateOnSubmit: function validateOnSubmit() {
var _computeErrorMessage3 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
errorMessage = _computeErrorMessage3.errorMessage,
hasError = _computeErrorMessage3.hasError;
return '';
setState(function (prevState) {
var _extends4;
return _extends({}, prevState, (_extends4 = {}, _extends4[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: errorMessage,
hasError: hasError
}), _extends4));
});
return {
errorMessage: errorMessage,
hasError: hasError
};
},

@@ -293,7 +359,12 @@ onChangeInitialValue: function onChangeInitialValue(value) {

validate: function validate() {
return setState(function (prevState) {
var _computeErrorMessage4 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
hasError = _computeErrorMessage4.hasError,
errorMessage = _computeErrorMessage4.errorMessage;
setState(function (prevState) {
var _extends8;
return _extends({}, prevState, (_extends8 = {}, _extends8[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
errorMessage: errorMessage,
hasError: hasError
}), _extends8));

@@ -305,14 +376,2 @@ });

var useFormValidator = function useFormValidator(formFields) {
var hasMissingOptions = formFields.some(function (field) {
return field.isRequired && Boolean(field.value);
});
var hasError = formFields.some(function (field) {
return !ramda.isEmpty(field.errorMessage);
});
return {
hasError: hasError || hasMissingOptions
};
};
function useForm(formFields, callbacks) {

@@ -331,5 +390,2 @@ var injectedForm = Object.entries(formFields).reduce(function (acc, _ref) {

var _useFormValidator = useFormValidator(Object.values(formFields)),
hasError = _useFormValidator.hasError;
var form = _extends({}, injectedForm, Object.entries(innerForm).reduce(function (acc, _ref2) {

@@ -362,2 +418,8 @@ var field = _ref2[1];

var hasError = Object.values(form).filter(function (item) {
return item.isRequired;
}).some(function (item) {
return Boolean(item.errorMessage);
});
var addFieldsRecurrence = function addFieldsRecurrence(field, prevState, parentKey) {

@@ -383,7 +445,2 @@ var _ref3;

}),
isEachFieldValid: !Object.values(form).filter(function (item) {
return item.isRequired;
}).some(function (item) {
return Boolean(item.errorMessage);
}),
formHasChanges: function formHasChanges() {

@@ -435,5 +492,9 @@ return Object.values(form).some(function (field) {

var errors = Object.values(form).map(function (field) {
var _field$validateOnSubm = field.validateOnSubmit(),
hasError = _field$validateOnSubm.hasError,
errorMessage = _field$validateOnSubm.errorMessage;
return {
key: field.key,
errorMessage: field.validateOnSubmit()
errorMessage: errorMessage || (hasError ? 'This field is required' : '')
};

@@ -440,0 +501,0 @@ }).filter(function (field) {

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("ramda");function n(){return(n=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e}).apply(this,arguments)}var t=function(e){return null!=e},i=function(e,r){return t(e)&&r(e)};exports.useField=function(i){var u=i.key,a=i.label,o=i.initialValue,s=i.validationRules,l=i.isRequired,c=i.placeholder,f=i.validateOnBlur,v=void 0!==f&&f,d=i.liveParser,g=i.submitParser,y=e.useState(o),h=y[0],k=y[1],M=e.useState({value:h,isPristine:!0,errorMessage:""}),b=M[0],O=M[1],P=function(e,n){if(void 0===n&&(n=!1),!n&&b.isPristine||!s)return"";var i=t(e)?e:b.value;if(l&&r.isEmpty(i))return s[0].errorMessage;if(!l&&!Boolean(i))return"";var u=s.find((function(e){return!e.validate(i)}));return u?u.errorMessage:""};return{key:u,label:a,isRequired:l,placeholder:c,submitParser:g,parentKey:"",value:b.value,hasChange:b.value!==h,errorMessage:b.errorMessage,onBlur:function(){return v&&O((function(e){return n({},e,{isPristine:!1,errorMessage:P(void 0,!0)})}))},onChangeValue:function(e){return O((function(r){return n({},r,{value:d?d(e):e,isPristine:r.isPristine?v:r.isPristine,errorMessage:P(e)})}))},onChangeInitialValue:function(e){b.value===h&&O((function(r){return n({},r,{value:e})})),k(e)},validateOnSubmit:function(){var e=P(void 0,!0);return e?(O((function(r){return n({},r,{errorMessage:e})})),e):""},setError:function(e){return O((function(r){return n({},r,{errorMessage:e})}))},resetState:function(){return O((function(e){return n({},e,{isPristine:!0,errorMessage:"",value:o})}))},validate:function(){return O((function(e){return n({},e,{errorMessage:P(void 0,!0)})}))}}},exports.useForm=function(u,a){var o=Object.entries(u).reduce((function(e,r){var t;return n({},e,((t={})[r[0]]=r[1],t))}),{}),s=e.useState({}),l=s[0],c=s[1],f=function(e){var n=e.some((function(e){return e.isRequired&&Boolean(e.value)}));return{hasError:e.some((function(e){return!r.isEmpty(e.errorMessage)}))||n}}(Object.values(u)).hasError,v=n({},o,Object.entries(l).reduce((function(e,r){var t=r[1],i=t.parentKey.split(".").filter(Boolean);if(i.length>0){var u=i.reduce((function(r,u,a){var o,s;return n({},e,r,((s={})[u]=n({},e[u],r[u]||{},a===i.length-1?{children:[].concat((null==(o=r[u])?void 0:o.children)||[],[t])}:{}),s))}),{}),a=Object.keys(u).filter((function(e){return Object.keys(u[e]).length})).reduce((function(e,r){var t;return n({},e,((t={})[r]=u[r],t))}),{});return n({},e,a)}return n({},e,{field:t})}),{}));return{form:v,hasError:f,isFilled:Object.values(v).filter((function(e){return e.isRequired})).every((function(e){return e.hasChange})),isEachFieldValid:!Object.values(v).filter((function(e){return e.isRequired})).some((function(e){return Boolean(e.errorMessage)})),formHasChanges:function(){return Object.values(v).some((function(e){return e.hasChange}))},setError:function(e,r){v[e].setError(r),i(a.onError,(function(n){var t;return n(((t={})[e]=r,t))}))},setFieldValue:function(e,r){v[e].onChangeValue(r)},setFieldInitialValue:function(e,r){v[e].onChangeInitialValue(r)},addFields:function(e){return c((function(i){return n({},i,e.reduce((function(e,u){return n({},e,function e(i,u,a){var o;return i.children?i.children.reduce((function(r,t){return n({},r,e(t,u,a+"."+i.key))}),{}):((o={})[i.key]=function(e,i,u,a){var o;void 0===a&&(a="");var s=function(e,n,i){if(void 0===i&&(i=!1),!i&&e.isPristine||!e.validationRules)return"";var u=t(n)?n:e.value;if(e.isRequired&&r.isEmpty(u))return e.validationRules[0].errorMessage;if(!e.isRequired&&!Boolean(u))return"";var a=e.validationRules.find((function(e){return!e.validate(u)}));return a?a.errorMessage:""};return n({},e,{value:"",hasChange:!1,isPristine:!0,parentKey:a,isRequired:e.isRequired||!1,validateOnBlur:e.validateOnBlur||!1,localInitialValue:e.initialValue||"",errorMessage:null==(o=i[e.key])?void 0:o.errorMessage,onChangeValue:function(r){return u((function(t){var i,u,a=n({},t[e.key],{value:e.liveParser?e.liveParser(r):r,hasChange:r!==(null==(i=t[e.key])?void 0:i.localInitialValue),isPristine:t[e.key].isPristine?e.validateOnBlur||!1:t[e.key].isPristine});return n({},t,((u={})[e.key]=n({},a,{errorMessage:s(a,r)}),u))}))},onBlur:function(){return e.validateOnBlur&&u((function(r){var t;return n({},r,((t={})[e.key]=n({},r[e.key],{isPristine:!1,errorMessage:s(r[e.key],void 0,!0)}),t))}))},validateOnSubmit:function(){var r=s(i[e.key],void 0,!0);return r?(u((function(t){var i;return n({},t,((i={})[e.key]=n({},t[e.key],{errorMessage:r}),i))})),r):""},onChangeInitialValue:function(r){i.value===i.localInitialValue&&u((function(t){var i;return n({},t,((i={})[e.key]=n({},t[e.key],{value:r,localInitialValue:r}),i))}))},setError:function(r){return u((function(t){var i;return n({},t,((i={})[e.key]=n({},t[e.key],{errorMessage:r}),i))}))},resetState:function(){return u((function(r){var t;return n({},r,((t={})[e.key]=n({},r[e.key],{isPristine:!0,errorMessage:"",value:e.initialValue||""}),t))}))},validate:function(){return u((function(r){var t;return n({},r,((t={})[e.key]=n({},r[e.key],{errorMessage:s(r[e.key],void 0,!0)}),t))}))}})}(i,u,c,a),o)}(u,i,""))}),{}))}))},removeFieldIds:function(e){return c((function(r){return Object.keys(r).reduce((function(t,i){var u;return e.includes(i)?t:n({},t,((u={})[i]=r[i],u))}),{})}))},resetForm:function(){return Object.keys(v).forEach((function(e){return v[e].resetState()}))},submit:function(){var e=Object.values(v).map((function(e){return{key:e.key,errorMessage:e.validateOnSubmit()}})).filter((function(e){return Boolean(e.errorMessage)})).reduce((function(e,r){var t;return n({},e,((t={})[r.key]=r.errorMessage,t))}),{});if(Object.values(e).length>0)return i(a.onError,(function(r){return r(e)}));var r=Object.values(v).reduce((function(e,r){var t,i=r.value,u=r.submitParser;return n({},e,((t={})[r.key]=u?u(i):i,t))}),{});a.onSuccess(r)},validateAll:function(){return Object.values(v).forEach((function(e){return e.validate()}))}}};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),e=require("ramda");function n(){return(n=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(r[a]=n[a])}return r}).apply(this,arguments)}var a=function(r){return null!=r},t=function(r,e){return a(r)&&e(r)};exports.useField=function(t){var i=t.key,u=t.label,s=t.initialValue,o=t.validationRules,l=void 0===o?[]:o,c=t.isRequired,v=void 0!==c&&c,f=t.placeholder,d=t.validateOnBlur,h=void 0!==d&&d,g=t.liveParser,M=t.submitParser,y=r.useState(s),E=y[0],k=y[1],b=r.useState({value:E||"",isPristine:!0,errorMessage:"",hasError:!1}),O=b[0],P=b[1],m=function(r,n){if(void 0===n&&(n=!1),!n&&O.isPristine||!l)return{errorMessage:"",hasError:!1};var t,i=a(r)?r:O.value;if(v&&e.isEmpty(i))return{errorMessage:null==(t=l[0])?void 0:t.errorMessage,hasError:!0};if(!v&&!Boolean(i))return{errorMessage:"",hasError:!1};var u=l.find((function(r){return!r.validate(i)}));return{errorMessage:u?u.errorMessage:"",hasError:Boolean(null==u?void 0:u.errorMessage)}};return{key:i,label:u,isRequired:v,placeholder:f,submitParser:M,parentKey:"",hasError:O.hasError,value:O.value,hasChange:O.value!==E,errorMessage:O.errorMessage,onBlur:function(){if(h){var r=m(void 0,!0),e=r.errorMessage,a=r.hasError;P((function(r){return n({},r,{isPristine:!1,errorMessage:e,hasError:a})}))}},onChangeValue:function(r){var e=m(r,!h),a=e.hasError,t=e.errorMessage;P((function(e){return n({},e,{value:g?g(r):r,isPristine:e.isPristine?h:e.isPristine,errorMessage:t,hasError:a})}))},onChangeInitialValue:function(r){O.value===E&&P((function(e){return n({},e,{value:r})})),k(r)},validateOnSubmit:function(){var r=m(void 0,!0),e=r.hasError,a=r.errorMessage;return P((function(r){return n({},r,{errorMessage:a,hasError:e})})),{hasError:e,errorMessage:a}},setError:function(r){return P((function(e){return n({},e,{errorMessage:r})}))},resetState:function(){return P((function(r){return n({},r,{isPristine:!0,errorMessage:"",value:s||""})}))},validate:function(){var r=m(void 0,!0),e=r.hasError,a=r.errorMessage;P((function(r){return n({},r,{errorMessage:a,hasError:e})}))}}},exports.useForm=function(i,u){var s=Object.entries(i).reduce((function(r,e){var a;return n({},r,((a={})[e[0]]=e[1],a))}),{}),o=r.useState({}),l=o[1],c=n({},s,Object.entries(o[0]).reduce((function(r,e){var a=e[1],t=a.parentKey.split(".").filter(Boolean);if(t.length>0){var i=t.reduce((function(e,i,u){var s,o;return n({},r,e,((o={})[i]=n({},r[i],e[i]||{},u===t.length-1?{children:[].concat((null==(s=e[i])?void 0:s.children)||[],[a])}:{}),o))}),{}),u=Object.keys(i).filter((function(r){return Object.keys(i[r]).length})).reduce((function(r,e){var a;return n({},r,((a={})[e]=i[e],a))}),{});return n({},r,u)}return n({},r,{field:a})}),{})),v=Object.values(c).filter((function(r){return r.isRequired})).some((function(r){return Boolean(r.errorMessage)}));return{form:c,hasError:v,isFilled:Object.values(c).filter((function(r){return r.isRequired})).every((function(r){return r.hasChange})),formHasChanges:function(){return Object.values(c).some((function(r){return r.hasChange}))},setError:function(r,e){c[r].setError(e),t(u.onError,(function(n){var a;return n(((a={})[r]=e,a))}))},setFieldValue:function(r,e){c[r].onChangeValue(e)},setFieldInitialValue:function(r,e){c[r].onChangeInitialValue(e)},addFields:function(r){return l((function(t){return n({},t,r.reduce((function(r,i){return n({},r,function r(t,i,u){var s;return t.children?t.children.reduce((function(e,a){return n({},e,r(a,i,u+"."+t.key))}),{}):((s={})[t.key]=function(r,t,i,u){var s;void 0===u&&(u="");var o=function(r,n,t){if(void 0===t&&(t=!1),!t&&r.isPristine||!r.validationRules)return{errorMessage:"",hasError:!1};var i,u=a(n)?n:r.value;if(r.isRequired&&e.isEmpty(u))return{errorMessage:null==(i=r.validationRules[0])?void 0:i.errorMessage,hasError:!0};if(!r.isRequired&&!Boolean(u))return{errorMessage:"",hasError:!1};var s=r.validationRules.find((function(r){return!r.validate(u)}));return{errorMessage:s?s.errorMessage:"",hasError:Boolean(null==s?void 0:s.errorMessage)}};return n({},r,{value:"",hasChange:!1,isPristine:!0,parentKey:u,hasError:t[r.key].hasError,isRequired:r.isRequired||!1,validateOnBlur:r.validateOnBlur||!1,localInitialValue:r.initialValue||"",errorMessage:null==(s=t[r.key])?void 0:s.errorMessage,onChangeValue:function(e){return i((function(a){var t,i,u=n({},a[r.key],{value:r.liveParser?r.liveParser(e):e,hasChange:e!==(null==(t=a[r.key])?void 0:t.localInitialValue),isPristine:a[r.key].isPristine?r.validateOnBlur||!1:a[r.key].isPristine}),s=o(u,e);return n({},a,((i={})[r.key]=n({},u,{errorMessage:s.errorMessage,hasError:s.hasError}),i))}))},onBlur:function(){if(r.validateOnBlur){var e=o(t[r.key],void 0,!0),a=e.errorMessage,u=e.hasError;i((function(e){var t;return n({},e,((t={})[r.key]=n({},e[r.key],{isPristine:!1,errorMessage:a,hasError:u}),t))}))}},validateOnSubmit:function(){var e=o(t[r.key],void 0,!0),a=e.errorMessage,u=e.hasError;return i((function(e){var t;return n({},e,((t={})[r.key]=n({},e[r.key],{errorMessage:a,hasError:u}),t))})),{errorMessage:a,hasError:u}},onChangeInitialValue:function(e){t.value===t.localInitialValue&&i((function(a){var t;return n({},a,((t={})[r.key]=n({},a[r.key],{value:e,localInitialValue:e}),t))}))},setError:function(e){return i((function(a){var t;return n({},a,((t={})[r.key]=n({},a[r.key],{errorMessage:e}),t))}))},resetState:function(){return i((function(e){var a;return n({},e,((a={})[r.key]=n({},e[r.key],{isPristine:!0,errorMessage:"",value:r.initialValue||""}),a))}))},validate:function(){var e=o(t[r.key],void 0,!0),a=e.hasError,u=e.errorMessage;i((function(e){var t;return n({},e,((t={})[r.key]=n({},e[r.key],{errorMessage:u,hasError:a}),t))}))}})}(t,i,l,u),s)}(i,t,""))}),{}))}))},removeFieldIds:function(r){return l((function(e){return Object.keys(e).reduce((function(a,t){var i;return r.includes(t)?a:n({},a,((i={})[t]=e[t],i))}),{})}))},resetForm:function(){return Object.keys(c).forEach((function(r){return c[r].resetState()}))},submit:function(){var r=Object.values(c).map((function(r){var e=r.validateOnSubmit();return{key:r.key,errorMessage:e.errorMessage||(e.hasError?"This field is required":"")}})).filter((function(r){return Boolean(r.errorMessage)})).reduce((function(r,e){var a;return n({},r,((a={})[e.key]=e.errorMessage,a))}),{});if(Object.values(r).length>0)return t(u.onError,(function(e){return e(r)}));var e=Object.values(c).reduce((function(r,e){var a,t=e.value,i=e.submitParser;return n({},r,((a={})[e.key]=i?i(t):t,a))}),{});u.onSuccess(e)},validateAll:function(){return Object.values(c).forEach((function(r){return r.validate()}))}}};
//# sourceMappingURL=react-form-builder-v2.cjs.production.min.js.map

@@ -35,4 +35,6 @@ import { useState } from 'react';

initialValue = _ref.initialValue,
validationRules = _ref.validationRules,
isRequired = _ref.isRequired,
_ref$validationRules = _ref.validationRules,
validationRules = _ref$validationRules === void 0 ? [] : _ref$validationRules,
_ref$isRequired = _ref.isRequired,
isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
placeholder = _ref.placeholder,

@@ -49,5 +51,6 @@ _ref$validateOnBlur = _ref.validateOnBlur,

var _useState2 = useState({
value: localInitialValue,
value: localInitialValue || '',
isPristine: true,
errorMessage: ''
errorMessage: '',
hasError: false
}),

@@ -63,3 +66,6 @@ field = _useState2[0],

if (!forceCheck && field.isPristine || !validationRules) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -70,7 +76,15 @@

if (isRequired && isEmpty(val)) {
return validationRules[0].errorMessage;
var _validationRules$;
return {
errorMessage: (_validationRules$ = validationRules[0]) == null ? void 0 : _validationRules$.errorMessage,
hasError: true
};
}
if (!isRequired && !Boolean(val)) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -81,3 +95,6 @@

});
return firstError ? firstError.errorMessage : '';
return {
errorMessage: firstError ? firstError.errorMessage : '',
hasError: Boolean(firstError == null ? void 0 : firstError.errorMessage)
};
};

@@ -92,2 +109,3 @@

parentKey: '',
hasError: field.hasError,
value: field.value,

@@ -97,15 +115,27 @@ hasChange: field.value !== localInitialValue,

onBlur: function onBlur() {
return validateOnBlur && setField(function (prevState) {
return _extends({}, prevState, {
isPristine: false,
errorMessage: computeErrorMessage(undefined, true)
if (validateOnBlur) {
var _computeErrorMessage = computeErrorMessage(undefined, true),
errorMessage = _computeErrorMessage.errorMessage,
hasError = _computeErrorMessage.hasError;
setField(function (prevState) {
return _extends({}, prevState, {
isPristine: false,
errorMessage: errorMessage,
hasError: hasError
});
});
});
}
},
onChangeValue: function onChangeValue(newValue) {
return setField(function (prevState) {
var _computeErrorMessage2 = computeErrorMessage(newValue, !validateOnBlur),
hasError = _computeErrorMessage2.hasError,
errorMessage = _computeErrorMessage2.errorMessage;
setField(function (prevState) {
return _extends({}, prevState, {
value: liveParser ? liveParser(newValue) : newValue,
isPristine: prevState.isPristine ? validateOnBlur : prevState.isPristine,
errorMessage: computeErrorMessage(newValue)
errorMessage: errorMessage,
hasError: hasError
});

@@ -126,14 +156,16 @@ });

validateOnSubmit: function validateOnSubmit() {
var errorMessage = computeErrorMessage(undefined, true);
var _computeErrorMessage3 = computeErrorMessage(undefined, true),
hasError = _computeErrorMessage3.hasError,
errorMessage = _computeErrorMessage3.errorMessage;
if (errorMessage) {
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: errorMessage
});
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: errorMessage,
hasError: hasError
});
return errorMessage;
}
return '';
});
return {
hasError: hasError,
errorMessage: errorMessage
};
},

@@ -152,3 +184,3 @@ setError: function setError(errorMessage) {

errorMessage: '',
value: initialValue
value: initialValue || ''
});

@@ -158,5 +190,10 @@ });

validate: function validate() {
return setField(function (prevState) {
var _computeErrorMessage4 = computeErrorMessage(undefined, true),
hasError = _computeErrorMessage4.hasError,
errorMessage = _computeErrorMessage4.errorMessage;
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: computeErrorMessage(undefined, true)
errorMessage: errorMessage,
hasError: hasError
});

@@ -181,3 +218,6 @@ });

if (!forceCheck && field.isPristine || !field.validationRules) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -188,7 +228,15 @@

if (field.isRequired && isEmpty(val)) {
return field.validationRules[0].errorMessage;
var _field$validationRule;
return {
errorMessage: (_field$validationRule = field.validationRules[0]) == null ? void 0 : _field$validationRule.errorMessage,
hasError: true
};
}
if (!field.isRequired && !Boolean(val)) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -199,3 +247,6 @@

});
return firstError ? firstError.errorMessage : '';
return {
errorMessage: firstError ? firstError.errorMessage : '',
hasError: Boolean(firstError == null ? void 0 : firstError.errorMessage)
};
};

@@ -208,2 +259,3 @@

parentKey: parentKey,
hasError: prevState[fieldConfig.key].hasError,
isRequired: fieldConfig.isRequired || false,

@@ -223,4 +275,9 @@ validateOnBlur: fieldConfig.validateOnBlur || false,

var _computeErrorMessage = computeErrorMessage(changedField, value),
errorMessage = _computeErrorMessage.errorMessage,
hasError = _computeErrorMessage.hasError;
return _extends({}, prevState, (_extends2 = {}, _extends2[fieldConfig.key] = _extends({}, changedField, {
errorMessage: computeErrorMessage(changedField, value)
errorMessage: errorMessage,
hasError: hasError
}), _extends2));

@@ -230,26 +287,35 @@ });

onBlur: function onBlur() {
return fieldConfig.validateOnBlur && setState(function (prevState) {
var _extends3;
if (fieldConfig.validateOnBlur) {
var _computeErrorMessage2 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
errorMessage = _computeErrorMessage2.errorMessage,
hasError = _computeErrorMessage2.hasError;
return _extends({}, prevState, (_extends3 = {}, _extends3[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
isPristine: false,
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
}), _extends3));
});
},
validateOnSubmit: function validateOnSubmit() {
var errorMessage = computeErrorMessage(prevState[fieldConfig.key], undefined, true);
if (errorMessage) {
setState(function (prevState) {
var _extends4;
var _extends3;
return _extends({}, prevState, (_extends4 = {}, _extends4[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: errorMessage
}), _extends4));
return _extends({}, prevState, (_extends3 = {}, _extends3[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
isPristine: false,
errorMessage: errorMessage,
hasError: hasError
}), _extends3));
});
return errorMessage;
}
},
validateOnSubmit: function validateOnSubmit() {
var _computeErrorMessage3 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
errorMessage = _computeErrorMessage3.errorMessage,
hasError = _computeErrorMessage3.hasError;
return '';
setState(function (prevState) {
var _extends4;
return _extends({}, prevState, (_extends4 = {}, _extends4[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: errorMessage,
hasError: hasError
}), _extends4));
});
return {
errorMessage: errorMessage,
hasError: hasError
};
},

@@ -289,7 +355,12 @@ onChangeInitialValue: function onChangeInitialValue(value) {

validate: function validate() {
return setState(function (prevState) {
var _computeErrorMessage4 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
hasError = _computeErrorMessage4.hasError,
errorMessage = _computeErrorMessage4.errorMessage;
setState(function (prevState) {
var _extends8;
return _extends({}, prevState, (_extends8 = {}, _extends8[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
errorMessage: errorMessage,
hasError: hasError
}), _extends8));

@@ -301,14 +372,2 @@ });

var useFormValidator = function useFormValidator(formFields) {
var hasMissingOptions = formFields.some(function (field) {
return field.isRequired && Boolean(field.value);
});
var hasError = formFields.some(function (field) {
return !isEmpty(field.errorMessage);
});
return {
hasError: hasError || hasMissingOptions
};
};
function useForm(formFields, callbacks) {

@@ -327,5 +386,2 @@ var injectedForm = Object.entries(formFields).reduce(function (acc, _ref) {

var _useFormValidator = useFormValidator(Object.values(formFields)),
hasError = _useFormValidator.hasError;
var form = _extends({}, injectedForm, Object.entries(innerForm).reduce(function (acc, _ref2) {

@@ -358,2 +414,8 @@ var field = _ref2[1];

var hasError = Object.values(form).filter(function (item) {
return item.isRequired;
}).some(function (item) {
return Boolean(item.errorMessage);
});
var addFieldsRecurrence = function addFieldsRecurrence(field, prevState, parentKey) {

@@ -379,7 +441,2 @@ var _ref3;

}),
isEachFieldValid: !Object.values(form).filter(function (item) {
return item.isRequired;
}).some(function (item) {
return Boolean(item.errorMessage);
}),
formHasChanges: function formHasChanges() {

@@ -431,5 +488,9 @@ return Object.values(form).some(function (field) {

var errors = Object.values(form).map(function (field) {
var _field$validateOnSubm = field.validateOnSubmit(),
hasError = _field$validateOnSubm.hasError,
errorMessage = _field$validateOnSubm.errorMessage;
return {
key: field.key,
errorMessage: field.validateOnSubmit()
errorMessage: errorMessage || (hasError ? 'This field is required' : '')
};

@@ -436,0 +497,0 @@ }).filter(function (field) {

@@ -38,4 +38,6 @@ (function (global, factory) {

initialValue = _ref.initialValue,
validationRules = _ref.validationRules,
isRequired = _ref.isRequired,
_ref$validationRules = _ref.validationRules,
validationRules = _ref$validationRules === void 0 ? [] : _ref$validationRules,
_ref$isRequired = _ref.isRequired,
isRequired = _ref$isRequired === void 0 ? false : _ref$isRequired,
placeholder = _ref.placeholder,

@@ -52,5 +54,6 @@ _ref$validateOnBlur = _ref.validateOnBlur,

var _useState2 = react.useState({
value: localInitialValue,
value: localInitialValue || '',
isPristine: true,
errorMessage: ''
errorMessage: '',
hasError: false
}),

@@ -66,3 +69,6 @@ field = _useState2[0],

if (!forceCheck && field.isPristine || !validationRules) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -73,7 +79,15 @@

if (isRequired && ramda.isEmpty(val)) {
return validationRules[0].errorMessage;
var _validationRules$;
return {
errorMessage: (_validationRules$ = validationRules[0]) == null ? void 0 : _validationRules$.errorMessage,
hasError: true
};
}
if (!isRequired && !Boolean(val)) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -84,3 +98,6 @@

});
return firstError ? firstError.errorMessage : '';
return {
errorMessage: firstError ? firstError.errorMessage : '',
hasError: Boolean(firstError == null ? void 0 : firstError.errorMessage)
};
};

@@ -95,2 +112,3 @@

parentKey: '',
hasError: field.hasError,
value: field.value,

@@ -100,15 +118,27 @@ hasChange: field.value !== localInitialValue,

onBlur: function onBlur() {
return validateOnBlur && setField(function (prevState) {
return _extends({}, prevState, {
isPristine: false,
errorMessage: computeErrorMessage(undefined, true)
if (validateOnBlur) {
var _computeErrorMessage = computeErrorMessage(undefined, true),
errorMessage = _computeErrorMessage.errorMessage,
hasError = _computeErrorMessage.hasError;
setField(function (prevState) {
return _extends({}, prevState, {
isPristine: false,
errorMessage: errorMessage,
hasError: hasError
});
});
});
}
},
onChangeValue: function onChangeValue(newValue) {
return setField(function (prevState) {
var _computeErrorMessage2 = computeErrorMessage(newValue, !validateOnBlur),
hasError = _computeErrorMessage2.hasError,
errorMessage = _computeErrorMessage2.errorMessage;
setField(function (prevState) {
return _extends({}, prevState, {
value: liveParser ? liveParser(newValue) : newValue,
isPristine: prevState.isPristine ? validateOnBlur : prevState.isPristine,
errorMessage: computeErrorMessage(newValue)
errorMessage: errorMessage,
hasError: hasError
});

@@ -129,14 +159,16 @@ });

validateOnSubmit: function validateOnSubmit() {
var errorMessage = computeErrorMessage(undefined, true);
var _computeErrorMessage3 = computeErrorMessage(undefined, true),
hasError = _computeErrorMessage3.hasError,
errorMessage = _computeErrorMessage3.errorMessage;
if (errorMessage) {
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: errorMessage
});
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: errorMessage,
hasError: hasError
});
return errorMessage;
}
return '';
});
return {
hasError: hasError,
errorMessage: errorMessage
};
},

@@ -155,3 +187,3 @@ setError: function setError(errorMessage) {

errorMessage: '',
value: initialValue
value: initialValue || ''
});

@@ -161,5 +193,10 @@ });

validate: function validate() {
return setField(function (prevState) {
var _computeErrorMessage4 = computeErrorMessage(undefined, true),
hasError = _computeErrorMessage4.hasError,
errorMessage = _computeErrorMessage4.errorMessage;
setField(function (prevState) {
return _extends({}, prevState, {
errorMessage: computeErrorMessage(undefined, true)
errorMessage: errorMessage,
hasError: hasError
});

@@ -184,3 +221,6 @@ });

if (!forceCheck && field.isPristine || !field.validationRules) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -191,7 +231,15 @@

if (field.isRequired && ramda.isEmpty(val)) {
return field.validationRules[0].errorMessage;
var _field$validationRule;
return {
errorMessage: (_field$validationRule = field.validationRules[0]) == null ? void 0 : _field$validationRule.errorMessage,
hasError: true
};
}
if (!field.isRequired && !Boolean(val)) {
return '';
return {
errorMessage: '',
hasError: false
};
}

@@ -202,3 +250,6 @@

});
return firstError ? firstError.errorMessage : '';
return {
errorMessage: firstError ? firstError.errorMessage : '',
hasError: Boolean(firstError == null ? void 0 : firstError.errorMessage)
};
};

@@ -211,2 +262,3 @@

parentKey: parentKey,
hasError: prevState[fieldConfig.key].hasError,
isRequired: fieldConfig.isRequired || false,

@@ -226,4 +278,9 @@ validateOnBlur: fieldConfig.validateOnBlur || false,

var _computeErrorMessage = computeErrorMessage(changedField, value),
errorMessage = _computeErrorMessage.errorMessage,
hasError = _computeErrorMessage.hasError;
return _extends({}, prevState, (_extends2 = {}, _extends2[fieldConfig.key] = _extends({}, changedField, {
errorMessage: computeErrorMessage(changedField, value)
errorMessage: errorMessage,
hasError: hasError
}), _extends2));

@@ -233,26 +290,35 @@ });

onBlur: function onBlur() {
return fieldConfig.validateOnBlur && setState(function (prevState) {
var _extends3;
if (fieldConfig.validateOnBlur) {
var _computeErrorMessage2 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
errorMessage = _computeErrorMessage2.errorMessage,
hasError = _computeErrorMessage2.hasError;
return _extends({}, prevState, (_extends3 = {}, _extends3[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
isPristine: false,
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
}), _extends3));
});
},
validateOnSubmit: function validateOnSubmit() {
var errorMessage = computeErrorMessage(prevState[fieldConfig.key], undefined, true);
if (errorMessage) {
setState(function (prevState) {
var _extends4;
var _extends3;
return _extends({}, prevState, (_extends4 = {}, _extends4[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: errorMessage
}), _extends4));
return _extends({}, prevState, (_extends3 = {}, _extends3[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
isPristine: false,
errorMessage: errorMessage,
hasError: hasError
}), _extends3));
});
return errorMessage;
}
},
validateOnSubmit: function validateOnSubmit() {
var _computeErrorMessage3 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
errorMessage = _computeErrorMessage3.errorMessage,
hasError = _computeErrorMessage3.hasError;
return '';
setState(function (prevState) {
var _extends4;
return _extends({}, prevState, (_extends4 = {}, _extends4[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: errorMessage,
hasError: hasError
}), _extends4));
});
return {
errorMessage: errorMessage,
hasError: hasError
};
},

@@ -292,7 +358,12 @@ onChangeInitialValue: function onChangeInitialValue(value) {

validate: function validate() {
return setState(function (prevState) {
var _computeErrorMessage4 = computeErrorMessage(prevState[fieldConfig.key], undefined, true),
hasError = _computeErrorMessage4.hasError,
errorMessage = _computeErrorMessage4.errorMessage;
setState(function (prevState) {
var _extends8;
return _extends({}, prevState, (_extends8 = {}, _extends8[fieldConfig.key] = _extends({}, prevState[fieldConfig.key], {
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
errorMessage: errorMessage,
hasError: hasError
}), _extends8));

@@ -304,14 +375,2 @@ });

var useFormValidator = function useFormValidator(formFields) {
var hasMissingOptions = formFields.some(function (field) {
return field.isRequired && Boolean(field.value);
});
var hasError = formFields.some(function (field) {
return !ramda.isEmpty(field.errorMessage);
});
return {
hasError: hasError || hasMissingOptions
};
};
function useForm(formFields, callbacks) {

@@ -330,5 +389,2 @@ var injectedForm = Object.entries(formFields).reduce(function (acc, _ref) {

var _useFormValidator = useFormValidator(Object.values(formFields)),
hasError = _useFormValidator.hasError;
var form = _extends({}, injectedForm, Object.entries(innerForm).reduce(function (acc, _ref2) {

@@ -361,2 +417,8 @@ var field = _ref2[1];

var hasError = Object.values(form).filter(function (item) {
return item.isRequired;
}).some(function (item) {
return Boolean(item.errorMessage);
});
var addFieldsRecurrence = function addFieldsRecurrence(field, prevState, parentKey) {

@@ -382,7 +444,2 @@ var _ref3;

}),
isEachFieldValid: !Object.values(form).filter(function (item) {
return item.isRequired;
}).some(function (item) {
return Boolean(item.errorMessage);
}),
formHasChanges: function formHasChanges() {

@@ -434,5 +491,9 @@ return Object.values(form).some(function (field) {

var errors = Object.values(form).map(function (field) {
var _field$validateOnSubm = field.validateOnSubmit(),
hasError = _field$validateOnSubm.hasError,
errorMessage = _field$validateOnSubm.errorMessage;
return {
key: field.key,
errorMessage: field.validateOnSubmit()
errorMessage: errorMessage || (hasError ? 'This field is required' : '')
};

@@ -439,0 +500,0 @@ }).filter(function (field) {

@@ -1,2 +0,2 @@

!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react"),require("ramda")):"function"==typeof define&&define.amd?define(["exports","react","ramda"],r):r((e=e||self)["@codegateinc/react-form-builder-v2"]={},e.React,e.ramda)}(this,(function(e,r,n){"use strict";function t(){return(t=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e}).apply(this,arguments)}var i=function(e){return null!=e},u=function(e,r){return i(e)&&r(e)};e.useField=function(e){var u=e.key,a=e.label,o=e.initialValue,s=e.validationRules,l=e.isRequired,c=e.placeholder,f=e.validateOnBlur,v=void 0!==f&&f,d=e.liveParser,y=e.submitParser,g=r.useState(o),h=g[0],k=g[1],b=r.useState({value:h,isPristine:!0,errorMessage:""}),M=b[0],m=b[1],O=function(e,r){if(void 0===r&&(r=!1),!r&&M.isPristine||!s)return"";var t=i(e)?e:M.value;if(l&&n.isEmpty(t))return s[0].errorMessage;if(!l&&!Boolean(t))return"";var u=s.find((function(e){return!e.validate(t)}));return u?u.errorMessage:""};return{key:u,label:a,isRequired:l,placeholder:c,submitParser:y,parentKey:"",value:M.value,hasChange:M.value!==h,errorMessage:M.errorMessage,onBlur:function(){return v&&m((function(e){return t({},e,{isPristine:!1,errorMessage:O(void 0,!0)})}))},onChangeValue:function(e){return m((function(r){return t({},r,{value:d?d(e):e,isPristine:r.isPristine?v:r.isPristine,errorMessage:O(e)})}))},onChangeInitialValue:function(e){M.value===h&&m((function(r){return t({},r,{value:e})})),k(e)},validateOnSubmit:function(){var e=O(void 0,!0);return e?(m((function(r){return t({},r,{errorMessage:e})})),e):""},setError:function(e){return m((function(r){return t({},r,{errorMessage:e})}))},resetState:function(){return m((function(e){return t({},e,{isPristine:!0,errorMessage:"",value:o})}))},validate:function(){return m((function(e){return t({},e,{errorMessage:O(void 0,!0)})}))}}},e.useForm=function(e,a){var o=Object.entries(e).reduce((function(e,r){var n;return t({},e,((n={})[r[0]]=r[1],n))}),{}),s=r.useState({}),l=s[0],c=s[1],f=function(e){var r=e.some((function(e){return e.isRequired&&Boolean(e.value)}));return{hasError:e.some((function(e){return!n.isEmpty(e.errorMessage)}))||r}}(Object.values(e)).hasError,v=t({},o,Object.entries(l).reduce((function(e,r){var n=r[1],i=n.parentKey.split(".").filter(Boolean);if(i.length>0){var u=i.reduce((function(r,u,a){var o,s;return t({},e,r,((s={})[u]=t({},e[u],r[u]||{},a===i.length-1?{children:[].concat((null==(o=r[u])?void 0:o.children)||[],[n])}:{}),s))}),{}),a=Object.keys(u).filter((function(e){return Object.keys(u[e]).length})).reduce((function(e,r){var n;return t({},e,((n={})[r]=u[r],n))}),{});return t({},e,a)}return t({},e,{field:n})}),{}));return{form:v,hasError:f,isFilled:Object.values(v).filter((function(e){return e.isRequired})).every((function(e){return e.hasChange})),isEachFieldValid:!Object.values(v).filter((function(e){return e.isRequired})).some((function(e){return Boolean(e.errorMessage)})),formHasChanges:function(){return Object.values(v).some((function(e){return e.hasChange}))},setError:function(e,r){v[e].setError(r),u(a.onError,(function(n){var t;return n(((t={})[e]=r,t))}))},setFieldValue:function(e,r){v[e].onChangeValue(r)},setFieldInitialValue:function(e,r){v[e].onChangeInitialValue(r)},addFields:function(e){return c((function(r){return t({},r,e.reduce((function(e,u){return t({},e,function e(r,u,a){var o;return r.children?r.children.reduce((function(n,i){return t({},n,e(i,u,a+"."+r.key))}),{}):((o={})[r.key]=function(e,r,u,a){var o;void 0===a&&(a="");var s=function(e,r,t){if(void 0===t&&(t=!1),!t&&e.isPristine||!e.validationRules)return"";var u=i(r)?r:e.value;if(e.isRequired&&n.isEmpty(u))return e.validationRules[0].errorMessage;if(!e.isRequired&&!Boolean(u))return"";var a=e.validationRules.find((function(e){return!e.validate(u)}));return a?a.errorMessage:""};return t({},e,{value:"",hasChange:!1,isPristine:!0,parentKey:a,isRequired:e.isRequired||!1,validateOnBlur:e.validateOnBlur||!1,localInitialValue:e.initialValue||"",errorMessage:null==(o=r[e.key])?void 0:o.errorMessage,onChangeValue:function(r){return u((function(n){var i,u,a=t({},n[e.key],{value:e.liveParser?e.liveParser(r):r,hasChange:r!==(null==(i=n[e.key])?void 0:i.localInitialValue),isPristine:n[e.key].isPristine?e.validateOnBlur||!1:n[e.key].isPristine});return t({},n,((u={})[e.key]=t({},a,{errorMessage:s(a,r)}),u))}))},onBlur:function(){return e.validateOnBlur&&u((function(r){var n;return t({},r,((n={})[e.key]=t({},r[e.key],{isPristine:!1,errorMessage:s(r[e.key],void 0,!0)}),n))}))},validateOnSubmit:function(){var n=s(r[e.key],void 0,!0);return n?(u((function(r){var i;return t({},r,((i={})[e.key]=t({},r[e.key],{errorMessage:n}),i))})),n):""},onChangeInitialValue:function(n){r.value===r.localInitialValue&&u((function(r){var i;return t({},r,((i={})[e.key]=t({},r[e.key],{value:n,localInitialValue:n}),i))}))},setError:function(r){return u((function(n){var i;return t({},n,((i={})[e.key]=t({},n[e.key],{errorMessage:r}),i))}))},resetState:function(){return u((function(r){var n;return t({},r,((n={})[e.key]=t({},r[e.key],{isPristine:!0,errorMessage:"",value:e.initialValue||""}),n))}))},validate:function(){return u((function(r){var n;return t({},r,((n={})[e.key]=t({},r[e.key],{errorMessage:s(r[e.key],void 0,!0)}),n))}))}})}(r,u,c,a),o)}(u,r,""))}),{}))}))},removeFieldIds:function(e){return c((function(r){return Object.keys(r).reduce((function(n,i){var u;return e.includes(i)?n:t({},n,((u={})[i]=r[i],u))}),{})}))},resetForm:function(){return Object.keys(v).forEach((function(e){return v[e].resetState()}))},submit:function(){var e=Object.values(v).map((function(e){return{key:e.key,errorMessage:e.validateOnSubmit()}})).filter((function(e){return Boolean(e.errorMessage)})).reduce((function(e,r){var n;return t({},e,((n={})[r.key]=r.errorMessage,n))}),{});if(Object.values(e).length>0)return u(a.onError,(function(r){return r(e)}));var r=Object.values(v).reduce((function(e,r){var n,i=r.value,u=r.submitParser;return t({},e,((n={})[r.key]=u?u(i):i,n))}),{});a.onSuccess(r)},validateAll:function(){return Object.values(v).forEach((function(e){return e.validate()}))}}},Object.defineProperty(e,"__esModule",{value:!0})}));
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("ramda")):"function"==typeof define&&define.amd?define(["exports","react","ramda"],e):e((r=r||self)["@codegateinc/react-form-builder-v2"]={},r.React,r.ramda)}(this,(function(r,e,n){"use strict";function a(){return(a=Object.assign||function(r){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(r[a]=n[a])}return r}).apply(this,arguments)}var t=function(r){return null!=r},i=function(r,e){return t(r)&&e(r)};r.useField=function(r){var i=r.key,o=r.label,u=r.initialValue,s=r.validationRules,l=void 0===s?[]:s,c=r.isRequired,f=void 0!==c&&c,v=r.placeholder,d=r.validateOnBlur,h=void 0!==d&&d,g=r.liveParser,y=r.submitParser,M=e.useState(u),E=M[0],k=M[1],b=e.useState({value:E||"",isPristine:!0,errorMessage:"",hasError:!1}),O=b[0],m=b[1],P=function(r,e){if(void 0===e&&(e=!1),!e&&O.isPristine||!l)return{errorMessage:"",hasError:!1};var a,i=t(r)?r:O.value;if(f&&n.isEmpty(i))return{errorMessage:null==(a=l[0])?void 0:a.errorMessage,hasError:!0};if(!f&&!Boolean(i))return{errorMessage:"",hasError:!1};var o=l.find((function(r){return!r.validate(i)}));return{errorMessage:o?o.errorMessage:"",hasError:Boolean(null==o?void 0:o.errorMessage)}};return{key:i,label:o,isRequired:f,placeholder:v,submitParser:y,parentKey:"",hasError:O.hasError,value:O.value,hasChange:O.value!==E,errorMessage:O.errorMessage,onBlur:function(){if(h){var r=P(void 0,!0),e=r.errorMessage,n=r.hasError;m((function(r){return a({},r,{isPristine:!1,errorMessage:e,hasError:n})}))}},onChangeValue:function(r){var e=P(r,!h),n=e.hasError,t=e.errorMessage;m((function(e){return a({},e,{value:g?g(r):r,isPristine:e.isPristine?h:e.isPristine,errorMessage:t,hasError:n})}))},onChangeInitialValue:function(r){O.value===E&&m((function(e){return a({},e,{value:r})})),k(r)},validateOnSubmit:function(){var r=P(void 0,!0),e=r.hasError,n=r.errorMessage;return m((function(r){return a({},r,{errorMessage:n,hasError:e})})),{hasError:e,errorMessage:n}},setError:function(r){return m((function(e){return a({},e,{errorMessage:r})}))},resetState:function(){return m((function(r){return a({},r,{isPristine:!0,errorMessage:"",value:u||""})}))},validate:function(){var r=P(void 0,!0),e=r.hasError,n=r.errorMessage;m((function(r){return a({},r,{errorMessage:n,hasError:e})}))}}},r.useForm=function(r,o){var u=Object.entries(r).reduce((function(r,e){var n;return a({},r,((n={})[e[0]]=e[1],n))}),{}),s=e.useState({}),l=s[1],c=a({},u,Object.entries(s[0]).reduce((function(r,e){var n=e[1],t=n.parentKey.split(".").filter(Boolean);if(t.length>0){var i=t.reduce((function(e,i,o){var u,s;return a({},r,e,((s={})[i]=a({},r[i],e[i]||{},o===t.length-1?{children:[].concat((null==(u=e[i])?void 0:u.children)||[],[n])}:{}),s))}),{}),o=Object.keys(i).filter((function(r){return Object.keys(i[r]).length})).reduce((function(r,e){var n;return a({},r,((n={})[e]=i[e],n))}),{});return a({},r,o)}return a({},r,{field:n})}),{})),f=Object.values(c).filter((function(r){return r.isRequired})).some((function(r){return Boolean(r.errorMessage)}));return{form:c,hasError:f,isFilled:Object.values(c).filter((function(r){return r.isRequired})).every((function(r){return r.hasChange})),formHasChanges:function(){return Object.values(c).some((function(r){return r.hasChange}))},setError:function(r,e){c[r].setError(e),i(o.onError,(function(n){var a;return n(((a={})[r]=e,a))}))},setFieldValue:function(r,e){c[r].onChangeValue(e)},setFieldInitialValue:function(r,e){c[r].onChangeInitialValue(e)},addFields:function(r){return l((function(e){return a({},e,r.reduce((function(r,i){return a({},r,function r(e,i,o){var u;return e.children?e.children.reduce((function(n,t){return a({},n,r(t,i,o+"."+e.key))}),{}):((u={})[e.key]=function(r,e,i,o){var u;void 0===o&&(o="");var s=function(r,e,a){if(void 0===a&&(a=!1),!a&&r.isPristine||!r.validationRules)return{errorMessage:"",hasError:!1};var i,o=t(e)?e:r.value;if(r.isRequired&&n.isEmpty(o))return{errorMessage:null==(i=r.validationRules[0])?void 0:i.errorMessage,hasError:!0};if(!r.isRequired&&!Boolean(o))return{errorMessage:"",hasError:!1};var u=r.validationRules.find((function(r){return!r.validate(o)}));return{errorMessage:u?u.errorMessage:"",hasError:Boolean(null==u?void 0:u.errorMessage)}};return a({},r,{value:"",hasChange:!1,isPristine:!0,parentKey:o,hasError:e[r.key].hasError,isRequired:r.isRequired||!1,validateOnBlur:r.validateOnBlur||!1,localInitialValue:r.initialValue||"",errorMessage:null==(u=e[r.key])?void 0:u.errorMessage,onChangeValue:function(e){return i((function(n){var t,i,o=a({},n[r.key],{value:r.liveParser?r.liveParser(e):e,hasChange:e!==(null==(t=n[r.key])?void 0:t.localInitialValue),isPristine:n[r.key].isPristine?r.validateOnBlur||!1:n[r.key].isPristine}),u=s(o,e);return a({},n,((i={})[r.key]=a({},o,{errorMessage:u.errorMessage,hasError:u.hasError}),i))}))},onBlur:function(){if(r.validateOnBlur){var n=s(e[r.key],void 0,!0),t=n.errorMessage,o=n.hasError;i((function(e){var n;return a({},e,((n={})[r.key]=a({},e[r.key],{isPristine:!1,errorMessage:t,hasError:o}),n))}))}},validateOnSubmit:function(){var n=s(e[r.key],void 0,!0),t=n.errorMessage,o=n.hasError;return i((function(e){var n;return a({},e,((n={})[r.key]=a({},e[r.key],{errorMessage:t,hasError:o}),n))})),{errorMessage:t,hasError:o}},onChangeInitialValue:function(n){e.value===e.localInitialValue&&i((function(e){var t;return a({},e,((t={})[r.key]=a({},e[r.key],{value:n,localInitialValue:n}),t))}))},setError:function(e){return i((function(n){var t;return a({},n,((t={})[r.key]=a({},n[r.key],{errorMessage:e}),t))}))},resetState:function(){return i((function(e){var n;return a({},e,((n={})[r.key]=a({},e[r.key],{isPristine:!0,errorMessage:"",value:r.initialValue||""}),n))}))},validate:function(){var n=s(e[r.key],void 0,!0),t=n.hasError,o=n.errorMessage;i((function(e){var n;return a({},e,((n={})[r.key]=a({},e[r.key],{errorMessage:o,hasError:t}),n))}))}})}(e,i,l,o),u)}(i,e,""))}),{}))}))},removeFieldIds:function(r){return l((function(e){return Object.keys(e).reduce((function(n,t){var i;return r.includes(t)?n:a({},n,((i={})[t]=e[t],i))}),{})}))},resetForm:function(){return Object.keys(c).forEach((function(r){return c[r].resetState()}))},submit:function(){var r=Object.values(c).map((function(r){var e=r.validateOnSubmit();return{key:r.key,errorMessage:e.errorMessage||(e.hasError?"This field is required":"")}})).filter((function(r){return Boolean(r.errorMessage)})).reduce((function(r,e){var n;return a({},r,((n={})[e.key]=e.errorMessage,n))}),{});if(Object.values(r).length>0)return i(o.onError,(function(e){return e(r)}));var e=Object.values(c).reduce((function(r,e){var n,t=e.value,i=e.submitParser;return a({},r,((n={})[e.key]=i?i(t):t,n))}),{});o.onSuccess(e)},validateAll:function(){return Object.values(c).forEach((function(r){return r.validate()}))}}},Object.defineProperty(r,"__esModule",{value:!0})}));
//# sourceMappingURL=react-form-builder-v2.umd.production.min.js.map

@@ -19,2 +19,4 @@ type VoidFunction = () => void

validate: VoidFunction,
children?: Array<Field<T>>,
hasError: boolean,
validateOnSubmit(): string,

@@ -42,3 +44,2 @@ onChangeValue(newValue: T): void,

isFilled: boolean,
isEachFieldValid: boolean,
resetForm: VoidFunction,

@@ -70,3 +71,4 @@ submit: VoidFunction,

useField,
Field
Field,
UseFormReturn
}

@@ -6,3 +6,3 @@ {

"typings": "index.d.ts",
"version": "1.1.0",
"version": "1.2.0",
"main": "dist/index.js",

@@ -15,5 +15,7 @@ "scripts": {

},
"dependencies": {
"ramda": "0.28.0"
},
"peerDependencies": {
"react": "18.x.x",
"ramda": "^0.28.0"
"react": "18.x.x"
},

@@ -20,0 +22,0 @@ "devDependencies": {

@@ -14,3 +14,6 @@ import React from 'react'

if ((!forceCheck && field.isPristine) || !field.validationRules) {
return ''
return {
errorMessage: '',
hasError: false
}
}

@@ -23,7 +26,13 @@

if (field.isRequired && isEmpty(val)) {
return field.validationRules[0].errorMessage
return {
errorMessage: field.validationRules[0]?.errorMessage,
hasError: true
}
}
if (!field.isRequired && !Boolean(val)) {
return ''
return {
errorMessage: '',
hasError: false
}
}

@@ -34,5 +43,8 @@

return firstError
? firstError.errorMessage
: ''
return {
errorMessage: firstError
? firstError.errorMessage
: '',
hasError: Boolean(firstError?.errorMessage)
}
}

@@ -46,2 +58,3 @@

parentKey,
hasError: prevState[fieldConfig.key].hasError,
isRequired: fieldConfig.isRequired || false,

@@ -63,2 +76,4 @@ validateOnBlur: fieldConfig.validateOnBlur || false,

const { errorMessage, hasError } = computeErrorMessage(changedField, value)
return {

@@ -68,18 +83,11 @@ ...prevState,

...changedField,
errorMessage: computeErrorMessage(changedField, value)
errorMessage,
hasError
}
}
}),
onBlur: () => fieldConfig.validateOnBlur && setState(prevState => ({
...prevState,
[fieldConfig.key]: {
...prevState[fieldConfig.key],
isPristine: false,
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
}
})),
validateOnSubmit: () => {
const errorMessage = computeErrorMessage(prevState[fieldConfig.key], undefined, true)
onBlur: () => {
if (fieldConfig.validateOnBlur) {
const { errorMessage, hasError } = computeErrorMessage(prevState[fieldConfig.key], undefined, true)
if (errorMessage) {
setState(prevState => ({

@@ -89,10 +97,25 @@ ...prevState,

...prevState[fieldConfig.key],
errorMessage
isPristine: false,
errorMessage,
hasError
}
}))
}
},
validateOnSubmit: () => {
const { errorMessage, hasError } = computeErrorMessage(prevState[fieldConfig.key], undefined, true)
return errorMessage
setState(prevState => ({
...prevState,
[fieldConfig.key]: {
...prevState[fieldConfig.key],
errorMessage,
hasError
}
}))
return {
errorMessage,
hasError
}
return ''
},

@@ -127,10 +150,15 @@ onChangeInitialValue: (value: T) => {

})),
validate: () => setState(prevState => ({
...prevState,
[fieldConfig.key]: {
...prevState[fieldConfig.key],
errorMessage: computeErrorMessage(prevState[fieldConfig.key], undefined, true)
}
}))
validate: () => {
const { hasError, errorMessage } = computeErrorMessage(prevState[fieldConfig.key], undefined, true)
setState(prevState => ({
...prevState,
[fieldConfig.key]: {
...prevState[fieldConfig.key],
errorMessage,
hasError
}
}))
}
} as ExtendedConfig<T>
}

@@ -9,5 +9,6 @@ import { VoidFunction } from 'lib/types'

export type GateFieldState<T> = {
value: T,
value: T | string,
isPristine: boolean,
errorMessage: string
errorMessage: string,
hasError: boolean
}

@@ -18,8 +19,8 @@

label?: string,
initialValue: T,
isRequired: boolean,
initialValue?: T,
isRequired?: boolean,
placeholder?: string,
validateOnBlur?: boolean,
validationRules?: Array<ValidationRule<T>>,
children: Array<FieldConfig<T>>,
children?: Array<FieldConfig<T>>,
liveParser?(value: T): T,

@@ -35,2 +36,7 @@ submitParser?(value: T): T

type ValidateOnSubmitProps = {
hasError: boolean,
errorMessage: string
}
export type GateField<T> = {

@@ -47,3 +53,4 @@ value: T | string,

parentKey: string,
validateOnSubmit(): string,
hasError: boolean,
validateOnSubmit(): ValidateOnSubmitProps,
onChangeValue(newValue: T): void,

@@ -50,0 +57,0 @@ submitParser?(value: T): T,

@@ -10,4 +10,4 @@ import { useState } from 'react'

initialValue,
validationRules,
isRequired,
validationRules = [],
isRequired = false,
placeholder,

@@ -20,5 +20,6 @@ validateOnBlur = false,

const [field, setField] = useState<GateFieldState<T>>({
value: localInitialValue,
value: localInitialValue || '',
isPristine: true,
errorMessage: ''
errorMessage: '',
hasError: false
})

@@ -28,3 +29,6 @@

if ((!forceCheck && field.isPristine) || !validationRules) {
return ''
return {
errorMessage: '',
hasError: false
}
}

@@ -37,7 +41,13 @@

if (isRequired && isEmpty(val)) {
return validationRules[0].errorMessage
return {
errorMessage: validationRules[0]?.errorMessage,
hasError: true
}
}
if (!isRequired && !Boolean(val)) {
return ''
return {
errorMessage: '',
hasError: false
}
}

@@ -48,5 +58,8 @@

return firstError
? firstError.errorMessage
: ''
return {
errorMessage: firstError
? firstError.errorMessage
: '',
hasError: Boolean(firstError?.errorMessage)
}
}

@@ -61,20 +74,33 @@

parentKey: '',
hasError: field.hasError,
value: field.value,
hasChange: field.value !== localInitialValue,
errorMessage: field.errorMessage,
onBlur: () => validateOnBlur && setField(prevState => ({
...prevState,
isPristine: false,
errorMessage: computeErrorMessage(undefined, true)
})),
onChangeValue: (newValue: T) => setField(prevState => ({
...prevState,
value: liveParser
? liveParser(newValue)
: newValue,
isPristine: prevState.isPristine
? validateOnBlur
: prevState.isPristine,
errorMessage: computeErrorMessage(newValue)
})),
onBlur: () => {
if (validateOnBlur) {
const { errorMessage, hasError } = computeErrorMessage(undefined, true)
setField(prevState => ({
...prevState,
isPristine: false,
errorMessage,
hasError
}))
}
},
onChangeValue: (newValue: T) => {
const { hasError, errorMessage } = computeErrorMessage(newValue, !validateOnBlur)
setField(prevState => ({
...prevState,
value: liveParser
? liveParser(newValue)
: newValue,
isPristine: prevState.isPristine
? validateOnBlur
: prevState.isPristine,
errorMessage,
hasError
}))
},
onChangeInitialValue: (value: T) => {

@@ -91,14 +117,14 @@ if (field.value === localInitialValue) {

validateOnSubmit: () => {
const errorMessage = computeErrorMessage(undefined, true)
const { hasError, errorMessage } = computeErrorMessage(undefined, true)
if (errorMessage) {
setField(prevState => ({
...prevState,
errorMessage
}))
setField(prevState => ({
...prevState,
errorMessage,
hasError
}))
return errorMessage
return {
hasError,
errorMessage
}
return ''
},

@@ -113,9 +139,14 @@ setError: (errorMessage: string) => setField(prevState => ({

errorMessage: '',
value: initialValue
value: initialValue || ''
})),
validate: () => setField(prevState => ({
...prevState,
errorMessage: computeErrorMessage(undefined, true)
}))
validate: () => {
const { hasError, errorMessage } = computeErrorMessage(undefined, true)
setField(prevState => ({
...prevState,
errorMessage,
hasError
}))
}
}
}
import { useState } from 'react'
import { R } from 'lib/utils'
import { generateField } from './generateField'
import { useFormValidator } from './useValidator'
import { FieldConfig, GateField, InnerForm } from './types'

@@ -23,4 +22,2 @@

const [innerForm, setInnerForm] = useState<InnerForm<T>>({} as InnerForm<T>)
const { hasError } = useFormValidator(Object.values(formFields))
const form = {

@@ -72,2 +69,7 @@ ...injectedForm,

const hasError = Object
.values<GateField<any>>(form)
.filter(item => item.isRequired)
.some(item => Boolean(item.errorMessage))
const addFieldsRecurrence = (field: FieldConfig<any>, prevState: any, parentKey: string): any => {

@@ -93,6 +95,2 @@ if (field.children) {

.every(item => item.hasChange),
isEachFieldValid: !Object
.values<GateField<any>>(form)
.filter(item => item.isRequired)
.some(item => Boolean(item.errorMessage)),
formHasChanges: () => Object

@@ -140,6 +138,10 @@ .values<GateField<any>>(form)

.values<GateField<any>>(form)
.map(field => ({
key: field.key,
errorMessage: field.validateOnSubmit()
}))
.map(field => {
const { hasError, errorMessage } = field.validateOnSubmit()
return {
key: field.key,
errorMessage: errorMessage || (hasError ? 'This field is required' : '')
}
})
.filter(field => Boolean(field.errorMessage))

@@ -146,0 +148,0 @@ .reduce((acc, { key, errorMessage}) => ({

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc