UNPKG

@baseplate-dev/project-builder-web

Version:

Web interface for constructing project builder JSON

3 lines (2 loc) 2.38 kB
import{i as o}from"./_virtual___federation_fn_import-C4el_tlG.js";import{j as e}from"./jsx-runtime-D_zvdyIk.js";import{s as F}from"./index-BsqYBobW.js";import{b as S}from"./index.esm-C5MSuOl4.js";import{M as N}from"./model-info-form-j1G36Ci9.js";import{s as k}from"./sortBy-C9bvycg5.js";const{createModelBaseSchema:B,FeatureUtils:I,modelEntityType:y,modelScalarFieldEntityType:R}=await o("@baseplate-dev/project-builder-lib"),{useBlockBeforeContinue:E,useDefinitionSchema:O,useProjectDefinition:T}=await o("@baseplate-dev/project-builder-lib/web"),{Button:p,Dialog:L,DialogClose:U,DialogContent:$,DialogDescription:H,DialogFooter:K,DialogHeader:P,DialogTitle:V,DialogTrigger:W,useControlledState:q}=await o("@baseplate-dev/ui-components"),{useNavigate:z}=await o("@tanstack/react-router"),{useMemo:h}=await o("react");function g(){const a=R.generateNewId();return{id:y.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 _({children:a,open:b,onOpenChange:x}){const[j,i]=q(b,x,!1),{definition:l,saveDefinitionWithFeedback:d}=T(),M=O(B),w=h(()=>g(),[]),c=z(),{handleSubmit:u,reset:m,setError:f,control:D}=S({resolver:F(M),defaultValues:w}),C=h(()=>u(t=>{if(l.models.find(s=>s.name.toLowerCase()===t.name.toLowerCase())){f("name",{message:`Model with name ${t.name} already exists.`});return}return d(s=>{const r={...t};r.featureRef=I.ensureFeatureByNameRecursively(s,r.featureRef),s.models=k([...s.models.filter(n=>n.id!==r.id),r],[n=>n.name])},{successMessage:"Successfully created model!",onSuccess:()=>{c({to:"/data/models/edit/$key",params:{key:y.keyFromId(t.id)}}),m(g()),i(!1)}})}),[m,f,u,d,c,l,i]),v=E();return e.jsxs(L,{open:j,onOpenChange:t=>{t?v({onContinue:()=>{i(!0)}}):i(!1)},children:[e.jsx(W,{asChild:!0,children:a}),e.jsxs($,{children:[e.jsxs(P,{children:[e.jsx(V,{children:"New Model"}),e.jsx(H,{children:"Models define the structure of your data."})]}),e.jsxs("form",{onSubmit:C,className:"space-y-4",children:[e.jsx(N,{control:D}),e.jsxs(K,{children:[e.jsx(U,{asChild:!0,children:e.jsx(p,{variant:"secondary",children:"Cancel"})}),e.jsx(p,{type:"submit",children:"Create Model"})]})]})]})]})}export{_ as N}; //# sourceMappingURL=new-model-dialog-Cck1KtiW.js.map