@bgscore/react-form 0.0.52 → 0.0.54

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 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 L=_react.createContext.call(void 0, void 0);function y(){let e=_react.useContext.call(void 0, L);return e||{}}function P({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)},[]),u=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:u};return _jsxruntime.jsx.call(void 0, L.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 I(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}),F={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=F.snackCase(F.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 $=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 u(m){return _react.useSyncExternalStore.call(void 0, a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:u}}var w=new WeakMap;function q(e){return w.has(e)||w.set(e,M({})),w.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}),u=q(n),m=_react.useMemo.call(void 0, ()=>x(),[]),o=l=>l?R($(n.getValues()),l):$(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=>u.useStore(f=>R(f,l)),setSelected:u.setState};return[d,d]};var Se=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:a,children:n,...u})=>{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(),b=o.getData();f?e&&e({...b},{...o}):t&&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, P,{controller:{...o,disabled:_optionalChain([u, 'optionalAccess', _23 => _23.disabled]),readOnly:_optionalChain([u, 'optionalAccess', _24 => _24.readOnly])},onSubmit:e,children:_jsxruntime.jsx.call(void 0, "form",{...u,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},Z=Se;var j=_react.createContext.call(void 0, void 0);function v(){let e=_react.useContext.call(void 0, j);return e||{}}function O({children:e,...r}){return _jsxruntime.jsx.call(void 0, j.Provider,{value:r,children:e})}var J=e=>{let r=y(),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 Q=({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((u,m)=>{let o=`${e}.${m}.`,c={...n,index:m,fieldId:u.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, O,{...c,children:I(i,c)})},u.id)})})};Q.displayName="BgsFormArray";var We=Q,Or=_react2.default.memo(({children:e,props:r})=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:I(e,r)}));var Y=_react.createContext.call(void 0, void 0);function W(){let e=_react.useContext.call(void 0, Y);return e||{}}function k({children:e,...r}){return _jsxruntime.jsx.call(void 0, Y.Provider,{value:r,children:e})}var ee=({children:e,...r})=>{let t=y(),i=_react.useMemo.call(void 0, ()=>x(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, k,{...t,...r,formGroupId:i,children:e})})};ee.displayName="BgsFormGroup";var Ee=ee;var re=_react.createContext.call(void 0, void 0);function te(){let e=_react.useContext.call(void 0, re);return e||{}}function oe({children:e,...r}){return _jsxruntime.jsx.call(void 0, re.Provider,{value:r,children:e})}function G({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),a=[];return e&&(typeof e=="string"?ne(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:u}=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&&ne(n,o,r,t,i,u,c).forEach(d=>a.push(d))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...u,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var ne=(e,r,t,i,a,n,u)=>{let m=[],{validationMessage:o}=te(),{required:c,minLength:d,maxLength:l,min:f,max:b,email:A,match:T,diff:g,pattern:p}=o||{},h={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:b?b(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,}))$/)||(A?A(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(T?T(t,u||F.changeAll(r)):`${t} must be same with ${u||F.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(g?g(t,u||F.changeAll(r)):`${t} must be different with ${u||F.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(_optionalChain([p, 'optionalAccess', _25 => _25.alphabet])?_optionalChain([p, '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([p, 'optionalAccess', _28 => _28.alphanumber])?_optionalChain([p, '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([p, 'optionalAccess', _31 => _31.number])?_optionalChain([p, 'optionalAccess', _32 => _32.number, 'call', _33 => _33(t)]):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(_optionalChain([p, 'optionalAccess', _34 => _34.lowercase])?_optionalChain([p, 'optionalAccess', _35 => _35.lowercase, 'call', _36 => _36(t)]):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(_optionalChain([p, 'optionalAccess', _37 => _37.url])?_optionalChain([p, '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([p, 'optionalAccess', _40 => _40.uppercase])?_optionalChain([p, '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([p, 'optionalAccess', _43 => _43.mixedcase])?_optionalChain([p, 'optionalAccess', _44 => _44.mixedcase, 'call', _45 => _45(t)]):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(_optionalChain([p, 'optionalAccess', _46 => _46.specialcharacters])?_optionalChain([p, 'optionalAccess', _47 => _47.specialcharacters, 'call', _48 => _48(t)]):`${t} must contain special characters`)}}[e];if(h){let{validate:s}=m.find(C=>C.validate)||{};typeof h=="function"?m.push({validate:{...s,...n,[e]:h}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:h[r]}}):m.push({[e]:h})}return m};var mt=e=>{let r=_react.useMemo.call(void 0, ()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:u,formId:m,setSelected:o,useSelected:c}=y(),{name:d,formId:l,...f}=W(),{formId:b,name:A}=v(),T=e.label,g=e.dataField;_react.useEffect.call(void 0, ()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(T=F.changeAll(g)),e.disabledHierarchy||(A&&m===b&&(g=`${A}${g}`),d&&m===l&&(g=`${d}${g}`));let p=!1;typeof e.disabled=="boolean"?p=e.disabled:typeof f.disabled=="boolean"?p=f.disabled:p=!!n;let U=!1;typeof e.readOnly=="boolean"?U=e.readOnly:typeof f.readOnly=="boolean"?U=f.readOnly:U=!!u;let h=!1;typeof e.hidden=="boolean"&&(h=e.hidden);let s=p||U||h?{required:!1}:G({...e,label:T,dataField:g});e.required&&(s={...s,required:e.required});let C=_reacthookform.useController.call(void 0, {name:g,control:a,disabled:p,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:s}),ie=C.fieldState.invalid,ae=_optionalChain([C, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]),me=_reacthookform.useWatch.call(void 0, {name:g,control:a,defaultValue:e.defaultValue}),le=_react.useMemo.call(void 0, ()=>D(ue=>o(ce=>({...ce,[g]:ue||null}))),[o]),de=c(g);return{...e,setSelectedField:le,label:T,dataField:g,controller:C,invalid:ie,messageError:ae,selectedField:de,value:me}};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=Z;exports.BgsFormArray = We; exports.BgsFormGroup = Ee; exports.BgsReactFormProvider = oe; exports.PatternTypeEnum = je; exports.createStore = M; exports.default = ct; exports.getFieldValue = R; exports.useBgsController = mt; exports.useBgsForm = y; exports.useBgsFormArray = v; exports.useBgsFormArrayInit = J; exports.useBgsFormGroup = W; exports.useBgsFormInit = 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 L=_react.createContext.call(void 0, void 0);function y(){let e=_react.useContext.call(void 0, L);return e||{}}function P({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)},[]),u=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:u};return _jsxruntime.jsx.call(void 0, L.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 I(e,r){return typeof e=="function"?e(r):e}var er=_react2.default.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),F={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=F.snackCase(F.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 $=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 u(m){return _react.useSyncExternalStore.call(void 0, a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:u}}var v=new WeakMap;function q(e){return v.has(e)||v.set(e,M({})),v.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}),u=q(n),m=_react.useMemo.call(void 0, ()=>x(),[]),o=l=>l?R($(n.getValues()),l):$(n.getValues()),d={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&K(l,0)&&l.forEach(p=>n.resetField(p)):n.reset()},updateData:l=>{let p=o();n.reset({...p,...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=>u.useStore(p=>R(p,l)),setSelected:u.setState};return[d,d]};var Pe=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:a,children:n,...u})=>{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 p=await o.formControl.trigger(),b=o.getData();p?e&&e({...b},{...o}):t&&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, P,{controller:{...o,disabled:_optionalChain([u, 'optionalAccess', _23 => _23.disabled]),readOnly:_optionalChain([u, 'optionalAccess', _24 => _24.readOnly])},onSubmit:e,children:_jsxruntime.jsx.call(void 0, "form",{...u,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},Z=Pe;var j=_react.createContext.call(void 0, void 0);function B(){let e=_react.useContext.call(void 0, j);return e||{}}function O({children:e,...r}){return _jsxruntime.jsx.call(void 0, j.Provider,{value:r,children:e})}var J=e=>{let r=y(),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 Q=({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((u,m)=>{let o=`${e}.${m}.`,c={...n,index:m,fieldId:u.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, O,{...c,children:I(i,c)})},u.id)})})};Q.displayName="BgsFormArray";var ke=Q,Wr=_react2.default.memo(({children:e,props:r})=>_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:I(e,r)}));var Y=_react.createContext.call(void 0, void 0);function W(){let e=_react.useContext.call(void 0, Y);return e||{}}function k({children:e,...r}){return _jsxruntime.jsx.call(void 0, Y.Provider,{value:r,children:e})}var ee=({children:e,...r})=>{let t=y(),i=_react.useMemo.call(void 0, ()=>x(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, k,{...t,...r,formGroupId:i,children:e})})};ee.displayName="BgsFormGroup";var Ke=ee;var re=_react.createContext.call(void 0, void 0);function te(){let e=_react.useContext.call(void 0, re);return e||{}}function oe({children:e,...r}){return _jsxruntime.jsx.call(void 0, re.Provider,{value:r,children:e})}function G({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),a=[];return e&&(typeof e=="string"?ne(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:u}=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&&ne(n,o,r,t,i,u,c).forEach(d=>a.push(d))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...u,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var ne=(e,r,t,i,a,n,u)=>{let m=[],{validationMessage:o}=te(),{required:c,minLength:d,maxLength:l,min:p,max:b,email:A,match:T,diff:g,pattern:f}=o||{},h={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:p?p(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:b?b(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,}))$/)||(A?A(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(T?T(t,u||F.changeAll(r)):`${t} must be same with ${u||F.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(g?g(t,u||F.changeAll(r)):`${t} must be different with ${u||F.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(_optionalChain([f, 'optionalAccess', _25 => _25.alphabet])?_optionalChain([f, '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([f, 'optionalAccess', _28 => _28.alphanumber])?_optionalChain([f, '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([f, 'optionalAccess', _31 => _31.number])?_optionalChain([f, 'optionalAccess', _32 => _32.number, 'call', _33 => _33(t)]):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(_optionalChain([f, 'optionalAccess', _34 => _34.lowercase])?_optionalChain([f, 'optionalAccess', _35 => _35.lowercase, 'call', _36 => _36(t)]):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(_optionalChain([f, 'optionalAccess', _37 => _37.url])?_optionalChain([f, '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([f, 'optionalAccess', _40 => _40.uppercase])?_optionalChain([f, '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([f, 'optionalAccess', _43 => _43.mixedcase])?_optionalChain([f, 'optionalAccess', _44 => _44.mixedcase, 'call', _45 => _45(t)]):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(_optionalChain([f, 'optionalAccess', _46 => _46.specialcharacters])?_optionalChain([f, 'optionalAccess', _47 => _47.specialcharacters, 'call', _48 => _48(t)]):`${t} must contain special characters`)}}[e];if(h){let{validate:s}=m.find(C=>C.validate)||{};typeof h=="function"?m.push({validate:{...s,...n,[e]:h}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:h[r]}}):m.push({[e]:h})}return m};var lt=e=>{let r=_react.useMemo.call(void 0, ()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:u,formId:m,setSelected:o,useSelected:c}=y(),{name:d,formId:l,...p}=W(),{formId:b,name:A}=B(),T=e.label,g=e.dataField;_react.useEffect.call(void 0, ()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(T=F.changeAll(g)),e.disabledHierarchy||(A&&m===b&&(g=`${A}${g}`),d&&m===l&&(g=`${d}${g}`));let f=!1;typeof e.disabled=="boolean"?f=e.disabled:typeof p.disabled=="boolean"?f=p.disabled:f=!!n;let U=!1;typeof e.readOnly=="boolean"?U=e.readOnly:typeof p.readOnly=="boolean"?U=p.readOnly:U=!!u;let h=!1;typeof e.hidden=="boolean"&&(h=e.hidden),typeof e.required=="boolean"&&(typeof e.validationRules>"u"?e.validationRules={required:e.required}:typeof e.validationRules=="string"&&e.validationRules==="email"?e.validationRules={email:!0,required:e.required}:typeof e.validationRules=="object"&&(e.validationRules={...e.validationRules,required:e.required}));let s=f||U||h?{required:!1}:G({...e,label:T,dataField:g}),C=_reacthookform.useController.call(void 0, {name:g,control:a,disabled:f,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:s}),ie=C.fieldState.invalid,ae=_optionalChain([C, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]),me=_reacthookform.useWatch.call(void 0, {name:g,control:a,defaultValue:e.defaultValue}),le=_react.useMemo.call(void 0, ()=>D(ce=>o(fe=>({...fe,[g]:ce||null}))),[o]),de=c(g),ue=_optionalChain([s, 'optionalAccess', _52 => _52.required]);return{...e,setSelectedField:le,label:T,dataField:g,controller:C,invalid:ie,messageError:ae,selectedField:de,value:me,required:ue}};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 ft=Z;exports.BgsFormArray = ke; exports.BgsFormGroup = Ke; exports.BgsReactFormProvider = oe; exports.PatternTypeEnum = Je; exports.createStore = M; exports.default = ft; exports.getFieldValue = R; exports.useBgsController = lt; exports.useBgsForm = y; exports.useBgsFormArray = B; exports.useBgsFormArrayInit = J; exports.useBgsFormGroup = W; exports.useBgsFormInit = z;
package/dist/index.d.cts CHANGED
@@ -177,7 +177,6 @@ declare function useFormGroup(): UseFormGroup;
177
177
 
178
178
  interface BgsReactFormContextData {
179
179
  validationMessage?: {
180
- visibleLabel?: boolean;
181
180
  required?: (label: string) => string;
182
181
  minLength?: (label: string, value: string) => string;
183
182
  maxLength?: (label: string, value: string) => string;
package/dist/index.d.ts CHANGED
@@ -177,7 +177,6 @@ declare function useFormGroup(): UseFormGroup;
177
177
 
178
178
  interface BgsReactFormContextData {
179
179
  validationMessage?: {
180
- visibleLabel?: boolean;
181
180
  required?: (label: string) => string;
182
181
  minLength?: (label: string, value: string) => string;
183
182
  maxLength?: (label: string, value: string) => string;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{useEffect as H,useRef as Re}from"react";import{createContext as pe,useCallback as N,useContext as fe,useRef as ge}from"react";import{jsx as ye}from"react/jsx-runtime";var L=pe(void 0);function y(){let e=fe(L);return e||{}}function P({children:e,controller:r,onSubmit:t}){let i=ge([]),a=N(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=N(o=>{i.current=i.current.filter(c=>c.id!==o)},[]),u=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:u};return ye(L.Provider,{value:m,children:e})}import Fe 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 I(e,r){return typeof e=="function"?e(r):e}var Ve=Fe.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),F={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=F.snackCase(F.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 $=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 xe,useForm as be,useWatch as Te}from"react-hook-form";import{useMemo as Ae,useRef as Ue,useState as Ce}from"react";import{useSyncExternalStore as he}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 u(m){return he(a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:u}}var w=new WeakMap;function q(e){return w.has(e)||w.set(e,M({})),w.get(e)}var z=(e,r)=>{e||(e={});let t=Ue(null),[i,a]=Ce(!1),n=be({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),u=q(n),m=Ae(()=>x(),[]),o=l=>l?R($(n.getValues()),l):$(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=>xe({control:n.control,name:l}),useWatch:l=>Te({control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>u.useStore(f=>R(f,l)),setSelected:u.setState};return[d,d]};import{Fragment as Pe,jsx as B}from"react/jsx-runtime";var Se=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:a,children:n,...u})=>{let m=a??z(),[o]=Array.isArray(m)?m:[m],c=Re(void 0),d=async l=>{l.preventDefault(),l.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),b=o.getData();f?e&&e({...b},{...o}):t&&t(o.formControl.formState.errors)};return H(()=>{i&&E(c.current||{},i)&&(o.formControl.reset(i),c.current=i)},[i,o.formControl.reset]),H(()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),B(Pe,{children:B(P,{controller:{...o,disabled:u?.disabled,readOnly:u?.readOnly},onSubmit:e,children:B("form",{...u,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},Z=Se;import _,{useEffect as Oe}from"react";import{createContext as Ie,useContext as $e}from"react";import{jsx as we}from"react/jsx-runtime";var j=Ie(void 0);function v(){let e=$e(j);return e||{}}function O({children:e,...r}){return we(j.Provider,{value:r,children:e})}import{useFieldArray as Be}from"react-hook-form";import{useMemo as ve}from"react";var J=e=>{let r=y(),t=Be({control:r.control,name:e}),a={formArrayId:ve(()=>x(),[]),...t,...r};return[a,a]};import{Fragment as X,jsx as S}from"react/jsx-runtime";var Q=({name:e,defaultData:r,controller:t,children:i})=>{let a=t??J(e),[n]=Array.isArray(a)?a:[a];return Oe(()=>{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(X,{children:n.fields.map((u,m)=>{let o=`${e}.${m}.`,c={...n,index:m,fieldId:u.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 S(_.Fragment,{children:S(O,{...c,children:I(i,c)})},u.id)})})};Q.displayName="BgsFormArray";var We=Q,Or=_.memo(({children:e,props:r})=>S(X,{children:I(e,r)}));import{useMemo as Le}from"react";import{createContext as ke,useContext as Ge}from"react";import{jsx as Ne}from"react/jsx-runtime";var Y=ke(void 0);function W(){let e=Ge(Y);return e||{}}function k({children:e,...r}){return Ne(Y.Provider,{value:r,children:e})}import{Fragment as Ke,jsx as V}from"react/jsx-runtime";var ee=({children:e,...r})=>{let t=y(),i=Le(()=>x(),[]);return V(Ke,{children:V(k,{...t,...r,formGroupId:i,children:e})})};ee.displayName="BgsFormGroup";var Ee=ee;import{createContext as De,useContext as Me}from"react";import{jsx as qe}from"react/jsx-runtime";var re=De(void 0);function te(){let e=Me(re);return e||{}}function oe({children:e,...r}){return qe(re.Provider,{value:r,children:e})}import{useEffect as ze,useMemo as se}from"react";import{useController as He,useWatch as Ze}from"react-hook-form";function G({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),a=[];return e&&(typeof e=="string"?ne(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:u}=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&&ne(n,o,r,t,i,u,c).forEach(d=>a.push(d))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...u,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var ne=(e,r,t,i,a,n,u)=>{let m=[],{validationMessage:o}=te(),{required:c,minLength:d,maxLength:l,min:f,max:b,email:A,match:T,diff:g,pattern:p}=o||{},h={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:b?b(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,}))$/)||(A?A(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(T?T(t,u||F.changeAll(r)):`${t} must be same with ${u||F.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(g?g(t,u||F.changeAll(r)):`${t} must be different with ${u||F.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(p?.alphabet?p?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(p?.alphanumber?p?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(p?.number?p?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(p?.lowercase?p?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(p?.url?p?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(p?.uppercase?p?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(p?.mixedcase?p?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(p?.specialcharacters?p?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(h){let{validate:s}=m.find(C=>C.validate)||{};typeof h=="function"?m.push({validate:{...s,...n,[e]:h}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:h[r]}}):m.push({[e]:h})}return m};var mt=e=>{let r=se(()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:u,formId:m,setSelected:o,useSelected:c}=y(),{name:d,formId:l,...f}=W(),{formId:b,name:A}=v(),T=e.label,g=e.dataField;ze(()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(T=F.changeAll(g)),e.disabledHierarchy||(A&&m===b&&(g=`${A}${g}`),d&&m===l&&(g=`${d}${g}`));let p=!1;typeof e.disabled=="boolean"?p=e.disabled:typeof f.disabled=="boolean"?p=f.disabled:p=!!n;let U=!1;typeof e.readOnly=="boolean"?U=e.readOnly:typeof f.readOnly=="boolean"?U=f.readOnly:U=!!u;let h=!1;typeof e.hidden=="boolean"&&(h=e.hidden);let s=p||U||h?{required:!1}:G({...e,label:T,dataField:g});e.required&&(s={...s,required:e.required});let C=He({name:g,control:a,disabled:p,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:s}),ie=C.fieldState.invalid,ae=C.fieldState.error?.message,me=Ze({name:g,control:a,defaultValue:e.defaultValue}),le=se(()=>D(ue=>o(ce=>({...ce,[g]:ue||null}))),[o]),de=c(g);return{...e,setSelectedField:le,label:T,dataField:g,controller:C,invalid:ie,messageError:ae,selectedField:de,value:me}};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=Z;export{We as BgsFormArray,Ee as BgsFormGroup,oe as BgsReactFormProvider,je as PatternTypeEnum,M as createStore,ct as default,R as getFieldValue,mt as useBgsController,y as useBgsForm,v as useBgsFormArray,J as useBgsFormArrayInit,W as useBgsFormGroup,z as useBgsFormInit};
1
+ import{useEffect as H,useRef as Se}from"react";import{createContext as pe,useCallback as N,useContext as ge,useRef as ye}from"react";import{jsx as Fe}from"react/jsx-runtime";var L=pe(void 0);function y(){let e=ge(L);return e||{}}function P({children:e,controller:r,onSubmit:t}){let i=ye([]),a=N(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=N(o=>{i.current=i.current.filter(c=>c.id!==o)},[]),u=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:u};return Fe(L.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 I(e,r){return typeof e=="function"?e(r):e}var er=he.memo(e=>{let{children:r,props:t}=e;return typeof r=="function"?r(t):r}),F={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=F.snackCase(F.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 $=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 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 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 u(m){return xe(a,()=>m?m(r):r,()=>m?m(r):r)}return{getSnapshot:i,subscribe:a,setState:n,useStore:u}}var v=new WeakMap;function q(e){return v.has(e)||v.set(e,M({})),v.get(e)}var z=(e,r)=>{e||(e={});let t=Ce(null),[i,a]=Re(!1),n=Te({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),u=q(n),m=Ue(()=>x(),[]),o=l=>l?R($(n.getValues()),l):$(n.getValues()),d={...n,ref:t,reset:l=>{l?typeof l=="string"?n.resetField(l,{}):typeof l=="object"&&K(l,0)&&l.forEach(p=>n.resetField(p)):n.reset()},updateData:l=>{let p=o();n.reset({...p,...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=>u.useStore(p=>R(p,l)),setSelected:u.setState};return[d,d]};import{Fragment as Ie,jsx as w}from"react/jsx-runtime";var Pe=({onSubmit:e,onChange:r,onInvalid:t,formData:i,controller:a,children:n,...u})=>{let m=a??z(),[o]=Array.isArray(m)?m:[m],c=Se(void 0),d=async l=>{l.preventDefault(),l.stopPropagation(),o.setIsSubmit(!0);let p=await o.formControl.trigger(),b=o.getData();p?e&&e({...b},{...o}):t&&t(o.formControl.formState.errors)};return H(()=>{i&&E(c.current||{},i)&&(o.formControl.reset(i),c.current=i)},[i,o.formControl.reset]),H(()=>{if(!r)return;let l=o.formControl.watch(r);return()=>l.unsubscribe()},[]),w(Ie,{children:w(P,{controller:{...o,disabled:u?.disabled,readOnly:u?.readOnly},onSubmit:e,children:w("form",{...u,id:o.formId,ref:o.ref,onSubmit:d,children:n})})})},Z=Pe;import _,{useEffect as We}from"react";import{createContext as $e,useContext as ve}from"react";import{jsx as we}from"react/jsx-runtime";var j=$e(void 0);function B(){let e=ve(j);return e||{}}function O({children:e,...r}){return we(j.Provider,{value:r,children:e})}import{useFieldArray as Be}from"react-hook-form";import{useMemo as Oe}from"react";var J=e=>{let r=y(),t=Be({control:r.control,name:e}),a={formArrayId:Oe(()=>x(),[]),...t,...r};return[a,a]};import{Fragment as X,jsx as S}from"react/jsx-runtime";var Q=({name:e,defaultData:r,controller:t,children:i})=>{let a=t??J(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(X,{children:n.fields.map((u,m)=>{let o=`${e}.${m}.`,c={...n,index:m,fieldId:u.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 S(_.Fragment,{children:S(O,{...c,children:I(i,c)})},u.id)})})};Q.displayName="BgsFormArray";var ke=Q,Wr=_.memo(({children:e,props:r})=>S(X,{children:I(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 Y=Ge(void 0);function W(){let e=Ne(Y);return e||{}}function k({children:e,...r}){return Le(Y.Provider,{value:r,children:e})}import{Fragment as De,jsx as V}from"react/jsx-runtime";var ee=({children:e,...r})=>{let t=y(),i=Ee(()=>x(),[]);return V(De,{children:V(k,{...t,...r,formGroupId:i,children:e})})};ee.displayName="BgsFormGroup";var Ke=ee;import{createContext as Me,useContext as qe}from"react";import{jsx as ze}from"react/jsx-runtime";var re=Me(void 0);function te(){let e=qe(re);return e||{}}function oe({children:e,...r}){return ze(re.Provider,{value:r,children:e})}import{useEffect as He,useMemo as se}from"react";import{useController as Ze,useWatch as je}from"react-hook-form";function G({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),a=[];return e&&(typeof e=="string"?ne(e,!0,r,t,i,{}).forEach(n=>a.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:u}=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&&ne(n,o,r,t,i,u,c).forEach(d=>a.push(d))}else if(typeof e[n]=="object"){let o=e[n];a.push({validate:{...u,[n]:c=>o.validation(c)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...a)}var ne=(e,r,t,i,a,n,u)=>{let m=[],{validationMessage:o}=te(),{required:c,minLength:d,maxLength:l,min:p,max:b,email:A,match:T,diff:g,pattern:f}=o||{},h={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:p?p(t,r):`${t} should be at least ${r}`},max:{value:Number(r),message:b?b(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,}))$/)||(A?A(t):`${t} must be type email`):!0,match:(s="")=>s?s===(a&&a(r))||(T?T(t,u||F.changeAll(r)):`${t} must be same with ${u||F.changeAll(r)}`):!0,diff:(s="")=>s?s!==(a&&a(r))||(g?g(t,u||F.changeAll(r)):`${t} must be different with ${u||F.changeAll(r)}`):!0,pattern:{alphabet:(s="")=>!!s&&new RegExp("^[A-Za-z ]*$").test(s)||(f?.alphabet?f?.alphabet(t):`${t} must be format Alphabet`),alphanumber:(s="")=>!!s&&new RegExp("^[A-Za-z0-9 ]*$").test(s)||(f?.alphanumber?f?.alphanumber(t):`${t} must be format Alphabet or Number`),number:(s="")=>!!s&&new RegExp("^[0-9]*$").test(s)||(f?.number?f?.number(t):`${t} must be format Number`),lowercase:(s="")=>!!s&&new RegExp("^[a-z0-9 ]*$").test(s)||(f?.lowercase?f?.lowercase(t):`${t} must be format Lowercase`),url:(s="")=>!!s&&/^(ftp|http|https):\/\/[^ "]+$/.test(s)||(f?.url?f?.url(t):`${t} must be a valid URL`),uppercase:(s="")=>!!s&&new RegExp("^[A-Z0-9 ]*$").test(s)||(f?.uppercase?f?.uppercase(t):`${t} must be format Uppercase`),mixedcase:(s="")=>!!s&&/[a-z]/.test(s)&&/[A-Z]/.test(s)||(f?.mixedcase?f?.mixedcase(t):`${t} must be mixed case`),specialcharacters:(s="")=>!!s&&/[^a-zA-Z0-9\s]/.test(s)||(f?.specialcharacters?f?.specialcharacters(t):`${t} must contain special characters`)}}[e];if(h){let{validate:s}=m.find(C=>C.validate)||{};typeof h=="function"?m.push({validate:{...s,...n,[e]:h}}):e==="pattern"?m.push({validate:{...s,...n,[`${e}${r}`]:h[r]}}):m.push({[e]:h})}return m};var lt=e=>{let r=se(()=>x(),[]),{registerItem:t,unregisterItem:i,control:a,disabled:n,readOnly:u,formId:m,setSelected:o,useSelected:c}=y(),{name:d,formId:l,...p}=W(),{formId:b,name:A}=B(),T=e.label,g=e.dataField;He(()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(T=F.changeAll(g)),e.disabledHierarchy||(A&&m===b&&(g=`${A}${g}`),d&&m===l&&(g=`${d}${g}`));let f=!1;typeof e.disabled=="boolean"?f=e.disabled:typeof p.disabled=="boolean"?f=p.disabled:f=!!n;let U=!1;typeof e.readOnly=="boolean"?U=e.readOnly:typeof p.readOnly=="boolean"?U=p.readOnly:U=!!u;let h=!1;typeof e.hidden=="boolean"&&(h=e.hidden),typeof e.required=="boolean"&&(typeof e.validationRules>"u"?e.validationRules={required:e.required}:typeof e.validationRules=="string"&&e.validationRules==="email"?e.validationRules={email:!0,required:e.required}:typeof e.validationRules=="object"&&(e.validationRules={...e.validationRules,required:e.required}));let s=f||U||h?{required:!1}:G({...e,label:T,dataField:g}),C=Ze({name:g,control:a,disabled:f,defaultValue:e.defaultValue,shouldUnregister:e.shouldUnregister,rules:s}),ie=C.fieldState.invalid,ae=C.fieldState.error?.message,me=je({name:g,control:a,defaultValue:e.defaultValue}),le=se(()=>D(ce=>o(fe=>({...fe,[g]:ce||null}))),[o]),de=c(g),ue=s?.required;return{...e,setSelectedField:le,label:T,dataField:g,controller:C,invalid:ie,messageError:ae,selectedField:de,value:me,required:ue}};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 ft=Z;export{ke as BgsFormArray,Ke as BgsFormGroup,oe as BgsReactFormProvider,Je as PatternTypeEnum,M as createStore,ft as default,R as getFieldValue,lt as useBgsController,y as useBgsForm,B as useBgsFormArray,J as useBgsFormArrayInit,W as useBgsFormGroup,z as useBgsFormInit};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgscore/react-form",
3
- "version": "0.0.52",
3
+ "version": "0.0.54",
4
4
  "description": "React form component library using context and react-hook-form with dynamic arrays, groups, and validations.",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",