@bgscore/react-form 0.0.53 → 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 +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 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 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 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 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=Pe;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 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: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 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,...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(ce=>o(pe=>({...pe,[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 pt=Z;exports.BgsFormArray = ke; exports.BgsFormGroup = Ke; exports.BgsReactFormProvider = oe; exports.PatternTypeEnum = Je; exports.createStore = M; exports.default = pt; exports.getFieldValue = R; exports.useBgsController = lt; 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.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{useEffect as H,useRef as Se}from"react";import{createContext as fe,useCallback as N,useContext as ge,useRef as ye}from"react";import{jsx as Fe}from"react/jsx-runtime";var L=fe(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 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=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(f=>n.resetField(f)):n.reset()},updateData:l=>{let f=o();n.reset({...f,...l})},getData:o,formControl:n,useFieldArray:l=>be({control:n.control,name:l}),useWatch:l=>Ae({control:n.control,name:l}),isSubmit:i,formId:m,setIsSubmit:a,useSelected:l=>u.useStore(f=>R(f,l)),setSelected:u.setState};return[d,d]};import{Fragment as Ie,jsx as B}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 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(Ie,{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=Pe;import _,{useEffect as We}from"react";import{createContext as $e,useContext as we}from"react";import{jsx as Be}from"react/jsx-runtime";var j=$e(void 0);function v(){let e=we(j);return e||{}}function O({children:e,...r}){return Be(j.Provider,{value:r,children:e})}import{useFieldArray as ve}from"react-hook-form";import{useMemo as Oe}from"react";var J=e=>{let r=y(),t=ve({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: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 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,...f}=W(),{formId:b,name:A}=v(),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 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=Ze({name:g,control:a,disabled:p,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(pe=>({...pe,[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 pt=Z;export{ke as BgsFormArray,Ke as BgsFormGroup,oe as BgsReactFormProvider,Je as PatternTypeEnum,M as createStore,pt as default,R as getFieldValue,lt 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