@baseplate-dev/project-builder-web
Version:
Web interface for constructing project builder JSON
3 lines (2 loc) • 2.44 kB
JavaScript
import{i as o}from"./_virtual___federation_fn_import-DOo8C-zl.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{b as S,l as N}from"./index-DiAhmW9l.js";import{f as k}from"./index.esm-DImnoN58.js";import{M as B}from"./model-info-form-BbOo8Z4g.js";import{s as R}from"./sortBy-C9bvycg5.js";const{createModelBaseSchema:I,FeatureUtils:E,modelEntityType:b,modelScalarFieldEntityType:O}=await o("@baseplate-dev/project-builder-lib"),{useBlockBeforeContinue:T,useDefinitionSchema:L,useProjectDefinition:U}=await o("@baseplate-dev/project-builder-lib/web"),{Button:h,Dialog:$,DialogClose:A,DialogContent:H,DialogDescription:K,DialogFooter:P,DialogHeader:V,DialogTitle:W,DialogTrigger:q,useControlledState:z}=await o("@baseplate-dev/ui-components"),{useNavigate:G,useRouter:J}=await o("@tanstack/react-router"),{useMemo:g}=await o("react");function y(){const a=O.generateNewId();return{id:b.generateNewId(),name:"",featureRef:"",service:{create:{enabled:!1},update:{enabled:!1},delete:{enabled:!1},transformers:[]},model:{primaryKeyFieldRefs:[a],fields:[{id:a,name:"id",type:"uuid",isOptional:!1,options:{default:"",genUuid:!0}}]}}}function se({children:a,open:x,onOpenChange:j}){const[M,i]=z(x,j,!1),{definition:l,saveDefinitionWithFeedback:d}=U(),w=L(I),D=g(()=>y(),[]),c=G(),u=J(),{handleSubmit:m,reset:f,setError:p,control:v}=k({resolver:S(w),defaultValues:D}),C=g(()=>m(t=>{if(l.models.find(s=>s.name.toLowerCase()===t.name.toLowerCase())){p("name",{message:`Model with name ${t.name} already exists.`});return}return d(s=>{const r={...t};r.featureRef=E.ensureFeatureByNameRecursively(s,r.featureRef),s.models=R([...s.models.filter(n=>n.id!==r.id),r],[n=>n.name])},{successMessage:"Successfully created model!",onSuccess:()=>{u.invalidate().then(()=>c({to:"/data/models/edit/$key",params:{key:b.keyFromId(t.id)}})).catch(N),f(y()),i(!1)}})}),[f,p,m,d,c,l,i,u]),F=T();return e.jsxs($,{open:M,onOpenChange:t=>{t?F({onContinue:()=>{i(!0)}}):i(!1)},children:[e.jsx(q,{asChild:!0,children:a}),e.jsxs(H,{children:[e.jsxs(V,{children:[e.jsx(W,{children:"New Model"}),e.jsx(K,{children:"Models define the structure of your data."})]}),e.jsxs("form",{onSubmit:C,className:"space-y-4",children:[e.jsx(B,{control:v}),e.jsxs(P,{children:[e.jsx(A,{asChild:!0,children:e.jsx(h,{variant:"secondary",children:"Cancel"})}),e.jsx(h,{type:"submit",children:"Create Model"})]})]})]})]})}export{se as N};
//# sourceMappingURL=new-model-dialog-D7nZ2Q8c.js.map