@bgscore/react-form 0.0.32 → 0.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _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 g(){let e=_react.useContext.call(void 0, N);return e||{}}function R({children:e,controller:r,onSubmit:t}){let i=_react.useRef.call(void 0, []),m=_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,a=r.getData();u&&t&&t({...a,...o},{...r})},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:c};return _jsxruntime.jsx.call(void 0, N.Provider,{value:l,children:e})}function h(){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 y={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,m)=>m.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=y.snackCase(y.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),C= exports.getFieldValue =(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),m=e;for(let n of i){if(m==null)return t;m=m[n]}return m===void 0?t:m};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}var _reacthookform = require('react-hook-form');function M(e){let r=e,t=new Set;function i(){return r}function m(l){return t.add(l),()=>t.delete(l)}function n(l){typeof l=="function"?r=l(r):r=l,t.forEach(o=>o())}function c(l){return _react.useSyncExternalStore.call(void 0, m,()=>l?l(r):r,()=>l?l(r):r)}return{getSnapshot:i,subscribe:m,setState:n,useStore:c}}var I=new WeakMap;function S(e){return I.has(e)||I.set(e,M({})),I.get(e)}var D=(e,r)=>{e||(e={});let t=_react.useRef.call(void 0, null),[i,m]=_react.useState.call(void 0, !1),n=_reacthookform.useForm.call(void 0, {...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),c=S(n),l=_react.useMemo.call(void 0, ()=>h(),[]),o=a=>a?C(P(n.getValues()),a):P(n.getValues()),u={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&K(a,0)&&a.forEach(f=>n.resetField(f)):n.reset()},updateData:a=>{let f=o();n.reset({...f,...a})},getData:o,formControl:n,useFieldArray:a=>_reacthookform.useFieldArray.call(void 0, {control:n.control,name:a}),useWatch:a=>_reacthookform.useWatch.call(void 0, {control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>c.useStore(f=>C(f,a)),setSelected:c.setState};return[u,u]};var fe=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:m,children:n,...c})=>{let l=_nullishCoalesce(m, () => (D())),[o]=Array.isArray(l)?l:[l],p=_react.useRef.call(void 0, void 0),u=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),b=o.getData();f?e&&e({...b},{...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 a=o.formControl.watch(r);return()=>a.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, R,{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})})})},Z=fe;var q=_react.createContext.call(void 0, void 0);function w(){let e=_react.useContext.call(void 0, q);return e||{}}function B({children:e,...r}){return _jsxruntime.jsx.call(void 0, q.Provider,{value:r,children:e})}var H=e=>{let r=g(),t=_reacthookform.useFieldArray.call(void 0, {control:r.control,name:e}),m={formArrayId:_react.useMemo.call(void 0, ()=>h(),[]),...t,...r};return[m,m]};var j=({name:e,defaultData:r,controller:t,children:i})=>{let m=_nullishCoalesce(t, () => (H(e))),[n]=Array.isArray(m)?m:[m];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,l)=>{let o=S(n.formControl),p=`${e}.${l}.`,u={...n,index:l,name:p,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:a=>n.watch(a?`${p}${a}`:p.slice(0,-1)),setValueItem:(a,f)=>n.setValue(`${p}${a}`,f),useSelectedItem:a=>n.useSelected(`${p}${a}`)};return _jsxruntime.jsx.call(void 0, _react2.default.Fragment,{children:_jsxruntime.jsx.call(void 0, B,{...u,children:L(i,u)})},c.id||l)})})};j.displayName="BgsFormArray";var Ue=j;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 Q=({children:e,...r})=>{let t=g(),i=_react.useMemo.call(void 0, ()=>h(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, W,{...t,...r,formGroupId:i,children:e})})};Q.displayName="BgsFormGroup";var $e=Q;var X=_react.createContext.call(void 0, void 0);function Y(){let e=_react.useContext.call(void 0, X);return e||{}}function V({children:e,...r}){return _jsxruntime.jsx.call(void 0, X.Provider,{value:r,children:e})}function k({validationRules:e,label:r}){let{formControl:t,getData:i}=g(),m=[];return e&&(typeof e=="string"?ee(e,!0,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:c}=m.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&&ee(n,o,r,t,i,c,p).forEach(u=>m.push(u))}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...c,[n]:p=>o.validation(p)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...m)}var ee=(e,r,t,i,m,n,c)=>{let l=[],{validationMessage:o}=Y(),{required:p,minLength:u,maxLength:a,min:f,max:b,email:F,match:x,diff:T,pattern:d}=o||{},A={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:a?a(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,}))$/)||(F?F(t):`${t} must be type email`):!0,match:(s="")=>s?s===(m&&m(r))||(x?x(t,c||y.changeAll(r)):`${t} must be same with ${c||y.changeAll(r)}`):!0,diff:(s="")=>s?s!==(m&&m(r))||(T?T(t,c||y.changeAll(r)):`${t} must be different with ${c||y.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(A){let{validate:s}=l.find(re=>re.validate)||{};typeof A=="function"?l.push({validate:{...s,...n,[e]:A}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:A[r]}}):l.push({[e]:A})}return l};var Qr=e=>{let r=_react.useMemo.call(void 0, ()=>h(),[]),{registerItem:t,unregisterItem:i,formControl:m,disabled:n,readOnly:c,formId:l}=g(),{name:o,formId:p,...u}=O(),{formId:a,name:f}=w(),b=e.label,F=e.dataField;_react.useEffect.call(void 0, ()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(b=y.changeAll(F)),f&&l===a&&(F=`${f}${F}`);let x=!1;typeof e.disabled=="boolean"?x=e.disabled:typeof u.disabled=="boolean"?x=u.disabled:x=!!n;let T=!1;typeof e.readOnly=="boolean"?T=e.readOnly:typeof u.readOnly=="boolean"?T=u.readOnly:T=!!c;let d=!1;typeof e.hidden=="boolean"&&(d=e.hidden);let U=_reacthookform.useController.call(void 0, {name:F,control:m.control,disabled:x,defaultValue:e.defaultValue,rules:x||T||d?{required:!1}:k(e)}),A=U.fieldState.invalid,s=_optionalChain([U, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]);return{...e,label:b,dataField:F,controller:U,invalid:A,messageError:s}};var Ne=(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))(Ne||{});var et=Z;exports.BgsArrayForm = Ue; exports.BgsGroupForm = $e; exports.BgsReactFormProvider = V; exports.PatternTypeEnum = Ne; exports.createStore = M; exports.default = et; exports.getFieldValue = C; exports.useBgsArrayForm = w; exports.useBgsForm = g; exports.useBgsGroupForm = O; exports.useController = Qr; exports.useFormArrayInit = H; exports.useFormInit = D;
|
|
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 y(){let e=_react.useContext.call(void 0, N);return e||{}}function R({children:e,controller:r,onSubmit:t}){let i=_react.useRef.call(void 0, []),m=_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,a=r.getData();u&&t&&t({...a,...o},{...r})},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:c};return _jsxruntime.jsx.call(void 0, N.Provider,{value:l,children:e})}function b(){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 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,m)=>m.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 P=e=>(Object.keys(e).forEach(r=>{e[r]===void 0&&(e[r]=null)}),e),C= exports.getFieldValue =(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),m=e;for(let n of i){if(m==null)return t;m=m[n]}return m===void 0?t:m};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}var _reacthookform = require('react-hook-form');function M(e){let r=e,t=new Set;function i(){return r}function m(l){return t.add(l),()=>t.delete(l)}function n(l){typeof l=="function"?r=l(r):r=l,t.forEach(o=>o())}function c(l){return _react.useSyncExternalStore.call(void 0, m,()=>l?l(r):r,()=>l?l(r):r)}return{getSnapshot:i,subscribe:m,setState:n,useStore:c}}var I=new WeakMap;function S(e){return I.has(e)||I.set(e,M({})),I.get(e)}var D=(e,r)=>{e||(e={});let t=_react.useRef.call(void 0, null),[i,m]=_react.useState.call(void 0, !1),n=_reacthookform.useForm.call(void 0, {...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),c=S(n),l=_react.useMemo.call(void 0, ()=>b(),[]),o=a=>a?C(P(n.getValues()),a):P(n.getValues()),u={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&K(a,0)&&a.forEach(f=>n.resetField(f)):n.reset()},updateData:a=>{let f=o();n.reset({...f,...a})},getData:o,formControl:n,useFieldArray:a=>_reacthookform.useFieldArray.call(void 0, {control:n.control,name:a}),useWatch:a=>_reacthookform.useWatch.call(void 0, {control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>c.useStore(f=>C(f,a)),setSelected:c.setState};return[u,u]};var fe=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:m,children:n,...c})=>{let l=_nullishCoalesce(m, () => (D())),[o]=Array.isArray(l)?l:[l],p=_react.useRef.call(void 0, void 0),u=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),x=o.getData();f?e&&e({...x},{...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 a=o.formControl.watch(r);return()=>a.unsubscribe()},[]),_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, R,{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})})})},Z=fe;var q=_react.createContext.call(void 0, void 0);function w(){let e=_react.useContext.call(void 0, q);return e||{}}function B({children:e,...r}){return _jsxruntime.jsx.call(void 0, q.Provider,{value:r,children:e})}var H=e=>{let r=y(),t=_reacthookform.useFieldArray.call(void 0, {control:r.control,name:e}),m={formArrayId:_react.useMemo.call(void 0, ()=>b(),[]),...t,...r};return[m,m]};var j=({name:e,defaultData:r,controller:t,children:i})=>{let m=_nullishCoalesce(t, () => (H(e))),[n]=Array.isArray(m)?m:[m];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,l)=>{let o=S(n.formControl),p=`${e}.${l}.`,u={...n,index:l,name:p,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:a=>n.watch(a?`${p}${a}`:p.slice(0,-1)),setValueItem:(a,f)=>n.setValue(`${p}${a}`,f),useSelectedItem:a=>n.useSelected(`${p}${a}`)};return _jsxruntime.jsx.call(void 0, _react2.default.Fragment,{children:_jsxruntime.jsx.call(void 0, B,{...u,children:L(i,u)})},c.id||l)})})};j.displayName="BgsFormArray";var Ue=j;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 Q=({children:e,...r})=>{let t=y(),i=_react.useMemo.call(void 0, ()=>b(),[]);return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:_jsxruntime.jsx.call(void 0, W,{...t,...r,formGroupId:i,children:e})})};Q.displayName="BgsFormGroup";var $e=Q;var X=_react.createContext.call(void 0, void 0);function Y(){let e=_react.useContext.call(void 0, X);return e||{}}function V({children:e,...r}){return _jsxruntime.jsx.call(void 0, X.Provider,{value:r,children:e})}function k({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),m=[];return e&&(typeof e=="string"?ee(e,!0,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:c}=m.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&&ee(n,o,r,t,i,c,p).forEach(u=>m.push(u))}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...c,[n]:p=>o.validation(p)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...m)}var ee=(e,r,t,i,m,n,c)=>{let l=[],{validationMessage:o}=Y(),{required:p,minLength:u,maxLength:a,min:f,max:x,email:g,match:h,diff:T,pattern:d}=o||{},A={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:a?a(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:x?x(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,}))$/)||(g?g(t):`${t} must be type email`):!0,match:(s="")=>s?s===(m&&m(r))||(h?h(t,c||F.changeAll(r)):`${t} must be same with ${c||F.changeAll(r)}`):!0,diff:(s="")=>s?s!==(m&&m(r))||(T?T(t,c||F.changeAll(r)):`${t} must be different with ${c||F.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(A){let{validate:s}=l.find(re=>re.validate)||{};typeof A=="function"?l.push({validate:{...s,...n,[e]:A}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:A[r]}}):l.push({[e]:A})}return l};var Qr=e=>{let r=_react.useMemo.call(void 0, ()=>b(),[]),{registerItem:t,unregisterItem:i,formControl:m,disabled:n,readOnly:c,formId:l}=y(),{name:o,formId:p,...u}=O(),{formId:a,name:f}=w(),x=e.label,g=e.dataField;_react.useEffect.call(void 0, ()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(x=F.changeAll(g)),f&&l===a&&(g=`${f}${g}`);let h=!1;typeof e.disabled=="boolean"?h=e.disabled:typeof u.disabled=="boolean"?h=u.disabled:h=!!n;let T=!1;typeof e.readOnly=="boolean"?T=e.readOnly:typeof u.readOnly=="boolean"?T=u.readOnly:T=!!c;let d=!1;typeof e.hidden=="boolean"&&(d=e.hidden);let U=_reacthookform.useController.call(void 0, {name:g,control:m.control,disabled:h,defaultValue:e.defaultValue,rules:h||T||d?{required:!1}:k({...e,label:x,dataField:g})}),A=U.fieldState.invalid,s=_optionalChain([U, 'access', _49 => _49.fieldState, 'access', _50 => _50.error, 'optionalAccess', _51 => _51.message]);return{...e,label:x,dataField:g,controller:U,invalid:A,messageError:s}};var Ne=(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))(Ne||{});var et=Z;exports.BgsArrayForm = Ue; exports.BgsGroupForm = $e; exports.BgsReactFormProvider = V; exports.PatternTypeEnum = Ne; exports.createStore = M; exports.default = et; exports.getFieldValue = C; exports.useBgsArrayForm = w; exports.useBgsForm = y; exports.useBgsGroupForm = O; exports.useController = Qr; exports.useFormArrayInit = H; exports.useFormInit = D;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as z,useRef as de}from"react";import{createContext as te,useCallback as G,useContext as oe,useRef as ne}from"react";import{jsx as se}from"react/jsx-runtime";var N=te(void 0);function
|
|
1
|
+
import{useEffect as z,useRef as de}from"react";import{createContext as te,useCallback as G,useContext as oe,useRef as ne}from"react";import{jsx as se}from"react/jsx-runtime";var N=te(void 0);function y(){let e=oe(N);return e||{}}function R({children:e,controller:r,onSubmit:t}){let i=ne([]),m=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,a=r.getData();u&&t&&t({...a,...o},{...r})},l={...r,registerItem:m,unregisterItem:n,items:i.current,triggerSubmit:c};return se(N.Provider,{value:l,children:e})}function b(){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 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,m)=>m.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 P=e=>(Object.keys(e).forEach(r=>{e[r]===void 0&&(e[r]=null)}),e),C=(e,r,t="")=>{if(!e)return t;if(e.hasOwnProperty(r))return e[r];let i=r.replace(/\[(\d+)\]/g,".$1").split("."),m=e;for(let n of i){if(m==null)return t;m=m[n]}return m===void 0?t:m};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}import{useFieldArray as ae,useForm as me,useWatch as le}from"react-hook-form";import{useMemo as pe,useRef as ue,useState as ce}from"react";import{useSyncExternalStore as ie}from"react";function M(e){let r=e,t=new Set;function i(){return r}function m(l){return t.add(l),()=>t.delete(l)}function n(l){typeof l=="function"?r=l(r):r=l,t.forEach(o=>o())}function c(l){return ie(m,()=>l?l(r):r,()=>l?l(r):r)}return{getSnapshot:i,subscribe:m,setState:n,useStore:c}}var I=new WeakMap;function S(e){return I.has(e)||I.set(e,M({})),I.get(e)}var D=(e,r)=>{e||(e={});let t=ue(null),[i,m]=ce(!1),n=me({...r,reValidateMode:"onSubmit",mode:"all",defaultValues:e}),c=S(n),l=pe(()=>b(),[]),o=a=>a?C(P(n.getValues()),a):P(n.getValues()),u={...n,ref:t,reset:a=>{a?typeof a=="string"?n.resetField(a,{}):typeof a=="object"&&K(a,0)&&a.forEach(f=>n.resetField(f)):n.reset()},updateData:a=>{let f=o();n.reset({...f,...a})},getData:o,formControl:n,useFieldArray:a=>ae({control:n.control,name:a}),useWatch:a=>le({control:n.control,name:a}),isSubmit:i,formId:l,setIsSubmit:m,useSelected:a=>c.useStore(f=>C(f,a)),setSelected:c.setState};return[u,u]};import{Fragment as ge,jsx as $}from"react/jsx-runtime";var fe=({onSubmit:e,onChange:r=()=>{},onInvalid:t=()=>{},formData:i,controller:m,children:n,...c})=>{let l=m??D(),[o]=Array.isArray(l)?l:[l],p=de(void 0),u=async a=>{a.preventDefault(),a.stopPropagation(),o.setIsSubmit(!0);let f=await o.formControl.trigger(),x=o.getData();f?e&&e({...x},{...o}):t(o.formControl.formState.errors)};return z(()=>{i&&E(p.current||{},i)&&(o.formControl.reset(i),p.current=i)},[i,o.formControl.reset]),z(()=>{if(!r)return;let a=o.formControl.watch(r);return()=>a.unsubscribe()},[]),$(ge,{children:$(R,{controller:{...o,disabled:c?.disabled,readOnly:c?.readOnly},onSubmit:e,children:$("form",{...c,id:o.formId,ref:o.ref,onSubmit:u,children:n})})})},Z=fe;import Te,{useEffect as Ae}from"react";import{createContext as ye,useContext as Fe}from"react";import{jsx as xe}from"react/jsx-runtime";var q=ye(void 0);function w(){let e=Fe(q);return e||{}}function B({children:e,...r}){return xe(q.Provider,{value:r,children:e})}import{useFieldArray as he}from"react-hook-form";import{useMemo as be}from"react";var H=e=>{let r=y(),t=he({control:r.control,name:e}),m={formArrayId:be(()=>b(),[]),...t,...r};return[m,m]};import{Fragment as Ce,jsx as v}from"react/jsx-runtime";var j=({name:e,defaultData:r,controller:t,children:i})=>{let m=t??H(e),[n]=Array.isArray(m)?m:[m];return Ae(()=>{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)},[]),v(Ce,{children:n.fields.map((c,l)=>{let o=S(n.formControl),p=`${e}.${l}.`,u={...n,index:l,name:p,countFields:n.fields.length,removeItem:()=>n.remove(l),watchItem:a=>n.watch(a?`${p}${a}`:p.slice(0,-1)),setValueItem:(a,f)=>n.setValue(`${p}${a}`,f),useSelectedItem:a=>n.useSelected(`${p}${a}`)};return v(Te.Fragment,{children:v(B,{...u,children:L(i,u)})},c.id||l)})})};j.displayName="BgsFormArray";var Ue=j;import{useMemo as Ie}from"react";import{createContext as Se,useContext as Re}from"react";import{jsx as Pe}from"react/jsx-runtime";var J=Se(void 0);function O(){let e=Re(J);return e||{}}function W({children:e,...r}){return Pe(J.Provider,{value:r,children:e})}import{Fragment as we,jsx as _}from"react/jsx-runtime";var Q=({children:e,...r})=>{let t=y(),i=Ie(()=>b(),[]);return _(we,{children:_(W,{...t,...r,formGroupId:i,children:e})})};Q.displayName="BgsFormGroup";var $e=Q;import{createContext as Be,useContext as ve}from"react";import{jsx as Oe}from"react/jsx-runtime";var X=Be(void 0);function Y(){let e=ve(X);return e||{}}function V({children:e,...r}){return Oe(X.Provider,{value:r,children:e})}import{useEffect as We,useMemo as ke}from"react";import{useController as Ge}from"react-hook-form";function k({validationRules:e,label:r}){let{formControl:t,getData:i}=y(),m=[];return e&&(typeof e=="string"?ee(e,!0,r,t,i,{}).forEach(n=>m.push(n)):typeof e=="object"&&Object.keys(e).forEach(n=>{let{validate:c}=m.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&&ee(n,o,r,t,i,c,p).forEach(u=>m.push(u))}else if(typeof e[n]=="object"){let o=e[n];m.push({validate:{...c,[n]:p=>o.validation(p)||o.message&&(typeof o.message=="string"?o.message:o.message(r))}})}})),Object.assign({},...m)}var ee=(e,r,t,i,m,n,c)=>{let l=[],{validationMessage:o}=Y(),{required:p,minLength:u,maxLength:a,min:f,max:x,email:g,match:h,diff:T,pattern:d}=o||{},A={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:a?a(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:x?x(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,}))$/)||(g?g(t):`${t} must be type email`):!0,match:(s="")=>s?s===(m&&m(r))||(h?h(t,c||F.changeAll(r)):`${t} must be same with ${c||F.changeAll(r)}`):!0,diff:(s="")=>s?s!==(m&&m(r))||(T?T(t,c||F.changeAll(r)):`${t} must be different with ${c||F.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(A){let{validate:s}=l.find(re=>re.validate)||{};typeof A=="function"?l.push({validate:{...s,...n,[e]:A}}):e==="pattern"?l.push({validate:{...s,...n,[`${e}${r}`]:A[r]}}):l.push({[e]:A})}return l};var Qr=e=>{let r=ke(()=>b(),[]),{registerItem:t,unregisterItem:i,formControl:m,disabled:n,readOnly:c,formId:l}=y(),{name:o,formId:p,...u}=O(),{formId:a,name:f}=w(),x=e.label,g=e.dataField;We(()=>(t({id:r,...e}),()=>{i(r)}),[r,e]),!e.label&&!e.noLabel&&(x=F.changeAll(g)),f&&l===a&&(g=`${f}${g}`);let h=!1;typeof e.disabled=="boolean"?h=e.disabled:typeof u.disabled=="boolean"?h=u.disabled:h=!!n;let T=!1;typeof e.readOnly=="boolean"?T=e.readOnly:typeof u.readOnly=="boolean"?T=u.readOnly:T=!!c;let d=!1;typeof e.hidden=="boolean"&&(d=e.hidden);let U=Ge({name:g,control:m.control,disabled:h,defaultValue:e.defaultValue,rules:h||T||d?{required:!1}:k({...e,label:x,dataField:g})}),A=U.fieldState.invalid,s=U.fieldState.error?.message;return{...e,label:x,dataField:g,controller:U,invalid:A,messageError:s}};var Ne=(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))(Ne||{});var et=Z;export{Ue as BgsArrayForm,$e as BgsGroupForm,V as BgsReactFormProvider,Ne as PatternTypeEnum,M as createStore,et as default,C as getFieldValue,w as useBgsArrayForm,y as useBgsForm,O as useBgsGroupForm,Qr as useController,H as useFormArrayInit,D as useFormInit};
|
package/package.json
CHANGED