@bgscore/react-form 0.0.19 → 0.0.21
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 +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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 G=_react.createContext.call(void 0, void 0);function y(){let r=_react.useContext.call(void 0, G);return r||{}}function U({children:r,controller:e,onSubmit:t}){let i=_react.useRef.call(void 0, []),a=_react.useCallback.call(void 0, o=>{let u=i.current.findIndex(p=>p.id===o.id);if(u>-1){let p=[...i.current];p[u]=o,i.current=[...p]}else i.current.push(o)},[i]),s=_react.useCallback.call(void 0, o=>{i.current=i.current.filter(u=>u.id!==o)},[]),d=async(o,u)=>{e.setIsSubmit(!0);let p=u?await e.formControl.trigger():!0,c=e.getData();p&&t&&t({...c,...o},{...e})},m={...e,registerItem:a,unregisterItem:s,items:i.current,triggerSubmit:d};return _jsxruntime.jsx.call(void 0, G.Provider,{value:m,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,(i,a)=>a.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(i=>_optionalChain([i, 'optionalAccess', _18 => _18.length])<=3?_optionalChain([i, 'optionalAccess', _19 => _19.toUpperCase, 'call', _20 => _20()]):i), '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 T=r=>(Object.keys(r).forEach(e=>{r[e]===void 0&&(r[e]=null)}),r),C= exports.getFieldValue =(r,e,t="")=>{if(!r)return t;if(r.hasOwnProperty(e))return r[e];let i=e.replace(/\[(\d+)\]/g,".$1").split("."),a=r;for(let s of i){if(a==null)return t;a=a[s]}return a===void 0?t:a};function D(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 E=(r,e)=>{r||(r={});let t=_react.useRef.call(void 0, null),[i,a]=_react.useState.call(void 0, !1),[s,d]=_react.useState.call(void 0, {}),m=_reacthookform.useForm.call(void 0, {...e,reValidateMode:"onSubmit",mode:"all",defaultValues:r}),o=_react.useMemo.call(void 0, ()=>h(),[]),u=l=>l?C(T(m.getValues()),l):T(m.getValues()),c={...m,ref:t,reset:l=>{l?typeof l=="string"?m.resetField(l,{}):typeof l=="object"&&D(l,0)&&l.forEach(g=>m.resetField(g)):m.reset()},updateData:l=>{let g=u();m.reset({...g,...l})},getData:u,formControl:m,useFieldArray:l=>_reacthookform.useFieldArray.call(void 0, {control:m.control,name:l}),useWatch:l=>_reacthookform.useWatch.call(void 0, {control:m.control,name:l}),isSubmit:i,formId:o,setIsSubmit:a,useSelected:l=>C(s,l),setSelected:d,selected:s};return[c,c]};var de=({onSubmit:r,onChange:e=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:s,...d})=>{let m=_nullishCoalesce(a, () => (E())),[o]=Array.isArray(m)?m:[m],u=_react.useRef.call(void 0, void 0),p=async c=>{c.preventDefault(),c.stopPropagation(),o.setIsSubmit(!0);let l=await o.formControl.trigger(),g=o.getData();l?r&&r({...g},{...o}):t(o.formControl.formState.errors)};return _react.useEffect.call(void 0, ()=>{i&&N(u.current||{},i)&&(o.formControl.reset(i),u.current=i)},[i,o.formControl.reset]),_react.useEffect.call(void 0, ()=>{if(!e)return;let c=o.formControl.watch(e);return()=>c.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, U,{controller:{...o,disabled:_optionalChain([d, 'optionalAccess', _23 => _23.disabled]),readOnly:_optionalChain([d, 'optionalAccess', _24 => _24.readOnly])},onSubmit:r,children:_jsxruntime.jsx.call(void 0, "form",{...d,id:o.formId,ref:o.ref,onSubmit:p,children:s})})})},M=de;var z=_react.createContext.call(void 0, void 0);function Fe(){let r=_react.useContext.call(void 0, z);return r||{}}function R({children:r,...e}){return _jsxruntime.jsx.call(void 0, z.Provider,{value:e,children:r})}var Z=r=>{let e=y(),t=_reacthookform.useFieldArray.call(void 0, {control:e.control,name:r}),a={formArrayId:_react.useMemo.call(void 0, ()=>h(),[]),...t,...e};return[a,a]};var H=({name:r,defaultData:e,controller:t,children:i})=>{let a=_nullishCoalesce(t, () => (Z(r))),[s]=Array.isArray(a)?a:[a];return _react.useEffect.call(void 0, ()=>{typeof e=="boolean"&&e?s.append({}):typeof e=="number"&&e>0?s.append([...Array(e).fill(null).map(()=>({}))]):typeof e=="object"&&e&&s.append(e)},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:s.fields.map((d,m)=>{let o=`${r}.${m}.`,u={...s,index:m,name:o,countFields:s.fields.length,removeItem:()=>s.remove(m),watchItem:p=>s.watch(p?`${o}${p}`:o.slice(0,-1)),setValueItem:(p,c)=>s.setValue(`${o}${p}`,c),useSelectedItem:p=>s.useSelected(`${o}${p}`)};return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, R,{...u,children:k(i,u)},d.id)})})})};H.displayName="BgsFormArray";var Ae=H;var j=_react.createContext.call(void 0, void 0);function Pe(){let r=_react.useContext.call(void 0, j);return r||{}}function S({children:r,...e}){return _jsxruntime.jsx.call(void 0, j.Provider,{value:e,children:r})}var J=_react.createContext.call(void 0, void 0);function $(){let r=_react.useContext.call(void 0, J);return r||{}}function w({children:r,...e}){return _jsxruntime.jsx.call(void 0, J.Provider,{value:e,children:r})}var _=_react.createContext.call(void 0, void 0);function Q(){let r=_react.useContext.call(void 0, _);return r||{}}function X({children:r,...e}){return _jsxruntime.jsx.call(void 0, _.Provider,{value:e,children:r})}function B({validationRules:r,label:e}){let{formControl:t,getData:i}=y(),a=[];return r&&(typeof r=="string"?Y(r,!0,e,t,i,{}).forEach(s=>a.push(s)):typeof r=="object"&&Object.keys(r).forEach(s=>{let{validate:d}=a.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(s)){let o=r[s],u="";if(s==="email"&&!o)return;["match","diff"].includes(s)&&typeof o=="object"&&(o=r[s].dataField,u=r[s].label),o!=null&&Y(s,o,e,t,i,d,u).forEach(p=>a.push(p))}else if(typeof r[s]=="object"){let o=r[s];a.push({validate:{...d,[s]:u=>o.validation(u)||o.message&&(typeof o.message=="string"?o.message:o.message(e))}})}})),Object.assign({},...a)}var Y=(r,e,t,i,a,s,d)=>{let m=[],{validationMessage:o}=Q(),{required:u,minLength:p,maxLength:c,min:l,max:g,email:b,match:O,diff:v,pattern:f}=o||{},x={required:{value:!!e,message:u?u(t):`${t} is required`},minLength:{value:e,message:p?p(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:l?l(t,e):`${t} should be at least ${e}`},max:{value:Number(e),message:g?g(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,}))$/)||(b?b(t):`${t} must be type email`):!0,match:(n="")=>n?n===(a&&a(e))||(O?O(t,d||F.changeAll(e)):`${t} must be same with ${d||F.changeAll(e)}`):!0,diff:(n="")=>n?n!==(a&&a(e))||(v?v(t,d||F.changeAll(e)):`${t} must be different with ${d||F.changeAll(e)}`):!0,pattern:{alphabet:(n="")=>!!n&&new RegExp("^[A-Za-z ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _25 => _25.alphabet])?_optionalChain([f, 'optionalAccess', _26 => _26.alphabet, 'call', _27 => _27(t)]):`${t} must be format Alphabet`),alphanumber:(n="")=>!!n&&new RegExp("^[A-Za-z0-9 ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _28 => _28.alphanumber])?_optionalChain([f, 'optionalAccess', _29 => _29.alphanumber, 'call', _30 => _30(t)]):`${t} must be format Alphabet or Number`),number:(n="")=>!!n&&new RegExp("^[0-9]*$").test(n)||(_optionalChain([f, 'optionalAccess', _31 => _31.number])?_optionalChain([f, 'optionalAccess', _32 => _32.number, 'call', _33 => _33(t)]):`${t} must be format Number`),lowercase:(n="")=>!!n&&new RegExp("^[a-z0-9 ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _34 => _34.lowercase])?_optionalChain([f, 'optionalAccess', _35 => _35.lowercase, 'call', _36 => _36(t)]):`${t} must be format Lowercase`),url:(n="")=>!!n&&/^(ftp|http|https):\/\/[^ "]+$/.test(n)||(_optionalChain([f, 'optionalAccess', _37 => _37.url])?_optionalChain([f, 'optionalAccess', _38 => _38.url, 'call', _39 => _39(t)]):`${t} must be a valid URL`),uppercase:(n="")=>!!n&&new RegExp("^[A-Z0-9 ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _40 => _40.uppercase])?_optionalChain([f, 'optionalAccess', _41 => _41.uppercase, 'call', _42 => _42(t)]):`${t} must be format Uppercase`),mixedcase:(n="")=>!!n&&/[a-z]/.test(n)&&/[A-Z]/.test(n)||(_optionalChain([f, 'optionalAccess', _43 => _43.mixedcase])?_optionalChain([f, 'optionalAccess', _44 => _44.mixedcase, 'call', _45 => _45(t)]):`${t} must be mixed case`),specialcharacters:(n="")=>!!n&&/[^a-zA-Z0-9\s]/.test(n)||(_optionalChain([f, 'optionalAccess', _46 => _46.specialcharacters])?_optionalChain([f, 'optionalAccess', _47 => _47.specialcharacters, 'call', _48 => _48(t)]):`${t} must contain special characters`)}}[r];if(x){let{validate:n}=m.find(te=>te.validate)||{};typeof x=="function"?m.push({validate:{...n,...s,[r]:x}}):r==="pattern"?m.push({validate:{...n,...s,[`${r}${e}`]:x[e]}}):m.push({[r]:x})}return m};var ke=({children:r,...e})=>{let t=_react.useMemo.call(void 0, ()=>h(),[]),{registerItem:i,unregisterItem:a,formControl:s,disabled:d,readOnly:m}=y(),{name:o,formId:u,...p}=$();_react.useEffect.call(void 0, ()=>(i({id:t,...e}),()=>{a(t)}),[t,e]),!e.label&&!e.noLabel&&(e.label=F.changeAll(e.dataField));let c=!1;typeof e.disabled=="boolean"?c=e.disabled:typeof p.disabled=="boolean"?c=p.disabled:c=!!d;let l=!1;typeof e.readOnly=="boolean"?l=e.readOnly:typeof p.readOnly=="boolean"?l=p.readOnly:l=!!m;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||l||g?{required:!1}:B(e),render:b=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, S,{...e,controller:b,children:r})})})})},Ne= exports.BgsController =ke;var re=({children:r,...e})=>{let t=y(),i=_react.useMemo.call(void 0, ()=>h(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, w,{...t,...e,formGroupId:i,children:r})})};re.displayName="BgsFormGroup";var Le=re;var Ke=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Ke||{});var st=M;exports.BgsArrayForm = Ae; exports.BgsController = Ne; exports.BgsGroupForm = Le; exports.BgsReactFormProvider = X; exports.PatternTypeEnum = Ke; exports.default = st; exports.getFieldValue = C; exports.useBgsArrayForm = Fe; exports.useBgsControllerForm = Pe; exports.useBgsForm = y; exports.useBgsGroupForm = $; exports.useFormArrayInit = Z; exports.useFormInit = E;
|
|
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 G=_react.createContext.call(void 0, void 0);function y(){let r=_react.useContext.call(void 0, G);return r||{}}function P({children:r,controller:e,onSubmit:t}){let i=_react.useRef.call(void 0, []),a=_react.useCallback.call(void 0, o=>{let l=i.current.findIndex(u=>u.id===o.id);if(l>-1){let u=[...i.current];u[l]=o,i.current=[...u]}else i.current.push(o)},[i]),s=_react.useCallback.call(void 0, o=>{i.current=i.current.filter(l=>l.id!==o)},[]),c=async(o,l)=>{e.setIsSubmit(!0);let u=l?await e.formControl.trigger():!0,d=e.getData();u&&t&&t({...d,...o},{...e})},m={...e,registerItem:a,unregisterItem:s,items:i.current,triggerSubmit:c};return _jsxruntime.jsx.call(void 0, G.Provider,{value:m,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,(i,a)=>a.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(i=>_optionalChain([i, 'optionalAccess', _18 => _18.length])<=3?_optionalChain([i, 'optionalAccess', _19 => _19.toUpperCase, 'call', _20 => _20()]):i), '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 R=r=>(Object.keys(r).forEach(e=>{r[e]===void 0&&(r[e]=null)}),r),U= exports.getFieldValue =(r,e,t="")=>{if(!r)return t;if(r.hasOwnProperty(e))return r[e];let i=e.replace(/\[(\d+)\]/g,".$1").split("."),a=r;for(let s of i){if(a==null)return t;a=a[s]}return a===void 0?t:a};function D(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 E=(r,e)=>{r||(r={});let t=_react.useRef.call(void 0, null),[i,a]=_react.useState.call(void 0, !1),[s,c]=_react.useState.call(void 0, {}),m=_reacthookform.useForm.call(void 0, {...e,reValidateMode:"onSubmit",mode:"all",defaultValues:r}),o=_react.useMemo.call(void 0, ()=>h(),[]),l=p=>p?U(R(m.getValues()),p):R(m.getValues()),d={...m,ref:t,reset:p=>{p?typeof p=="string"?m.resetField(p,{}):typeof p=="object"&&D(p,0)&&p.forEach(g=>m.resetField(g)):m.reset()},updateData:p=>{let g=l();m.reset({...g,...p})},getData:l,formControl:m,useFieldArray:p=>_reacthookform.useFieldArray.call(void 0, {control:m.control,name:p}),useWatch:p=>_reacthookform.useWatch.call(void 0, {control:m.control,name:p}),isSubmit:i,formId:o,setIsSubmit:a,useSelected:p=>U(s,p),setSelected:c,selected:s};return[d,d]};var fe=({onSubmit:r,onChange:e=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:s,...c})=>{let m=_nullishCoalesce(a, () => (E())),[o]=Array.isArray(m)?m:[m],l=_react.useRef.call(void 0, void 0),u=async d=>{d.preventDefault(),d.stopPropagation(),o.setIsSubmit(!0);let p=await o.formControl.trigger(),g=o.getData();p?r&&r({...g},{...o}):t(o.formControl.formState.errors)};return _react.useEffect.call(void 0, ()=>{i&&N(l.current||{},i)&&(o.formControl.reset(i),l.current=i)},[i,o.formControl.reset]),_react.useEffect.call(void 0, ()=>{if(!e)return;let d=o.formControl.watch(e);return()=>d.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, P,{controller:{...o,disabled:_optionalChain([c, 'optionalAccess', _23 => _23.disabled]),readOnly:_optionalChain([c, 'optionalAccess', _24 => _24.readOnly])},onSubmit:r,children:_jsxruntime.jsx.call(void 0, "form",{...c,id:o.formId,ref:o.ref,onSubmit:u,children:s})})})},M=fe;var z=_react.createContext.call(void 0, void 0);function $(){let r=_react.useContext.call(void 0, z);return r||{}}function S({children:r,...e}){return _jsxruntime.jsx.call(void 0, z.Provider,{value:e,children:r})}var Z=r=>{let e=y(),t=_reacthookform.useFieldArray.call(void 0, {control:e.control,name:r}),a={formArrayId:_react.useMemo.call(void 0, ()=>h(),[]),...t,...e};return[a,a]};var j=({name:r,defaultData:e,controller:t,children:i})=>{let a=_nullishCoalesce(t, () => (Z(r))),[s]=Array.isArray(a)?a:[a];return _react.useEffect.call(void 0, ()=>{typeof e=="boolean"&&e?s.append({}):typeof e=="number"&&e>0?s.append([...Array(e).fill(null).map(()=>({}))]):typeof e=="object"&&e&&s.append(e)},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:s.fields.map((c,m)=>{let o=`${r}.${m}.`,l={...s,index:m,name:o,countFields:s.fields.length,removeItem:()=>s.remove(m),watchItem:u=>s.watch(u?`${o}${u}`:o.slice(0,-1)),setValueItem:(u,d)=>s.setValue(`${o}${u}`,d),useSelectedItem:u=>s.useSelected(`${o}${u}`)};return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_react.createElement.call(void 0, S,{...l,key:c.id||m},k(i,l))})})})};j.displayName="BgsFormArray";var Ae=j;var J=_react.createContext.call(void 0, void 0);function Re(){let r=_react.useContext.call(void 0, J);return r||{}}function w({children:r,...e}){return _jsxruntime.jsx.call(void 0, J.Provider,{value:e,children:r})}var _=_react.createContext.call(void 0, void 0);function B(){let r=_react.useContext.call(void 0, _);return r||{}}function O({children:r,...e}){return _jsxruntime.jsx.call(void 0, _.Provider,{value:e,children:r})}var Q=_react.createContext.call(void 0, void 0);function X(){let r=_react.useContext.call(void 0, Q);return r||{}}function Y({children:r,...e}){return _jsxruntime.jsx.call(void 0, Q.Provider,{value:e,children:r})}function v({validationRules:r,label:e}){let{formControl:t,getData:i}=y(),a=[];return r&&(typeof r=="string"?V(r,!0,e,t,i,{}).forEach(s=>a.push(s)):typeof r=="object"&&Object.keys(r).forEach(s=>{let{validate:c}=a.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&&V(s,o,e,t,i,c,l).forEach(u=>a.push(u))}else if(typeof r[s]=="object"){let o=r[s];a.push({validate:{...c,[s]:l=>o.validation(l)||o.message&&(typeof o.message=="string"?o.message:o.message(e))}})}})),Object.assign({},...a)}var V=(r,e,t,i,a,s,c)=>{let m=[],{validationMessage:o}=X(),{required:l,minLength:u,maxLength:d,min:p,max:g,email:x,match:b,diff:C,pattern:f}=o||{},A={required:{value:!!e,message:l?l(t):`${t} is required`},minLength:{value:e,message:u?u(t,e):`${t} must be at least ${e} characters long`},maxLength:{value:e,message:d?d(t,e):`${t} cannot be more than ${e} characters long`},min:{value:Number(e),message:p?p(t,e):`${t} should be at least ${e}`},max:{value:Number(e),message:g?g(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,}))$/)||(x?x(t):`${t} must be type email`):!0,match:(n="")=>n?n===(a&&a(e))||(b?b(t,c||F.changeAll(e)):`${t} must be same with ${c||F.changeAll(e)}`):!0,diff:(n="")=>n?n!==(a&&a(e))||(C?C(t,c||F.changeAll(e)):`${t} must be different with ${c||F.changeAll(e)}`):!0,pattern:{alphabet:(n="")=>!!n&&new RegExp("^[A-Za-z ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _25 => _25.alphabet])?_optionalChain([f, 'optionalAccess', _26 => _26.alphabet, 'call', _27 => _27(t)]):`${t} must be format Alphabet`),alphanumber:(n="")=>!!n&&new RegExp("^[A-Za-z0-9 ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _28 => _28.alphanumber])?_optionalChain([f, 'optionalAccess', _29 => _29.alphanumber, 'call', _30 => _30(t)]):`${t} must be format Alphabet or Number`),number:(n="")=>!!n&&new RegExp("^[0-9]*$").test(n)||(_optionalChain([f, 'optionalAccess', _31 => _31.number])?_optionalChain([f, 'optionalAccess', _32 => _32.number, 'call', _33 => _33(t)]):`${t} must be format Number`),lowercase:(n="")=>!!n&&new RegExp("^[a-z0-9 ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _34 => _34.lowercase])?_optionalChain([f, 'optionalAccess', _35 => _35.lowercase, 'call', _36 => _36(t)]):`${t} must be format Lowercase`),url:(n="")=>!!n&&/^(ftp|http|https):\/\/[^ "]+$/.test(n)||(_optionalChain([f, 'optionalAccess', _37 => _37.url])?_optionalChain([f, 'optionalAccess', _38 => _38.url, 'call', _39 => _39(t)]):`${t} must be a valid URL`),uppercase:(n="")=>!!n&&new RegExp("^[A-Z0-9 ]*$").test(n)||(_optionalChain([f, 'optionalAccess', _40 => _40.uppercase])?_optionalChain([f, 'optionalAccess', _41 => _41.uppercase, 'call', _42 => _42(t)]):`${t} must be format Uppercase`),mixedcase:(n="")=>!!n&&/[a-z]/.test(n)&&/[A-Z]/.test(n)||(_optionalChain([f, 'optionalAccess', _43 => _43.mixedcase])?_optionalChain([f, 'optionalAccess', _44 => _44.mixedcase, 'call', _45 => _45(t)]):`${t} must be mixed case`),specialcharacters:(n="")=>!!n&&/[^a-zA-Z0-9\s]/.test(n)||(_optionalChain([f, 'optionalAccess', _46 => _46.specialcharacters])?_optionalChain([f, 'optionalAccess', _47 => _47.specialcharacters, 'call', _48 => _48(t)]):`${t} must contain special characters`)}}[r];if(A){let{validate:n}=m.find(oe=>oe.validate)||{};typeof A=="function"?m.push({validate:{...n,...s,[r]:A}}):r==="pattern"?m.push({validate:{...n,...s,[`${r}${e}`]:A[e]}}):m.push({[r]:A})}return m};var Ne=({children:r,...e})=>{let t=_react.useMemo.call(void 0, ()=>h(),[]),{registerItem:i,unregisterItem:a,formControl:s,disabled:c,readOnly:m,formId:o}=y(),{name:l,formId:u,...d}=B(),{formId:p,name:g}=$();_react.useEffect.call(void 0, ()=>(i({id:t,...e}),()=>{a(t)}),[t,e]),!e.label&&!e.noLabel&&(e.label=F.changeAll(e.dataField)),g&&o===p&&(e.dataField=`${g}${e.dataField}`);let x=!1;typeof e.disabled=="boolean"?x=e.disabled:typeof d.disabled=="boolean"?x=d.disabled:x=!!c;let b=!1;typeof e.readOnly=="boolean"?b=e.readOnly:typeof d.readOnly=="boolean"?b=d.readOnly:b=!!m;let C=!1;return typeof e.hidden=="boolean"&&(C=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:x||b||C?{required:!1}:v(e),render:f=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, w,{...e,controller:f,children:r})})})})},De= exports.BgsController =Ne;var te=({children:r,...e})=>{let t=y(),i=_react.useMemo.call(void 0, ()=>h(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, O,{...t,...e,formGroupId:i,children:r})})};te.displayName="BgsFormGroup";var Ee=te;var Me=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Me||{});var mt=M;exports.BgsArrayForm = Ae; exports.BgsController = De; exports.BgsGroupForm = Ee; exports.BgsReactFormProvider = Y; exports.PatternTypeEnum = Me; exports.default = mt; exports.getFieldValue = U; exports.useBgsArrayForm = $; exports.useBgsControllerForm = Re; exports.useBgsForm = y; exports.useBgsGroupForm = B; exports.useFormArrayInit = Z; exports.useFormInit = E;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as K,useRef as ce}from"react";import{createContext as
|
|
1
|
+
import{useEffect as K,useRef as ce}from"react";import{createContext as ne,useCallback as W,useContext as se,useRef as ie}from"react";import{jsx as ae}from"react/jsx-runtime";var G=ne(void 0);function y(){let r=se(G);return r||{}}function P({children:r,controller:e,onSubmit:t}){let i=ie([]),a=W(o=>{let l=i.current.findIndex(u=>u.id===o.id);if(l>-1){let u=[...i.current];u[l]=o,i.current=[...u]}else i.current.push(o)},[i]),s=W(o=>{i.current=i.current.filter(l=>l.id!==o)},[]),c=async(o,l)=>{e.setIsSubmit(!0);let u=l?await e.formControl.trigger():!0,d=e.getData();u&&t&&t({...d,...o},{...e})},m={...e,registerItem:a,unregisterItem:s,items:i.current,triggerSubmit:c};return ae(G.Provider,{value:m,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,(i,a)=>a.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(i=>i?.length<=3?i?.toUpperCase():i)?.join(" "))}catch{}return t}};function N(r,e){try{return JSON.stringify(r)!==JSON.stringify(e)}catch{return!1}}var R=r=>(Object.keys(r).forEach(e=>{r[e]===void 0&&(r[e]=null)}),r),U=(r,e,t="")=>{if(!r)return t;if(r.hasOwnProperty(e))return r[e];let i=e.replace(/\[(\d+)\]/g,".$1").split("."),a=r;for(let s of i){if(a==null)return t;a=a[s]}return a===void 0?t:a};function D(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 me,useForm as le,useWatch as pe}from"react-hook-form";import{useMemo as ue,useRef as de,useState as L}from"react";var E=(r,e)=>{r||(r={});let t=de(null),[i,a]=L(!1),[s,c]=L({}),m=le({...e,reValidateMode:"onSubmit",mode:"all",defaultValues:r}),o=ue(()=>h(),[]),l=p=>p?U(R(m.getValues()),p):R(m.getValues()),d={...m,ref:t,reset:p=>{p?typeof p=="string"?m.resetField(p,{}):typeof p=="object"&&D(p,0)&&p.forEach(g=>m.resetField(g)):m.reset()},updateData:p=>{let g=l();m.reset({...g,...p})},getData:l,formControl:m,useFieldArray:p=>me({control:m.control,name:p}),useWatch:p=>pe({control:m.control,name:p}),isSubmit:i,formId:o,setIsSubmit:a,useSelected:p=>U(s,p),setSelected:c,selected:s};return[d,d]};import{Fragment as ge,jsx as I}from"react/jsx-runtime";var fe=({onSubmit:r,onChange:e=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:s,...c})=>{let m=a??E(),[o]=Array.isArray(m)?m:[m],l=ce(void 0),u=async d=>{d.preventDefault(),d.stopPropagation(),o.setIsSubmit(!0);let p=await o.formControl.trigger(),g=o.getData();p?r&&r({...g},{...o}):t(o.formControl.formState.errors)};return K(()=>{i&&N(l.current||{},i)&&(o.formControl.reset(i),l.current=i)},[i,o.formControl.reset]),K(()=>{if(!e)return;let d=o.formControl.watch(e);return()=>d.unsubscribe()},[]),I(ge,{children:I(P,{controller:{...o,disabled:c?.disabled,readOnly:c?.readOnly},onSubmit:r,children:I("form",{...c,id:o.formId,ref:o.ref,onSubmit:u,children:s})})})},M=fe;import{useEffect as Ce}from"react";import{createContext as ye,useContext as Fe}from"react";import{jsx as he}from"react/jsx-runtime";var z=ye(void 0);function $(){let r=Fe(z);return r||{}}function S({children:r,...e}){return he(z.Provider,{value:e,children:r})}import{useFieldArray as xe}from"react-hook-form";import{useMemo as be}from"react";var Z=r=>{let e=y(),t=xe({control:e.control,name:r}),a={formArrayId:be(()=>h(),[]),...t,...e};return[a,a]};import{Fragment as q,jsx as H}from"react/jsx-runtime";import{createElement as Ue}from"react";var j=({name:r,defaultData:e,controller:t,children:i})=>{let a=t??Z(r),[s]=Array.isArray(a)?a:[a];return Ce(()=>{typeof e=="boolean"&&e?s.append({}):typeof e=="number"&&e>0?s.append([...Array(e).fill(null).map(()=>({}))]):typeof e=="object"&&e&&s.append(e)},[]),H(q,{children:s.fields.map((c,m)=>{let o=`${r}.${m}.`,l={...s,index:m,name:o,countFields:s.fields.length,removeItem:()=>s.remove(m),watchItem:u=>s.watch(u?`${o}${u}`:o.slice(0,-1)),setValueItem:(u,d)=>s.setValue(`${o}${u}`,d),useSelectedItem:u=>s.useSelected(`${o}${u}`)};return H(q,{children:Ue(S,{...l,key:c.id||m},k(i,l))})})})};j.displayName="BgsFormArray";var Ae=j;import{useEffect as We,useMemo as Ge}from"react";import{createContext as Te,useContext as Pe}from"react";import{jsx as Ie}from"react/jsx-runtime";var J=Te(void 0);function Re(){let r=Pe(J);return r||{}}function w({children:r,...e}){return Ie(J.Provider,{value:e,children:r})}import{Controller as ke}from"react-hook-form";import{createContext as $e,useContext as Se}from"react";import{jsx as we}from"react/jsx-runtime";var _=$e(void 0);function B(){let r=Se(_);return r||{}}function O({children:r,...e}){return we(_.Provider,{value:e,children:r})}import{createContext as Be,useContext as Oe}from"react";import{jsx as ve}from"react/jsx-runtime";var Q=Be(void 0);function X(){let r=Oe(Q);return r||{}}function Y({children:r,...e}){return ve(Q.Provider,{value:e,children:r})}function v({validationRules:r,label:e}){let{formControl:t,getData:i}=y(),a=[];return r&&(typeof r=="string"?V(r,!0,e,t,i,{}).forEach(s=>a.push(s)):typeof r=="object"&&Object.keys(r).forEach(s=>{let{validate:c}=a.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&&V(s,o,e,t,i,c,l).forEach(u=>a.push(u))}else if(typeof r[s]=="object"){let o=r[s];a.push({validate:{...c,[s]:l=>o.validation(l)||o.message&&(typeof o.message=="string"?o.message:o.message(e))}})}})),Object.assign({},...a)}var V=(r,e,t,i,a,s,c)=>{let m=[],{validationMessage:o}=X(),{required:l,minLength:u,maxLength:d,min:p,max:g,email:x,match:b,diff:C,pattern:f}=o||{},A={required:{value:!!e,message:l?l(t):`${t} is required`},minLength:{value:e,message:u?u(t,e):`${t} must be at least ${e} characters long`},maxLength:{value:e,message:d?d(t,e):`${t} cannot be more than ${e} characters long`},min:{value:Number(e),message:p?p(t,e):`${t} should be at least ${e}`},max:{value:Number(e),message:g?g(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,}))$/)||(x?x(t):`${t} must be type email`):!0,match:(n="")=>n?n===(a&&a(e))||(b?b(t,c||F.changeAll(e)):`${t} must be same with ${c||F.changeAll(e)}`):!0,diff:(n="")=>n?n!==(a&&a(e))||(C?C(t,c||F.changeAll(e)):`${t} must be different with ${c||F.changeAll(e)}`):!0,pattern:{alphabet:(n="")=>!!n&&new RegExp("^[A-Za-z ]*$").test(n)||(f?.alphabet?f?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(n="")=>!!n&&new RegExp("^[A-Za-z0-9 ]*$").test(n)||(f?.alphanumber?f?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(n="")=>!!n&&new RegExp("^[0-9]*$").test(n)||(f?.number?f?.number(t):`${t} must be format Number`),lowercase:(n="")=>!!n&&new RegExp("^[a-z0-9 ]*$").test(n)||(f?.lowercase?f?.lowercase(t):`${t} must be format Lowercase`),url:(n="")=>!!n&&/^(ftp|http|https):\/\/[^ "]+$/.test(n)||(f?.url?f?.url(t):`${t} must be a valid URL`),uppercase:(n="")=>!!n&&new RegExp("^[A-Z0-9 ]*$").test(n)||(f?.uppercase?f?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(n="")=>!!n&&/[a-z]/.test(n)&&/[A-Z]/.test(n)||(f?.mixedcase?f?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(n="")=>!!n&&/[^a-zA-Z0-9\s]/.test(n)||(f?.specialcharacters?f?.specialcharacters(t):`${t} must contain special characters`)}}[r];if(A){let{validate:n}=m.find(oe=>oe.validate)||{};typeof A=="function"?m.push({validate:{...n,...s,[r]:A}}):r==="pattern"?m.push({validate:{...n,...s,[`${r}${e}`]:A[e]}}):m.push({[r]:A})}return m};import{Fragment as ee,jsx as T}from"react/jsx-runtime";var Ne=({children:r,...e})=>{let t=Ge(()=>h(),[]),{registerItem:i,unregisterItem:a,formControl:s,disabled:c,readOnly:m,formId:o}=y(),{name:l,formId:u,...d}=B(),{formId:p,name:g}=$();We(()=>(i({id:t,...e}),()=>{a(t)}),[t,e]),!e.label&&!e.noLabel&&(e.label=F.changeAll(e.dataField)),g&&o===p&&(e.dataField=`${g}${e.dataField}`);let x=!1;typeof e.disabled=="boolean"?x=e.disabled:typeof d.disabled=="boolean"?x=d.disabled:x=!!c;let b=!1;typeof e.readOnly=="boolean"?b=e.readOnly:typeof d.readOnly=="boolean"?b=d.readOnly:b=!!m;let C=!1;return typeof e.hidden=="boolean"&&(C=e.hidden),T(ee,{children:s.control&&T(ke,{name:e.dataField,control:s.control,rules:x||b||C?{required:!1}:v(e),render:f=>T(ee,{children:T(w,{...e,controller:f,children:r})})})})},De=Ne;import{useMemo as Le}from"react";import{Fragment as Ke,jsx as re}from"react/jsx-runtime";var te=({children:r,...e})=>{let t=y(),i=Le(()=>h(),[]);return re(Ke,{children:re(O,{...t,...e,formGroupId:i,children:r})})};te.displayName="BgsFormGroup";var Ee=te;var Me=(o=>(o.alphabet="alphabet",o.alphaNumber="alphanumber",o.number="number",o.lowercase="lowercase",o.url="url",o.uppercase="uppercase",o.mixedCase="mixedcase",o.specialCharacters="specialcharacters",o))(Me||{});var mt=M;export{Ae as BgsArrayForm,De as BgsController,Ee as BgsGroupForm,Y as BgsReactFormProvider,Me as PatternTypeEnum,mt as default,U as getFieldValue,$ as useBgsArrayForm,Re as useBgsControllerForm,y as useBgsForm,B as useBgsGroupForm,Z as useFormArrayInit,E as useFormInit};
|
package/package.json
CHANGED