@bgscore/react-form 0.0.47 → 0.0.48
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 +2 -3
- package/dist/index.d.ts +2 -3
- 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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _react2 = _interopRequireDefault(_react);var _jsxruntime = require('react/jsx-runtime');var N=_react.createContext.call(void 0, void 0);function F(){let e=_react.useContext.call(void 0, N);return e||{}}function S({children:e,controller:r,onSubmit:t}){let i=_react.useRef.call(void 0, []),a=_react.useCallback.call(void 0, o=>{let c=i.current.findIndex(d=>d.id===o.id);if(c>-1){let d=[...i.current];d[c]=o,i.current=[...d]}else i.current.push(o)},[i]),n=_react.useCallback.call(void 0, o=>{i.current=i.current.filter(c=>c.id!==o)},[]),p=async(o,c)=>{r.setIsSubmit(!0);let d=c?await r.formControl.trigger():!0,l=r.getData();d&&t&&t({...l,...o},{...r})},m={...r,registerItem:a,unregisterItem:n,items:i.current,triggerSubmit:p};return _jsxruntime.jsx.call(void 0, N.Provider,{value:m,children:e})}function x(){let e=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>(r==="x"?e():e()&3|8).toString(16))}function L(e,r){return typeof e=="function"?e(r):e}var Ye=_react2.default.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),h={camelCase:(e="")=>(e=e.split(".").map(r=>(r=r.charAt(0).toUpperCase()+r.slice(1),r)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let t=e.replace(/_([a-z])/g,(i,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(e="",r=!1)=>{let t="";try{e=_optionalChain([e, 'optionalAccess', _2 => _2.split, 'call', _3 => _3("."), 'access', _4 => _4[_optionalChain([e, 'optionalAccess', _5 => _5.split, 'call', _6 => _6("."), 'optionalAccess', _7 => _7.length])-1]]),e=_optionalChain([e, 'optionalAccess', _8 => _8.split, 'call', _9 => _9("[]"), 'access', _10 => _10[_optionalChain([e, 'optionalAccess', _11 => _11.split, 'call', _12 => _12("[]"), 'optionalAccess', _13 => _13.length])-1]]),t=h.snackCase(h.camelCase(e)),r&&(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 E(e,r){try{return JSON.stringify(e)!==JSON.stringify(r)}catch (e3){return!1}}var P=e=>(Object.keys(e).forEach(r=>{e[r]===void 0&&(e[r]=null)}),e),R= exports.getFieldValue =(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let n of i){if(a==null)return t;a=a[n]}return a===void 0?t:a};function K(e,r){let t=!1;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof r=="number"?e.length>r&&(t=!0):t=!0),t}function D(e,r=0){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{e(...i)},r*1e3)}}var _reacthookform = require('react-hook-form');function M(e){let r=e,t=new Set;function i(){return r}function a(m){return t.add(m),()=>t.delete(m)}function n(m){typeof m=="function"?r=m(r):r=m,t.forEach(o=>o())}function p(m){return _react.useSyncExternalStore.call(void 0, a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:p}}var I=new WeakMap;function z(e){return I.has(e)||I.set(e,M({})),I.get(e)}var Z=(e,r)=>{e||(e={});let t=_react.useRef.call(void 0, null),[i,a]=_react.useState.call(void 0, !1),n=_reacthookform.useForm.call(void 0, {...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),p=z(n),m=_react.useMemo.call(void 0, ()=>x(),[]),o=l=>l?R(P(n.getValues()),l):P(n.getValues()),d={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&K(l,0)&&l.forEach(f=>n.resetField(f)):n.reset()},updateData:l=>{let f=o();n.reset({...f,...l})},getData:o,formControl:n,useFieldArray:l=>_reacthookform.useFieldArray.call(void 0, {control:n.control,name:l}),useWatch:l=>_reacthookform.useWatch.call(void 0, {control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>p.useStore(f=>R(f,l)),setSelected:p.setState};return[d,d]};var Ce=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:n,...p})=>{let m=_nullishCoalesce(a, () => (Z())),[o]=Array.isArray(m)?m:[m],c=_react.useRef.call(void 0, void 0),d=async l=>{l.preventDefault(),l.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),y=o.getData();f?e&&e({...y},{...o}):t(o.formControl.formState.errors)};return _react.useEffect.call(void 0, ()=>{i&&E(c.current||{},i)&&(o.formControl.reset(i),c.current=i)},[i,o.formControl.reset]),_react.useEffect.call(void 0, ()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, S,{controller:{...o,disabled:_optionalChain([p, 'optionalAccess', _23 => _23.disabled]),readOnly:_optionalChain([p, 'optionalAccess', _24 => _24.readOnly])},onSubmit:e,children:_jsxruntime.jsx.call(void 0, "form",{...p,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},H=Ce;var j=_react.createContext.call(void 0, void 0);function w(){let e=_react.useContext.call(void 0, j);return e||{}}function v({children:e,...r}){return _jsxruntime.jsx.call(void 0, j.Provider,{value:r,children:e})}var J=e=>{let r=F(),t=_reacthookform.useFieldArray.call(void 0, {control:r.control,name:e}),a={formArrayId:_react.useMemo.call(void 0, ()=>x(),[]),...t,...r};return[a,a]};var _=({name:e,defaultData:r,controller:t,children:i})=>{let a=_nullishCoalesce(t, () => (J(e))),[n]=Array.isArray(a)?a:[a];return _react.useEffect.call(void 0, ()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r)},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:n.fields.map((p,m)=>{let o=`${e}.${m}.`,c={...n,index:m,fieldId:p.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(m),watchItem:d=>n.watch(d?`${o}${d}`:o.slice(0,-1)),setValueItem:(d,l)=>n.setValue(`${o}${d}`,l),useSelectedItem:d=>n.useSelected(`${o}${d}`)};return _jsxruntime.jsx.call(void 0, _react2.default.Fragment,{children:_jsxruntime.jsx.call(void 0, v,{...c,children:L(i,c)})},m)})})};_.displayName="BgsFormArray";var Oe=_;var Q=_react.createContext.call(void 0, void 0);function O(){let e=_react.useContext.call(void 0, Q);return e||{}}function W({children:e,...r}){return _jsxruntime.jsx.call(void 0, Q.Provider,{value:r,children:e})}var Y=({children:e,...r})=>{let t=F(),i=_react.useMemo.call(void 0, ()=>x(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, W,{...t,...r,formGroupId:i,children:e})})};Y.displayName="BgsFormGroup";var Ee=Y;var V=_react.createContext.call(void 0, void 0);function ee(){let e=_react.useContext.call(void 0, V);return e||{}}function re({children:e,...r}){return _jsxruntime.jsx.call(void 0, V.Provider,{value:r,children:e})}function G({validationRules:e,label:r}){let{formControl:t,getData:i}=F(),a=[];return e&&(typeof e=="string"?te(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:p}=a.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],c="";if(n==="email"&&!o)return;["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,c=e[n].label),o!=null&&te(n,o,r,t,i,p,c).forEach(d=>a.push(d))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...p,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var te=(e,r,t,i,a,n,p)=>{let m=[],{validationMessage:o}=ee(),{required:c,minLength:d,maxLength:l,min:f,max:y,email:C,match:A,diff:b,pattern:u}=o||{},g={required:{value:!!r,message:c?c(t):`${t} is required`},minLength:{value:r,message:d?d(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:l?l(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:f?f(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:y?y(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:!0,email:(s="")=>s?s.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,}))$/)||(C?C(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(A?A(t,p||h.changeAll(r)):`${t} must be same with ${p||h.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(b?b(t,p||h.changeAll(r)):`${t} must be different with ${p||h.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(_optionalChain([u, 'optionalAccess', _25 => _25.alphabet])?_optionalChain([u, 'optionalAccess', _26 => _26.alphabet, 'call', _27 => _27(t)]):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(_optionalChain([u, 'optionalAccess', _28 => _28.alphanumber])?_optionalChain([u, 'optionalAccess', _29 => _29.alphanumber, 'call', _30 => _30(t)]):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(_optionalChain([u, 'optionalAccess', _31 => _31.number])?_optionalChain([u, 'optionalAccess', _32 => _32.number, 'call', _33 => _33(t)]):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(_optionalChain([u, 'optionalAccess', _34 => _34.lowercase])?_optionalChain([u, 'optionalAccess', _35 => _35.lowercase, 'call', _36 => _36(t)]):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(_optionalChain([u, 'optionalAccess', _37 => _37.url])?_optionalChain([u, 'optionalAccess', _38 => _38.url, 'call', _39 => _39(t)]):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(_optionalChain([u, 'optionalAccess', _40 => _40.uppercase])?_optionalChain([u, 'optionalAccess', _41 => _41.uppercase, 'call', _42 => _42(t)]):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(_optionalChain([u, 'optionalAccess', _43 => _43.mixedcase])?_optionalChain([u, 'optionalAccess', _44 => _44.mixedcase, 'call', _45 => _45(t)]):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(_optionalChain([u, 'optionalAccess', _46 => _46.specialcharacters])?_optionalChain([u, 'optionalAccess', _47 => _47.specialcharacters, 'call', _48 => _48(t)]):`${t} must contain special characters`)}}[e];if(g){let{validate:s}=m.find(U=>U.validate)||{};typeof g=="function"?m.push({validate:{...s,...n,[e]:g}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:g[r]}}):m.push({[e]:g})}return m};var it=e=>{let r=_react.useMemo.call(void 0, ()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:p,formId:m,useWatch:o,setSelected:c,useSelected:d}=F(),{name:l,formId:f,...y}=O(),{formId:C,name:A}=w(),b=e.label,u=e.dataField;_react.useEffect.call(void 0, ()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(b=h.changeAll(u)),A&&m===C&&(u=`${A}${u}`);let T=!1;typeof e.disabled=="boolean"?T=e.disabled:typeof y.disabled=="boolean"?T=y.disabled:T=!!n;let g=!1;typeof e.readOnly=="boolean"?g=e.readOnly:typeof y.readOnly=="boolean"?g=y.readOnly:g=!!p;let s=!1;typeof e.hidden=="boolean"&&(s=e.hidden);let U=_reacthookform.useController.call(void 0, {name:u,control:a,disabled:T,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:T||g||s?{required:!1}:G({...e,label:b,dataField:u})}),ne=U.fieldState.invalid,se=_optionalChain([U, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]),ie=o(u),ae=_react.useMemo.call(void 0, ()=>D(le=>c(ue=>({...ue,[u]:le||null}))),[c]),me=d(u);return{...e,setSelectedField:ae,label:b,dataField:u,controller:U,invalid:ne,messageError:se,selectedField:me,value:ie}};var He=(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))(He||{});var ut=H;exports.BgsArrayForm = Oe; exports.BgsGroupForm = Ee; exports.BgsReactFormProvider = re; exports.PatternTypeEnum = He; exports.createStore = M; exports.default = ut; exports.getFieldValue = R; exports.useBgsArrayForm = w; exports.useBgsForm = F; exports.useBgsGroupForm = O; exports.useController = it; exports.useFormArrayInit = J; exports.useFormInit = Z;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _react2 = _interopRequireDefault(_react);var _jsxruntime = require('react/jsx-runtime');var N=_react.createContext.call(void 0, void 0);function F(){let e=_react.useContext.call(void 0, N);return e||{}}function S({children:e,controller:r,onSubmit:t}){let i=_react.useRef.call(void 0, []),a=_react.useCallback.call(void 0, o=>{let p=i.current.findIndex(u=>u.id===o.id);if(p>-1){let u=[...i.current];u[p]=o,i.current=[...u]}else i.current.push(o)},[i]),n=_react.useCallback.call(void 0, o=>{i.current=i.current.filter(p=>p.id!==o)},[]),c=async(o,p)=>{r.setIsSubmit(!0);let u=p?await r.formControl.trigger():!0,l=r.getData();u&&t&&t({...l,...o},{...r})},m={...r,registerItem:a,unregisterItem:n,items:i.current,triggerSubmit:c};return _jsxruntime.jsx.call(void 0, N.Provider,{value:m,children:e})}function x(){let e=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>(r==="x"?e():e()&3|8).toString(16))}function L(e,r){return typeof e=="function"?e(r):e}var Ye=_react2.default.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),h={camelCase:(e="")=>(e=e.split(".").map(r=>(r=r.charAt(0).toUpperCase()+r.slice(1),r)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let t=e.replace(/_([a-z])/g,(i,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(e="",r=!1)=>{let t="";try{e=_optionalChain([e, 'optionalAccess', _2 => _2.split, 'call', _3 => _3("."), 'access', _4 => _4[_optionalChain([e, 'optionalAccess', _5 => _5.split, 'call', _6 => _6("."), 'optionalAccess', _7 => _7.length])-1]]),e=_optionalChain([e, 'optionalAccess', _8 => _8.split, 'call', _9 => _9("[]"), 'access', _10 => _10[_optionalChain([e, 'optionalAccess', _11 => _11.split, 'call', _12 => _12("[]"), 'optionalAccess', _13 => _13.length])-1]]),t=h.snackCase(h.camelCase(e)),r&&(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 E(e,r){try{return JSON.stringify(e)!==JSON.stringify(r)}catch (e3){return!1}}var P=e=>(Object.keys(e).forEach(r=>{e[r]===void 0&&(e[r]=null)}),e),R= exports.getFieldValue =(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let n of i){if(a==null)return t;a=a[n]}return a===void 0?t:a};function K(e,r){let t=!1;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof r=="number"?e.length>r&&(t=!0):t=!0),t}function D(e,r=0){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{e(...i)},r*1e3)}}var _reacthookform = require('react-hook-form');function M(e){let r=e,t=new Set;function i(){return r}function a(m){return t.add(m),()=>t.delete(m)}function n(m){typeof m=="function"?r=m(r):r=m,t.forEach(o=>o())}function c(m){return _react.useSyncExternalStore.call(void 0, a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:c}}var I=new WeakMap;function z(e){return I.has(e)||I.set(e,M({})),I.get(e)}var Z=(e,r)=>{e||(e={});let t=_react.useRef.call(void 0, null),[i,a]=_react.useState.call(void 0, !1),n=_reacthookform.useForm.call(void 0, {...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),c=z(n),m=_react.useMemo.call(void 0, ()=>x(),[]),o=l=>l?R(P(n.getValues()),l):P(n.getValues()),u={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&K(l,0)&&l.forEach(f=>n.resetField(f)):n.reset()},updateData:l=>{let f=o();n.reset({...f,...l})},getData:o,formControl:n,useFieldArray:l=>_reacthookform.useFieldArray.call(void 0, {control:n.control,name:l}),useWatch:l=>_reacthookform.useWatch.call(void 0, {control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>c.useStore(f=>R(f,l)),setSelected:c.setState};return[u,u]};var Ce=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:n,...c})=>{let m=_nullishCoalesce(a, () => (Z())),[o]=Array.isArray(m)?m:[m],p=_react.useRef.call(void 0, void 0),u=async l=>{l.preventDefault(),l.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),y=o.getData();f?e&&e({...y},{...o}):t(o.formControl.formState.errors)};return _react.useEffect.call(void 0, ()=>{i&&E(p.current||{},i)&&(o.formControl.reset(i),p.current=i)},[i,o.formControl.reset]),_react.useEffect.call(void 0, ()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, S,{controller:{...o,disabled:_optionalChain([c, 'optionalAccess', _23 => _23.disabled]),readOnly:_optionalChain([c, 'optionalAccess', _24 => _24.readOnly])},onSubmit:e,children:_jsxruntime.jsx.call(void 0, "form",{...c,id:o.formId,ref:o.ref,onSubmit:u,children:n})})})},H=Ce;var j=_react.createContext.call(void 0, void 0);function w(){let e=_react.useContext.call(void 0, j);return e||{}}function v({children:e,...r}){return _jsxruntime.jsx.call(void 0, j.Provider,{value:r,children:e})}var J=e=>{let r=F(),t=_reacthookform.useFieldArray.call(void 0, {control:r.control,name:e}),a={formArrayId:_react.useMemo.call(void 0, ()=>x(),[]),...t,...r};return[a,a]};var _=({name:e,defaultData:r,controller:t,children:i})=>{let a=_nullishCoalesce(t, () => (J(e))),[n]=Array.isArray(a)?a:[a];return _react.useEffect.call(void 0, ()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r)},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:n.fields.map((c,m)=>{let o=`${e}.${m}.`,p={...n,index:m,fieldId:c.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(m),watchItem:u=>n.watch(u?`${o}${u}`:o.slice(0,-1)),setValueItem:(u,l)=>n.setValue(`${o}${u}`,l),useSelectedItem:u=>n.useSelected(`${o}${u}`)};return _jsxruntime.jsx.call(void 0, _react2.default.Fragment,{children:_jsxruntime.jsx.call(void 0, v,{...p,children:L(i,p)})},c.id)})})};_.displayName="BgsFormArray";var Oe=_;var Q=_react.createContext.call(void 0, void 0);function O(){let e=_react.useContext.call(void 0, Q);return e||{}}function W({children:e,...r}){return _jsxruntime.jsx.call(void 0, Q.Provider,{value:r,children:e})}var Y=({children:e,...r})=>{let t=F(),i=_react.useMemo.call(void 0, ()=>x(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, W,{...t,...r,formGroupId:i,children:e})})};Y.displayName="BgsFormGroup";var Ee=Y;var V=_react.createContext.call(void 0, void 0);function ee(){let e=_react.useContext.call(void 0, V);return e||{}}function re({children:e,...r}){return _jsxruntime.jsx.call(void 0, V.Provider,{value:r,children:e})}function k({validationRules:e,label:r}){let{formControl:t,getData:i}=F(),a=[];return e&&(typeof e=="string"?te(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:c}=a.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],p="";if(n==="email"&&!o)return;["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,p=e[n].label),o!=null&&te(n,o,r,t,i,c,p).forEach(u=>a.push(u))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...c,[n]:p=>o.validation(p)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var te=(e,r,t,i,a,n,c)=>{let m=[],{validationMessage:o}=ee(),{required:p,minLength:u,maxLength:l,min:f,max:y,email:C,match:A,diff:b,pattern:d}=o||{},g={required:{value:!!r,message:p?p(t):`${t} is required`},minLength:{value:r,message:u?u(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:l?l(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:f?f(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:y?y(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:!0,email:(s="")=>s?s.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,}))$/)||(C?C(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(A?A(t,c||h.changeAll(r)):`${t} must be same with ${c||h.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(b?b(t,c||h.changeAll(r)):`${t} must be different with ${c||h.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(_optionalChain([d, 'optionalAccess', _25 => _25.alphabet])?_optionalChain([d, 'optionalAccess', _26 => _26.alphabet, 'call', _27 => _27(t)]):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(_optionalChain([d, 'optionalAccess', _28 => _28.alphanumber])?_optionalChain([d, 'optionalAccess', _29 => _29.alphanumber, 'call', _30 => _30(t)]):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(_optionalChain([d, 'optionalAccess', _31 => _31.number])?_optionalChain([d, 'optionalAccess', _32 => _32.number, 'call', _33 => _33(t)]):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(_optionalChain([d, 'optionalAccess', _34 => _34.lowercase])?_optionalChain([d, 'optionalAccess', _35 => _35.lowercase, 'call', _36 => _36(t)]):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(_optionalChain([d, 'optionalAccess', _37 => _37.url])?_optionalChain([d, 'optionalAccess', _38 => _38.url, 'call', _39 => _39(t)]):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(_optionalChain([d, 'optionalAccess', _40 => _40.uppercase])?_optionalChain([d, 'optionalAccess', _41 => _41.uppercase, 'call', _42 => _42(t)]):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(_optionalChain([d, 'optionalAccess', _43 => _43.mixedcase])?_optionalChain([d, 'optionalAccess', _44 => _44.mixedcase, 'call', _45 => _45(t)]):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(_optionalChain([d, 'optionalAccess', _46 => _46.specialcharacters])?_optionalChain([d, 'optionalAccess', _47 => _47.specialcharacters, 'call', _48 => _48(t)]):`${t} must contain special characters`)}}[e];if(g){let{validate:s}=m.find(U=>U.validate)||{};typeof g=="function"?m.push({validate:{...s,...n,[e]:g}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:g[r]}}):m.push({[e]:g})}return m};var it=e=>{let r=_react.useMemo.call(void 0, ()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:c,formId:m,useWatch:o,setSelected:p,useSelected:u}=F(),{name:l,formId:f,...y}=O(),{formId:C,name:A}=w(),b=e.label,d=e.dataField;_react.useEffect.call(void 0, ()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(b=h.changeAll(d)),A&&m===C&&(d=`${A}${d}`);let T=!1;typeof e.disabled=="boolean"?T=e.disabled:typeof y.disabled=="boolean"?T=y.disabled:T=!!n;let g=!1;typeof e.readOnly=="boolean"?g=e.readOnly:typeof y.readOnly=="boolean"?g=y.readOnly:g=!!c;let s=!1;typeof e.hidden=="boolean"&&(s=e.hidden);let U=_reacthookform.useController.call(void 0, {name:d,control:a,disabled:T,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:T||g||s?{required:!1}:k({...e,label:b,dataField:d})}),ne=U.fieldState.invalid,se=_optionalChain([U, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]),ie=o(d),ae=_react.useMemo.call(void 0, ()=>D(le=>p(de=>({...de,[d]:le||null}))),[p]),me=u(d);return{...e,setSelectedField:ae,label:b,dataField:d,controller:U,invalid:ne,messageError:se,selectedField:me,value:ie}};var He=(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))(He||{});var dt=H;exports.BgsArrayForm = Oe; exports.BgsGroupForm = Ee; exports.BgsReactFormProvider = re; exports.PatternTypeEnum = He; exports.createStore = M; exports.default = dt; exports.getFieldValue = R; exports.useBgsArrayForm = w; exports.useBgsForm = F; exports.useBgsGroupForm = O; exports.useController = it; exports.useFormArrayInit = J; exports.useFormInit = Z;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { PropsWithChildren } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { ControllerRenderProps, FieldValues, ControllerFieldState, UseFormStateReturn, UseFormReturn, UseFieldArrayReturn, EventType, FieldErrors, UseFieldArraySwap, UseFieldArrayMove, UseFieldArrayPrepend, UseFieldArrayAppend, UseFieldArrayRemove, UseFieldArrayInsert, UseFieldArrayUpdate, UseFieldArrayReplace, FieldArrayWithId, DeepPartialSkipArrayKey, UseFormProps } from 'react-hook-form';
|
|
4
4
|
|
|
5
5
|
type ControllerWithKey = ControllerProps & {
|
|
6
6
|
id: string;
|
|
@@ -17,7 +17,6 @@ interface Controller {
|
|
|
17
17
|
fieldState: ControllerFieldState;
|
|
18
18
|
formState: UseFormStateReturn<FieldValues>;
|
|
19
19
|
}
|
|
20
|
-
type UseWatch<T = any> = (name: string) => DeepPartialSkipArrayKey<T>;
|
|
21
20
|
type NestedKeyOf<T> = T extends object ? T extends Array<infer U> ? `${number}` | `${number}.${NestedKeyOf<U>}` : {
|
|
22
21
|
[K in keyof T]: T[K] extends Array<infer U> ? `${K & string}` | `${K & string}[${number}]` | `${K & string}[${number}].${NestedKeyOf<U>}` : T[K] extends object ? `${K & string}` | `${K & string}.${NestedKeyOf<T[K]>}` : `${K & string}`;
|
|
23
22
|
}[keyof T] : never;
|
|
@@ -44,7 +43,7 @@ interface UseFormInitReturn<T = unknown> extends FormDefaultProps, Omit<UseFormR
|
|
|
44
43
|
getData: (field?: string) => T;
|
|
45
44
|
formControl: UseFormReturn;
|
|
46
45
|
useFieldArray: (name: string) => UseFieldArrayReturn;
|
|
47
|
-
useWatch:
|
|
46
|
+
useWatch: <T = unknown>(name: string) => T | undefined;
|
|
48
47
|
isSubmit: boolean;
|
|
49
48
|
setIsSubmit: React.Dispatch<React.SetStateAction<boolean>>;
|
|
50
49
|
formId: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { PropsWithChildren } from 'react';
|
|
3
|
-
import {
|
|
3
|
+
import { ControllerRenderProps, FieldValues, ControllerFieldState, UseFormStateReturn, UseFormReturn, UseFieldArrayReturn, EventType, FieldErrors, UseFieldArraySwap, UseFieldArrayMove, UseFieldArrayPrepend, UseFieldArrayAppend, UseFieldArrayRemove, UseFieldArrayInsert, UseFieldArrayUpdate, UseFieldArrayReplace, FieldArrayWithId, DeepPartialSkipArrayKey, UseFormProps } from 'react-hook-form';
|
|
4
4
|
|
|
5
5
|
type ControllerWithKey = ControllerProps & {
|
|
6
6
|
id: string;
|
|
@@ -17,7 +17,6 @@ interface Controller {
|
|
|
17
17
|
fieldState: ControllerFieldState;
|
|
18
18
|
formState: UseFormStateReturn<FieldValues>;
|
|
19
19
|
}
|
|
20
|
-
type UseWatch<T = any> = (name: string) => DeepPartialSkipArrayKey<T>;
|
|
21
20
|
type NestedKeyOf<T> = T extends object ? T extends Array<infer U> ? `${number}` | `${number}.${NestedKeyOf<U>}` : {
|
|
22
21
|
[K in keyof T]: T[K] extends Array<infer U> ? `${K & string}` | `${K & string}[${number}]` | `${K & string}[${number}].${NestedKeyOf<U>}` : T[K] extends object ? `${K & string}` | `${K & string}.${NestedKeyOf<T[K]>}` : `${K & string}`;
|
|
23
22
|
}[keyof T] : never;
|
|
@@ -44,7 +43,7 @@ interface UseFormInitReturn<T = unknown> extends FormDefaultProps, Omit<UseFormR
|
|
|
44
43
|
getData: (field?: string) => T;
|
|
45
44
|
formControl: UseFormReturn;
|
|
46
45
|
useFieldArray: (name: string) => UseFieldArrayReturn;
|
|
47
|
-
useWatch:
|
|
46
|
+
useWatch: <T = unknown>(name: string) => T | undefined;
|
|
48
47
|
isSubmit: boolean;
|
|
49
48
|
setIsSubmit: React.Dispatch<React.SetStateAction<boolean>>;
|
|
50
49
|
formId: string;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as q,useRef as Ue}from"react";import{createContext as de,useCallback as k,useContext as ce,useRef as pe}from"react";import{jsx as fe}from"react/jsx-runtime";var N=de(void 0);function F(){let e=ce(N);return e||{}}function S({children:e,controller:r,onSubmit:t}){let i=pe([]),a=k(o=>{let c=i.current.findIndex(d=>d.id===o.id);if(c>-1){let d=[...i.current];d[c]=o,i.current=[...d]}else i.current.push(o)},[i]),n=k(o=>{i.current=i.current.filter(c=>c.id!==o)},[]),p=async(o,c)=>{r.setIsSubmit(!0);let d=c?await r.formControl.trigger():!0,l=r.getData();d&&t&&t({...l,...o},{...r})},m={...r,registerItem:a,unregisterItem:n,items:i.current,triggerSubmit:p};return fe(N.Provider,{value:m,children:e})}import ge from"react";function x(){let e=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>(r==="x"?e():e()&3|8).toString(16))}function L(e,r){return typeof e=="function"?e(r):e}var Ye=ge.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),h={camelCase:(e="")=>(e=e.split(".").map(r=>(r=r.charAt(0).toUpperCase()+r.slice(1),r)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let t=e.replace(/_([a-z])/g,(i,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(e="",r=!1)=>{let t="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],t=h.snackCase(h.camelCase(e)),r&&(t=t?.split(" ")?.map(i=>i?.length<=3?i?.toUpperCase():i)?.join(" "))}catch{}return t}};function E(e,r){try{return JSON.stringify(e)!==JSON.stringify(r)}catch{return!1}}var P=e=>(Object.keys(e).forEach(r=>{e[r]===void 0&&(e[r]=null)}),e),R=(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let n of i){if(a==null)return t;a=a[n]}return a===void 0?t:a};function K(e,r){let t=!1;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof r=="number"?e.length>r&&(t=!0):t=!0),t}function D(e,r=0){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{e(...i)},r*1e3)}}import{useFieldArray as Fe,useForm as he,useWatch as xe}from"react-hook-form";import{useMemo as be,useRef as Te,useState as Ae}from"react";import{useSyncExternalStore as ye}from"react";function M(e){let r=e,t=new Set;function i(){return r}function a(m){return t.add(m),()=>t.delete(m)}function n(m){typeof m=="function"?r=m(r):r=m,t.forEach(o=>o())}function p(m){return ye(a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:p}}var I=new WeakMap;function z(e){return I.has(e)||I.set(e,M({})),I.get(e)}var Z=(e,r)=>{e||(e={});let t=Te(null),[i,a]=Ae(!1),n=he({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),p=z(n),m=be(()=>x(),[]),o=l=>l?R(P(n.getValues()),l):P(n.getValues()),d={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&K(l,0)&&l.forEach(f=>n.resetField(f)):n.reset()},updateData:l=>{let f=o();n.reset({...f,...l})},getData:o,formControl:n,useFieldArray:l=>Fe({control:n.control,name:l}),useWatch:l=>xe({control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>p.useStore(f=>R(f,l)),setSelected:p.setState};return[d,d]};import{Fragment as Re,jsx as $}from"react/jsx-runtime";var Ce=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:n,...p})=>{let m=a??Z(),[o]=Array.isArray(m)?m:[m],c=Ue(void 0),d=async l=>{l.preventDefault(),l.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),y=o.getData();f?e&&e({...y},{...o}):t(o.formControl.formState.errors)};return q(()=>{i&&E(c.current||{},i)&&(o.formControl.reset(i),c.current=i)},[i,o.formControl.reset]),q(()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),$(Re,{children:$(S,{controller:{...o,disabled:p?.disabled,readOnly:p?.readOnly},onSubmit:e,children:$("form",{...p,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},H=Ce;import ve,{useEffect as Be}from"react";import{createContext as Se,useContext as Pe}from"react";import{jsx as Ie}from"react/jsx-runtime";var j=Se(void 0);function w(){let e=Pe(j);return e||{}}function v({children:e,...r}){return Ie(j.Provider,{value:r,children:e})}import{useFieldArray as $e}from"react-hook-form";import{useMemo as we}from"react";var J=e=>{let r=F(),t=$e({control:r.control,name:e}),a={formArrayId:we(()=>x(),[]),...t,...r};return[a,a]};import{Fragment as We,jsx as B}from"react/jsx-runtime";var _=({name:e,defaultData:r,controller:t,children:i})=>{let a=t??J(e),[n]=Array.isArray(a)?a:[a];return Be(()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r)},[]),B(We,{children:n.fields.map((p,m)=>{let o=`${e}.${m}.`,c={...n,index:m,fieldId:p.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(m),watchItem:d=>n.watch(d?`${o}${d}`:o.slice(0,-1)),setValueItem:(d,l)=>n.setValue(`${o}${d}`,l),useSelectedItem:d=>n.useSelected(`${o}${d}`)};return B(ve.Fragment,{children:B(v,{...c,children:L(i,c)})},m)})})};_.displayName="BgsFormArray";var Oe=_;import{useMemo as Le}from"react";import{createContext as Ge,useContext as ke}from"react";import{jsx as Ne}from"react/jsx-runtime";var Q=Ge(void 0);function O(){let e=ke(Q);return e||{}}function W({children:e,...r}){return Ne(Q.Provider,{value:r,children:e})}import{Fragment as Ke,jsx as X}from"react/jsx-runtime";var Y=({children:e,...r})=>{let t=F(),i=Le(()=>x(),[]);return X(Ke,{children:X(W,{...t,...r,formGroupId:i,children:e})})};Y.displayName="BgsFormGroup";var Ee=Y;import{createContext as De,useContext as Me}from"react";import{jsx as ze}from"react/jsx-runtime";var V=De(void 0);function ee(){let e=Me(V);return e||{}}function re({children:e,...r}){return ze(V.Provider,{value:r,children:e})}import{useEffect as Ze,useMemo as oe}from"react";import{useController as qe}from"react-hook-form";function G({validationRules:e,label:r}){let{formControl:t,getData:i}=F(),a=[];return e&&(typeof e=="string"?te(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:p}=a.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],c="";if(n==="email"&&!o)return;["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,c=e[n].label),o!=null&&te(n,o,r,t,i,p,c).forEach(d=>a.push(d))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...p,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var te=(e,r,t,i,a,n,p)=>{let m=[],{validationMessage:o}=ee(),{required:c,minLength:d,maxLength:l,min:f,max:y,email:C,match:A,diff:b,pattern:u}=o||{},g={required:{value:!!r,message:c?c(t):`${t} is required`},minLength:{value:r,message:d?d(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:l?l(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:f?f(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:y?y(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:!0,email:(s="")=>s?s.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,}))$/)||(C?C(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(A?A(t,p||h.changeAll(r)):`${t} must be same with ${p||h.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(b?b(t,p||h.changeAll(r)):`${t} must be different with ${p||h.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(u?.alphabet?u?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(u?.alphanumber?u?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(u?.number?u?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(u?.lowercase?u?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(u?.url?u?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(u?.uppercase?u?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(u?.mixedcase?u?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(u?.specialcharacters?u?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(g){let{validate:s}=m.find(U=>U.validate)||{};typeof g=="function"?m.push({validate:{...s,...n,[e]:g}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:g[r]}}):m.push({[e]:g})}return m};var it=e=>{let r=oe(()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:p,formId:m,useWatch:o,setSelected:c,useSelected:d}=F(),{name:l,formId:f,...y}=O(),{formId:C,name:A}=w(),b=e.label,u=e.dataField;Ze(()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(b=h.changeAll(u)),A&&m===C&&(u=`${A}${u}`);let T=!1;typeof e.disabled=="boolean"?T=e.disabled:typeof y.disabled=="boolean"?T=y.disabled:T=!!n;let g=!1;typeof e.readOnly=="boolean"?g=e.readOnly:typeof y.readOnly=="boolean"?g=y.readOnly:g=!!p;let s=!1;typeof e.hidden=="boolean"&&(s=e.hidden);let U=qe({name:u,control:a,disabled:T,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:T||g||s?{required:!1}:G({...e,label:b,dataField:u})}),ne=U.fieldState.invalid,se=U.fieldState.error?.message,ie=o(u),ae=oe(()=>D(le=>c(ue=>({...ue,[u]:le||null}))),[c]),me=d(u);return{...e,setSelectedField:ae,label:b,dataField:u,controller:U,invalid:ne,messageError:se,selectedField:me,value:ie}};var He=(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))(He||{});var ut=H;export{Oe as BgsArrayForm,Ee as BgsGroupForm,re as BgsReactFormProvider,He as PatternTypeEnum,M as createStore,ut as default,R as getFieldValue,w as useBgsArrayForm,F as useBgsForm,O as useBgsGroupForm,it as useController,J as useFormArrayInit,Z as useFormInit};
|
|
1
|
+
import{useEffect as q,useRef as Ue}from"react";import{createContext as ue,useCallback as G,useContext as pe,useRef as ce}from"react";import{jsx as fe}from"react/jsx-runtime";var N=ue(void 0);function F(){let e=pe(N);return e||{}}function S({children:e,controller:r,onSubmit:t}){let i=ce([]),a=G(o=>{let p=i.current.findIndex(u=>u.id===o.id);if(p>-1){let u=[...i.current];u[p]=o,i.current=[...u]}else i.current.push(o)},[i]),n=G(o=>{i.current=i.current.filter(p=>p.id!==o)},[]),c=async(o,p)=>{r.setIsSubmit(!0);let u=p?await r.formControl.trigger():!0,l=r.getData();u&&t&&t({...l,...o},{...r})},m={...r,registerItem:a,unregisterItem:n,items:i.current,triggerSubmit:c};return fe(N.Provider,{value:m,children:e})}import ge from"react";function x(){let e=()=>Math.random()*16%16|0;return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>(r==="x"?e():e()&3|8).toString(16))}function L(e,r){return typeof e=="function"?e(r):e}var Ye=ge.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),h={camelCase:(e="")=>(e=e.split(".").map(r=>(r=r.charAt(0).toUpperCase()+r.slice(1),r)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let t=e.replace(/_([a-z])/g,(i,a)=>a.toUpperCase()).replace(/([A-Z])/g," $1");return t=t.charAt(0).toUpperCase()+t.slice(1),t},changeAll:(e="",r=!1)=>{let t="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],t=h.snackCase(h.camelCase(e)),r&&(t=t?.split(" ")?.map(i=>i?.length<=3?i?.toUpperCase():i)?.join(" "))}catch{}return t}};function E(e,r){try{return JSON.stringify(e)!==JSON.stringify(r)}catch{return!1}}var P=e=>(Object.keys(e).forEach(r=>{e[r]===void 0&&(e[r]=null)}),e),R=(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),a=e;for(let n of i){if(a==null)return t;a=a[n]}return a===void 0?t:a};function K(e,r){let t=!1;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof r=="number"?e.length>r&&(t=!0):t=!0),t}function D(e,r=0){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{e(...i)},r*1e3)}}import{useFieldArray as Fe,useForm as he,useWatch as xe}from"react-hook-form";import{useMemo as be,useRef as Te,useState as Ae}from"react";import{useSyncExternalStore as ye}from"react";function M(e){let r=e,t=new Set;function i(){return r}function a(m){return t.add(m),()=>t.delete(m)}function n(m){typeof m=="function"?r=m(r):r=m,t.forEach(o=>o())}function c(m){return ye(a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:c}}var I=new WeakMap;function z(e){return I.has(e)||I.set(e,M({})),I.get(e)}var Z=(e,r)=>{e||(e={});let t=Te(null),[i,a]=Ae(!1),n=he({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),c=z(n),m=be(()=>x(),[]),o=l=>l?R(P(n.getValues()),l):P(n.getValues()),u={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&K(l,0)&&l.forEach(f=>n.resetField(f)):n.reset()},updateData:l=>{let f=o();n.reset({...f,...l})},getData:o,formControl:n,useFieldArray:l=>Fe({control:n.control,name:l}),useWatch:l=>xe({control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>c.useStore(f=>R(f,l)),setSelected:c.setState};return[u,u]};import{Fragment as Re,jsx as $}from"react/jsx-runtime";var Ce=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:a,children:n,...c})=>{let m=a??Z(),[o]=Array.isArray(m)?m:[m],p=Ue(void 0),u=async l=>{l.preventDefault(),l.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),y=o.getData();f?e&&e({...y},{...o}):t(o.formControl.formState.errors)};return q(()=>{i&&E(p.current||{},i)&&(o.formControl.reset(i),p.current=i)},[i,o.formControl.reset]),q(()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),$(Re,{children:$(S,{controller:{...o,disabled:c?.disabled,readOnly:c?.readOnly},onSubmit:e,children:$("form",{...c,id:o.formId,ref:o.ref,onSubmit:u,children:n})})})},H=Ce;import ve,{useEffect as Be}from"react";import{createContext as Se,useContext as Pe}from"react";import{jsx as Ie}from"react/jsx-runtime";var j=Se(void 0);function w(){let e=Pe(j);return e||{}}function v({children:e,...r}){return Ie(j.Provider,{value:r,children:e})}import{useFieldArray as $e}from"react-hook-form";import{useMemo as we}from"react";var J=e=>{let r=F(),t=$e({control:r.control,name:e}),a={formArrayId:we(()=>x(),[]),...t,...r};return[a,a]};import{Fragment as We,jsx as B}from"react/jsx-runtime";var _=({name:e,defaultData:r,controller:t,children:i})=>{let a=t??J(e),[n]=Array.isArray(a)?a:[a];return Be(()=>{typeof r=="boolean"&&r?n.append({}):typeof r=="number"&&r>0?n.append([...Array(r).fill(null).map(()=>({}))]):typeof r=="object"&&r&&n.append(r)},[]),B(We,{children:n.fields.map((c,m)=>{let o=`${e}.${m}.`,p={...n,index:m,fieldId:c.id,name:o,countFields:n.fields.length,removeItem:()=>n.remove(m),watchItem:u=>n.watch(u?`${o}${u}`:o.slice(0,-1)),setValueItem:(u,l)=>n.setValue(`${o}${u}`,l),useSelectedItem:u=>n.useSelected(`${o}${u}`)};return B(ve.Fragment,{children:B(v,{...p,children:L(i,p)})},c.id)})})};_.displayName="BgsFormArray";var Oe=_;import{useMemo as Le}from"react";import{createContext as ke,useContext as Ge}from"react";import{jsx as Ne}from"react/jsx-runtime";var Q=ke(void 0);function O(){let e=Ge(Q);return e||{}}function W({children:e,...r}){return Ne(Q.Provider,{value:r,children:e})}import{Fragment as Ke,jsx as X}from"react/jsx-runtime";var Y=({children:e,...r})=>{let t=F(),i=Le(()=>x(),[]);return X(Ke,{children:X(W,{...t,...r,formGroupId:i,children:e})})};Y.displayName="BgsFormGroup";var Ee=Y;import{createContext as De,useContext as Me}from"react";import{jsx as ze}from"react/jsx-runtime";var V=De(void 0);function ee(){let e=Me(V);return e||{}}function re({children:e,...r}){return ze(V.Provider,{value:r,children:e})}import{useEffect as Ze,useMemo as oe}from"react";import{useController as qe}from"react-hook-form";function k({validationRules:e,label:r}){let{formControl:t,getData:i}=F(),a=[];return e&&(typeof e=="string"?te(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:c}=a.find(o=>o.validate)||{};if(["minLength","maxLength","min","max","match","diff","regexp","pattern","required","email"].includes(n)){let o=e[n],p="";if(n==="email"&&!o)return;["match","diff"].includes(n)&&typeof o=="object"&&(o=e[n].dataField,p=e[n].label),o!=null&&te(n,o,r,t,i,c,p).forEach(u=>a.push(u))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...c,[n]:p=>o.validation(p)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var te=(e,r,t,i,a,n,c)=>{let m=[],{validationMessage:o}=ee(),{required:p,minLength:u,maxLength:l,min:f,max:y,email:C,match:A,diff:b,pattern:d}=o||{},g={required:{value:!!r,message:p?p(t):`${t} is required`},minLength:{value:r,message:u?u(t,r):`${t} must be at least ${r} characters long`},maxLength:{value:r,message:l?l(t,r):`${t} cannot be more than ${r} characters long`},min:{value:Number(r),message:f?f(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:y?y(t,r):`${t} should be at most ${r}`},regexp:(s="")=>s?new RegExp(r.regexp).test(s)||`${t} ${r.message}`:!0,email:(s="")=>s?s.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,}))$/)||(C?C(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(A?A(t,c||h.changeAll(r)):`${t} must be same with ${c||h.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(b?b(t,c||h.changeAll(r)):`${t} must be different with ${c||h.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(d?.alphabet?d?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(d?.alphanumber?d?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(d?.number?d?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(d?.lowercase?d?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(d?.url?d?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(d?.uppercase?d?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(d?.mixedcase?d?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(d?.specialcharacters?d?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(g){let{validate:s}=m.find(U=>U.validate)||{};typeof g=="function"?m.push({validate:{...s,...n,[e]:g}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:g[r]}}):m.push({[e]:g})}return m};var it=e=>{let r=oe(()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:c,formId:m,useWatch:o,setSelected:p,useSelected:u}=F(),{name:l,formId:f,...y}=O(),{formId:C,name:A}=w(),b=e.label,d=e.dataField;Ze(()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(b=h.changeAll(d)),A&&m===C&&(d=`${A}${d}`);let T=!1;typeof e.disabled=="boolean"?T=e.disabled:typeof y.disabled=="boolean"?T=y.disabled:T=!!n;let g=!1;typeof e.readOnly=="boolean"?g=e.readOnly:typeof y.readOnly=="boolean"?g=y.readOnly:g=!!c;let s=!1;typeof e.hidden=="boolean"&&(s=e.hidden);let U=qe({name:d,control:a,disabled:T,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:T||g||s?{required:!1}:k({...e,label:b,dataField:d})}),ne=U.fieldState.invalid,se=U.fieldState.error?.message,ie=o(d),ae=oe(()=>D(le=>p(de=>({...de,[d]:le||null}))),[p]),me=u(d);return{...e,setSelectedField:ae,label:b,dataField:d,controller:U,invalid:ne,messageError:se,selectedField:me,value:ie}};var He=(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))(He||{});var dt=H;export{Oe as BgsArrayForm,Ee as BgsGroupForm,re as BgsReactFormProvider,He as PatternTypeEnum,M as createStore,dt as default,R as getFieldValue,w as useBgsArrayForm,F as useBgsForm,O as useBgsGroupForm,it as useController,J as useFormArrayInit,Z as useFormInit};
|
package/package.json
CHANGED