@nocobase/plugin-action-custom-request 1.4.8 → 1.4.10

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.
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- (function(o,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("react/jsx-runtime"),require("@nocobase/client"),require("@formily/react"),require("@nocobase/utils/client"),require("antd"),require("react"),require("react-i18next"),require("@formily/antd-v5"),require("@formily/shared")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@nocobase/client","@formily/react","@nocobase/utils/client","antd","react","react-i18next","@formily/antd-v5","@formily/shared"],n):(o=typeof globalThis!="undefined"?globalThis:o||self,n(o["@nocobase/plugin-action-custom-request"]={},o.jsxRuntime,o["@nocobase/client"],o["@formily/react"],o["@nocobase/utils"],o.antd,o.react,o["react-i18next"],o["@formily/antd-v5"],o["@formily/shared"]))})(this,function(o,n,e,m,b,F,L,P,v,w){"use strict";var ve=Object.defineProperty,Ae=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var ne=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable;var se=(o,n,e)=>n in o?ve(o,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):o[n]=e,g=(o,n)=>{for(var e in n||(n={}))ne.call(n,e)&&se(o,e,n[e]);if(N)for(var e of N(n))re.call(n,e)&&se(o,e,n[e]);return o},I=(o,n)=>Ae(o,Re(n));var ae=(o,n)=>{var e={};for(var m in o)ne.call(o,m)&&n.indexOf(m)<0&&(e[m]=o[m]);if(o!=null&&N)for(var m of N(o))n.indexOf(m)<0&&re.call(o,m)&&(e[m]=o[m]);return e};var q=(o,n,e)=>new Promise((m,b)=>{var F=v=>{try{P(e.next(v))}catch(w){b(w)}},L=v=>{try{P(e.throw(v))}catch(w){b(w)}},P=v=>v.done?m(v.value):Promise.resolve(v.value).then(F,L);P((e=e.apply(o,n)).next())});const k="customRequests:listByCurrentRole";var E=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},H={exports:{}};(function(t,c){(function(a,u){u()})(E,function(){function a(s,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(s.type)?new Blob(["\uFEFF",s],{type:s.type}):s}function u(s,r,x){var l=new XMLHttpRequest;l.open("GET",s),l.responseType="blob",l.onload=function(){C(l.response,r,x)},l.onerror=function(){console.error("could not download file")},l.send()}function p(s){var r=new XMLHttpRequest;r.open("HEAD",s,!1);try{r.send()}catch(x){}return 200<=r.status&&299>=r.status}function d(s){try{s.dispatchEvent(new MouseEvent("click"))}catch(x){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),s.dispatchEvent(r)}}var i=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof E=="object"&&E.global===E?E:void 0,h=i.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),C=i.saveAs||(typeof window!="object"||window!==i?function(){}:"download"in HTMLAnchorElement.prototype&&!h?function(s,r,x){var l=i.URL||i.webkitURL,S=document.createElement("a");r=r||s.name||"download",S.download=r,S.rel="noopener",typeof s=="string"?(S.href=s,S.origin===location.origin?d(S):p(S.href)?u(s,r,x):d(S,S.target="_blank")):(S.href=l.createObjectURL(s),setTimeout(function(){l.revokeObjectURL(S.href)},4e4),setTimeout(function(){d(S)},0))}:"msSaveOrOpenBlob"in navigator?function(s,r,x){if(r=r||s.name||"download",typeof s!="string")navigator.msSaveOrOpenBlob(a(s,x),r);else if(p(s))u(s,r,x);else{var l=document.createElement("a");l.href=s,l.target="_blank",setTimeout(function(){d(l)})}}:function(s,r,x,l){if(l=l||open("","_blank"),l&&(l.document.title=l.document.body.innerText="downloading..."),typeof s=="string")return u(s,r,x);var S=s.type==="application/octet-stream",T=/constructor/i.test(i.HTMLElement)||i.safari,D=/CriOS\/[\d]+/.test(navigator.userAgent);if((D||S&&T||h)&&typeof FileReader!="undefined"){var O=new FileReader;O.onloadend=function(){var y=O.result;y=D?y:y.replace(/^data:[^;]*;/,"data:attachment/file;"),l?l.location.href=y:location=y,l=null},O.readAsDataURL(s)}else{var U=i.URL||i.webkitURL,A=U.createObjectURL(s);l?l.location=A:location.href=A,l=null,setTimeout(function(){U.revokeObjectURL(A)},4e4)}});i.saveAs=C.saveAs=C,t.exports=C})})(H);var ie=H.exports;const ce=()=>{const t=e.useAPIClient(),c=e.useNavigateNoUpdate(),a=m.useFieldSchema(),u=e.useCompile(),p=m.useForm(),d=e.useRecord(),i=m.useFieldSchema(),h=m.useField(),{setVisible:C}=e.useActionContext(),{modal:s,message:r}=F.App.useApp(),x=e.useDataSourceKey();return{onClick(S,T){return q(this,null,function*(){var te,oe;const{skipValidator:D,onSuccess:O}=(te=a==null?void 0:a["x-action-settings"])!=null?te:{},{manualClose:U,redirecting:A,redirectTo:y,successMessage:B,actionAfterSuccess:R}=O||{},Z=a==null?void 0:a["x-action"];D!==!0&&Z==="customize:form:request"&&(yield p.submit());let ee=g({},d);Z==="customize:form:request"&&(ee=p.values),(oe=h.data)!=null||(h.data={}),h.data.loading=!0;try{const K=yield t.request({url:`/customRequests:send/${i["x-uid"]}`,method:"POST",data:{currentRecord:{dataSourceKey:x,data:ee}},responseType:i["x-response-type"]==="stream"?"blob":"json"});if(K.headers["content-disposition"]){const Ce=/attachment;\s*filename="([^"]+)"/,M=K.headers["content-disposition"].match(Ce);M!=null&&M[1]&&ie.saveAs(K.data,M[1])}if(h.data.loading=!1,T&&(T==null||T()),(R==="previous"||!R&&A!==!0)&&(C==null||C(!1)),!B){(A&&!R||R==="redirect")&&y&&(b.isURL(y)?window.location.href=y:c(y));return}U?s.success({title:u(B),onOk:()=>q(this,null,function*(){(A&&!R||R==="redirect")&&y&&(b.isURL(y)?window.location.href=y:c(y))})}):(r.success(u(B)),(A&&!R||R==="redirect")&&y&&(b.isURL(y)?window.location.href=y:c(y)))}finally{h.data.loading=!1}})}}},G=()=>{const c=`customRequests:get/${m.useFieldSchema()["x-uid"]}`;return e.useRequest({url:c,params:{appends:["roles"]}},{manual:!0,cacheKey:c})},J="action-custom-request";function f(t){return`{{t('${t}', { ns: '${J}', nsMode: 'fallback' })}}`}function _(){return P.useTranslation(J,{nsMode:"fallback"})}const W=()=>{const t=e.useCollection_deprecated(),{t:c}=_(),a=e.useCollectionFilterOptions(t),u=e.useCollectionFilterOptions("users",e.DEFAULT_DATA_SOURCE_KEY),p=e.useCompile(),d=e.useCollectionRecordData(),[i,h]=L.useMemo(()=>[p(a),p(u)],[a,u]);return L.useMemo(()=>[d&&{name:"currentRecord",title:c("Current record",{ns:"client"}),children:[...i]},{name:"currentUser",title:c("Current user",{ns:"client"}),children:h},{name:"currentTime",title:c("Current time",{ns:"client"}),children:null},{name:"$nToken",title:"API token",children:null}].filter(Boolean),[d,c,i,h])},j=()=>e.useAPIClient().resource("customRequests"),ue={value:"name",label:"title"},z=()=>({scope:W(),fieldNames:ue,useTypedConstant:!0}),X={type:"object",properties:{method:{type:"string",required:!0,title:f("HTTP method"),"x-decorator-props":{tooltip:f("When the HTTP method is Post, Put or Patch, and this custom request inside the form, the request body will be automatically filled in with the form data")},"x-decorator":"FormItem","x-component":"Select","x-component-props":{showSearch:!1,allowClear:!1,className:"auto-width"},enum:[{label:"GET",value:"GET"},{label:"POST",value:"POST"},{label:"PUT",value:"PUT"},{label:"PATCH",value:"PATCH"},{label:"DELETE",value:"DELETE"}],default:"POST"},url:{type:"string",required:!0,title:f("URL"),"x-decorator":"FormItem","x-component":"Variable.TextArea","x-use-component-props":z,"x-component-props":{placeholder:"https://www.nocobase.com"}},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:f("Headers"),description:f('"Content-Type" only support "application/json", and no need to specify'),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:f("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.TextArea","x-use-component-props":z},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:f("Add request header"),"x-component":"ArrayItems.Addition"}}},params:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:f("Parameters"),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:f("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.TextArea","x-use-component-props":z},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:f("Add parameter"),"x-component":"ArrayItems.Addition"}}},data:{type:"string",title:f("Body"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"Variable.JSON","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},changeOnSelect:!0,autoSize:{minRows:10},placeholder:f("Input request data")},description:f("Only support standard JSON data")},timeout:{type:"number",title:f("Timeout config"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"InputNumber","x-component-props":{addonAfter:f("ms"),min:1,step:1e3,defaultValue:5e3}},responseType:{type:"string",title:f("Response type"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"Select",default:"json",enum:[{value:"json",label:"JSON"},{value:"stream",label:"Stream"}]}}},le={type:"object",properties:{roles:{type:"array",title:f("Roles"),"x-decorator":"FormItem","x-decorator-props":{tooltip:f("If not set, all roles can see this action")},"x-component":"RemoteSelect","x-component-props":{multiple:!0,objectValue:!0,dataSource:e.DEFAULT_DATA_SOURCE_KEY,service:{resource:"roles"},manual:!1,fieldNames:{label:"title",value:"name"}}}}};function Y(){var s;const{t}=_(),{name:c}=e.useCollection_deprecated(),a=e.useDataSourceKey(),u=m.useFieldSchema(),p=j(),{message:d}=F.App.useApp(),{data:i,refresh:h}=G(),{dn:C}=e.useDesignable();return n.jsx(n.Fragment,{children:n.jsx(e.SchemaSettingsActionModalItem,{title:t("Request settings"),components:{ArrayItems:v.ArrayItems},beforeOpen:()=>!i&&h(),scope:{useCustomRequestVariableOptions:W},schema:X,initialValues:g({},(s=i==null?void 0:i.data)==null?void 0:s.options),onSubmit:r=>q(this,null,function*(){const x=ae(r,[]);u["x-response-type"]=x.responseType,yield p.updateOrCreate({values:{key:u["x-uid"],options:I(g({},x),{collectionName:c,dataSourceKey:a})},filterKeys:["key"]}),C.emit("patch",{schema:{"x-response-type":x.responseType,"x-uid":u["x-uid"]}}),h(),d.success(t("Saved successfully"))})})})}function $(){var h;const{t}=_(),c=m.useFieldSchema(),a=j(),{message:u}=F.App.useApp(),{data:p,refresh:d}=G(),{refresh:i}=e.useRequest({url:k},{manual:!0,cacheKey:k});return n.jsx(n.Fragment,{children:n.jsx(e.SchemaSettingsActionModalItem,{title:t("Access control"),schema:le,initialValues:{roles:(h=p==null?void 0:p.data)==null?void 0:h.roles},beforeOpen:()=>!p&&d(),onSubmit:s=>q(this,[s],function*({roles:C}){return yield a.updateOrCreate({values:{key:c["x-uid"],roles:C},filterKeys:["key"]}),d(),i(),u.success(t("Saved successfully"))})})})}const me=new e.SchemaSettings({name:"CustomRequestActionSettings",items:[I(g({},e.actionSettingsItems[0]),{children:[...e.actionSettingsItems[0].children,{name:"request settings",Component:Y},{name:"accessControl",Component:$}]})]}),pe=()=>{const t=j(),c=m.useFieldSchema();return n.jsx(e.Action.Designer,{linkageAction:!0,schemaSettings:"CustomRequestActionSettings",buttonEditorProps:{isLink:c["x-action"]==="customize:table:request"},linkageRulesProps:{type:"button"},removeButtonProps:{onConfirmOk(){return t.destroy({filterByTk:c["x-uid"]})}}})},de=t=>{var d;const a=e.useAPIClient().auth.role==="root",u=m.useFieldSchema(),{data:p}=e.useRequest({url:k},{manual:a,cacheKey:k});return!a&&!((d=p==null?void 0:p.data)!=null&&d.includes(u==null?void 0:u["x-uid"]))?null:t.children},fe={"customize:table:request":e.Action.Link},V=e.withDynamicSchemaProps(t=>{const a=m.useFieldSchema()["x-action"],u=fe[a]||e.Action;return n.jsx(u,I(g({},t),{useProps:ce}))});V.Designer=pe,V.Decorator=de;const he=()=>({title:'{{ t("Custom request") }}',"x-component":"CustomRequestAction","x-action":"customize:form:request","x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:customRequest","x-decorator":"CustomRequestAction.Decorator","x-uid":w.uid(),"x-action-settings":{onSuccess:{manualClose:!1,redirecting:!1,successMessage:'{{t("Request success")}}'}}}),ye=t=>{const c=j(),a=e.useSchemaInitializerItem(),{insert:u}=e.useSchemaInitializer(),p=he();return n.jsx(e.SchemaInitializerItem,I(g({},a),{onClick:()=>q(this,null,function*(){var i;const d=w.merge(p||{},a.schema||{});(i=a==null?void 0:a.schemaInitialize)==null||i.call(a,d),u(d),yield c.create({values:{key:d["x-uid"]}})})}))},xe=new e.SchemaSettings({name:"actionSettings:customRequest",items:[{name:"editButton",Component:e.ButtonEditor,useComponentProps(){return{isLink:m.useFieldSchema()["x-action"]==="customize:table:request"}}},{name:"linkageRules",Component:e.SchemaSettingsLinkageRules,useComponentProps(){const{name:t}=e.useCollection()||{},{linkageRulesProps:c}=e.useSchemaToolbar();return I(g({},c),{collectionName:t})},useVisible(){const t=e.useCollectionRecord();return t&&t.data&&!(t!=null&&t.isNew)}},{name:"secondConFirm",Component:e.SecondConFirm},{name:"afterSuccessfulSubmission",Component:e.AfterSuccess},{name:"request settings",Component:Y},{name:"accessControl",Component:$},{name:"refreshDataBlockRequest",Component:e.RefreshDataBlockRequest,useComponentProps(){return{isPopupAction:!1}},useVisible(){return!!e.useCollection()}},{name:"delete",sort:100,Component:e.RemoveButton,useComponentProps(){const{removeButtonProps:t}=e.useSchemaToolbar();return t}}]}),Se=t=>n.jsx(e.SchemaComponentOptions,{scope:{CustomRequestConfigurationFieldsSchema:X},components:{CustomRequestAction:V,CustomRequestInitializer:ye},children:t.children});class Q extends e.Plugin{load(){return q(this,null,function*(){this.app.use(Se),this.app.schemaSettingsManager.add(xe),this.app.schemaSettingsManager.add(me)})}}o.PluginActionCustomRequestClient=Q,o.default=Q,Object.defineProperties(o,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
10
+ (function(s,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("react/jsx-runtime"),require("@nocobase/client"),require("@formily/react"),require("@nocobase/utils/client"),require("antd"),require("react"),require("react-i18next"),require("@formily/antd-v5"),require("@formily/shared")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@nocobase/client","@formily/react","@nocobase/utils/client","antd","react","react-i18next","@formily/antd-v5","@formily/shared"],n):(s=typeof globalThis!="undefined"?globalThis:s||self,n(s["@nocobase/plugin-action-custom-request"]={},s.jsxRuntime,s["@nocobase/client"],s["@formily/react"],s["@nocobase/utils"],s.antd,s.react,s["react-i18next"],s["@formily/antd-v5"],s["@formily/shared"]))})(this,function(s,n,e,m,w,I,L,P,A,T){"use strict";var ve=Object.defineProperty,Ae=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var N=Object.getOwnPropertySymbols;var se=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var oe=(s,n,e)=>n in s?ve(s,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[n]=e,b=(s,n)=>{for(var e in n||(n={}))se.call(n,e)&&oe(s,e,n[e]);if(N)for(var e of N(n))ne.call(n,e)&&oe(s,e,n[e]);return s},F=(s,n)=>Ae(s,Re(n));var re=(s,n)=>{var e={};for(var m in s)se.call(s,m)&&n.indexOf(m)<0&&(e[m]=s[m]);if(s!=null&&N)for(var m of N(s))n.indexOf(m)<0&&ne.call(s,m)&&(e[m]=s[m]);return e};var q=(s,n,e)=>new Promise((m,w)=>{var I=A=>{try{P(e.next(A))}catch(T){w(T)}},L=A=>{try{P(e.throw(A))}catch(T){w(T)}},P=A=>A.done?m(A.value):Promise.resolve(A.value).then(I,L);P((e=e.apply(s,n)).next())});const j="customRequests:listByCurrentRole";var E=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},H={exports:{}};(function(t,c){(function(a,u){u()})(E,function(){function a(o,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(o.type)?new Blob(["\uFEFF",o],{type:o.type}):o}function u(o,r,y){var i=new XMLHttpRequest;i.open("GET",o),i.responseType="blob",i.onload=function(){h(i.response,r,y)},i.onerror=function(){console.error("could not download file")},i.send()}function p(o){var r=new XMLHttpRequest;r.open("HEAD",o,!1);try{r.send()}catch(y){}return 200<=r.status&&299>=r.status}function d(o){try{o.dispatchEvent(new MouseEvent("click"))}catch(y){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),o.dispatchEvent(r)}}var l=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof E=="object"&&E.global===E?E:void 0,x=l.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=l.saveAs||(typeof window!="object"||window!==l?function(){}:"download"in HTMLAnchorElement.prototype&&!x?function(o,r,y){var i=l.URL||l.webkitURL,S=document.createElement("a");r=r||o.name||"download",S.download=r,S.rel="noopener",typeof o=="string"?(S.href=o,S.origin===location.origin?d(S):p(S.href)?u(o,r,y):d(S,S.target="_blank")):(S.href=i.createObjectURL(o),setTimeout(function(){i.revokeObjectURL(S.href)},4e4),setTimeout(function(){d(S)},0))}:"msSaveOrOpenBlob"in navigator?function(o,r,y){if(r=r||o.name||"download",typeof o!="string")navigator.msSaveOrOpenBlob(a(o,y),r);else if(p(o))u(o,r,y);else{var i=document.createElement("a");i.href=o,i.target="_blank",setTimeout(function(){d(i)})}}:function(o,r,y,i){if(i=i||open("","_blank"),i&&(i.document.title=i.document.body.innerText="downloading..."),typeof o=="string")return u(o,r,y);var S=o.type==="application/octet-stream",Z=/constructor/i.test(l.HTMLElement)||l.safari,g=/CriOS\/[\d]+/.test(navigator.userAgent);if((g||S&&Z||x)&&typeof FileReader!="undefined"){var O=new FileReader;O.onloadend=function(){var v=O.result;v=g?v:v.replace(/^data:[^;]*;/,"data:attachment/file;"),i?i.location.href=v:location=v,i=null},O.readAsDataURL(o)}else{var U=l.URL||l.webkitURL,k=U.createObjectURL(o);i?i.location=k:location.href=k,i=null,setTimeout(function(){U.revokeObjectURL(k)},4e4)}});l.saveAs=h.saveAs=h,t.exports=h})})(H);var ae=H.exports;const ie=()=>{const t=e.useAPIClient(),c=e.useNavigateNoUpdate(),a=m.useFieldSchema(),u=e.useCompile(),p=m.useForm(),{name:d}=e.useBlockContext(),l=e.useCollectionRecordData(),x=m.useFieldSchema(),h=m.useField(),{setVisible:o}=e.useActionContext(),{modal:r,message:y}=I.App.useApp(),i=e.useDataSourceKey();return{onClick(Z,g){return q(this,null,function*(){var ee,te;const{skipValidator:O,onSuccess:U}=(ee=a==null?void 0:a["x-action-settings"])!=null?ee:{},{manualClose:k,redirecting:v,redirectTo:C,successMessage:K,actionAfterSuccess:R}=U||{},Se=a==null?void 0:a["x-action"];O!==!0&&Se==="customize:form:request"&&(yield p.submit()),(te=h.data)!=null||(h.data={}),h.data.loading=!0;try{const V=yield t.request({url:`/customRequests:send/${x["x-uid"]}`,method:"POST",data:{currentRecord:{dataSourceKey:i,data:l},$nForm:d==="form"?p.values:void 0},responseType:x["x-response-type"]==="stream"?"blob":"json"});if(V.headers["content-disposition"]){const Ce=/attachment;\s*filename="([^"]+)"/,M=V.headers["content-disposition"].match(Ce);M!=null&&M[1]&&ae.saveAs(V.data,M[1])}if(h.data.loading=!1,g&&(g==null||g()),(R==="previous"||!R&&v!==!0)&&(o==null||o(!1)),!K){(v&&!R||R==="redirect")&&C&&(w.isURL(C)?window.location.href=C:c(C));return}k?r.success({title:u(K),onOk:()=>q(this,null,function*(){(v&&!R||R==="redirect")&&C&&(w.isURL(C)?window.location.href=C:c(C))})}):(y.success(u(K)),(v&&!R||R==="redirect")&&C&&(w.isURL(C)?window.location.href=C:c(C)))}finally{h.data.loading=!1}})}}},G=()=>{const c=`customRequests:get/${m.useFieldSchema()["x-uid"]}`;return e.useRequest({url:c,params:{appends:["roles"]}},{manual:!0,cacheKey:c})},$="action-custom-request";function f(t){return`{{t('${t}', { ns: '${$}', nsMode: 'fallback' })}}`}function B(){return P.useTranslation($,{nsMode:"fallback"})}const J=()=>{const t=e.useCollection_deprecated(),{t:c}=B(),a=e.useCollectionFilterOptions(t),u=e.useCollectionFilterOptions("users",e.DEFAULT_DATA_SOURCE_KEY),p=e.useCompile(),d=e.useCollectionRecordData(),{name:l}=e.useBlockContext(),[x,h]=L.useMemo(()=>[p(a),p(u)],[a,u]);return L.useMemo(()=>[d&&{name:"currentRecord",title:c("Current record",{ns:"client"}),children:[...x]},l==="form"&&{name:"$nForm",title:c("Current form",{ns:"client"}),children:[...x]},{name:"currentUser",title:c("Current user",{ns:"client"}),children:h},{name:"currentTime",title:c("Current time",{ns:"client"}),children:null},{name:"$nToken",title:"API token",children:null}].filter(Boolean),[d,c,x,l,h])},D=()=>e.useAPIClient().resource("customRequests"),ce={value:"name",label:"title"},_=()=>({scope:J(),fieldNames:ce,useTypedConstant:!0}),W={type:"object",properties:{method:{type:"string",required:!0,title:f("HTTP method"),"x-decorator-props":{tooltip:f("When the HTTP method is Post, Put or Patch, and this custom request inside the form, the request body will be automatically filled in with the form data")},"x-decorator":"FormItem","x-component":"Select","x-component-props":{showSearch:!1,allowClear:!1,className:"auto-width"},enum:[{label:"GET",value:"GET"},{label:"POST",value:"POST"},{label:"PUT",value:"PUT"},{label:"PATCH",value:"PATCH"},{label:"DELETE",value:"DELETE"}],default:"POST"},url:{type:"string",required:!0,title:f("URL"),"x-decorator":"FormItem","x-component":"Variable.TextArea","x-use-component-props":_,"x-component-props":{placeholder:"https://www.nocobase.com"}},headers:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:f("Headers"),description:f('"Content-Type" only support "application/json", and no need to specify'),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:f("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.TextArea","x-use-component-props":_},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:f("Add request header"),"x-component":"ArrayItems.Addition"}}},params:{type:"array","x-component":"ArrayItems","x-decorator":"FormItem",title:f("Parameters"),items:{type:"object",properties:{space:{type:"void","x-component":"Space",properties:{name:{type:"string","x-decorator":"FormItem","x-component":"Input","x-component-props":{placeholder:f("Name")}},value:{type:"string","x-decorator":"FormItem","x-component":"Variable.TextArea","x-use-component-props":_},remove:{type:"void","x-decorator":"FormItem","x-component":"ArrayItems.Remove"}}}}},properties:{add:{type:"void",title:f("Add parameter"),"x-component":"ArrayItems.Addition"}}},data:{type:"string",title:f("Body"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"Variable.JSON","x-component-props":{scope:"{{useCustomRequestVariableOptions}}",fieldNames:{value:"name",label:"title"},changeOnSelect:!0,autoSize:{minRows:10},placeholder:f("Input request data")},description:f("Only support standard JSON data")},timeout:{type:"number",title:f("Timeout config"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"InputNumber","x-component-props":{addonAfter:f("ms"),min:1,step:1e3,defaultValue:5e3}},responseType:{type:"string",title:f("Response type"),"x-decorator":"FormItem","x-decorator-props":{},"x-component":"Select",default:"json",enum:[{value:"json",label:"JSON"},{value:"stream",label:"Stream"}]}}},ue={type:"object",properties:{roles:{type:"array",title:f("Roles"),"x-decorator":"FormItem","x-decorator-props":{tooltip:f("If not set, all roles can see this action")},"x-component":"RemoteSelect","x-component-props":{multiple:!0,objectValue:!0,dataSource:e.DEFAULT_DATA_SOURCE_KEY,service:{resource:"roles"},manual:!1,fieldNames:{label:"title",value:"name"}}}}};function X(){var o;const{t}=B(),{name:c}=e.useCollection_deprecated(),a=e.useDataSourceKey(),u=m.useFieldSchema(),p=D(),{message:d}=I.App.useApp(),{data:l,refresh:x}=G(),{dn:h}=e.useDesignable();return n.jsx(n.Fragment,{children:n.jsx(e.SchemaSettingsActionModalItem,{title:t("Request settings"),components:{ArrayItems:A.ArrayItems},beforeOpen:()=>!l&&x(),scope:{useCustomRequestVariableOptions:J},schema:W,initialValues:b({},(o=l==null?void 0:l.data)==null?void 0:o.options),onSubmit:r=>q(this,null,function*(){const y=re(r,[]);u["x-response-type"]=y.responseType,yield p.updateOrCreate({values:{key:u["x-uid"],options:F(b({},y),{collectionName:c,dataSourceKey:a})},filterKeys:["key"]}),h.emit("patch",{schema:{"x-response-type":y.responseType,"x-uid":u["x-uid"]}}),d.success(t("Saved successfully"))})})})}function Y(){var x;const{t}=B(),c=m.useFieldSchema(),a=D(),{message:u}=I.App.useApp(),{data:p,refresh:d}=G(),{refresh:l}=e.useRequest({url:j},{manual:!0,cacheKey:j});return n.jsx(n.Fragment,{children:n.jsx(e.SchemaSettingsActionModalItem,{title:t("Access control"),schema:ue,initialValues:{roles:(x=p==null?void 0:p.data)==null?void 0:x.roles},beforeOpen:()=>!p&&d(),onSubmit:o=>q(this,[o],function*({roles:h}){return yield a.updateOrCreate({values:{key:c["x-uid"],roles:h},filterKeys:["key"]}),d(),l(),u.success(t("Saved successfully"))})})})}const le=new e.SchemaSettings({name:"CustomRequestActionSettings",items:[F(b({},e.actionSettingsItems[0]),{children:[...e.actionSettingsItems[0].children,{name:"request settings",Component:X},{name:"accessControl",Component:Y}]})]}),me=()=>{const t=D(),c=m.useFieldSchema();return n.jsx(e.Action.Designer,{linkageAction:!0,schemaSettings:"CustomRequestActionSettings",buttonEditorProps:{isLink:c["x-action"]==="customize:table:request"},linkageRulesProps:{type:"button"},removeButtonProps:{onConfirmOk(){return t.destroy({filterByTk:c["x-uid"]})}}})},pe=t=>{var d;const a=e.useAPIClient().auth.role==="root",u=m.useFieldSchema(),{data:p}=e.useRequest({url:j},{manual:a,cacheKey:j});return!a&&!((d=p==null?void 0:p.data)!=null&&d.includes(u==null?void 0:u["x-uid"]))?null:t.children},de={"customize:table:request":e.Action.Link},z=e.withDynamicSchemaProps(t=>{const a=m.useFieldSchema()["x-action"],u=de[a]||e.Action;return n.jsx(u,F(b({},t),{useProps:ie}))});z.Designer=me,z.Decorator=pe;const fe=()=>({title:'{{ t("Custom request") }}',"x-component":"CustomRequestAction","x-action":"customize:form:request","x-toolbar":"ActionSchemaToolbar","x-settings":"actionSettings:customRequest","x-decorator":"CustomRequestAction.Decorator","x-uid":T.uid(),"x-action-settings":{onSuccess:{manualClose:!1,redirecting:!1,successMessage:'{{t("Request success")}}'}}}),he=t=>{const c=D(),a=e.useSchemaInitializerItem(),{insert:u}=e.useSchemaInitializer(),p=fe();return n.jsx(e.SchemaInitializerItem,F(b({},a),{onClick:()=>q(this,null,function*(){var l;const d=T.merge(p||{},a.schema||{});(l=a==null?void 0:a.schemaInitialize)==null||l.call(a,d),u(d),yield c.create({values:{key:d["x-uid"]}})})}))},ye=new e.SchemaSettings({name:"actionSettings:customRequest",items:[{name:"editButton",Component:e.ButtonEditor,useComponentProps(){return{isLink:m.useFieldSchema()["x-action"]==="customize:table:request"}}},{name:"linkageRules",Component:e.SchemaSettingsLinkageRules,useComponentProps(){const{name:t}=e.useCollection()||{},{linkageRulesProps:c}=e.useSchemaToolbar();return F(b({},c),{collectionName:t})},useVisible(){const t=e.useCollectionRecord();return t&&t.data&&!(t!=null&&t.isNew)}},{name:"secondConFirm",Component:e.SecondConFirm},{name:"afterSuccessfulSubmission",Component:e.AfterSuccess},{name:"request settings",Component:X},{name:"accessControl",Component:Y},{name:"refreshDataBlockRequest",Component:e.RefreshDataBlockRequest,useComponentProps(){return{isPopupAction:!1}},useVisible(){return!!e.useCollection()}},{name:"delete",sort:100,Component:e.RemoveButton,useComponentProps(){const{removeButtonProps:t}=e.useSchemaToolbar();return t}}]}),xe=t=>n.jsx(e.SchemaComponentOptions,{scope:{CustomRequestConfigurationFieldsSchema:W},components:{CustomRequestAction:z,CustomRequestInitializer:he},children:t.children});class Q extends e.Plugin{load(){return q(this,null,function*(){this.app.use(xe),this.app.schemaSettingsManager.add(ye),this.app.schemaSettingsManager.add(le)})}}s.PluginActionCustomRequestClient=Q,s.default=Q,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -8,19 +8,19 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/client": "1.4.8",
11
+ "@nocobase/client": "1.4.10",
12
12
  "react": "18.2.0",
