@bgscore/react-form 1.0.45 → 1.0.46
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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var ce=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 ce__default=/*#__PURE__*/_interopDefault(ce);var J=ce.createContext(void 0);function C(){let e=ce.useContext(J);return e||{}}function M({children:e,controller:a,onSubmit:o,onFieldChange:n=()=>{}}){let u={...a,triggerSubmit:async(t,s)=>{a.setIsSubmit(true);let m=s?await a.formControl.trigger():true,l=a.getData();m&&o&&o({...l,...t},{...a});},onFieldChange:n};return jsxRuntime.jsx(J.Provider,{value:u,children:e})}var k=new WeakMap;function X(e){return k.has(e)||k.set(e,reactCore.createStore({})),k.get(e)}function B(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let a={};for(let[o,n]of Object.entries(e))if(o.includes(".")){let f=o.split("."),u=a;for(let t=0;t<f.length;t++){let s=f[t];t===f.length-1?u[s]=B(n):((!u[s]||typeof u[s]!="object")&&(u[s]={}),u=u[s]);}}else a[o]=B(n);return a}function V(){return reactCore.createTable({name:"draft",primaryKey:"field_1731131919872_aj29d"})}var Y=ce.createContext(void 0);function $(){let e=ce.useContext(Y);return e||{}}function ee({children:e,value:a}){return jsxRuntime.jsx(Y.Provider,{value:a,children:e})}function L(){let{dbName:e="bgs-react-form"}=$();return reactCore.createDatabase({dbName:e,table:{draft:V()}})}function re(e){let a=L(),o=reactCore.useDbLiveFlag(a.draft.detail,{key:e}),n=async(t,s)=>{let l={...await u(),...t};Object.keys(l).forEach(p=>{reactCore.isNotEmpty(l[p])||delete l[p];});let r=Object.keys(l);if(r.length===1&&r[0]==="field_1731131919872_aj29d")return f();r.some(p=>p!=="field_1731131919872_aj29d"&&l[p]!==reactCore.getFieldValue(s,p))?await a.draft.put(e,l):await f();},f=async()=>{await a.draft.remove(e);},u=async()=>await a.draft.detail(e);return {isDraft:o,saveDraft:n,removeDraft:f,getDataDraft:u}}var ie=(e={})=>{let a=ce.useMemo(()=>B(e.defaultValues||{}),[]),o=ce.useRef(null),[n,f]=ce.useState(false),u=e?.draftKey,t=u?re(u):void 0,s=ce.useRef([]),m=ce.useCallback(c=>{let P=s.current.findIndex(S=>S.id===c.id);if(P>-1){let S=[...s.current];S[P]=c,s.current=[...S];}else s.current.push(c);},[s]),l=ce.useCallback(c=>{s.current=s.current.filter(P=>P.id!==c);},[s]),r=reactHookForm.useForm({reValidateMode:"onSubmit",mode:"all",defaultValues:a,...e}),d=ce.useMemo(()=>X(r),[r]),p=ce.useMemo(()=>reactCore.generateUUID(),[]),b=ce.useCallback(c=>c?reactCore.getFieldValue(reactCore.mappingUndefinedtoNull(r.getValues()),c):reactCore.mappingUndefinedtoNull(r.getValues()),[r]),U=ce.useCallback(c=>{c?typeof c=="string"?r.resetField(c,{}):typeof c=="object"&&reactCore.isArray(c,0)&&c.forEach(P=>r.resetField(P)):r.reset();},[r]),R=ce.useCallback((c,P)=>{let S=b(),G=B({...S,...c});r.reset(G,P);},[r]),D=ce.useCallback((c,P)=>{let S=b();r.setValue(c,P),F({[c]:P},S);},[r]),g=ce.useCallback(c=>reactHookForm.useFieldArray({control:r.control,name:c}),[reactHookForm.useFieldArray,r]),T=ce.useCallback(c=>reactHookForm.useWatch({control:r.control,name:c}),[reactHookForm.useWatch,r]),v=ce.useCallback(()=>{t?.removeDraft?.();},[t]),i=ce.useCallback(()=>{t?.removeDraft?.(),U();},[t,U]),A=ce.useCallback(c=>d.useStore(P=>reactCore.getFieldValue(P,c)),[d]),y=ce.useCallback(d.setState,[d]),F=ce.useCallback((...c)=>t?.saveDraft?.(...c),[t]),h=ce.useCallback(()=>t?.getDataDraft?.(),[t]),I={...r,setValue:D,ref:o,reset:U,updateData:R,getData:b,formControl:r,useFieldArray:g,useWatch:T,isSubmit:n,formId:p,setIsSubmit:f,useSelected:A,setSelected:y,isDraft:!!t?.isDraft,removeDraft:v,resetDraft:i,saveDraft:F,getDataDraft:h,draftKey:u,registerItem:m,unregisterItem:l,items:s.current,getItems:()=>s.current};return [I,I]};var Le=({asChild:e,onSubmit:a,onChange:o,onInvalid:n,onFieldChange:f,onValidateDraft:u,formData:t,controller:s,children:m,...l})=>{t&&(t=B(t));let r=s??ie({draftKey:l.draftKey}),[d]=ce.useMemo(()=>Array.isArray(r)?r:[r],[r]),p=d.draftKey,b=ce.useRef(true),U=ce.useRef(void 0),{autoSaveDelay:R=.5}=$(),D=async y=>{y.preventDefault(),y.stopPropagation(),d.setIsSubmit(true);let F=await d.formControl.trigger(),h=d.getData();F?a&&a({...h},{...d}):n&&n(d.formControl.formState.errors);},g=async()=>{if(!p)return;let y=await d.getDataDraft();if(y){if(u&&!await u(y,t))return;Object.entries(y).forEach(([F,h])=>{let I=d.getItems()?.some(c=>c.dataField===F&&c.disabledDraft)??false;F==="field_1731131919872_aj29d"||!reactCore.isNotEmpty(h)||I||(d.setValue(F,h),d.trigger(F));});}},T=()=>{if(t){let y={...t};reactCore.diffJson(U.current||{},y)&&(d.updateData(y),U.current=y,setTimeout(g,0));}};ce.useEffect(()=>{T();},[t,d.formControl.reset]),ce.useEffect(()=>{if(!o)return;let y=d.formControl.watch((F,h)=>o(F,h,d));return ()=>y.unsubscribe()},[]),ce.useEffect(()=>{b.current=true;},[p]),ce.useEffect(()=>{b.current&&d?.isDraft&&(b.current=false,g());},[d.isDraft,p,u]);let v=ce.useMemo(()=>reactCore.debounce((y,F,h)=>{h?.saveDraft?.({[y]:F},t);},R),[t,R]),i=async(y,F,h)=>{f?.(y,F,h),!(h.getItems()?.some(c=>c.dataField===y&&c.disabledDraft)??false)&&v(y,F,h);},A={...l};return delete A?.draftKey,jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(M,{controller:{...d,disabled:l?.disabled,readOnly:l?.readOnly},onSubmit:a,onFieldChange:i,children:e?jsxRuntime.jsx("div",{id:d.formId,children:m}):jsxRuntime.jsx("form",{...A,id:d.formId,ref:d.ref,onSubmit:D,children:m})})})},le=Le;var ue=ce.createContext(void 0);function q(){let e=ce.useContext(ue);return e||{}}function Q({children:e,...a}){return jsxRuntime.jsx(ue.Provider,{value:a,children:e})}var fe=e=>{let a=C(),o=reactHookForm.useFieldArray({control:a.control,name:e}),f={formArrayId:ce.useMemo(()=>reactCore.generateUUID(),[]),name:e,...o,...a};return [f,f]};var ge=({defaultData:e,controller:a,children:o,...n})=>{let f=a??fe(n?.name),u=ce.useRef(false),[t]=Array.isArray(f)?f:[f],s=t.name;return ce.useEffect(()=>{u.current||e&&(t.fields.length>0||(typeof e=="boolean"?(t.append({}),u.current=true):typeof e=="number"&&e>0?(t.append([...Array(e).fill(null).map(()=>({}))]),u.current=true):typeof e=="object"&&(t.append(e),u.current=true)));},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:t.fields.map((m,l)=>{let r=`${s}.${l}.`,d={...t,index:l,fieldId:m.id,name:r,countFields:t.fields.length,removeItem:()=>t.remove(l),watchItem:p=>t.watch(p?`${r}${p}`:r.slice(0,-1)),setValueItem:(p,b)=>t.setValue(`${r}${p}`,b),useSelectedItem:p=>t.useSelected(`${r}${p}`)};return jsxRuntime.jsx(ce__default.default.Fragment,{children:jsxRuntime.jsx(Q,{...d,children:reactCore.renderChildren(o,d)})},m.id)})})};ge.displayName="BgsFormArray";var Ye=ge;ce__default.default.memo(({children:e,props:a})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:reactCore.renderChildren(e,a)}));var Fe=ce.createContext(void 0);function H(){let e=ce.useContext(Fe);return e||{}}function _({children:e,...a}){return jsxRuntime.jsx(Fe.Provider,{value:a,children:e})}var Te=({children:e,...a})=>{let o=C(),n=ce.useMemo(()=>reactCore.generateUUID(),[]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(_,{...o,...a,formGroupId:n,children:e})})};Te.displayName="BgsFormGroup";var sr=Te;var ir=/^(([^<>()[\]\\.,;:\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 z({validationRules:e,label:a},o,n){let{formControl:f,getData:u}=o,t=[];return e&&(typeof e=="string"?he(n,e,true,a,f,u,{}).forEach(s=>t.push(s)):typeof e=="object"&&Object.keys(e).forEach(s=>{let{validate:m}=t.find(r=>r.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let r=e[s],d="";["match","diff"].includes(s)&&typeof r=="object"&&(r=e[s].dataField,d=e[s].label),r!=null&&he(n,s,r,a,f,u,m,d).forEach(p=>t.push(p));}else if(typeof e[s]=="object"){let r=e[s];t.push({validate:{...m,[s]:d=>r.validation(d)||r.message&&(typeof r.message=="string"?r.message:r.message(a))}});}})),Object.assign({},...t)}var he=(e,a,o,n,f,u,t,s)=>{let m=[],{required:l,minLength:r,maxLength:d,min:p,max:b,email:U,match:R,diff:D,pattern:g}=e||{},v={required:i=>{if(!o)return true;let A=l?l(n):`${n} is required`;return typeof i=="string"&&!i.trim()||i==null?A:true},minLength:{value:o,message:r?r(n,o):`${n} must be at least ${o} characters long`},maxLength:{value:o,message:d?d(n,o):`${n} cannot be more than ${o} characters long`},min:{value:Number(o),message:p?p(n,o):`${n} should be at least ${o}`},max:{value:Number(o),message:b?b(n,o):`${n} should be at most ${o}`},regexp:(i="")=>i?new RegExp(o.regexp).test(i)||`${n} ${o.message}`:true,email:(i="")=>!o||!i?true:ir.test(i)||(U?U(n):`${n} must be type email`),match:(i="")=>i?i===(u&&u(o))||(R?R(n,s||reactCore.labelFormatter.changeAll(o)):`${n} must be same with ${s||reactCore.labelFormatter.changeAll(o)}`):true,diff:(i="")=>i?i!==(u&&u(o))||(D?D(n,s||reactCore.labelFormatter.changeAll(o)):`${n} must be different with ${s||reactCore.labelFormatter.changeAll(o)}`):true,pattern:{alphabet:(i="")=>!!i&&new RegExp("^[A-Za-z ]*$").test(i)||(g?.alphabet?g?.alphabet(n):`${n} must be format Alphabet`),alphanumber:(i="")=>!!i&&new RegExp("^[A-Za-z0-9 ]*$").test(i)||(g?.alphanumber?g?.alphanumber(n):`${n} must be format Alphabet or Number`),number:(i="")=>!!i&&new RegExp("^[0-9]*$").test(i)||(g?.number?g?.number(n):`${n} must be format Number`),lowercase:(i="")=>!!i&&new RegExp("^[a-z0-9 ]*$").test(i)||(g?.lowercase?g?.lowercase(n):`${n} must be format Lowercase`),url:(i="")=>!!i&&/^(ftp|http|https):\/\/[^ "]+$/.test(i)||(g?.url?g?.url(n):`${n} must be a valid URL`),uppercase:(i="")=>!!i&&new RegExp("^[A-Z0-9 ]*$").test(i)||(g?.uppercase?g?.uppercase(n):`${n} must be format Uppercase`),mixedcase:(i="")=>!!i&&/[a-z]/.test(i)&&/[A-Z]/.test(i)||(g?.mixedcase?g?.mixedcase(n):`${n} must be mixed case`),specialcharacters:(i="")=>!!i&&/[^a-zA-Z0-9\s]/.test(i)||(g?.specialcharacters?g?.specialcharacters(n):`${n} must contain special characters`)}}[a];if(v){let{validate:i}=m.find(A=>A.validate)||{};typeof v=="function"?m.push({validate:{...i,...t,[a]:v}}):a==="pattern"?m.push({validate:{...i,...t,[`${a}${o}`]:v[o]}}):m.push({[a]:v});}return m};var Mt=e=>{let a=ce.useMemo(()=>reactCore.generateUUID(),[]),o=C(),{validationMessage:n}=$(),{registerItem:f,unregisterItem:u,control:t,disabled:s,readOnly:m,formId:l,setSelected:r,useSelected:d,onFieldChange:p}=o,{name:b,formId:U,...R}=H(),{name:D,formId:g}=q(),T=ce.useMemo(()=>{let w=e.dataField;return e.disabledHierarchy||(D&&l===g&&(w=`${D}${w}`),b&&l===U&&(w=`${b}${w}`)),w},[D,l,g,e.dataField,b,U,e.disabledHierarchy]),v=ce.useMemo(()=>{if(e.label)return e.label;if(!e.noLabel)return reactCore.labelFormatter.changeAll(T)},[e.label,e.noLabel,T]);ce.useEffect(()=>(f({id:a,...e,dataField:T,label:v}),()=>{u(a);}),[a,e,T,v]);let i=ce.useMemo(()=>typeof e.disabled=="boolean"?e.disabled:typeof R.disabled=="boolean"?R.disabled:!!s,[e.disabled,R.disabled,s]),A=ce.useMemo(()=>typeof e.readOnly=="boolean"?e.readOnly:typeof R.readOnly=="boolean"?R.readOnly:!!m,[e.readOnly,R.readOnly,m]),y=ce.useMemo(()=>typeof e.hidden=="boolean"?e.hidden:false,[e.hidden]),F=ce.useMemo(()=>{if(typeof e.required=="boolean"){if(typeof e.validationRules>"u")return {required:e.required};if(typeof e.validationRules=="string"&&e.validationRules==="email")return {email:true,required:e.required};if(typeof e.validationRules=="object")return {...e.validationRules,required:e.required}}return e.validationRules},[e.validationRules,e.required]),h=ce.useMemo(()=>i||A||y?{required:false}:z({validationRules:F,label:v},o,n),[i,A,y,F,v,T,o,n]),I=reactHookForm.useController({name:T,control:t,disabled:i,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:h}),c=I.fieldState.invalid,P=I.fieldState.error?.message,S=reactHookForm.useWatch({name:T,control:t,defaultValue:e.defaultValue}),G=ce.useMemo(()=>reactCore.debounce(w=>r(Re=>({...Re,[T]:w||null}))),[r,T]),ve=d(T),Pe=F?.required;return {...e,setSelectedField:G,label:v,dataField:T,controller:I,invalid:c,messageError:P,selectedField:ve,value:S,required:Pe,onChange:w=>{I.field.onChange(w),p?.(T,w,o);}}};var Lt=()=>{let{formControl:e,items:a}=C(),o=(f,u,t,s=0)=>{let m=[];if(Array.isArray(t))t.forEach((l,r)=>{let d=Object.entries(l||{}).map(([p,b])=>o(`${f}.${r}.${p}`,`${u}[]${p}`,b,t.length>1?r+1:0)).flat();m=[...m,...d];});else if(t&&typeof t=="object"&&!Array.isArray(t)&&!t?.ref)Object.entries(t).map(([l,r])=>{let d=o(`${f}.${l}`,`${f}.${l}`,r);m=[...m,...d];});else {let l=t?.message||"",r=a.find(d=>d.dataField===u)?.label;m.push({label:`${r||""}${s>0?` ${s}`:""}`,message:l,dataField:f});}return m};return Object.entries(e.formState.errors||{}).map(([f,u])=>o(f,f,u)).flat()};function Ht(e){let{watch:a}=C(),o=ce.useMemo(()=>{let t=new Set,s=m=>{if(m)for(let[l,r]of Object.entries(m)){if(l==="and"||l==="or"){r?.forEach(s);continue}r&&typeof r=="object"&&"fromField"in r&&typeof r.fromField=="string"&&t.add(r.fromField);}};return s(e),Array.from(t)},[e]),n=o.length?a(o):[],f=ce.useMemo(()=>{let t={};return o.forEach((s,m)=>{t[s]=n?.[m];}),t},[o,n]),u=ce.useCallback(t=>{if(!t)return t;let s={};for(let[m,l]of Object.entries(t)){if(m==="and"||m==="or"){s[m]=l?.map(r=>u(r))??l;continue}if(l&&typeof l=="object"&&"fromField"in l){let r=l,d={...r},p=r.fromField;p&&p in f?d.value=f[p]:d.value=r.value,delete d.fromField,s[m]=d;}else s[m]=l;}return s},[f]);return ce.useMemo(()=>u(e)??{},[e,u])}var gr=(m=>(m.alphabet="alphabet",m.alphaNumber="alphanumber",m.number="number",m.lowercase="lowercase",m.url="url",m.uppercase="uppercase",m.mixedCase="mixedcase",m.specialCharacters="specialcharacters",m))(gr||{});var Jt=le;exports.BgsFormArray=Ye;exports.BgsFormGroup=sr;exports.BgsReactFormProvider=ee;exports.PatternTypeEnum=gr;exports.default=Jt;exports.useBgsController=Mt;exports.useBgsForm=C;exports.useBgsFormArray=q;exports.useBgsFormArrayInit=fe;exports.useBgsFormGroup=H;exports.useBgsFormInit=ie;exports.useResolvedQuery=Ht;exports.useSummaryValidation=Lt;
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var ce=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 ce__default=/*#__PURE__*/_interopDefault(ce);var J=ce.createContext(void 0);function C(){let e=ce.useContext(J);return e||{}}function M({children:e,controller:a,onSubmit:o,onFieldChange:n=()=>{}}){let u={...a,triggerSubmit:async(t,s)=>{a.setIsSubmit(true);let m=s?await a.formControl.trigger():true,l=a.getData();m&&o&&o({...l,...t},{...a});},onFieldChange:n};return jsxRuntime.jsx(J.Provider,{value:u,children:e})}var k=new WeakMap;function X(e){return k.has(e)||k.set(e,reactCore.createStore({})),k.get(e)}function B(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let a={};for(let[o,n]of Object.entries(e))if(o.includes(".")){let f=o.split("."),u=a;for(let t=0;t<f.length;t++){let s=f[t];t===f.length-1?u[s]=B(n):((!u[s]||typeof u[s]!="object")&&(u[s]={}),u=u[s]);}}else a[o]=B(n);return a}function V(){return reactCore.createTable({name:"draft",primaryKey:"field_1731131919872_aj29d",dbName:"bgs-react-form"})}var Y=ce.createContext(void 0);function $(){let e=ce.useContext(Y);return e||{}}function ee({children:e,value:a}){return jsxRuntime.jsx(Y.Provider,{value:a,children:e})}function L(){let{dbName:e="bgs-react-form"}=$();return reactCore.createDatabase({dbName:e,table:{draft:V()}})}function re(e){let a=L(),o=reactCore.useDbLiveFlag(a.draft.detail,{key:e}),n=async(t,s)=>{let l={...await u(),...t};Object.keys(l).forEach(p=>{reactCore.isNotEmpty(l[p])||delete l[p];});let r=Object.keys(l);if(r.length===1&&r[0]==="field_1731131919872_aj29d")return f();r.some(p=>p!=="field_1731131919872_aj29d"&&l[p]!==reactCore.getFieldValue(s,p))?await a.draft.put(e,l):await f();},f=async()=>{await a.draft.remove(e);},u=async()=>await a.draft.detail(e);return {isDraft:o,saveDraft:n,removeDraft:f,getDataDraft:u}}var ie=(e={})=>{let a=ce.useMemo(()=>B(e.defaultValues||{}),[]),o=ce.useRef(null),[n,f]=ce.useState(false),u=e?.draftKey,t=u?re(u):void 0,s=ce.useRef([]),m=ce.useCallback(c=>{let P=s.current.findIndex(S=>S.id===c.id);if(P>-1){let S=[...s.current];S[P]=c,s.current=[...S];}else s.current.push(c);},[s]),l=ce.useCallback(c=>{s.current=s.current.filter(P=>P.id!==c);},[s]),r=reactHookForm.useForm({reValidateMode:"onSubmit",mode:"all",defaultValues:a,...e}),d=ce.useMemo(()=>X(r),[r]),p=ce.useMemo(()=>reactCore.generateUUID(),[]),b=ce.useCallback(c=>c?reactCore.getFieldValue(reactCore.mappingUndefinedtoNull(r.getValues()),c):reactCore.mappingUndefinedtoNull(r.getValues()),[r]),U=ce.useCallback(c=>{c?typeof c=="string"?r.resetField(c,{}):typeof c=="object"&&reactCore.isArray(c,0)&&c.forEach(P=>r.resetField(P)):r.reset();},[r]),R=ce.useCallback((c,P)=>{let S=b(),G=B({...S,...c});r.reset(G,P);},[r]),D=ce.useCallback((c,P)=>{let S=b();r.setValue(c,P),F({[c]:P},S);},[r]),g=ce.useCallback(c=>reactHookForm.useFieldArray({control:r.control,name:c}),[reactHookForm.useFieldArray,r]),T=ce.useCallback(c=>reactHookForm.useWatch({control:r.control,name:c}),[reactHookForm.useWatch,r]),v=ce.useCallback(()=>{t?.removeDraft?.();},[t]),i=ce.useCallback(()=>{t?.removeDraft?.(),U();},[t,U]),A=ce.useCallback(c=>d.useStore(P=>reactCore.getFieldValue(P,c)),[d]),y=ce.useCallback(d.setState,[d]),F=ce.useCallback((...c)=>t?.saveDraft?.(...c),[t]),h=ce.useCallback(()=>t?.getDataDraft?.(),[t]),I={...r,setValue:D,ref:o,reset:U,updateData:R,getData:b,formControl:r,useFieldArray:g,useWatch:T,isSubmit:n,formId:p,setIsSubmit:f,useSelected:A,setSelected:y,isDraft:!!t?.isDraft,removeDraft:v,resetDraft:i,saveDraft:F,getDataDraft:h,draftKey:u,registerItem:m,unregisterItem:l,items:s.current,getItems:()=>s.current};return [I,I]};var Le=({asChild:e,onSubmit:a,onChange:o,onInvalid:n,onFieldChange:f,onValidateDraft:u,formData:t,controller:s,children:m,...l})=>{t&&(t=B(t));let r=s??ie({draftKey:l.draftKey}),[d]=ce.useMemo(()=>Array.isArray(r)?r:[r],[r]),p=d.draftKey,b=ce.useRef(true),U=ce.useRef(void 0),{autoSaveDelay:R=.5}=$(),D=async y=>{y.preventDefault(),y.stopPropagation(),d.setIsSubmit(true);let F=await d.formControl.trigger(),h=d.getData();F?a&&a({...h},{...d}):n&&n(d.formControl.formState.errors);},g=async()=>{if(!p)return;let y=await d.getDataDraft();if(y){if(u&&!await u(y,t))return;Object.entries(y).forEach(([F,h])=>{let I=d.getItems()?.some(c=>c.dataField===F&&c.disabledDraft)??false;F==="field_1731131919872_aj29d"||!reactCore.isNotEmpty(h)||I||(d.setValue(F,h),d.trigger(F));});}},T=()=>{if(t){let y={...t};reactCore.diffJson(U.current||{},y)&&(d.updateData(y),U.current=y,setTimeout(g,0));}};ce.useEffect(()=>{T();},[t,d.formControl.reset]),ce.useEffect(()=>{if(!o)return;let y=d.formControl.watch((F,h)=>o(F,h,d));return ()=>y.unsubscribe()},[]),ce.useEffect(()=>{b.current=true;},[p]),ce.useEffect(()=>{b.current&&d?.isDraft&&(b.current=false,g());},[d.isDraft,p,u]);let v=ce.useMemo(()=>reactCore.debounce((y,F,h)=>{h?.saveDraft?.({[y]:F},t);},R),[t,R]),i=async(y,F,h)=>{f?.(y,F,h),!(h.getItems()?.some(c=>c.dataField===y&&c.disabledDraft)??false)&&v(y,F,h);},A={...l};return delete A?.draftKey,jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(M,{controller:{...d,disabled:l?.disabled,readOnly:l?.readOnly},onSubmit:a,onFieldChange:i,children:e?jsxRuntime.jsx("div",{id:d.formId,children:m}):jsxRuntime.jsx("form",{...A,id:d.formId,ref:d.ref,onSubmit:D,children:m})})})},le=Le;var ue=ce.createContext(void 0);function q(){let e=ce.useContext(ue);return e||{}}function Q({children:e,...a}){return jsxRuntime.jsx(ue.Provider,{value:a,children:e})}var fe=e=>{let a=C(),o=reactHookForm.useFieldArray({control:a.control,name:e}),f={formArrayId:ce.useMemo(()=>reactCore.generateUUID(),[]),name:e,...o,...a};return [f,f]};var ge=({defaultData:e,controller:a,children:o,...n})=>{let f=a??fe(n?.name),u=ce.useRef(false),[t]=Array.isArray(f)?f:[f],s=t.name;return ce.useEffect(()=>{u.current||e&&(t.fields.length>0||(typeof e=="boolean"?(t.append({}),u.current=true):typeof e=="number"&&e>0?(t.append([...Array(e).fill(null).map(()=>({}))]),u.current=true):typeof e=="object"&&(t.append(e),u.current=true)));},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:t.fields.map((m,l)=>{let r=`${s}.${l}.`,d={...t,index:l,fieldId:m.id,name:r,countFields:t.fields.length,removeItem:()=>t.remove(l),watchItem:p=>t.watch(p?`${r}${p}`:r.slice(0,-1)),setValueItem:(p,b)=>t.setValue(`${r}${p}`,b),useSelectedItem:p=>t.useSelected(`${r}${p}`)};return jsxRuntime.jsx(ce__default.default.Fragment,{children:jsxRuntime.jsx(Q,{...d,children:reactCore.renderChildren(o,d)})},m.id)})})};ge.displayName="BgsFormArray";var Ye=ge;ce__default.default.memo(({children:e,props:a})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:reactCore.renderChildren(e,a)}));var Fe=ce.createContext(void 0);function H(){let e=ce.useContext(Fe);return e||{}}function _({children:e,...a}){return jsxRuntime.jsx(Fe.Provider,{value:a,children:e})}var Te=({children:e,...a})=>{let o=C(),n=ce.useMemo(()=>reactCore.generateUUID(),[]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:jsxRuntime.jsx(_,{...o,...a,formGroupId:n,children:e})})};Te.displayName="BgsFormGroup";var sr=Te;var ir=/^(([^<>()[\]\\.,;:\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 z({validationRules:e,label:a},o,n){let{formControl:f,getData:u}=o,t=[];return e&&(typeof e=="string"?he(n,e,true,a,f,u,{}).forEach(s=>t.push(s)):typeof e=="object"&&Object.keys(e).forEach(s=>{let{validate:m}=t.find(r=>r.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let r=e[s],d="";["match","diff"].includes(s)&&typeof r=="object"&&(r=e[s].dataField,d=e[s].label),r!=null&&he(n,s,r,a,f,u,m,d).forEach(p=>t.push(p));}else if(typeof e[s]=="object"){let r=e[s];t.push({validate:{...m,[s]:d=>r.validation(d)||r.message&&(typeof r.message=="string"?r.message:r.message(a))}});}})),Object.assign({},...t)}var he=(e,a,o,n,f,u,t,s)=>{let m=[],{required:l,minLength:r,maxLength:d,min:p,max:b,email:U,match:R,diff:D,pattern:g}=e||{},v={required:i=>{if(!o)return true;let A=l?l(n):`${n} is required`;return typeof i=="string"&&!i.trim()||i==null?A:true},minLength:{value:o,message:r?r(n,o):`${n} must be at least ${o} characters long`},maxLength:{value:o,message:d?d(n,o):`${n} cannot be more than ${o} characters long`},min:{value:Number(o),message:p?p(n,o):`${n} should be at least ${o}`},max:{value:Number(o),message:b?b(n,o):`${n} should be at most ${o}`},regexp:(i="")=>i?new RegExp(o.regexp).test(i)||`${n} ${o.message}`:true,email:(i="")=>!o||!i?true:ir.test(i)||(U?U(n):`${n} must be type email`),match:(i="")=>i?i===(u&&u(o))||(R?R(n,s||reactCore.labelFormatter.changeAll(o)):`${n} must be same with ${s||reactCore.labelFormatter.changeAll(o)}`):true,diff:(i="")=>i?i!==(u&&u(o))||(D?D(n,s||reactCore.labelFormatter.changeAll(o)):`${n} must be different with ${s||reactCore.labelFormatter.changeAll(o)}`):true,pattern:{alphabet:(i="")=>!!i&&new RegExp("^[A-Za-z ]*$").test(i)||(g?.alphabet?g?.alphabet(n):`${n} must be format Alphabet`),alphanumber:(i="")=>!!i&&new RegExp("^[A-Za-z0-9 ]*$").test(i)||(g?.alphanumber?g?.alphanumber(n):`${n} must be format Alphabet or Number`),number:(i="")=>!!i&&new RegExp("^[0-9]*$").test(i)||(g?.number?g?.number(n):`${n} must be format Number`),lowercase:(i="")=>!!i&&new RegExp("^[a-z0-9 ]*$").test(i)||(g?.lowercase?g?.lowercase(n):`${n} must be format Lowercase`),url:(i="")=>!!i&&/^(ftp|http|https):\/\/[^ "]+$/.test(i)||(g?.url?g?.url(n):`${n} must be a valid URL`),uppercase:(i="")=>!!i&&new RegExp("^[A-Z0-9 ]*$").test(i)||(g?.uppercase?g?.uppercase(n):`${n} must be format Uppercase`),mixedcase:(i="")=>!!i&&/[a-z]/.test(i)&&/[A-Z]/.test(i)||(g?.mixedcase?g?.mixedcase(n):`${n} must be mixed case`),specialcharacters:(i="")=>!!i&&/[^a-zA-Z0-9\s]/.test(i)||(g?.specialcharacters?g?.specialcharacters(n):`${n} must contain special characters`)}}[a];if(v){let{validate:i}=m.find(A=>A.validate)||{};typeof v=="function"?m.push({validate:{...i,...t,[a]:v}}):a==="pattern"?m.push({validate:{...i,...t,[`${a}${o}`]:v[o]}}):m.push({[a]:v});}return m};var Mt=e=>{let a=ce.useMemo(()=>reactCore.generateUUID(),[]),o=C(),{validationMessage:n}=$(),{registerItem:f,unregisterItem:u,control:t,disabled:s,readOnly:m,formId:l,setSelected:r,useSelected:d,onFieldChange:p}=o,{name:b,formId:U,...R}=H(),{name:D,formId:g}=q(),T=ce.useMemo(()=>{let w=e.dataField;return e.disabledHierarchy||(D&&l===g&&(w=`${D}${w}`),b&&l===U&&(w=`${b}${w}`)),w},[D,l,g,e.dataField,b,U,e.disabledHierarchy]),v=ce.useMemo(()=>{if(e.label)return e.label;if(!e.noLabel)return reactCore.labelFormatter.changeAll(T)},[e.label,e.noLabel,T]);ce.useEffect(()=>(f({id:a,...e,dataField:T,label:v}),()=>{u(a);}),[a,e,T,v]);let i=ce.useMemo(()=>typeof e.disabled=="boolean"?e.disabled:typeof R.disabled=="boolean"?R.disabled:!!s,[e.disabled,R.disabled,s]),A=ce.useMemo(()=>typeof e.readOnly=="boolean"?e.readOnly:typeof R.readOnly=="boolean"?R.readOnly:!!m,[e.readOnly,R.readOnly,m]),y=ce.useMemo(()=>typeof e.hidden=="boolean"?e.hidden:false,[e.hidden]),F=ce.useMemo(()=>{if(typeof e.required=="boolean"){if(typeof e.validationRules>"u")return {required:e.required};if(typeof e.validationRules=="string"&&e.validationRules==="email")return {email:true,required:e.required};if(typeof e.validationRules=="object")return {...e.validationRules,required:e.required}}return e.validationRules},[e.validationRules,e.required]),h=ce.useMemo(()=>i||A||y?{required:false}:z({validationRules:F,label:v},o,n),[i,A,y,F,v,T,o,n]),I=reactHookForm.useController({name:T,control:t,disabled:i,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:h}),c=I.fieldState.invalid,P=I.fieldState.error?.message,S=reactHookForm.useWatch({name:T,control:t,defaultValue:e.defaultValue}),G=ce.useMemo(()=>reactCore.debounce(w=>r(Re=>({...Re,[T]:w||null}))),[r,T]),ve=d(T),Pe=F?.required;return {...e,setSelectedField:G,label:v,dataField:T,controller:I,invalid:c,messageError:P,selectedField:ve,value:S,required:Pe,onChange:w=>{I.field.onChange(w),p?.(T,w,o);}}};var Lt=()=>{let{formControl:e,items:a}=C(),o=(f,u,t,s=0)=>{let m=[];if(Array.isArray(t))t.forEach((l,r)=>{let d=Object.entries(l||{}).map(([p,b])=>o(`${f}.${r}.${p}`,`${u}[]${p}`,b,t.length>1?r+1:0)).flat();m=[...m,...d];});else if(t&&typeof t=="object"&&!Array.isArray(t)&&!t?.ref)Object.entries(t).map(([l,r])=>{let d=o(`${f}.${l}`,`${f}.${l}`,r);m=[...m,...d];});else {let l=t?.message||"",r=a.find(d=>d.dataField===u)?.label;m.push({label:`${r||""}${s>0?` ${s}`:""}`,message:l,dataField:f});}return m};return Object.entries(e.formState.errors||{}).map(([f,u])=>o(f,f,u)).flat()};function Ht(e){let{watch:a}=C(),o=ce.useMemo(()=>{let t=new Set,s=m=>{if(m)for(let[l,r]of Object.entries(m)){if(l==="and"||l==="or"){r?.forEach(s);continue}r&&typeof r=="object"&&"fromField"in r&&typeof r.fromField=="string"&&t.add(r.fromField);}};return s(e),Array.from(t)},[e]),n=o.length?a(o):[],f=ce.useMemo(()=>{let t={};return o.forEach((s,m)=>{t[s]=n?.[m];}),t},[o,n]),u=ce.useCallback(t=>{if(!t)return t;let s={};for(let[m,l]of Object.entries(t)){if(m==="and"||m==="or"){s[m]=l?.map(r=>u(r))??l;continue}if(l&&typeof l=="object"&&"fromField"in l){let r=l,d={...r},p=r.fromField;p&&p in f?d.value=f[p]:d.value=r.value,delete d.fromField,s[m]=d;}else s[m]=l;}return s},[f]);return ce.useMemo(()=>u(e)??{},[e,u])}var gr=(m=>(m.alphabet="alphabet",m.alphaNumber="alphanumber",m.number="number",m.lowercase="lowercase",m.url="url",m.uppercase="uppercase",m.mixedCase="mixedcase",m.specialCharacters="specialcharacters",m))(gr||{});var Jt=le;exports.BgsFormArray=Ye;exports.BgsFormGroup=sr;exports.BgsReactFormProvider=ee;exports.PatternTypeEnum=gr;exports.default=Jt;exports.useBgsController=Mt;exports.useBgsForm=C;exports.useBgsFormArray=q;exports.useBgsFormArrayInit=fe;exports.useBgsFormGroup=H;exports.useBgsFormInit=ie;exports.useResolvedQuery=Ht;exports.useSummaryValidation=Lt;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import ce,{createContext,useContext,useMemo,useRef,useState,useCallback,useEffect}from'react';import {jsx,Fragment}from'react/jsx-runtime';import {renderChildren,generateUUID,getFieldValue,mappingUndefinedtoNull,isArray,debounce,labelFormatter,isNotEmpty,diffJson,useDbLiveFlag,createStore,createDatabase,createTable}from'@bgscore/react-core';import {useForm,useFieldArray,useWatch,useController}from'react-hook-form';var J=createContext(void 0);function C(){let e=useContext(J);return e||{}}function M({children:e,controller:a,onSubmit:o,onFieldChange:n=()=>{}}){let u={...a,triggerSubmit:async(t,s)=>{a.setIsSubmit(true);let m=s?await a.formControl.trigger():true,l=a.getData();m&&o&&o({...l,...t},{...a});},onFieldChange:n};return jsx(J.Provider,{value:u,children:e})}var k=new WeakMap;function X(e){return k.has(e)||k.set(e,createStore({})),k.get(e)}function B(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let a={};for(let[o,n]of Object.entries(e))if(o.includes(".")){let f=o.split("."),u=a;for(let t=0;t<f.length;t++){let s=f[t];t===f.length-1?u[s]=B(n):((!u[s]||typeof u[s]!="object")&&(u[s]={}),u=u[s]);}}else a[o]=B(n);return a}function V(){return createTable({name:"draft",primaryKey:"field_1731131919872_aj29d"})}var Y=createContext(void 0);function $(){let e=useContext(Y);return e||{}}function ee({children:e,value:a}){return jsx(Y.Provider,{value:a,children:e})}function L(){let{dbName:e="bgs-react-form"}=$();return createDatabase({dbName:e,table:{draft:V()}})}function re(e){let a=L(),o=useDbLiveFlag(a.draft.detail,{key:e}),n=async(t,s)=>{let l={...await u(),...t};Object.keys(l).forEach(p=>{isNotEmpty(l[p])||delete l[p];});let r=Object.keys(l);if(r.length===1&&r[0]==="field_1731131919872_aj29d")return f();r.some(p=>p!=="field_1731131919872_aj29d"&&l[p]!==getFieldValue(s,p))?await a.draft.put(e,l):await f();},f=async()=>{await a.draft.remove(e);},u=async()=>await a.draft.detail(e);return {isDraft:o,saveDraft:n,removeDraft:f,getDataDraft:u}}var ie=(e={})=>{let a=useMemo(()=>B(e.defaultValues||{}),[]),o=useRef(null),[n,f]=useState(false),u=e?.draftKey,t=u?re(u):void 0,s=useRef([]),m=useCallback(c=>{let P=s.current.findIndex(S=>S.id===c.id);if(P>-1){let S=[...s.current];S[P]=c,s.current=[...S];}else s.current.push(c);},[s]),l=useCallback(c=>{s.current=s.current.filter(P=>P.id!==c);},[s]),r=useForm({reValidateMode:"onSubmit",mode:"all",defaultValues:a,...e}),d=useMemo(()=>X(r),[r]),p=useMemo(()=>generateUUID(),[]),b=useCallback(c=>c?getFieldValue(mappingUndefinedtoNull(r.getValues()),c):mappingUndefinedtoNull(r.getValues()),[r]),U=useCallback(c=>{c?typeof c=="string"?r.resetField(c,{}):typeof c=="object"&&isArray(c,0)&&c.forEach(P=>r.resetField(P)):r.reset();},[r]),R=useCallback((c,P)=>{let S=b(),G=B({...S,...c});r.reset(G,P);},[r]),D=useCallback((c,P)=>{let S=b();r.setValue(c,P),F({[c]:P},S);},[r]),g=useCallback(c=>useFieldArray({control:r.control,name:c}),[useFieldArray,r]),T=useCallback(c=>useWatch({control:r.control,name:c}),[useWatch,r]),v=useCallback(()=>{t?.removeDraft?.();},[t]),i=useCallback(()=>{t?.removeDraft?.(),U();},[t,U]),A=useCallback(c=>d.useStore(P=>getFieldValue(P,c)),[d]),y=useCallback(d.setState,[d]),F=useCallback((...c)=>t?.saveDraft?.(...c),[t]),h=useCallback(()=>t?.getDataDraft?.(),[t]),I={...r,setValue:D,ref:o,reset:U,updateData:R,getData:b,formControl:r,useFieldArray:g,useWatch:T,isSubmit:n,formId:p,setIsSubmit:f,useSelected:A,setSelected:y,isDraft:!!t?.isDraft,removeDraft:v,resetDraft:i,saveDraft:F,getDataDraft:h,draftKey:u,registerItem:m,unregisterItem:l,items:s.current,getItems:()=>s.current};return [I,I]};var Le=({asChild:e,onSubmit:a,onChange:o,onInvalid:n,onFieldChange:f,onValidateDraft:u,formData:t,controller:s,children:m,...l})=>{t&&(t=B(t));let r=s??ie({draftKey:l.draftKey}),[d]=useMemo(()=>Array.isArray(r)?r:[r],[r]),p=d.draftKey,b=useRef(true),U=useRef(void 0),{autoSaveDelay:R=.5}=$(),D=async y=>{y.preventDefault(),y.stopPropagation(),d.setIsSubmit(true);let F=await d.formControl.trigger(),h=d.getData();F?a&&a({...h},{...d}):n&&n(d.formControl.formState.errors);},g=async()=>{if(!p)return;let y=await d.getDataDraft();if(y){if(u&&!await u(y,t))return;Object.entries(y).forEach(([F,h])=>{let I=d.getItems()?.some(c=>c.dataField===F&&c.disabledDraft)??false;F==="field_1731131919872_aj29d"||!isNotEmpty(h)||I||(d.setValue(F,h),d.trigger(F));});}},T=()=>{if(t){let y={...t};diffJson(U.current||{},y)&&(d.updateData(y),U.current=y,setTimeout(g,0));}};useEffect(()=>{T();},[t,d.formControl.reset]),useEffect(()=>{if(!o)return;let y=d.formControl.watch((F,h)=>o(F,h,d));return ()=>y.unsubscribe()},[]),useEffect(()=>{b.current=true;},[p]),useEffect(()=>{b.current&&d?.isDraft&&(b.current=false,g());},[d.isDraft,p,u]);let v=useMemo(()=>debounce((y,F,h)=>{h?.saveDraft?.({[y]:F},t);},R),[t,R]),i=async(y,F,h)=>{f?.(y,F,h),!(h.getItems()?.some(c=>c.dataField===y&&c.disabledDraft)??false)&&v(y,F,h);},A={...l};return delete A?.draftKey,jsx(Fragment,{children:jsx(M,{controller:{...d,disabled:l?.disabled,readOnly:l?.readOnly},onSubmit:a,onFieldChange:i,children:e?jsx("div",{id:d.formId,children:m}):jsx("form",{...A,id:d.formId,ref:d.ref,onSubmit:D,children:m})})})},le=Le;var ue=createContext(void 0);function q(){let e=useContext(ue);return e||{}}function Q({children:e,...a}){return jsx(ue.Provider,{value:a,children:e})}var fe=e=>{let a=C(),o=useFieldArray({control:a.control,name:e}),f={formArrayId:useMemo(()=>generateUUID(),[]),name:e,...o,...a};return [f,f]};var ge=({defaultData:e,controller:a,children:o,...n})=>{let f=a??fe(n?.name),u=useRef(false),[t]=Array.isArray(f)?f:[f],s=t.name;return useEffect(()=>{u.current||e&&(t.fields.length>0||(typeof e=="boolean"?(t.append({}),u.current=true):typeof e=="number"&&e>0?(t.append([...Array(e).fill(null).map(()=>({}))]),u.current=true):typeof e=="object"&&(t.append(e),u.current=true)));},[]),jsx(Fragment,{children:t.fields.map((m,l)=>{let r=`${s}.${l}.`,d={...t,index:l,fieldId:m.id,name:r,countFields:t.fields.length,removeItem:()=>t.remove(l),watchItem:p=>t.watch(p?`${r}${p}`:r.slice(0,-1)),setValueItem:(p,b)=>t.setValue(`${r}${p}`,b),useSelectedItem:p=>t.useSelected(`${r}${p}`)};return jsx(ce.Fragment,{children:jsx(Q,{...d,children:renderChildren(o,d)})},m.id)})})};ge.displayName="BgsFormArray";var Ye=ge;ce.memo(({children:e,props:a})=>jsx(Fragment,{children:renderChildren(e,a)}));var Fe=createContext(void 0);function H(){let e=useContext(Fe);return e||{}}function _({children:e,...a}){return jsx(Fe.Provider,{value:a,children:e})}var Te=({children:e,...a})=>{let o=C(),n=useMemo(()=>generateUUID(),[]);return jsx(Fragment,{children:jsx(_,{...o,...a,formGroupId:n,children:e})})};Te.displayName="BgsFormGroup";var sr=Te;var ir=/^(([^<>()[\]\\.,;:\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 z({validationRules:e,label:a},o,n){let{formControl:f,getData:u}=o,t=[];return e&&(typeof e=="string"?he(n,e,true,a,f,u,{}).forEach(s=>t.push(s)):typeof e=="object"&&Object.keys(e).forEach(s=>{let{validate:m}=t.find(r=>r.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let r=e[s],d="";["match","diff"].includes(s)&&typeof r=="object"&&(r=e[s].dataField,d=e[s].label),r!=null&&he(n,s,r,a,f,u,m,d).forEach(p=>t.push(p));}else if(typeof e[s]=="object"){let r=e[s];t.push({validate:{...m,[s]:d=>r.validation(d)||r.message&&(typeof r.message=="string"?r.message:r.message(a))}});}})),Object.assign({},...t)}var he=(e,a,o,n,f,u,t,s)=>{let m=[],{required:l,minLength:r,maxLength:d,min:p,max:b,email:U,match:R,diff:D,pattern:g}=e||{},v={required:i=>{if(!o)return true;let A=l?l(n):`${n} is required`;return typeof i=="string"&&!i.trim()||i==null?A:true},minLength:{value:o,message:r?r(n,o):`${n} must be at least ${o} characters long`},maxLength:{value:o,message:d?d(n,o):`${n} cannot be more than ${o} characters long`},min:{value:Number(o),message:p?p(n,o):`${n} should be at least ${o}`},max:{value:Number(o),message:b?b(n,o):`${n} should be at most ${o}`},regexp:(i="")=>i?new RegExp(o.regexp).test(i)||`${n} ${o.message}`:true,email:(i="")=>!o||!i?true:ir.test(i)||(U?U(n):`${n} must be type email`),match:(i="")=>i?i===(u&&u(o))||(R?R(n,s||labelFormatter.changeAll(o)):`${n} must be same with ${s||labelFormatter.changeAll(o)}`):true,diff:(i="")=>i?i!==(u&&u(o))||(D?D(n,s||labelFormatter.changeAll(o)):`${n} must be different with ${s||labelFormatter.changeAll(o)}`):true,pattern:{alphabet:(i="")=>!!i&&new RegExp("^[A-Za-z ]*$").test(i)||(g?.alphabet?g?.alphabet(n):`${n} must be format Alphabet`),alphanumber:(i="")=>!!i&&new RegExp("^[A-Za-z0-9 ]*$").test(i)||(g?.alphanumber?g?.alphanumber(n):`${n} must be format Alphabet or Number`),number:(i="")=>!!i&&new RegExp("^[0-9]*$").test(i)||(g?.number?g?.number(n):`${n} must be format Number`),lowercase:(i="")=>!!i&&new RegExp("^[a-z0-9 ]*$").test(i)||(g?.lowercase?g?.lowercase(n):`${n} must be format Lowercase`),url:(i="")=>!!i&&/^(ftp|http|https):\/\/[^ "]+$/.test(i)||(g?.url?g?.url(n):`${n} must be a valid URL`),uppercase:(i="")=>!!i&&new RegExp("^[A-Z0-9 ]*$").test(i)||(g?.uppercase?g?.uppercase(n):`${n} must be format Uppercase`),mixedcase:(i="")=>!!i&&/[a-z]/.test(i)&&/[A-Z]/.test(i)||(g?.mixedcase?g?.mixedcase(n):`${n} must be mixed case`),specialcharacters:(i="")=>!!i&&/[^a-zA-Z0-9\s]/.test(i)||(g?.specialcharacters?g?.specialcharacters(n):`${n} must contain special characters`)}}[a];if(v){let{validate:i}=m.find(A=>A.validate)||{};typeof v=="function"?m.push({validate:{...i,...t,[a]:v}}):a==="pattern"?m.push({validate:{...i,...t,[`${a}${o}`]:v[o]}}):m.push({[a]:v});}return m};var Mt=e=>{let a=useMemo(()=>generateUUID(),[]),o=C(),{validationMessage:n}=$(),{registerItem:f,unregisterItem:u,control:t,disabled:s,readOnly:m,formId:l,setSelected:r,useSelected:d,onFieldChange:p}=o,{name:b,formId:U,...R}=H(),{name:D,formId:g}=q(),T=useMemo(()=>{let w=e.dataField;return e.disabledHierarchy||(D&&l===g&&(w=`${D}${w}`),b&&l===U&&(w=`${b}${w}`)),w},[D,l,g,e.dataField,b,U,e.disabledHierarchy]),v=useMemo(()=>{if(e.label)return e.label;if(!e.noLabel)return labelFormatter.changeAll(T)},[e.label,e.noLabel,T]);useEffect(()=>(f({id:a,...e,dataField:T,label:v}),()=>{u(a);}),[a,e,T,v]);let i=useMemo(()=>typeof e.disabled=="boolean"?e.disabled:typeof R.disabled=="boolean"?R.disabled:!!s,[e.disabled,R.disabled,s]),A=useMemo(()=>typeof e.readOnly=="boolean"?e.readOnly:typeof R.readOnly=="boolean"?R.readOnly:!!m,[e.readOnly,R.readOnly,m]),y=useMemo(()=>typeof e.hidden=="boolean"?e.hidden:false,[e.hidden]),F=useMemo(()=>{if(typeof e.required=="boolean"){if(typeof e.validationRules>"u")return {required:e.required};if(typeof e.validationRules=="string"&&e.validationRules==="email")return {email:true,required:e.required};if(typeof e.validationRules=="object")return {...e.validationRules,required:e.required}}return e.validationRules},[e.validationRules,e.required]),h=useMemo(()=>i||A||y?{required:false}:z({validationRules:F,label:v},o,n),[i,A,y,F,v,T,o,n]),I=useController({name:T,control:t,disabled:i,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:h}),c=I.fieldState.invalid,P=I.fieldState.error?.message,S=useWatch({name:T,control:t,defaultValue:e.defaultValue}),G=useMemo(()=>debounce(w=>r(Re=>({...Re,[T]:w||null}))),[r,T]),ve=d(T),Pe=F?.required;return {...e,setSelectedField:G,label:v,dataField:T,controller:I,invalid:c,messageError:P,selectedField:ve,value:S,required:Pe,onChange:w=>{I.field.onChange(w),p?.(T,w,o);}}};var Lt=()=>{let{formControl:e,items:a}=C(),o=(f,u,t,s=0)=>{let m=[];if(Array.isArray(t))t.forEach((l,r)=>{let d=Object.entries(l||{}).map(([p,b])=>o(`${f}.${r}.${p}`,`${u}[]${p}`,b,t.length>1?r+1:0)).flat();m=[...m,...d];});else if(t&&typeof t=="object"&&!Array.isArray(t)&&!t?.ref)Object.entries(t).map(([l,r])=>{let d=o(`${f}.${l}`,`${f}.${l}`,r);m=[...m,...d];});else {let l=t?.message||"",r=a.find(d=>d.dataField===u)?.label;m.push({label:`${r||""}${s>0?` ${s}`:""}`,message:l,dataField:f});}return m};return Object.entries(e.formState.errors||{}).map(([f,u])=>o(f,f,u)).flat()};function Ht(e){let{watch:a}=C(),o=useMemo(()=>{let t=new Set,s=m=>{if(m)for(let[l,r]of Object.entries(m)){if(l==="and"||l==="or"){r?.forEach(s);continue}r&&typeof r=="object"&&"fromField"in r&&typeof r.fromField=="string"&&t.add(r.fromField);}};return s(e),Array.from(t)},[e]),n=o.length?a(o):[],f=useMemo(()=>{let t={};return o.forEach((s,m)=>{t[s]=n?.[m];}),t},[o,n]),u=useCallback(t=>{if(!t)return t;let s={};for(let[m,l]of Object.entries(t)){if(m==="and"||m==="or"){s[m]=l?.map(r=>u(r))??l;continue}if(l&&typeof l=="object"&&"fromField"in l){let r=l,d={...r},p=r.fromField;p&&p in f?d.value=f[p]:d.value=r.value,delete d.fromField,s[m]=d;}else s[m]=l;}return s},[f]);return useMemo(()=>u(e)??{},[e,u])}var gr=(m=>(m.alphabet="alphabet",m.alphaNumber="alphanumber",m.number="number",m.lowercase="lowercase",m.url="url",m.uppercase="uppercase",m.mixedCase="mixedcase",m.specialCharacters="specialcharacters",m))(gr||{});var Jt=le;export{Ye as BgsFormArray,sr as BgsFormGroup,ee as BgsReactFormProvider,gr as PatternTypeEnum,Jt as default,Mt as useBgsController,C as useBgsForm,q as useBgsFormArray,fe as useBgsFormArrayInit,H as useBgsFormGroup,ie as useBgsFormInit,Ht as useResolvedQuery,Lt as useSummaryValidation};
|
|
1
|
+
import ce,{createContext,useContext,useMemo,useRef,useState,useCallback,useEffect}from'react';import {jsx,Fragment}from'react/jsx-runtime';import {renderChildren,generateUUID,getFieldValue,mappingUndefinedtoNull,isArray,debounce,labelFormatter,isNotEmpty,diffJson,useDbLiveFlag,createStore,createDatabase,createTable}from'@bgscore/react-core';import {useForm,useFieldArray,useWatch,useController}from'react-hook-form';var J=createContext(void 0);function C(){let e=useContext(J);return e||{}}function M({children:e,controller:a,onSubmit:o,onFieldChange:n=()=>{}}){let u={...a,triggerSubmit:async(t,s)=>{a.setIsSubmit(true);let m=s?await a.formControl.trigger():true,l=a.getData();m&&o&&o({...l,...t},{...a});},onFieldChange:n};return jsx(J.Provider,{value:u,children:e})}var k=new WeakMap;function X(e){return k.has(e)||k.set(e,createStore({})),k.get(e)}function B(e){if(typeof e!="object"||e===null||Array.isArray(e))return e;let a={};for(let[o,n]of Object.entries(e))if(o.includes(".")){let f=o.split("."),u=a;for(let t=0;t<f.length;t++){let s=f[t];t===f.length-1?u[s]=B(n):((!u[s]||typeof u[s]!="object")&&(u[s]={}),u=u[s]);}}else a[o]=B(n);return a}function V(){return createTable({name:"draft",primaryKey:"field_1731131919872_aj29d",dbName:"bgs-react-form"})}var Y=createContext(void 0);function $(){let e=useContext(Y);return e||{}}function ee({children:e,value:a}){return jsx(Y.Provider,{value:a,children:e})}function L(){let{dbName:e="bgs-react-form"}=$();return createDatabase({dbName:e,table:{draft:V()}})}function re(e){let a=L(),o=useDbLiveFlag(a.draft.detail,{key:e}),n=async(t,s)=>{let l={...await u(),...t};Object.keys(l).forEach(p=>{isNotEmpty(l[p])||delete l[p];});let r=Object.keys(l);if(r.length===1&&r[0]==="field_1731131919872_aj29d")return f();r.some(p=>p!=="field_1731131919872_aj29d"&&l[p]!==getFieldValue(s,p))?await a.draft.put(e,l):await f();},f=async()=>{await a.draft.remove(e);},u=async()=>await a.draft.detail(e);return {isDraft:o,saveDraft:n,removeDraft:f,getDataDraft:u}}var ie=(e={})=>{let a=useMemo(()=>B(e.defaultValues||{}),[]),o=useRef(null),[n,f]=useState(false),u=e?.draftKey,t=u?re(u):void 0,s=useRef([]),m=useCallback(c=>{let P=s.current.findIndex(S=>S.id===c.id);if(P>-1){let S=[...s.current];S[P]=c,s.current=[...S];}else s.current.push(c);},[s]),l=useCallback(c=>{s.current=s.current.filter(P=>P.id!==c);},[s]),r=useForm({reValidateMode:"onSubmit",mode:"all",defaultValues:a,...e}),d=useMemo(()=>X(r),[r]),p=useMemo(()=>generateUUID(),[]),b=useCallback(c=>c?getFieldValue(mappingUndefinedtoNull(r.getValues()),c):mappingUndefinedtoNull(r.getValues()),[r]),U=useCallback(c=>{c?typeof c=="string"?r.resetField(c,{}):typeof c=="object"&&isArray(c,0)&&c.forEach(P=>r.resetField(P)):r.reset();},[r]),R=useCallback((c,P)=>{let S=b(),G=B({...S,...c});r.reset(G,P);},[r]),D=useCallback((c,P)=>{let S=b();r.setValue(c,P),F({[c]:P},S);},[r]),g=useCallback(c=>useFieldArray({control:r.control,name:c}),[useFieldArray,r]),T=useCallback(c=>useWatch({control:r.control,name:c}),[useWatch,r]),v=useCallback(()=>{t?.removeDraft?.();},[t]),i=useCallback(()=>{t?.removeDraft?.(),U();},[t,U]),A=useCallback(c=>d.useStore(P=>getFieldValue(P,c)),[d]),y=useCallback(d.setState,[d]),F=useCallback((...c)=>t?.saveDraft?.(...c),[t]),h=useCallback(()=>t?.getDataDraft?.(),[t]),I={...r,setValue:D,ref:o,reset:U,updateData:R,getData:b,formControl:r,useFieldArray:g,useWatch:T,isSubmit:n,formId:p,setIsSubmit:f,useSelected:A,setSelected:y,isDraft:!!t?.isDraft,removeDraft:v,resetDraft:i,saveDraft:F,getDataDraft:h,draftKey:u,registerItem:m,unregisterItem:l,items:s.current,getItems:()=>s.current};return [I,I]};var Le=({asChild:e,onSubmit:a,onChange:o,onInvalid:n,onFieldChange:f,onValidateDraft:u,formData:t,controller:s,children:m,...l})=>{t&&(t=B(t));let r=s??ie({draftKey:l.draftKey}),[d]=useMemo(()=>Array.isArray(r)?r:[r],[r]),p=d.draftKey,b=useRef(true),U=useRef(void 0),{autoSaveDelay:R=.5}=$(),D=async y=>{y.preventDefault(),y.stopPropagation(),d.setIsSubmit(true);let F=await d.formControl.trigger(),h=d.getData();F?a&&a({...h},{...d}):n&&n(d.formControl.formState.errors);},g=async()=>{if(!p)return;let y=await d.getDataDraft();if(y){if(u&&!await u(y,t))return;Object.entries(y).forEach(([F,h])=>{let I=d.getItems()?.some(c=>c.dataField===F&&c.disabledDraft)??false;F==="field_1731131919872_aj29d"||!isNotEmpty(h)||I||(d.setValue(F,h),d.trigger(F));});}},T=()=>{if(t){let y={...t};diffJson(U.current||{},y)&&(d.updateData(y),U.current=y,setTimeout(g,0));}};useEffect(()=>{T();},[t,d.formControl.reset]),useEffect(()=>{if(!o)return;let y=d.formControl.watch((F,h)=>o(F,h,d));return ()=>y.unsubscribe()},[]),useEffect(()=>{b.current=true;},[p]),useEffect(()=>{b.current&&d?.isDraft&&(b.current=false,g());},[d.isDraft,p,u]);let v=useMemo(()=>debounce((y,F,h)=>{h?.saveDraft?.({[y]:F},t);},R),[t,R]),i=async(y,F,h)=>{f?.(y,F,h),!(h.getItems()?.some(c=>c.dataField===y&&c.disabledDraft)??false)&&v(y,F,h);},A={...l};return delete A?.draftKey,jsx(Fragment,{children:jsx(M,{controller:{...d,disabled:l?.disabled,readOnly:l?.readOnly},onSubmit:a,onFieldChange:i,children:e?jsx("div",{id:d.formId,children:m}):jsx("form",{...A,id:d.formId,ref:d.ref,onSubmit:D,children:m})})})},le=Le;var ue=createContext(void 0);function q(){let e=useContext(ue);return e||{}}function Q({children:e,...a}){return jsx(ue.Provider,{value:a,children:e})}var fe=e=>{let a=C(),o=useFieldArray({control:a.control,name:e}),f={formArrayId:useMemo(()=>generateUUID(),[]),name:e,...o,...a};return [f,f]};var ge=({defaultData:e,controller:a,children:o,...n})=>{let f=a??fe(n?.name),u=useRef(false),[t]=Array.isArray(f)?f:[f],s=t.name;return useEffect(()=>{u.current||e&&(t.fields.length>0||(typeof e=="boolean"?(t.append({}),u.current=true):typeof e=="number"&&e>0?(t.append([...Array(e).fill(null).map(()=>({}))]),u.current=true):typeof e=="object"&&(t.append(e),u.current=true)));},[]),jsx(Fragment,{children:t.fields.map((m,l)=>{let r=`${s}.${l}.`,d={...t,index:l,fieldId:m.id,name:r,countFields:t.fields.length,removeItem:()=>t.remove(l),watchItem:p=>t.watch(p?`${r}${p}`:r.slice(0,-1)),setValueItem:(p,b)=>t.setValue(`${r}${p}`,b),useSelectedItem:p=>t.useSelected(`${r}${p}`)};return jsx(ce.Fragment,{children:jsx(Q,{...d,children:renderChildren(o,d)})},m.id)})})};ge.displayName="BgsFormArray";var Ye=ge;ce.memo(({children:e,props:a})=>jsx(Fragment,{children:renderChildren(e,a)}));var Fe=createContext(void 0);function H(){let e=useContext(Fe);return e||{}}function _({children:e,...a}){return jsx(Fe.Provider,{value:a,children:e})}var Te=({children:e,...a})=>{let o=C(),n=useMemo(()=>generateUUID(),[]);return jsx(Fragment,{children:jsx(_,{...o,...a,formGroupId:n,children:e})})};Te.displayName="BgsFormGroup";var sr=Te;var ir=/^(([^<>()[\]\\.,;:\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 z({validationRules:e,label:a},o,n){let{formControl:f,getData:u}=o,t=[];return e&&(typeof e=="string"?he(n,e,true,a,f,u,{}).forEach(s=>t.push(s)):typeof e=="object"&&Object.keys(e).forEach(s=>{let{validate:m}=t.find(r=>r.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let r=e[s],d="";["match","diff"].includes(s)&&typeof r=="object"&&(r=e[s].dataField,d=e[s].label),r!=null&&he(n,s,r,a,f,u,m,d).forEach(p=>t.push(p));}else if(typeof e[s]=="object"){let r=e[s];t.push({validate:{...m,[s]:d=>r.validation(d)||r.message&&(typeof r.message=="string"?r.message:r.message(a))}});}})),Object.assign({},...t)}var he=(e,a,o,n,f,u,t,s)=>{let m=[],{required:l,minLength:r,maxLength:d,min:p,max:b,email:U,match:R,diff:D,pattern:g}=e||{},v={required:i=>{if(!o)return true;let A=l?l(n):`${n} is required`;return typeof i=="string"&&!i.trim()||i==null?A:true},minLength:{value:o,message:r?r(n,o):`${n} must be at least ${o} characters long`},maxLength:{value:o,message:d?d(n,o):`${n} cannot be more than ${o} characters long`},min:{value:Number(o),message:p?p(n,o):`${n} should be at least ${o}`},max:{value:Number(o),message:b?b(n,o):`${n} should be at most ${o}`},regexp:(i="")=>i?new RegExp(o.regexp).test(i)||`${n} ${o.message}`:true,email:(i="")=>!o||!i?true:ir.test(i)||(U?U(n):`${n} must be type email`),match:(i="")=>i?i===(u&&u(o))||(R?R(n,s||labelFormatter.changeAll(o)):`${n} must be same with ${s||labelFormatter.changeAll(o)}`):true,diff:(i="")=>i?i!==(u&&u(o))||(D?D(n,s||labelFormatter.changeAll(o)):`${n} must be different with ${s||labelFormatter.changeAll(o)}`):true,pattern:{alphabet:(i="")=>!!i&&new RegExp("^[A-Za-z ]*$").test(i)||(g?.alphabet?g?.alphabet(n):`${n} must be format Alphabet`),alphanumber:(i="")=>!!i&&new RegExp("^[A-Za-z0-9 ]*$").test(i)||(g?.alphanumber?g?.alphanumber(n):`${n} must be format Alphabet or Number`),number:(i="")=>!!i&&new RegExp("^[0-9]*$").test(i)||(g?.number?g?.number(n):`${n} must be format Number`),lowercase:(i="")=>!!i&&new RegExp("^[a-z0-9 ]*$").test(i)||(g?.lowercase?g?.lowercase(n):`${n} must be format Lowercase`),url:(i="")=>!!i&&/^(ftp|http|https):\/\/[^ "]+$/.test(i)||(g?.url?g?.url(n):`${n} must be a valid URL`),uppercase:(i="")=>!!i&&new RegExp("^[A-Z0-9 ]*$").test(i)||(g?.uppercase?g?.uppercase(n):`${n} must be format Uppercase`),mixedcase:(i="")=>!!i&&/[a-z]/.test(i)&&/[A-Z]/.test(i)||(g?.mixedcase?g?.mixedcase(n):`${n} must be mixed case`),specialcharacters:(i="")=>!!i&&/[^a-zA-Z0-9\s]/.test(i)||(g?.specialcharacters?g?.specialcharacters(n):`${n} must contain special characters`)}}[a];if(v){let{validate:i}=m.find(A=>A.validate)||{};typeof v=="function"?m.push({validate:{...i,...t,[a]:v}}):a==="pattern"?m.push({validate:{...i,...t,[`${a}${o}`]:v[o]}}):m.push({[a]:v});}return m};var Mt=e=>{let a=useMemo(()=>generateUUID(),[]),o=C(),{validationMessage:n}=$(),{registerItem:f,unregisterItem:u,control:t,disabled:s,readOnly:m,formId:l,setSelected:r,useSelected:d,onFieldChange:p}=o,{name:b,formId:U,...R}=H(),{name:D,formId:g}=q(),T=useMemo(()=>{let w=e.dataField;return e.disabledHierarchy||(D&&l===g&&(w=`${D}${w}`),b&&l===U&&(w=`${b}${w}`)),w},[D,l,g,e.dataField,b,U,e.disabledHierarchy]),v=useMemo(()=>{if(e.label)return e.label;if(!e.noLabel)return labelFormatter.changeAll(T)},[e.label,e.noLabel,T]);useEffect(()=>(f({id:a,...e,dataField:T,label:v}),()=>{u(a);}),[a,e,T,v]);let i=useMemo(()=>typeof e.disabled=="boolean"?e.disabled:typeof R.disabled=="boolean"?R.disabled:!!s,[e.disabled,R.disabled,s]),A=useMemo(()=>typeof e.readOnly=="boolean"?e.readOnly:typeof R.readOnly=="boolean"?R.readOnly:!!m,[e.readOnly,R.readOnly,m]),y=useMemo(()=>typeof e.hidden=="boolean"?e.hidden:false,[e.hidden]),F=useMemo(()=>{if(typeof e.required=="boolean"){if(typeof e.validationRules>"u")return {required:e.required};if(typeof e.validationRules=="string"&&e.validationRules==="email")return {email:true,required:e.required};if(typeof e.validationRules=="object")return {...e.validationRules,required:e.required}}return e.validationRules},[e.validationRules,e.required]),h=useMemo(()=>i||A||y?{required:false}:z({validationRules:F,label:v},o,n),[i,A,y,F,v,T,o,n]),I=useController({name:T,control:t,disabled:i,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:h}),c=I.fieldState.invalid,P=I.fieldState.error?.message,S=useWatch({name:T,control:t,defaultValue:e.defaultValue}),G=useMemo(()=>debounce(w=>r(Re=>({...Re,[T]:w||null}))),[r,T]),ve=d(T),Pe=F?.required;return {...e,setSelectedField:G,label:v,dataField:T,controller:I,invalid:c,messageError:P,selectedField:ve,value:S,required:Pe,onChange:w=>{I.field.onChange(w),p?.(T,w,o);}}};var Lt=()=>{let{formControl:e,items:a}=C(),o=(f,u,t,s=0)=>{let m=[];if(Array.isArray(t))t.forEach((l,r)=>{let d=Object.entries(l||{}).map(([p,b])=>o(`${f}.${r}.${p}`,`${u}[]${p}`,b,t.length>1?r+1:0)).flat();m=[...m,...d];});else if(t&&typeof t=="object"&&!Array.isArray(t)&&!t?.ref)Object.entries(t).map(([l,r])=>{let d=o(`${f}.${l}`,`${f}.${l}`,r);m=[...m,...d];});else {let l=t?.message||"",r=a.find(d=>d.dataField===u)?.label;m.push({label:`${r||""}${s>0?` ${s}`:""}`,message:l,dataField:f});}return m};return Object.entries(e.formState.errors||{}).map(([f,u])=>o(f,f,u)).flat()};function Ht(e){let{watch:a}=C(),o=useMemo(()=>{let t=new Set,s=m=>{if(m)for(let[l,r]of Object.entries(m)){if(l==="and"||l==="or"){r?.forEach(s);continue}r&&typeof r=="object"&&"fromField"in r&&typeof r.fromField=="string"&&t.add(r.fromField);}};return s(e),Array.from(t)},[e]),n=o.length?a(o):[],f=useMemo(()=>{let t={};return o.forEach((s,m)=>{t[s]=n?.[m];}),t},[o,n]),u=useCallback(t=>{if(!t)return t;let s={};for(let[m,l]of Object.entries(t)){if(m==="and"||m==="or"){s[m]=l?.map(r=>u(r))??l;continue}if(l&&typeof l=="object"&&"fromField"in l){let r=l,d={...r},p=r.fromField;p&&p in f?d.value=f[p]:d.value=r.value,delete d.fromField,s[m]=d;}else s[m]=l;}return s},[f]);return useMemo(()=>u(e)??{},[e,u])}var gr=(m=>(m.alphabet="alphabet",m.alphaNumber="alphanumber",m.number="number",m.lowercase="lowercase",m.url="url",m.uppercase="uppercase",m.mixedCase="mixedcase",m.specialCharacters="specialcharacters",m))(gr||{});var Jt=le;export{Ye as BgsFormArray,sr as BgsFormGroup,ee as BgsReactFormProvider,gr as PatternTypeEnum,Jt as default,Mt as useBgsController,C as useBgsForm,q as useBgsFormArray,fe as useBgsFormArrayInit,H as useBgsFormGroup,ie as useBgsFormInit,Ht as useResolvedQuery,Lt as useSummaryValidation};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bgscore/react-form",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.46",
|
|
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",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"author": "Andry Bagus Dharmawan",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@bgscore/react-core": ">=1.0.
|
|
31
|
+
"@bgscore/react-core": ">=1.0.46",
|
|
32
32
|
"react": ">=17.0.0",
|
|
33
33
|
"react-dom": ">=17.0.0"
|
|
34
34
|
},
|