@bgscore/react-form 0.0.48 → 0.0.50
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 +8 -6
- package/dist/index.d.ts +8 -6
- 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 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;
|
|
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 E=_react.createContext.call(void 0, void 0);function F(){let e=_react.useContext.call(void 0, E);return e||{}}function I({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(u=>u.id===o.id);if(c>-1){let u=[...i.current];u[c]=o,i.current=[...u]}else i.current.push(o)},[i]),n=_react.useCallback.call(void 0, o=>{i.current=i.current.filter(c=>c.id!==o)},[]),p=async(o,c)=>{r.setIsSubmit(!0);let u=c?await r.formControl.trigger():!0,l=r.getData();u&&t&&t({...l,...o},{...r})},m={...r,registerItem:a,unregisterItem:n,items:i.current,triggerSubmit:p};return _jsxruntime.jsx.call(void 0, E.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 $(e,r){return typeof e=="function"?e(r):e}var Ve=_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 K(e,r){try{return JSON.stringify(e)!==JSON.stringify(r)}catch (e3){return!1}}var w=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 D(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 M(e,r=0){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{e(...i)},r*1e3)}}var _reacthookform = require('react-hook-form');function q(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 B=new WeakMap;function z(e){return B.has(e)||B.set(e,q({})),B.get(e)}var H=(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(w(n.getValues()),l):w(n.getValues()),u={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&D(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[u,u]};var Pe=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:a,children:n,...p})=>{let m=_nullishCoalesce(a, () => (H())),[o]=Array.isArray(m)?m:[m],c=_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&&t(o.formControl.formState.errors)};return _react.useEffect.call(void 0, ()=>{i&&K(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, I,{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:u,children:n})})})},j=Pe;var J=_react.createContext.call(void 0, void 0);function O(){let e=_react.useContext.call(void 0, J);return e||{}}function W({children:e,...r}){return _jsxruntime.jsx.call(void 0, J.Provider,{value:r,children:e})}var _=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 X=({name:e,defaultData:r,controller:t,children:i})=>{let a=_nullishCoalesce(t, () => (_(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: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, W,{...c,children:$(i,c)})},p.id)})})};X.displayName="BgsFormArray";var ke=X,Or=_react2.default.memo(({children:e,props:r})=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:$(e,r)}));var V=_react.createContext.call(void 0, void 0);function k(){let e=_react.useContext.call(void 0, V);return e||{}}function G({children:e,...r}){return _jsxruntime.jsx.call(void 0, V.Provider,{value:r,children:e})}var re=({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, G,{...t,...r,formGroupId:i,children:e})})};re.displayName="BgsFormGroup";var Ke=re;var te=_react.createContext.call(void 0, void 0);function oe(){let e=_react.useContext.call(void 0, te);return e||{}}function ne({children:e,...r}){return _jsxruntime.jsx.call(void 0, te.Provider,{value:r,children:e})}function N({validationRules:e,label:r}){let{formControl:t,getData:i}=F(),a=[];return e&&(typeof e=="string"?se(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&&se(n,o,r,t,i,p,c).forEach(u=>a.push(u))}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 se=(e,r,t,i,a,n,p)=>{let m=[],{validationMessage:o}=oe(),{required:c,minLength:u,maxLength:l,min:f,max:y,email:C,match:A,diff:b,pattern:d}=o||{},g={required:{value:!!r,message:c?c(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,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([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 mt=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:u}=F(),{name:l,formId:f,...y}=k(),{formId:C,name:A}=O(),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)),e.disabledHierarchy||(A&&m===C&&(d=`${A}${d}`),l&&m===f&&(d=`${l}${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=!!p;let s=!1;typeof e.hidden=="boolean"&&(s=e.hidden);let U=T||g||s?{required:!1}:N({...e,label:b,dataField:d});e.required&&(U={...U,required:e.required});let P=_reacthookform.useController.call(void 0, {name:d,control:a,disabled:T,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:U}),ae=P.fieldState.invalid,me=_optionalChain([P, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]),le=o(d),de=_react.useMemo.call(void 0, ()=>M(ce=>c(pe=>({...pe,[d]:ce||null}))),[c]),ue=u(d);return{...e,setSelectedField:de,label:b,dataField:d,controller:P,invalid:ae,messageError:me,selectedField:ue,value:le}};var je=(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))(je||{});var ct=j;exports.BgsFormArray = ke; exports.BgsFormGroup = Ke; exports.BgsReactFormProvider = ne; exports.PatternTypeEnum = je; exports.createStore = q; exports.default = ct; exports.getFieldValue = R; exports.useBgsController = mt; exports.useBgsForm = F; exports.useBgsFormArray = O; exports.useBgsFormArrayInit = _; exports.useBgsFormGroup = k; exports.useBgsFormInit = H;
|
package/dist/index.d.cts
CHANGED
|
@@ -77,6 +77,8 @@ interface ControllerProps {
|
|
|
77
77
|
readOnly?: boolean;
|
|
78
78
|
defaultValue?: any;
|
|
79
79
|
shouldUnregister?: boolean;
|
|
80
|
+
required?: boolean;
|
|
81
|
+
disabledHierarchy?: boolean;
|
|
80
82
|
}
|
|
81
83
|
type PatternType = "alphabet" | "alphanumber" | "number" | "lowercase" | "url" | "uppercase" | "mixedcase" | "specialcharacters";
|
|
82
84
|
declare enum PatternTypeEnum {
|
|
@@ -163,10 +165,10 @@ declare const FormGroup: {
|
|
|
163
165
|
displayName: string;
|
|
164
166
|
};
|
|
165
167
|
|
|
166
|
-
declare function useFormArray<T = unknown>(): UseFormArray<T>;
|
|
167
|
-
|
|
168
168
|
declare function useForm<T = unknown>(): UseBgsForm<T>;
|
|
169
169
|
|
|
170
|
+
declare function useFormArray<T = unknown>(): UseFormArray<T>;
|
|
171
|
+
|
|
170
172
|
type UseFormGroup = FormGroupProps & UseFormInitReturn & {
|
|
171
173
|
formGroupId: string;
|
|
172
174
|
};
|
|
@@ -197,11 +199,11 @@ interface BgsReactFormContextData {
|
|
|
197
199
|
}
|
|
198
200
|
declare function BgsReactFormProvider({ children, ...value }: PropsWithChildren<BgsReactFormContextData>): react_jsx_runtime.JSX.Element;
|
|
199
201
|
|
|
200
|
-
declare const
|
|
202
|
+
declare const useBgsFormInit: <T = unknown>(defaultValues?: Partial<T> | undefined, options?: UseFormProps) => UseFormInitReturn<T>[];
|
|
201
203
|
|
|
202
|
-
declare const
|
|
204
|
+
declare const useBgsFormArrayInit: <T = unknown>(name: string) => UseFormArrayInitReturn<T>[];
|
|
203
205
|
|
|
204
|
-
declare const
|
|
206
|
+
declare const useBgsController: (props: ControllerProps) => UseController;
|
|
205
207
|
|
|
206
208
|
declare const getFieldValue: <T, P extends NestedKeyOf<T>, D = undefined>(obj: T, path: P, defaultValue?: D) => PathValue<T, P> | D;
|
|
207
209
|
|
|
@@ -216,4 +218,4 @@ declare function createStore<T>(initialState: T): {
|
|
|
216
218
|
};
|
|
217
219
|
};
|
|
218
220
|
|
|
219
|
-
export { FormArray as
|
|
221
|
+
export { FormArray as BgsFormArray, FormGroup as BgsFormGroup, BgsReactFormProvider, type ControllerProps, type FormArrayProps, type FormGroupProps, type FormProps, type OnSubmit, type PatternType, PatternTypeEnum, type SelectedNested, type TriggerSubmit, type UseBgsForm, type UseController, type UseFormArray, type UseFormArrayInitReturn, type UseFormInitReturn, type UseSelected, type ValidationCallback, type ValidationOptions, type ValidationRules, createStore, BgsForm as default, getFieldValue, useBgsController, useForm as useBgsForm, useFormArray as useBgsFormArray, useBgsFormArrayInit, useFormGroup as useBgsFormGroup, useBgsFormInit };
|
package/dist/index.d.ts
CHANGED
|
@@ -77,6 +77,8 @@ interface ControllerProps {
|
|
|
77
77
|
readOnly?: boolean;
|
|
78
78
|
defaultValue?: any;
|
|
79
79
|
shouldUnregister?: boolean;
|
|
80
|
+
required?: boolean;
|
|
81
|
+
disabledHierarchy?: boolean;
|
|
80
82
|
}
|
|
81
83
|
type PatternType = "alphabet" | "alphanumber" | "number" | "lowercase" | "url" | "uppercase" | "mixedcase" | "specialcharacters";
|
|
82
84
|
declare enum PatternTypeEnum {
|
|
@@ -163,10 +165,10 @@ declare const FormGroup: {
|
|
|
163
165
|
displayName: string;
|
|
164
166
|
};
|
|
165
167
|
|
|
166
|
-
declare function useFormArray<T = unknown>(): UseFormArray<T>;
|
|
167
|
-
|
|
168
168
|
declare function useForm<T = unknown>(): UseBgsForm<T>;
|
|
169
169
|
|
|
170
|
+
declare function useFormArray<T = unknown>(): UseFormArray<T>;
|
|
171
|
+
|
|
170
172
|
type UseFormGroup = FormGroupProps & UseFormInitReturn & {
|
|
171
173
|
formGroupId: string;
|
|
172
174
|
};
|
|
@@ -197,11 +199,11 @@ interface BgsReactFormContextData {
|
|
|
197
199
|
}
|
|
198
200
|
declare function BgsReactFormProvider({ children, ...value }: PropsWithChildren<BgsReactFormContextData>): react_jsx_runtime.JSX.Element;
|
|
199
201
|
|
|
200
|
-
declare const
|
|
202
|
+
declare const useBgsFormInit: <T = unknown>(defaultValues?: Partial<T> | undefined, options?: UseFormProps) => UseFormInitReturn<T>[];
|
|
201
203
|
|
|
202
|
-
declare const
|
|
204
|
+
declare const useBgsFormArrayInit: <T = unknown>(name: string) => UseFormArrayInitReturn<T>[];
|
|
203
205
|
|
|
204
|
-
declare const
|
|
206
|
+
declare const useBgsController: (props: ControllerProps) => UseController;
|
|
205
207
|
|
|
206
208
|
declare const getFieldValue: <T, P extends NestedKeyOf<T>, D = undefined>(obj: T, path: P, defaultValue?: D) => PathValue<T, P> | D;
|
|
207
209
|
|
|
@@ -216,4 +218,4 @@ declare function createStore<T>(initialState: T): {
|
|
|
216
218
|
};
|
|
217
219
|
};
|
|
218
220
|
|
|
219
|
-
export { FormArray as
|
|
221
|
+
export { FormArray as BgsFormArray, FormGroup as BgsFormGroup, BgsReactFormProvider, type ControllerProps, type FormArrayProps, type FormGroupProps, type FormProps, type OnSubmit, type PatternType, PatternTypeEnum, type SelectedNested, type TriggerSubmit, type UseBgsForm, type UseController, type UseFormArray, type UseFormArrayInitReturn, type UseFormInitReturn, type UseSelected, type ValidationCallback, type ValidationOptions, type ValidationRules, createStore, BgsForm as default, getFieldValue, useBgsController, useForm as useBgsForm, useFormArray as useBgsFormArray, useBgsFormArrayInit, useFormGroup as useBgsFormGroup, useBgsFormInit };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
import{useEffect as Z,useRef as Se}from"react";import{createContext as fe,useCallback as L,useContext as ge,useRef as ye}from"react";import{jsx as Fe}from"react/jsx-runtime";var E=fe(void 0);function F(){let e=ge(E);return e||{}}function I({children:e,controller:r,onSubmit:t}){let i=ye([]),a=L(o=>{let c=i.current.findIndex(u=>u.id===o.id);if(c>-1){let u=[...i.current];u[c]=o,i.current=[...u]}else i.current.push(o)},[i]),n=L(o=>{i.current=i.current.filter(c=>c.id!==o)},[]),p=async(o,c)=>{r.setIsSubmit(!0);let u=c?await r.formControl.trigger():!0,l=r.getData();u&&t&&t({...l,...o},{...r})},m={...r,registerItem:a,unregisterItem:n,items:i.current,triggerSubmit:p};return Fe(E.Provider,{value:m,children:e})}import he 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 $(e,r){return typeof e=="function"?e(r):e}var Ve=he.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 K(e,r){try{return JSON.stringify(e)!==JSON.stringify(r)}catch{return!1}}var w=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 D(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 M(e,r=0){let t;return function(...i){clearTimeout(t),t=setTimeout(()=>{e(...i)},r*1e3)}}import{useFieldArray as be,useForm as Te,useWatch as Ae}from"react-hook-form";import{useMemo as Ue,useRef as Ce,useState as Re}from"react";import{useSyncExternalStore as xe}from"react";function q(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 xe(a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:p}}var B=new WeakMap;function z(e){return B.has(e)||B.set(e,q({})),B.get(e)}var H=(e,r)=>{e||(e={});let t=Ce(null),[i,a]=Re(!1),n=Te({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),p=z(n),m=Ue(()=>x(),[]),o=l=>l?R(w(n.getValues()),l):w(n.getValues()),u={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&D(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=>be({control:n.control,name:l}),useWatch:l=>Ae({control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>p.useStore(f=>R(f,l)),setSelected:p.setState};return[u,u]};import{Fragment as Ie,jsx as v}from"react/jsx-runtime";var Pe=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:a,children:n,...p})=>{let m=a??H(),[o]=Array.isArray(m)?m:[m],c=Se(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&&t(o.formControl.formState.errors)};return Z(()=>{i&&K(c.current||{},i)&&(o.formControl.reset(i),c.current=i)},[i,o.formControl.reset]),Z(()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),v(Ie,{children:v(I,{controller:{...o,disabled:p?.disabled,readOnly:p?.readOnly},onSubmit:e,children:v("form",{...p,id:o.formId,ref:o.ref,onSubmit:u,children:n})})})},j=Pe;import Q,{useEffect as We}from"react";import{createContext as $e,useContext as we}from"react";import{jsx as Be}from"react/jsx-runtime";var J=$e(void 0);function O(){let e=we(J);return e||{}}function W({children:e,...r}){return Be(J.Provider,{value:r,children:e})}import{useFieldArray as ve}from"react-hook-form";import{useMemo as Oe}from"react";var _=e=>{let r=F(),t=ve({control:r.control,name:e}),a={formArrayId:Oe(()=>x(),[]),...t,...r};return[a,a]};import{Fragment as Y,jsx as S}from"react/jsx-runtime";var X=({name:e,defaultData:r,controller:t,children:i})=>{let a=t??_(e),[n]=Array.isArray(a)?a:[a];return We(()=>{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)},[]),S(Y,{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: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 S(Q.Fragment,{children:S(W,{...c,children:$(i,c)})},p.id)})})};X.displayName="BgsFormArray";var ke=X,Or=Q.memo(({children:e,props:r})=>S(Y,{children:$(e,r)}));import{useMemo as Ee}from"react";import{createContext as Ge,useContext as Ne}from"react";import{jsx as Le}from"react/jsx-runtime";var V=Ge(void 0);function k(){let e=Ne(V);return e||{}}function G({children:e,...r}){return Le(V.Provider,{value:r,children:e})}import{Fragment as De,jsx as ee}from"react/jsx-runtime";var re=({children:e,...r})=>{let t=F(),i=Ee(()=>x(),[]);return ee(De,{children:ee(G,{...t,...r,formGroupId:i,children:e})})};re.displayName="BgsFormGroup";var Ke=re;import{createContext as Me,useContext as qe}from"react";import{jsx as ze}from"react/jsx-runtime";var te=Me(void 0);function oe(){let e=qe(te);return e||{}}function ne({children:e,...r}){return ze(te.Provider,{value:r,children:e})}import{useEffect as He,useMemo as ie}from"react";import{useController as Ze}from"react-hook-form";function N({validationRules:e,label:r}){let{formControl:t,getData:i}=F(),a=[];return e&&(typeof e=="string"?se(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&&se(n,o,r,t,i,p,c).forEach(u=>a.push(u))}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 se=(e,r,t,i,a,n,p)=>{let m=[],{validationMessage:o}=oe(),{required:c,minLength:u,maxLength:l,min:f,max:y,email:C,match:A,diff:b,pattern:d}=o||{},g={required:{value:!!r,message:c?c(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,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)||(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 mt=e=>{let r=ie(()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:p,formId:m,useWatch:o,setSelected:c,useSelected:u}=F(),{name:l,formId:f,...y}=k(),{formId:C,name:A}=O(),b=e.label,d=e.dataField;He(()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(b=h.changeAll(d)),e.disabledHierarchy||(A&&m===C&&(d=`${A}${d}`),l&&m===f&&(d=`${l}${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=!!p;let s=!1;typeof e.hidden=="boolean"&&(s=e.hidden);let U=T||g||s?{required:!1}:N({...e,label:b,dataField:d});e.required&&(U={...U,required:e.required});let P=Ze({name:d,control:a,disabled:T,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:U}),ae=P.fieldState.invalid,me=P.fieldState.error?.message,le=o(d),de=ie(()=>M(ce=>c(pe=>({...pe,[d]:ce||null}))),[c]),ue=u(d);return{...e,setSelectedField:de,label:b,dataField:d,controller:P,invalid:ae,messageError:me,selectedField:ue,value:le}};var je=(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))(je||{});var ct=j;export{ke as BgsFormArray,Ke as BgsFormGroup,ne as BgsReactFormProvider,je as PatternTypeEnum,q as createStore,ct as default,R as getFieldValue,mt as useBgsController,F as useBgsForm,O as useBgsFormArray,_ as useBgsFormArrayInit,k as useBgsFormGroup,H as useBgsFormInit};
|
package/package.json
CHANGED