UNPKG

@korautils/forms

Version:

![image](https://github.com/user-attachments/assets/ccad1514-7b15-4952-9856-fd03b971403a)

138 lines (123 loc) 23.3 kB
import {a as a$1}from'./chunk-OKMYB4ZY.mjs';import {a as a$2}from'./chunk-E272QRZB.mjs';import {b,a as a$3,c as c$2}from'./chunk-MIZO24FD.mjs';import {a,d as d$1,c as c$1,b as b$1}from'./chunk-6DPEEXVJ.mjs';import*as x from'yup';import {v4}from'uuid';import {Box,Divider,styled,ButtonGroup,Skeleton}from'@mui/material';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import*as d from'react';import d__default,{useState,Suspense,useEffect}from'react';import {useTheme}from'@mui/material/styles/index';import ne from'@mui/material/Box';import ct from'@mui/material/MobileStepper';import dt from'@mui/material/Paper';import ft from'@mui/material/Typography';import Ae from'@mui/material/Button';import Le from'@mui/icons-material/KeyboardArrowLeft';import Fe from'@mui/icons-material/KeyboardArrowRight';import me from'classnames';import {Controller,useForm}from'react-hook-form';import Bt from'@mui/icons-material/Save';import At from'@mui/icons-material/CleaningServices';import {yupResolver}from'@hookform/resolvers/yup';import Nt from'object-path';import Gt from'@mui/material/Alert';import Ht from'@mui/material/AlertTitle';import Vt from'@mui/material/IconButton';import Kt from'@mui/icons-material/Close';var S=({type:o,defaultMessage:e,value:t})=>{if(e)return e;switch(o){case"required":case"string":return "This field is required";case"number":return "You must enter a number";case"boolean":return "You must select an option";case"object":return "You must select an option";case"min":return `Enter at least ${t} digits`;case"max":return `Enter at most ${t} digits`;case"date":return "Enter a valid date";case"array":return "You must add at least one element";case"url":return "You must enter a valid URL";case"email":return "You must enter a valid email";case"pattern":return `The pattern does not match: ${t}`;default:return "This field is required"}};var V=class o{schema={};constructor(){}static newInstance(){return new o}static createRule({type:e,required:t,isUrl:r,isEmail:n,pattern:i,min:l,max:p}){let m=x[e];if(!m)return;let s=m().typeError(S({type:e}));if(t!==void 0&&t?.value){let h=S({type:"required",defaultMessage:t.message});s=s.required(h).typeError(h);}return r!==void 0&&(s=s.matches(b,S({type:"url",defaultMessage:r.message}))),n!==void 0&&(s=s.matches(a$3,S({type:"email",defaultMessage:n.message}))),i?.value!==void 0&&(s=s.matches(i.value,S({type:"pattern",value:String(i.value),defaultMessage:i.message}))),l?.value!==void 0&&(s=s.min(l.value,S({type:"min",value:l.value,defaultMessage:l.message}))),p?.value!==void 0&&(s=s.max(p.value,S({type:"max",value:p.value,defaultMessage:p.message}))),s}addRule(e){let t=o.createRule(e);return this.schema[e.name]=t,this}pushRule(e,t){this.schema[e]=t;}static string=x.string;static number=x.number;static date=x.date;static object=x.object;static boolean=x.boolean;build(){return x.object(this.schema)}},Te=V;var k=Te;var je=({options:o=[]})=>jsx(ButtonGroup,{children:!d$1(o)&&o.map((e,t)=>jsx(a$2,{variant:e.variant,children:e.label},t))}),_=je;var K=d__default.lazy(()=>import('./TabsRenderer-RZDA6NEF.mjs')),Re=d__default.lazy(()=>import('./Button-G6HJFIZL.mjs')),w=d__default.lazy(()=>import('./TextField-VWD6W4MX.mjs')),z=d__default.lazy(()=>import('./AutocompleteField-VJG3HWL7.mjs')),U=d__default.lazy(()=>import('./CheckboxPreview-RCJYOFFZ.mjs')),Y=d__default.lazy(()=>import('./EmailPreview-5AJM4MBV.mjs')),W=d__default.lazy(()=>import('./InputPassword-OTTOFMCL.mjs')),$=d__default.lazy(()=>import('./Price-7H2EKM66.mjs'));d__default.lazy(()=>import('./Select-UHP2LXXI.mjs'));var q=d__default.lazy(()=>import('./RadioGroupPreview-7STBCDV4.mjs')),X=d__default.lazy(()=>import('./BasicDatePicker-7QYEB42F.mjs')),J=d__default.lazy(()=>import('./BasicDateField-IXKN3MIB.mjs')),j=d__default.lazy(()=>import('./BasicTimeField-LQCNOC5E.mjs')),Q=d__default.lazy(()=>import('./BasicTimeRangeField-Z5WXE6SW.mjs')),Z=d__default.lazy(()=>import('./DatePickerModal-Q4W6UH3N.mjs')),ee=d__default.lazy(()=>import('./BasicDateRangePicker-XNWRPMEV.mjs')),te=d__default.lazy(()=>import('./BasicTimePickerField-XZ6DOOVD.mjs')),re=d__default.lazy(()=>import('./BasicTimePickerModalField-LPZ5OPHK.mjs')),tt=({component:o,...e})=>jsx(o,{...e,style:{width:"100%"}});({BOX:tt({component:Box})});var f=["id","name","label","disabled","error","helperText","labelVariant","size","style","value","onChange","className","disabled","required","color"];function Ie(o,e){let t=rt[o]||[];return Object.keys(e).reduce((n,i)=>(t.includes(i)&&(n[i]=e[i]),n),{})}function c(...o){return o}var rt={INPUT:c("placeholder","InputProps","type","onInput",...f),TEXTFIELD:c("placeholder","InputProps","onInput",...f),PASSWORD:c("placeholder",...f),EMAIL:c("placeholder",...f),CHECKBOX:c(...f),SELECT:c("options","renderProps","api",...f),RADIO_GROUP:c("options",...f),DATE_FIELD:c(...f),TIME_FIELD:c(...f),TIME_RANGE_FIELD:c(...f),TIME_DESKTOP:c(...f),TIME_MOBILE:c(...f),DATE_PICKER:c(...f),DATE_PICKER_MODAL:c(...f),RANGE_PICKER:c(...f),BASIC_SELECT:c("showNone","options","size",...f),BOX:c("children","style","formHandler","withHandler"),STEPPER:c("children","className","formHandler","id","steps","name","value"),TABS:c("name","className","disabled","formHandler","onChange","options","value"),BUTTON:c("type","label","variant","className","circular","fullWidth","tooltipTitle","icon","unshadow","children","color","size","onClick"),PRICE:c("placeholder",...f)};var it=d__default.forwardRef(function({elementType:e,component:t,name:r,label:n,labelVariant:i,required:l,minLength:p,maxLength:m,pattern:s,...h},u){let g=n;return i==="UNLABELING"&&(n=""),jsxs(Box,{ref:u,sx:{display:"flex",flexDirection:"column",gap:"3px",width:"100%",".label-component":{fontWeight:"bold",display:"block"}},children:[i==="UNLABELING"&&e!=="CHECKBOX"&&jsxs("label",{className:"label-component",htmlFor:r,children:[g,":"]}),jsx(t,{name:r,label:`${n}${l?" *":""}`,pattern:s,...h})]})}),Se=it;var lt=({children:o,formHandler:e,withHandler:t=!0})=>jsxs(Box,{children:[typeof o!="function"&&d__default.isValidElement(o)&&!t&&o,typeof o!="function"&&d__default.isValidElement(o)&&t&&d__default.cloneElement(o,{formHandler:e}),typeof o=="function"&&o(e)]}),Be=lt;var ht=d.forwardRef(function({name:e=a(),steps:t,value:r={activeStep:0},onChange:n,formHandler:i={}},l){let p=useTheme(),m=t.length,{watch:s}=i,h=s(e),{activeStep:u=0}=r,g=a=>{n({target:{name:e,value:{...h,activeStep:a}}});},T=()=>{g(u+1);},E=()=>{g(u-1);};return jsxs(ne,{sx:{flexGrow:1,width:"100%"},children:[jsx(dt,{square:!0,elevation:0,sx:{display:"flex",alignItems:"center",height:50,pl:2,bgcolor:"#f4f4f4"},children:jsx(ft,{children:t[u]?t[u].label:"Label Indefinido"})}),jsx(Divider,{}),jsx(ne,{sx:{width:"100%",p:2},className:"step-items",children:t.map((a,R)=>jsxs(ne,{sx:{width:"100%",display:u==R?"block":"none"},children:[typeof a.body=="string"&&a.body,d.isValidElement(a.body)&&d.cloneElement(a.body,{formHandler:i,parentName:e})]},R))}),jsx(ct,{variant:"text",steps:m,position:"static",activeStep:u,nextButton:jsxs(Ae,{size:"small",onClick:T,disabled:u===m-1,children:["Siguiente",p.direction==="rtl"?jsx(Le,{}):jsx(Fe,{})]}),backButton:jsxs(Ae,{size:"small",onClick:E,disabled:u===0,children:[p.direction==="rtl"?jsx(Fe,{}):jsx(Le,{}),"Atr\xE1s"]})})]})}),we=ht;var Ne=we;var ie=class o{id;name;gridColumn;gridRow;visibility="VISIBLE";component;fullWidth;elementType="INPUT";_withControl=!0;props;rules=[];yupRules=[];formBuilderInstance;constructor(e={}){this.id=v4(),this.component=null,this.props=this.getBasicProps(e);}static newElement(){return new o}withControl(){return this._withControl=!0,this}setFormBuilder(e){return this.formBuilderInstance=e,this}hasControl(){return this._withControl}getGridColumn(){return this.gridColumn}getGridRow(){return this.gridRow}setGridColumn(e){return this.gridColumn=e,this}setGridRow(e){return this.gridRow=e,this}getRules(){return this.rules}instance(e,t,r={}){return this.component=e,this.elementType=t,this.props={...this.props,...r},this}getBasicProps(e){return {id:this.id,size:"small",...e}}setStyles(e){return this.props.style=e,this}setVisibility(e){return this.visibility=e,this}getVisibility(){return this.visibility}setFullWidth(){return this.fullWidth=!0,this}getColumns(){return this.gridColumn}getRows(){return this.gridRow}setColumns(e){return this.gridColumn=e,this}setRows(e){this.gridRow=e;}textField(e={}){return this.instance(w,"INPUT",e)}email(e={}){return this.instance(Y,"EMAIL",e)}autocomplete(e={}){return this.instance(z,"SELECT",e)}selectBasic(e={}){return this.instance(a$1,"BASIC_SELECT",e)}groupButton(e={}){return this.instance(_,"GROUP_BUTTON",e)}password(e={}){return this.instance(W,"PASSWORD",e)}inputPrice(e={}){return this.instance($,"PRICE",e)}select(e={}){return this.autocomplete(e)}checkbox(e={}){return this.instance(U,"CHECKBOX",e)}radioGroup(e={}){return this.instance(q,"RADIO_GROUP",e)}dateField(e={}){return this.instance(J,"DATE_FIELD",e)}timeField(e={}){return this.instance(j,"TIME_FIELD",e)}timeRangeField(e={}){return this.instance(Q,"TIME_RANGE_FIELD",e)}timeDesktop(e={}){return this.instance(te,"TIME_DESKTOP",e)}timeMobile(e={}){return this.instance(re,"TIME_MOBILE",e)}datePicker(e={}){return this.instance(X,"DATE_PICKER",e)}datePickerModal(e={}){return this.instance(Z,"DATE_PICKER_MODAL",e)}rangePicker(e={}){return this.instance(ee,"RANGE_PICKER",e)}tabs(e={}){return this.instance(K,"TABS",e)}stepper(e={}){return this.instance(Ne,"STEPPER",e)}box(e={}){return this.props.style={...this.props.style,...e,width:"100%"},this._withControl=!1,this.instance(Be,"BOX",e)}button(e){return this._withControl=!1,this.instance(Re,"BUTTON",e)}getType(){return this.elementType}getName(){return this.props?.name||this.id}getProps(){return this.props}getProp(e){return c$1(this.props,e)}withProps(e={}){return this.props={...this.props,...e},this}checkOptions(e){let t=this.elementType==="BASIC_SELECT"||this.elementType==="SELECT";t&&e==="DEMO"&&d$1(this.props.options)?this.props.options=[{label:"Opci\xF3n 1",value:"1"},{label:"Opci\xF3n 2",value:"2"}]:t&&e==="DEFAULT"&&d$1(this.props.options)&&(this.props.options=[]);}getClassNames(){let e=[];return this.fullWidth===!0&&e.push("full-width"),e}getStyles(){let e={};return this.gridColumn&&(e={...e,gridColumn:`span ${this.gridColumn} / span ${this.gridColumn}`}),this.gridRow&&(e={...e,gridRow:`span ${this.gridRow} / span ${this.gridRow}`}),e}addRule(e){return this.rules.push(e),this}addValidation(e){let t=k.createRule(e);return t?.required&&(this.props.required=!0),t&&this.yupRules.push(t),this}addProps(e){return this.props={...this.props,...e},this}build({field:e,origin:t="DEFAULT",formHandler:r}={}){let{component:n,props:i}=this;this.checkOptions(t);let l=Ie(this.elementType,{...i,inputProps:i.maxLength?{maxLength:i.maxLength}:void 0,formHandler:r});return jsx(Fragment,{children:jsx(Se,{elementType:this.elementType,component:n,...l,...e})})}},N=ie;var gt=({render:o})=>jsx(Fragment,{children:o({field:{}})}),se=gt;var ae=class{state;constructor(e){this.state=e;}validateRule(e){if("fieldName"in e&&"operator"in e&&"value"in e){let t=c$1(this.state,e.fieldName),r=e.value,n=e.operator;switch(n){case"==":return t==r;case"!=":return t!=r;case">":return t>r;case">=":return t>=r;case"<":return t<r;case"<=":return t<=r;default:throw new Error(`Operador no soportado: ${n}`)}}return !0}processRules(e=[]){let t=!0,r;if(d$1(e))return {visible:t};for(let n of e){let i=!0,l,p,m;for(let s of n)i=i&&this.validateRule(s),"visible"in s&&(l=s.visible),"action"in s&&typeof s.action=="function"&&(p=s.action),"disabled"in s&&(m=s.disabled);i?(l!==void 0&&(t=l),p&&p(),m!==void 0&&(r=m)):l!==void 0&&(t=!1);}return {visible:t,disabled:r}}},ke=ae;var le=styled("div")` display: block; width: 100%; `,pe=styled("div")` display: grid; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); width: 100%; gap: 20px; justify-items: start; .skeleton { background-color: red; &.small { height: 40px; } &.medium { height: 40px; } &.large { height: 56px; } } .drag-over { position: relative; &::before { content: ''; position: absolute; top: -10px; left: -10px; right: -10px; bottom: -10px; border: 1px dashed #cccccc; } .item-component-container { &::before { display: none !important; } } } .handle { position: absolute; top: -10px; left: -10px; right: -10px; bottom: -10px; z-index: 9; } .col { width: 100%; display: flex; /* align-items: flex-end; */ height: 100%; &.full-width { grid-column: 1 / -1; } .item-component-container { width: 100%; height: 100%; display: flex; align-items: flex-end; &.selected, &:hover:not(.read-only) { position: relative; &::before { content: ''; position: absolute; top: -10px; left: -10px; right: -10px; bottom: -10px; border: 1px solid ${({theme:o})=>o.palette.primary.main}; } &:hover:not(.selected, .read-only) { cursor: pointer; & * { pointer-events: none; } } &:hover:not(.selected, .read-only) { &::before { border-color: #ecebeb; } } &:not(:hover:not(.selected, .read-only)) { .dot { position: absolute; width: 10px; height: 10px; border-radius: 50%; border: 1px solid ${({theme:o})=>o.palette.primary.main}; background-color: #ffffff; top: -14px; left: -14px; &.right-top { left: unset; right: -14px; } &.left-bottom { top: unset; bottom: -14px; } &.right-bottom { top: unset; left: unset; right: -14px; bottom: -14px; } } } } } } `;var Lt=({formHandler:o={},form:e})=>{let [t,r]=useState(!1),{watch:n=()=>({}),control:i={},errors:l={},reset:p=()=>{}}=o,m=n(),s=e.getCols()?`repeat(${e.getCols()}, 1fr)`:`repeat(auto-fill, minmax(${e.getColWidth()}px, 1fr))`,h=(a,R=[])=>new ke(a).processRules(R),u=()=>{console.log("FOR SAVE:",n());},g=()=>{p();};return jsx(Fragment,{children:!t&&jsx(Suspense,{fallback:jsx(le,{children:jsx(pe,{className:"grid",sx:a=>({gridTemplateColumns:e.getCols()?`repeat(${e.getCols()}, 1fr)`:`repeat(auto-fill, minmax(${e.getColWidth()}px, 1fr))`,gap:e.getGridGap(),[a.breakpoints.down("sm")]:{gridTemplateColumns:e.getCols()?`repeat(${Math.floor(e.getCols()/2)}, 1fr)`:`repeat(auto-fill, minmax(${e.getColWidth()}px, 1fr))`}}),children:!d$1(e.getItems())&&e.getItems().map((a,R)=>jsx("div",{className:me("col",a.getClassNames()),style:a.getStyles(),children:jsx(se,{name:a.getName(),render:({field:I})=>jsxs(Fragment,{children:[a.getType()==="BOX"&&a.build({field:I,formHandler:o}),a.getType()!=="BOX"&&jsx(Skeleton,{variant:"rounded",width:"100%",className:me(`skeleton ${a.getProp("size")}`),sx:{marginTop:"7px"}})]})})},R))})}),children:jsx(le,{className:"FormPreviewWrapper",children:jsxs(pe,{className:"grid",sx:{gridTemplateColumns:s,gap:e.getGridGap()},children:[!d$1(e.getItems())&&e.getItems().map((a,R)=>{let I=h(m,a.getRules());if(!I||!I?.visible||a.getVisibility()==="GONE")return null;let C=a.hasControl()?Controller:se;return jsx("div",{className:me("col",a.getClassNames()),style:a.getStyles(),children:jsx(C,{name:a.getName(),control:i,defaultValue:"",render:({field:B})=>a.addProps({id:`${a.getType()}-${a.getName()}-${R}`,disabled:I?.disabled,error:!!l[a.getName()],helperText:c$1(l,`${a.getName()}.message`)}).build({field:B,formHandler:o})})},R)}),e.showControls&&jsxs(Box,{className:"col full-width",sx:{display:"flex",flexDirection:"column"},children:[jsx(Divider,{sx:{marginBottom:2}}),jsxs(ButtonGroup,{children:[jsxs(a$2,{type:"submit",onClick:u,children:[jsx(Bt,{className:"icon-margin",sx:{fontSize:"1.2em !important"}}),"Guardar"]}),jsxs(a$2,{type:"button",color:"white",onClick:g,children:[jsx(At,{className:"icon-margin",sx:{fontSize:"1.2em !important"}}),"Limpiar"]})]})]})]})})})})},M=Lt;var Ot=({schema:o,initialData:e})=>{let{register:t,watch:r,reset:n,handleSubmit:i,control:l,formState:{errors:p},setValue:m,getValues:s,setError:h,resetField:u,trigger:g}=useForm({resolver:yupResolver(o),mode:"all",values:e});return {register:E=>({...t(E),error:b$1.has(p,E),helperText:Nt.get(p,`${E}.message`)}),handleSubmit:i,watch:r,setValue:m,getValues:s,reset:n,control:l,errors:p,resetField:u,setError:h,trigger:g}},Me=Ot;var G=(o,e)=>{let t=/\$\{([^\}]+)\}/g,r=o.replace(t,(l,p)=>c$1(e,p)||""),n=/\$\{([^}]+)\}/,i=o.match(n);if(r=="[object Object]"&&i){let l=i[1];return c$1(e,l,r)}return r};function H(o,e){if(typeof o=="string")return G(o,e);if(Array.isArray(o))return o.map(t=>H(t,e));if(typeof o=="object"&&o!==null){let t={};for(let r in o)if(typeof o[r]=="object"&&o[r]!==null&&"parser"in o[r]){let{value:n,parser:i}=o[r],l=G(n,e);t[r]=typeof i=="function"?i(l):l;}else t[r]=H(o[r],e);return t}}function Ge(o={},e){return Object.keys(o).map(t=>({[t]:e[t]}))}var kt=({form:o})=>{let{loading:e,error:t,response:r,fetchData:n,getUrl:i}=c$2(),l=o.getSchema().build(),{register:p,control:m,watch:s,setValue:h,getValues:u,reset:g,errors:T,handleSubmit:E}=Me({schema:l,initialData:o.getInitialData()}),a=I=>{let C=o.getApi(),B={...C.data||{},...I},Ye=G(i(C.url),B),fe=new URL(Ye),We=Ge(C.params,B);Object.entries(We).forEach(([qe,Xe])=>{fe.searchParams.append(qe,Xe);});let $e=C.dataTemplate?H({...C.dataTemplate},B):B;return {...o.getApi(),url:fe.toString(),data:{...C.data||{},...$e}}};return {register:p,control:m,watch:s,setValue:h,getValues:u,reset:g,errors:T,handleSubmit:E,submit:I=>{if(!o.getApi())return;let C=a(I);n(C);},loading:e,error:t,response:r}},He=kt;var Ve=styled("fieldset")` display: block; width: 100%; border: none; padding: 0; &.disabled, &:disabled { pointer-events: none; opacity: 0.6; } `;var zt=({form:o,loading:e,error:t,response:r,successMessage:n,errorMessage:i})=>{let[l,p]=useState(!1),m=()=>{p(!1);};useEffect(()=>{(t||r)&&p(!0);},[t,r]);let s=()=>{let E=o?.getApi();if(E){let a=c$1(r,"status");return c$1(E.statusMessages,`${a}`,c$1(E.statusMessages,"DEFAULT"))}},h=()=>!e&&i?{severity:"error",title:"Error",message:i}:!e&&!t&&n?{severity:"success",title:"Success",message:n}:t?{severity:"error",title:"Error",message:s()||c$1(t,"response.data.message")||c$1(r,"data.message",t.message)}:r&&[200,201].includes(r.status)?{severity:"success",title:"Success",message:s()||"The operation was successful"}:{severity:"info",title:e?"Sending...":"Info",message:e?"Wait, we are doing something":s()||c$1(r,"statusText")},{severity:u,title:g,message:T}=h();return jsx(Fragment,{children:l&&jsxs(Gt,{severity:u,sx:{marginBottom:2.4},action:e?void 0:jsx(Vt,{"aria-label":"close",color:"inherit",onClick:m,size:"small",children:jsx(Kt,{fontSize:"inherit"})}),children:[jsx(Ht,{children:g}),Array.isArray(T)?T.map((E,a)=>jsx("li",{children:E},a)):T]})})},Ke=zt;var qt=({form:o})=>{let{control:e,errors:t,watch:r,reset:n,setValue:i,error:l,loading:p,handleSubmit:m,submit:s,response:h}=He({form:o}),u=r();return useEffect(()=>{typeof o.getHandleOnChange()=="function"&&o.getHandleOnChange()(u);},[u,o]),jsxs(Box,{...(()=>{let T=o.getApi();return {component:T?"form":"div",onSubmit:T?m(s):void 0,sx:{width:"100%"}}})(),children:[o.getApi()&&jsx(Ke,{form:o,loading:p,response:h,error:l}),jsx(Ve,{disabled:p,children:jsx(M,{form:o,formHandler:{control:e,errors:t,watch:r,setValue:i,reset:n}})})]})},ze=qt;var Ue=ze;var Jt=300,ce=class o{id;title="Untitled";cols;gridGap;colWidth=Jt;items=[];api;schema=k.newInstance();initialData;handleOnChange;formHandler;ssr=!0;showControls=!1;static baseUrl;currentElement;constructor(e){this.initialData=e;}static newForm(e){return new o(e)}getApi(){return this.api}setApi(e){return this.api=e,this}setFormHandler(e){return this.formHandler=e,this}getInitialData(){return this.initialData}setInitialData(e){return this.initialData=e,this}getFormHandler(){return this.formHandler}setHandleOnChange(e){return this.handleOnChange=e,this}getHandleOnChange(){return this.handleOnChange}getId(){return this.id}getCols(){return this.cols}getColWidth(){return this.colWidth}setCols(e){return this.cols=e,this}setColWidth(e){return this.colWidth=e,this}addItem(e){return this.items.push(e),this}getItems(){return this.items}newElement(){return this.currentElement&&this.addItem(this.currentElement),this.currentElement=N.newElement().setFormBuilder(this),this.currentElement}endElement(){if(this.currentElement)return this.addItem(this.currentElement),this.currentElement=void 0,this}buildSchema(){this.items.forEach(e=>{if(e.getType()==="STEPPER"){let t=e.getProp("steps");d$1(t)||t.forEach(r=>{if(r.body instanceof o){let n=r.body;n.getItems().forEach(l=>{this.processYupRules(l);}),r.body=n.setFormHandler(this.getFormHandler).build();}});}else this.processYupRules(e);});}processYupRules(e){e.yupRules!==void 0&&e.getName()!=null&&e.yupRules.forEach(t=>{this.schema.pushRule(e.getName(),t);});}getSchema(){return this.schema}setGridGap(e){return this.gridGap=e,this}getGridGap(){return this.gridGap}setSsr(e){return this.ssr=e,this}build(){this.buildSchema();let e=this.formHandler?M:Ue;return jsx(e,{form:this,formHandler:typeof this.formHandler=="function"?this.formHandler():this.formHandler})}},jt=ce;var de=class{static renderElement(e,t,r="DEFAULT"){return this.createComponent(e,t).build({origin:r})}static parseNumValidationValue(e){let t;return typeof e=="string"?t={value:Number(e)}:e!==void 0&&(t={value:e}),t}static processValidations(e,t,r){let n={type:"string",required:{value:!!t.required},min:this.parseNumValidationValue(t.minLength),max:this.parseNumValidationValue(t.maxLength),pattern:{value:t.pattern}};return e==="SELECT"?r.addValidation({...n,type:"object"}):e==="INPUT"&&t.type==="email"||e==="EMAIL"?r.addValidation({...n,type:"string",isEmail:{value:!0}}):r.addValidation({...n,type:"string"}),r}static composeComponent(e,t){let r=this.createComponent(e,t);return this.processValidations(e,t,r),r}static createComponent(e,t){let r=new N;switch(e){case"INPUT":return r.textField(t);case"EMAIL":return r.email(t);case"NUMBER":return r.textField().withProps({type:"number"}).withProps(t);case"PRICE":return r.inputPrice(t);case"PASSWORD":return r.password(t);case"SELECT":return r.autocomplete(t);case"BASIC_SELECT":return r.selectBasic(t);case"CHECKBOX":return r.checkbox(t);case"RADIO_GROUP":return r.radioGroup(t);case"DATE_FIELD":return r.dateField(t);case"TIME_FIELD":return r.timeField(t);case"TIME_RANGE_FIELD":return r.timeRangeField(t);case"TIME_DESKTOP":return r.timeDesktop(t);case"TIME_MOBILE":return r.timeMobile(t);case"DATE_PICKER":return r.datePicker(t);case"DATE_PICKER_MODAL":return r.datePickerModal(t);case"RANGE_PICKER":return r.rangePicker(t);case"BUTTON":return r.button(t);case"BOX":return r.box(t);default:return r.textField(t)}}},Zt=de;export{N as ElementBuilder,Zt as ElementFactory,jt as FormBuilder};//# sourceMappingURL=index.mjs.map //# sourceMappingURL=index.mjs.map