@bgscore/react-form 0.0.12 → 0.0.13
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.d.cts +20 -17
- package/dist/index.d.ts +20 -17
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var k=_react.createContext.call(void 0, void 0);function F(){let r=_react.useContext.call(void 0, k);return r||{}}function $({children:r,...e}){let t=_react.useRef.call(void 0, []),l=_react.useCallback.call(void 0, m=>{let u=t.current.findIndex(i=>i.id===m.id);if(u>-1){let i=[...t.current];i[u]=m,t.current=[...i]}else t.current.push(m)},[t]),p=_react.useCallback.call(void 0, m=>{t.current=t.current.filter(u=>u.id!==m)},[]),s={...e,registerItem:l,unregisterItem:p,items:t.current};return _jsxruntime.jsx.call(void 0, k.Provider,{value:s,children:r})}function C(){let r=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?r():r()&3|8).toString(16))}function A(r,e){return typeof r=="function"?r(e):r}var h={camelCase:(r="")=>(r=r.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),r=r.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),r.charAt(0).toUpperCase()+r.slice(1)),snackCase:(r="")=>{let t=r.replace(/_([a-z])/g,(l,p)=>p.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(r="",e=!1)=>{let t="";try{r=_optionalChain([r, 'optionalAccess', _2 => _2.split, 'call', _3 => _3("."), 'access', _4 => _4[_optionalChain([r, 'optionalAccess', _5 => _5.split, 'call', _6 => _6("."), 'optionalAccess', _7 => _7.length])-1]]),r=_optionalChain([r, 'optionalAccess', _8 => _8.split, 'call', _9 => _9("[]"), 'access', _10 => _10[_optionalChain([r, 'optionalAccess', _11 => _11.split, 'call', _12 => _12("[]"), 'optionalAccess', _13 => _13.length])-1]]),t=h.snackCase(h.camelCase(r)),e&&(t=_optionalChain([t, 'optionalAccess', _14 => _14.split, 'call', _15 => _15(" "), 'optionalAccess', _16 => _16.map, 'call', _17 => _17(l=>_optionalChain([l, 'optionalAccess', _18 => _18.length])<=3?_optionalChain([l, 'optionalAccess', _19 => _19.toUpperCase, 'call', _20 => _20()]):l), 'optionalAccess', _21 => _21.join, 'call', _22 => _22(" ")]))}catch (e2){}return t}};function N(r,e){try{return JSON.stringify(r)!==JSON.stringify(e)}catch (e3){return!1}}var I=r=>(Object.keys(r).forEach(e=>{r[e]===void 0&&(r[e]=null)}),r),G=(r,e)=>r?e.includes(".")?G(r[e.substring(0,e.indexOf("."))],e.substring(e.indexOf(".")+1)):r?r[e]:null:"";function S(r,e){let t=!1;return r&&typeof r=="object"&&Array.isArray(r)&&(typeof e=="number"?r.length>e&&(t=!0):t=!0),t}var _reacthookform = require('react-hook-form');var gr=_react.forwardRef.call(void 0, ({children:r,className:e,formData:t,onChange:l=()=>{},onSubmit:p},s)=>{t||(t={});let m=_react.useRef.call(void 0, void 0),u=_react.useRef.call(void 0, null),[i,x]=_react.useState.call(void 0, !1),n=_reacthookform.useForm.call(void 0, {reValidateMode:"onSubmit",mode:"all",defaultValues:t}),c=_react.useMemo.call(void 0, ()=>C(),[]);_react.useEffect.call(void 0, ()=>{t&&N(m.current||{},t)&&(n.reset(t),m.current=t)},[t,n.reset]),_react.useEffect.call(void 0, ()=>{let a=n.watch(l);return()=>a.unsubscribe()},[]);let d=async(a,f,U)=>{let{validate:y=!0,...o}=U||{};a&&(a.preventDefault(),a.stopPropagation()),x(!0);let R=y?await n.trigger():!0,tr=g();R&&p&&p({...tr,...f},{...B,...o,validate:y})},g=a=>a?G(I(n.getValues()),a):I(n.getValues()),B={...n,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&S(a,0)&&a.forEach(f=>n.resetField(f)):n.reset()},updateData:a=>{let f=g();n.reset({...f,...a})},getData:g,triggerSubmit:(a,f)=>d(void 0,a,f),formControl:n,useFieldArray:a=>_reacthookform.useFieldArray.call(void 0, {control:n.control,name:a}),useWatch:a=>_reacthookform.useWatch.call(void 0, {control:n.control,name:a}),isSubmit:i,formId:c};return _react.useImperativeHandle.call(void 0, s,()=>B),_jsxruntime.jsx.call(void 0, $,{...B,children:_jsxruntime.jsx.call(void 0, "form",{id:c,className:e,ref:u,onSubmit:d,children:A(r,B)})})}),Z=gr;var q=_react.createContext.call(void 0, void 0);function Fr(){let r=_react.useContext.call(void 0, q);return r||{}}function w({children:r,...e}){return _jsxruntime.jsx.call(void 0, q.Provider,{value:e,children:r})}var j=_react.createContext.call(void 0, void 0);function O(){let r=_react.useContext.call(void 0, j);return r||{}}function E({children:r,...e}){return _jsxruntime.jsx.call(void 0, j.Provider,{value:e,children:r})}var H=_react.createContext.call(void 0, void 0);function K(){let r=_react.useContext.call(void 0, H);return r||{}}function J({children:r,...e}){return _jsxruntime.jsx.call(void 0, H.Provider,{value:e,children:r})}function W({validationRules:r,label:e}){let{formControl:t,getData:l}=F(),p=[];return r&&(typeof r=="string"?_(r,!0,e,t,l,{}).forEach(s=>p.push(s)):typeof r=="object"&&Object.keys(r).forEach(s=>{let{validate:m}=p.find(i=>i.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let i=r[s],x="";if(s==="email"&&!i)return;["match","diff"].includes(s)&&typeof i=="object"&&(i=r[s].dataField,x=r[s].label),i!=null&&_(s,i,e,t,l,m,x).forEach(n=>p.push(n))}else if(typeof r[s]=="object"){let i=r[s];p.push({validate:{...m,[s]:x=>i.validation(x)||i.message&&(typeof i.message=="string"?i.message:i.message(e))}})}})),Object.assign({},...p)}var _=(r,e,t,l,p,s,m)=>{let u=[],{validationMessage:i}=K(),{required:x,minLength:n,maxLength:c,min:d,max:g,email:b,match:B,diff:a,pattern:f}=i||{},y={required:{value:!!e,message:x?x(t):`${t} is required`},minLength:{value:e,message:n?n(t,e):`${t} must be at least ${e} characters long`},maxLength:{value:e,message:c?c(t,e):`${t} cannot be more than ${e} characters long`},min:{value:Number(e),message:d?d(t,e):`${t} should be at least ${e}`},max:{value:Number(e),message:g?g(t,e):`${t} should be at most ${e}`},regexp:(o="")=>o?new RegExp(e.regexp).test(o)||`${t} ${e.message}`:!0,email:(o="")=>o?o.match(/^(([^<>()[\]\\.,;:\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,}))$/)||(b?b(t):`${t} must be type email`):!0,match:(o="")=>o?o===(p&&p(e))||(B?B(t,m||h.changeAll(e)):`${t} must be same with ${m||h.changeAll(e)}`):!0,diff:(o="")=>o?o!==(p&&p(e))||(a?a(t,m||h.changeAll(e)):`${t} must be different with ${m||h.changeAll(e)}`):!0,pattern:{alphabet:(o="")=>!!o&&new RegExp("^[A-Za-z ]*$").test(o)||(_optionalChain([f, 'optionalAccess', _23 => _23.alphabet])?_optionalChain([f, 'optionalAccess', _24 => _24.alphabet, 'call', _25 => _25(t)]):`${t} must be format Alphabet`),alphanumber:(o="")=>!!o&&new RegExp("^[A-Za-z0-9 ]*$").test(o)||(_optionalChain([f, 'optionalAccess', _26 => _26.alphanumber])?_optionalChain([f, 'optionalAccess', _27 => _27.alphanumber, 'call', _28 => _28(t)]):`${t} must be format Alphabet or Number`),number:(o="")=>!!o&&new RegExp("^[0-9]*$").test(o)||(_optionalChain([f, 'optionalAccess', _29 => _29.number])?_optionalChain([f, 'optionalAccess', _30 => _30.number, 'call', _31 => _31(t)]):`${t} must be format Number`),lowercase:(o="")=>!!o&&new RegExp("^[a-z0-9 ]*$").test(o)||(_optionalChain([f, 'optionalAccess', _32 => _32.lowercase])?_optionalChain([f, 'optionalAccess', _33 => _33.lowercase, 'call', _34 => _34(t)]):`${t} must be format Lowercase`),url:(o="")=>!!o&&/^(ftp|http|https):\/\/[^ "]+$/.test(o)||(_optionalChain([f, 'optionalAccess', _35 => _35.url])?_optionalChain([f, 'optionalAccess', _36 => _36.url, 'call', _37 => _37(t)]):`${t} must be a valid URL`),uppercase:(o="")=>!!o&&new RegExp("^[A-Z0-9 ]*$").test(o)||(_optionalChain([f, 'optionalAccess', _38 => _38.uppercase])?_optionalChain([f, 'optionalAccess', _39 => _39.uppercase, 'call', _40 => _40(t)]):`${t} must be format Uppercase`),mixedcase:(o="")=>!!o&&/[a-z]/.test(o)&&/[A-Z]/.test(o)||(_optionalChain([f, 'optionalAccess', _41 => _41.mixedcase])?_optionalChain([f, 'optionalAccess', _42 => _42.mixedcase, 'call', _43 => _43(t)]):`${t} must be mixed case`),specialcharacters:(o="")=>!!o&&/[^a-zA-Z0-9\s]/.test(o)||(_optionalChain([f, 'optionalAccess', _44 => _44.specialcharacters])?_optionalChain([f, 'optionalAccess', _45 => _45.specialcharacters, 'call', _46 => _46(t)]):`${t} must contain special characters`)}}[r];if(y){let{validate:o}=u.find(R=>R.validate)||{};typeof y=="function"?u.push({validate:{...o,...s,[r]:y}}):r==="pattern"?u.push({validate:{...o,...s,[`${r}${e}`]:y[e]}}):u.push({[r]:y})}return u};function X({children:r,...e}){let t=_react.useMemo.call(void 0, ()=>C(),[]),{registerItem:l,unregisterItem:p,formControl:s,disabled:m,readOnly:u}=F(),{name:i,formId:x,...n}=O();_react.useEffect.call(void 0, ()=>(l({id:t,...e}),()=>{p(t)}),[t,e]),!e.label&&!e.noLabel&&(e.label=h.changeAll(e.dataField));let c=!1;typeof e.disabled=="boolean"?c=e.disabled:typeof n.disabled=="boolean"?c=n.disabled:c=!!m;let d=!1;typeof e.readOnly=="boolean"?d=e.readOnly:typeof n.readOnly=="boolean"?d=n.readOnly:d=!!u;let g=!1;return typeof e.hidden=="boolean"&&(g=e.hidden),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:s.control&&_jsxruntime.jsx.call(void 0, _reacthookform.Controller,{name:e.dataField,control:s.control,rules:c||d||g?{required:!1}:W(e),render:b=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, w,{...e,controller:b,children:r})})})})}var Y=_react.createContext.call(void 0, void 0);function Er(r){let e=_react.useContext.call(void 0, Y);if(r){let t=F(),l=_reacthookform.useFieldArray.call(void 0, {control:_optionalChain([t, 'optionalAccess', _47 => _47.formControl, 'access', _48 => _48.control]),name:r});return{formArrayId:"",name:r,index:-1,...l,...t,countFields:l.fields.length,removeItem:()=>{},watchItem:()=>({}),setValueItem:()=>{}}}return e||{}}function D({children:r,...e}){return _jsxruntime.jsx.call(void 0, Y.Provider,{value:e,children:r})}var V=_react.forwardRef.call(void 0, ({name:r,className:e="",defaultData:t,children:l},p)=>{let s=F(),m=_reacthookform.useFieldArray.call(void 0, {control:s.control,name:r});_react.useEffect.call(void 0, ()=>{typeof t=="boolean"&&t?m.append({}):typeof t=="number"&&t>0?m.append([...Array(t).fill(null).map(()=>({}))]):typeof t=="object"&&t&&m.append(t)},[]);let i={formArrayId:_react.useMemo.call(void 0, ()=>C(),[]),...m,...s};return _react.useImperativeHandle.call(void 0, p,()=>i),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:m.fields.map((x,n)=>{let c=`${r}.${n}.`,d={...i,index:n,name:c,countFields:m.fields.length,removeItem:()=>m.remove(n),watchItem:g=>s.watch(g?`${c}${g}`:c.slice(0,-1)),setValueItem:(g,b)=>s.setValue(`${c}${g}`,b)};return _jsxruntime.jsx.call(void 0, "div",{className:e,children:_jsxruntime.jsx.call(void 0, D,{...d,children:A(l,d)})},x.id)})})});V.displayName="BgsFormArray";var Nr=V;var er=({children:r,...e})=>{let t=F(),l=_react.useMemo.call(void 0, ()=>C(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, E,{...t,...e,formGroupId:l,children:r})})};er.displayName="BgsFormGroup";var vr=er;var tt=Z;exports.BgsArrayForm = Nr; exports.BgsController = X; exports.BgsGroupForm = vr; exports.BgsReactFormProvider = J; exports.default = tt; exports.useBgsArrayForm = Er; exports.useBgsControllerForm = Fr; exports.useBgsForm = F; exports.useBgsGroupForm = O;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var S=_react.createContext.call(void 0, void 0);function x(){let r=_react.useContext.call(void 0, S);return r||{}}function B({children:r,controller:e,onSubmit:t}){let m=_react.useRef.call(void 0, []),u=_react.useCallback.call(void 0, o=>{let l=m.current.findIndex(i=>i.id===o.id);if(l>-1){let i=[...m.current];i[l]=o,m.current=[...i]}else m.current.push(o)},[m]),s=_react.useCallback.call(void 0, o=>{m.current=m.current.filter(l=>l.id!==o)},[]),f=async(o,l)=>{e.setIsSubmit(!0);let i=l?await e.formControl.trigger():!0,a=e.getData();i&&t&&t({...a,...o},{...e})},p={...e,registerItem:u,unregisterItem:s,items:m.current,triggerSubmit:f};return _jsxruntime.jsx.call(void 0, S.Provider,{value:p,children:r})}function h(){let r=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?r():r()&3|8).toString(16))}function k(r,e){return typeof r=="function"?r(e):r}var F={camelCase:(r="")=>(r=r.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),r=r.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),r.charAt(0).toUpperCase()+r.slice(1)),snackCase:(r="")=>{let t=r.replace(/_([a-z])/g,(m,u)=>u.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(r="",e=!1)=>{let t="";try{r=_optionalChain([r, 'optionalAccess', _2 => _2.split, 'call', _3 => _3("."), 'access', _4 => _4[_optionalChain([r, 'optionalAccess', _5 => _5.split, 'call', _6 => _6("."), 'optionalAccess', _7 => _7.length])-1]]),r=_optionalChain([r, 'optionalAccess', _8 => _8.split, 'call', _9 => _9("[]"), 'access', _10 => _10[_optionalChain([r, 'optionalAccess', _11 => _11.split, 'call', _12 => _12("[]"), 'optionalAccess', _13 => _13.length])-1]]),t=F.snackCase(F.camelCase(r)),e&&(t=_optionalChain([t, 'optionalAccess', _14 => _14.split, 'call', _15 => _15(" "), 'optionalAccess', _16 => _16.map, 'call', _17 => _17(m=>_optionalChain([m, 'optionalAccess', _18 => _18.length])<=3?_optionalChain([m, 'optionalAccess', _19 => _19.toUpperCase, 'call', _20 => _20()]):m), 'optionalAccess', _21 => _21.join, 'call', _22 => _22(" ")]))}catch (e2){}return t}};function E(r,e){try{return JSON.stringify(r)!==JSON.stringify(e)}catch (e3){return!1}}var P=r=>(Object.keys(r).forEach(e=>{r[e]===void 0&&(r[e]=null)}),r),A=(r,e)=>r?e.includes(".")?A(r[e.substring(0,e.indexOf("."))],e.substring(e.indexOf(".")+1)):r?r[e]:null:"";function L(r,e){let t=!1;return r&&typeof r=="object"&&Array.isArray(r)&&(typeof e=="number"?r.length>e&&(t=!0):t=!0),t}var _reacthookform = require('react-hook-form');var v=(r,e)=>{r||(r={});let t=_react.useRef.call(void 0, null),[m,u]=_react.useState.call(void 0, !1),s=_reacthookform.useForm.call(void 0, {...e,reValidateMode:"onSubmit",mode:"all",defaultValues:r}),f=_react.useMemo.call(void 0, ()=>h(),[]),p=i=>i?A(P(s.getValues()),i):P(s.getValues()),l={...s,ref:t,reset:i=>{i?typeof i=="string"?s.resetField(i,{}):typeof i=="object"&&L(i,0)&&i.forEach(a=>s.resetField(a)):s.reset()},updateData:i=>{let a=p();s.reset({...a,...i})},getData:p,formControl:s,useFieldArray:i=>_reacthookform.useFieldArray.call(void 0, {control:s.control,name:i}),useWatch:i=>_reacthookform.useWatch.call(void 0, {control:s.control,name:i}),isSubmit:m,formId:f,setIsSubmit:u};return[l,l]};var pr=({onSubmit:r,onChange:e=()=>{},onInvalid:t=()=>{},formData:m,controller:u,children:s,...f})=>{let p=_nullishCoalesce(u, () => (v())),[o]=Array.isArray(p)?p:[p],l=_react.useRef.call(void 0, void 0),i=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(!0);let c=await o.formControl.trigger(),d=o.getData();c?r&&r({...d},{...o}):t(o.formControl.formState.errors)};return _react.useEffect.call(void 0, ()=>{m&&E(l.current||{},m)&&(o.formControl.reset(m),l.current=m)},[m,o.formControl.reset]),_react.useEffect.call(void 0, ()=>{if(!e)return;let a=o.formControl.watch(e);return()=>a.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, B,{controller:o,onSubmit:r,children:_jsxruntime.jsx.call(void 0, "form",{...f,id:o.formId,ref:o.ref,onSubmit:i,children:s})})})},M=pr;var z=_react.createContext.call(void 0, void 0);function xr(){let r=_react.useContext.call(void 0, z);return r||{}}function $({children:r,...e}){return _jsxruntime.jsx.call(void 0, z.Provider,{value:e,children:r})}var Z=_react.createContext.call(void 0, void 0);function T(){let r=_react.useContext.call(void 0, Z);return r||{}}function I({children:r,...e}){return _jsxruntime.jsx.call(void 0, Z.Provider,{value:e,children:r})}var q=_react.createContext.call(void 0, void 0);function j(){let r=_react.useContext.call(void 0, q);return r||{}}function H({children:r,...e}){return _jsxruntime.jsx.call(void 0, q.Provider,{value:e,children:r})}function w({validationRules:r,label:e}){let{formControl:t,getData:m}=x(),u=[];return r&&(typeof r=="string"?K(r,!0,e,t,m,{}).forEach(s=>u.push(s)):typeof r=="object"&&Object.keys(r).forEach(s=>{let{validate:f}=u.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let o=r[s],l="";if(s==="email"&&!o)return;["match","diff"].includes(s)&&typeof o=="object"&&(o=r[s].dataField,l=r[s].label),o!=null&&K(s,o,e,t,m,f,l).forEach(i=>u.push(i))}else if(typeof r[s]=="object"){let o=r[s];u.push({validate:{...f,[s]:l=>o.validation(l)||o.message&&(typeof o.message=="string"?o.message:o.message(e))}})}})),Object.assign({},...u)}var K=(r,e,t,m,u,s,f)=>{let p=[],{validationMessage:o}=j(),{required:l,minLength:i,maxLength:a,min:c,max:d,email:y,match:U,diff:O,pattern:g}=o||{},C={required:{value:!!e,message:l?l(t):`${t} is required`},minLength:{value:e,message:i?i(t,e):`${t} must be at least ${e} characters long`},maxLength:{value:e,message:a?a(t,e):`${t} cannot be more than ${e} characters long`},min:{value:Number(e),message:c?c(t,e):`${t} should be at least ${e}`},max:{value:Number(e),message:d?d(t,e):`${t} should be at most ${e}`},regexp:(n="")=>n?new RegExp(e.regexp).test(n)||`${t} ${e.message}`:!0,email:(n="")=>n?n.match(/^(([^<>()[\]\\.,;:\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,}))$/)||(y?y(t):`${t} must be type email`):!0,match:(n="")=>n?n===(u&&u(e))||(U?U(t,f||F.changeAll(e)):`${t} must be same with ${f||F.changeAll(e)}`):!0,diff:(n="")=>n?n!==(u&&u(e))||(O?O(t,f||F.changeAll(e)):`${t} must be different with ${f||F.changeAll(e)}`):!0,pattern:{alphabet:(n="")=>!!n&&new RegExp("^[A-Za-z ]*$").test(n)||(_optionalChain([g, 'optionalAccess', _23 => _23.alphabet])?_optionalChain([g, 'optionalAccess', _24 => _24.alphabet, 'call', _25 => _25(t)]):`${t} must be format Alphabet`),alphanumber:(n="")=>!!n&&new RegExp("^[A-Za-z0-9 ]*$").test(n)||(_optionalChain([g, 'optionalAccess', _26 => _26.alphanumber])?_optionalChain([g, 'optionalAccess', _27 => _27.alphanumber, 'call', _28 => _28(t)]):`${t} must be format Alphabet or Number`),number:(n="")=>!!n&&new RegExp("^[0-9]*$").test(n)||(_optionalChain([g, 'optionalAccess', _29 => _29.number])?_optionalChain([g, 'optionalAccess', _30 => _30.number, 'call', _31 => _31(t)]):`${t} must be format Number`),lowercase:(n="")=>!!n&&new RegExp("^[a-z0-9 ]*$").test(n)||(_optionalChain([g, 'optionalAccess', _32 => _32.lowercase])?_optionalChain([g, 'optionalAccess', _33 => _33.lowercase, 'call', _34 => _34(t)]):`${t} must be format Lowercase`),url:(n="")=>!!n&&/^(ftp|http|https):\/\/[^ "]+$/.test(n)||(_optionalChain([g, 'optionalAccess', _35 => _35.url])?_optionalChain([g, 'optionalAccess', _36 => _36.url, 'call', _37 => _37(t)]):`${t} must be a valid URL`),uppercase:(n="")=>!!n&&new RegExp("^[A-Z0-9 ]*$").test(n)||(_optionalChain([g, 'optionalAccess', _38 => _38.uppercase])?_optionalChain([g, 'optionalAccess', _39 => _39.uppercase, 'call', _40 => _40(t)]):`${t} must be format Uppercase`),mixedcase:(n="")=>!!n&&/[a-z]/.test(n)&&/[A-Z]/.test(n)||(_optionalChain([g, 'optionalAccess', _41 => _41.mixedcase])?_optionalChain([g, 'optionalAccess', _42 => _42.mixedcase, 'call', _43 => _43(t)]):`${t} must be mixed case`),specialcharacters:(n="")=>!!n&&/[^a-zA-Z0-9\s]/.test(n)||(_optionalChain([g, 'optionalAccess', _44 => _44.specialcharacters])?_optionalChain([g, 'optionalAccess', _45 => _45.specialcharacters, 'call', _46 => _46(t)]):`${t} must contain special characters`)}}[r];if(C){let{validate:n}=p.find(rr=>rr.validate)||{};typeof C=="function"?p.push({validate:{...n,...s,[r]:C}}):r==="pattern"?p.push({validate:{...n,...s,[`${r}${e}`]:C[e]}}):p.push({[r]:C})}return p};function _({children:r,...e}){let t=_react.useMemo.call(void 0, ()=>h(),[]),{registerItem:m,unregisterItem:u,formControl:s,disabled:f,readOnly:p}=x(),{name:o,formId:l,...i}=T();_react.useEffect.call(void 0, ()=>(m({id:t,...e}),()=>{u(t)}),[t,e]),!e.label&&!e.noLabel&&(e.label=F.changeAll(e.dataField));let a=!1;typeof e.disabled=="boolean"?a=e.disabled:typeof i.disabled=="boolean"?a=i.disabled:a=!!f;let c=!1;typeof e.readOnly=="boolean"?c=e.readOnly:typeof i.readOnly=="boolean"?c=i.readOnly:c=!!p;let d=!1;return typeof e.hidden=="boolean"&&(d=e.hidden),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:s.control&&_jsxruntime.jsx.call(void 0, _reacthookform.Controller,{name:e.dataField,control:s.control,rules:a||c||d?{required:!1}:w(e),render:y=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, $,{...e,controller:y,children:r})})})})}var Q=_react.createContext.call(void 0, void 0);function Gr(r){let e=_react.useContext.call(void 0, Q);if(r){let t=x(),m=_reacthookform.useFieldArray.call(void 0, {control:_optionalChain([t, 'optionalAccess', _47 => _47.formControl, 'access', _48 => _48.control]),name:r});return{formArrayId:"",name:r,index:-1,...m,...t,countFields:m.fields.length,removeItem:()=>{},watchItem:()=>({}),setValueItem:()=>{}}}return e||{}}function G({children:r,...e}){return _jsxruntime.jsx.call(void 0, Q.Provider,{value:e,children:r})}var X=_react.forwardRef.call(void 0, ({name:r,className:e="",defaultData:t,children:m},u)=>{let s=x(),f=_reacthookform.useFieldArray.call(void 0, {control:s.control,name:r});_react.useEffect.call(void 0, ()=>{typeof t=="boolean"&&t?f.append({}):typeof t=="number"&&t>0?f.append([...Array(t).fill(null).map(()=>({}))]):typeof t=="object"&&t&&f.append(t)},[]);let o={formArrayId:_react.useMemo.call(void 0, ()=>h(),[]),...f,...s};return _react.useImperativeHandle.call(void 0, u,()=>o),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:f.fields.map((l,i)=>{let a=`${r}.${i}.`,c={...o,index:i,name:a,countFields:f.fields.length,removeItem:()=>f.remove(i),watchItem:d=>s.watch(d?`${a}${d}`:a.slice(0,-1)),setValueItem:(d,y)=>s.setValue(`${a}${d}`,y)};return _jsxruntime.jsx.call(void 0, "div",{className:e,children:_jsxruntime.jsx.call(void 0, G,{...c,children:k(m,c)})},l.id)})})});X.displayName="BgsFormArray";var Er=X;var V=({children:r,...e})=>{let t=x(),m=_react.useMemo.call(void 0, ()=>h(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, I,{...t,...e,formGroupId:m,children:r})})};V.displayName="BgsFormGroup";var Nr=V;var it=M;exports.BgsArrayForm = Er; exports.BgsController = _; exports.BgsGroupForm = Nr; exports.BgsReactFormProvider = H; exports.default = it; exports.useBgsArrayForm = Gr; exports.useBgsControllerForm = xr; exports.useBgsForm = x; exports.useBgsFormController = v; exports.useBgsGroupForm = T;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
|
-
import React$1, { ReactNode, PropsWithChildren } from 'react';
|
|
2
|
-
import { UseFormReturn, UseFieldArrayReturn, DeepPartialSkipArrayKey, EventType, UseFieldArraySwap, UseFieldArrayMove, UseFieldArrayPrepend, UseFieldArrayAppend, UseFieldArrayRemove, UseFieldArrayInsert, UseFieldArrayUpdate, UseFieldArrayReplace, FieldArrayWithId, ControllerRenderProps, FieldValues, ControllerFieldState, UseFormStateReturn } from 'react-hook-form';
|
|
3
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React$1, { ReactNode, PropsWithChildren } from 'react';
|
|
3
|
+
import { UseFormReturn, UseFieldArrayReturn, DeepPartialSkipArrayKey, EventType, FieldErrors, UseFieldArraySwap, UseFieldArrayMove, UseFieldArrayPrepend, UseFieldArrayAppend, UseFieldArrayRemove, UseFieldArrayInsert, UseFieldArrayUpdate, UseFieldArrayReplace, FieldArrayWithId, ControllerRenderProps, FieldValues, ControllerFieldState, UseFormStateReturn, UseFormProps } from 'react-hook-form';
|
|
4
4
|
|
|
5
5
|
interface FormDefaultProps {
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
readOnly?: boolean;
|
|
8
8
|
name?: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
type FormProps<T = unknown> = Omit<React.FormHTMLAttributes<HTMLFormElement>, "onSubmit" | "onChange"> & FormDefaultProps & {
|
|
11
|
+
formData?: Partial<T> | null;
|
|
12
|
+
controller?: FormRef<T> | FormRef<T>[];
|
|
13
13
|
onSubmit?: OnSubmit<T>;
|
|
14
|
-
className?: string;
|
|
15
14
|
onChange?: (values: T, event: {
|
|
16
15
|
name?: string | undefined;
|
|
17
16
|
type?: EventType | undefined;
|
|
18
17
|
}) => void;
|
|
19
|
-
|
|
18
|
+
onInvalid?: (errors: FieldErrors) => void;
|
|
19
|
+
};
|
|
20
|
+
type TriggerSubmit<T = unknown> = (addValues?: T, validate?: boolean) => void;
|
|
20
21
|
interface FormRef<T = unknown> extends FormDefaultProps, Omit<UseFormReturn, "reset"> {
|
|
21
22
|
reset: (field?: string | string[]) => void;
|
|
22
23
|
updateData: (values: Partial<T>) => void;
|
|
23
24
|
getData: (field?: string) => T;
|
|
24
|
-
triggerSubmit: (addValues?: T, options?: OptionsSubmit) => void;
|
|
25
25
|
formControl: UseFormReturn;
|
|
26
26
|
useFieldArray: (name: string) => UseFieldArrayReturn;
|
|
27
27
|
useWatch: UseWatch<T>;
|
|
28
28
|
isSubmit: boolean;
|
|
29
|
+
setIsSubmit: React.Dispatch<React.SetStateAction<boolean>>;
|
|
29
30
|
formId: string;
|
|
30
31
|
name?: string;
|
|
32
|
+
ref: React.RefObject<HTMLFormElement | null>;
|
|
31
33
|
}
|
|
32
34
|
interface ControllerProps {
|
|
33
35
|
dataField: string;
|
|
@@ -79,9 +81,7 @@ interface Controller$1 {
|
|
|
79
81
|
interface OptionsSubmit {
|
|
80
82
|
validate?: boolean;
|
|
81
83
|
}
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
type OnSubmit<T = any> = (values: T, options: OnSubmitOptions) => void;
|
|
84
|
+
type OnSubmit<T = any> = (values: T, options: FormRef<T>) => void;
|
|
85
85
|
type UseWatch<T = any> = (name: string) => DeepPartialSkipArrayKey<T>;
|
|
86
86
|
interface FormArrayProps<T = any> {
|
|
87
87
|
name: string;
|
|
@@ -116,7 +116,7 @@ interface FormGroupProps {
|
|
|
116
116
|
readOnly?: boolean;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
declare const BgsForm:
|
|
119
|
+
declare const BgsForm: <T>({ onSubmit, onChange, onInvalid, formData, controller: controllerProps, children, ...others }: PropsWithChildren<FormProps<T>>) => react_jsx_runtime.JSX.Element;
|
|
120
120
|
|
|
121
121
|
declare function Controller({ children, ...props }: PropsWithChildren<ControllerProps>): react_jsx_runtime.JSX.Element;
|
|
122
122
|
|
|
@@ -155,12 +155,13 @@ declare function BgsReactFormProvider({ children, ...value }: PropsWithChildren<
|
|
|
155
155
|
type ControllerWithKey = ControllerProps & {
|
|
156
156
|
id: string;
|
|
157
157
|
};
|
|
158
|
-
|
|
158
|
+
type BgsFormProviderReturn<T = unknown> = FormRef<T> & {
|
|
159
159
|
registerItem: (ref: ControllerWithKey) => void;
|
|
160
160
|
unregisterItem: (id: string) => void;
|
|
161
161
|
items: ControllerWithKey[];
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
triggerSubmit: TriggerSubmit<T>;
|
|
163
|
+
};
|
|
164
|
+
declare function useBgsForm<T = unknown>(): BgsFormProviderReturn<T>;
|
|
164
165
|
|
|
165
166
|
interface BgsFormArrayContextData extends FormArrayItem {
|
|
166
167
|
}
|
|
@@ -174,6 +175,8 @@ declare function useBgsFormGroup(): BgsFormGroupData;
|
|
|
174
175
|
interface BgsFormControllerContextData extends ControllerProps {
|
|
175
176
|
controller: Controller$1;
|
|
176
177
|
}
|
|
177
|
-
declare function useBgsFormController<T = unknown>(): BgsFormControllerContextData & T;
|
|
178
|
+
declare function useBgsFormController$1<T = unknown>(): BgsFormControllerContextData & T;
|
|
179
|
+
|
|
180
|
+
declare const useBgsFormController: <T = unknown>(defaultValues?: Partial<T> | undefined, options?: UseFormProps) => FormRef<T>[];
|
|
178
181
|
|
|
179
|
-
export { FormArray as BgsArrayForm, Controller as BgsController, type BgsFormType, FormGroup as BgsGroupForm, BgsReactFormProvider, type Children, type Controller$1 as Controller, type ControllerProps, type FormArrayItem, type FormArrayProps, type FormArrayRef, type FormGroupProps, type FormProps, type FormRef, type OnSubmit, type OptionsSubmit, type ValidationCallback, type ValidationOptions, type ValidationRules, BgsForm as default, useBgsFormArray as useBgsArrayForm, useBgsFormController as useBgsControllerForm, useBgsForm, useBgsFormGroup as useBgsGroupForm };
|
|
182
|
+
export { FormArray as BgsArrayForm, Controller as BgsController, type BgsFormType, FormGroup as BgsGroupForm, BgsReactFormProvider, type Children, type Controller$1 as Controller, type ControllerProps, type FormArrayItem, type FormArrayProps, type FormArrayRef, type FormGroupProps, type FormProps, type FormRef, type OnSubmit, type OptionsSubmit, type TriggerSubmit, type ValidationCallback, type ValidationOptions, type ValidationRules, BgsForm as default, useBgsFormArray as useBgsArrayForm, useBgsFormController$1 as useBgsControllerForm, useBgsForm, useBgsFormController, useBgsFormGroup as useBgsGroupForm };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
|
-
import React$1, { ReactNode, PropsWithChildren } from 'react';
|
|
2
|
-
import { UseFormReturn, UseFieldArrayReturn, DeepPartialSkipArrayKey, EventType, UseFieldArraySwap, UseFieldArrayMove, UseFieldArrayPrepend, UseFieldArrayAppend, UseFieldArrayRemove, UseFieldArrayInsert, UseFieldArrayUpdate, UseFieldArrayReplace, FieldArrayWithId, ControllerRenderProps, FieldValues, ControllerFieldState, UseFormStateReturn } from 'react-hook-form';
|
|
3
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import React$1, { ReactNode, PropsWithChildren } from 'react';
|
|
3
|
+
import { UseFormReturn, UseFieldArrayReturn, DeepPartialSkipArrayKey, EventType, FieldErrors, UseFieldArraySwap, UseFieldArrayMove, UseFieldArrayPrepend, UseFieldArrayAppend, UseFieldArrayRemove, UseFieldArrayInsert, UseFieldArrayUpdate, UseFieldArrayReplace, FieldArrayWithId, ControllerRenderProps, FieldValues, ControllerFieldState, UseFormStateReturn, UseFormProps } from 'react-hook-form';
|
|
4
4
|
|
|
5
5
|
interface FormDefaultProps {
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
readOnly?: boolean;
|
|
8
8
|
name?: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
type FormProps<T = unknown> = Omit<React.FormHTMLAttributes<HTMLFormElement>, "onSubmit" | "onChange"> & FormDefaultProps & {
|
|
11
|
+
formData?: Partial<T> | null;
|
|
12
|
+
controller?: FormRef<T> | FormRef<T>[];
|
|
13
13
|
onSubmit?: OnSubmit<T>;
|
|
14
|
-
className?: string;
|
|
15
14
|
onChange?: (values: T, event: {
|
|
16
15
|
name?: string | undefined;
|
|
17
16
|
type?: EventType | undefined;
|
|
18
17
|
}) => void;
|
|
19
|
-
|
|
18
|
+
onInvalid?: (errors: FieldErrors) => void;
|
|
19
|
+
};
|
|
20
|
+
type TriggerSubmit<T = unknown> = (addValues?: T, validate?: boolean) => void;
|
|
20
21
|
interface FormRef<T = unknown> extends FormDefaultProps, Omit<UseFormReturn, "reset"> {
|
|
21
22
|
reset: (field?: string | string[]) => void;
|
|
22
23
|
updateData: (values: Partial<T>) => void;
|
|
23
24
|
getData: (field?: string) => T;
|
|
24
|
-
triggerSubmit: (addValues?: T, options?: OptionsSubmit) => void;
|
|
25
25
|
formControl: UseFormReturn;
|
|
26
26
|
useFieldArray: (name: string) => UseFieldArrayReturn;
|
|
27
27
|
useWatch: UseWatch<T>;
|
|
28
28
|
isSubmit: boolean;
|
|
29
|
+
setIsSubmit: React.Dispatch<React.SetStateAction<boolean>>;
|
|
29
30
|
formId: string;
|
|
30
31
|
name?: string;
|
|
32
|
+
ref: React.RefObject<HTMLFormElement | null>;
|
|
31
33
|
}
|
|
32
34
|
interface ControllerProps {
|
|
33
35
|
dataField: string;
|
|
@@ -79,9 +81,7 @@ interface Controller$1 {
|
|
|
79
81
|
interface OptionsSubmit {
|
|
80
82
|
validate?: boolean;
|
|
81
83
|
}
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
type OnSubmit<T = any> = (values: T, options: OnSubmitOptions) => void;
|
|
84
|
+
type OnSubmit<T = any> = (values: T, options: FormRef<T>) => void;
|
|
85
85
|
type UseWatch<T = any> = (name: string) => DeepPartialSkipArrayKey<T>;
|
|
86
86
|
interface FormArrayProps<T = any> {
|
|
87
87
|
name: string;
|
|
@@ -116,7 +116,7 @@ interface FormGroupProps {
|
|
|
116
116
|
readOnly?: boolean;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
declare const BgsForm:
|
|
119
|
+
declare const BgsForm: <T>({ onSubmit, onChange, onInvalid, formData, controller: controllerProps, children, ...others }: PropsWithChildren<FormProps<T>>) => react_jsx_runtime.JSX.Element;
|
|
120
120
|
|
|
121
121
|
declare function Controller({ children, ...props }: PropsWithChildren<ControllerProps>): react_jsx_runtime.JSX.Element;
|
|
122
122
|
|
|
@@ -155,12 +155,13 @@ declare function BgsReactFormProvider({ children, ...value }: PropsWithChildren<
|
|
|
155
155
|
type ControllerWithKey = ControllerProps & {
|
|
156
156
|
id: string;
|
|
157
157
|
};
|
|
158
|
-
|
|
158
|
+
type BgsFormProviderReturn<T = unknown> = FormRef<T> & {
|
|
159
159
|
registerItem: (ref: ControllerWithKey) => void;
|
|
160
160
|
unregisterItem: (id: string) => void;
|
|
161
161
|
items: ControllerWithKey[];
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
triggerSubmit: TriggerSubmit<T>;
|
|
163
|
+
};
|
|
164
|
+
declare function useBgsForm<T = unknown>(): BgsFormProviderReturn<T>;
|
|
164
165
|
|
|
165
166
|
interface BgsFormArrayContextData extends FormArrayItem {
|
|
166
167
|
}
|
|
@@ -174,6 +175,8 @@ declare function useBgsFormGroup(): BgsFormGroupData;
|
|
|
174
175
|
interface BgsFormControllerContextData extends ControllerProps {
|
|
175
176
|
controller: Controller$1;
|
|
176
177
|
}
|
|
177
|
-
declare function useBgsFormController<T = unknown>(): BgsFormControllerContextData & T;
|
|
178
|
+
declare function useBgsFormController$1<T = unknown>(): BgsFormControllerContextData & T;
|
|
179
|
+
|
|
180
|
+
declare const useBgsFormController: <T = unknown>(defaultValues?: Partial<T> | undefined, options?: UseFormProps) => FormRef<T>[];
|
|
178
181
|
|
|
179
|
-
export { FormArray as BgsArrayForm, Controller as BgsController, type BgsFormType, FormGroup as BgsGroupForm, BgsReactFormProvider, type Children, type Controller$1 as Controller, type ControllerProps, type FormArrayItem, type FormArrayProps, type FormArrayRef, type FormGroupProps, type FormProps, type FormRef, type OnSubmit, type OptionsSubmit, type ValidationCallback, type ValidationOptions, type ValidationRules, BgsForm as default, useBgsFormArray as useBgsArrayForm, useBgsFormController as useBgsControllerForm, useBgsForm, useBgsFormGroup as useBgsGroupForm };
|
|
182
|
+
export { FormArray as BgsArrayForm, Controller as BgsController, type BgsFormType, FormGroup as BgsGroupForm, BgsReactFormProvider, type Children, type Controller$1 as Controller, type ControllerProps, type FormArrayItem, type FormArrayProps, type FormArrayRef, type FormGroupProps, type FormProps, type FormRef, type OnSubmit, type OptionsSubmit, type TriggerSubmit, type ValidationCallback, type ValidationOptions, type ValidationRules, BgsForm as default, useBgsFormArray as useBgsArrayForm, useBgsFormController$1 as useBgsControllerForm, useBgsForm, useBgsFormController, useBgsFormGroup as useBgsGroupForm };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useEffect as N,useRef as ur}from"react";import{createContext as er,useCallback as D,useContext as tr,useRef as or}from"react";import{jsx as nr}from"react/jsx-runtime";var S=er(void 0);function x(){let r=tr(S);return r||{}}function B({children:r,controller:e,onSubmit:t}){let m=or([]),u=D(o=>{let l=m.current.findIndex(i=>i.id===o.id);if(l>-1){let i=[...m.current];i[l]=o,m.current=[...i]}else m.current.push(o)},[m]),s=D(o=>{m.current=m.current.filter(l=>l.id!==o)},[]),f=async(o,l)=>{e.setIsSubmit(!0);let i=l?await e.formControl.trigger():!0,a=e.getData();i&&t&&t({...a,...o},{...e})},p={...e,registerItem:u,unregisterItem:s,items:m.current,triggerSubmit:f};return nr(S.Provider,{value:p,children:r})}function h(){let r=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>(e==="x"?r():r()&3|8).toString(16))}function k(r,e){return typeof r=="function"?r(e):r}var F={camelCase:(r="")=>(r=r.split(".").map(e=>(e=e.charAt(0).toUpperCase()+e.slice(1),e)).join(" "),r=r.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),r.charAt(0).toUpperCase()+r.slice(1)),snackCase:(r="")=>{let t=r.replace(/_([a-z])/g,(m,u)=>u.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(r="",e=!1)=>{let t="";try{r=r?.split(".")[r?.split(".")?.length-1],r=r?.split("[]")[r?.split("[]")?.length-1],t=F.snackCase(F.camelCase(r)),e&&(t=t?.split(" ")?.map(m=>m?.length<=3?m?.toUpperCase():m)?.join(" "))}catch{}return t}};function E(r,e){try{return JSON.stringify(r)!==JSON.stringify(e)}catch{return!1}}var P=r=>(Object.keys(r).forEach(e=>{r[e]===void 0&&(r[e]=null)}),r),A=(r,e)=>r?e.includes(".")?A(r[e.substring(0,e.indexOf("."))],e.substring(e.indexOf(".")+1)):r?r[e]:null:"";function L(r,e){let t=!1;return r&&typeof r=="object"&&Array.isArray(r)&&(typeof e=="number"?r.length>e&&(t=!0):t=!0),t}import{useFieldArray as sr,useForm as ir,useWatch as mr}from"react-hook-form";import{useMemo as ar,useRef as fr,useState as lr}from"react";var v=(r,e)=>{r||(r={});let t=fr(null),[m,u]=lr(!1),s=ir({...e,reValidateMode:"onSubmit",mode:"all",defaultValues:r}),f=ar(()=>h(),[]),p=i=>i?A(P(s.getValues()),i):P(s.getValues()),l={...s,ref:t,reset:i=>{i?typeof i=="string"?s.resetField(i,{}):typeof i=="object"&&L(i,0)&&i.forEach(a=>s.resetField(a)):s.reset()},updateData:i=>{let a=p();s.reset({...a,...i})},getData:p,formControl:s,useFieldArray:i=>sr({control:s.control,name:i}),useWatch:i=>mr({control:s.control,name:i}),isSubmit:m,formId:f,setIsSubmit:u};return[l,l]};import{Fragment as gr,jsx as R}from"react/jsx-runtime";var pr=({onSubmit:r,onChange:e=()=>{},onInvalid:t=()=>{},formData:m,controller:u,children:s,...f})=>{let p=u??v(),[o]=Array.isArray(p)?p:[p],l=ur(void 0),i=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(!0);let c=await o.formControl.trigger(),d=o.getData();c?r&&r({...d},{...o}):t(o.formControl.formState.errors)};return N(()=>{m&&E(l.current||{},m)&&(o.formControl.reset(m),l.current=m)},[m,o.formControl.reset]),N(()=>{if(!e)return;let a=o.formControl.watch(e);return()=>a.unsubscribe()},[]),R(gr,{children:R(B,{controller:o,onSubmit:r,children:R("form",{...f,id:o.formId,ref:o.ref,onSubmit:i,children:s})})})},M=pr;import{useEffect as Ar,useMemo as Rr}from"react";import{createContext as cr,useContext as dr}from"react";import{jsx as Fr}from"react/jsx-runtime";var z=cr(void 0);function xr(){let r=dr(z);return r||{}}function $({children:r,...e}){return Fr(z.Provider,{value:e,children:r})}import{Controller as $r}from"react-hook-form";import{createContext as hr,useContext as yr}from"react";import{jsx as Cr}from"react/jsx-runtime";var Z=hr(void 0);function T(){let r=yr(Z);return r||{}}function I({children:r,...e}){return Cr(Z.Provider,{value:e,children:r})}import{createContext as br,useContext as Br}from"react";import{jsx as Pr}from"react/jsx-runtime";var q=br(void 0);function j(){let r=Br(q);return r||{}}function H({children:r,...e}){return Pr(q.Provider,{value:e,children:r})}function w({validationRules:r,label:e}){let{formControl:t,getData:m}=x(),u=[];return r&&(typeof r=="string"?K(r,!0,e,t,m,{}).forEach(s=>u.push(s)):typeof r=="object"&&Object.keys(r).forEach(s=>{let{validate:f}=u.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let o=r[s],l="";if(s==="email"&&!o)return;["match","diff"].includes(s)&&typeof o=="object"&&(o=r[s].dataField,l=r[s].label),o!=null&&K(s,o,e,t,m,f,l).forEach(i=>u.push(i))}else if(typeof r[s]=="object"){let o=r[s];u.push({validate:{...f,[s]:l=>o.validation(l)||o.message&&(typeof o.message=="string"?o.message:o.message(e))}})}})),Object.assign({},...u)}var K=(r,e,t,m,u,s,f)=>{let p=[],{validationMessage:o}=j(),{required:l,minLength:i,maxLength:a,min:c,max:d,email:y,match:U,diff:O,pattern:g}=o||{},C={required:{value:!!e,message:l?l(t):`${t} is required`},minLength:{value:e,message:i?i(t,e):`${t} must be at least ${e} characters long`},maxLength:{value:e,message:a?a(t,e):`${t} cannot be more than ${e} characters long`},min:{value:Number(e),message:c?c(t,e):`${t} should be at least ${e}`},max:{value:Number(e),message:d?d(t,e):`${t} should be at most ${e}`},regexp:(n="")=>n?new RegExp(e.regexp).test(n)||`${t} ${e.message}`:!0,email:(n="")=>n?n.match(/^(([^<>()[\]\\.,;:\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,}))$/)||(y?y(t):`${t} must be type email`):!0,match:(n="")=>n?n===(u&&u(e))||(U?U(t,f||F.changeAll(e)):`${t} must be same with ${f||F.changeAll(e)}`):!0,diff:(n="")=>n?n!==(u&&u(e))||(O?O(t,f||F.changeAll(e)):`${t} must be different with ${f||F.changeAll(e)}`):!0,pattern:{alphabet:(n="")=>!!n&&new RegExp("^[A-Za-z ]*$").test(n)||(g?.alphabet?g?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(n="")=>!!n&&new RegExp("^[A-Za-z0-9 ]*$").test(n)||(g?.alphanumber?g?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(n="")=>!!n&&new RegExp("^[0-9]*$").test(n)||(g?.number?g?.number(t):`${t} must be format Number`),lowercase:(n="")=>!!n&&new RegExp("^[a-z0-9 ]*$").test(n)||(g?.lowercase?g?.lowercase(t):`${t} must be format Lowercase`),url:(n="")=>!!n&&/^(ftp|http|https):\/\/[^ "]+$/.test(n)||(g?.url?g?.url(t):`${t} must be a valid URL`),uppercase:(n="")=>!!n&&new RegExp("^[A-Z0-9 ]*$").test(n)||(g?.uppercase?g?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(n="")=>!!n&&/[a-z]/.test(n)&&/[A-Z]/.test(n)||(g?.mixedcase?g?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(n="")=>!!n&&/[^a-zA-Z0-9\s]/.test(n)||(g?.specialcharacters?g?.specialcharacters(t):`${t} must contain special characters`)}}[r];if(C){let{validate:n}=p.find(rr=>rr.validate)||{};typeof C=="function"?p.push({validate:{...n,...s,[r]:C}}):r==="pattern"?p.push({validate:{...n,...s,[`${r}${e}`]:C[e]}}):p.push({[r]:C})}return p};import{Fragment as J,jsx as b}from"react/jsx-runtime";function _({children:r,...e}){let t=Rr(()=>h(),[]),{registerItem:m,unregisterItem:u,formControl:s,disabled:f,readOnly:p}=x(),{name:o,formId:l,...i}=T();Ar(()=>(m({id:t,...e}),()=>{u(t)}),[t,e]),!e.label&&!e.noLabel&&(e.label=F.changeAll(e.dataField));let a=!1;typeof e.disabled=="boolean"?a=e.disabled:typeof i.disabled=="boolean"?a=i.disabled:a=!!f;let c=!1;typeof e.readOnly=="boolean"?c=e.readOnly:typeof i.readOnly=="boolean"?c=i.readOnly:c=!!p;let d=!1;return typeof e.hidden=="boolean"&&(d=e.hidden),b(J,{children:s.control&&b($r,{name:e.dataField,control:s.control,rules:a||c||d?{required:!1}:w(e),render:y=>b(J,{children:b($,{...e,controller:y,children:r})})})})}import{forwardRef as Ur,useEffect as Or,useImperativeHandle as Dr,useMemo as Sr}from"react";import{useFieldArray as kr}from"react-hook-form";import{createContext as Tr,useContext as Ir}from"react";import{useFieldArray as wr}from"react-hook-form";import{jsx as Wr}from"react/jsx-runtime";var Q=Tr(void 0);function Gr(r){let e=Ir(Q);if(r){let t=x(),m=wr({control:t?.formControl.control,name:r});return{formArrayId:"",name:r,index:-1,...m,...t,countFields:m.fields.length,removeItem:()=>{},watchItem:()=>({}),setValueItem:()=>{}}}return e||{}}function G({children:r,...e}){return Wr(Q.Provider,{value:e,children:r})}import{Fragment as Lr,jsx as W}from"react/jsx-runtime";var X=Ur(({name:r,className:e="",defaultData:t,children:m},u)=>{let s=x(),f=kr({control:s.control,name:r});Or(()=>{typeof t=="boolean"&&t?f.append({}):typeof t=="number"&&t>0?f.append([...Array(t).fill(null).map(()=>({}))]):typeof t=="object"&&t&&f.append(t)},[]);let o={formArrayId:Sr(()=>h(),[]),...f,...s};return Dr(u,()=>o),W(Lr,{children:f.fields.map((l,i)=>{let a=`${r}.${i}.`,c={...o,index:i,name:a,countFields:f.fields.length,removeItem:()=>f.remove(i),watchItem:d=>s.watch(d?`${a}${d}`:a.slice(0,-1)),setValueItem:(d,y)=>s.setValue(`${a}${d}`,y)};return W("div",{className:e,children:W(G,{...c,children:k(m,c)})},l.id)})})});X.displayName="BgsFormArray";var Er=X;import{useMemo as vr}from"react";import{Fragment as Mr,jsx as Y}from"react/jsx-runtime";var V=({children:r,...e})=>{let t=x(),m=vr(()=>h(),[]);return Y(Mr,{children:Y(I,{...t,...e,formGroupId:m,children:r})})};V.displayName="BgsFormGroup";var Nr=V;var it=M;export{Er as BgsArrayForm,_ as BgsController,Nr as BgsGroupForm,H as BgsReactFormProvider,it as default,Gr as useBgsArrayForm,xr as useBgsControllerForm,x as useBgsForm,v as useBgsFormController,T as useBgsGroupForm};
|
package/package.json
CHANGED