@jswork/react-ant-resource-form 1.0.6 → 1.0.7

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/main.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var T=Object.defineProperty;var g=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var L=(a,t,e)=>t in a?T(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,c=(a,t)=>{for(var e in t||(t={}))B.call(t,e)&&L(a,e,t[e]);if(g)for(var e of g(t))K.call(t,e)&&L(a,e,t[e]);return a};var s=(a,t)=>T(a,"name",{value:t,configurable:!0});var x=(a,t)=>{var e={};for(var o in a)B.call(a,o)&&t.indexOf(o)<0&&(e[o]=a[o]);if(a!=null&&g)for(var o of g(a))t.indexOf(o)<0&&K.call(a,o)&&(e[o]=a[o]);return e};var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _antd = require('antd');var _reactantformschema = require('@jswork/react-ant-form-schema'); var _reactantformschema2 = _interopRequireDefault(_reactantformschema);var _icons = require('@ant-design/icons');var P="react-ant-resource-form",I={"zh-CN":{submit:"\u63D0\u4EA4",back:"\u8FD4\u56DE"},"en-US":{submit:"Submit",back:"Back"}},J={lang:"zh-CN"},Q=s(a=>{let S=c(c({},J),a),{className:t,meta:e,children:o,lang:p,title:f,loading:C,extra:A,size:F,okText:v,backText:E,okProps:h,backProps:i}=S,d=x(S,["className","meta","children","lang","title","loading","extra","size","okText","backText","okProps","backProps"]),y=s($=>I[p][$],"t"),m=s(()=>history.back(),"handleBack"),_=A||_react2.default.createElement(_antd.Button,c({size:"small",icon:_react2.default.createElement(_icons.ArrowLeftOutlined,null),onClick:m},i),E||y("back")),k=o||_react2.default.createElement(_antd.Space,null,_react2.default.createElement(_antd.Button,c({htmlType:"submit",type:"primary",icon:_react2.default.createElement(_icons.SaveOutlined,null)},h),v||y("submit")),_react2.default.createElement(_antd.Button,c({icon:_react2.default.createElement(_icons.ArrowLeftOutlined,null),onClick:m},i),E||y("back")));return _react2.default.createElement(_antd.Card,{title:f,size:F,loading:C,"data-component":P,className:_classnames2.default.call(void 0, P,t),extra:_},_react2.default.createElement(_reactantformschema2.default,c({meta:e},d),k))},"ReactAntResourceForm"),z= exports.ReactAntResourceForm =Q;var _next = require('@jswork/next'); var _next2 = _interopRequireDefault(_next);var H=s(a=>{let t=s(function(e){(e.ctrlKey||e.metaKey)&&e.key==="s"&&(e.preventDefault(),a(e))},"handler");_react.useEffect.call(void 0, ()=>(document.addEventListener("keydown",t),()=>{document.removeEventListener("keydown",t)}),[])},"useKeyboardSave");var te={"zh-CN":{create:"\u521B\u5EFA",update:"\u4FDD\u5B58",create_title:"\u521B\u5EFA",update_title:"\u66F4\u65B0",create_success:"\u521B\u5EFA\u6210\u529F",update_success:"\u66F4\u65B0\u6210\u529F"},"en-US":{create:"Create",update:"Save",create_title:"Create",update_title:"Update",create_success:"Create success",update_success:"Update success"}},ae={lang:"zh-CN",disableHotkeySave:!1},oe=s(a=>{let N=c(c({},ae),a),{name:t,params:e,lang:o,transformRequest:p,transformResponse:f,disableHotkeySave:C}=N,A=x(N,["name","params","lang","transformRequest","transformResponse","disableHotkeySave"]),F=`${t}_update`,v=`${t}_create`,E=`${t}_show`,[h]=_antd.Form.useForm(),i=!!(e!=null&&e.id),d=s(n=>te[o][n],"t"),[y,m]=_react.useState.call(void 0, !1),_=s(n=>(m(!0),(p==null?void 0:p(n))||n.payload),"handleStateRequest"),k=s(n=>{var r,u;return m(!1),(u=(r=_next2.default.$event)==null?void 0:r.emit)==null||u.call(r,`${t}:refetch`),(f==null?void 0:f(n))||n.data},"handleStateResponse"),S=s(n=>{if(i){let r=c({id:e.id},n),u=_({stage:"update",payload:r});_next2.default.$api[F](u).then(b=>{_antd.message.success(d("update_success")),k({stage:"update",data:b})}).finally(()=>m(!1))}else{let r=c({},n),u=_({stage:"create",payload:r});_next2.default.$api[v](u).then(b=>{_antd.message.success(d("create_success")),k({stage:"create",data:b})}).finally(()=>m(!1))}},"handleFinish");H(()=>{C||h.submit()}),_react.useEffect.call(void 0, ()=>{if(i){let n={id:e.id},r=_({stage:"show",payload:n});_next2.default.$api[E](r).then(u=>{let b=k({stage:"show",data:u});h.setFieldsValue(b)}).finally(()=>m(!1))}},[i,e==null?void 0:e.id]);let $=d(i?"update":"create"),D=d(i?"update_title":"create_title");return _react2.default.createElement(z,c({loading:y,form:h,onFinish:S,okText:$,title:D},A))},"ReactAntResourceFormApi"),ce= exports.ReactAntResourceFormApi =oe;exports.ReactAntResourceForm = z; exports.ReactAntResourceFormApi = ce;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var B=Object.defineProperty;var b=Object.getOwnPropertySymbols;var K=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable;var N=(a,t,e)=>t in a?B(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,c=(a,t)=>{for(var e in t||(t={}))K.call(t,e)&&N(a,e,t[e]);if(b)for(var e of b(t))M.call(t,e)&&N(a,e,t[e]);return a};var s=(a,t)=>B(a,"name",{value:t,configurable:!0});var C=(a,t)=>{var e={};for(var o in a)K.call(a,o)&&t.indexOf(o)<0&&(e[o]=a[o]);if(a!=null&&b)for(var o of b(a))t.indexOf(o)<0&&M.call(a,o)&&(e[o]=a[o]);return e};var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames);var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _antd = require('antd');var _reactantformschema = require('@jswork/react-ant-form-schema'); var _reactantformschema2 = _interopRequireDefault(_reactantformschema);var _icons = require('@ant-design/icons');var P={"zh-CN":{create:"\u521B\u5EFA",update:"\u4FDD\u5B58",create_title:"\u521B\u5EFA",update_title:"\u66F4\u65B0",create_success:"\u521B\u5EFA\u6210\u529F",update_success:"\u66F4\u65B0\u6210\u529F"},"en-US":{create:"Create",update:"Save",create_title:"Create",update_title:"Update",create_success:"Create success",update_success:"Update success"}},T={"zh-CN":{submit:"\u63D0\u4EA4",back:"\u8FD4\u56DE"},"en-US":{submit:"Submit",back:"Back"}};var U="react-ant-resource-form",Q={lang:"zh-CN"},W=s(a=>{let A=c(c({},Q),a),{className:t,meta:e,children:o,lang:p,title:f,loading:g,extra:x,size:F,okText:L,backText:k,okProps:_,backProps:l}=A,m=C(A,["className","meta","children","lang","title","loading","extra","size","okText","backText","okProps","backProps"]),h=s(v=>T[p][v],"t"),d=s(()=>history.back(),"handleBack"),S=x||_react2.default.createElement(_antd.Button,c({size:"small",icon:_react2.default.createElement(_icons.ArrowLeftOutlined,null),onClick:d},l),k||h("back")),y=o||_react2.default.createElement(_antd.Space,null,_react2.default.createElement(_antd.Button,c({htmlType:"submit",type:"primary",icon:_react2.default.createElement(_icons.SaveOutlined,null)},_),L||h("submit")),_react2.default.createElement(_antd.Button,c({icon:_react2.default.createElement(_icons.ArrowLeftOutlined,null),onClick:d},l),k||h("back")));return _react2.default.createElement(_antd.Card,{title:f,size:F,loading:g,"data-component":U,className:_classnames2.default.call(void 0, U,t),extra:S},_react2.default.createElement(_reactantformschema2.default,c({meta:e},m),y))},"ReactAntResourceForm"),$= exports.ReactAntResourceForm =W;var _next = require('@jswork/next'); var _next2 = _interopRequireDefault(_next);var w=s(a=>{let t=s(function(e){(e.ctrlKey||e.metaKey)&&e.key==="s"&&(e.preventDefault(),a(e))},"handler");_react.useEffect.call(void 0, ()=>(document.addEventListener("keydown",t),()=>{document.removeEventListener("keydown",t)}),[])},"useKeyboardSave");var ae={lang:"zh-CN",disableHotkeySave:!1},oe=s(a=>{let z=c(c({},ae),a),{name:t,params:e,lang:o,transformRequest:p,transformResponse:f,disableHotkeySave:g}=z,x=C(z,["name","params","lang","transformRequest","transformResponse","disableHotkeySave"]),F=`${t}_update`,L=`${t}_create`,k=`${t}_show`,[_]=_antd.Form.useForm(),l=!!(e!=null&&e.id),m=s(r=>P[o][r],"t"),[h,d]=_react.useState.call(void 0, !1),S=s(r=>(d(!0),(p==null?void 0:p(r))||r.payload),"handleStateRequest"),y=s(r=>{var n,u;return d(!1),(u=(n=_next2.default.$event)==null?void 0:n.emit)==null||u.call(n,`${t}:refetch`),(f==null?void 0:f(r))||r.data},"handleStateResponse"),A=s(r=>{if(l){let n=c({id:e.id},r),u=S({stage:"update",payload:n});_next2.default.$api[F](u).then(E=>{_antd.message.success(m("update_success")),y({stage:"update",data:E})}).finally(()=>d(!1))}else{let n=c({},r),u=S({stage:"create",payload:n});_next2.default.$api[L](u).then(E=>{_antd.message.success(m("create_success")),y({stage:"create",data:E})}).finally(()=>d(!1))}},"handleFinish");w(()=>{g||_.submit()}),_react.useEffect.call(void 0, ()=>{if(l){let r={id:e.id},n=S({stage:"show",payload:r});_next2.default.$api[k](n).then(u=>{let E=y({stage:"show",data:u});_.setFieldsValue(E)}).finally(()=>d(!1))}},[l,e==null?void 0:e.id]);let v=m(l?"update":"create"),D=m(l?"update_title":"create_title");return _react2.default.createElement($,c({loading:h,form:_,onFinish:A,okText:v,title:D},x))},"ReactAntResourceFormApi"),ce= exports.ReactAntResourceFormApi =oe;exports.ReactAntResourceForm = $; exports.ReactAntResourceFormApi = ce; exports.useKeyboardSave = w;
2
2
  //# sourceMappingURL=main.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/aric/github/react-ant-resource-form/packages/lib/dist/main.cjs.js","../src/index.tsx","../src/api.tsx","../src/hooks.ts"],"names":["CLASS_NAME","locales","submit","back","defaultProps","lang","ReactAntResourceForm","__name","props","_a","__spreadValues","className","meta","children","title","loading","extra","size","okText","backText","okProps","backProps","rest","t","key","handleBack","history","_extra","React","Button","icon","ArrowLeftOutlined","onClick","_children","Space","htmlType","type","SaveOutlined","Card","data-component","cx","ReactAntdFormSchema","index_default","useKeyboardSave","callback","handler","e","ctrlKey","metaKey","preventDefault","useEffect","document","addEventListener","removeEventListener","create","update","create_title","update_title","create_success","update_success","disableHotkeySave","ReactAntResourceFormApi","name","params","transformRequest","transformResponse","resourceEdit"],"mappings":"AAAA,6KAAI,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CCC7iB,gGAAe,4EACW,4BACkC,2IACE,0CACd,IAc1CA,CAAAA,CAAa,yBAAA,CACbC,CAAAA,CAAU,CACd,OAAA,CAAS,CACPC,MAAAA,CAAQ,cAAA,CACRC,IAAAA,CAAM,cACR,CAAA,CACA,OAAA,CAAS,CACPD,MAAAA,CAAQ,QAAA,CACRC,IAAAA,CAAM,MACR,CACF,CAAA,CAEMC,CAAAA,CAAe,CACnBC,IAAAA,CAAM,OACR,CAAA,CAEMC,CAAAA,CAAsDC,CAAAA,CAACC,CAAAA,EAAAA,CAC3D,IAcIC,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CACCN,CAAAA,CAAAA,CACAI,CAAAA,CAAAA,CAfHG,CAAAA,SAAAA,CAAAA,CAAAA,CACAC,IAAAA,CAAAA,CAAAA,CACAC,QAAAA,CAAAA,CAAAA,CACAR,IAAAA,CAAAA,CAAAA,CACAS,KAAAA,CAAAA,CAAAA,CACAC,OAAAA,CAAAA,CAAAA,CACAC,KAAAA,CAAAA,CAAAA,CACAC,IAAAA,CAAAA,CAAAA,CACAC,MAAAA,CAAAA,CAAAA,CACAC,QAAAA,CAAAA,CAAAA,CACAC,OAAAA,CAAAA,CAAAA,CACAC,SAAAA,CAAAA,CAhDJ,CAAA,CAkDMZ,CAAAA,CADCa,CAAAA,CAAAA,CAAAA,CACDb,CAAAA,CADCa,CAZHX,WAAAA,CACAC,MAAAA,CACAC,UAAAA,CACAR,MAAAA,CACAS,OAAAA,CACAC,SAAAA,CACAC,OAAAA,CACAC,MAAAA,CACAC,QAAAA,CACAC,UAAAA,CACAC,SAAAA,CACAC,WAAAA,CAAAA,CAAAA,CAMIE,CAAAA,CAAIhB,CAAAA,CAACiB,CAAAA,EAAgBvB,CAAAA,CAAQI,CAAAA,CAAAA,CAAMmB,CAAAA,CAAAA,CAA/B,GAAA,CAAA,CACJC,CAAAA,CAAalB,CAAAA,CAAA,CAAA,CAAA,EAAMmB,OAAAA,CAAQvB,IAAAA,CAAI,CAAA,CAAlB,YAAA,CAAA,CACbwB,CAAAA,CAASX,CAAAA,EACbY,eAAAA,CAAA,aAAA,CAACC,YAAAA,CAAAA,CAAAA,CAAAA,CAAOZ,IAAAA,CAAK,OAAA,CAAQa,IAAAA,CAAMF,eAAAA,CAAA,aAAA,CAACG,wBAAAA,CAAAA,IAAAA,CAAAA,CAAsBC,OAAAA,CAASP,CAAAA,CAAAA,CAAgBJ,CAAAA,CAAAA,CACxEF,CAAAA,EAAYI,CAAAA,CAAE,MAAA,CAAA,CAAA,CAGbU,CAAAA,CAAYpB,CAAAA,EAChBe,eAAAA,CAAA,aAAA,CAACM,WAAAA,CAAAA,IAAAA,CACCN,eAAAA,CAAA,aAAA,CAACC,YAAAA,CAAAA,CAAAA,CAAAA,CAAOM,QAAAA,CAAS,QAAA,CAASC,IAAAA,CAAK,SAAA,CAAUN,IAAAA,CAAMF,eAAAA,CAAA,aAAA,CAACS,mBAAAA,CAAAA,IAAAA,CAAAA,CAAAA,CAAqBjB,CAAAA,CAAAA,CAClEF,CAAAA,EAAUK,CAAAA,CAAE,QAAA,CAAA,CAAA,CAEfK,eAAAA,CAAA,aAAA,CAACC,YAAAA,CAAAA,CAAAA,CAAAA,CAAOC,IAAAA,CAAMF,eAAAA,CAAA,aAAA,CAACG,wBAAAA,CAAAA,IAAAA,CAAAA,CAAsBC,OAAAA,CAASP,CAAAA,CAAAA,CAAgBJ,CAAAA,CAAAA,CAC3DF,CAAAA,EAAYI,CAAAA,CAAE,MAAA,CAAA,CAAA,CAAA,CAKrB,OACEK,eAAAA,CAAA,aAAA,CAACU,UAAAA,CAAAA,CACCxB,KAAAA,CAAOA,CAAAA,CACPG,IAAAA,CAAMA,CAAAA,CACNF,OAAAA,CAASA,CAAAA,CACTwB,gBAAAA,CAAgBvC,CAAAA,CAChBW,SAAAA,CAAW6B,kCAAAA,CAAGxC,CAAYW,CAAAA,CAAAA,CAC1BK,KAAAA,CAAOW,CAAAA,CAAAA,CACPC,eAAAA,CAAA,aAAA,CAACa,4BAAAA,CAAAA,CAAAA,CAAAA,CAAoB7B,IAAAA,CAAMA,CAAAA,CAAAA,CAAUU,CAAAA,CAAAA,CAClCW,CAAAA,CAAAA,CAIT,CAAA,CAlD4D,sBAAA,CAAA,CAoD5DS,CAAAA,gCAAepC,CAAAA,CCvFf,gFAGe,ICDFqC,CAAAA,CAAkBpC,CAAAA,CAACqC,CAAAA,EAAAA,CAC9B,IAAMC,CAAAA,CAAUtC,CAAAA,CAAA,QAAA,CAAUuC,CAAAA,CAAgB,CAAA,CAEnCA,CAAAA,CAAEC,OAAAA,EAAWD,CAAAA,CAAEE,OAAAA,CAAAA,EAAYF,CAAAA,CAAEtB,GAAAA,GAAQ,GAAA,EAAA,CACxCsB,CAAAA,CAAEG,cAAAA,CAAc,CAAA,CAChBL,CAAAA,CAASE,CAAAA,CAAAA,CAEb,CAAA,CANgB,SAAA,CAAA,CAQhBI,8BAAAA,CAAU,CAAA,EAAA,CACRC,QAAAA,CAASC,gBAAAA,CAAiB,SAAA,CAAWP,CAAAA,CAAAA,CAC9B,CAAA,CAAA,EAAA,CACLM,QAAAA,CAASE,mBAAAA,CAAoB,SAAA,CAAWR,CAAAA,CAC1C,CAAA,CAAA,CACC,CAAA,CAAE,CACP,CAAA,CAf+B,iBAAA,CAAA,CD6B/B,IAAM5C,EAAAA,CAAU,CACd,OAAA,CAAS,CACPqD,MAAAA,CAAQ,cAAA,CACRC,MAAAA,CAAQ,cAAA,CACRC,YAAAA,CAAc,cAAA,CACdC,YAAAA,CAAc,cAAA,CACdC,cAAAA,CAAgB,0BAAA,CAChBC,cAAAA,CAAgB,0BAClB,CAAA,CACA,OAAA,CAAS,CACPL,MAAAA,CAAQ,QAAA,CACRC,MAAAA,CAAQ,MAAA,CACRC,YAAAA,CAAc,QAAA,CACdC,YAAAA,CAAc,QAAA,CACdC,cAAAA,CAAgB,gBAAA,CAChBC,cAAAA,CAAgB,gBAClB,CACF,CAAA,CAEMvD,EAAAA,CAAe,CACnBC,IAAAA,CAAM,OAAA,CACNuD,iBAAAA,CAAmB,CAAA,CACrB,CAAA,CAEMC,EAAAA,CAA4DtD,CAAAA,CAACC,CAAAA,EAAAA,CACjE,IAAgGC,CAAAA,CAAAC,CAAAA,CAAAA,CAAAA,CAAA,CAAA,CAAA,CAC3FN,EAAAA,CAAAA,CACAI,CAAAA,CAAAA,CAFGsD,CAAAA,IAAAA,CAAAA,CAAAA,CAAMC,MAAAA,CAAAA,CAAAA,CAAQ1D,IAAAA,CAAAA,CAAAA,CAAM2D,gBAAAA,CAAAA,CAAAA,CAAkBC,iBAAAA,CAAAA,CAAAA,CAAmBL,iBAAAA,CAAAA,CAxDnE,CAAA,CAwDkGnD,CAAAA,CAATa,CAAAA,CAAAA,CAAAA,CAASb,CAAAA,CAATa,CAA/EwC,MAAAA,CAAMC,QAAAA,CAAQ1D,MAAAA,CAAM2D,kBAAAA,CAAkBC,mBAAAA,CAAmBL,mBAAAA,CAAAA,CAAAA,CAK3DM,CAAAA,CAAe,CAAA,EAAA","file":"/Users/aric/github/react-ant-resource-form/packages/lib/dist/main.cjs.js","sourcesContent":[null,"// import noop from '@jswork/noop';\nimport cx from 'classnames';\nimport React, { FC } from 'react';\nimport { Button, ButtonProps, Card, CardProps, Space } from 'antd';\nimport ReactAntdFormSchema, { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';\nimport { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';\n\nexport type ReactAntResourceFormProps = {\n lang?: string;\n loading?: boolean;\n okText?: string;\n backText?: string;\n okProps?: ButtonProps;\n backProps?: ButtonProps;\n size?: CardProps['size'];\n extra?: CardProps['extra'];\n title?: CardProps['title'];\n} & ReactAntdFormSchemaProps;\n\nconst CLASS_NAME = 'react-ant-resource-form';\nconst locales = {\n 'zh-CN': {\n submit: '提交',\n back: '返回',\n },\n 'en-US': {\n submit: 'Submit',\n back: 'Back',\n },\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n};\n\nconst ReactAntResourceForm: FC<ReactAntResourceFormProps> = (props) => {\n const {\n className,\n meta,\n children,\n lang,\n title,\n loading,\n extra,\n size,\n okText,\n backText,\n okProps,\n backProps,\n ...rest\n } = {\n ...defaultProps,\n ...props,\n };\n const t = (key: string) => locales[lang][key];\n const handleBack = () => history.back();\n const _extra = extra || (\n <Button size=\"small\" icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n );\n const _children = children || (\n <Space>\n <Button htmlType=\"submit\" type=\"primary\" icon={<SaveOutlined />} {...okProps}>\n {okText || t('submit')}\n </Button>\n <Button icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n </Space>\n );\n\n return (\n <Card\n title={title}\n size={size}\n loading={loading}\n data-component={CLASS_NAME}\n className={cx(CLASS_NAME, className)}\n extra={_extra}>\n <ReactAntdFormSchema meta={meta} {...rest}>\n {_children}\n </ReactAntdFormSchema>\n </Card>\n );\n};\n\nexport default ReactAntResourceForm;\n","import React, { FC, useEffect, useState } from 'react';\nimport ReactAntResourceForm, { ReactAntResourceFormProps } from '.';\nimport { Form, message } from 'antd';\nimport nx from '@jswork/next';\nimport { useKeyboardSave } from './hooks';\n\ndeclare global {\n interface NxStatic {\n $api: Record<string, any>;\n $event: any;\n }\n}\n\ntype StagePayload = {\n stage: 'show' | 'create' | 'update';\n payload: any;\n};\n\ntype StageData = {\n stage: 'show' | 'create' | 'update';\n data: any;\n};\n\nexport type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {\n lang?: string;\n params?: Record<string, any>;\n disableHotkeySave?: boolean;\n transformRequest?: (payload: StagePayload) => any;\n transformResponse?: (res: StageData) => any;\n};\n\nconst locales = {\n 'zh-CN': {\n create: '创建',\n update: '保存',\n create_title: '创建',\n update_title: '更新',\n create_success: '创建成功',\n update_success: '更新成功',\n },\n 'en-US': {\n create: 'Create',\n update: 'Save',\n create_title: 'Create',\n update_title: 'Update',\n create_success: 'Create success',\n update_success: 'Update success',\n },\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n disableHotkeySave: false,\n};\n\nconst ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {\n const { name, params, lang, transformRequest, transformResponse, disableHotkeySave, ...rest } = {\n ...defaultProps,\n ...props,\n };\n\n const resourceEdit = `${name}_update`;\n const resourceCreate = `${name}_create`;\n const resourceShow = `${name}_show`;\n const [form] = Form.useForm();\n const isEdit = Boolean(params?.id);\n const t = (key: string) => locales[lang!][key];\n const [loading, setLoading] = useState(false);\n const handleStateRequest = (stagePayload: StagePayload) => {\n setLoading(true);\n return transformRequest?.(stagePayload) || stagePayload.payload;\n };\n\n const handleStateResponse = (res: StageData) => {\n setLoading(false);\n nx.$event?.emit?.(`${name}:refetch`);\n return transformResponse?.(res) || res.data;\n };\n\n const handleFinish = (values) => {\n if (isEdit) {\n const payload = { id: params!.id, ...values };\n const _payload = handleStateRequest({ stage: 'update', payload });\n\n nx.$api[resourceEdit](_payload)\n .then((res) => {\n message.success(t('update_success'));\n handleStateResponse({ stage: 'update', data: res });\n })\n .finally(() => setLoading(false));\n } else {\n const payload = { ...values };\n const _payload = handleStateRequest({ stage: 'create', payload });\n\n nx.$api[resourceCreate](_payload)\n .then((res) => {\n message.success(t('create_success'));\n handleStateResponse({ stage: 'create', data: res });\n })\n .finally(() => setLoading(false));\n }\n };\n\n // hotkey save\n useKeyboardSave(() => {\n if (!disableHotkeySave) form.submit();\n });\n\n // init detail\n useEffect(() => {\n if (isEdit) {\n const payload = { id: params!.id };\n const _payload = handleStateRequest({ stage: 'show', payload });\n nx.$api[resourceShow](_payload)\n .then((res) => {\n const data = handleStateResponse({ stage: 'show', data: res });\n form.setFieldsValue(data);\n })\n .finally(() => setLoading(false));\n }\n }, [isEdit, params?.id]);\n\n const okText = isEdit ? t('update') : t('create');\n const title = isEdit ? t('update_title') : t('create_title');\n\n return (\n <ReactAntResourceForm\n loading={loading}\n form={form}\n onFinish={handleFinish}\n okText={okText}\n title={title}\n {...rest}\n />\n );\n};\n\nexport default ReactAntResourceFormApi;\n","import { useEffect } from 'react';\n\nexport const useKeyboardSave = (callback: (e: KeyboardEvent) => void) => {\n const handler = function (e: KeyboardEvent) {\n // 检查是否按下了 Ctrl+S (Windows/Linux) 或 Cmd+S (macOS)\n if ((e.ctrlKey || e.metaKey) && e.key === 's') {\n e.preventDefault();\n callback(e);\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', handler);\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }, []);\n};\n"]}
1
+ {"version":3,"sources":["/Users/aric/github/react-ant-resource-form/packages/lib/dist/main.cjs.js","../src/index.tsx","../src/locales.ts","../src/api.tsx","../src/hooks.ts"],"names":["API_FORM_LOCALES","create","update","create_title","update_title","create_success","update_success","BASIC_FORM_LOCALES","submit","back","CLASS_NAME","defaultProps","lang","ReactAntResourceForm","__name","props","_a","__spreadValues","className","meta","children","title","loading","extra","size","okText","backText","okProps","backProps","rest","t","key","handleBack","history","_extra","React","Button","icon","ArrowLeftOutlined","onClick","_children","Space","htmlType","type","SaveOutlined","Card","data-component","cx","ReactAntdFormSchema","index_default","useKeyboardSave","callback","handler","e","ctrlKey","metaKey","preventDefault","useEffect","document","addEventListener","removeEventListener","disableHotkeySave","ReactAntResourceFormApi","name","params","transformRequest","transformResponse","resourceEdit"],"mappings":"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","file":"/Users/aric/github/react-ant-resource-form/packages/lib/dist/main.cjs.js","sourcesContent":[null,"// import noop from '@jswork/noop';\nimport cx from 'classnames';\nimport React, { FC } from 'react';\nimport { Button, ButtonProps, Card, CardProps, Space } from 'antd';\nimport ReactAntdFormSchema, { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';\nimport { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';\nimport { BASIC_FORM_LOCALES } from './locales';\n\nexport type ReactAntResourceFormProps = {\n lang?: string;\n loading?: boolean;\n okText?: string;\n backText?: string;\n okProps?: ButtonProps;\n backProps?: ButtonProps;\n size?: CardProps['size'];\n extra?: CardProps['extra'];\n title?: CardProps['title'];\n} & ReactAntdFormSchemaProps;\n\nconst CLASS_NAME = 'react-ant-resource-form';\n\nconst defaultProps = {\n lang: 'zh-CN',\n};\n\nconst ReactAntResourceForm: FC<ReactAntResourceFormProps> = (props) => {\n const {\n className,\n meta,\n children,\n lang,\n title,\n loading,\n extra,\n size,\n okText,\n backText,\n okProps,\n backProps,\n ...rest\n } = {\n ...defaultProps,\n ...props,\n };\n\n const t = (key: string) => BASIC_FORM_LOCALES[lang][key];\n const handleBack = () => history.back();\n const _extra = extra || (\n <Button size=\"small\" icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n );\n\n const _children = children || (\n <Space>\n <Button htmlType=\"submit\" type=\"primary\" icon={<SaveOutlined />} {...okProps}>\n {okText || t('submit')}\n </Button>\n <Button icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n </Space>\n );\n\n return (\n <Card\n title={title}\n size={size}\n loading={loading}\n data-component={CLASS_NAME}\n className={cx(CLASS_NAME, className)}\n extra={_extra}>\n <ReactAntdFormSchema meta={meta} {...rest}>\n {_children}\n </ReactAntdFormSchema>\n </Card>\n );\n};\n\nexport default ReactAntResourceForm;\n","export const API_FORM_LOCALES = {\n 'zh-CN': {\n create: '创建',\n update: '保存',\n create_title: '创建',\n update_title: '更新',\n create_success: '创建成功',\n update_success: '更新成功',\n },\n 'en-US': {\n create: 'Create',\n update: 'Save',\n create_title: 'Create',\n update_title: 'Update',\n create_success: 'Create success',\n update_success: 'Update success',\n },\n};\n\nexport const BASIC_FORM_LOCALES = {\n 'zh-CN': {\n submit: '提交',\n back: '返回',\n },\n 'en-US': {\n submit: 'Submit',\n back: 'Back',\n },\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport ReactAntResourceForm, { ReactAntResourceFormProps } from '.';\nimport { Form, message } from 'antd';\nimport nx from '@jswork/next';\nimport { useKeyboardSave } from './hooks';\nimport { API_FORM_LOCALES } from './locales';\n\ndeclare global {\n interface NxStatic {\n $api: Record<string, any>;\n $event: any;\n }\n}\n\ntype StagePayload = {\n stage: 'show' | 'create' | 'update';\n payload: any;\n};\n\ntype StageData = {\n stage: 'show' | 'create' | 'update';\n data: any;\n};\n\nexport type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {\n lang?: string;\n params?: Record<string, any>;\n disableHotkeySave?: boolean;\n transformRequest?: (payload: StagePayload) => any;\n transformResponse?: (res: StageData) => any;\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n disableHotkeySave: false,\n};\n\nconst ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {\n const { name, params, lang, transformRequest, transformResponse, disableHotkeySave, ...rest } = {\n ...defaultProps,\n ...props,\n };\n\n const resourceEdit = `${name}_update`;\n const resourceCreate = `${name}_create`;\n const resourceShow = `${name}_show`;\n const [form] = Form.useForm();\n const isEdit = Boolean(params?.id);\n const t = (key: string) => API_FORM_LOCALES[lang!][key];\n const [loading, setLoading] = useState(false);\n const handleStateRequest = (stagePayload: StagePayload) => {\n setLoading(true);\n return transformRequest?.(stagePayload) || stagePayload.payload;\n };\n\n const handleStateResponse = (res: StageData) => {\n setLoading(false);\n nx.$event?.emit?.(`${name}:refetch`);\n return transformResponse?.(res) || res.data;\n };\n\n const handleFinish = (values) => {\n if (isEdit) {\n const payload = { id: params!.id, ...values };\n const _payload = handleStateRequest({ stage: 'update', payload });\n\n nx.$api[resourceEdit](_payload)\n .then((res) => {\n message.success(t('update_success'));\n handleStateResponse({ stage: 'update', data: res });\n })\n .finally(() => setLoading(false));\n } else {\n const payload = { ...values };\n const _payload = handleStateRequest({ stage: 'create', payload });\n\n nx.$api[resourceCreate](_payload)\n .then((res) => {\n message.success(t('create_success'));\n handleStateResponse({ stage: 'create', data: res });\n })\n .finally(() => setLoading(false));\n }\n };\n\n // hotkey save\n useKeyboardSave(() => {\n if (!disableHotkeySave) form.submit();\n });\n\n // init detail\n useEffect(() => {\n if (isEdit) {\n const payload = { id: params!.id };\n const _payload = handleStateRequest({ stage: 'show', payload });\n nx.$api[resourceShow](_payload)\n .then((res) => {\n const data = handleStateResponse({ stage: 'show', data: res });\n form.setFieldsValue(data);\n })\n .finally(() => setLoading(false));\n }\n }, [isEdit, params?.id]);\n\n const okText = isEdit ? t('update') : t('create');\n const title = isEdit ? t('update_title') : t('create_title');\n\n return (\n <ReactAntResourceForm\n loading={loading}\n form={form}\n onFinish={handleFinish}\n okText={okText}\n title={title}\n {...rest}\n />\n );\n};\n\nexport default ReactAntResourceFormApi;\n","import { useEffect } from 'react';\n\nexport const useKeyboardSave = (callback: (e: KeyboardEvent) => void) => {\n const handler = function (e: KeyboardEvent) {\n // 检查是否按下了 Ctrl+S (Windows/Linux) 或 Cmd+S (macOS)\n if ((e.ctrlKey || e.metaKey) && e.key === 's') {\n e.preventDefault();\n callback(e);\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', handler);\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }, []);\n};\n"]}
package/dist/main.d.mts CHANGED
@@ -38,4 +38,6 @@ type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {
38
38
  };
39
39
  declare const ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps>;
40
40
 
41
- export { ReactAntResourceForm, ReactAntResourceFormApi, type ReactAntResourceFormApiProps, type ReactAntResourceFormProps };
41
+ declare const useKeyboardSave: (callback: (e: KeyboardEvent) => void) => void;
42
+
43
+ export { ReactAntResourceForm, ReactAntResourceFormApi, type ReactAntResourceFormApiProps, type ReactAntResourceFormProps, useKeyboardSave };
package/dist/main.d.ts CHANGED
@@ -38,4 +38,6 @@ type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {
38
38
  };
39
39
  declare const ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps>;
40
40
 
41
- export { ReactAntResourceForm, ReactAntResourceFormApi, type ReactAntResourceFormApiProps, type ReactAntResourceFormProps };
41
+ declare const useKeyboardSave: (callback: (e: KeyboardEvent) => void) => void;
42
+
43
+ export { ReactAntResourceForm, ReactAntResourceFormApi, type ReactAntResourceFormApiProps, type ReactAntResourceFormProps, useKeyboardSave };
package/dist/main.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- var T=Object.defineProperty;var g=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var L=(a,t,e)=>t in a?T(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,c=(a,t)=>{for(var e in t||(t={}))B.call(t,e)&&L(a,e,t[e]);if(g)for(var e of g(t))K.call(t,e)&&L(a,e,t[e]);return a};var s=(a,t)=>T(a,"name",{value:t,configurable:!0});var x=(a,t)=>{var e={};for(var o in a)B.call(a,o)&&t.indexOf(o)<0&&(e[o]=a[o]);if(a!=null&&g)for(var o of g(a))t.indexOf(o)<0&&K.call(a,o)&&(e[o]=a[o]);return e};import M from"classnames";import l from"react";import{Button as w,Card as V,Space as j}from"antd";import q from"@jswork/react-ant-form-schema";import{ArrowLeftOutlined as U,SaveOutlined as G}from"@ant-design/icons";var P="react-ant-resource-form",I={"zh-CN":{submit:"\u63D0\u4EA4",back:"\u8FD4\u56DE"},"en-US":{submit:"Submit",back:"Back"}},J={lang:"zh-CN"},Q=s(a=>{let S=c(c({},J),a),{className:t,meta:e,children:o,lang:p,title:f,loading:C,extra:A,size:F,okText:v,backText:E,okProps:h,backProps:i}=S,d=x(S,["className","meta","children","lang","title","loading","extra","size","okText","backText","okProps","backProps"]),y=s($=>I[p][$],"t"),m=s(()=>history.back(),"handleBack"),_=A||l.createElement(w,c({size:"small",icon:l.createElement(U,null),onClick:m},i),E||y("back")),k=o||l.createElement(j,null,l.createElement(w,c({htmlType:"submit",type:"primary",icon:l.createElement(G,null)},h),v||y("submit")),l.createElement(w,c({icon:l.createElement(U,null),onClick:m},i),E||y("back")));return l.createElement(V,{title:f,size:F,loading:C,"data-component":P,className:M(P,t),extra:_},l.createElement(q,c({meta:e},d),k))},"ReactAntResourceForm"),z=Q;import X,{useEffect as Y,useState as Z}from"react";import{Form as ee,message as O}from"antd";import R from"@jswork/next";import{useEffect as W}from"react";var H=s(a=>{let t=s(function(e){(e.ctrlKey||e.metaKey)&&e.key==="s"&&(e.preventDefault(),a(e))},"handler");W(()=>(document.addEventListener("keydown",t),()=>{document.removeEventListener("keydown",t)}),[])},"useKeyboardSave");var te={"zh-CN":{create:"\u521B\u5EFA",update:"\u4FDD\u5B58",create_title:"\u521B\u5EFA",update_title:"\u66F4\u65B0",create_success:"\u521B\u5EFA\u6210\u529F",update_success:"\u66F4\u65B0\u6210\u529F"},"en-US":{create:"Create",update:"Save",create_title:"Create",update_title:"Update",create_success:"Create success",update_success:"Update success"}},ae={lang:"zh-CN",disableHotkeySave:!1},oe=s(a=>{let N=c(c({},ae),a),{name:t,params:e,lang:o,transformRequest:p,transformResponse:f,disableHotkeySave:C}=N,A=x(N,["name","params","lang","transformRequest","transformResponse","disableHotkeySave"]),F=`${t}_update`,v=`${t}_create`,E=`${t}_show`,[h]=ee.useForm(),i=!!(e!=null&&e.id),d=s(n=>te[o][n],"t"),[y,m]=Z(!1),_=s(n=>(m(!0),(p==null?void 0:p(n))||n.payload),"handleStateRequest"),k=s(n=>{var r,u;return m(!1),(u=(r=R.$event)==null?void 0:r.emit)==null||u.call(r,`${t}:refetch`),(f==null?void 0:f(n))||n.data},"handleStateResponse"),S=s(n=>{if(i){let r=c({id:e.id},n),u=_({stage:"update",payload:r});R.$api[F](u).then(b=>{O.success(d("update_success")),k({stage:"update",data:b})}).finally(()=>m(!1))}else{let r=c({},n),u=_({stage:"create",payload:r});R.$api[v](u).then(b=>{O.success(d("create_success")),k({stage:"create",data:b})}).finally(()=>m(!1))}},"handleFinish");H(()=>{C||h.submit()}),Y(()=>{if(i){let n={id:e.id},r=_({stage:"show",payload:n});R.$api[E](r).then(u=>{let b=k({stage:"show",data:u});h.setFieldsValue(b)}).finally(()=>m(!1))}},[i,e==null?void 0:e.id]);let $=d(i?"update":"create"),D=d(i?"update_title":"create_title");return X.createElement(z,c({loading:y,form:h,onFinish:S,okText:$,title:D},A))},"ReactAntResourceFormApi"),ce=oe;export{z as ReactAntResourceForm,ce as ReactAntResourceFormApi};
1
+ var B=Object.defineProperty;var b=Object.getOwnPropertySymbols;var K=Object.prototype.hasOwnProperty,M=Object.prototype.propertyIsEnumerable;var N=(a,t,e)=>t in a?B(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e,c=(a,t)=>{for(var e in t||(t={}))K.call(t,e)&&N(a,e,t[e]);if(b)for(var e of b(t))M.call(t,e)&&N(a,e,t[e]);return a};var s=(a,t)=>B(a,"name",{value:t,configurable:!0});var C=(a,t)=>{var e={};for(var o in a)K.call(a,o)&&t.indexOf(o)<0&&(e[o]=a[o]);if(a!=null&&b)for(var o of b(a))t.indexOf(o)<0&&M.call(a,o)&&(e[o]=a[o]);return e};import V from"classnames";import i from"react";import{Button as O,Card as j,Space as q}from"antd";import G from"@jswork/react-ant-form-schema";import{ArrowLeftOutlined as I,SaveOutlined as J}from"@ant-design/icons";var P={"zh-CN":{create:"\u521B\u5EFA",update:"\u4FDD\u5B58",create_title:"\u521B\u5EFA",update_title:"\u66F4\u65B0",create_success:"\u521B\u5EFA\u6210\u529F",update_success:"\u66F4\u65B0\u6210\u529F"},"en-US":{create:"Create",update:"Save",create_title:"Create",update_title:"Update",create_success:"Create success",update_success:"Update success"}},T={"zh-CN":{submit:"\u63D0\u4EA4",back:"\u8FD4\u56DE"},"en-US":{submit:"Submit",back:"Back"}};var U="react-ant-resource-form",Q={lang:"zh-CN"},W=s(a=>{let A=c(c({},Q),a),{className:t,meta:e,children:o,lang:p,title:f,loading:g,extra:x,size:F,okText:L,backText:k,okProps:_,backProps:l}=A,m=C(A,["className","meta","children","lang","title","loading","extra","size","okText","backText","okProps","backProps"]),h=s(v=>T[p][v],"t"),d=s(()=>history.back(),"handleBack"),S=x||i.createElement(O,c({size:"small",icon:i.createElement(I,null),onClick:d},l),k||h("back")),y=o||i.createElement(q,null,i.createElement(O,c({htmlType:"submit",type:"primary",icon:i.createElement(J,null)},_),L||h("submit")),i.createElement(O,c({icon:i.createElement(I,null),onClick:d},l),k||h("back")));return i.createElement(j,{title:f,size:F,loading:g,"data-component":U,className:V(U,t),extra:S},i.createElement(G,c({meta:e},m),y))},"ReactAntResourceForm"),$=W;import Y,{useEffect as Z,useState as ee}from"react";import{Form as te,message as H}from"antd";import R from"@jswork/next";import{useEffect as X}from"react";var w=s(a=>{let t=s(function(e){(e.ctrlKey||e.metaKey)&&e.key==="s"&&(e.preventDefault(),a(e))},"handler");X(()=>(document.addEventListener("keydown",t),()=>{document.removeEventListener("keydown",t)}),[])},"useKeyboardSave");var ae={lang:"zh-CN",disableHotkeySave:!1},oe=s(a=>{let z=c(c({},ae),a),{name:t,params:e,lang:o,transformRequest:p,transformResponse:f,disableHotkeySave:g}=z,x=C(z,["name","params","lang","transformRequest","transformResponse","disableHotkeySave"]),F=`${t}_update`,L=`${t}_create`,k=`${t}_show`,[_]=te.useForm(),l=!!(e!=null&&e.id),m=s(r=>P[o][r],"t"),[h,d]=ee(!1),S=s(r=>(d(!0),(p==null?void 0:p(r))||r.payload),"handleStateRequest"),y=s(r=>{var n,u;return d(!1),(u=(n=R.$event)==null?void 0:n.emit)==null||u.call(n,`${t}:refetch`),(f==null?void 0:f(r))||r.data},"handleStateResponse"),A=s(r=>{if(l){let n=c({id:e.id},r),u=S({stage:"update",payload:n});R.$api[F](u).then(E=>{H.success(m("update_success")),y({stage:"update",data:E})}).finally(()=>d(!1))}else{let n=c({},r),u=S({stage:"create",payload:n});R.$api[L](u).then(E=>{H.success(m("create_success")),y({stage:"create",data:E})}).finally(()=>d(!1))}},"handleFinish");w(()=>{g||_.submit()}),Z(()=>{if(l){let r={id:e.id},n=S({stage:"show",payload:r});R.$api[k](n).then(u=>{let E=y({stage:"show",data:u});_.setFieldsValue(E)}).finally(()=>d(!1))}},[l,e==null?void 0:e.id]);let v=m(l?"update":"create"),D=m(l?"update_title":"create_title");return Y.createElement($,c({loading:h,form:_,onFinish:A,okText:v,title:D},x))},"ReactAntResourceFormApi"),ce=oe;export{$ as ReactAntResourceForm,ce as ReactAntResourceFormApi,w as useKeyboardSave};
2
2
  //# sourceMappingURL=main.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.tsx","../src/api.tsx","../src/hooks.ts"],"sourcesContent":["// import noop from '@jswork/noop';\nimport cx from 'classnames';\nimport React, { FC } from 'react';\nimport { Button, ButtonProps, Card, CardProps, Space } from 'antd';\nimport ReactAntdFormSchema, { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';\nimport { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';\n\nexport type ReactAntResourceFormProps = {\n lang?: string;\n loading?: boolean;\n okText?: string;\n backText?: string;\n okProps?: ButtonProps;\n backProps?: ButtonProps;\n size?: CardProps['size'];\n extra?: CardProps['extra'];\n title?: CardProps['title'];\n} & ReactAntdFormSchemaProps;\n\nconst CLASS_NAME = 'react-ant-resource-form';\nconst locales = {\n 'zh-CN': {\n submit: '提交',\n back: '返回',\n },\n 'en-US': {\n submit: 'Submit',\n back: 'Back',\n },\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n};\n\nconst ReactAntResourceForm: FC<ReactAntResourceFormProps> = (props) => {\n const {\n className,\n meta,\n children,\n lang,\n title,\n loading,\n extra,\n size,\n okText,\n backText,\n okProps,\n backProps,\n ...rest\n } = {\n ...defaultProps,\n ...props,\n };\n const t = (key: string) => locales[lang][key];\n const handleBack = () => history.back();\n const _extra = extra || (\n <Button size=\"small\" icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n );\n const _children = children || (\n <Space>\n <Button htmlType=\"submit\" type=\"primary\" icon={<SaveOutlined />} {...okProps}>\n {okText || t('submit')}\n </Button>\n <Button icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n </Space>\n );\n\n return (\n <Card\n title={title}\n size={size}\n loading={loading}\n data-component={CLASS_NAME}\n className={cx(CLASS_NAME, className)}\n extra={_extra}>\n <ReactAntdFormSchema meta={meta} {...rest}>\n {_children}\n </ReactAntdFormSchema>\n </Card>\n );\n};\n\nexport default ReactAntResourceForm;\n","import React, { FC, useEffect, useState } from 'react';\nimport ReactAntResourceForm, { ReactAntResourceFormProps } from '.';\nimport { Form, message } from 'antd';\nimport nx from '@jswork/next';\nimport { useKeyboardSave } from './hooks';\n\ndeclare global {\n interface NxStatic {\n $api: Record<string, any>;\n $event: any;\n }\n}\n\ntype StagePayload = {\n stage: 'show' | 'create' | 'update';\n payload: any;\n};\n\ntype StageData = {\n stage: 'show' | 'create' | 'update';\n data: any;\n};\n\nexport type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {\n lang?: string;\n params?: Record<string, any>;\n disableHotkeySave?: boolean;\n transformRequest?: (payload: StagePayload) => any;\n transformResponse?: (res: StageData) => any;\n};\n\nconst locales = {\n 'zh-CN': {\n create: '创建',\n update: '保存',\n create_title: '创建',\n update_title: '更新',\n create_success: '创建成功',\n update_success: '更新成功',\n },\n 'en-US': {\n create: 'Create',\n update: 'Save',\n create_title: 'Create',\n update_title: 'Update',\n create_success: 'Create success',\n update_success: 'Update success',\n },\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n disableHotkeySave: false,\n};\n\nconst ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {\n const { name, params, lang, transformRequest, transformResponse, disableHotkeySave, ...rest } = {\n ...defaultProps,\n ...props,\n };\n\n const resourceEdit = `${name}_update`;\n const resourceCreate = `${name}_create`;\n const resourceShow = `${name}_show`;\n const [form] = Form.useForm();\n const isEdit = Boolean(params?.id);\n const t = (key: string) => locales[lang!][key];\n const [loading, setLoading] = useState(false);\n const handleStateRequest = (stagePayload: StagePayload) => {\n setLoading(true);\n return transformRequest?.(stagePayload) || stagePayload.payload;\n };\n\n const handleStateResponse = (res: StageData) => {\n setLoading(false);\n nx.$event?.emit?.(`${name}:refetch`);\n return transformResponse?.(res) || res.data;\n };\n\n const handleFinish = (values) => {\n if (isEdit) {\n const payload = { id: params!.id, ...values };\n const _payload = handleStateRequest({ stage: 'update', payload });\n\n nx.$api[resourceEdit](_payload)\n .then((res) => {\n message.success(t('update_success'));\n handleStateResponse({ stage: 'update', data: res });\n })\n .finally(() => setLoading(false));\n } else {\n const payload = { ...values };\n const _payload = handleStateRequest({ stage: 'create', payload });\n\n nx.$api[resourceCreate](_payload)\n .then((res) => {\n message.success(t('create_success'));\n handleStateResponse({ stage: 'create', data: res });\n })\n .finally(() => setLoading(false));\n }\n };\n\n // hotkey save\n useKeyboardSave(() => {\n if (!disableHotkeySave) form.submit();\n });\n\n // init detail\n useEffect(() => {\n if (isEdit) {\n const payload = { id: params!.id };\n const _payload = handleStateRequest({ stage: 'show', payload });\n nx.$api[resourceShow](_payload)\n .then((res) => {\n const data = handleStateResponse({ stage: 'show', data: res });\n form.setFieldsValue(data);\n })\n .finally(() => setLoading(false));\n }\n }, [isEdit, params?.id]);\n\n const okText = isEdit ? t('update') : t('create');\n const title = isEdit ? t('update_title') : t('create_title');\n\n return (\n <ReactAntResourceForm\n loading={loading}\n form={form}\n onFinish={handleFinish}\n okText={okText}\n title={title}\n {...rest}\n />\n );\n};\n\nexport default ReactAntResourceFormApi;\n","import { useEffect } from 'react';\n\nexport const useKeyboardSave = (callback: (e: KeyboardEvent) => void) => {\n const handler = function (e: KeyboardEvent) {\n // 检查是否按下了 Ctrl+S (Windows/Linux) 或 Cmd+S (macOS)\n if ((e.ctrlKey || e.metaKey) && e.key === 's') {\n e.preventDefault();\n callback(e);\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', handler);\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }, []);\n};\n"],"mappings":"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","names":["cx","React","Button","Card","Space","ReactAntdFormSchema","ArrowLeftOutlined","SaveOutlined","CLASS_NAME","locales","submit","back","defaultProps","lang","ReactAntResourceForm","__name","props","_a","__spreadValues","className","meta","children","title","loading","extra","size","okText","backText","okProps","backProps","rest","t","key","handleBack","history","_extra","React","Button","icon","ArrowLeftOutlined","onClick","_children","Space","htmlType","type","SaveOutlined","Card","data-component","cx","ReactAntdFormSchema","index_default","React","useEffect","useState","Form","message","nx","useEffect","useKeyboardSave","__name","callback","handler","e","ctrlKey","metaKey","key","preventDefault","useEffect","document","addEventListener","removeEventListener","locales","create","update","create_title","update_title","create_success","update_success","defaultProps","lang","disableHotkeySave","ReactAntResourceFormApi","__name","props","_a","__spreadValues","name","params","transformRequest","transformResponse","rest","resourceEdit","resourceCreate","resourceShow","form","Form","useForm","isEdit","Boolean","id","t","key","loading","setLoading","useState","handleStateRequest","stagePayload","payload","handleStateResponse","res","_b","nx","$event","emit","data","handleFinish","values","_payload","stage","$api","then","message","success","finally","useKeyboardSave","submit","useEffect","setFieldsValue","okText","title","React","ReactAntResourceForm","onFinish","api_default"]}
1
+ {"version":3,"sources":["../src/index.tsx","../src/locales.ts","../src/api.tsx","../src/hooks.ts"],"sourcesContent":["// import noop from '@jswork/noop';\nimport cx from 'classnames';\nimport React, { FC } from 'react';\nimport { Button, ButtonProps, Card, CardProps, Space } from 'antd';\nimport ReactAntdFormSchema, { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';\nimport { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';\nimport { BASIC_FORM_LOCALES } from './locales';\n\nexport type ReactAntResourceFormProps = {\n lang?: string;\n loading?: boolean;\n okText?: string;\n backText?: string;\n okProps?: ButtonProps;\n backProps?: ButtonProps;\n size?: CardProps['size'];\n extra?: CardProps['extra'];\n title?: CardProps['title'];\n} & ReactAntdFormSchemaProps;\n\nconst CLASS_NAME = 'react-ant-resource-form';\n\nconst defaultProps = {\n lang: 'zh-CN',\n};\n\nconst ReactAntResourceForm: FC<ReactAntResourceFormProps> = (props) => {\n const {\n className,\n meta,\n children,\n lang,\n title,\n loading,\n extra,\n size,\n okText,\n backText,\n okProps,\n backProps,\n ...rest\n } = {\n ...defaultProps,\n ...props,\n };\n\n const t = (key: string) => BASIC_FORM_LOCALES[lang][key];\n const handleBack = () => history.back();\n const _extra = extra || (\n <Button size=\"small\" icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n );\n\n const _children = children || (\n <Space>\n <Button htmlType=\"submit\" type=\"primary\" icon={<SaveOutlined />} {...okProps}>\n {okText || t('submit')}\n </Button>\n <Button icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>\n {backText || t('back')}\n </Button>\n </Space>\n );\n\n return (\n <Card\n title={title}\n size={size}\n loading={loading}\n data-component={CLASS_NAME}\n className={cx(CLASS_NAME, className)}\n extra={_extra}>\n <ReactAntdFormSchema meta={meta} {...rest}>\n {_children}\n </ReactAntdFormSchema>\n </Card>\n );\n};\n\nexport default ReactAntResourceForm;\n","export const API_FORM_LOCALES = {\n 'zh-CN': {\n create: '创建',\n update: '保存',\n create_title: '创建',\n update_title: '更新',\n create_success: '创建成功',\n update_success: '更新成功',\n },\n 'en-US': {\n create: 'Create',\n update: 'Save',\n create_title: 'Create',\n update_title: 'Update',\n create_success: 'Create success',\n update_success: 'Update success',\n },\n};\n\nexport const BASIC_FORM_LOCALES = {\n 'zh-CN': {\n submit: '提交',\n back: '返回',\n },\n 'en-US': {\n submit: 'Submit',\n back: 'Back',\n },\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport ReactAntResourceForm, { ReactAntResourceFormProps } from '.';\nimport { Form, message } from 'antd';\nimport nx from '@jswork/next';\nimport { useKeyboardSave } from './hooks';\nimport { API_FORM_LOCALES } from './locales';\n\ndeclare global {\n interface NxStatic {\n $api: Record<string, any>;\n $event: any;\n }\n}\n\ntype StagePayload = {\n stage: 'show' | 'create' | 'update';\n payload: any;\n};\n\ntype StageData = {\n stage: 'show' | 'create' | 'update';\n data: any;\n};\n\nexport type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {\n lang?: string;\n params?: Record<string, any>;\n disableHotkeySave?: boolean;\n transformRequest?: (payload: StagePayload) => any;\n transformResponse?: (res: StageData) => any;\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n disableHotkeySave: false,\n};\n\nconst ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {\n const { name, params, lang, transformRequest, transformResponse, disableHotkeySave, ...rest } = {\n ...defaultProps,\n ...props,\n };\n\n const resourceEdit = `${name}_update`;\n const resourceCreate = `${name}_create`;\n const resourceShow = `${name}_show`;\n const [form] = Form.useForm();\n const isEdit = Boolean(params?.id);\n const t = (key: string) => API_FORM_LOCALES[lang!][key];\n const [loading, setLoading] = useState(false);\n const handleStateRequest = (stagePayload: StagePayload) => {\n setLoading(true);\n return transformRequest?.(stagePayload) || stagePayload.payload;\n };\n\n const handleStateResponse = (res: StageData) => {\n setLoading(false);\n nx.$event?.emit?.(`${name}:refetch`);\n return transformResponse?.(res) || res.data;\n };\n\n const handleFinish = (values) => {\n if (isEdit) {\n const payload = { id: params!.id, ...values };\n const _payload = handleStateRequest({ stage: 'update', payload });\n\n nx.$api[resourceEdit](_payload)\n .then((res) => {\n message.success(t('update_success'));\n handleStateResponse({ stage: 'update', data: res });\n })\n .finally(() => setLoading(false));\n } else {\n const payload = { ...values };\n const _payload = handleStateRequest({ stage: 'create', payload });\n\n nx.$api[resourceCreate](_payload)\n .then((res) => {\n message.success(t('create_success'));\n handleStateResponse({ stage: 'create', data: res });\n })\n .finally(() => setLoading(false));\n }\n };\n\n // hotkey save\n useKeyboardSave(() => {\n if (!disableHotkeySave) form.submit();\n });\n\n // init detail\n useEffect(() => {\n if (isEdit) {\n const payload = { id: params!.id };\n const _payload = handleStateRequest({ stage: 'show', payload });\n nx.$api[resourceShow](_payload)\n .then((res) => {\n const data = handleStateResponse({ stage: 'show', data: res });\n form.setFieldsValue(data);\n })\n .finally(() => setLoading(false));\n }\n }, [isEdit, params?.id]);\n\n const okText = isEdit ? t('update') : t('create');\n const title = isEdit ? t('update_title') : t('create_title');\n\n return (\n <ReactAntResourceForm\n loading={loading}\n form={form}\n onFinish={handleFinish}\n okText={okText}\n title={title}\n {...rest}\n />\n );\n};\n\nexport default ReactAntResourceFormApi;\n","import { useEffect } from 'react';\n\nexport const useKeyboardSave = (callback: (e: KeyboardEvent) => void) => {\n const handler = function (e: KeyboardEvent) {\n // 检查是否按下了 Ctrl+S (Windows/Linux) 或 Cmd+S (macOS)\n if ((e.ctrlKey || e.metaKey) && e.key === 's') {\n e.preventDefault();\n callback(e);\n }\n };\n\n useEffect(() => {\n document.addEventListener('keydown', handler);\n return () => {\n document.removeEventListener('keydown', handler);\n };\n }, []);\n};\n"],"mappings":"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","names":["cx","React","Button","Card","Space","ReactAntdFormSchema","ArrowLeftOutlined","SaveOutlined","API_FORM_LOCALES","create","update","create_title","update_title","create_success","update_success","BASIC_FORM_LOCALES","submit","back","CLASS_NAME","defaultProps","lang","ReactAntResourceForm","__name","props","_a","__spreadValues","className","meta","children","title","loading","extra","size","okText","backText","okProps","backProps","rest","t","key","BASIC_FORM_LOCALES","handleBack","history","back","_extra","React","Button","icon","ArrowLeftOutlined","onClick","_children","Space","htmlType","type","SaveOutlined","Card","data-component","cx","ReactAntdFormSchema","index_default","React","useEffect","useState","Form","message","nx","useEffect","useKeyboardSave","__name","callback","handler","e","ctrlKey","metaKey","key","preventDefault","useEffect","document","addEventListener","removeEventListener","defaultProps","lang","disableHotkeySave","ReactAntResourceFormApi","__name","props","_a","__spreadValues","name","params","transformRequest","transformResponse","rest","resourceEdit","resourceCreate","resourceShow","form","Form","useForm","isEdit","Boolean","id","t","key","API_FORM_LOCALES","loading","setLoading","useState","handleStateRequest","stagePayload","payload","handleStateResponse","res","_b","nx","$event","emit","data","handleFinish","values","_payload","stage","$api","then","message","success","finally","useKeyboardSave","submit","useEffect","setFieldsValue","okText","title","React","ReactAntResourceForm","onFinish","api_default"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jswork/react-ant-resource-form",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "main": "dist/main.cjs.js",
5
5
  "module": "dist/main.esm.js",
6
6
  "types": "dist/main.d.ts",
package/src/api.tsx CHANGED
@@ -3,6 +3,7 @@ import ReactAntResourceForm, { ReactAntResourceFormProps } from '.';
3
3
  import { Form, message } from 'antd';
4
4
  import nx from '@jswork/next';
5
5
  import { useKeyboardSave } from './hooks';
6
+ import { API_FORM_LOCALES } from './locales';
6
7
 
7
8
  declare global {
8
9
  interface NxStatic {
@@ -29,25 +30,6 @@ export type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {
29
30
  transformResponse?: (res: StageData) => any;
30
31
  };
31
32
 
32
- const locales = {
33
- 'zh-CN': {
34
- create: '创建',
35
- update: '保存',
36
- create_title: '创建',
37
- update_title: '更新',
38
- create_success: '创建成功',
39
- update_success: '更新成功',
40
- },
41
- 'en-US': {
42
- create: 'Create',
43
- update: 'Save',
44
- create_title: 'Create',
45
- update_title: 'Update',
46
- create_success: 'Create success',
47
- update_success: 'Update success',
48
- },
49
- };
50
-
51
33
  const defaultProps = {
52
34
  lang: 'zh-CN',
53
35
  disableHotkeySave: false,
@@ -64,7 +46,7 @@ const ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {
64
46
  const resourceShow = `${name}_show`;
65
47
  const [form] = Form.useForm();
66
48
  const isEdit = Boolean(params?.id);
67
- const t = (key: string) => locales[lang!][key];
49
+ const t = (key: string) => API_FORM_LOCALES[lang!][key];
68
50
  const [loading, setLoading] = useState(false);
69
51
  const handleStateRequest = (stagePayload: StagePayload) => {
70
52
  setLoading(true);
package/src/index.tsx CHANGED
@@ -4,6 +4,7 @@ import React, { FC } from 'react';
4
4
  import { Button, ButtonProps, Card, CardProps, Space } from 'antd';
5
5
  import ReactAntdFormSchema, { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';
6
6
  import { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';
7
+ import { BASIC_FORM_LOCALES } from './locales';
7
8
 
8
9
  export type ReactAntResourceFormProps = {
9
10
  lang?: string;
@@ -18,16 +19,6 @@ export type ReactAntResourceFormProps = {
18
19
  } & ReactAntdFormSchemaProps;
19
20
 
20
21
  const CLASS_NAME = 'react-ant-resource-form';
21
- const locales = {
22
- 'zh-CN': {
23
- submit: '提交',
24
- back: '返回',
25
- },
26
- 'en-US': {
27
- submit: 'Submit',
28
- back: 'Back',
29
- },
30
- };
31
22
 
32
23
  const defaultProps = {
33
24
  lang: 'zh-CN',
@@ -52,13 +43,15 @@ const ReactAntResourceForm: FC<ReactAntResourceFormProps> = (props) => {
52
43
  ...defaultProps,
53
44
  ...props,
54
45
  };
55
- const t = (key: string) => locales[lang][key];
46
+
47
+ const t = (key: string) => BASIC_FORM_LOCALES[lang][key];
56
48
  const handleBack = () => history.back();
57
49
  const _extra = extra || (
58
50
  <Button size="small" icon={<ArrowLeftOutlined />} onClick={handleBack} {...backProps}>
59
51
  {backText || t('back')}
60
52
  </Button>
61
53
  );
54
+
62
55
  const _children = children || (
63
56
  <Space>
64
57
  <Button htmlType="submit" type="primary" icon={<SaveOutlined />} {...okProps}>
package/src/locales.ts ADDED
@@ -0,0 +1,29 @@
1
+ export const API_FORM_LOCALES = {
2
+ 'zh-CN': {
3
+ create: '创建',
4
+ update: '保存',
5
+ create_title: '创建',
6
+ update_title: '更新',
7
+ create_success: '创建成功',
8
+ update_success: '更新成功',
9
+ },
10
+ 'en-US': {
11
+ create: 'Create',
12
+ update: 'Save',
13
+ create_title: 'Create',
14
+ update_title: 'Update',
15
+ create_success: 'Create success',
16
+ update_success: 'Update success',
17
+ },
18
+ };
19
+
20
+ export const BASIC_FORM_LOCALES = {
21
+ 'zh-CN': {
22
+ submit: '提交',
23
+ back: '返回',
24
+ },
25
+ 'en-US': {
26
+ submit: 'Submit',
27
+ back: 'Back',
28
+ },
29
+ };
package/src/main.tsx CHANGED
@@ -1,7 +1,8 @@
1
1
  import ReactAntResourceForm from '.';
2
2
  import ReactAntResourceFormApi from './api';
3
+ import { useKeyboardSave } from './hooks';
3
4
  import type { ReactAntResourceFormProps } from '.';
4
5
  import type { ReactAntResourceFormApiProps } from './api';
5
6
 
6
- export { ReactAntResourceForm, ReactAntResourceFormApi };
7
+ export { ReactAntResourceForm, ReactAntResourceFormApi, useKeyboardSave };
7
8
  export type { ReactAntResourceFormProps, ReactAntResourceFormApiProps };