13
13
  "react-i18next": "11.18.6",
14
14
  "@formily/react": "2.3.0",
15
- "@nocobase/logger": "1.4.8",
16
- "@nocobase/server": "1.4.8",
17
- "@nocobase/test": "1.4.8",
15
+ "@nocobase/logger": "1.4.10",
16
+ "@nocobase/server": "1.4.10",
17
+ "@nocobase/test": "1.4.10",
18
18
  "@formily/antd-v5": "1.1.9",
19
19
  "antd": "5.12.8",
20
- "@nocobase/utils": "1.4.8",
20
+ "@nocobase/utils": "1.4.10",
21
21
  "@formily/shared": "2.3.2",
22
- "@nocobase/actions": "1.4.8",
23
- "@nocobase/evaluators": "1.4.8",
22
+ "@nocobase/actions": "1.4.10",
23
+ "@nocobase/evaluators": "1.4.10",
24
24
  "axios": "1.7.7",
25
- "@nocobase/database": "1.4.8"
25
+ "@nocobase/database": "1.4.10"
26
26
  };
@@ -92,7 +92,8 @@ async function send(ctx, next) {
92
92
  id: 0,
93
93
  appends: [],
94
94
  data: {}
95
- }
95
+ },
96
+ $nForm
96
97
  } = values;
97
98
  if (ctx.state.currentRole !== "root") {
98
99
  const crRepo = ctx.db.getRepository("customRequestsRoles");
@@ -157,7 +158,8 @@ async function send(ctx, next) {
157
158
  },
158
159
  currentUser,
159
160
  currentTime: (/* @__PURE__ */ new Date()).toISOString(),
160
- $nToken: ctx.getBearerToken()
161
+ $nToken: ctx.getBearerToken(),
162
+ $nForm
161
163
  };
162
164
  const axiosRequestConfig = {
163
165
  baseURL: ctx.origin,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-action-custom-request",
3
- "version": "1.4.8",
3
+ "version": "1.4.10",
4
4
  "main": "dist/server/index.js",
5
5
  "homepage": "https://docs.nocobase.com/handbook/action-custom-request",
6
6
  "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-custom-request",
@@ -22,7 +22,7 @@
22
22
  "@nocobase/server": "1.x",
23
23
  "@nocobase/test": "1.x"
24
24
  },
25
- "gitHead": "faccff55cc8a1f7f8b627b68ce311dbe7141c144",
25
+ "gitHead": "24ae34685506e34f254c44c25eb50e253ea0c2b6",
26
26
  "keywords": [
27
27
  "Actions"
28
28
  ]