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.
Files changed (41) hide show
  1. package/README.md +293 -783
  2. package/dist/CrudTable-Btf58zof.js +610 -0
  3. package/dist/CrudTable-DRN70sET.cjs +1 -0
  4. package/dist/CrudTable.cjs +1 -1
  5. package/dist/CrudTable.d.ts +85 -18
  6. package/dist/CrudTable.js +3 -306
  7. package/dist/CrudTableLazy.cjs +1 -1
  8. package/dist/CrudTableLazy.d.ts +4 -3
  9. package/dist/CrudTableLazy.js +8 -7
  10. package/dist/core/CustomDataSource.d.ts +35 -0
  11. package/dist/core/InMemoryDataSource.d.ts +30 -0
  12. package/dist/core/LocalStorageDataSource.d.ts +30 -0
  13. package/dist/core/RestDataSource.d.ts +120 -0
  14. package/dist/core/StaticDataSource.d.ts +20 -0
  15. package/dist/core/identity.d.ts +28 -0
  16. package/dist/core/inMemoryQuery.d.ts +26 -0
  17. package/dist/core/index.d.ts +11 -0
  18. package/dist/core/types.d.ts +86 -0
  19. package/dist/en_US-D3Kl6g3n.cjs +1 -0
  20. package/dist/en_US-DGCMDOdX.js +41 -0
  21. package/dist/exportData.cjs +13 -13
  22. package/dist/exportData.js +48 -39
  23. package/dist/fields/registry.d.ts +38 -0
  24. package/dist/fields/types.d.ts +29 -0
  25. package/dist/hooks/useCrudTable.d.ts +114 -57
  26. package/dist/hooks/useLocalStorageCrud.d.ts +14 -9
  27. package/dist/index.cjs +1 -0
  28. package/dist/index.d.ts +14 -6
  29. package/dist/index.js +7 -0
  30. package/dist/locale/en_US.d.ts +10 -0
  31. package/dist/locale/index.d.ts +4 -0
  32. package/dist/locale/types.d.ts +89 -0
  33. package/dist/locale/useResolvedLocale.d.ts +35 -0
  34. package/dist/useCrudTable-40jpmCkr.cjs +1 -0
  35. package/dist/useCrudTable-DxjnXVlQ.js +460 -0
  36. package/dist/useCrudTable.cjs +1 -1
  37. package/dist/useCrudTable.js +2 -235
  38. package/dist/useLocalStorageCrud.cjs +1 -1
  39. package/dist/useLocalStorageCrud.js +12 -198
  40. package/dist/utils/exportData.d.ts +37 -12
  41. 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}});
