@tachybase/plugin-data-source-common 1.3.15 → 1.3.17
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/client/index.js +4 -4
- package/dist/externalVersion.js +8 -8
- package/dist/index.js +4 -4
- package/package.json +10 -10
package/dist/client/index.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
text-overflow: ellipsis;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
`,style:{width:"100%"}},"x-component":r.Variable.RawTextArea,"x-component-props":{defaultValue:s,autoSize:!0,onChange:a=>{o(a.target.value,"path")},scope:L,fieldNames:{value:"name",label:"title"},style:{borderTopLeftRadius:"0",borderBottomLeftRadius:"0"}}}},Ie=e=>{var l,d,u;const{t}=q(),{path:s,setFormValue:o,dataSourceKey:n}=e,i=(u=(d=(l=r.useApp().dataSourceManager.getDataSource(n))==null?void 0:l.getOptions())==null?void 0:d.options)==null?void 0:u.baseUrl,p=ge({t,path:s,setFormValue:o,baseUrl:i});return c.jsx(r.SchemaComponent,{schema:p})},Q=e=>{var h;const{data:t}=r.useCollectionRecord(),{form:s,actionKey:o,requestActionForm:n}=O(),a=r.useSchemaComponentContext(),{path:i,method:p}=((h=t==null?void 0:t.actions)==null?void 0:h[o])||{},{name:l}=$.useParams(),d=V.debounce((T,w)=>D(
|
|
20
|
+
`,style:{width:"100%"}},"x-component":r.Variable.RawTextArea,"x-component-props":{defaultValue:s,autoSize:!0,onChange:a=>{o(a.target.value,"path")},scope:L,fieldNames:{value:"name",label:"title"},style:{borderTopLeftRadius:"0",borderBottomLeftRadius:"0"}}}},Ie=e=>{var l,d,u;const{t}=q(),{path:s,setFormValue:o,dataSourceKey:n}=e,i=(u=(d=(l=r.useApp().dataSourceManager.getDataSource(n))==null?void 0:l.getOptions())==null?void 0:d.options)==null?void 0:u.baseUrl,p=ge({t,path:s,setFormValue:o,baseUrl:i});return c.jsx(r.SchemaComponent,{schema:p})},Q=e=>{var h;const{data:t}=r.useCollectionRecord(),{form:s,actionKey:o,requestActionForm:n}=O(),a=r.useSchemaComponentContext(),{path:i,method:p}=((h=t==null?void 0:t.actions)==null?void 0:h[o])||{},{name:l}=$.useParams(),d=V.debounce((T,w)=>D(null,null,function*(){const{actions:b}=(s==null?void 0:s.values)||{};s.setValuesIn("actions",A(f({},b),{[o]:A(f({},b==null?void 0:b[o]),{[w]:T})})),n.setValuesIn(w,T)}),100),u=v.useMemo(()=>x.createForm({initialValues:n.values}),[]);return c.jsxs(r.FormProvider,{form:e!=null&&e.actionForm?u:n,children:[c.jsx(be,{method:p,setFormValue:d}),c.jsx(x.SchemaOptionsContext.Provider,{value:a,children:c.jsx(Ie,{path:i,setFormValue:d,dataSourceKey:l})})]})},K=R.lodash.debounce((e,t,s,o)=>{const{actions:n}=e.values||{};e.setValuesIn("actions",A(f({},n),{[t]:A(f({},n==null?void 0:n[t]),{[s]:o})}))},400),ve=({defaultValue:e,actionKey:t,parentForm:s,field:o})=>({type:"object",properties:{contentType:{type:"string","x-decorator":"FormItem","x-component":"Select",placeholder:`{{t("Content-Type",{ ns: "${C}" })}}`,default:e==null?void 0:e.contentType,"x-component-props":{onChange:n=>{K(s,t,"contentType",n)}},enum:[{value:"application/x-www-form-urlencoded",label:"application/x-www-form-urlencoded "},{value:"application/json",label:"application/json"}],"x-reactions":n=>{const a=s.values.actions[t],i=a==null?void 0:a.contentType;(n==null?void 0:n.value)!==i&&n.setValue(i!=null?i:"application/json"),n.value||K(s,t,"contentType","application/json")}},body:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",default:e.body,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
|
|
21
21
|
& > .ant-space-item:first-child,
|
|
22
22
|
& > .ant-space-item:last-child {
|
|
23
23
|
flex-shrink: 0;
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
& > .ant-space-item:nth-of-type(2) {
|
|
45
45
|
flex: 1;
|
|
46
46
|
}
|
|
47
|
-
`},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}',style:{width:"100%"}}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},style:{minWidth:"230px",width:"100%"}}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove","x-component-props":{onClick:()=>{var a;K(o,n,"params",(a=s.form.values)==null?void 0:a.params)}}}}}}},properties:{add:{type:"void",title:e,"x-component":"ArrayItems.Addition"}}}}}),we=()=>{var i,p;const{t:e}=q(),t=x.useField(),{form:s,actionKey:o}=O(),n=(p=(i=s==null?void 0:s.values)==null?void 0:i.actions)==null?void 0:p[o],a=Se({title:e("Add parameter"),defaultValue:n==null?void 0:n.params,field:t,parentForm:s,actionKey:o});return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayItems:k.ArrayItems,FormItem:r.FormItem,Input:g.Input},scope:{useVariableOptions:L}})},Te=e=>{const{t}=e;return[{key:"parameters",label:t("Parameters"),children:c.jsx(we,{})},{key:"body",label:t("Body"),children:c.jsx(Ce,{})},{key:"headers",label:t("Headers"),children:c.jsx(Ae,{})}]},Z=()=>{const{t:e}=q(),t=Te({t:e});return c.jsx(g.Tabs,{items:t})},Pe={data:"{{rawResponse.body}}",meta:{}},qe=(e,t,s)=>D(
|
|
47
|
+
`},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}',style:{width:"100%"}}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:"{{useVariableOptions}}",autoSize:!0,fieldNames:{value:"name",label:"title"},style:{minWidth:"230px",width:"100%"}}},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove","x-component-props":{onClick:()=>{var a;K(o,n,"params",(a=s.form.values)==null?void 0:a.params)}}}}}}},properties:{add:{type:"void",title:e,"x-component":"ArrayItems.Addition"}}}}}),we=()=>{var i,p;const{t:e}=q(),t=x.useField(),{form:s,actionKey:o}=O(),n=(p=(i=s==null?void 0:s.values)==null?void 0:i.actions)==null?void 0:p[o],a=Se({title:e("Add parameter"),defaultValue:n==null?void 0:n.params,field:t,parentForm:s,actionKey:o});return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayItems:k.ArrayItems,FormItem:r.FormItem,Input:g.Input},scope:{useVariableOptions:L}})},Te=e=>{const{t}=e;return[{key:"parameters",label:t("Parameters"),children:c.jsx(we,{})},{key:"body",label:t("Body"),children:c.jsx(Ce,{})},{key:"headers",label:t("Headers"),children:c.jsx(Ae,{})}]},Z=()=>{const{t:e}=q(),t=Te({t:e});return c.jsx(g.Tabs,{items:t})},Pe={data:"{{rawResponse.body}}",meta:{}},qe=(e,t,s)=>D(null,null,function*(){const{actions:o}=e.values||{};e.setValuesIn("actions",A(f({},o),{[t]:A(f({},o==null?void 0:o[t]),{responseTransformer:s})}))}),ee=()=>{var l,d,u;const{form:e,actionKey:t,responseTransformer:s,setResponseTransformer:o}=O(),n=(u=(d=(l=e==null?void 0:e.values)==null?void 0:l.actions)==null?void 0:d[t])==null?void 0:u.responseTransformer,a=s!=null?s:n,{data:i}=r.useCollectionRecord();v.useEffect(()=>{var h,T;if(!((T=(h=i==null?void 0:i.actions)==null?void 0:h[t])!=null&&T.responseTransformer)&&!n){const{actions:w}=e.values||{};e.setValuesIn("actions",A(f({},w),{[t]:A(f({},w==null?void 0:w[t]),{responseTransformer:Pe})}))}},[]);const p=L(!0);return c.jsx(r.Variable.JSON,{value:a,onChange:h=>{o(h),qe(e,t,h)},autoSize:{minRows:5},fieldNames:{value:"name",label:"title"},scope:()=>p})},ke=()=>{const{responseValidationErrorMessage:e}=j();return e?c.jsxs(c.Fragment,{children:[c.jsx(g.Alert,{type:"error",showIcon:!0,message:e}),c.jsx("br",{})]}):null},Ve=e=>({type:"object","x-decorator":"Form","x-decorator-props":{useValues(t){return r.useRequest(()=>Promise.resolve({data:{}}),t)}},properties:{[x.uid()]:{type:"string",default:e,"x-read-pretty":!0,"x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{style:{maxHeight:"350px"}}}}}),De=()=>{const{debugResponse:e}=j(),t=Ve(e);return c.jsx(r.SchemaComponent,{schema:t,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},Me=e=>{const{t}=e;return[{key:"body",label:t("Body"),children:c.jsx(De,{})}]},Be=()=>{const{t:e}=q(),{debugResponse:t}=j(),s=Me({t:e});return t?c.jsx(g.Tabs,{defaultActiveKey:"body",items:s}):null},Ne=e=>{const{t}=q(),s=t("Extract field metadata from the response data");return c.jsx(g.Tooltip,{title:s,children:e.children})},Oe=()=>{const e=x.useForm(),t=r.useAPIClient(),{t:s}=q(),{setVisible:o}=v.useContext(r.ActionContext),{name:n}=$.useParams(),{rawResponse:a,responseValidationErrorMessage:i}=j(),{form:p,actionKey:l}=O(),{fields:d}=p.values,[u,h]=v.useState(!1),T=V.omit(e.values,"responseTab"),w=()=>D(null,null,function*(){var b,I;try{h(!0);const S=(I=(b=p==null?void 0:p.values)==null?void 0:b.actions)==null?void 0:I[l],m=t.resource("dataSources.httpCollections",n),{data:{data:M}}=yield m.runAction({values:{debug:!1,inferFields:!0,actionOptions:A(f({},S),{type:l,responseTransformer:S==null?void 0:S.responseTransformer}),debugVars:T}});o(!1),h(!1);const{transformedResponse:B,fields:E,filterTargetKey:H}=M;if(H&&p.setValuesIn("filterTargetKey",H),E){const N=V.unionBy(d,E,"name");p.setValuesIn("fields",N)}if(typeof(B==null?void 0:B.data)=="object"){let N=[];l==="get"?N=[B==null?void 0:B.data]:N=B==null?void 0:B.data,p.setValuesIn("preview",N)}}catch(S){h(!1),console.log(S)}});return["list","get"].includes(l)?c.jsx(Ne,{children:c.jsx(g.Button,{type:"primary",disabled:!a||i,loading:u,onClick:w,children:s("Extract field metadata")})}):null},te=({key:e,defaultValue:t})=>({type:"object",properties:{[e]:{type:"array","x-decorator":"FormItem","x-component":"ArrayTable",default:t,"x-component-props":{scroll:{y:300}},items:{type:"object",properties:{column1:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:200,title:`{{t("Name",{ ns: "${C}" })}}`},properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Name")}}'}}}},column2:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:200,title:`{{t("Value",{ ns: "${C}" })}}`},properties:{value:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:'{{t("Value")}}'}}}}}}}}}),je=()=>{const{rawResponse:e}=j(),{request:t}=e||{},s=Object.entries((t==null?void 0:t.headers)||{}).map(([n,a])=>({name:n,value:a})),o=te({key:"requestHeaders",defaultValue:s});return c.jsx(r.SchemaComponent,{schema:o,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},Ee=e=>({type:"object","x-decorator":"Form","x-decorator-props":{useValues(t){return r.useRequest(()=>Promise.resolve({data:{}}),t)}},properties:{[x.uid()]:{type:"string",default:e,"x-read-pretty":!0,"x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{style:{maxHeight:"400px"}}}}}),He=()=>{const{rawResponse:e}=j(),{data:t}=e||{},s=Ee(t);return c.jsx(r.SchemaComponent,{schema:s,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},$e=()=>{const{rawResponse:e}=j(),{headers:t}=e||{},s=Object.entries(t||{}).map(([n,a])=>({name:n,value:a})),o=te({key:"responseHeaders",defaultValue:s});return c.jsx(r.SchemaComponent,{schema:o,components:{ArrayTable:k.ArrayTable,FormItem:r.FormItem,Input:r.Input}})},Le=e=>{const{t}=e;return[{key:"body",label:t("Body"),children:c.jsx(He,{})},{key:"responseHeaders",label:t("Response headers"),children:c.jsx($e,{})},{key:"requestHeaders",label:t("Request headers"),children:c.jsx(je,{})}]},Ke=()=>{const{t:e}=q(),{rawResponse:t}=j(),{status:s}=t||{},o=Le({t:e});if(!t)return null;const n=s.toString().startsWith("2")?"success":"error",a=c.jsx(g.Tag,{color:n,children:`HTTP Code:${s}`});return c.jsx(g.Card,{title:a,children:c.jsx(g.Tabs,{defaultActiveKey:"body",items:o})})};function We(e,t){var p,l;const s=(l=(p=e==null?void 0:e.values)==null?void 0:p.actions)==null?void 0:l[t];let o=[];const{params:n=[],headers:a=[],body:i=[]}=s||{};return o=[...n,...a].map(d=>{var u;return(u=d==null?void 0:d.value)==null?void 0:u.replace(/{{|}}/g,"")}),typeof i=="string"?o.concat(i==null?void 0:i.replace(/{{|}}/g,"")):o.concat(i==null?void 0:i.map(d=>d==null?void 0:d.value.replace(/{{|}}/g,""))),o.filter(Boolean)}const ze=(e,t)=>{const s=(o,n)=>{We(e,t).find(p=>((p==null?void 0:p.split("."))||[]).pop()===o)&&(n.description=null)};return{page:{type:"number",title:"Page","x-decorator":"FormItem","x-component":"InputNumber",description:"{{t('Page variable not used. Pagination based on total current request data.')}}","x-reactions":o=>s("page",o)},pageSize:{type:"number",title:"PageSize","x-decorator":"FormItem","x-component":"InputNumber",description:"{{t('PageSize variable not used. Pagination based on total current request data.')}}","x-reactions":o=>s("pageSize",o)},filter:{type:"object",title:"Filter","x-decorator":"FormItem","x-component":"Input.JSON",description:"{{t('Filter variable not used. Filtering will apply to the current request data.')}}","x-reactions":o=>s("filter",o)},sort:{type:"string",title:"Sort","x-decorator":"FormItem","x-component":"Input",description:"{{t('Sort variable not used. Sorting will apply to the current request data.')}}","x-reactions":o=>s("sort",o)},appends:{type:"string",title:"Appends","x-decorator":"FormItem","x-component":"Input"},fields:{type:"string",title:"Fields","x-decorator":"FormItem","x-component":"Input",description:"{{t('Fields variable not used. Filtering will be based on the current request data.')}}","x-reactions":o=>s("fields",o)},except:{type:"string",title:"Except","x-decorator":"FormItem","x-component":"Input",description:"{{t('Except variable not used. Filtering will be based on the current request data.')}}","x-reactions":o=>s("except",o)},filterByTk:{type:"string",title:"FilterByTk","x-decorator":"FormItem","x-component":"Input",description:"{{t('The current parameters are not adapted')}}","x-reactions":o=>s("filterByTk",o)},whiteList:{type:"string",title:"whiteList","x-decorator":"FormItem","x-component":"Input"},blacklist:{type:"string",title:"blacklist","x-decorator":"FormItem","x-component":"Input"},body:{type:"object",title:"Body","x-decorator":"FormItem","x-component":"Input.JSON","x-component-props":{autoSize:{minRows:5,maxRows:20}}}}};function Ue(e,t){const s={},o=Y[e]||[],n=ze(t,e);for(const a of o)s[a]=n[a];return s}const Xe=()=>{const{t:e}=q(),{actionKey:t,form:s,requestActionForm:o}=O(),n=Ue(t,s),a=()=>{const i=l=>D(null,null,function*(){const{actions:d}=s.values||{},{path:u,value:h}=l.getState();u.includes("add")||(yield s.setValuesIn("actions",A(f({},d),{[t]:R.unflatten(A(f({},d==null?void 0:d[t]),{[u]:h}))})),["method","path"].includes(u)&&(yield o.setValuesIn([u],h)))}),p=V.debounce(i,400);x.onFieldChange("*",(l,d)=>{d.modified&&p(l)})};return{type:"object",properties:{modal:{type:"void","x-decorator":"Form","x-component":"Action.Modal","x-component-props":{className:r.cx("tb-action-popup",r.css`
|
|
48
48
|
.ant-modal-footer {
|
|
49
49
|
position: absolute;
|
|
50
50
|
bottom: 24px;
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
.ant-formily-item-feedback-layout-loose {
|
|
59
59
|
margin-bottom: 10px;
|
|
60
60
|
}
|
|
61
|
-
`},properties:{requestAction:{type:"string","x-component":Q,"x-component-props":{actionForm:!0}},requestTab:{type:"void","x-decorator":"FormItem","x-component":Z},responseTab:{type:"string","x-component":Ke}}}}},tachyBaseResponse:{type:"void","x-decorator":"Col","x-decorator-props":{span:8},"x-component":"Card","x-component-props":{bordered:!1,title:e("TachyBase response"),style:{height:"80vh",overflowY:"auto",borderTopLeftRadius:0,borderBottomLeftRadius:0}},properties:{responseContainer:{type:"void","x-decorator":"Form",properties:{alertError:{type:"string","x-component":ke},responseTransformer:{type:"string","x-decorator":"FormItem","x-component":ee},debugResponse:{type:"string","x-component":Be}}}}}}},footer:{type:"void","x-component":"Action.Modal.Footer",properties:{debug:{title:'{{t("Debug")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useDebugAction }}"}},extractFieldMetadata:{"x-component":Oe}}}}}}}},Re=()=>{const e=x.useForm(),{setVisible:t}=v.useContext(r.ActionContext),{setRawResponse:s,setDebugResponse:o}=j();return{run(){t(!1),e.reset(),e.setValuesIn("responseTab",null),s(null),o(null)}}},_e=()=>{const e=x.useField(),t=r.useAPIClient(),s=x.useForm(),{form:o,actionKey:n,requestActionForm:a}=O(),{name:i}=$.useParams(),{setRawResponse:p,setDebugResponse:l,setResponseValidationErrorMessage:d}=j();return{run(){return D(this,null,function*(){var T,w;const h=(w=(T=o==null?void 0:o.values)==null?void 0:T.actions)==null?void 0:w[n];try{e.data=(e==null?void 0:e.data)||{},e.data.loading=!0,yield a.submit();const b=t.resource("dataSources.httpCollections",i),I=V.omit(s.values,"responseTab"),{data:{data:S}}=yield b.runAction({values:{debug:!0,inferFields:!1,actionOptions:A(f({},h),{type:n,responseTransformer:h==null?void 0:h.responseTransformer}),debugVars:I}});e.data.loading=!1;const{rawResponse:m,debugBody:M,responseValidationErrorMessage:B}=S;p(m),l(M),d(B)}catch(b){e.data.loading=!1,console.error(b)}})}}},Je=()=>{const{t:e}=q(),t=Xe();return c.jsx(r.SchemaComponent,{schema:t,components:{Form:k.Form,Input:r.Input,Action:r.Action,FormItem:r.FormItem,InputNumber:r.InputNumber,Card:g.Card,Variable:r.Variable,Space:r.Space,Select:g.Select,FormLayout:k.FormLayout,Row:g.Row,Col:g.Col},scope:{t:e,useDebugAction:_e,useCancelAction:Re,useVariableOptions:L}})},Ge=()=>{const{t:e}=q(),{requestActionForm:t}=O(),[s,o]=v.useState(!1),n=()=>D(
|
|
61
|
+
`},properties:{requestAction:{type:"string","x-component":Q,"x-component-props":{actionForm:!0}},requestTab:{type:"void","x-decorator":"FormItem","x-component":Z},responseTab:{type:"string","x-component":Ke}}}}},tachyBaseResponse:{type:"void","x-decorator":"Col","x-decorator-props":{span:8},"x-component":"Card","x-component-props":{bordered:!1,title:e("TachyBase response"),style:{height:"80vh",overflowY:"auto",borderTopLeftRadius:0,borderBottomLeftRadius:0}},properties:{responseContainer:{type:"void","x-decorator":"Form",properties:{alertError:{type:"string","x-component":ke},responseTransformer:{type:"string","x-decorator":"FormItem","x-component":ee},debugResponse:{type:"string","x-component":Be}}}}}}},footer:{type:"void","x-component":"Action.Modal.Footer",properties:{debug:{title:'{{t("Debug")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useDebugAction }}"}},extractFieldMetadata:{"x-component":Oe}}}}}}}},Re=()=>{const e=x.useForm(),{setVisible:t}=v.useContext(r.ActionContext),{setRawResponse:s,setDebugResponse:o}=j();return{run(){t(!1),e.reset(),e.setValuesIn("responseTab",null),s(null),o(null)}}},_e=()=>{const e=x.useField(),t=r.useAPIClient(),s=x.useForm(),{form:o,actionKey:n,requestActionForm:a}=O(),{name:i}=$.useParams(),{setRawResponse:p,setDebugResponse:l,setResponseValidationErrorMessage:d}=j();return{run(){return D(this,null,function*(){var T,w;const h=(w=(T=o==null?void 0:o.values)==null?void 0:T.actions)==null?void 0:w[n];try{e.data=(e==null?void 0:e.data)||{},e.data.loading=!0,yield a.submit();const b=t.resource("dataSources.httpCollections",i),I=V.omit(s.values,"responseTab"),{data:{data:S}}=yield b.runAction({values:{debug:!0,inferFields:!1,actionOptions:A(f({},h),{type:n,responseTransformer:h==null?void 0:h.responseTransformer}),debugVars:I}});e.data.loading=!1;const{rawResponse:m,debugBody:M,responseValidationErrorMessage:B}=S;p(m),l(M),d(B)}catch(b){e.data.loading=!1,console.error(b)}})}}},Je=()=>{const{t:e}=q(),t=Xe();return c.jsx(r.SchemaComponent,{schema:t,components:{Form:k.Form,Input:r.Input,Action:r.Action,FormItem:r.FormItem,InputNumber:r.InputNumber,Card:g.Card,Variable:r.Variable,Space:r.Space,Select:g.Select,FormLayout:k.FormLayout,Row:g.Row,Col:g.Col},scope:{t:e,useDebugAction:_e,useCancelAction:Re,useVariableOptions:L}})},Ge=()=>{const{t:e}=q(),{requestActionForm:t}=O(),[s,o]=v.useState(!1),n=()=>D(null,null,function*(){yield t.submit(),o(!0)});return c.jsxs(c.Fragment,{children:[c.jsx(g.Button,{type:"primary",onClick:n,children:e("Try it out")}),c.jsx(ye,{visible:s,setVisible:o,children:c.jsx(Je,{})})]})},Ye=e=>{const t=x.useForm(),{actionKey:s}=e,o=v.useMemo(()=>x.createForm({}),[]),[n,a]=v.useState(null);return c.jsx(ue,{value:{form:A(f({},t),{[s]:o}),actionKey:s,requestActionForm:o,responseTransformer:n,setResponseTransformer:a},children:e.children})},W=(e,t)=>{const s=v.useRef();return{type:"void","x-decorator":Ye,"x-decorator-props":{actionKey:e},"x-component":"FormCollapse.CollapsePanel","x-component-props":{header:t,key:e},properties:{form:{"x-decorator":"Form","x-decorator-props":{className:r.css`
|
|
62
62
|
.ant-formily-item-feedback-layout-loose {
|
|
63
63
|
margin-bottom: 10px;
|
|
64
64
|
}
|
|
65
|
-
`,useValues(o){return s.current=x.useForm(),r.useRequest(()=>Promise.resolve(),o)},effects:()=>{const o=a=>{const i=s.current,{actions:p}=i.values||{},{path:l,value:d}=a.getState();l.includes("add")||i.setValuesIn("actions",A(f({},p),{[e]:R.unflatten(A(f({},p==null?void 0:p[e]),{[l]:d}))}))},n=V.debounce((a,i)=>D(this,null,function*(){i.modified&&(yield o(a))}),400);x.onFieldChange("*",(a,i)=>{i.modified&&n(a,i)})}},type:"void",properties:{[x.uid()]:{type:"void",properties:{requestAction:{type:"string","x-component":Q},requestTab:{type:"void","x-decorator":"FormItem",title:`{{t("Adapt request parameters",{ ns: "${C}" })}}`,"x-component":Z,"x-decorator-props":{tooltip:`{{t("Provide request variables from TachyBase for use by third-party APIs.",{ ns: "${C}" })}}`}},responseTransformer:{type:"string","x-decorator":"FormItem",title:`{{t("Convert third-party response results to TachyBase standard",{ ns: "${C}" })}}`,"x-component":ee,"x-decorator-props":{tooltip:`{{t("The response results from third-party APIs need to be converted to the TachyBase standard to display correctly on the frontend.",{ ns: "${C}" })}}`}},debug:{type:"void","x-component":Ge}}}}}}}},Qe=e=>{const t=x.useForm(),s=r.useCompile(),{t:o}=q(),{fields:n,preview:a}=e,[i,p]=v.useState([]),[l,d]=v.useState(a),{getInterface:u}=r.useCollectionManager_deprecated(),h=T=>{const w=T.filter(I=>I.source||I.interface);return w?w.map(I=>{var M,B;const S=((M=I==null?void 0:I.uiSchema)==null?void 0:M.title)||I.name,m=(B=u(I.interface))==null?void 0:B.default.uiSchema;return{key:I.name,title:s(S),dataIndex:I.name,width:200,render:(E,H,N)=>{const z=H[I.name],bt={type:"object",properties:{[I.name]:A(f({name:`${I.name}`},m),{"x-read-pretty":!0,default:I.interface==="json"||typeof z=="object"?JSON.stringify(z):z})}};return c.jsx(r.EllipsisWithTooltip,{ellipsis:!0,children:c.jsx(x.RecursionField,{schema:bt,name:N,onlyRenderProperties:!0})})}}}):void 0};return v.useEffect(()=>{d(a)},[a,n]),v.useEffect(()=>{p([]);const T=h(n);p(T)},[t.values.fields]),c.jsx("div",{style:{marginBottom:"var(--tb-spacing)"},children:(l==null?void 0:l.length)>0&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"ant-formily-item-label",style:{marginTop:"var(--tb-spacing)",display:"flex",padding:"0 0 8px"},children:[c.jsx("div",{className:"ant-formily-item-label-content",children:c.jsx("span",{children:c.jsx("label",{children:o("Preview")})})}),c.jsx("span",{className:"ant-formily-item-colon",children:":"})]}),c.jsx(g.Table,{size:"middle",pagination:!1,bordered:!0,columns:i,dataSource:l,scroll:{x:1e3,y:300}},"preview")]})},x.uid())},Ze=(e,t)=>e.filter(o=>o.children.filter(a=>a.availableTypes&&a.availableTypes.includes(t)).length>0).map(o=>({label:o.label,key:o.key,children:o.children.filter(n=>n.availableTypes&&n.availableTypes.includes(t))})),oe=e=>{const t=r.useCompile(),{getInterface:s}=r.useCollectionManager_deprecated(),{t:o}=q(),n=x.useForm(),a=x.useField(),[i,p]=v.useState(a.value),l=r.useFieldInterfaceOptions().filter(b=>!["relation","systemInfo"].includes(b.key)),{modal:d}=g.App.useApp(),u=(b,I)=>{setTimeout(()=>{i.splice(I,1,b),p(i),a.value=i.concat()},300)},h=b=>{i.splice(b,1);const I=i.concat();a.value=I,p(I)},T=()=>{d.confirm({title:o("Are you sure you want to clear fields?"),onOk:()=>{n.setValuesIn("fields",[]),n.setValuesIn("preview",[])}})},w=v.useMemo(()=>[{dataIndex:"index",width:60,key:"index",render:(b,I,S)=>S+1},{title:o("Field display name"),dataIndex:"title",key:"title",width:150,render:(b,I,S)=>{const m=i[S];return c.jsx(g.Input,{defaultValue:m.uiSchema.title,onChange:V.debounce(M=>{u(A(f({},m),{uiSchema:A(f({},V.omit(m==null?void 0:m.uiSchema,"rawTitle")),{title:M.target.value})}),S)},300)})}},{title:o("Field name"),dataIndex:"name",key:"name",width:130},{title:o("Field type"),dataIndex:"type",width:140,key:"type",render:(b,I,S)=>{const m=i[S];return m!=null&&m.source||!(m!=null&&m.possibleTypes)?c.jsxs(g.Tag,{children:[" ",b]}):c.jsx(g.Select,{defaultValue:b,popupMatchSelectWidth:!1,style:{width:"100%"},options:(m==null?void 0:m.possibleTypes.map(M=>({label:M,value:M})))||[],onChange:M=>{u(A(f({},m),{type:M}),S)}})}},{title:o("Field interface"),dataIndex:"interface",key:"interface",width:150,render:(b,I,S)=>{const m=i[S],M=(m==null?void 0:m.type)&&Ze(l,m==null?void 0:m.type),B=E=>{var N;const H=s(E);u(A(f({},m),{interface:E,uiSchema:f(f({},m.uiSchema),(N=H==null?void 0:H.default)==null?void 0:N.uiSchema)}),S)};return c.jsx(g.Select,{defaultValue:b,style:{width:"100%"},popupMatchSelectWidth:!1,onChange:B,children:M==null?void 0:M.map(E=>c.jsx(g.Select.OptGroup,{label:t(E.label),children:E.children.map(({label:H,value:N,name:z})=>c.jsx(g.Select.Option,{value:z,children:t(H)},N))},E.key))})}},{title:o("Actions"),dataIndex:"actions",fixed:"right",key:"actions",align:"center",width:100,render:(b,I,S)=>c.jsxs("a",{onClick:()=>h(S),children:[" ",o("Delete")]})}],[i]);return v.useEffect(()=>{p(a.value)},[a.value]),c.jsxs(c.Fragment,{children:[i.length?c.jsx(g.Button,{style:{position:"absolute",top:"-10px",right:"0px"},onClick:T,children:o("Clear")}):null,c.jsx(g.Table,{bordered:!0,size:"middle",columns:w,dataSource:i,scroll:{y:300},pagination:!1})]})};oe.displayName="PreviewFields";function re(e,t,s={}){const o=V.cloneDeep(s),n=f({name:`t_${x.uid()}`},o);n.reverseField&&(n.reverseField.name=`f_${x.uid()}`);const a=W("list",`{{t("List",{ ns: "${C}" })}}`),i=W("get",`{{t("Get",{ ns: "${C}" })}}`),p=W("create",`{{t("Create",{ ns: "${C}" })}}`),l=W("update",`{{t("Update",{ ns: "${C}" })}}`),d=W("destroy",`{{t("Destroy",{ ns: "${C}" })}}`);return{type:"object",properties:{[x.uid()]:{type:"void","x-component":"Action.Drawer","x-component-props":{getContainer:"{{ getContainer }}"},"x-decorator":"Form","x-decorator-props":{useValues(u){return r.useRequest(()=>Promise.resolve({data:n}),u)}},title:e,properties:{title:{type:"string",title:'{{ t("Collection display name") }}',required:!0,"x-decorator":"FormItem","x-component":"Input"},name:{type:"string",title:'{{t("Collection name")}}',required:!0,"x-disabled":"{{ !createOnly }}","x-decorator":"FormItem","x-component":"Input","x-validator":"uid",description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}"},description:{title:'{{t("Description")}}',type:"string",name:"description","x-decorator":"FormItem","x-component":"Input"},actions:{type:"void",title:F("Request actions"),"x-decorator":"FormItem","x-component":"FormCollapse","x-component-props":{size:"small",accordion:!0,defaultActiveKey:[]},properties:{list:a,get:i,create:p,update:l,destroy:d}},fields:{type:"array",required:!0,"x-component":oe,"x-decorator":"FormItem",title:F("Fields",!0)},filterTargetKey:{title:F("Record unique key"),required:!0,type:"single",description:F("If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection."),"x-decorator":"FormItem","x-component":"Select","x-reactions":["{{useAsyncDataSource(loadFilterTargetKeys)}}"]},preview:{type:"void","x-visible":"{{ createOnly }}","x-component":Qe,"x-reactions":{dependencies:["fields"],fulfill:{schema:{"x-component-props":"{{$form.values}}"}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{action1:{title:'{{ t("Cancel") }}',"x-component":"Action","x-component-props":{useAction:"{{ useCancelAction }}"}},action2:{title:'{{ t("Submit") }}',"x-component":"Action","x-component-props":{type:"primary",useAction:t}}}}}}}}}function se(e){return Object.keys(e).filter(n=>{const a=e[n];return a.method&&a.path}).reduce((n,a)=>A(f({},n),{[a]:e[a]}),{})}function ne(e){return["list","get"].filter(t=>!e.includes(t))}function et(){const e=x.useForm(),{refreshCM:t}=r.useCollectionManager_deprecated(),s=r.useActionContext(),{refresh:o}=r.useResourceActionContext(),n=r.useAPIClient(),{name:a}=$.useParams(),i=n.resource("dataSources.collections",a),p=x.useField(),l=r.useDataSourceManager();return q(),{run(){return D(this,null,function*(){p.data=p.data||{},p.data.loading=!0;try{yield e.submit();const u=V.cloneDeep(e.values),h=se(u==null?void 0:u.actions),T=ne(Object.keys(h)),w=V.pick(u,["fields","name","title","filterTargetKey"]),b=T[0];b?(e.query(`*.actions.${b}`).take(I=>{I.setComponentProps({style:{border:"1px solid #ff4d4f"}})}),yield e[b].submit()):(yield i.create({values:A(f({logging:!0},w),{actions:h})}),s.setVisible(!1),yield e.reset(),p.data.loading=!1,o(),yield t(),l.getDataSource(a).reload())}catch(u){console.error(u),p.data.loading=!1}})}}}const tt=e=>{const{scope:t,getContainer:s,item:o}=e,n=F("Create collection",!0),a=re(n,et);return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayTable:k.ArrayTable,TemplateSummay:r.TemplateSummary,FormCollapse:k.FormCollapse,ArrayItems:k.ArrayItems,FormLayout:k.FormLayout,FormItem:r.FormItem},scope:f({createOnly:!0,record:o,showReverseFieldConfig:!0,presetFieldsDisabled:!0,getContainer:s,useCancelAction:r.useCancelAction},t)})},ot=e=>{const{t}=q(!0),{scope:s,getContainer:o,item:n}=e,[a,i]=v.useState(!1),p=()=>i(!0);return c.jsx(r.RecordProvider,{record:n,children:c.jsxs(r.ActionContextProvider,{value:{visible:a,setVisible:i},children:[c.jsx(g.Button,{type:"primary",icon:c.jsx(U.PlusOutlined,{}),onClick:p,children:t("Create collection")}),c.jsx(tt,{scope:s,getContainer:o,item:n})]})})},rt=e=>{const t=r.useRecord();return c.jsx(ot,f({item:t},e))};function st(){const{run:e}=nt(),{refreshCM:t}=r.useCollectionManager_deprecated();return{run(){return D(this,null,function*(){yield e(),yield t()})}}}function nt(){const e=r.useAPIClient(),{t}=q(),s=x.useForm(),o=r.useActionContext(),{name:n}=$.useParams(),{state:a,setState:i,refresh:p}=r.useResourceActionContext();return{run(){return D(this,null,function*(){var d;if(!(a!=null&&a.selectedRowKeys)||a.selectedRowKeys.length===0)return g.message.error(t("Please select the records you want to delete"));yield e.resource("dataSources.collections",n).destroy({filterByTk:(a==null?void 0:a.selectedRowKeys)||[]}),s.reset(),(d=o==null?void 0:o.setVisible)==null||d.call(o,!1),i==null||i({selectedRowKeys:[]}),p()})}}}function at(){const{run:e}=ct(),{refreshCM:t}=r.useCollectionManager_deprecated();return{run(){return D(this,null,function*(){yield e(),yield t()})}}}function ct(){const e=r.useAPIClient(),t=r.useActionContext(),{key:s}=r.useRecord(),{name:o}=$.useParams(),{refresh:n}=r.useResourceActionContext();return{run(){return D(this,null,function*(){var i;yield e.resource("dataSources.collections",o).destroy({filterByTk:s}),(i=t==null?void 0:t.setVisible)==null||i.call(t,!1),n()})}}}const ae=e=>{const{t}=q(),{modal:s}=g.App.useApp(),b=e,{item:o,isBulk:n,children:a}=b,i=de(b,["item","isBulk","children"]),p=V.omit(i,["scope","getContainer","useAction"]),[l,d]=v.useState(!1),{run:u}=st(),{run:h}=at(),T=n?u:h,w=()=>{s.confirm({title:t("Delete collection"),content:t("Are you sure you want to delete it?"),onOk:T})};return c.jsx(r.RecordProvider,{record:o,children:c.jsx(r.ActionContextProvider,{value:{visible:l,setVisible:d},children:n?c.jsx(g.Button,{icon:c.jsx(U.DeleteOutlined,{}),onClick:w,children:a||_("Delete")}):c.jsx("a",A(f({onClick:w},p),{children:a||_("Delete")}))})})};ae.displayName="DeleteCollectionAction";const it=e=>{const t=r.useRecord();return c.jsx(ae,f({item:t},e))},pt=e=>{const t=r.useAPIClient(),s=r.useDataSourceManager(),{refreshCM:o}=r.useCollectionManager_deprecated(),{refresh:n}=r.useResourceActionContext(),a=x.useForm(),i=r.useActionContext(),{targetKey:p}=r.useResourceContext(),{name:l}=$.useParams(),{[p]:d}=r.useRecord(),u=t.resource("dataSources.collections",l);return{run(){return D(this,null,function*(){yield a.submit();const T=V.cloneDeep(a.values),w=se(T==null?void 0:T.actions),b=ne(Object.keys(w)),I=V.pick(a.values,["fields","name","title","filterTargetKey","description"]),S=b[0];if(S)a.query(`*.actions.${S}`).take(m=>{m.setComponentProps({style:{border:"1px solid #ff4d4f"}})}),yield a[S].submit();else{yield u.update({filterByTk:d,values:A(f({},I),{actions:w})}),i.setVisible(!1);const m=s.getDataSource(l);m!=null&&m.reload||m.reload.call(m),yield a.reset(),n(),yield o()}})}}},lt=e=>{const{scope:t,getContainer:s,item:o}=e,n=re('{{ t("Edit collection") }}',pt,o);return c.jsx(r.SchemaComponent,{schema:n,components:{ArrayTable:k.ArrayTable,TemplateSummay:r.TemplateSummary,FormCollapse:k.FormCollapse,ArrayItems:k.ArrayItems,FormLayout:k.FormLayout,FormItem:r.FormItem},scope:f({createOnly:!0,record:o,showReverseFieldConfig:!0,presetFieldsDisabled:!0,getContainer:s,useCancelAction:r.useCancelAction},t)})},dt=e=>{q();const{scope:t,getContainer:s,item:o}=e,[n,a]=v.useState(!1),[i,p]=v.useState(null),d=r.useAPIClient().resource("dataSources.collections",o.dataSourceKey);return c.jsx(r.RecordProvider,{record:o,children:c.jsxs(r.ActionContextProvider,{value:{visible:n,setVisible:a},children:[c.jsx("a",{onClick:()=>D(this,null,function*(){var h;const u=yield d.get({filterByTk:o.key,appends:["fields"]});p((h=u==null?void 0:u.data)==null?void 0:h.data),a(!0)}),children:_("Edit")}),c.jsx(lt,{scope:t,item:i,getContainer:s})]})})},ut=e=>{const t=r.useRecord();return c.jsx(dt,f({item:t},e))},mt={type:"object",properties:{displayName:{type:"string",title:`{{t("Data source display name",{ ns: "${C}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input"},key:{type:"string",title:`{{t("Data source name",{ ns: "${C}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input","x-validator":"uid","x-disabled":"{{ createOnly }}",description:`{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.',{ ns: "${C}" })}}`},options:{type:"object",properties:{baseUrl:{type:"string",title:`{{t("BaseURL",{ ns: "${C}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input.URL","x-validator":{type:"pattern",pattern:/^(https?|ftp):\/\/((([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,})|(\d{1,3}\.){3}\d{1,3}|localhost)(:(\d{1,5}))?(\/[^\s]*)?$/,message:`{{t("Invalid URL",{ ns: "${C}" })}}`}},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:`{{t("Headers", { ns: "${C}" })}}`,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
|
|
65
|
+
`,useValues(o){return s.current=x.useForm(),r.useRequest(()=>Promise.resolve(),o)},effects:()=>{const o=a=>{const i=s.current,{actions:p}=i.values||{},{path:l,value:d}=a.getState();l.includes("add")||i.setValuesIn("actions",A(f({},p),{[e]:R.unflatten(A(f({},p==null?void 0:p[e]),{[l]:d}))}))},n=V.debounce((a,i)=>D(null,null,function*(){i.modified&&(yield o(a))}),400);x.onFieldChange("*",(a,i)=>{i.modified&&n(a,i)})}},type:"void",properties:{[x.uid()]:{type:"void",properties:{requestAction:{type:"string","x-component":Q},requestTab:{type:"void","x-decorator":"FormItem",title:`{{t("Adapt request parameters",{ ns: "${C}" })}}`,"x-component":Z,"x-decorator-props":{tooltip:`{{t("Provide request variables from TachyBase for use by third-party APIs.",{ ns: "${C}" })}}`}},responseTransformer:{type:"string","x-decorator":"FormItem",title:`{{t("Convert third-party response results to TachyBase standard",{ ns: "${C}" })}}`,"x-component":ee,"x-decorator-props":{tooltip:`{{t("The response results from third-party APIs need to be converted to the TachyBase standard to display correctly on the frontend.",{ ns: "${C}" })}}`}},debug:{type:"void","x-component":Ge}}}}}}}},Qe=e=>{const t=x.useForm(),s=r.useCompile(),{t:o}=q(),{fields:n,preview:a}=e,[i,p]=v.useState([]),[l,d]=v.useState(a),{getInterface:u}=r.useCollectionManager_deprecated(),h=T=>{const w=T.filter(I=>I.source||I.interface);return w?w.map(I=>{var M,B;const S=((M=I==null?void 0:I.uiSchema)==null?void 0:M.title)||I.name,m=(B=u(I.interface))==null?void 0:B.default.uiSchema;return{key:I.name,title:s(S),dataIndex:I.name,width:200,render:(E,H,N)=>{const z=H[I.name],bt={type:"object",properties:{[I.name]:A(f({name:`${I.name}`},m),{"x-read-pretty":!0,default:I.interface==="json"||typeof z=="object"?JSON.stringify(z):z})}};return c.jsx(r.EllipsisWithTooltip,{ellipsis:!0,children:c.jsx(x.RecursionField,{schema:bt,name:N,onlyRenderProperties:!0})})}}}):void 0};return v.useEffect(()=>{d(a)},[a,n]),v.useEffect(()=>{p([]);const T=h(n);p(T)},[t.values.fields]),c.jsx("div",{style:{marginBottom:"var(--tb-spacing)"},children:(l==null?void 0:l.length)>0&&c.jsxs(c.Fragment,{children:[c.jsxs("div",{className:"ant-formily-item-label",style:{marginTop:"var(--tb-spacing)",display:"flex",padding:"0 0 8px"},children:[c.jsx("div",{className:"ant-formily-item-label-content",children:c.jsx("span",{children:c.jsx("label",{children:o("Preview")})})}),c.jsx("span",{className:"ant-formily-item-colon",children:":"})]}),c.jsx(g.Table,{size:"middle",pagination:!1,bordered:!0,columns:i,dataSource:l,scroll:{x:1e3,y:300}},"preview")]})},x.uid())},Ze=(e,t)=>e.filter(o=>o.children.filter(a=>a.availableTypes&&a.availableTypes.includes(t)).length>0).map(o=>({label:o.label,key:o.key,children:o.children.filter(n=>n.availableTypes&&n.availableTypes.includes(t))})),oe=e=>{const t=r.useCompile(),{getInterface:s}=r.useCollectionManager_deprecated(),{t:o}=q(),n=x.useForm(),a=x.useField(),[i,p]=v.useState(a.value),l=r.useFieldInterfaceOptions().filter(b=>!["relation","systemInfo"].includes(b.key)),{modal:d}=g.App.useApp(),u=(b,I)=>{setTimeout(()=>{i.splice(I,1,b),p(i),a.value=i.concat()},300)},h=b=>{i.splice(b,1);const I=i.concat();a.value=I,p(I)},T=()=>{d.confirm({title:o("Are you sure you want to clear fields?"),onOk:()=>{n.setValuesIn("fields",[]),n.setValuesIn("preview",[])}})},w=v.useMemo(()=>[{dataIndex:"index",width:60,key:"index",render:(b,I,S)=>S+1},{title:o("Field display name"),dataIndex:"title",key:"title",width:150,render:(b,I,S)=>{const m=i[S];return c.jsx(g.Input,{defaultValue:m.uiSchema.title,onChange:V.debounce(M=>{u(A(f({},m),{uiSchema:A(f({},V.omit(m==null?void 0:m.uiSchema,"rawTitle")),{title:M.target.value})}),S)},300)})}},{title:o("Field name"),dataIndex:"name",key:"name",width:130},{title:o("Field type"),dataIndex:"type",width:140,key:"type",render:(b,I,S)=>{const m=i[S];return m!=null&&m.source||!(m!=null&&m.possibleTypes)?c.jsxs(g.Tag,{children:[" ",b]}):c.jsx(g.Select,{defaultValue:b,popupMatchSelectWidth:!1,style:{width:"100%"},options:(m==null?void 0:m.possibleTypes.map(M=>({label:M,value:M})))||[],onChange:M=>{u(A(f({},m),{type:M}),S)}})}},{title:o("Field interface"),dataIndex:"interface",key:"interface",width:150,render:(b,I,S)=>{const m=i[S],M=(m==null?void 0:m.type)&&Ze(l,m==null?void 0:m.type),B=E=>{var N;const H=s(E);u(A(f({},m),{interface:E,uiSchema:f(f({},m.uiSchema),(N=H==null?void 0:H.default)==null?void 0:N.uiSchema)}),S)};return c.jsx(g.Select,{defaultValue:b,style:{width:"100%"},popupMatchSelectWidth:!1,onChange:B,children:M==null?void 0:M.map(E=>c.jsx(g.Select.OptGroup,{label:t(E.label),children:E.children.map(({label:H,value:N,name:z})=>c.jsx(g.Select.Option,{value:z,children:t(H)},N))},E.key))})}},{title:o("Actions"),dataIndex:"actions",fixed:"right",key:"actions",align:"center",width:100,render:(b,I,S)=>c.jsxs("a",{onClick:()=>h(S),children:[" ",o("Delete")]})}],[i]);return v.useEffect(()=>{p(a.value)},[a.value]),c.jsxs(c.Fragment,{children:[i.length?c.jsx(g.Button,{style:{position:"absolute",top:"-10px",right:"0px"},onClick:T,children:o("Clear")}):null,c.jsx(g.Table,{bordered:!0,size:"middle",columns:w,dataSource:i,scroll:{y:300},pagination:!1})]})};oe.displayName="PreviewFields";function re(e,t,s={}){const o=V.cloneDeep(s),n=f({name:`t_${x.uid()}`},o);n.reverseField&&(n.reverseField.name=`f_${x.uid()}`);const a=W("list",`{{t("List",{ ns: "${C}" })}}`),i=W("get",`{{t("Get",{ ns: "${C}" })}}`),p=W("create",`{{t("Create",{ ns: "${C}" })}}`),l=W("update",`{{t("Update",{ ns: "${C}" })}}`),d=W("destroy",`{{t("Destroy",{ ns: "${C}" })}}`);return{type:"object",properties:{[x.uid()]:{type:"void","x-component":"Action.Drawer","x-component-props":{getContainer:"{{ getContainer }}"},"x-decorator":"Form","x-decorator-props":{useValues(u){return r.useRequest(()=>Promise.resolve({data:n}),u)}},title:e,properties:{title:{type:"string",title:'{{ t("Collection display name") }}',required:!0,"x-decorator":"FormItem","x-component":"Input"},name:{type:"string",title:'{{t("Collection name")}}',required:!0,"x-disabled":"{{ !createOnly }}","x-decorator":"FormItem","x-component":"Input","x-validator":"uid",description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}"},description:{title:'{{t("Description")}}',type:"string",name:"description","x-decorator":"FormItem","x-component":"Input"},actions:{type:"void",title:F("Request actions"),"x-decorator":"FormItem","x-component":"FormCollapse","x-component-props":{size:"small",accordion:!0,defaultActiveKey:[]},properties:{list:a,get:i,create:p,update:l,destroy:d}},fields:{type:"array",required:!0,"x-component":oe,"x-decorator":"FormItem",title:F("Fields",!0)},filterTargetKey:{title:F("Record unique key"),required:!0,type:"single",description:F("If a collection lacks a primary key, you must configure a unique record key to locate row records within a block, failure to configure this will prevent the creation of data blocks for the collection."),"x-decorator":"FormItem","x-component":"Select","x-reactions":["{{useAsyncDataSource(loadFilterTargetKeys)}}"]},preview:{type:"void","x-visible":"{{ createOnly }}","x-component":Qe,"x-reactions":{dependencies:["fields"],fulfill:{schema:{"x-component-props":"{{$form.values}}"}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{action1:{title:'{{ t("Cancel") }}',"x-component":"Action","x-component-props":{useAction:"{{ useCancelAction }}"}},action2:{title:'{{ t("Submit") }}',"x-component":"Action","x-component-props":{type:"primary",useAction:t}}}}}}}}}function se(e){return Object.keys(e).filter(n=>{const a=e[n];return a.method&&a.path}).reduce((n,a)=>A(f({},n),{[a]:e[a]}),{})}function ne(e){return["list","get"].filter(t=>!e.includes(t))}function et(){const e=x.useForm(),{refreshCM:t}=r.useCollectionManager_deprecated(),s=r.useActionContext(),{refresh:o}=r.useResourceActionContext(),n=r.useAPIClient(),{name:a}=$.useParams(),i=n.resource("dataSources.collections",a),p=x.useField(),l=r.useDataSourceManager();return q(),{run(){return D(this,null,function*(){p.data=p.data||{},p.data.loading=!0;try{yield e.submit();const u=V.cloneDeep(e.values),h=se(u==null?void 0:u.actions),T=ne(Object.keys(h)),w=V.pick(u,["fields","name","title","filterTargetKey"]),b=T[0];b?(e.query(`*.actions.${b}`).take(I=>{I.setComponentProps({style:{border:"1px solid #ff4d4f"}})}),yield e[b].submit()):(yield i.create({values:A(f({logging:!0},w),{actions:h})}),s.setVisible(!1),yield e.reset(),p.data.loading=!1,o(),yield t(),l.getDataSource(a).reload())}catch(u){console.error(u),p.data.loading=!1}})}}}const tt=e=>{const{scope:t,getContainer:s,item:o}=e,n=F("Create collection",!0),a=re(n,et);return c.jsx(r.SchemaComponent,{schema:a,components:{ArrayTable:k.ArrayTable,TemplateSummay:r.TemplateSummary,FormCollapse:k.FormCollapse,ArrayItems:k.ArrayItems,FormLayout:k.FormLayout,FormItem:r.FormItem},scope:f({createOnly:!0,record:o,showReverseFieldConfig:!0,presetFieldsDisabled:!0,getContainer:s,useCancelAction:r.useCancelAction},t)})},ot=e=>{const{t}=q(!0),{scope:s,getContainer:o,item:n}=e,[a,i]=v.useState(!1),p=()=>i(!0);return c.jsx(r.RecordProvider,{record:n,children:c.jsxs(r.ActionContextProvider,{value:{visible:a,setVisible:i},children:[c.jsx(g.Button,{type:"primary",icon:c.jsx(U.PlusOutlined,{}),onClick:p,children:t("Create collection")}),c.jsx(tt,{scope:s,getContainer:o,item:n})]})})},rt=e=>{const t=r.useRecord();return c.jsx(ot,f({item:t},e))};function st(){const{run:e}=nt(),{refreshCM:t}=r.useCollectionManager_deprecated();return{run(){return D(this,null,function*(){yield e(),yield t()})}}}function nt(){const e=r.useAPIClient(),{t}=q(),s=x.useForm(),o=r.useActionContext(),{name:n}=$.useParams(),{state:a,setState:i,refresh:p}=r.useResourceActionContext();return{run(){return D(this,null,function*(){var d;if(!(a!=null&&a.selectedRowKeys)||a.selectedRowKeys.length===0)return g.message.error(t("Please select the records you want to delete"));yield e.resource("dataSources.collections",n).destroy({filterByTk:(a==null?void 0:a.selectedRowKeys)||[]}),s.reset(),(d=o==null?void 0:o.setVisible)==null||d.call(o,!1),i==null||i({selectedRowKeys:[]}),p()})}}}function at(){const{run:e}=ct(),{refreshCM:t}=r.useCollectionManager_deprecated();return{run(){return D(this,null,function*(){yield e(),yield t()})}}}function ct(){const e=r.useAPIClient(),t=r.useActionContext(),{key:s}=r.useRecord(),{name:o}=$.useParams(),{refresh:n}=r.useResourceActionContext();return{run(){return D(this,null,function*(){var i;yield e.resource("dataSources.collections",o).destroy({filterByTk:s}),(i=t==null?void 0:t.setVisible)==null||i.call(t,!1),n()})}}}const ae=e=>{const{t}=q(),{modal:s}=g.App.useApp(),b=e,{item:o,isBulk:n,children:a}=b,i=de(b,["item","isBulk","children"]),p=V.omit(i,["scope","getContainer","useAction"]),[l,d]=v.useState(!1),{run:u}=st(),{run:h}=at(),T=n?u:h,w=()=>{s.confirm({title:t("Delete collection"),content:t("Are you sure you want to delete it?"),onOk:T})};return c.jsx(r.RecordProvider,{record:o,children:c.jsx(r.ActionContextProvider,{value:{visible:l,setVisible:d},children:n?c.jsx(g.Button,{icon:c.jsx(U.DeleteOutlined,{}),onClick:w,children:a||_("Delete")}):c.jsx("a",A(f({onClick:w},p),{children:a||_("Delete")}))})})};ae.displayName="DeleteCollectionAction";const it=e=>{const t=r.useRecord();return c.jsx(ae,f({item:t},e))},pt=e=>{const t=r.useAPIClient(),s=r.useDataSourceManager(),{refreshCM:o}=r.useCollectionManager_deprecated(),{refresh:n}=r.useResourceActionContext(),a=x.useForm(),i=r.useActionContext(),{targetKey:p}=r.useResourceContext(),{name:l}=$.useParams(),{[p]:d}=r.useRecord(),u=t.resource("dataSources.collections",l);return{run(){return D(this,null,function*(){yield a.submit();const T=V.cloneDeep(a.values),w=se(T==null?void 0:T.actions),b=ne(Object.keys(w)),I=V.pick(a.values,["fields","name","title","filterTargetKey","description"]),S=b[0];if(S)a.query(`*.actions.${S}`).take(m=>{m.setComponentProps({style:{border:"1px solid #ff4d4f"}})}),yield a[S].submit();else{yield u.update({filterByTk:d,values:A(f({},I),{actions:w})}),i.setVisible(!1);const m=s.getDataSource(l);m!=null&&m.reload||m.reload.call(m),yield a.reset(),n(),yield o()}})}}},lt=e=>{const{scope:t,getContainer:s,item:o}=e,n=re('{{ t("Edit collection") }}',pt,o);return c.jsx(r.SchemaComponent,{schema:n,components:{ArrayTable:k.ArrayTable,TemplateSummay:r.TemplateSummary,FormCollapse:k.FormCollapse,ArrayItems:k.ArrayItems,FormLayout:k.FormLayout,FormItem:r.FormItem},scope:f({createOnly:!0,record:o,showReverseFieldConfig:!0,presetFieldsDisabled:!0,getContainer:s,useCancelAction:r.useCancelAction},t)})},dt=e=>{q();const{scope:t,getContainer:s,item:o}=e,[n,a]=v.useState(!1),[i,p]=v.useState(null),d=r.useAPIClient().resource("dataSources.collections",o.dataSourceKey);return c.jsx(r.RecordProvider,{record:o,children:c.jsxs(r.ActionContextProvider,{value:{visible:n,setVisible:a},children:[c.jsx("a",{onClick:()=>D(null,null,function*(){var h;const u=yield d.get({filterByTk:o.key,appends:["fields"]});p((h=u==null?void 0:u.data)==null?void 0:h.data),a(!0)}),children:_("Edit")}),c.jsx(lt,{scope:t,item:i,getContainer:s})]})})},ut=e=>{const t=r.useRecord();return c.jsx(dt,f({item:t},e))},mt={type:"object",properties:{displayName:{type:"string",title:`{{t("Data source display name",{ ns: "${C}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input"},key:{type:"string",title:`{{t("Data source name",{ ns: "${C}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input","x-validator":"uid","x-disabled":"{{ createOnly }}",description:`{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.',{ ns: "${C}" })}}`},options:{type:"object",properties:{baseUrl:{type:"string",title:`{{t("BaseURL",{ ns: "${C}" })}}`,required:!0,"x-decorator":"FormItem","x-component":"Input.URL","x-validator":{type:"pattern",pattern:/^(https?|ftp):\/\/((([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,})|(\d{1,3}\.){3}\d{1,3}|localhost)(:(\d{1,5}))?(\/[^\s]*)?$/,message:`{{t("Invalid URL",{ ns: "${C}" })}}`}},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:`{{t("Headers", { ns: "${C}" })}}`,items:{type:"object",properties:{space:{type:"void","x-component":"Space","x-component-props":{style:{flexWrap:"nowrap",maxWidth:"100%",display:"flex"},className:r.css`
|
|
66
66
|
& > .ant-space-item:first-child,
|
|
67
67
|
& > .ant-space-item:last-child {
|
|
68
68
|
flex-shrink: 0;
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
"@tachybase/client": "1.3.
|
|
3
|
-
"@tachybase/module-data-source": "1.3.
|
|
4
|
-
"@tachybase/server": "1.3.
|
|
2
|
+
"@tachybase/client": "1.3.17",
|
|
3
|
+
"@tachybase/module-data-source": "1.3.17",
|
|
4
|
+
"@tachybase/server": "1.3.17",
|
|
5
5
|
"react": "18.3.1",
|
|
6
6
|
"antd": "5.22.5",
|
|
7
7
|
"lodash": "4.17.21",
|
|
8
|
-
"@tachybase/database": "1.3.
|
|
9
|
-
"@tachybase/data-source": "1.3.
|
|
10
|
-
"@tachybase/utils": "1.3.
|
|
8
|
+
"@tachybase/database": "1.3.17",
|
|
9
|
+
"@tachybase/data-source": "1.3.17",
|
|
10
|
+
"@tachybase/utils": "1.3.17",
|
|
11
11
|
"axios": "1.7.7",
|
|
12
12
|
"@ant-design/icons": "5.5.2",
|
|
13
|
-
"@tachybase/schema": "1.3.
|
|
14
|
-
"@tachybase/components": "1.3.
|
|
13
|
+
"@tachybase/schema": "1.3.17",
|
|
14
|
+
"@tachybase/components": "1.3.17",
|
|
15
15
|
"react-router-dom": "6.28.1"
|
|
16
16
|
};
|
package/dist/index.js
CHANGED
|
@@ -26,12 +26,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var index_exports = {};
|
|
30
|
+
__export(index_exports, {
|
|
31
31
|
default: () => import_server.default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
__reExport(
|
|
33
|
+
module.exports = __toCommonJS(index_exports);
|
|
34
|
+
__reExport(index_exports, require("./server"), module.exports);
|
|
35
35
|
var import_server = __toESM(require("./server"));
|
|
36
36
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
37
|
0 && (module.exports = {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/plugin-data-source-common",
|
|
3
3
|
"displayName": "External DataSource Support",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.17",
|
|
5
5
|
"description": "Supports more data sources",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Data sources"
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
"react-router-dom": "6.28.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@tachybase/
|
|
24
|
-
"@tachybase/
|
|
25
|
-
"@tachybase/
|
|
26
|
-
"@tachybase/
|
|
27
|
-
"@tachybase/
|
|
28
|
-
"@tachybase/
|
|
29
|
-
"@tachybase/
|
|
30
|
-
"@tachybase/test": "1.3.
|
|
31
|
-
"@tachybase/utils": "1.3.
|
|
23
|
+
"@tachybase/client": "1.3.17",
|
|
24
|
+
"@tachybase/components": "1.3.17",
|
|
25
|
+
"@tachybase/database": "1.3.17",
|
|
26
|
+
"@tachybase/data-source": "1.3.17",
|
|
27
|
+
"@tachybase/schema": "1.3.17",
|
|
28
|
+
"@tachybase/server": "1.3.17",
|
|
29
|
+
"@tachybase/module-data-source": "1.3.17",
|
|
30
|
+
"@tachybase/test": "1.3.17",
|
|
31
|
+
"@tachybase/utils": "1.3.17"
|
|
32
32
|
},
|
|
33
33
|
"description.zh-CN": "支持更多的数据源",
|
|
34
34
|
"displayName.zh-CN": "外部数据源支持",
|