@jswork/react-ant-resource-form 1.0.1

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/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # react-ant-resource-form
2
+ > Antd form builder for resource form.
3
+
4
+ ## installation
5
+ ```shell
6
+ yarn add @jswork/react-ant-resource-form
7
+ ```
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var w=Object.defineProperty;var _=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var $=(t,a,e)=>a in t?w(t,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[a]=e,o=(t,a)=>{for(var e in a||(a={}))B.call(a,e)&&$(t,e,a[e]);if(_)for(var e of _(a))L.call(a,e)&&$(t,e,a[e]);return t};var n=(t,a)=>w(t,"name",{value:a,configurable:!0});var E=(t,a)=>{var e={};for(var s in t)B.call(t,s)&&a.indexOf(s)<0&&(e[s]=t[s]);if(t!=null&&_)for(var s of _(t))a.indexOf(s)<0&&L.call(t,s)&&(e[s]=t[s]);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 O="react-ant-resource-form",D={"zh-CN":{submit:"\u63D0\u4EA4",back:"\u8FD4\u56DE"},"en-US":{submit:"Submit",back:"Back"}},G={lang:"zh-CN"},H=n(t=>{let l=o(o({},G),t),{className:a,meta:e,children:s,lang:d,title:p,loading:R,extra:y,size:S}=l,A=E(l,["className","meta","children","lang","title","loading","extra","size"]),i=n(f=>D[d][f],"t"),m=n(()=>history.back(),"handleBack"),g=y||_react2.default.createElement(_antd.Button,{size:"small",icon:_react2.default.createElement(_icons.ArrowLeftOutlined,null),onClick:m},i("back")),F=s||_react2.default.createElement(_antd.Space,null,_react2.default.createElement(_antd.Button,{htmlType:"submit",type:"primary",icon:_react2.default.createElement(_icons.SaveOutlined,null)},i("submit")),_react2.default.createElement(_antd.Button,{icon:_react2.default.createElement(_icons.ArrowLeftOutlined,null),onClick:m},i("back")));return _react2.default.createElement(_antd.Card,{title:p,size:S,loading:R,"data-component":O,className:_classnames2.default.call(void 0, O,a),extra:g},_react2.default.createElement(_reactantformschema2.default,o({meta:e},A),F))},"ReactAntResourceForm"),x= exports.ReactAntResourceForm =H;var _next = require('@jswork/next'); var _next2 = _interopRequireDefault(_next);var W={"zh-CN":{create_success:"\u521B\u5EFA\u6210\u529F",update_success:"\u66F4\u65B0\u6210\u529F"},"en-US":{create_success:"Create success",update_success:"Update success"}},X={lang:"zh-CN"},Y=n(t=>{let N=o(o({},X),t),{name:a,params:e,lang:s,onRequest:d,onResponse:p}=N,R=E(N,["name","params","lang","onRequest","onResponse"]),y=`${a}_update`,S=`${a}_create`,A=`${a}_show`,[i]=_antd.Form.useForm(),m=!!(e!=null&&e.id),g=n(c=>W[s][c],"t"),[F,l]=_react.useState.call(void 0, !1),f=n(c=>(l(!0),(d==null?void 0:d(c))||c),"handleStateRequest"),b=n(c=>{p==null||p(c),l(!1)},"handleStateResponse"),M=n(c=>{if(m){let h=o({id:e.id},c),u=f({stage:"update",payload:h});_next2.default.$api[y](u).then(C=>{_antd.message.success(g("update_success")),b({stage:"update",data:C})}).finally(()=>l(!1))}else{let h=o({},c),u=f({stage:"create",payload:h});_next2.default.$api[S](u).then(C=>{_antd.message.success(g("create_success")),b({stage:"create",data:C})}).finally(()=>l(!1))}},"handleFinish");return _react.useEffect.call(void 0, ()=>{if(m){let c={id:e.id},h=f({stage:"update",payload:c});_next2.default.$api[A](h).then(u=>{i.setFieldsValue(u),b({stage:"show",data:u})}).finally(()=>l(!1))}},[m]),_react2.default.createElement(x,o({loading:F,form:i,onFinish:M},R))},"ReactAntResourceFormApi"),Z= exports.ReactAntResourceFormApi =Y;exports.ReactAntResourceForm = x; exports.ReactAntResourceFormApi = Z;
2
+ //# sourceMappingURL=main.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/ap7/github/react-ant-resource-form/packages/lib/dist/main.cjs.js","../src/index.tsx","../src/api.tsx"],"names":["CLASS_NAME","locales","submit","back","defaultProps","lang","ReactAntResourceForm","__name","props","_a","__spreadValues","className","meta","children","title","loading","extra","size","rest","t","key","handleBack","history","_extra","React","Button","icon","ArrowLeftOutlined","onClick","_children","Space","htmlType","type","SaveOutlined","Card","data-component","cx","ReactAntdFormSchema","index_default","create_success","update_success","ReactAntResourceFormApi","name","params","onRequest","onResponse","resourceEdit"],"mappings":"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","file":"/Users/ap7/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, 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 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 { className, meta, children, lang, title, loading, extra, size, ...rest } = {\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}>\n {t('back')}\n </Button>\n );\n const _children = children || (\n <Space>\n <Button htmlType=\"submit\" type=\"primary\" icon={<SaveOutlined />}>\n {t('submit')}\n </Button>\n <Button icon={<ArrowLeftOutlined />} onClick={handleBack}>\n {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';\n\ndeclare global {\n interface NxStatic {\n $api: Record<string, 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 onRequest?: (payload: StagePayload) => any;\n onResponse?: (res: StageData) => void;\n};\n\nconst locales = {\n 'zh-CN': {\n create_success: '创建成功',\n update_success: '更新成功',\n },\n 'en-US': {\n create_success: 'Create success',\n update_success: 'Update success',\n },\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n};\n\nconst ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {\n const { name, params, lang, onRequest, onResponse, ...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 = (payload: StagePayload) => {\n setLoading(true);\n return onRequest?.(payload) || payload;\n };\n const handleStateResponse = (res: StageData) => {\n onResponse?.(res);\n setLoading(false);\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 // init detail\n useEffect(() => {\n if (isEdit) {\n const payload = { id: params!.id };\n const _payload = handleStateRequest({ stage: 'update', payload });\n nx.$api[resourceShow](_payload)\n .then((res) => {\n form.setFieldsValue(res);\n handleStateResponse({ stage: 'show', data: res });\n })\n .finally(() => setLoading(false));\n }\n }, [isEdit]);\n\n return <ReactAntResourceForm loading={loading} form={form} onFinish={handleFinish} {...rest} />;\n};\n\nexport default ReactAntResourceFormApi;\n"]}
@@ -0,0 +1,35 @@
1
+ import { FC } from 'react';
2
+ import { CardProps } from 'antd';
3
+ import { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';
4
+
5
+ type ReactAntResourceFormProps = {
6
+ lang?: string;
7
+ loading?: boolean;
8
+ size?: CardProps['size'];
9
+ extra?: CardProps['extra'];
10
+ title?: CardProps['title'];
11
+ } & ReactAntdFormSchemaProps;
12
+ declare const ReactAntResourceForm: FC<ReactAntResourceFormProps>;
13
+
14
+ declare global {
15
+ interface NxStatic {
16
+ $api: Record<string, any>;
17
+ }
18
+ }
19
+ type StagePayload = {
20
+ stage: 'show' | 'create' | 'update';
21
+ payload: any;
22
+ };
23
+ type StageData = {
24
+ stage: 'show' | 'create' | 'update';
25
+ data: any;
26
+ };
27
+ type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {
28
+ lang?: string;
29
+ params?: Record<string, any>;
30
+ onRequest?: (payload: StagePayload) => any;
31
+ onResponse?: (res: StageData) => void;
32
+ };
33
+ declare const ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps>;
34
+
35
+ export { ReactAntResourceForm, ReactAntResourceFormApi, type ReactAntResourceFormApiProps, type ReactAntResourceFormProps };
package/dist/main.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ import { FC } from 'react';
2
+ import { CardProps } from 'antd';
3
+ import { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';
4
+
5
+ type ReactAntResourceFormProps = {
6
+ lang?: string;
7
+ loading?: boolean;
8
+ size?: CardProps['size'];
9
+ extra?: CardProps['extra'];
10
+ title?: CardProps['title'];
11
+ } & ReactAntdFormSchemaProps;
12
+ declare const ReactAntResourceForm: FC<ReactAntResourceFormProps>;
13
+
14
+ declare global {
15
+ interface NxStatic {
16
+ $api: Record<string, any>;
17
+ }
18
+ }
19
+ type StagePayload = {
20
+ stage: 'show' | 'create' | 'update';
21
+ payload: any;
22
+ };
23
+ type StageData = {
24
+ stage: 'show' | 'create' | 'update';
25
+ data: any;
26
+ };
27
+ type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {
28
+ lang?: string;
29
+ params?: Record<string, any>;
30
+ onRequest?: (payload: StagePayload) => any;
31
+ onResponse?: (res: StageData) => void;
32
+ };
33
+ declare const ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps>;
34
+
35
+ export { ReactAntResourceForm, ReactAntResourceFormApi, type ReactAntResourceFormApiProps, type ReactAntResourceFormProps };
@@ -0,0 +1,2 @@
1
+ var w=Object.defineProperty;var _=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var $=(t,a,e)=>a in t?w(t,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[a]=e,o=(t,a)=>{for(var e in a||(a={}))B.call(a,e)&&$(t,e,a[e]);if(_)for(var e of _(a))L.call(a,e)&&$(t,e,a[e]);return t};var n=(t,a)=>w(t,"name",{value:a,configurable:!0});var E=(t,a)=>{var e={};for(var s in t)B.call(t,s)&&a.indexOf(s)<0&&(e[s]=t[s]);if(t!=null&&_)for(var s of _(t))a.indexOf(s)<0&&L.call(t,s)&&(e[s]=t[s]);return e};import T from"classnames";import r from"react";import{Button as k,Card as V,Space as j}from"antd";import q from"@jswork/react-ant-form-schema";import{ArrowLeftOutlined as U,SaveOutlined as v}from"@ant-design/icons";var O="react-ant-resource-form",D={"zh-CN":{submit:"\u63D0\u4EA4",back:"\u8FD4\u56DE"},"en-US":{submit:"Submit",back:"Back"}},G={lang:"zh-CN"},H=n(t=>{let l=o(o({},G),t),{className:a,meta:e,children:s,lang:d,title:p,loading:R,extra:y,size:S}=l,A=E(l,["className","meta","children","lang","title","loading","extra","size"]),i=n(f=>D[d][f],"t"),m=n(()=>history.back(),"handleBack"),g=y||r.createElement(k,{size:"small",icon:r.createElement(U,null),onClick:m},i("back")),F=s||r.createElement(j,null,r.createElement(k,{htmlType:"submit",type:"primary",icon:r.createElement(v,null)},i("submit")),r.createElement(k,{icon:r.createElement(U,null),onClick:m},i("back")));return r.createElement(V,{title:p,size:S,loading:R,"data-component":O,className:T(O,a),extra:g},r.createElement(q,o({meta:e},A),F))},"ReactAntResourceForm"),x=H;import I,{useEffect as J,useState as K}from"react";import{Form as Q,message as P}from"antd";import z from"@jswork/next";var W={"zh-CN":{create_success:"\u521B\u5EFA\u6210\u529F",update_success:"\u66F4\u65B0\u6210\u529F"},"en-US":{create_success:"Create success",update_success:"Update success"}},X={lang:"zh-CN"},Y=n(t=>{let N=o(o({},X),t),{name:a,params:e,lang:s,onRequest:d,onResponse:p}=N,R=E(N,["name","params","lang","onRequest","onResponse"]),y=`${a}_update`,S=`${a}_create`,A=`${a}_show`,[i]=Q.useForm(),m=!!(e!=null&&e.id),g=n(c=>W[s][c],"t"),[F,l]=K(!1),f=n(c=>(l(!0),(d==null?void 0:d(c))||c),"handleStateRequest"),b=n(c=>{p==null||p(c),l(!1)},"handleStateResponse"),M=n(c=>{if(m){let h=o({id:e.id},c),u=f({stage:"update",payload:h});z.$api[y](u).then(C=>{P.success(g("update_success")),b({stage:"update",data:C})}).finally(()=>l(!1))}else{let h=o({},c),u=f({stage:"create",payload:h});z.$api[S](u).then(C=>{P.success(g("create_success")),b({stage:"create",data:C})}).finally(()=>l(!1))}},"handleFinish");return J(()=>{if(m){let c={id:e.id},h=f({stage:"update",payload:c});z.$api[A](h).then(u=>{i.setFieldsValue(u),b({stage:"show",data:u})}).finally(()=>l(!1))}},[m]),I.createElement(x,o({loading:F,form:i,onFinish:M},R))},"ReactAntResourceFormApi"),Z=Y;export{x as ReactAntResourceForm,Z as ReactAntResourceFormApi};
2
+ //# sourceMappingURL=main.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.tsx","../src/api.tsx"],"sourcesContent":["// import noop from '@jswork/noop';\nimport cx from 'classnames';\nimport React, { FC } from 'react';\nimport { Button, 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 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 { className, meta, children, lang, title, loading, extra, size, ...rest } = {\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}>\n {t('back')}\n </Button>\n );\n const _children = children || (\n <Space>\n <Button htmlType=\"submit\" type=\"primary\" icon={<SaveOutlined />}>\n {t('submit')}\n </Button>\n <Button icon={<ArrowLeftOutlined />} onClick={handleBack}>\n {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';\n\ndeclare global {\n interface NxStatic {\n $api: Record<string, 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 onRequest?: (payload: StagePayload) => any;\n onResponse?: (res: StageData) => void;\n};\n\nconst locales = {\n 'zh-CN': {\n create_success: '创建成功',\n update_success: '更新成功',\n },\n 'en-US': {\n create_success: 'Create success',\n update_success: 'Update success',\n },\n};\n\nconst defaultProps = {\n lang: 'zh-CN',\n};\n\nconst ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {\n const { name, params, lang, onRequest, onResponse, ...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 = (payload: StagePayload) => {\n setLoading(true);\n return onRequest?.(payload) || payload;\n };\n const handleStateResponse = (res: StageData) => {\n onResponse?.(res);\n setLoading(false);\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 // init detail\n useEffect(() => {\n if (isEdit) {\n const payload = { id: params!.id };\n const _payload = handleStateRequest({ stage: 'update', payload });\n nx.$api[resourceShow](_payload)\n .then((res) => {\n form.setFieldsValue(res);\n handleStateResponse({ stage: 'show', data: res });\n })\n .finally(() => setLoading(false));\n }\n }, [isEdit]);\n\n return <ReactAntResourceForm loading={loading} form={form} onFinish={handleFinish} {...rest} />;\n};\n\nexport default ReactAntResourceFormApi;\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","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","locales","create_success","update_success","defaultProps","lang","ReactAntResourceFormApi","__name","props","_a","__spreadValues","name","params","onRequest","onResponse","rest","resourceEdit","resourceCreate","resourceShow","form","Form","useForm","isEdit","Boolean","id","t","key","loading","setLoading","useState","handleStateRequest","payload","handleStateResponse","res","handleFinish","values","_payload","stage","nx","$api","then","message","success","data","finally","useEffect","setFieldsValue","React","ReactAntResourceForm","onFinish","api_default"]}
package/dist/style.css ADDED
@@ -0,0 +1,2 @@
1
+
2
+ /*# sourceMappingURL=src/style.scss.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"src/style.scss"}
@@ -0,0 +1,3 @@
1
+ //.react-ant-resource-form {
2
+ // color: red;
3
+ //}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@jswork/react-ant-resource-form",
3
+ "version": "1.0.1",
4
+ "main": "dist/main.cjs.js",
5
+ "module": "dist/main.esm.js",
6
+ "types": "dist/main.d.ts",
7
+ "description": "Antd form builder for resource form.",
8
+ "homepage": "https://js.work",
9
+ "license": "MIT",
10
+ "files": [
11
+ "dist",
12
+ "src"
13
+ ],
14
+ "scripts": {
15
+ "build": "tsup",
16
+ "postbuild": "postsass -s src/style.scss -d dist/style.css -c",
17
+ "release": "release-it"
18
+ },
19
+ "dependencies": {
20
+ "@jswork/react-ant-form-schema": "^1.0.6"
21
+ },
22
+ "devDependencies": {
23
+ "@ant-design/icons": "^6.1.0",
24
+ "@jswork/next": "^1.4.2",
25
+ "@swc/core": "^1.3.93",
26
+ "@types/react": "^18.2.28",
27
+ "@types/react-dom": "^18.2.13",
28
+ "antd": "^5.27.5",
29
+ "autoprefixer": "^10.4.16",
30
+ "classnames": "^2.5.1",
31
+ "cssnano": "^6.0.1",
32
+ "react": "^18.2.0",
33
+ "react-dom": "^18.2.0",
34
+ "tsup": "^8.2.4",
35
+ "typescript": "^5.2.2"
36
+ },
37
+ "peerDependencies": {
38
+ "classnames": "*",
39
+ "react": "*",
40
+ "react-dom": "*",
41
+ "@jswork/next": "*",
42
+ "antd": "*",
43
+ "@ant-design/icons": "*"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public",
47
+ "registry": "https://registry.npmjs.org"
48
+ },
49
+ "keywords": [
50
+ "react",
51
+ "antd",
52
+ "curd",
53
+ "form",
54
+ "resource"
55
+ ]
56
+ }
package/src/api.tsx ADDED
@@ -0,0 +1,107 @@
1
+ import React, { FC, useEffect, useState } from 'react';
2
+ import ReactAntResourceForm, { ReactAntResourceFormProps } from '.';
3
+ import { Form, message } from 'antd';
4
+ import nx from '@jswork/next';
5
+
6
+ declare global {
7
+ interface NxStatic {
8
+ $api: Record<string, any>;
9
+ }
10
+ }
11
+
12
+ type StagePayload = {
13
+ stage: 'show' | 'create' | 'update';
14
+ payload: any;
15
+ };
16
+
17
+ type StageData = {
18
+ stage: 'show' | 'create' | 'update';
19
+ data: any;
20
+ };
21
+
22
+ export type ReactAntResourceFormApiProps = ReactAntResourceFormProps & {
23
+ lang?: string;
24
+ params?: Record<string, any>;
25
+ onRequest?: (payload: StagePayload) => any;
26
+ onResponse?: (res: StageData) => void;
27
+ };
28
+
29
+ const locales = {
30
+ 'zh-CN': {
31
+ create_success: '创建成功',
32
+ update_success: '更新成功',
33
+ },
34
+ 'en-US': {
35
+ create_success: 'Create success',
36
+ update_success: 'Update success',
37
+ },
38
+ };
39
+
40
+ const defaultProps = {
41
+ lang: 'zh-CN',
42
+ };
43
+
44
+ const ReactAntResourceFormApi: FC<ReactAntResourceFormApiProps> = (props) => {
45
+ const { name, params, lang, onRequest, onResponse, ...rest } = {
46
+ ...defaultProps,
47
+ ...props,
48
+ };
49
+
50
+ const resourceEdit = `${name}_update`;
51
+ const resourceCreate = `${name}_create`;
52
+ const resourceShow = `${name}_show`;
53
+ const [form] = Form.useForm();
54
+ const isEdit = Boolean(params?.id);
55
+ const t = (key: string) => locales[lang!][key];
56
+ const [loading, setLoading] = useState(false);
57
+ const handleStateRequest = (payload: StagePayload) => {
58
+ setLoading(true);
59
+ return onRequest?.(payload) || payload;
60
+ };
61
+ const handleStateResponse = (res: StageData) => {
62
+ onResponse?.(res);
63
+ setLoading(false);
64
+ };
65
+
66
+ const handleFinish = (values) => {
67
+ if (isEdit) {
68
+ const payload = { id: params!.id, ...values };
69
+ const _payload = handleStateRequest({ stage: 'update', payload });
70
+
71
+ nx.$api[resourceEdit](_payload)
72
+ .then((res) => {
73
+ message.success(t('update_success'));
74
+ handleStateResponse({ stage: 'update', data: res });
75
+ })
76
+ .finally(() => setLoading(false));
77
+ } else {
78
+ const payload = { ...values };
79
+ const _payload = handleStateRequest({ stage: 'create', payload });
80
+
81
+ nx.$api[resourceCreate](_payload)
82
+ .then((res) => {
83
+ message.success(t('create_success'));
84
+ handleStateResponse({ stage: 'create', data: res });
85
+ })
86
+ .finally(() => setLoading(false));
87
+ }
88
+ };
89
+
90
+ // init detail
91
+ useEffect(() => {
92
+ if (isEdit) {
93
+ const payload = { id: params!.id };
94
+ const _payload = handleStateRequest({ stage: 'update', payload });
95
+ nx.$api[resourceShow](_payload)
96
+ .then((res) => {
97
+ form.setFieldsValue(res);
98
+ handleStateResponse({ stage: 'show', data: res });
99
+ })
100
+ .finally(() => setLoading(false));
101
+ }
102
+ }, [isEdit]);
103
+
104
+ return <ReactAntResourceForm loading={loading} form={form} onFinish={handleFinish} {...rest} />;
105
+ };
106
+
107
+ export default ReactAntResourceFormApi;
package/src/index.tsx ADDED
@@ -0,0 +1,70 @@
1
+ // import noop from '@jswork/noop';
2
+ import cx from 'classnames';
3
+ import React, { FC } from 'react';
4
+ import { Button, Card, CardProps, Space } from 'antd';
5
+ import ReactAntdFormSchema, { ReactAntdFormSchemaProps } from '@jswork/react-ant-form-schema';
6
+ import { ArrowLeftOutlined, SaveOutlined } from '@ant-design/icons';
7
+
8
+ export type ReactAntResourceFormProps = {
9
+ lang?: string;
10
+ loading?: boolean;
11
+ size?: CardProps['size'];
12
+ extra?: CardProps['extra'];
13
+ title?: CardProps['title'];
14
+ } & ReactAntdFormSchemaProps;
15
+
16
+ const CLASS_NAME = 'react-ant-resource-form';
17
+ const locales = {
18
+ 'zh-CN': {
19
+ submit: '提交',
20
+ back: '返回',
21
+ },
22
+ 'en-US': {
23
+ submit: 'Submit',
24
+ back: 'Back',
25
+ },
26
+ };
27
+
28
+ const defaultProps = {
29
+ lang: 'zh-CN',
30
+ };
31
+
32
+ const ReactAntResourceForm: FC<ReactAntResourceFormProps> = (props) => {
33
+ const { className, meta, children, lang, title, loading, extra, size, ...rest } = {
34
+ ...defaultProps,
35
+ ...props,
36
+ };
37
+ const t = (key: string) => locales[lang][key];
38
+ const handleBack = () => history.back();
39
+ const _extra = extra || (
40
+ <Button size="small" icon={<ArrowLeftOutlined />} onClick={handleBack}>
41
+ {t('back')}
42
+ </Button>
43
+ );
44
+ const _children = children || (
45
+ <Space>
46
+ <Button htmlType="submit" type="primary" icon={<SaveOutlined />}>
47
+ {t('submit')}
48
+ </Button>
49
+ <Button icon={<ArrowLeftOutlined />} onClick={handleBack}>
50
+ {t('back')}
51
+ </Button>
52
+ </Space>
53
+ );
54
+
55
+ return (
56
+ <Card
57
+ title={title}
58
+ size={size}
59
+ loading={loading}
60
+ data-component={CLASS_NAME}
61
+ className={cx(CLASS_NAME, className)}
62
+ extra={_extra}>
63
+ <ReactAntdFormSchema meta={meta} {...rest}>
64
+ {_children}
65
+ </ReactAntdFormSchema>
66
+ </Card>
67
+ );
68
+ };
69
+
70
+ export default ReactAntResourceForm;
package/src/main.tsx ADDED
@@ -0,0 +1,7 @@
1
+ import ReactAntResourceForm from '.';
2
+ import ReactAntResourceFormApi from './api';
3
+ import type { ReactAntResourceFormProps } from '.';
4
+ import type { ReactAntResourceFormApiProps } from './api';
5
+
6
+ export { ReactAntResourceForm, ReactAntResourceFormApi };
7
+ export type { ReactAntResourceFormProps, ReactAntResourceFormApiProps };
package/src/style.scss ADDED
@@ -0,0 +1,3 @@
1
+ //.react-ant-resource-form {
2
+ // color: red;
3
+ //}