UNPKG

jb-form

Version:

form web component with extended feature like validation and dirty check

2 lines 1.1 kB
import e,{createContext as r,useCallback as t,useContext as n,useEffect as o,useImperativeHandle as i}from"react";import"jb-form";function u(e,r,n,i=!1){let a=t(r=>{e.current&&"function"==typeof n&&n(r)},[e,n]);o(()=>{let t=e.current;return t&&t.addEventListener(r,a,{passive:i,capture:!1}),function(){t&&t.removeEventListener(r,a,{passive:i,capture:!1})}},[e,r,n,i])}let a=r(null),m=a.Provider,c=()=>n(a),l=e.forwardRef((r,t)=>{var n;let{onSubmit:a,name:c,onValidityChange:l,onDirtyChange:d,children:f,...s}=r,v=e.useRef(null);return i(t,()=>v.current??void 0,[v]),u(v,"load",(n={onSubmit:a,onValidityChange:l,onDirtyChange:d}).onLoad,!0),u(v,"init",n.onInit,!0),u(v,"validity-change",n.onValidityChange),u(v,"dirty-change",n.onDirtyChange),u(v,"submit",n.onSubmit),o(()=>{v.current&&(c?v.current.setAttribute("name",c):v.current.removeAttribute("name"))},[v.current,c]),e.createElement("form",{is:"jb-form",ref:v,...s},e.createElement(m,{value:v.current??null},f))});l.displayName="JBForm";export{l as JBForm,a as JBFormContext,m as JBFormProvider,c as useJBForm}; //# sourceMappingURL=JBForm.js.map