@kingteza/crud-component 1.0.64 → 1.0.66

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/App.d.ts CHANGED
@@ -23,3 +23,129 @@ export type Purchase = {
23
23
  };
24
24
  declare function App(): import("react/jsx-runtime").JSX.Element;
25
25
  export default App;
26
+ export declare const useWorkShiftCrudComponentProps: () => {
27
+ onCreate: (e: any) => Promise<void>;
28
+ onUpdate: (e: any) => Promise<void>;
29
+ onDelete: (e: any) => Promise<void>;
30
+ isCreating: boolean;
31
+ isUpdating: boolean;
32
+ isDeleting: boolean;
33
+ fields: ({
34
+ grid: {
35
+ md: number;
36
+ xs: number;
37
+ };
38
+ name: string;
39
+ label: string;
40
+ type: string;
41
+ required: boolean;
42
+ hideInTable?: undefined;
43
+ format?: undefined;
44
+ use12Hours?: undefined;
45
+ readonly?: undefined;
46
+ int?: undefined;
47
+ max?: undefined;
48
+ } | {
49
+ grid: {
50
+ md: number;
51
+ xs: number;
52
+ };
53
+ name: string;
54
+ label: string;
55
+ type: string;
56
+ hideInTable: boolean;
57
+ required?: undefined;
58
+ format?: undefined;
59
+ use12Hours?: undefined;
60
+ readonly?: undefined;
61
+ int?: undefined;
62
+ max?: undefined;
63
+ } | {
64
+ grid: {
65
+ md: number;
66
+ xs: number;
67
+ };
68
+ name: string;
69
+ label: string;
70
+ type: string;
71
+ format: string;
72
+ use12Hours: boolean;
73
+ required: boolean;
74
+ hideInTable?: undefined;
75
+ readonly?: undefined;
76
+ int?: undefined;
77
+ max?: undefined;
78
+ } | {
79
+ grid: {
80
+ md: number;
81
+ xs: number;
82
+ };
83
+ name: string;
84
+ label: string;
85
+ type: string;
86
+ format: string;
87
+ use12Hours: boolean;
88
+ readonly: boolean;
89
+ required?: undefined;
90
+ hideInTable?: undefined;
91
+ int?: undefined;
92
+ max?: undefined;
93
+ } | {
94
+ grid: {
95
+ md: number;
96
+ xs: number;
97
+ };
98
+ name: string;
99
+ label: string;
100
+ type: string;
101
+ int: boolean;
102
+ required: boolean;
103
+ hideInTable: boolean;
104
+ format?: undefined;
105
+ use12Hours?: undefined;
106
+ readonly?: undefined;
107
+ max?: undefined;
108
+ } | {
109
+ grid: {
110
+ md: number;
111
+ xs: number;
112
+ };
113
+ name: string;
114
+ label: string;
115
+ type: string;
116
+ int: boolean;
117
+ required: boolean;
118
+ hideInTable: boolean;
119
+ max: number;
120
+ format?: undefined;
121
+ use12Hours?: undefined;
122
+ readonly?: undefined;
123
+ } | {
124
+ name: string;
125
+ label: string;
126
+ type: string;
127
+ int: boolean;
128
+ required: boolean;
129
+ grid?: undefined;
130
+ hideInTable?: undefined;
131
+ format?: undefined;
132
+ use12Hours?: undefined;
133
+ readonly?: undefined;
134
+ max?: undefined;
135
+ } | {
136
+ grid: {
137
+ md: number;
138
+ xs: number;
139
+ };
140
+ name: string;
141
+ label: string;
142
+ type: string;
143
+ int: boolean;
144
+ required: boolean;
145
+ hideInTable?: undefined;
146
+ format?: undefined;
147
+ use12Hours?: undefined;
148
+ readonly?: undefined;
149
+ max?: undefined;
150
+ })[];
151
+ };
@@ -1 +1 @@
1
- "use strict";const t=require("react/jsx-runtime"),y=require("antd"),ce=require("dayjs"),n=require("react"),re=require("./CrudForm.cjs.js"),ue=require("./CrudFormWizard.cjs.js"),de=require("./import/CrudImportButton.cjs.js"),fe=require("./view/CrudViewer.cjs.js"),pe=require("../common/button/NewButton.cjs.js"),me=require("../common/button/PrintButton.cjs.js"),Fe=require("../locale/index.cjs.js"),M=require("../util/CrudUtil.cjs.js"),{useForm:ye}=y.Form;function ge({idField:g="id",onCreate:v,onDelete:T,onHide:W,onUpdate:p,fields:i,data:_,grid:A,isHiding:E,isCreating:q,isDeleting:H,isUpdating:N,paginateProps:L,onPrint:V,printing:G,viewable:J,loadingData:K,formBuilder:Q,extraAction:X,minusHeight:Y,cloneable:Z,fullWidthModal:$=!0,wizard:c,extraView:z,importable:P,onClickNew:O,size:ee,...te}){const{t:j}=Fe.useTranslationLib(),[k,x]=n.useState(!1),[m,B]=n.useState(),[se,b]=n.useState(),[r]=ye(),R=n.useCallback(async s=>{const d=c?s:await r.validateFields(),u=i.filter(o=>o.type==="color"),a={};u.forEach(o=>{var f;const l=M.getRealName(o.name,"upsertFieldName"),e=r.getFieldValue(l);a[l]=typeof e=="string"?e:(f=e==null?void 0:e.toHexString())==null?void 0:f.toUpperCase()}),Object.assign(d,a),m&&p?(await p({...d,[g]:m[g]}),B(void 0)):!m&&v&&await v(d),b(void 0),r.resetFields(),x(!1)},[i,r,g,v,p,m,c]),[ne,U]=n.useState(!1),[oe,h]=n.useState(!1);n.useEffect(()=>{k?(U(!1),h(!1)):C(void 0)},[k]);const w=n.useCallback(async s=>{U(s),h(!0)},[]),D=n.useCallback(async()=>{h(!0)},[]),[ae,I]=n.useState(!1),S=n.useCallback(async(s,d=!0,u=!1)=>{try{I(!0),x(!0),d&&C("update");const a={};for(const o of i){const l=M.getRealName(o.name,"upsertFieldName"),e=s[l];if(u&&o.type==="image"){const f=e;try{const ie=await o.provider.clone(f);a[l]=ie;continue}catch{continue}}o.type==="date"?e&&(a[l]=ce(e)):o.type==="select"?o.multiple&&Array.isArray(e)?a[l]=e.map(f=>f[o.innerFieldId??"id"]):e&&typeof e=="object"?a[l]=e[o.innerFieldId??"id"]:(e&&typeof e=="string"||typeof e=="number")&&(a[l]=e):a[l]=e}r.setFieldsValue(a),b(a),d&&B(s)}finally{I(!1)}},[i,r]),[F,C]=n.useState(),le=n.useCallback(async s=>{C("clone"),S(s,!1,!0)},[S]);return t.jsxs(t.Fragment,{children:[t.jsxs(y.Space,{direction:"vertical",className:"w-100",children:[t.jsxs("div",{className:"w-100 d-flex",children:[t.jsx("div",{style:{flex:1},children:t.jsx(pe.NewButton,{onClick:()=>{O?O():(x(s=>!s),C("new"))},className:"flex-1"})}),t.jsxs(y.Space,{children:[!!V&&t.jsx(me.PrintButton,{className:"float-right",loading:G,onClick:V}),!!P&&t.jsx(de,{fields:i,importProps:P})]})]}),t.jsx(fe,{...te,minusHeight:Y,data:_,size:ee,fields:i,extraAction:X,idField:g,isDeleting:H,loadingData:K,onClickUpdate:p?S:void 0,onHide:W,isHiding:E,onDelete:T,onUpdate:p,onClickClone:Z?le:void 0,paginateProps:L,viewable:J,extraView:z})]}),t.jsx(y.Modal,{width:$?"100%":void 0,title:j(F??"new"),open:k,confirmLoading:q||N,okText:j("str."+(F==="update"?"update":"save")),cancelText:j("str.cancel"),cancelButtonProps:{disabled:oe,hidden:!!c},okButtonProps:{disabled:ne,hidden:!!c},onCancel:async()=>{try{if(F==="clone"){const s=c?m:r.getFieldsValue(),d=i.filter(u=>u.type==="image");for(const u of d)s[u.name]&&u.provider.delete(s[u.name])}}finally{}c||r.resetFields(),b(void 0),B(void 0),x(!1)},onOk:()=>R(),destroyOnHidden:!0,children:t.jsxs(y.Spin,{spinning:ae,children:[!c&&t.jsx(re.CrudForm,{purpose:F,fields:i,form:r,formBuilder:Q,grid:A,onDeleteFile:D,onUploadFile:w}),c&&t.jsx(ue,{submitting:q||N,className:"mt-2",onSave:R,updatingValue:se,fields:i,onDeleteFile:D,onUploadFile:w,purpose:F,wizard:c})]})})]})}module.exports=ge;
1
+ "use strict";const e=require("react/jsx-runtime"),l=require("antd"),t=require("react"),H=require("./modal/index.cjs.js"),J=require("./import/CrudImportButton.cjs.js"),K=require("./view/CrudViewer.cjs.js"),L=require("../common/button/NewButton.cjs.js"),M=require("../common/button/PrintButton.cjs.js"),{useForm:Q}=l.Form;function O({idField:a="id",onCreate:C,onDelete:j,onHide:m,onUpdate:n,fields:r,data:f,grid:k,isHiding:q,isCreating:h,isDeleting:p,isUpdating:B,paginateProps:w,onPrint:i,printing:N,viewable:v,loadingData:R,formBuilder:g,extraAction:y,minusHeight:b,cloneable:F,fullWidthModal:P=!0,wizard:S,extraView:I,importable:u,onClickNew:d,size:V,...z}){const c=t.useRef(null),A=t.useCallback(()=>{var s;(s=c.current)==null||s.create()},[]),o=t.useCallback(async(s,E=!0,G=!1)=>{var x;await((x=c.current)==null?void 0:x.update(s,E,G))},[]),D=t.useCallback(async s=>{o(s,!1,!0)},[o]);return e.jsxs(e.Fragment,{children:[e.jsxs(l.Space,{direction:"vertical",className:"w-100",children:[e.jsxs("div",{className:"w-100 d-flex",children:[e.jsx("div",{style:{flex:1},children:e.jsx(L.NewButton,{onClick:()=>{d?d():A()},className:"flex-1"})}),e.jsxs(l.Space,{children:[!!i&&e.jsx(M.PrintButton,{className:"float-right",loading:N,onClick:i}),!!u&&e.jsx(J,{fields:r,importProps:u})]})]}),e.jsx(K,{...z,minusHeight:b,data:f,size:V,fields:r,extraAction:y,idField:a,isDeleting:p,loadingData:R,onClickUpdate:n?o:void 0,onHide:m,isHiding:q,onDelete:j,onUpdate:n,onClickClone:F?D:void 0,paginateProps:w,viewable:v,extraView:I})]}),e.jsx(H,{ref:c,fields:r,wizard:S,grid:k,fullWidthModal:P,isCreating:h,isUpdating:B,onCreate:C,onUpdate:n,idField:a,formBuilder:g})]})}module.exports=O;
@@ -1,212 +1,123 @@
1
- import { jsxs as F, Fragment as de, jsx as d } from "react/jsx-runtime";
2
- import { Form as me, Space as w, Modal as ue, Spin as fe } from "antd";
3
- import pe from "dayjs";
4
- import { useState as m, useCallback as g, useEffect as ye } from "react";
5
- import { CrudForm as Fe } from "./CrudForm.es.js";
6
- import ge from "./CrudFormWizard.es.js";
7
- import ve from "./import/CrudImportButton.es.js";
8
- import Ce from "./view/CrudViewer.es.js";
9
- import { NewButton as Be } from "../common/button/NewButton.es.js";
10
- import { PrintButton as he } from "../common/button/PrintButton.es.js";
11
- import { useTranslationLib as ke } from "../locale/index.es.js";
12
- import A from "../util/CrudUtil.es.js";
13
- const { useForm: be } = me;
14
- function We({
15
- idField: v = "id",
16
- onCreate: h,
17
- onDelete: E,
18
- onHide: H,
19
- onUpdate: f,
20
- fields: i,
21
- data: L,
22
- grid: R,
23
- isHiding: q,
24
- isCreating: P,
25
- isDeleting: G,
26
- isUpdating: j,
27
- paginateProps: J,
28
- onPrint: O,
29
- printing: K,
30
- viewable: Q,
31
- loadingData: X,
32
- formBuilder: Y,
33
- extraAction: Z,
34
- minusHeight: $,
35
- cloneable: z,
36
- fullWidthModal: ee = !0,
37
- wizard: s,
38
- extraView: te,
39
- importable: U,
40
- onClickNew: D,
41
- size: oe,
42
- ...ne
1
+ import { jsxs as e, Fragment as H, jsx as r } from "react/jsx-runtime";
2
+ import { Space as f, Form as J } from "antd";
3
+ import { useRef as K, useCallback as c } from "react";
4
+ import L from "./modal/index.es.js";
5
+ import O from "./import/CrudImportButton.es.js";
6
+ import Q from "./view/CrudViewer.es.js";
7
+ import { NewButton as T } from "../common/button/NewButton.es.js";
8
+ import { PrintButton as U } from "../common/button/PrintButton.es.js";
9
+ const { useForm: eo } = J;
10
+ function to({
11
+ idField: i = "id",
12
+ onCreate: p,
13
+ onDelete: C,
14
+ onHide: h,
15
+ onUpdate: t,
16
+ fields: n,
17
+ data: k,
18
+ grid: x,
19
+ isHiding: v,
20
+ isCreating: w,
21
+ isDeleting: B,
22
+ isUpdating: N,
23
+ paginateProps: g,
24
+ onPrint: m,
25
+ printing: y,
26
+ viewable: j,
27
+ loadingData: F,
28
+ formBuilder: R,
29
+ extraAction: I,
30
+ minusHeight: M,
31
+ cloneable: P,
32
+ fullWidthModal: S = !0,
33
+ wizard: V,
34
+ extraView: b,
35
+ importable: s,
36
+ onClickNew: u,
37
+ size: q,
38
+ ...z
43
39
  }) {
44
- const { t: k } = ke(), [b, C] = m(!1), [p, N] = m(), [le, x] = m(), [a] = be(), I = g(
45
- async (t) => {
46
- const c = s ? t : await a.validateFields(), r = i.filter((o) => o.type === "color"), n = {};
47
- r.forEach((o) => {
48
- var u;
49
- const l = A.getRealName(o.name, "upsertFieldName"), e = a.getFieldValue(l);
50
- n[l] = typeof e == "string" ? e : (u = e == null ? void 0 : e.toHexString()) == null ? void 0 : u.toUpperCase();
51
- }), Object.assign(c, n), p && f ? (await f({
52
- ...c,
53
- [v]: p[v]
54
- }), N(void 0)) : !p && h && await h(c), x(void 0), a.resetFields(), C(!1);
40
+ const l = K(null), A = c(() => {
41
+ var o;
42
+ (o = l.current) == null || o.create();
43
+ }, []), a = c(
44
+ async (o, E = !0, G = !1) => {
45
+ var d;
46
+ await ((d = l.current) == null ? void 0 : d.update(o, E, G));
55
47
  },
56
- [i, a, v, h, f, p, s]
57
- ), [ie, M] = m(!1), [se, V] = m(!1);
58
- ye(() => {
59
- b ? (M(!1), V(!1)) : B(void 0);
60
- }, [b]);
61
- const T = g(async (t) => {
62
- M(t), V(!0);
63
- }, []), W = g(async () => {
64
- V(!0);
65
- }, []), [ae, _] = m(!1), S = g(
66
- async (t, c = !0, r = !1) => {
67
- try {
68
- _(!0), C(!0), c && B("update");
69
- const n = {};
70
- for (const o of i) {
71
- const l = A.getRealName(o.name, "upsertFieldName"), e = t[l];
72
- if (r && o.type === "image") {
73
- const u = e;
74
- try {
75
- const ce = await o.provider.clone(u);
76
- n[l] = ce;
77
- continue;
78
- } catch {
79
- continue;
80
- }
81
- }
82
- o.type === "date" ? e && (n[l] = pe(e)) : o.type === "select" ? o.multiple && Array.isArray(e) ? n[l] = e.map(
83
- (u) => u[o.innerFieldId ?? "id"]
84
- ) : e && typeof e == "object" ? n[l] = e[o.innerFieldId ?? "id"] : (e && typeof e == "string" || typeof e == "number") && (n[l] = e) : n[l] = e;
85
- }
86
- a.setFieldsValue(n), x(n), c && N(t);
87
- } finally {
88
- _(!1);
89
- }
48
+ []
49
+ ), D = c(
50
+ async (o) => {
51
+ a(o, !1, !0);
90
52
  },
91
- [i, a]
92
- ), [y, B] = m(), re = g(
93
- async (t) => {
94
- B("clone"), S(t, !1, !0);
95
- },
96
- [S]
53
+ [a]
97
54
  );
98
- return /* @__PURE__ */ F(de, { children: [
99
- /* @__PURE__ */ F(w, { direction: "vertical", className: "w-100", children: [
100
- /* @__PURE__ */ F("div", { className: "w-100 d-flex", children: [
101
- /* @__PURE__ */ d("div", { style: { flex: 1 }, children: /* @__PURE__ */ d(
102
- Be,
55
+ return /* @__PURE__ */ e(H, { children: [
56
+ /* @__PURE__ */ e(f, { direction: "vertical", className: "w-100", children: [
57
+ /* @__PURE__ */ e("div", { className: "w-100 d-flex", children: [
58
+ /* @__PURE__ */ r("div", { style: { flex: 1 }, children: /* @__PURE__ */ r(
59
+ T,
103
60
  {
104
61
  onClick: () => {
105
- D ? D() : (C((t) => !t), B("new"));
62
+ u ? u() : A();
106
63
  },
107
64
  className: "flex-1"
108
65
  }
109
66
  ) }),
110
- /* @__PURE__ */ F(w, { children: [
111
- !!O && /* @__PURE__ */ d(
112
- he,
67
+ /* @__PURE__ */ e(f, { children: [
68
+ !!m && /* @__PURE__ */ r(
69
+ U,
113
70
  {
114
71
  className: "float-right",
115
- loading: K,
116
- onClick: O
72
+ loading: y,
73
+ onClick: m
117
74
  }
118
75
  ),
119
- !!U && /* @__PURE__ */ d(ve, { fields: i, importProps: U })
76
+ !!s && /* @__PURE__ */ r(O, { fields: n, importProps: s })
120
77
  ] })
121
78
  ] }),
122
- /* @__PURE__ */ d(
123
- Ce,
79
+ /* @__PURE__ */ r(
80
+ Q,
124
81
  {
125
- ...ne,
126
- minusHeight: $,
127
- data: L,
128
- size: oe,
129
- fields: i,
130
- extraAction: Z,
131
- idField: v,
132
- isDeleting: G,
133
- loadingData: X,
134
- onClickUpdate: f ? S : void 0,
135
- onHide: H,
136
- isHiding: q,
137
- onDelete: E,
138
- onUpdate: f,
139
- onClickClone: z ? re : void 0,
140
- paginateProps: J,
141
- viewable: Q,
142
- extraView: te
82
+ ...z,
83
+ minusHeight: M,
84
+ data: k,
85
+ size: q,
86
+ fields: n,
87
+ extraAction: I,
88
+ idField: i,
89
+ isDeleting: B,
90
+ loadingData: F,
91
+ onClickUpdate: t ? a : void 0,
92
+ onHide: h,
93
+ isHiding: v,
94
+ onDelete: C,
95
+ onUpdate: t,
96
+ onClickClone: P ? D : void 0,
97
+ paginateProps: g,
98
+ viewable: j,
99
+ extraView: b
143
100
  }
144
101
  )
145
102
  ] }),
146
- /* @__PURE__ */ d(
147
- ue,
103
+ /* @__PURE__ */ r(
104
+ L,
148
105
  {
149
- width: ee ? "100%" : void 0,
150
- title: k(y ?? "new"),
151
- open: b,
152
- confirmLoading: P || j,
153
- okText: k("str." + (y === "update" ? "update" : "save")),
154
- cancelText: k("str.cancel"),
155
- cancelButtonProps: {
156
- disabled: se,
157
- hidden: !!s
158
- },
159
- okButtonProps: {
160
- disabled: ie,
161
- hidden: !!s
162
- },
163
- onCancel: async () => {
164
- try {
165
- if (y === "clone") {
166
- const t = s ? p : a.getFieldsValue(), c = i.filter((r) => r.type === "image");
167
- for (const r of c)
168
- t[r.name] && r.provider.delete(
169
- t[r.name]
170
- );
171
- }
172
- } finally {
173
- }
174
- s || a.resetFields(), x(void 0), N(void 0), C(!1);
175
- },
176
- onOk: () => I(),
177
- destroyOnHidden: !0,
178
- children: /* @__PURE__ */ F(fe, { spinning: ae, children: [
179
- !s && /* @__PURE__ */ d(
180
- Fe,
181
- {
182
- purpose: y,
183
- fields: i,
184
- form: a,
185
- formBuilder: Y,
186
- grid: R,
187
- onDeleteFile: W,
188
- onUploadFile: T
189
- }
190
- ),
191
- s && /* @__PURE__ */ d(
192
- ge,
193
- {
194
- submitting: P || j,
195
- className: "mt-2",
196
- onSave: I,
197
- updatingValue: le,
198
- fields: i,
199
- onDeleteFile: W,
200
- onUploadFile: T,
201
- purpose: y,
202
- wizard: s
203
- }
204
- )
205
- ] })
106
+ ref: l,
107
+ fields: n,
108
+ wizard: V,
109
+ grid: x,
110
+ fullWidthModal: S,
111
+ isCreating: w,
112
+ isUpdating: N,
113
+ onCreate: p,
114
+ onUpdate: t,
115
+ idField: i,
116
+ formBuilder: R
206
117
  }
207
118
  )
208
119
  ] });
209
120
  }
210
121
  export {
211
- We as default
122
+ to as default
212
123
  };
@@ -0,0 +1 @@
1
+ "use strict";const v=require("react/jsx-runtime"),Y=require("react"),A=require("../../common/button/CloneButtonTable.cjs.js"),H=require("../../common/button/DeleteButtonTable.cjs.js"),V=require("../../common/button/ExportButton.cjs.js"),s=require("../../common/button/HideButtonTable.cjs.js"),c=require("../../common/button/UpdateButtonTable.cjs.js"),r=require("../modal/index.cjs.js");function F({data:b,idField:j="id",extraAction:T,onUpdate:g,onClickUpdate:m,onClickClone:x,onDelete:h,onHide:z,onExport:E,isHiding:J,isDeleting:K,confirmHiding:Z,confirmDeleting:_,closeViewOnClickUpdate:$,recentUpdateOrDeleteId:L,setRecentUpdateOrDeleteId:q,setOpenView:G,inBuiltModalProps:f}){var S;const y=T==null?void 0:T(b),N=Y.useRef(null),Q=Y.useCallback((u,w=!0,W=!1)=>{var X;q==null||q(u[j]),f?(X=N.current)==null||X.update(u,w,W):W?x==null||x(u):m==null||m(u),$&&(G==null||G(void 0))},[f,m]);return console.log({onUpdate:g,onClickUpdate:m,onClickClone:x,onDelete:h}),(Array.isArray(y)?(S=y==null?void 0:y.filter(Boolean))!=null&&S.length:y)||g||m||f!=null&&f.onUpdate||x||f!=null&&f.onCreate||h||E||z?v.jsxs(v.Fragment,{children:[f&&v.jsx(r,{ref:N,...f}),y,(g||m||(f==null?void 0:f.onUpdate))&&v.jsx(c,{value:b,onClick:u=>Q(u)}),(x||(f==null?void 0:f.onCreate))&&v.jsx(A,{value:b,onClick:u=>Q(u,!1,!0)}),E&&v.jsx(V.ExportButton,{value:b,onClick:async u=>await E(u)}),z&&v.jsx(s,{value:b,disabled:J,shouldConfirm:Z,loading:J&&b[j]===L,onClick:async u=>{q==null||q(u[j]),await z({[j]:u[j]})}}),h&&v.jsx(H,{value:b,disabled:K,shouldConfirm:_,loading:K&&b[j]===L,onClick:async u=>{q==null||q(u[j]),await h({[j]:u[j]})}})]}):void 0}module.exports=F;
@@ -0,0 +1,26 @@
1
+ import { ReactElement } from 'react';
2
+ import { default as IdProps } from '../../types/Id';
3
+ import { CrudModalProps } from '../modal';
4
+ export interface CrudActionsProps<T, FormType> {
5
+ idField?: string;
6
+ extraAction?: (t: T) => ReactElement | undefined | ReactElement[];
7
+ onUpdate?: (t: FormType & IdProps) => Promise<any>;
8
+ onClickUpdate?: (t: T) => void;
9
+ onClickClone?: (t: T) => Promise<any>;
10
+ onDelete?: (id: any) => Promise<any>;
11
+ onHide?: (id: any) => Promise<any>;
12
+ onExport?: (t: T) => Promise<any>;
13
+ isHiding?: boolean;
14
+ isDeleting?: boolean;
15
+ confirmHiding?: boolean;
16
+ confirmDeleting?: boolean;
17
+ closeViewOnClickUpdate?: boolean;
18
+ recentUpdateOrDeleteId?: string;
19
+ setRecentUpdateOrDeleteId?: (id: string) => void;
20
+ setOpenView?: (data: T | undefined) => void;
21
+ inBuiltModalProps?: CrudModalProps<T, FormType>;
22
+ }
23
+ declare function CrudActions<T, FormType>({ data, idField, extraAction, onUpdate, onClickUpdate, onClickClone, onDelete, onHide, onExport, isHiding, isDeleting, confirmHiding, confirmDeleting, closeViewOnClickUpdate, recentUpdateOrDeleteId, setRecentUpdateOrDeleteId, setOpenView, inBuiltModalProps, }: CrudActionsProps<T, FormType> & {
24
+ data: T;
25
+ }): import("react/jsx-runtime").JSX.Element | undefined;
26
+ export default CrudActions;
@@ -0,0 +1,88 @@
1
+ import { jsxs as E, Fragment as H, jsx as j } from "react/jsx-runtime";
2
+ import { useRef as x, useCallback as V } from "react";
3
+ import F from "../../common/button/CloneButtonTable.es.js";
4
+ import k from "../../common/button/DeleteButtonTable.es.js";
5
+ import { ExportButton as r } from "../../common/button/ExportButton.es.js";
6
+ import C from "../../common/button/HideButtonTable.es.js";
7
+ import R from "../../common/button/UpdateButtonTable.es.js";
8
+ import I from "../modal/index.es.js";
9
+ function a({
10
+ data: y,
11
+ idField: b = "id",
12
+ extraAction: q,
13
+ onUpdate: z,
14
+ onClickUpdate: h,
15
+ onClickClone: T,
16
+ onDelete: u,
17
+ onHide: G,
18
+ onExport: J,
19
+ isHiding: L,
20
+ isDeleting: N,
21
+ confirmHiding: _,
22
+ confirmDeleting: $,
23
+ closeViewOnClickUpdate: w,
24
+ recentUpdateOrDeleteId: Q,
25
+ setRecentUpdateOrDeleteId: v,
26
+ setOpenView: K,
27
+ inBuiltModalProps: f
28
+ }) {
29
+ var X;
30
+ const g = q == null ? void 0 : q(y), S = x(null), W = V(
31
+ (m, A = !0, Y = !1) => {
32
+ var Z;
33
+ v == null || v(m[b]), f ? (Z = S.current) == null || Z.update(m, A, Y) : Y ? T == null || T(m) : h == null || h(m), w && (K == null || K(void 0));
34
+ },
35
+ [f, h]
36
+ );
37
+ return console.log({
38
+ onUpdate: z,
39
+ onClickUpdate: h,
40
+ onClickClone: T,
41
+ onDelete: u
42
+ }), (Array.isArray(g) ? (X = g == null ? void 0 : g.filter(Boolean)) != null && X.length : g) || z || h || f != null && f.onUpdate || T || f != null && f.onCreate || u || J || G ? /* @__PURE__ */ E(H, { children: [
43
+ f && /* @__PURE__ */ j(I, { ref: S, ...f }),
44
+ g,
45
+ (z || h || (f == null ? void 0 : f.onUpdate)) && /* @__PURE__ */ j(R, { value: y, onClick: (m) => W(m) }),
46
+ (T || (f == null ? void 0 : f.onCreate)) && /* @__PURE__ */ j(
47
+ F,
48
+ {
49
+ value: y,
50
+ onClick: (m) => W(m, !1, !0)
51
+ }
52
+ ),
53
+ J && /* @__PURE__ */ j(
54
+ r,
55
+ {
56
+ value: y,
57
+ onClick: async (m) => await J(m)
58
+ }
59
+ ),
60
+ G && /* @__PURE__ */ j(
61
+ C,
62
+ {
63
+ value: y,
64
+ disabled: L,
65
+ shouldConfirm: _,
66
+ loading: L && y[b] === Q,
67
+ onClick: async (m) => {
68
+ v == null || v(m[b]), await G({ [b]: m[b] });
69
+ }
70
+ }
71
+ ),
72
+ u && /* @__PURE__ */ j(
73
+ k,
74
+ {
75
+ value: y,
76
+ disabled: N,
77
+ shouldConfirm: $,
78
+ loading: N && y[b] === Q,
79
+ onClick: async (m) => {
80
+ v == null || v(m[b]), await u({ [b]: m[b] });
81
+ }
82
+ }
83
+ )
84
+ ] }) : void 0;
85
+ }
86
+ export {
87
+ a as default
88
+ };
package/crud/index.d.ts CHANGED
@@ -16,4 +16,8 @@ export type { FileCrudField as FileCrudFieldProps } from './FileCrudField';
16
16
  export { default as CrudImportComponent } from './import/CrudImportComponent';
17
17
  export type { CrudImportComponentProps, CrudImportProps, } from './import/CrudImportComponent';
18
18
  export { default as CrudImportButton } from './import/CrudImportButton';
19
+ export { default as CrudActions } from './actions';
20
+ export type { CrudActionsProps } from './actions';
21
+ export { default as CrudModal } from './modal';
22
+ export type { CrudModalProps, CrudModalRef } from './modal';
19
23
  export * from './view';
@@ -0,0 +1 @@
1
+ "use strict";const g=require("react/jsx-runtime"),B=require("antd"),t=require("react"),G=require("../CrudForm.cjs.js"),J=require("../CrudFormWizard.cjs.js"),K=require("../../locale/index.cjs.js"),H=require("../../util/CrudUtil.cjs.js"),Q=require("dayjs"),X=({fields:u,wizard:l,grid:I,fullWidthModal:M,isCreating:h,isUpdating:j,onCreate:b,onUpdate:v,idField:k="id",formBuilder:T},W)=>{const[s]=B.Form.useForm(),{t:C}=K.useTranslationLib(),[S,m]=t.useState(!1),[p,q]=t.useState("new"),[f,F]=t.useState(),[_,y]=t.useState(),[A,N]=t.useState(!1),[L,x]=t.useState(!1),[E,V]=t.useState(!1),P=t.useCallback(async c=>{var n;const d=l?c:await s.validateFields(),i=u.filter(a=>a.type==="color"),o={};for(const a of i){const e=H.getRealName(a.name,"upsertFieldName"),r=s.getFieldValue(e);o[e]=typeof r=="string"?r:(n=r==null?void 0:r.toHexString())==null?void 0:n.toUpperCase()}Object.assign(d,o),f&&v?(await v({...d,[k]:f[k]}),F(void 0)):!f&&b&&await b(d),y(void 0),s.resetFields(),m(!1)},[u,s,k,b,v,f,l]),R=t.useCallback(async c=>{N(c),x(!0)},[]),U=t.useCallback(async()=>{x(!0)},[]),O=t.useCallback(()=>{m(!0),q("new"),s.resetFields(),F(void 0),y(void 0)},[s]),D=t.useCallback(async(c,d=!0,i=!1)=>{try{V(!0),m(!0),q(i?"clone":"update");const o={};for(const n of u){const a=H.getRealName(n.name,"upsertFieldName"),e=c[a];if(i&&n.type==="image"){const r=e;try{const w=await n.provider.clone(r);o[a]=w;continue}catch{continue}}n.type==="date"||n.type==="time"?e&&(o[a]=Q(e)):n.type==="select"?n.multiple&&Array.isArray(e)?o[a]=e.map(r=>r[n.innerFieldId??"id"]):e&&typeof e=="object"?o[a]=e[n.innerFieldId??"id"]:(e&&typeof e=="string"||typeof e=="number")&&(o[a]=e):o[a]=e}s.setFieldsValue(o),y(o),d&&F(c)}finally{V(!1)}},[u,s]);t.useImperativeHandle(W,()=>({create:O,update:D}),[O,D]),t.useEffect(()=>{S&&(N(!1),x(!1))},[S]);const $=t.useCallback(async()=>{try{if(p==="clone"){const c=l?f:s.getFieldsValue(),d=u.filter(i=>i.type==="image");for(const i of d)c[i.name]&&i.provider.delete(c[i.name])}}finally{}l||s.resetFields(),y(void 0),F(void 0),m(!1)},[p,l,s,f,u]);return g.jsx(B.Modal,{width:M?"100%":void 0,title:C(p??"new"),open:S,confirmLoading:h||j,okText:C("str."+(p==="update"?"update":"save")),cancelText:C("str.cancel"),cancelButtonProps:{disabled:L,hidden:!!l},okButtonProps:{disabled:A,hidden:!!l},onCancel:$,onOk:()=>P(),destroyOnHidden:!0,children:g.jsxs(B.Spin,{spinning:E,children:[l?null:g.jsx(G.CrudForm,{purpose:p,fields:u,form:s,formBuilder:T,grid:I,onDeleteFile:U,onUploadFile:R}),l&&g.jsx(J,{submitting:h||j,className:"mt-2",onSave:P,updatingValue:_,fields:u,onDeleteFile:U,onUploadFile:R,purpose:p,wizard:l})]})})},Y=t.forwardRef(X);module.exports=Y;
@@ -0,0 +1,24 @@
1
+ import { Ref } from 'react';
2
+ import { CrudFieldProps, CrudWizardProp, FormBuilderFunc } from '../CrudComponent';
3
+ import { default as IdProps } from '../../types/Id';
4
+ export interface CrudModalProps<T, FormType> {
5
+ fields: CrudFieldProps<T>[];
6
+ wizard?: CrudWizardProp<T>[];
7
+ grid?: boolean;
8
+ fullWidthModal?: boolean;
9
+ isCreating?: boolean;
10
+ isUpdating?: boolean;
11
+ onCreate?: (data: FormType) => Promise<any>;
12
+ onUpdate?: (data: FormType & IdProps) => Promise<any>;
13
+ idField?: string;
14
+ formBuilder?: FormBuilderFunc<T>;
15
+ }
16
+ export interface CrudModalRef<T> {
17
+ create: () => void;
18
+ update: (data: T, shouldSetUpdatingField?: boolean, isClone?: boolean) => Promise<void>;
19
+ }
20
+ declare const CrudModal: <T, FormType = T>({ fields, wizard, grid, fullWidthModal, isCreating, isUpdating, onCreate, onUpdate, idField, formBuilder, }: CrudModalProps<T, FormType>, ref: Ref<CrudModalRef<T>>) => import("react/jsx-runtime").JSX.Element;
21
+ declare const _default: <T, FormType = T>(props: CrudModalProps<T, FormType> & {
22
+ ref?: Ref<CrudModalRef<T>>;
23
+ }) => ReturnType<typeof CrudModal>;
24
+ export default _default;