antd-crud-table 0.4.0 → 0.7.0
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 +293 -783
- package/dist/CrudTable-Btf58zof.js +610 -0
- package/dist/CrudTable-DRN70sET.cjs +1 -0
- package/dist/CrudTable.cjs +1 -1
- package/dist/CrudTable.d.ts +85 -18
- package/dist/CrudTable.js +3 -306
- package/dist/CrudTableLazy.cjs +1 -1
- package/dist/CrudTableLazy.d.ts +4 -3
- package/dist/CrudTableLazy.js +8 -7
- package/dist/core/CustomDataSource.d.ts +35 -0
- package/dist/core/InMemoryDataSource.d.ts +30 -0
- package/dist/core/LocalStorageDataSource.d.ts +30 -0
- package/dist/core/RestDataSource.d.ts +120 -0
- package/dist/core/StaticDataSource.d.ts +20 -0
- package/dist/core/identity.d.ts +28 -0
- package/dist/core/inMemoryQuery.d.ts +26 -0
- package/dist/core/index.d.ts +11 -0
- package/dist/core/types.d.ts +86 -0
- package/dist/en_US-D3Kl6g3n.cjs +1 -0
- package/dist/en_US-DGCMDOdX.js +41 -0
- package/dist/exportData.cjs +13 -13
- package/dist/exportData.js +48 -39
- package/dist/fields/registry.d.ts +38 -0
- package/dist/fields/types.d.ts +29 -0
- package/dist/hooks/useCrudTable.d.ts +114 -57
- package/dist/hooks/useLocalStorageCrud.d.ts +14 -9
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +14 -6
- package/dist/index.js +7 -0
- package/dist/locale/en_US.d.ts +10 -0
- package/dist/locale/index.d.ts +4 -0
- package/dist/locale/types.d.ts +89 -0
- package/dist/locale/useResolvedLocale.d.ts +35 -0
- package/dist/useCrudTable-40jpmCkr.cjs +1 -0
- package/dist/useCrudTable-DxjnXVlQ.js +460 -0
- package/dist/useCrudTable.cjs +1 -1
- package/dist/useCrudTable.js +2 -235
- package/dist/useLocalStorageCrud.cjs +1 -1
- package/dist/useLocalStorageCrud.js +12 -198
- package/dist/utils/exportData.d.ts +37 -12
- package/package.json +52 -16
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
import { n as e, t } from "./useCrudTable-DxjnXVlQ.js";
|
|
2
|
+
import { t as n } from "./en_US-DGCMDOdX.js";
|
|
3
|
+
import { exportData as r } from "./exportData.js";
|
|
4
|
+
import { EllipsisOutlined as i, PlusOutlined as a } from "@ant-design/icons";
|
|
5
|
+
import { ProConfigProvider as o, ProTable as s, enUSIntl as c, findIntlKeyByAntdLocaleKey as l, intlMap as u } from "@ant-design/pro-components";
|
|
6
|
+
import { Button as d, ColorPicker as f, ConfigProvider as ee, DatePicker as p, Dropdown as te, Form as m, Image as h, Input as g, InputNumber as _, Modal as v, Progress as y, Rate as b, Select as x, Switch as S, Tag as C, TimePicker as w, Typography as T, message as E } from "antd";
|
|
7
|
+
import { useCallback as D, useContext as O, useMemo as k, useRef as ne, useState as A } from "react";
|
|
8
|
+
import j from "dayjs";
|
|
9
|
+
import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
10
|
+
import F from "antd/locale/en_US";
|
|
11
|
+
//#region lib/fields/registry.tsx
|
|
12
|
+
var I = (e, t) => t[e.dataIndex], L = (e) => e != null && e !== "", R = (e) => L(e) ? String(e) : "", z = (e) => {
|
|
13
|
+
let t = Number(e);
|
|
14
|
+
return Number.isFinite(t) ? t : 0;
|
|
15
|
+
}, B = (e) => String(e), V = ["http", "https"], H = [
|
|
16
|
+
"http",
|
|
17
|
+
"https",
|
|
18
|
+
"mailto"
|
|
19
|
+
], U = /^([a-z][a-z0-9+.-]*):/i, W = /^data:image\/(png|jpe?g|gif|webp|avif|bmp|x-icon)[;,]/i, G = (e, t) => {
|
|
20
|
+
let n = e.replace(/[\u0000-\u0020\u007F-\u009F]/g, ""), r = U.exec(n);
|
|
21
|
+
return !r || t.includes(r[1].toLowerCase());
|
|
22
|
+
}, K = (e) => {
|
|
23
|
+
let t = e.replace(/[\u0000-\u0020\u007F-\u009F]/g, "");
|
|
24
|
+
return W.test(t) ? !0 : G(e, V);
|
|
25
|
+
}, re = "YYYY-MM-DD HH:mm", q = "YYYY-MM-DD", J = "HH:mm:ss", Y = {
|
|
26
|
+
string: { formControl: (e, t) => /* @__PURE__ */ N(g, { disabled: t }) },
|
|
27
|
+
number: {
|
|
28
|
+
column: (e) => ({
|
|
29
|
+
valueType: "digit",
|
|
30
|
+
render: (t, n) => {
|
|
31
|
+
let r = I(e, n);
|
|
32
|
+
return typeof r == "number" ? r.toLocaleString() : R(r);
|
|
33
|
+
}
|
|
34
|
+
}),
|
|
35
|
+
formControl: (e, t) => /* @__PURE__ */ N(_, {
|
|
36
|
+
style: { width: "100%" },
|
|
37
|
+
disabled: t
|
|
38
|
+
})
|
|
39
|
+
},
|
|
40
|
+
date: {
|
|
41
|
+
column: (e, t) => ({
|
|
42
|
+
valueType: "dateTime",
|
|
43
|
+
render: (n, r) => {
|
|
44
|
+
let i = I(e, r);
|
|
45
|
+
if (!i) return t.empty;
|
|
46
|
+
let a = j(R(i));
|
|
47
|
+
return /* @__PURE__ */ N("span", { children: a.isValid() ? a.format(re) : R(i) });
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
formControl: (e, t) => /* @__PURE__ */ N(p, {
|
|
51
|
+
style: { width: "100%" },
|
|
52
|
+
showTime: !0,
|
|
53
|
+
disabled: t
|
|
54
|
+
}),
|
|
55
|
+
toFormValue: (e) => L(e) ? j(R(e)) : e,
|
|
56
|
+
fromFormValue: (e) => j.isDayjs(e) ? e.toISOString() : e
|
|
57
|
+
},
|
|
58
|
+
boolean: {
|
|
59
|
+
column: (e, t) => ({
|
|
60
|
+
valueType: "switch",
|
|
61
|
+
render: (n, r) => /* @__PURE__ */ N(C, {
|
|
62
|
+
color: I(e, r) ? "green" : "red",
|
|
63
|
+
children: I(e, r) ? t.yes : t.no
|
|
64
|
+
})
|
|
65
|
+
}),
|
|
66
|
+
formControl: (e, t) => /* @__PURE__ */ N(S, { disabled: t }),
|
|
67
|
+
valuePropName: "checked"
|
|
68
|
+
},
|
|
69
|
+
enum: {
|
|
70
|
+
column: (e) => ({
|
|
71
|
+
valueType: "select",
|
|
72
|
+
valueEnum: e.enumOptions,
|
|
73
|
+
render: (t, n) => {
|
|
74
|
+
let r = I(e, n), i = e.enumOptions?.[B(r)];
|
|
75
|
+
return i ? /* @__PURE__ */ N(C, {
|
|
76
|
+
color: i.color,
|
|
77
|
+
children: i.text
|
|
78
|
+
}) : R(r);
|
|
79
|
+
}
|
|
80
|
+
}),
|
|
81
|
+
formControl: (e, t, n) => /* @__PURE__ */ N(x, {
|
|
82
|
+
disabled: t,
|
|
83
|
+
placeholder: n.selectPlaceholder(e.title),
|
|
84
|
+
options: Object.entries(e.enumOptions || {}).map(([e, t]) => ({
|
|
85
|
+
label: t.text,
|
|
86
|
+
value: e
|
|
87
|
+
}))
|
|
88
|
+
})
|
|
89
|
+
},
|
|
90
|
+
custom: {
|
|
91
|
+
column: (e) => ({ render: (t, n) => e.customRender?.(I(e, n), n) ?? null }),
|
|
92
|
+
formControl: () => null
|
|
93
|
+
},
|
|
94
|
+
textarea: {
|
|
95
|
+
column: () => ({
|
|
96
|
+
valueType: "textarea",
|
|
97
|
+
ellipsis: !0
|
|
98
|
+
}),
|
|
99
|
+
formControl: (e, t) => /* @__PURE__ */ N(g.TextArea, {
|
|
100
|
+
rows: 3,
|
|
101
|
+
disabled: t
|
|
102
|
+
})
|
|
103
|
+
},
|
|
104
|
+
email: {
|
|
105
|
+
column: (e, t) => ({ render: (n, r) => {
|
|
106
|
+
let i = I(e, r);
|
|
107
|
+
if (!L(i)) return t.empty;
|
|
108
|
+
let a = R(i);
|
|
109
|
+
return G(a, H) ? /* @__PURE__ */ N("a", {
|
|
110
|
+
href: `mailto:${encodeURIComponent(a)}`,
|
|
111
|
+
children: a
|
|
112
|
+
}) : /* @__PURE__ */ N("span", { children: a });
|
|
113
|
+
} }),
|
|
114
|
+
formControl: (e, t) => /* @__PURE__ */ N(g, {
|
|
115
|
+
type: "email",
|
|
116
|
+
disabled: t
|
|
117
|
+
}),
|
|
118
|
+
rules: (e, t) => [{
|
|
119
|
+
type: "email",
|
|
120
|
+
message: t.invalidEmail
|
|
121
|
+
}]
|
|
122
|
+
},
|
|
123
|
+
url: {
|
|
124
|
+
column: (e, t) => ({ render: (n, r) => {
|
|
125
|
+
let i = I(e, r);
|
|
126
|
+
if (!L(i)) return t.empty;
|
|
127
|
+
let a = R(i);
|
|
128
|
+
return G(a, V) ? /* @__PURE__ */ N("a", {
|
|
129
|
+
href: a,
|
|
130
|
+
target: "_blank",
|
|
131
|
+
rel: "noopener noreferrer",
|
|
132
|
+
children: a
|
|
133
|
+
}) : /* @__PURE__ */ N("span", { children: a });
|
|
134
|
+
} }),
|
|
135
|
+
formControl: (e, t) => /* @__PURE__ */ N(g, { disabled: t }),
|
|
136
|
+
rules: (e, t) => [{
|
|
137
|
+
type: "url",
|
|
138
|
+
message: t.invalidUrl
|
|
139
|
+
}]
|
|
140
|
+
},
|
|
141
|
+
password: {
|
|
142
|
+
column: (e, t) => ({
|
|
143
|
+
search: !1,
|
|
144
|
+
render: (n, r) => L(I(e, r)) ? "••••••••" : t.empty
|
|
145
|
+
}),
|
|
146
|
+
formControl: (e, t) => /* @__PURE__ */ N(g.Password, { disabled: t })
|
|
147
|
+
},
|
|
148
|
+
money: {
|
|
149
|
+
column: () => ({ valueType: "money" }),
|
|
150
|
+
formControl: (e, t) => /* @__PURE__ */ N(_, {
|
|
151
|
+
style: { width: "100%" },
|
|
152
|
+
precision: 2,
|
|
153
|
+
min: 0,
|
|
154
|
+
disabled: t
|
|
155
|
+
})
|
|
156
|
+
},
|
|
157
|
+
percent: {
|
|
158
|
+
column: () => ({ valueType: "percent" }),
|
|
159
|
+
formControl: (e, t) => /* @__PURE__ */ N(_, {
|
|
160
|
+
style: { width: "100%" },
|
|
161
|
+
min: 0,
|
|
162
|
+
max: 100,
|
|
163
|
+
addonAfter: "%",
|
|
164
|
+
disabled: t
|
|
165
|
+
})
|
|
166
|
+
},
|
|
167
|
+
rating: {
|
|
168
|
+
column: (e) => ({
|
|
169
|
+
search: !1,
|
|
170
|
+
render: (t, n) => /* @__PURE__ */ N(b, {
|
|
171
|
+
disabled: !0,
|
|
172
|
+
allowHalf: !0,
|
|
173
|
+
value: z(I(e, n))
|
|
174
|
+
})
|
|
175
|
+
}),
|
|
176
|
+
formControl: (e, t) => /* @__PURE__ */ N(b, {
|
|
177
|
+
allowHalf: !0,
|
|
178
|
+
disabled: t
|
|
179
|
+
})
|
|
180
|
+
},
|
|
181
|
+
progress: {
|
|
182
|
+
column: (e) => ({
|
|
183
|
+
search: !1,
|
|
184
|
+
render: (t, n) => /* @__PURE__ */ N(y, {
|
|
185
|
+
percent: z(I(e, n)),
|
|
186
|
+
size: "small"
|
|
187
|
+
})
|
|
188
|
+
}),
|
|
189
|
+
formControl: (e, t) => /* @__PURE__ */ N(_, {
|
|
190
|
+
style: { width: "100%" },
|
|
191
|
+
min: 0,
|
|
192
|
+
max: 100,
|
|
193
|
+
disabled: t
|
|
194
|
+
})
|
|
195
|
+
},
|
|
196
|
+
time: {
|
|
197
|
+
column: () => ({ valueType: "time" }),
|
|
198
|
+
formControl: (e, t) => /* @__PURE__ */ N(w, {
|
|
199
|
+
style: { width: "100%" },
|
|
200
|
+
disabled: t
|
|
201
|
+
}),
|
|
202
|
+
toFormValue: (e) => L(e) ? j(R(e), J) : e,
|
|
203
|
+
fromFormValue: (e) => j.isDayjs(e) ? e.format(J) : e
|
|
204
|
+
},
|
|
205
|
+
dateRange: {
|
|
206
|
+
column: (e, t) => ({
|
|
207
|
+
valueType: "dateRange",
|
|
208
|
+
render: (n, r) => {
|
|
209
|
+
let i = I(e, r);
|
|
210
|
+
if (!Array.isArray(i) || i.length !== 2) return t.empty;
|
|
211
|
+
let [a, o] = i.map((e) => j(R(e)));
|
|
212
|
+
return !a.isValid() || !o.isValid() ? R(i) : `${a.format(q)} ~ ${o.format(q)}`;
|
|
213
|
+
}
|
|
214
|
+
}),
|
|
215
|
+
formControl: (e, t) => /* @__PURE__ */ N(p.RangePicker, {
|
|
216
|
+
style: { width: "100%" },
|
|
217
|
+
disabled: t
|
|
218
|
+
}),
|
|
219
|
+
toFormValue: (e) => Array.isArray(e) ? e.map((e) => L(e) ? j(R(e)) : e) : e,
|
|
220
|
+
fromFormValue: (e) => Array.isArray(e) ? e.map((e) => j.isDayjs(e) ? e.toISOString() : e) : e
|
|
221
|
+
},
|
|
222
|
+
tags: {
|
|
223
|
+
column: (e, t) => ({ render: (n, r) => {
|
|
224
|
+
let i = I(e, r);
|
|
225
|
+
return !Array.isArray(i) || i.length === 0 ? t.empty : /* @__PURE__ */ N(M, { children: i.map((e) => /* @__PURE__ */ N(C, { children: R(e) }, R(e))) });
|
|
226
|
+
} }),
|
|
227
|
+
formControl: (e, t, n) => /* @__PURE__ */ N(x, {
|
|
228
|
+
mode: "tags",
|
|
229
|
+
open: !1,
|
|
230
|
+
suffixIcon: null,
|
|
231
|
+
disabled: t,
|
|
232
|
+
placeholder: n.tagsPlaceholder
|
|
233
|
+
})
|
|
234
|
+
},
|
|
235
|
+
image: {
|
|
236
|
+
column: (e, t) => ({
|
|
237
|
+
search: !1,
|
|
238
|
+
render: (n, r) => {
|
|
239
|
+
let i = I(e, r);
|
|
240
|
+
if (!L(i)) return t.empty;
|
|
241
|
+
let a = R(i);
|
|
242
|
+
return K(a) ? /* @__PURE__ */ N(h, {
|
|
243
|
+
src: a,
|
|
244
|
+
width: 48,
|
|
245
|
+
height: 48,
|
|
246
|
+
style: { objectFit: "cover" }
|
|
247
|
+
}) : /* @__PURE__ */ N("span", { children: a });
|
|
248
|
+
}
|
|
249
|
+
}),
|
|
250
|
+
formControl: (e, t) => /* @__PURE__ */ N(g, {
|
|
251
|
+
placeholder: "https://...",
|
|
252
|
+
disabled: t
|
|
253
|
+
}),
|
|
254
|
+
rules: (e, t) => [{
|
|
255
|
+
type: "url",
|
|
256
|
+
message: t.invalidImageUrl
|
|
257
|
+
}]
|
|
258
|
+
},
|
|
259
|
+
color: {
|
|
260
|
+
column: (e, t) => ({
|
|
261
|
+
search: !1,
|
|
262
|
+
render: (n, r) => {
|
|
263
|
+
let i = I(e, r);
|
|
264
|
+
if (!L(i)) return t.empty;
|
|
265
|
+
let a = R(i);
|
|
266
|
+
return /* @__PURE__ */ P("span", {
|
|
267
|
+
style: {
|
|
268
|
+
display: "inline-flex",
|
|
269
|
+
alignItems: "center",
|
|
270
|
+
gap: 8
|
|
271
|
+
},
|
|
272
|
+
children: [/* @__PURE__ */ N("span", { style: {
|
|
273
|
+
display: "inline-block",
|
|
274
|
+
width: 14,
|
|
275
|
+
height: 14,
|
|
276
|
+
borderRadius: 3,
|
|
277
|
+
border: "1px solid rgba(0,0,0,0.15)",
|
|
278
|
+
backgroundColor: a
|
|
279
|
+
} }), a]
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}),
|
|
283
|
+
formControl: (e, t) => /* @__PURE__ */ N(f, {
|
|
284
|
+
showText: !0,
|
|
285
|
+
disabled: t
|
|
286
|
+
}),
|
|
287
|
+
fromFormValue: (e) => e && typeof e == "object" && "toHexString" in e ? e.toHexString() : e
|
|
288
|
+
},
|
|
289
|
+
json: {
|
|
290
|
+
column: (e, t) => ({
|
|
291
|
+
search: !1,
|
|
292
|
+
ellipsis: !0,
|
|
293
|
+
render: (n, r) => {
|
|
294
|
+
let i = I(e, r);
|
|
295
|
+
return i == null ? t.empty : /* @__PURE__ */ N(T.Text, {
|
|
296
|
+
code: !0,
|
|
297
|
+
children: JSON.stringify(i)
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}),
|
|
301
|
+
formControl: (e, t) => /* @__PURE__ */ N(g.TextArea, {
|
|
302
|
+
rows: 4,
|
|
303
|
+
style: { fontFamily: "monospace" },
|
|
304
|
+
disabled: t
|
|
305
|
+
}),
|
|
306
|
+
toFormValue: (e) => typeof e == "string" ? e : JSON.stringify(e, null, 2),
|
|
307
|
+
fromFormValue: (e) => typeof e == "string" && e.trim() !== "" ? JSON.parse(e) : e,
|
|
308
|
+
rules: (e, t) => [{ validator: async (e, n) => {
|
|
309
|
+
if (n != null && n !== "" && typeof n == "string") try {
|
|
310
|
+
JSON.parse(n);
|
|
311
|
+
} catch {
|
|
312
|
+
throw Error(t.invalidJson);
|
|
313
|
+
}
|
|
314
|
+
} }]
|
|
315
|
+
}
|
|
316
|
+
}, X = (e) => Y[e ?? "string"] ?? Y.string, Z = n, ie = (e) => {
|
|
317
|
+
let t = O(ee.ConfigContext).locale;
|
|
318
|
+
return k(() => {
|
|
319
|
+
let r = e ? {
|
|
320
|
+
...n,
|
|
321
|
+
...e
|
|
322
|
+
} : n, i = t?.locale ? l(t.locale) : void 0;
|
|
323
|
+
return {
|
|
324
|
+
strings: r,
|
|
325
|
+
intl: i && ((e) => e in u)(i) ? u[i] : c,
|
|
326
|
+
antdLocale: t ? void 0 : F,
|
|
327
|
+
inherited: !!t
|
|
328
|
+
};
|
|
329
|
+
}, [e, t]);
|
|
330
|
+
}, ae = (e, t, n, r) => {
|
|
331
|
+
let { current: i = 1, pageSize: a = 10, ...o } = e, s = {};
|
|
332
|
+
for (let [e, t] of Object.entries(o)) r.has(e) && t !== void 0 && t !== "" && (s[e] = t);
|
|
333
|
+
for (let [e, t] of Object.entries(n)) t && t.length > 0 && r.has(e) && (s[e] = t[0]);
|
|
334
|
+
return {
|
|
335
|
+
page: i,
|
|
336
|
+
pageSize: a,
|
|
337
|
+
sort: Object.entries(t).filter(([, e]) => e === "ascend" || e === "descend").map(([e, t]) => ({
|
|
338
|
+
field: e,
|
|
339
|
+
direction: t
|
|
340
|
+
})),
|
|
341
|
+
filters: s
|
|
342
|
+
};
|
|
343
|
+
}, Q = (n) => {
|
|
344
|
+
let { columns: c, rowKey: l, title: u, defaultPageSize: f = 10, hookConfig: p, enableBulkOperations: h = !1, enableColumnSettings: g = !0, enableExport: _ = !0, exportScope: y = "all", customActions: b, locale: x } = n, { strings: S, intl: C, antdLocale: w } = ie(x), T = e(l, {
|
|
345
|
+
defaultPageSize: f,
|
|
346
|
+
...p,
|
|
347
|
+
locale: S,
|
|
348
|
+
refreshAfterMutation: !1
|
|
349
|
+
}), [O, j] = A(!1), [M, F] = A(null), [I, L] = A([]), [R] = m.useForm(), z = ne([]), B = ne({
|
|
350
|
+
page: 1,
|
|
351
|
+
pageSize: f
|
|
352
|
+
}), [V, H] = A(!1), U = k(() => new Set(c.map((e) => e.dataIndex)), [c]), W = D((e) => ({
|
|
353
|
+
dataIndex: e.dataIndex,
|
|
354
|
+
title: e.title,
|
|
355
|
+
fieldType: e.fieldType,
|
|
356
|
+
enumOptions: e.enumOptions,
|
|
357
|
+
customRender: e.customRender
|
|
358
|
+
}), []), G = D((e) => {
|
|
359
|
+
if (F(e ?? null), !e) {
|
|
360
|
+
R.resetFields(), j(!0);
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
let t = { ...e };
|
|
364
|
+
for (let e of c) {
|
|
365
|
+
let n = e.dataIndex, { toFormValue: r } = X(e.fieldType);
|
|
366
|
+
if (r && t[n] !== void 0) try {
|
|
367
|
+
t[n] = r(t[n]);
|
|
368
|
+
} catch {}
|
|
369
|
+
}
|
|
370
|
+
R.setFieldsValue(t), j(!0);
|
|
371
|
+
}, [c, R]), K = D((e) => {
|
|
372
|
+
v.confirm({
|
|
373
|
+
title: S.confirmDeleteTitle,
|
|
374
|
+
content: S.confirmDeleteContent,
|
|
375
|
+
okText: S.confirmDeleteOk,
|
|
376
|
+
okType: "danger",
|
|
377
|
+
cancelText: S.cancel,
|
|
378
|
+
onOk: async () => {
|
|
379
|
+
await T.remove(e) && T.actionRef.current?.reload();
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
}, [T, S]), re = k(() => {
|
|
383
|
+
let e = c.map((e) => {
|
|
384
|
+
let t = W(e), n = X(e.fieldType);
|
|
385
|
+
return {
|
|
386
|
+
...e,
|
|
387
|
+
dataIndex: e.dataIndex,
|
|
388
|
+
title: e.title,
|
|
389
|
+
search: e.searchable !== !1,
|
|
390
|
+
...n.column?.(t, S)
|
|
391
|
+
};
|
|
392
|
+
});
|
|
393
|
+
return e.push({
|
|
394
|
+
title: S.actions,
|
|
395
|
+
valueType: "option",
|
|
396
|
+
width: 200,
|
|
397
|
+
render: (e, t) => [
|
|
398
|
+
/* @__PURE__ */ N(d, {
|
|
399
|
+
type: "link",
|
|
400
|
+
size: "small",
|
|
401
|
+
onClick: () => G(t),
|
|
402
|
+
children: S.edit
|
|
403
|
+
}, "edit"),
|
|
404
|
+
/* @__PURE__ */ N(d, {
|
|
405
|
+
type: "link",
|
|
406
|
+
size: "small",
|
|
407
|
+
danger: !0,
|
|
408
|
+
onClick: () => K(t[l]),
|
|
409
|
+
children: S.delete
|
|
410
|
+
}, "delete"),
|
|
411
|
+
...b?.(t, T) ?? []
|
|
412
|
+
]
|
|
413
|
+
}), e;
|
|
414
|
+
}, [
|
|
415
|
+
c,
|
|
416
|
+
W,
|
|
417
|
+
G,
|
|
418
|
+
K,
|
|
419
|
+
l,
|
|
420
|
+
b,
|
|
421
|
+
T,
|
|
422
|
+
S
|
|
423
|
+
]), q = async (e, n, r) => {
|
|
424
|
+
try {
|
|
425
|
+
let t = ae(e, n, r, U);
|
|
426
|
+
B.current = t;
|
|
427
|
+
let i = await T.dataSource.list(t);
|
|
428
|
+
return z.current = i.items, {
|
|
429
|
+
data: [...i.items],
|
|
430
|
+
success: !0,
|
|
431
|
+
total: i.total
|
|
432
|
+
};
|
|
433
|
+
} catch (e) {
|
|
434
|
+
let n = t(e);
|
|
435
|
+
return p.onError?.("list", n), E.error(n.message), {
|
|
436
|
+
data: [],
|
|
437
|
+
success: !1,
|
|
438
|
+
total: 0
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
}, J = async () => {
|
|
442
|
+
let e;
|
|
443
|
+
try {
|
|
444
|
+
e = await R.validateFields();
|
|
445
|
+
} catch {
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
let n = { ...e };
|
|
449
|
+
for (let r of c) {
|
|
450
|
+
let i = r.dataIndex, { fromFormValue: a } = X(r.fieldType);
|
|
451
|
+
if (a && e[i] !== void 0) try {
|
|
452
|
+
n[i] = a(e[i]);
|
|
453
|
+
} catch (e) {
|
|
454
|
+
p.onError?.(M ? "update" : "create", t(e));
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
let o = r.formConfig?.transform;
|
|
458
|
+
o && (n[i] = o(n[i]));
|
|
459
|
+
}
|
|
460
|
+
(M ? await T.update(M[l], n) : await T.create(n)) !== null && (j(!1), T.actionRef.current?.reload());
|
|
461
|
+
}, Y = () => {
|
|
462
|
+
if (I.length === 0) {
|
|
463
|
+
E.warning(S.selectItemsToDelete);
|
|
464
|
+
return;
|
|
465
|
+
}
|
|
466
|
+
v.confirm({
|
|
467
|
+
title: S.confirmBulkDeleteTitle(I.length),
|
|
468
|
+
content: S.confirmDeleteContent,
|
|
469
|
+
okText: S.confirmBulkDeleteOk,
|
|
470
|
+
okType: "danger",
|
|
471
|
+
cancelText: S.cancel,
|
|
472
|
+
onOk: async () => {
|
|
473
|
+
let e = await Promise.all(I.map(async (e) => ({
|
|
474
|
+
key: e,
|
|
475
|
+
ok: await T.remove(e)
|
|
476
|
+
}))), t = e.filter((e) => !e.ok);
|
|
477
|
+
L(t.map((e) => e.key)), t.length === 0 ? E.success(S.bulkDeleteSuccess(e.length)) : E.error(S.bulkDeletePartial(e.length - t.length, e.length, t.length)), T.actionRef.current?.reload();
|
|
478
|
+
}
|
|
479
|
+
});
|
|
480
|
+
}, Z = y === "all" && typeof T.dataSource.listAll == "function", Q = async (e) => {
|
|
481
|
+
H(!0);
|
|
482
|
+
try {
|
|
483
|
+
let t = Z ? await T.dataSource.listAll({
|
|
484
|
+
sort: B.current.sort,
|
|
485
|
+
filters: B.current.filters
|
|
486
|
+
}) : z.current;
|
|
487
|
+
if (t.length === 0) {
|
|
488
|
+
E.warning(S.nothingToExport);
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
let n = c.filter((e) => e.fieldType !== "password").map((e) => ({
|
|
492
|
+
title: e.title,
|
|
493
|
+
dataIndex: String(e.dataIndex),
|
|
494
|
+
fieldType: e.fieldType,
|
|
495
|
+
enumOptions: e.enumOptions
|
|
496
|
+
}));
|
|
497
|
+
r({
|
|
498
|
+
data: [...t],
|
|
499
|
+
columns: n,
|
|
500
|
+
filename: u ? u.toLowerCase().replace(/\s+/g, "-") : "export",
|
|
501
|
+
format: e
|
|
502
|
+
});
|
|
503
|
+
} catch (e) {
|
|
504
|
+
let n = t(e);
|
|
505
|
+
p.onError?.("list", n), E.error(S.exportFailed(n.message));
|
|
506
|
+
} finally {
|
|
507
|
+
H(!1);
|
|
508
|
+
}
|
|
509
|
+
}, $ = Z ? S.exportAll : S.exportPage, oe = /* @__PURE__ */ P(o, {
|
|
510
|
+
needDeps: !0,
|
|
511
|
+
intl: C,
|
|
512
|
+
children: [/* @__PURE__ */ N(s, {
|
|
513
|
+
headerTitle: u,
|
|
514
|
+
rowKey: l,
|
|
515
|
+
rowClassName: (e, t) => t % 2 == 0 ? "row-differentiator" : "",
|
|
516
|
+
actionRef: T.actionRef,
|
|
517
|
+
columns: re,
|
|
518
|
+
request: q,
|
|
519
|
+
search: { labelWidth: "auto" },
|
|
520
|
+
pagination: {
|
|
521
|
+
pageSize: f,
|
|
522
|
+
showSizeChanger: !0,
|
|
523
|
+
showQuickJumper: !0
|
|
524
|
+
},
|
|
525
|
+
rowSelection: h ? {
|
|
526
|
+
selectedRowKeys: I,
|
|
527
|
+
onChange: L
|
|
528
|
+
} : void 0,
|
|
529
|
+
toolBarRender: () => [
|
|
530
|
+
/* @__PURE__ */ N(d, {
|
|
531
|
+
type: "primary",
|
|
532
|
+
icon: /* @__PURE__ */ N(a, {}),
|
|
533
|
+
onClick: () => G(),
|
|
534
|
+
children: S.create
|
|
535
|
+
}, "add"),
|
|
536
|
+
...h && I.length > 0 ? [/* @__PURE__ */ N(d, {
|
|
537
|
+
danger: !0,
|
|
538
|
+
onClick: Y,
|
|
539
|
+
children: S.deleteSelected(I.length)
|
|
540
|
+
}, "bulk-delete")] : [],
|
|
541
|
+
/* @__PURE__ */ N(te, {
|
|
542
|
+
menu: { items: [..._ ? [
|
|
543
|
+
{
|
|
544
|
+
key: "export-csv",
|
|
545
|
+
label: $("CSV"),
|
|
546
|
+
disabled: V,
|
|
547
|
+
onClick: () => void Q("csv")
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
key: "export-json",
|
|
551
|
+
label: $("JSON"),
|
|
552
|
+
disabled: V,
|
|
553
|
+
onClick: () => void Q("json")
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
key: "export-excel",
|
|
557
|
+
label: $("Excel"),
|
|
558
|
+
disabled: V,
|
|
559
|
+
onClick: () => void Q("excel")
|
|
560
|
+
},
|
|
561
|
+
{ type: "divider" }
|
|
562
|
+
] : [], {
|
|
563
|
+
key: "refresh",
|
|
564
|
+
label: S.refresh,
|
|
565
|
+
onClick: () => T.actionRef.current?.reload()
|
|
566
|
+
}] },
|
|
567
|
+
children: /* @__PURE__ */ N(d, { children: /* @__PURE__ */ N(i, {}) })
|
|
568
|
+
}, "menu")
|
|
569
|
+
],
|
|
570
|
+
options: {
|
|
571
|
+
setting: g ? { listsHeight: 400 } : !1,
|
|
572
|
+
density: g,
|
|
573
|
+
reload: !0
|
|
574
|
+
},
|
|
575
|
+
dateFormatter: "string"
|
|
576
|
+
}), /* @__PURE__ */ N(v, {
|
|
577
|
+
title: M ? S.editTitle : S.createTitle,
|
|
578
|
+
open: O,
|
|
579
|
+
onOk: J,
|
|
580
|
+
onCancel: () => j(!1),
|
|
581
|
+
okText: S.ok,
|
|
582
|
+
cancelText: S.cancel,
|
|
583
|
+
destroyOnHidden: !0,
|
|
584
|
+
width: 600,
|
|
585
|
+
children: /* @__PURE__ */ N(m, {
|
|
586
|
+
form: R,
|
|
587
|
+
layout: "vertical",
|
|
588
|
+
children: c.map((e) => {
|
|
589
|
+
let t = e.dataIndex, n = !(e.fieldEditable ?? !0), r = X(e.fieldType), i = W(e), a = e.formConfig?.rules ?? (e.formConfig?.required ? [{
|
|
590
|
+
required: !0,
|
|
591
|
+
message: S.requiredField(e.title)
|
|
592
|
+
}] : []), o = [...r.rules?.(i, S) ?? [], ...a], s = e.formConfig?.component ?? r.formControl(i, n, S);
|
|
593
|
+
return s ? /* @__PURE__ */ N(m.Item, {
|
|
594
|
+
name: t,
|
|
595
|
+
label: e.title,
|
|
596
|
+
rules: o,
|
|
597
|
+
valuePropName: r.valuePropName,
|
|
598
|
+
children: s
|
|
599
|
+
}, t) : null;
|
|
600
|
+
})
|
|
601
|
+
})
|
|
602
|
+
})]
|
|
603
|
+
});
|
|
604
|
+
return w ? /* @__PURE__ */ N(ee, {
|
|
605
|
+
locale: w,
|
|
606
|
+
children: oe
|
|
607
|
+
}) : oe;
|
|
608
|
+
};
|
|
609
|
+
//#endregion
|
|
610
|
+
export { X as a, Y as i, ie as n, Z as r, Q as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));const c=require("./useCrudTable-40jpmCkr.cjs"),l=require("./en_US-D3Kl6g3n.cjs"),u=require("./exportData.cjs");let d=require("@ant-design/icons"),f=require("@ant-design/pro-components"),p=require("antd"),m=require("react"),h=require("dayjs");h=s(h,1);let g=require("react/jsx-runtime"),_=require("antd/locale/en_US");_=s(_,1);var v=(e,t)=>t[e.dataIndex],y=e=>e!=null&&e!==``,b=e=>y(e)?String(e):``,x=e=>{let t=Number(e);return Number.isFinite(t)?t:0},S=e=>String(e),C=[`http`,`https`],w=[`http`,`https`,`mailto`],T=/^([a-z][a-z0-9+.-]*):/i,E=/^data:image\/(png|jpe?g|gif|webp|avif|bmp|x-icon)[;,]/i,D=(e,t)=>{let n=e.replace(/[\u0000-\u0020\u007F-\u009F]/g,``),r=T.exec(n);return!r||t.includes(r[1].toLowerCase())},O=e=>{let t=e.replace(/[\u0000-\u0020\u007F-\u009F]/g,``);return E.test(t)?!0:D(e,C)},k=`YYYY-MM-DD HH:mm`,A=`YYYY-MM-DD`,j=`HH:mm:ss`,M={string:{formControl:(e,t)=>(0,g.jsx)(p.Input,{disabled:t})},number:{column:e=>({valueType:`digit`,render:(t,n)=>{let r=v(e,n);return typeof r==`number`?r.toLocaleString():b(r)}}),formControl:(e,t)=>(0,g.jsx)(p.InputNumber,{style:{width:`100%`},disabled:t})},date:{column:(e,t)=>({valueType:`dateTime`,render:(n,r)=>{let i=v(e,r);if(!i)return t.empty;let a=(0,h.default)(b(i));return(0,g.jsx)(`span`,{children:a.isValid()?a.format(k):b(i)})}}),formControl:(e,t)=>(0,g.jsx)(p.DatePicker,{style:{width:`100%`},showTime:!0,disabled:t}),toFormValue:e=>y(e)?(0,h.default)(b(e)):e,fromFormValue:e=>h.default.isDayjs(e)?e.toISOString():e},boolean:{column:(e,t)=>({valueType:`switch`,render:(n,r)=>(0,g.jsx)(p.Tag,{color:v(e,r)?`green`:`red`,children:v(e,r)?t.yes:t.no})}),formControl:(e,t)=>(0,g.jsx)(p.Switch,{disabled:t}),valuePropName:`checked`},enum:{column:e=>({valueType:`select`,valueEnum:e.enumOptions,render:(t,n)=>{let r=v(e,n),i=e.enumOptions?.[S(r)];return i?(0,g.jsx)(p.Tag,{color:i.color,children:i.text}):b(r)}}),formControl:(e,t,n)=>(0,g.jsx)(p.Select,{disabled:t,placeholder:n.selectPlaceholder(e.title),options:Object.entries(e.enumOptions||{}).map(([e,t])=>({label:t.text,value:e}))})},custom:{column:e=>({render:(t,n)=>e.customRender?.(v(e,n),n)??null}),formControl:()=>null},textarea:{column:()=>({valueType:`textarea`,ellipsis:!0}),formControl:(e,t)=>(0,g.jsx)(p.Input.TextArea,{rows:3,disabled:t})},email:{column:(e,t)=>({render:(n,r)=>{let i=v(e,r);if(!y(i))return t.empty;let a=b(i);return D(a,w)?(0,g.jsx)(`a`,{href:`mailto:${encodeURIComponent(a)}`,children:a}):(0,g.jsx)(`span`,{children:a})}}),formControl:(e,t)=>(0,g.jsx)(p.Input,{type:`email`,disabled:t}),rules:(e,t)=>[{type:`email`,message:t.invalidEmail}]},url:{column:(e,t)=>({render:(n,r)=>{let i=v(e,r);if(!y(i))return t.empty;let a=b(i);return D(a,C)?(0,g.jsx)(`a`,{href:a,target:`_blank`,rel:`noopener noreferrer`,children:a}):(0,g.jsx)(`span`,{children:a})}}),formControl:(e,t)=>(0,g.jsx)(p.Input,{disabled:t}),rules:(e,t)=>[{type:`url`,message:t.invalidUrl}]},password:{column:(e,t)=>({search:!1,render:(n,r)=>y(v(e,r))?`••••••••`:t.empty}),formControl:(e,t)=>(0,g.jsx)(p.Input.Password,{disabled:t})},money:{column:()=>({valueType:`money`}),formControl:(e,t)=>(0,g.jsx)(p.InputNumber,{style:{width:`100%`},precision:2,min:0,disabled:t})},percent:{column:()=>({valueType:`percent`}),formControl:(e,t)=>(0,g.jsx)(p.InputNumber,{style:{width:`100%`},min:0,max:100,addonAfter:`%`,disabled:t})},rating:{column:e=>({search:!1,render:(t,n)=>(0,g.jsx)(p.Rate,{disabled:!0,allowHalf:!0,value:x(v(e,n))})}),formControl:(e,t)=>(0,g.jsx)(p.Rate,{allowHalf:!0,disabled:t})},progress:{column:e=>({search:!1,render:(t,n)=>(0,g.jsx)(p.Progress,{percent:x(v(e,n)),size:`small`})}),formControl:(e,t)=>(0,g.jsx)(p.InputNumber,{style:{width:`100%`},min:0,max:100,disabled:t})},time:{column:()=>({valueType:`time`}),formControl:(e,t)=>(0,g.jsx)(p.TimePicker,{style:{width:`100%`},disabled:t}),toFormValue:e=>y(e)?(0,h.default)(b(e),j):e,fromFormValue:e=>h.default.isDayjs(e)?e.format(j):e},dateRange:{column:(e,t)=>({valueType:`dateRange`,render:(n,r)=>{let i=v(e,r);if(!Array.isArray(i)||i.length!==2)return t.empty;let[a,o]=i.map(e=>(0,h.default)(b(e)));return!a.isValid()||!o.isValid()?b(i):`${a.format(A)} ~ ${o.format(A)}`}}),formControl:(e,t)=>(0,g.jsx)(p.DatePicker.RangePicker,{style:{width:`100%`},disabled:t}),toFormValue:e=>Array.isArray(e)?e.map(e=>y(e)?(0,h.default)(b(e)):e):e,fromFormValue:e=>Array.isArray(e)?e.map(e=>h.default.isDayjs(e)?e.toISOString():e):e},tags:{column:(e,t)=>({render:(n,r)=>{let i=v(e,r);return!Array.isArray(i)||i.length===0?t.empty:(0,g.jsx)(g.Fragment,{children:i.map(e=>(0,g.jsx)(p.Tag,{children:b(e)},b(e)))})}}),formControl:(e,t,n)=>(0,g.jsx)(p.Select,{mode:`tags`,open:!1,suffixIcon:null,disabled:t,placeholder:n.tagsPlaceholder})},image:{column:(e,t)=>({search:!1,render:(n,r)=>{let i=v(e,r);if(!y(i))return t.empty;let a=b(i);return O(a)?(0,g.jsx)(p.Image,{src:a,width:48,height:48,style:{objectFit:`cover`}}):(0,g.jsx)(`span`,{children:a})}}),formControl:(e,t)=>(0,g.jsx)(p.Input,{placeholder:`https://...`,disabled:t}),rules:(e,t)=>[{type:`url`,message:t.invalidImageUrl}]},color:{column:(e,t)=>({search:!1,render:(n,r)=>{let i=v(e,r);if(!y(i))return t.empty;let a=b(i);return(0,g.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:8},children:[(0,g.jsx)(`span`,{style:{display:`inline-block`,width:14,height:14,borderRadius:3,border:`1px solid rgba(0,0,0,0.15)`,backgroundColor:a}}),a]})}}),formControl:(e,t)=>(0,g.jsx)(p.ColorPicker,{showText:!0,disabled:t}),fromFormValue:e=>e&&typeof e==`object`&&`toHexString`in e?e.toHexString():e},json:{column:(e,t)=>({search:!1,ellipsis:!0,render:(n,r)=>{let i=v(e,r);return i==null?t.empty:(0,g.jsx)(p.Typography.Text,{code:!0,children:JSON.stringify(i)})}}),formControl:(e,t)=>(0,g.jsx)(p.Input.TextArea,{rows:4,style:{fontFamily:`monospace`},disabled:t}),toFormValue:e=>typeof e==`string`?e:JSON.stringify(e,null,2),fromFormValue:e=>typeof e==`string`&&e.trim()!==``?JSON.parse(e):e,rules:(e,t)=>[{validator:async(e,n)=>{if(n!=null&&n!==``&&typeof n==`string`)try{JSON.parse(n)}catch{throw Error(t.invalidJson)}}}]}},N=e=>M[e??`string`]??M.string,P=l.t,F=e=>{let t=(0,m.useContext)(p.ConfigProvider.ConfigContext).locale;return(0,m.useMemo)(()=>{let n=e?{...l.t,...e}:l.t,r=t?.locale?(0,f.findIntlKeyByAntdLocaleKey)(t.locale):void 0;return{strings:n,intl:r&&(e=>e in f.intlMap)(r)?f.intlMap[r]:f.enUSIntl,antdLocale:t?void 0:_.default,inherited:!!t}},[e,t])},I=(e,t,n,r)=>{let{current:i=1,pageSize:a=10,...o}=e,s={};for(let[e,t]of Object.entries(o))r.has(e)&&t!==void 0&&t!==``&&(s[e]=t);for(let[e,t]of Object.entries(n))t&&t.length>0&&r.has(e)&&(s[e]=t[0]);return{page:i,pageSize:a,sort:Object.entries(t).filter(([,e])=>e===`ascend`||e===`descend`).map(([e,t])=>({field:e,direction:t})),filters:s}},L=e=>{let{columns:t,rowKey:n,title:r,defaultPageSize:i=10,hookConfig:a,enableBulkOperations:o=!1,enableColumnSettings:s=!0,enableExport:l=!0,exportScope:h=`all`,customActions:_,locale:v}=e,{strings:y,intl:b,antdLocale:x}=F(v),S=c.n(n,{defaultPageSize:i,...a,locale:y,refreshAfterMutation:!1}),[C,w]=(0,m.useState)(!1),[T,E]=(0,m.useState)(null),[D,O]=(0,m.useState)([]),[k]=p.Form.useForm(),A=(0,m.useRef)([]),j=(0,m.useRef)({page:1,pageSize:i}),[M,P]=(0,m.useState)(!1),L=(0,m.useMemo)(()=>new Set(t.map(e=>e.dataIndex)),[t]),R=(0,m.useCallback)(e=>({dataIndex:e.dataIndex,title:e.title,fieldType:e.fieldType,enumOptions:e.enumOptions,customRender:e.customRender}),[]),z=(0,m.useCallback)(e=>{if(E(e??null),!e){k.resetFields(),w(!0);return}let n={...e};for(let e of t){let t=e.dataIndex,{toFormValue:r}=N(e.fieldType);if(r&&n[t]!==void 0)try{n[t]=r(n[t])}catch{}}k.setFieldsValue(n),w(!0)},[t,k]),B=(0,m.useCallback)(e=>{p.Modal.confirm({title:y.confirmDeleteTitle,content:y.confirmDeleteContent,okText:y.confirmDeleteOk,okType:`danger`,cancelText:y.cancel,onOk:async()=>{await S.remove(e)&&S.actionRef.current?.reload()}})},[S,y]),V=(0,m.useMemo)(()=>{let e=t.map(e=>{let t=R(e),n=N(e.fieldType);return{...e,dataIndex:e.dataIndex,title:e.title,search:e.searchable!==!1,...n.column?.(t,y)}});return e.push({title:y.actions,valueType:`option`,width:200,render:(e,t)=>[(0,g.jsx)(p.Button,{type:`link`,size:`small`,onClick:()=>z(t),children:y.edit},`edit`),(0,g.jsx)(p.Button,{type:`link`,size:`small`,danger:!0,onClick:()=>B(t[n]),children:y.delete},`delete`),..._?.(t,S)??[]]}),e},[t,R,z,B,n,_,S,y]),H=async(e,t,n)=>{try{let r=I(e,t,n,L);j.current=r;let i=await S.dataSource.list(r);return A.current=i.items,{data:[...i.items],success:!0,total:i.total}}catch(e){let t=c.t(e);return a.onError?.(`list`,t),p.message.error(t.message),{data:[],success:!1,total:0}}},U=async()=>{let e;try{e=await k.validateFields()}catch{return}let r={...e};for(let n of t){let t=n.dataIndex,{fromFormValue:i}=N(n.fieldType);if(i&&e[t]!==void 0)try{r[t]=i(e[t])}catch(e){a.onError?.(T?`update`:`create`,c.t(e));return}let o=n.formConfig?.transform;o&&(r[t]=o(r[t]))}(T?await S.update(T[n],r):await S.create(r))!==null&&(w(!1),S.actionRef.current?.reload())},W=()=>{if(D.length===0){p.message.warning(y.selectItemsToDelete);return}p.Modal.confirm({title:y.confirmBulkDeleteTitle(D.length),content:y.confirmDeleteContent,okText:y.confirmBulkDeleteOk,okType:`danger`,cancelText:y.cancel,onOk:async()=>{let e=await Promise.all(D.map(async e=>({key:e,ok:await S.remove(e)}))),t=e.filter(e=>!e.ok);O(t.map(e=>e.key)),t.length===0?p.message.success(y.bulkDeleteSuccess(e.length)):p.message.error(y.bulkDeletePartial(e.length-t.length,e.length,t.length)),S.actionRef.current?.reload()}})},G=h===`all`&&typeof S.dataSource.listAll==`function`,K=async e=>{P(!0);try{let n=G?await S.dataSource.listAll({sort:j.current.sort,filters:j.current.filters}):A.current;if(n.length===0){p.message.warning(y.nothingToExport);return}let i=t.filter(e=>e.fieldType!==`password`).map(e=>({title:e.title,dataIndex:String(e.dataIndex),fieldType:e.fieldType,enumOptions:e.enumOptions}));u.exportData({data:[...n],columns:i,filename:r?r.toLowerCase().replace(/\s+/g,`-`):`export`,format:e})}catch(e){let t=c.t(e);a.onError?.(`list`,t),p.message.error(y.exportFailed(t.message))}finally{P(!1)}},q=G?y.exportAll:y.exportPage,J=(0,g.jsxs)(f.ProConfigProvider,{needDeps:!0,intl:b,children:[(0,g.jsx)(f.ProTable,{headerTitle:r,rowKey:n,rowClassName:(e,t)=>t%2==0?`row-differentiator`:``,actionRef:S.actionRef,columns:V,request:H,search:{labelWidth:`auto`},pagination:{pageSize:i,showSizeChanger:!0,showQuickJumper:!0},rowSelection:o?{selectedRowKeys:D,onChange:O}:void 0,toolBarRender:()=>[(0,g.jsx)(p.Button,{type:`primary`,icon:(0,g.jsx)(d.PlusOutlined,{}),onClick:()=>z(),children:y.create},`add`),...o&&D.length>0?[(0,g.jsx)(p.Button,{danger:!0,onClick:W,children:y.deleteSelected(D.length)},`bulk-delete`)]:[],(0,g.jsx)(p.Dropdown,{menu:{items:[...l?[{key:`export-csv`,label:q(`CSV`),disabled:M,onClick:()=>void K(`csv`)},{key:`export-json`,label:q(`JSON`),disabled:M,onClick:()=>void K(`json`)},{key:`export-excel`,label:q(`Excel`),disabled:M,onClick:()=>void K(`excel`)},{type:`divider`}]:[],{key:`refresh`,label:y.refresh,onClick:()=>S.actionRef.current?.reload()}]},children:(0,g.jsx)(p.Button,{children:(0,g.jsx)(d.EllipsisOutlined,{})})},`menu`)],options:{setting:s?{listsHeight:400}:!1,density:s,reload:!0},dateFormatter:`string`}),(0,g.jsx)(p.Modal,{title:T?y.editTitle:y.createTitle,open:C,onOk:U,onCancel:()=>w(!1),okText:y.ok,cancelText:y.cancel,destroyOnHidden:!0,width:600,children:(0,g.jsx)(p.Form,{form:k,layout:`vertical`,children:t.map(e=>{let t=e.dataIndex,n=!(e.fieldEditable??!0),r=N(e.fieldType),i=R(e),a=e.formConfig?.rules??(e.formConfig?.required?[{required:!0,message:y.requiredField(e.title)}]:[]),o=[...r.rules?.(i,y)??[],...a],s=e.formConfig?.component??r.formControl(i,n,y);return s?(0,g.jsx)(p.Form.Item,{name:t,label:e.title,rules:o,valuePropName:r.valuePropName,children:s},t):null})})})]});return x?(0,g.jsx)(p.ConfigProvider,{locale:x,children:J}):J};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return L}});
|
package/dist/CrudTable.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./CrudTable-DRN70sET.cjs");require("./exportData.cjs"),exports.default=e.t;
|