UNPKG

@bolttech/form-engine

Version:

A form engine based on form events for react projects

3 lines (2 loc) 1.76 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./asFormField-3108e669.js"),r=require("react");require("./types.js"),require("react/jsx-runtime"),require("credit-card-type");exports.Form=e.SchemaGuard,exports.FormProvider=e.FormProvider,exports.asFormField=e.asFormField,exports.useForm=e.useForm,exports.useFormGroup=({group:s,onData:t,onClick:o,onSubmit:a,ids:c=[]})=>{const[n,i]=r.useState(s?e.getGroupFormsIds(s):c),u=r.useCallback((()=>{const r=n.reduce(((r,s)=>Object.assign(Object.assign({},r),{[s]:e.getFormInstance(s).formData})),{});t&&t(r)}),[t]);function m(r){return n.reduce(((s,t)=>(null==r?void 0:r.aggregate)?Object.keys(s).reduce(((o,a)=>Object.assign(Object.assign({},o),{[a]:Object.assign(Object.assign({},s[a]),e.getFormInstance(t,r).formData[a])})),{}):Object.assign(Object.assign({},s),{[t]:e.getFormInstance(t,r).formData})),{formatted:{},erroredFields:{},fields:{},form:{},predictableErroredFields:{},filteredFields:{}})}r.useEffect((()=>{!n.length&&s&&i(e.getGroupFormsIds(s))}),[n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe("ON_FIELD_CHANGE",u)))}),[t,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe("ON_SCOPE_CHANGE",u)))}),[t,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe(e.ALL_NAMESPACE_EVENTS(e.CoreEvents.ON_FIELD_REHYDRATE),u)))}),[t,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe(e.ALL_NAMESPACE_EVENTS(e.CoreEvents.ON_FIELD_CLICK),(()=>o&&o(m({aggregate:!0}))))))}),[o,n]),r.useEffect((()=>{n.map((r=>e.getFormInstance(r).subscribe(e.CoreEvents.ON_FORM_SUBMIT,(()=>a&&a(m({}))))))}),[a,n]);return{submitForm:()=>n.map((r=>e.getFormInstance(r).publish(e.CoreEvents.ON_FORM_SUBMIT))),formData:m}}; //# sourceMappingURL=react.js.map