@bgscore/react-form 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var z=require('react'),jsxRuntime=require('react/jsx-runtime'),reactCore=require('@bgscore/react-core'),reactHookForm=require('react-hook-form');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var z__default=/*#__PURE__*/_interopDefault(z);var k=z.createContext(void 0);function y(){let e=z.useContext(k);return e||{}}function P({children:e,controller:r,onSubmit:t}){let i=z.useRef([]),m=z.useCallback(o=>{let c=i.current.findIndex(u=>u.id===o.id);if(c>-1){let u=[...i.current];u[c]=o,i.current=[...u];}else i.current.push(o);},[i]),n=z.useCallback(o=>{i.current=i.current.filter(c=>c.id!==o);},[]),d=async(o,c)=>{r.setIsSubmit(true);let u=c?await r.formControl.trigger():true,a=r.getData();u&&t&&t({...a,...o},{...r});},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:d};return jsxRuntime.jsx(k.Provider,{value:l,children:e})}var S=new WeakMap;function E(e){return S.has(e)||S.set(e,reactCore.createStore({})),S.get(e)}function h(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let r={};for(let[t,i]of Object.entries(e))if(t.includes(".")){let m=t.split("."),n=r;for(let d=0;d<m.length;d++){let l=m[d];d===m.length-1?n[l]=h(i):((!n[l]||typeof n[l]!="object")&&(n[l]={}),n=n[l]);}}else r[t]=h(i);return r}var M=(e,r)=>{e||(e={}),e=h(e);let t=z.useRef(null),[i,m]=z.useState(false),n=reactHookForm.useForm({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),d=E(n),l=z.useMemo(()=>reactCore.generateUUID(),[]),o=a=>a?reactCore.getFieldValue(reactCore.mappingUndefinedtoNull(n.getValues()),a):reactCore.mappingUndefinedtoNull(n.getValues()),u={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&reactCore.isArray(a,0)&&a.forEach(p=>n.resetField(p)):n.reset();},updateData:a=>{let p=o();n.reset(h({...p,...a}));},getData:o,formControl:n,useFieldArray:a=>reactHookForm.useFieldArray({control:n.control,name:a}),useWatch:a=>reactHookForm.useWatch({control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>d.useStore(p=>reactCore.getFieldValue(p,a)),setSelected:d.setState};return [u,u]};var Ie=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:m,children:n,...d})=>{i&&(i=h(i));let l=m??M(),[o]=Array.isArray(l)?l:[l],c=z.useRef(void 0),u=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(true);let p=await o.formControl.trigger(),b=o.getData();p?e&&e({...b},{...o}):t&&t(o.formControl.formState.errors);};return z.useEffect(()=>{i&&reactCore.diffJson(c.current||{},i)&&(o.formControl.reset(i),c.current=i);},[i,o.formControl.reset]),z.useEffect(()=>{if(!r)return;let a=o.formControl.watch(r);return ()=>a.unsubscribe()},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(P,{controller:{...o,disabled:d?.disabled,readOnly:d?.readOnly},onSubmit:e,children:jsxRuntime.jsx("form",{...d,id:o.formId,ref:o.ref,onSubmit:u,children:n})})})},K=Ie;var D=z.createContext(void 0);function $(){let e=z.useContext(D);return e||{}}function w({children:e,...r}){return jsxRuntime.jsx(D.Provider,{value:r,children:e})}var H=e=>{let r=y(),t=reactHookForm.useFieldArray({control:r.control,name:e}),m={formArrayId:z.useMemo(()=>reactCore.generateUUID(),[]),...t,...r};return [m,m]};var j=({name:e,defaultData:r,controller:t,children:i})=>{let m=t??H(e),[n]=Array.isArray(m)?m:[m];return z.useEffect(()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r);},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:n.fields.map((d,l)=>{let o=`${e}.${l}.`,c={...n,index:l,fieldId:d.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:u=>n.watch(u?`${o}${u}`:o.slice(0,-1)),setValueItem:(u,a)=>n.setValue(`${o}${u}`,a),useSelectedItem:u=>n.useSelected(`${o}${u}`)};return jsxRuntime.jsx(z__default.default.Fragment,{children:jsxRuntime.jsx(w,{...c,children:reactCore.renderChildren(i,c)})},d.id)})})};j.displayName="BgsFormArray";var We=j;z__default.default.memo(({children:e,props:r})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:reactCore.renderChildren(e,r)}));var X=z.createContext(void 0);function B(){let e=z.useContext(X);return e||{}}function G({children:e,...r}){return jsxRuntime.jsx(X.Provider,{value:r,children:e})}var Q=({children:e,...r})=>{let t=y(),i=z.useMemo(()=>reactCore.generateUUID(),[]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(G,{...t,...r,formGroupId:i,children:e})})};Q.displayName="BgsFormGroup";var qe=Q;var Y=z.createContext(void 0);function V(){let e=z.useContext(Y);return e||{}}function ee({children:e,...r}){return jsxRuntime.jsx(Y.Provider,{value:r,children:e})}var Ze=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;function O({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),m=[];return e&&(typeof e=="string"?re(e,true,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:d}=m.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],c="";["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,c=e[n].label),o!=null&&re(n,o,r,t,i,d,c).forEach(u=>m.push(u));}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...d,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}});}})),Object.assign({},...m)}var re=(e,r,t,i,m,n,d)=>{let l=[],{validationMessage:o}=V(),{required:c,minLength:u,maxLength:a,min:p,max:b,email:U,match:x,diff:g,pattern:f}=o||{},F={required:s=>{if(!r)return true;let A=c?c(t):`${t} is required`;return typeof s=="string"&&!s.trim()||s==null?A:true},minLength:{value:r,message:u?u(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:a?a(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:p?p(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:b?b(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:true,email:(s="")=>!r||!s?true:Ze.test(s)||(U?U(t):`${t} must be type email`),match:(s="")=>s?s===(m&&m(r))||(x?x(t,d||reactCore.labelFormatter.changeAll(r)):`${t} must be same with ${d||reactCore.labelFormatter.changeAll(r)}`):true,diff:(s="")=>s?s!==(m&&m(r))||(g?g(t,d||reactCore.labelFormatter.changeAll(r)):`${t} must be different with ${d||reactCore.labelFormatter.changeAll(r)}`):true,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(f?.alphabet?f?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(f?.alphanumber?f?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(f?.number?f?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(f?.lowercase?f?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(f?.url?f?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(f?.uppercase?f?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(f?.mixedcase?f?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(f?.specialcharacters?f?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(F){let{validate:s}=l.find(A=>A.validate)||{};typeof F=="function"?l.push({validate:{...s,...n,[e]:F}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:F[r]}}):l.push({[e]:F});}return l};var ct=e=>{let r=z.useMemo(()=>reactCore.generateUUID(),[]),{registerItem:t,unregisterItem:i,control:m,disabled:n,readOnly:d,formId:l,setSelected:o,useSelected:c}=y(),{name:u,formId:a,...p}=B(),{formId:b,name:U}=$(),x=e.label,g=e.dataField;z.useEffect(()=>(t({id:r,...e}),()=>{i(r);}),[r,e]),!e.label&&!e.noLabel&&(x=reactCore.labelFormatter.changeAll(g)),e.disabledHierarchy||(U&&l===b&&(g=`${U}${g}`),u&&l===a&&(g=`${u}${g}`));let f=false;typeof e.disabled=="boolean"?f=e.disabled:typeof p.disabled=="boolean"?f=p.disabled:f=!!n;let T=false;typeof e.readOnly=="boolean"?T=e.readOnly:typeof p.readOnly=="boolean"?T=p.readOnly:T=!!d;let F=false;typeof e.hidden=="boolean"&&(F=e.hidden);let s=e.validationRules;typeof e.required=="boolean"&&(typeof e.validationRules>"u"?s={required:e.required}:typeof e.validationRules=="string"&&e.validationRules==="email"?s={email:true,required:e.required}:typeof e.validationRules=="object"&&(s={...e.validationRules,required:e.required}));let A=f||T||F?{required:false}:O({...e,validationRules:s,label:x}),I=reactHookForm.useController({name:g,control:m,disabled:f,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:A}),oe=I.fieldState.invalid,ne=I.fieldState.error?.message,se=reactHookForm.useWatch({name:g,control:m,defaultValue:e.defaultValue}),ie=z.useMemo(()=>reactCore.debounce(le=>o(de=>({...de,[g]:le||null}))),[o]),ae=c(g),me=s?.required;return {...e,setSelectedField:ie,label:x,dataField:g,controller:I,invalid:oe,messageError:ne,selectedField:ae,value:se,required:me}};var Ve=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Ve||{});var yt=K;exports.BgsFormArray=We;exports.BgsFormGroup=qe;exports.BgsReactFormProvider=ee;exports.PatternTypeEnum=Ve;exports.default=yt;exports.useBgsController=ct;exports.useBgsForm=y;exports.useBgsFormArray=$;exports.useBgsFormArrayInit=H;exports.useBgsFormGroup=B;exports.useBgsFormInit=M;
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});var j=require('react'),jsxRuntime=require('react/jsx-runtime'),reactCore=require('@bgscore/react-core'),reactHookForm=require('react-hook-form');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var j__default=/*#__PURE__*/_interopDefault(j);var E=j.createContext(void 0);function y(){let e=j.useContext(E);return e||{}}function v({children:e,controller:r,onSubmit:t}){let i=j.useRef([]),m=j.useCallback(o=>{let c=i.current.findIndex(d=>d.id===o.id);if(c>-1){let d=[...i.current];d[c]=o,i.current=[...d];}else i.current.push(o);},[i]),n=j.useCallback(o=>{i.current=i.current.filter(c=>c.id!==o);},[]),u=async(o,c)=>{r.setIsSubmit(true);let d=c?await r.formControl.trigger():true,a=r.getData();d&&t&&t({...a,...o},{...r});},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:u};return jsxRuntime.jsx(E.Provider,{value:l,children:e})}var $=new WeakMap;function N(e){return $.has(e)||$.set(e,reactCore.createStore({})),$.get(e)}function A(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let r={};for(let[t,i]of Object.entries(e))if(t.includes(".")){let m=t.split("."),n=r;for(let u=0;u<m.length;u++){let l=m[u];u===m.length-1?n[l]=A(i):((!n[l]||typeof n[l]!="object")&&(n[l]={}),n=n[l]);}}else r[t]=A(i);return r}var K=(e,r)=>{e||(e={}),e=A(e);let t=j.useRef(null),[i,m]=j.useState(false),n=reactHookForm.useForm({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),u=N(n),l=j.useMemo(()=>reactCore.generateUUID(),[]),o=a=>a?reactCore.getFieldValue(reactCore.mappingUndefinedtoNull(n.getValues()),a):reactCore.mappingUndefinedtoNull(n.getValues()),d={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&reactCore.isArray(a,0)&&a.forEach(p=>n.resetField(p)):n.reset();},updateData:a=>{let p=o();n.reset(A({...p,...a}));},getData:o,formControl:n,useFieldArray:a=>reactHookForm.useFieldArray({control:n.control,name:a}),useWatch:a=>reactHookForm.useWatch({control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>u.useStore(p=>reactCore.getFieldValue(p,a)),setSelected:u.setState};return [d,d]};var Ie=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:m,children:n,...u})=>{i&&(i=A(i));let l=m??K(),[o]=Array.isArray(l)?l:[l],c=j.useRef(void 0),d=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(true);let p=await o.formControl.trigger(),F=o.getData();p?e&&e({...F},{...o}):t&&t(o.formControl.formState.errors);};return j.useEffect(()=>{i&&reactCore.diffJson(c.current||{},i)&&(o.formControl.reset(i),c.current=i);},[i,o.formControl.reset]),j.useEffect(()=>{if(!r)return;let a=o.formControl.watch(r);return ()=>a.unsubscribe()},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(v,{controller:{...o,disabled:u?.disabled,readOnly:u?.readOnly},onSubmit:e,children:jsxRuntime.jsx("form",{...u,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},H=Ie;var z=j.createContext(void 0);function B(){let e=j.useContext(z);return e||{}}function G({children:e,...r}){return jsxRuntime.jsx(z.Provider,{value:r,children:e})}var Z=e=>{let r=y(),t=reactHookForm.useFieldArray({control:r.control,name:e}),m={formArrayId:j.useMemo(()=>reactCore.generateUUID(),[]),...t,...r};return [m,m]};var X=({name:e,defaultData:r,controller:t,children:i})=>{let m=t??Z(e),[n]=Array.isArray(m)?m:[m];return j.useEffect(()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r);},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:n.fields.map((u,l)=>{let o=`${e}.${l}.`,c={...n,index:l,fieldId:u.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:d=>n.watch(d?`${o}${d}`:o.slice(0,-1)),setValueItem:(d,a)=>n.setValue(`${o}${d}`,a),useSelectedItem:d=>n.useSelected(`${o}${d}`)};return jsxRuntime.jsx(j__default.default.Fragment,{children:jsxRuntime.jsx(G,{...c,children:reactCore.renderChildren(i,c)})},u.id)})})};X.displayName="BgsFormArray";var We=X;j__default.default.memo(({children:e,props:r})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:reactCore.renderChildren(e,r)}));var Q=j.createContext(void 0);function O(){let e=j.useContext(Q);return e||{}}function W({children:e,...r}){return jsxRuntime.jsx(Q.Provider,{value:r,children:e})}var V=({children:e,...r})=>{let t=y(),i=j.useMemo(()=>reactCore.generateUUID(),[]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(W,{...t,...r,formGroupId:i,children:e})})};V.displayName="BgsFormGroup";var qe=V;var ee=j.createContext(void 0);function re(){let e=j.useContext(ee);return e||{}}function te({children:e,...r}){return jsxRuntime.jsx(ee.Provider,{value:r,children:e})}var Ze=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;function k({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),m=[];return e&&(typeof e=="string"?oe(e,true,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:u}=m.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],c="";["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,c=e[n].label),o!=null&&oe(n,o,r,t,i,u,c).forEach(d=>m.push(d));}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...u,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}});}})),Object.assign({},...m)}var oe=(e,r,t,i,m,n,u)=>{let l=[],{validationMessage:o}=re(),{required:c,minLength:d,maxLength:a,min:p,max:F,email:T,match:g,diff:b,pattern:f}=o||{},h={required:s=>{if(!r)return true;let U=c?c(t):`${t} is required`;return typeof s=="string"&&!s.trim()||s==null?U:true},minLength:{value:r,message:d?d(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:a?a(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:p?p(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:F?F(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:true,email:(s="")=>!r||!s?true:Ze.test(s)||(T?T(t):`${t} must be type email`),match:(s="")=>s?s===(m&&m(r))||(g?g(t,u||reactCore.labelFormatter.changeAll(r)):`${t} must be same with ${u||reactCore.labelFormatter.changeAll(r)}`):true,diff:(s="")=>s?s!==(m&&m(r))||(b?b(t,u||reactCore.labelFormatter.changeAll(r)):`${t} must be different with ${u||reactCore.labelFormatter.changeAll(r)}`):true,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(f?.alphabet?f?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(f?.alphanumber?f?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(f?.number?f?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(f?.lowercase?f?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(f?.url?f?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(f?.uppercase?f?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(f?.mixedcase?f?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(f?.specialcharacters?f?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(h){let{validate:s}=l.find(U=>U.validate)||{};typeof h=="function"?l.push({validate:{...s,...n,[e]:h}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:h[r]}}):l.push({[e]:h});}return l};var ct=e=>{let r=j.useMemo(()=>reactCore.generateUUID(),[]),{registerItem:t,unregisterItem:i,control:m,disabled:n,readOnly:u,formId:l,setSelected:o,useSelected:c}=y(),{name:d,formId:a,...p}=O(),{name:F,formId:T}=B(),g=j.useMemo(()=>{let x=e.dataField;return e.disabledHierarchy||(F&&l===T&&(x=`${F}${x}`),d&&l===a&&(x=`${d}${x}`)),x},[F,l,T,e.dataField,d,a,e.disabledHierarchy]),b=j.useMemo(()=>{if(e.label)return e.label;if(!e.noLabel)return reactCore.labelFormatter.changeAll(g)},[e.label,e.noLabel,g]);j.useEffect(()=>(t({id:r,...e,dataField:g,label:b}),()=>{i(r);}),[r,e,g,b]);let f=false;typeof e.disabled=="boolean"?f=e.disabled:typeof p.disabled=="boolean"?f=p.disabled:f=!!n;let R=false;typeof e.readOnly=="boolean"?R=e.readOnly:typeof p.readOnly=="boolean"?R=p.readOnly:R=!!u;let h=false;typeof e.hidden=="boolean"&&(h=e.hidden);let s=e.validationRules;typeof e.required=="boolean"&&(typeof e.validationRules>"u"?s={required:e.required}:typeof e.validationRules=="string"&&e.validationRules==="email"?s={email:true,required:e.required}:typeof e.validationRules=="object"&&(s={...e.validationRules,required:e.required}));let U=f||R||h?{required:false}:k({...e,validationRules:s,label:b}),S=reactHookForm.useController({name:g,control:m,disabled:f,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:U}),ne=S.fieldState.invalid,se=S.fieldState.error?.message,ie=reactHookForm.useWatch({name:g,control:m,defaultValue:e.defaultValue}),ae=j.useMemo(()=>reactCore.debounce(x=>o(de=>({...de,[g]:x||null}))),[o,g]),me=c(g),le=s?.required;return {...e,setSelectedField:ae,label:b,dataField:g,controller:S,invalid:ne,messageError:se,selectedField:me,value:ie,required:le}};var Ve=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Ve||{});var yt=H;exports.BgsFormArray=We;exports.BgsFormGroup=qe;exports.BgsReactFormProvider=te;exports.PatternTypeEnum=Ve;exports.default=yt;exports.useBgsController=ct;exports.useBgsForm=y;exports.useBgsFormArray=B;exports.useBgsFormArrayInit=Z;exports.useBgsFormGroup=O;exports.useBgsFormInit=K;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import z,{createContext,useContext,useRef,useState,useMemo,useEffect,useCallback}from'react';import {jsx,Fragment}from'react/jsx-runtime';import {renderChildren,generateUUID,getFieldValue,mappingUndefinedtoNull,diffJson,labelFormatter,debounce,isArray,createStore}from'@bgscore/react-core';import {useForm,useWatch,useFieldArray,useController}from'react-hook-form';var k=createContext(void 0);function y(){let e=useContext(k);return e||{}}function P({children:e,controller:r,onSubmit:t}){let i=useRef([]),m=useCallback(o=>{let c=i.current.findIndex(u=>u.id===o.id);if(c>-1){let u=[...i.current];u[c]=o,i.current=[...u];}else i.current.push(o);},[i]),n=useCallback(o=>{i.current=i.current.filter(c=>c.id!==o);},[]),d=async(o,c)=>{r.setIsSubmit(true);let u=c?await r.formControl.trigger():true,a=r.getData();u&&t&&t({...a,...o},{...r});},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:d};return jsx(k.Provider,{value:l,children:e})}var S=new WeakMap;function E(e){return S.has(e)||S.set(e,createStore({})),S.get(e)}function h(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let r={};for(let[t,i]of Object.entries(e))if(t.includes(".")){let m=t.split("."),n=r;for(let d=0;d<m.length;d++){let l=m[d];d===m.length-1?n[l]=h(i):((!n[l]||typeof n[l]!="object")&&(n[l]={}),n=n[l]);}}else r[t]=h(i);return r}var M=(e,r)=>{e||(e={}),e=h(e);let t=useRef(null),[i,m]=useState(false),n=useForm({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),d=E(n),l=useMemo(()=>generateUUID(),[]),o=a=>a?getFieldValue(mappingUndefinedtoNull(n.getValues()),a):mappingUndefinedtoNull(n.getValues()),u={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&isArray(a,0)&&a.forEach(p=>n.resetField(p)):n.reset();},updateData:a=>{let p=o();n.reset(h({...p,...a}));},getData:o,formControl:n,useFieldArray:a=>useFieldArray({control:n.control,name:a}),useWatch:a=>useWatch({control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>d.useStore(p=>getFieldValue(p,a)),setSelected:d.setState};return [u,u]};var Ie=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:m,children:n,...d})=>{i&&(i=h(i));let l=m??M(),[o]=Array.isArray(l)?l:[l],c=useRef(void 0),u=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(true);let p=await o.formControl.trigger(),b=o.getData();p?e&&e({...b},{...o}):t&&t(o.formControl.formState.errors);};return useEffect(()=>{i&&diffJson(c.current||{},i)&&(o.formControl.reset(i),c.current=i);},[i,o.formControl.reset]),useEffect(()=>{if(!r)return;let a=o.formControl.watch(r);return ()=>a.unsubscribe()},[]),jsx(Fragment,{children:jsx(P,{controller:{...o,disabled:d?.disabled,readOnly:d?.readOnly},onSubmit:e,children:jsx("form",{...d,id:o.formId,ref:o.ref,onSubmit:u,children:n})})})},K=Ie;var D=createContext(void 0);function $(){let e=useContext(D);return e||{}}function w({children:e,...r}){return jsx(D.Provider,{value:r,children:e})}var H=e=>{let r=y(),t=useFieldArray({control:r.control,name:e}),m={formArrayId:useMemo(()=>generateUUID(),[]),...t,...r};return [m,m]};var j=({name:e,defaultData:r,controller:t,children:i})=>{let m=t??H(e),[n]=Array.isArray(m)?m:[m];return useEffect(()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r);},[]),jsx(Fragment,{children:n.fields.map((d,l)=>{let o=`${e}.${l}.`,c={...n,index:l,fieldId:d.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:u=>n.watch(u?`${o}${u}`:o.slice(0,-1)),setValueItem:(u,a)=>n.setValue(`${o}${u}`,a),useSelectedItem:u=>n.useSelected(`${o}${u}`)};return jsx(z.Fragment,{children:jsx(w,{...c,children:renderChildren(i,c)})},d.id)})})};j.displayName="BgsFormArray";var We=j;z.memo(({children:e,props:r})=>jsx(Fragment,{children:renderChildren(e,r)}));var X=createContext(void 0);function B(){let e=useContext(X);return e||{}}function G({children:e,...r}){return jsx(X.Provider,{value:r,children:e})}var Q=({children:e,...r})=>{let t=y(),i=useMemo(()=>generateUUID(),[]);return jsx(Fragment,{children:jsx(G,{...t,...r,formGroupId:i,children:e})})};Q.displayName="BgsFormGroup";var qe=Q;var Y=createContext(void 0);function V(){let e=useContext(Y);return e||{}}function ee({children:e,...r}){return jsx(Y.Provider,{value:r,children:e})}var Ze=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;function O({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),m=[];return e&&(typeof e=="string"?re(e,true,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:d}=m.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],c="";["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,c=e[n].label),o!=null&&re(n,o,r,t,i,d,c).forEach(u=>m.push(u));}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...d,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}});}})),Object.assign({},...m)}var re=(e,r,t,i,m,n,d)=>{let l=[],{validationMessage:o}=V(),{required:c,minLength:u,maxLength:a,min:p,max:b,email:U,match:x,diff:g,pattern:f}=o||{},F={required:s=>{if(!r)return true;let A=c?c(t):`${t} is required`;return typeof s=="string"&&!s.trim()||s==null?A:true},minLength:{value:r,message:u?u(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:a?a(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:p?p(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:b?b(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:true,email:(s="")=>!r||!s?true:Ze.test(s)||(U?U(t):`${t} must be type email`),match:(s="")=>s?s===(m&&m(r))||(x?x(t,d||labelFormatter.changeAll(r)):`${t} must be same with ${d||labelFormatter.changeAll(r)}`):true,diff:(s="")=>s?s!==(m&&m(r))||(g?g(t,d||labelFormatter.changeAll(r)):`${t} must be different with ${d||labelFormatter.changeAll(r)}`):true,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(f?.alphabet?f?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(f?.alphanumber?f?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(f?.number?f?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(f?.lowercase?f?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(f?.url?f?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(f?.uppercase?f?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(f?.mixedcase?f?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(f?.specialcharacters?f?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(F){let{validate:s}=l.find(A=>A.validate)||{};typeof F=="function"?l.push({validate:{...s,...n,[e]:F}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:F[r]}}):l.push({[e]:F});}return l};var ct=e=>{let r=useMemo(()=>generateUUID(),[]),{registerItem:t,unregisterItem:i,control:m,disabled:n,readOnly:d,formId:l,setSelected:o,useSelected:c}=y(),{name:u,formId:a,...p}=B(),{formId:b,name:U}=$(),x=e.label,g=e.dataField;useEffect(()=>(t({id:r,...e}),()=>{i(r);}),[r,e]),!e.label&&!e.noLabel&&(x=labelFormatter.changeAll(g)),e.disabledHierarchy||(U&&l===b&&(g=`${U}${g}`),u&&l===a&&(g=`${u}${g}`));let f=false;typeof e.disabled=="boolean"?f=e.disabled:typeof p.disabled=="boolean"?f=p.disabled:f=!!n;let T=false;typeof e.readOnly=="boolean"?T=e.readOnly:typeof p.readOnly=="boolean"?T=p.readOnly:T=!!d;let F=false;typeof e.hidden=="boolean"&&(F=e.hidden);let s=e.validationRules;typeof e.required=="boolean"&&(typeof e.validationRules>"u"?s={required:e.required}:typeof e.validationRules=="string"&&e.validationRules==="email"?s={email:true,required:e.required}:typeof e.validationRules=="object"&&(s={...e.validationRules,required:e.required}));let A=f||T||F?{required:false}:O({...e,validationRules:s,label:x}),I=useController({name:g,control:m,disabled:f,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:A}),oe=I.fieldState.invalid,ne=I.fieldState.error?.message,se=useWatch({name:g,control:m,defaultValue:e.defaultValue}),ie=useMemo(()=>debounce(le=>o(de=>({...de,[g]:le||null}))),[o]),ae=c(g),me=s?.required;return {...e,setSelectedField:ie,label:x,dataField:g,controller:I,invalid:oe,messageError:ne,selectedField:ae,value:se,required:me}};var Ve=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Ve||{});var yt=K;export{We as BgsFormArray,qe as BgsFormGroup,ee as BgsReactFormProvider,Ve as PatternTypeEnum,yt as default,ct as useBgsController,y as useBgsForm,$ as useBgsFormArray,H as useBgsFormArrayInit,B as useBgsFormGroup,M as useBgsFormInit};
1
+ import j,{createContext,useContext,useRef,useState,useMemo,useEffect,useCallback}from'react';import {jsx,Fragment}from'react/jsx-runtime';import {renderChildren,generateUUID,getFieldValue,mappingUndefinedtoNull,diffJson,labelFormatter,debounce,isArray,createStore}from'@bgscore/react-core';import {useForm,useWatch,useFieldArray,useController}from'react-hook-form';var E=createContext(void 0);function y(){let e=useContext(E);return e||{}}function v({children:e,controller:r,onSubmit:t}){let i=useRef([]),m=useCallback(o=>{let c=i.current.findIndex(d=>d.id===o.id);if(c>-1){let d=[...i.current];d[c]=o,i.current=[...d];}else i.current.push(o);},[i]),n=useCallback(o=>{i.current=i.current.filter(c=>c.id!==o);},[]),u=async(o,c)=>{r.setIsSubmit(true);let d=c?await r.formControl.trigger():true,a=r.getData();d&&t&&t({...a,...o},{...r});},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:u};return jsx(E.Provider,{value:l,children:e})}var $=new WeakMap;function N(e){return $.has(e)||$.set(e,createStore({})),$.get(e)}function A(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let r={};for(let[t,i]of Object.entries(e))if(t.includes(".")){let m=t.split("."),n=r;for(let u=0;u<m.length;u++){let l=m[u];u===m.length-1?n[l]=A(i):((!n[l]||typeof n[l]!="object")&&(n[l]={}),n=n[l]);}}else r[t]=A(i);return r}var K=(e,r)=>{e||(e={}),e=A(e);let t=useRef(null),[i,m]=useState(false),n=useForm({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),u=N(n),l=useMemo(()=>generateUUID(),[]),o=a=>a?getFieldValue(mappingUndefinedtoNull(n.getValues()),a):mappingUndefinedtoNull(n.getValues()),d={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&isArray(a,0)&&a.forEach(p=>n.resetField(p)):n.reset();},updateData:a=>{let p=o();n.reset(A({...p,...a}));},getData:o,formControl:n,useFieldArray:a=>useFieldArray({control:n.control,name:a}),useWatch:a=>useWatch({control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>u.useStore(p=>getFieldValue(p,a)),setSelected:u.setState};return [d,d]};var Ie=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:m,children:n,...u})=>{i&&(i=A(i));let l=m??K(),[o]=Array.isArray(l)?l:[l],c=useRef(void 0),d=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(true);let p=await o.formControl.trigger(),F=o.getData();p?e&&e({...F},{...o}):t&&t(o.formControl.formState.errors);};return useEffect(()=>{i&&diffJson(c.current||{},i)&&(o.formControl.reset(i),c.current=i);},[i,o.formControl.reset]),useEffect(()=>{if(!r)return;let a=o.formControl.watch(r);return ()=>a.unsubscribe()},[]),jsx(Fragment,{children:jsx(v,{controller:{...o,disabled:u?.disabled,readOnly:u?.readOnly},onSubmit:e,children:jsx("form",{...u,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},H=Ie;var z=createContext(void 0);function B(){let e=useContext(z);return e||{}}function G({children:e,...r}){return jsx(z.Provider,{value:r,children:e})}var Z=e=>{let r=y(),t=useFieldArray({control:r.control,name:e}),m={formArrayId:useMemo(()=>generateUUID(),[]),...t,...r};return [m,m]};var X=({name:e,defaultData:r,controller:t,children:i})=>{let m=t??Z(e),[n]=Array.isArray(m)?m:[m];return useEffect(()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r);},[]),jsx(Fragment,{children:n.fields.map((u,l)=>{let o=`${e}.${l}.`,c={...n,index:l,fieldId:u.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:d=>n.watch(d?`${o}${d}`:o.slice(0,-1)),setValueItem:(d,a)=>n.setValue(`${o}${d}`,a),useSelectedItem:d=>n.useSelected(`${o}${d}`)};return jsx(j.Fragment,{children:jsx(G,{...c,children:renderChildren(i,c)})},u.id)})})};X.displayName="BgsFormArray";var We=X;j.memo(({children:e,props:r})=>jsx(Fragment,{children:renderChildren(e,r)}));var Q=createContext(void 0);function O(){let e=useContext(Q);return e||{}}function W({children:e,...r}){return jsx(Q.Provider,{value:r,children:e})}var V=({children:e,...r})=>{let t=y(),i=useMemo(()=>generateUUID(),[]);return jsx(Fragment,{children:jsx(W,{...t,...r,formGroupId:i,children:e})})};V.displayName="BgsFormGroup";var qe=V;var ee=createContext(void 0);function re(){let e=useContext(ee);return e||{}}function te({children:e,...r}){return jsx(ee.Provider,{value:r,children:e})}var Ze=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;function k({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),m=[];return e&&(typeof e=="string"?oe(e,true,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:u}=m.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],c="";["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,c=e[n].label),o!=null&&oe(n,o,r,t,i,u,c).forEach(d=>m.push(d));}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...u,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}});}})),Object.assign({},...m)}var oe=(e,r,t,i,m,n,u)=>{let l=[],{validationMessage:o}=re(),{required:c,minLength:d,maxLength:a,min:p,max:F,email:T,match:g,diff:b,pattern:f}=o||{},h={required:s=>{if(!r)return true;let U=c?c(t):`${t} is required`;return typeof s=="string"&&!s.trim()||s==null?U:true},minLength:{value:r,message:d?d(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:a?a(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:p?p(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:F?F(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:true,email:(s="")=>!r||!s?true:Ze.test(s)||(T?T(t):`${t} must be type email`),match:(s="")=>s?s===(m&&m(r))||(g?g(t,u||labelFormatter.changeAll(r)):`${t} must be same with ${u||labelFormatter.changeAll(r)}`):true,diff:(s="")=>s?s!==(m&&m(r))||(b?b(t,u||labelFormatter.changeAll(r)):`${t} must be different with ${u||labelFormatter.changeAll(r)}`):true,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(f?.alphabet?f?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(f?.alphanumber?f?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(f?.number?f?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(f?.lowercase?f?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(f?.url?f?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(f?.uppercase?f?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(f?.mixedcase?f?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(f?.specialcharacters?f?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(h){let{validate:s}=l.find(U=>U.validate)||{};typeof h=="function"?l.push({validate:{...s,...n,[e]:h}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:h[r]}}):l.push({[e]:h});}return l};var ct=e=>{let r=useMemo(()=>generateUUID(),[]),{registerItem:t,unregisterItem:i,control:m,disabled:n,readOnly:u,formId:l,setSelected:o,useSelected:c}=y(),{name:d,formId:a,...p}=O(),{name:F,formId:T}=B(),g=useMemo(()=>{let x=e.dataField;return e.disabledHierarchy||(F&&l===T&&(x=`${F}${x}`),d&&l===a&&(x=`${d}${x}`)),x},[F,l,T,e.dataField,d,a,e.disabledHierarchy]),b=useMemo(()=>{if(e.label)return e.label;if(!e.noLabel)return labelFormatter.changeAll(g)},[e.label,e.noLabel,g]);useEffect(()=>(t({id:r,...e,dataField:g,label:b}),()=>{i(r);}),[r,e,g,b]);let f=false;typeof e.disabled=="boolean"?f=e.disabled:typeof p.disabled=="boolean"?f=p.disabled:f=!!n;let R=false;typeof e.readOnly=="boolean"?R=e.readOnly:typeof p.readOnly=="boolean"?R=p.readOnly:R=!!u;let h=false;typeof e.hidden=="boolean"&&(h=e.hidden);let s=e.validationRules;typeof e.required=="boolean"&&(typeof e.validationRules>"u"?s={required:e.required}:typeof e.validationRules=="string"&&e.validationRules==="email"?s={email:true,required:e.required}:typeof e.validationRules=="object"&&(s={...e.validationRules,required:e.required}));let U=f||R||h?{required:false}:k({...e,validationRules:s,label:b}),S=useController({name:g,control:m,disabled:f,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:U}),ne=S.fieldState.invalid,se=S.fieldState.error?.message,ie=useWatch({name:g,control:m,defaultValue:e.defaultValue}),ae=useMemo(()=>debounce(x=>o(de=>({...de,[g]:x||null}))),[o,g]),me=c(g),le=s?.required;return {...e,setSelectedField:ae,label:b,dataField:g,controller:S,invalid:ne,messageError:se,selectedField:me,value:ie,required:le}};var Ve=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Ve||{});var yt=H;export{We as BgsFormArray,qe as BgsFormGroup,te as BgsReactFormProvider,Ve as PatternTypeEnum,yt as default,ct as useBgsController,y as useBgsForm,B as useBgsFormArray,Z as useBgsFormArrayInit,O as useBgsFormGroup,K as useBgsFormInit};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-form",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "React form component library using context and react-hook-form with dynamic arrays, groups, and validations.",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",