@@ -1 +1 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});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,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./useCrudTable.cjs`);let l=require(`@ant-design/icons`),u=require(`@ant-design/pro-components`),d=require(`antd`),f=require(`react`),p=require(`date-fns`),m=require(`dayjs`);m=s(m,1);let h=require(`react/jsx-runtime`);var g=e=>{let{columns:t,rowKey:n,title:r,defaultPageSize:i=10,hookConfig:a,enableBulkOperations:o=!1,customActions:s}=e,g=c.useCrudTable(n,{defaultPageSize:i,...a}),[_,v]=(0,f.useState)(!1),[y,b]=(0,f.useState)(null),[x,S]=(0,f.useState)([]),[C]=d.Form.useForm();(0,f.useEffect)(()=>{g.refresh()},[]);let w=t.map(e=>{let t={...e,dataIndex:e.dataIndex,title:e.title,search:e.searchable!==!1};switch(e.fieldType){case`date`:return{...t,valueType:`dateTime`,render:(t,n)=>{let r=n[e.dataIndex];if(!r)return`-`;try{return(0,h.jsx)(`span`,{children:(0,p.format)((0,p.parseISO)(r),`yyyy-MM-dd HH:mm`)})}catch{return(0,h.jsx)(`span`,{children:r})}}};case`enum`:return{...t,valueType:`select`,valueEnum:e.enumOptions,render:(t,n)=>{let r=n[e.dataIndex],i=e.enumOptions?.[r];return i?(0,h.jsx)(d.Tag,{color:i.color,children:i.text}):r}};case`number`:return{...t,valueType:`digit`,render:(t,n)=>{let r=n[e.dataIndex];return typeof r==`number`?r.toLocaleString():r}};case`boolean`:return{...t,valueType:`switch`,render:(t,n)=>(0,h.jsx)(d.Tag,{color:n[e.dataIndex]?`green`:`red`,children:n[e.dataIndex]?`Yes`:`No`})};case`custom`:return{...t,render:(t,n)=>e.customRender?.(n[e.dataIndex],n)};default:return t}});w.push({title:`Actions`,valueType:`option`,width:200,render:(e,t)=>{let r=[(0,h.jsx)(d.Button,{type:`link`,size:`small`,onClick:()=>E(t),children:`Edit`},`edit`),(0,h.jsx)(d.Button,{type:`link`,size:`small`,danger:!0,onClick:()=>O(t[n]),children:`Delete`},`delete`)],i=s?.(t,g)||[];return[...r,...i]}});let T=async(e,t,n)=>{try{let r={current:e.current,pageSize:e.pageSize,sortBy:Object.keys(t)[0],sortOrder:Object.values(t)[0],...n,...e},i=g.operations;if(i?.getList){let e=await i.getList(r);return{data:e.data,success:!0,total:e.total}}return{data:g.state.data,success:!0,total:g.state.total}}catch{return d.message.error(`Failed to fetch data`),{data:[],success:!1,total:0}}},E=e=>{if(b(e||null),e){let n={...e};t.forEach(e=>{let t=e.dataIndex;if(e.fieldType===`date`&&n[t])try{n[t]=(0,m.default)(n[t])}catch{}}),C.setFieldsValue(n)}else C.resetFields();v(!0)},D=async()=>{try{let e=await C.validateFields(),r={...e};t.forEach(t=>{let n=t.dataIndex;if(t.fieldType===`date`&&e[n])try{r[n]=(0,p.formatISO)(e[n])}catch{}t.formConfig?.transform&&(r[n]=t.formConfig.transform(e[n]))}),y&&y[n]?await g.update(y[n],r):await g.create(r),v(!1),g.actionRef.current?.reload()}catch(e){console.error(`Form validation failed:`,e)}},O=async e=>{d.Modal.confirm({title:`Are you sure?`,content:`This action cannot be undone.`,okText:`Yes, Delete`,okType:`danger`,cancelText:`Cancel`,onOk:async()=>{await g.delete(e)&&g.actionRef.current?.reload()}})},k=async()=>{if(x.length===0){d.message.warning(`Please select items to delete`);return}d.Modal.confirm({title:`Delete ${x.length} items?`,content:`This action cannot be undone.`,okText:`Yes, Delete All`,okType:`danger`,cancelText:`Cancel`,onOk:async()=>{let e=x.map(e=>g.delete(e));await Promise.allSettled(e),S([]),g.actionRef.current?.reload()}})},A=o?{selectedRowKeys:x,onChange:S}:void 0;return(0,h.jsxs)(u.ProConfigProvider,{needDeps:!0,intl:u.enUSIntl,children:[(0,h.jsx)(u.ProTable,{headerTitle:r,rowKey:n,rowClassName:(e,t)=>t%2==0?`row-differentiator`:``,actionRef:g.actionRef,columns:w,request:T,search:{labelWidth:`auto`},pagination:{pageSize:i,showSizeChanger:!0,showQuickJumper:!0},loading:g.state.loading,rowSelection:A,toolBarRender:()=>[(0,h.jsx)(d.Button,{type:`primary`,icon:(0,h.jsx)(l.PlusOutlined,{}),onClick:()=>E(),children:`New`},`add`),...o&&x.length>0?[(0,h.jsxs)(d.Button,{danger:!0,onClick:k,children:[`Delete Selected (`,x.length,`)`]},`bulk-delete`)]:[],(0,h.jsx)(d.Dropdown,{menu:{items:[{key:`export`,label:`Export`,disabled:!0},{key:`refresh`,label:`Refresh`,onClick:()=>g.refresh()}]},children:(0,h.jsx)(d.Button,{children:(0,h.jsx)(l.EllipsisOutlined,{})})},`menu`)],options:{setting:{listsHeight:400},reload:()=>g.refresh()},dateFormatter:`string`}),(0,h.jsx)(d.Modal,{title:y?`Edit Item`:`Create Item`,open:_,onOk:D,onCancel:()=>v(!1),destroyOnClose:!0,width:600,children:(0,h.jsx)(d.Form,{form:C,layout:`vertical`,children:t.map(e=>{if(!e.dataIndex)return null;let t=e.dataIndex,n=e.title,r=!(e.fieldEditable??!0),i=e.formConfig?.rules||(e.formConfig?.required?[{required:!0,message:`${n} is required`}]:[]);if(e.formConfig?.component)return(0,h.jsx)(d.Form.Item,{name:t,label:n,rules:i,children:e.formConfig.component},t);switch(e.fieldType){case`string`:return(0,h.jsx)(d.Form.Item,{name:t,label:n,rules:i,children:(0,h.jsx)(d.Input,{disabled:r})},t);case`number`:return(0,h.jsx)(d.Form.Item,{name:t,label:n,rules:i,children:(0,h.jsx)(d.InputNumber,{style:{width:`100%`},disabled:r})},t);case`date`:return(0,h.jsx)(d.Form.Item,{name:t,label:n,rules:i,children:(0,h.jsx)(d.DatePicker,{style:{width:`100%`},showTime:!0,disabled:r})},t);case`boolean`:return(0,h.jsx)(d.Form.Item,{name:t,label:n,valuePropName:`checked`,children:(0,h.jsx)(d.Switch,{disabled:r})},t);case`enum`:return(0,h.jsx)(d.Form.Item,{name:t,label:n,rules:i,children:(0,h.jsx)(d.Select,{disabled:r,placeholder:`Select ${n.toLowerCase()}`,options:Object.entries(e.enumOptions||{}).map(([e,t])=>({label:t.text,value:e}))})},t);default:return null}})})})]})};exports.default=g,exports.t=s;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./CrudTable-DRN70sET.cjs");require("./exportData.cjs"),exports.default=e.t;