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