@kingteza/crud-component 1.32.1 → 1.34.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 (38) hide show
  1. package/dist/common/rich/index.cjs.js +2 -2
  2. package/dist/common/rich/index.d.ts +1 -1
  3. package/dist/common/rich/index.es.js +119 -75
  4. package/dist/context/CrudComponentProvider.cjs.js +1 -1
  5. package/dist/context/CrudComponentProvider.d.ts +14 -0
  6. package/dist/context/CrudComponentProvider.es.js +22 -14
  7. package/dist/context/CrudNavigateContext.cjs.js +1 -0
  8. package/dist/context/CrudNavigateContext.d.ts +14 -0
  9. package/dist/context/CrudNavigateContext.es.js +29 -0
  10. package/dist/context/index.d.ts +1 -0
  11. package/dist/crud/CrudComponent.d.ts +1 -0
  12. package/dist/crud/CrudField.cjs.js +1 -1
  13. package/dist/crud/CrudField.es.js +92 -91
  14. package/dist/crud/CrudReportComponent.cjs.js +1 -1
  15. package/dist/crud/CrudReportComponent.d.ts +10 -1
  16. package/dist/crud/CrudReportComponent.es.js +193 -134
  17. package/dist/crud/CrudTextAreaComponent.cjs.js +1 -1
  18. package/dist/crud/CrudTextAreaComponent.d.ts +2 -1
  19. package/dist/crud/CrudTextAreaComponent.es.js +19 -17
  20. package/dist/crud/index.d.ts +1 -1
  21. package/dist/hooks/NavigatorHooks.cjs.js +1 -1
  22. package/dist/hooks/NavigatorHooks.d.ts +6 -1
  23. package/dist/hooks/NavigatorHooks.es.js +13 -6
  24. package/dist/index.d.ts +1 -1
  25. package/dist/navigator/CrudNextNavigateSync.cjs.js +1 -0
  26. package/dist/navigator/CrudNextNavigateSync.d.ts +20 -0
  27. package/dist/navigator/CrudNextNavigateSync.es.js +20 -0
  28. package/dist/navigator/CrudReactRouterNavigateSync.cjs.js +1 -0
  29. package/dist/navigator/CrudReactRouterNavigateSync.d.ts +18 -0
  30. package/dist/navigator/CrudReactRouterNavigateSync.es.js +10 -0
  31. package/dist/next.cjs.js +1 -0
  32. package/dist/next.d.ts +1 -0
  33. package/dist/next.es.js +4 -0
  34. package/dist/react-router.cjs.js +1 -0
  35. package/dist/react-router.d.ts +1 -0
  36. package/dist/react-router.es.js +4 -0
  37. package/dist/style.css +4 -3
  38. package/package.json +20 -3
@@ -1,5 +1,5 @@
1
- import { jsx as o, Fragment as L, jsxs as M } from "react/jsx-runtime";
2
- import { Form as O, Radio as W, Checkbox as _, Col as re, Select as S, Tag as $, ColorPicker as te } from "antd";
1
+ import { jsx as t, Fragment as I, jsxs as M } from "react/jsx-runtime";
2
+ import { Form as L, Radio as W, Checkbox as _, Col as re, Select as S, Tag as $, ColorPicker as te } from "antd";
3
3
  import { useEffect as j, useState as z, useMemo as J, useCallback as K } from "react";
4
4
  import oe from "react-highlight-words";
5
5
  import { useTranslationLibNoNS as ae } from "../locale/index.es.js";
@@ -20,7 +20,7 @@ function je(F) {
20
20
  label: n,
21
21
  name: c,
22
22
  type: v,
23
- required: d,
23
+ required: s,
24
24
  hidden: H,
25
25
  rules: h = [],
26
26
  updatable: p = !0,
@@ -31,50 +31,51 @@ function je(F) {
31
31
  fieldHelper: f,
32
32
  formLayoutProps: N,
33
33
  ...e
34
- } = F, C = O.useFormInstance();
34
+ } = F, C = L.useFormInstance();
35
35
  j(() => {
36
36
  if (v === "select") {
37
37
  const {
38
- items: t = [],
38
+ items: o = [],
39
39
  onSearch: l,
40
40
  searchOnType: i
41
41
  } = e;
42
- !(t != null && t.length) && !i && (l == null || l(void 0, C, e == null ? void 0 : e.updatingValue));
42
+ !(o != null && o.length) && !i && (l == null || l(void 0, C, e == null ? void 0 : e.updatingValue));
43
43
  }
44
44
  }, [C, e, v, e == null ? void 0 : e.updatingValue]);
45
45
  const { t: P } = ae();
46
- if (R || H) return /* @__PURE__ */ o(L, {});
46
+ if (R || H) return /* @__PURE__ */ t(I, {});
47
47
  if (T)
48
48
  return T(C, F);
49
49
  switch (v) {
50
50
  case "text":
51
51
  case "email":
52
52
  case "password": {
53
- const { onChange: t, placeholder: l, addonAfter: i, addonBefore: g } = e;
54
- return /* @__PURE__ */ o(
53
+ const { maxLength: o, onChange: l, placeholder: i, addonAfter: g, addonBefore: b } = e;
54
+ return /* @__PURE__ */ t(
55
55
  ue,
56
56
  {
57
57
  ...N,
58
- placeholder: l,
58
+ maxLength: o,
59
+ placeholder: i,
59
60
  disabled: !p,
60
61
  rules: h,
61
- required: d,
62
- onChange: t ? (b) => t(b, C) : void 0,
62
+ required: s,
63
+ onChange: l ? (d) => l(d, C) : void 0,
63
64
  type: v,
64
65
  name: c,
65
66
  tooltip: x,
66
67
  label: n,
67
68
  className: m,
68
69
  autoComplete: "new-password",
69
- addonAfter: i,
70
- addonBefore: g,
70
+ addonAfter: g,
71
+ addonBefore: b,
71
72
  help: f
72
73
  }
73
74
  );
74
75
  }
75
76
  case "phone": {
76
- const { onChange: t, placeholder: l, addonAfter: i, addonBefore: g } = e;
77
- return /* @__PURE__ */ o(
77
+ const { onChange: o, placeholder: l, addonAfter: i, addonBefore: g } = e;
78
+ return /* @__PURE__ */ t(
78
79
  me,
79
80
  {
80
81
  ...e,
@@ -82,8 +83,8 @@ function je(F) {
82
83
  placeholder: l,
83
84
  disabled: !p,
84
85
  rules: h,
85
- required: d,
86
- onChange: t ? (b) => t(b, C) : void 0,
86
+ required: s,
87
+ onChange: o ? (b) => o(b, C) : void 0,
87
88
  type: v,
88
89
  name: c,
89
90
  tooltip: x,
@@ -98,15 +99,15 @@ function je(F) {
98
99
  }
99
100
  case "number": {
100
101
  const {
101
- onChange: t,
102
+ onChange: o,
102
103
  placeholder: l,
103
104
  allowMinus: i,
104
105
  min: g,
105
106
  max: b,
106
- addonAfter: s,
107
+ addonAfter: d,
107
108
  addonBefore: w
108
109
  } = e;
109
- return /* @__PURE__ */ o(
110
+ return /* @__PURE__ */ t(
110
111
  ce,
111
112
  {
112
113
  ...N,
@@ -114,15 +115,15 @@ function je(F) {
114
115
  disabled: !p,
115
116
  moneyField: !!e.formatted,
116
117
  type: v,
117
- onChange: t ? (r) => t(r, C) : void 0,
118
+ onChange: o ? (r) => o(r, C) : void 0,
118
119
  rules: h,
119
120
  autoComplete: "false",
120
- required: d,
121
+ required: s,
121
122
  tooltip: x,
122
123
  className: m,
123
124
  min: i ? null : g,
124
125
  max: b,
125
- addonAfter: s,
126
+ addonAfter: d,
126
127
  addonBefore: w,
127
128
  name: c,
128
129
  label: n,
@@ -132,25 +133,25 @@ function je(F) {
132
133
  }
133
134
  case "date": {
134
135
  const {
135
- range: t,
136
+ range: o,
136
137
  disableToday: l,
137
138
  disabledFutureDays: i,
138
139
  disabledPastDays: g,
139
140
  onChange: b,
140
- placeholder: s,
141
+ placeholder: d,
141
142
  format: w
142
143
  } = e;
143
- return /* @__PURE__ */ o(
144
+ return /* @__PURE__ */ t(
144
145
  de,
145
146
  {
146
147
  ...N,
147
- placeholder: s,
148
- required: d,
148
+ placeholder: d,
149
+ required: s,
149
150
  disabled: !p,
150
151
  type: v,
151
152
  format: w,
152
153
  tooltip: x,
153
- range: t,
154
+ range: o,
154
155
  name: c,
155
156
  label: n,
156
157
  onChange: b ? (r) => b(r, C) : void 0,
@@ -164,27 +165,27 @@ function je(F) {
164
165
  }
165
166
  case "time": {
166
167
  const {
167
- range: t = !1,
168
+ range: o = !1,
168
169
  disableCurrent: l,
169
170
  disabledFuture: i,
170
171
  disabledPast: g,
171
172
  onChange: b,
172
- use12Hours: s,
173
+ use12Hours: d,
173
174
  format: w,
174
175
  placeholder: r
175
176
  } = e;
176
- return /* @__PURE__ */ o(
177
+ return /* @__PURE__ */ t(
177
178
  se,
178
179
  {
179
180
  ...N,
180
181
  placeholder: r,
181
- required: d,
182
+ required: s,
182
183
  format: w,
183
184
  disabled: !p,
184
185
  type: v,
185
186
  tooltip: x,
186
- range: t,
187
- use12Hours: s,
187
+ range: o,
188
+ use12Hours: d,
188
189
  name: c,
189
190
  label: n,
190
191
  onChange: b ? (y) => b(y, C) : void 0,
@@ -197,13 +198,13 @@ function je(F) {
197
198
  );
198
199
  }
199
200
  case "textarea":
200
- return /* @__PURE__ */ o(pe, { ...F });
201
+ return /* @__PURE__ */ t(pe, { ...F });
201
202
  case "image":
202
- return /* @__PURE__ */ o(
203
+ return /* @__PURE__ */ t(
203
204
  ne,
204
205
  {
205
206
  ...e,
206
- required: d,
207
+ required: s,
207
208
  name: c,
208
209
  label: n,
209
210
  rules: h,
@@ -215,11 +216,11 @@ function je(F) {
215
216
  }
216
217
  );
217
218
  case "file":
218
- return /* @__PURE__ */ o(
219
+ return /* @__PURE__ */ t(
219
220
  le,
220
221
  {
221
222
  ...e,
222
- required: d,
223
+ required: s,
223
224
  name: c,
224
225
  label: n,
225
226
  rules: h,
@@ -231,11 +232,11 @@ function je(F) {
231
232
  }
232
233
  );
233
234
  case "select":
234
- return /* @__PURE__ */ o(
235
+ return /* @__PURE__ */ t(
235
236
  fe,
236
237
  {
237
238
  ...e,
238
- required: d,
239
+ required: s,
239
240
  name: c,
240
241
  label: n,
241
242
  rules: h,
@@ -250,26 +251,26 @@ function je(F) {
250
251
  );
251
252
  case "enum": {
252
253
  const {
253
- enum: t,
254
+ enum: o,
254
255
  translation: l,
255
256
  onChange: i,
256
257
  onSearch: g,
257
258
  multiple: b,
258
- tagRender: s
259
- } = e, w = Array.isArray(t) ? t : Object.keys(t);
260
- return "radio" in e && e.radio ? /* @__PURE__ */ o(
261
- O.Item,
259
+ tagRender: d
260
+ } = e, w = Array.isArray(o) ? o : Object.keys(o);
261
+ return "radio" in e && e.radio ? /* @__PURE__ */ t(
262
+ L.Item,
262
263
  {
263
264
  ...e,
264
265
  ...N,
265
266
  name: c,
266
- required: d,
267
+ required: s,
267
268
  tooltip: x,
268
269
  rules: h,
269
270
  label: n,
270
271
  className: ["w-100", m].join(" "),
271
272
  help: f,
272
- children: /* @__PURE__ */ o(
273
+ children: /* @__PURE__ */ t(
273
274
  W.Group,
274
275
  {
275
276
  ...e,
@@ -277,41 +278,41 @@ function je(F) {
277
278
  var y;
278
279
  return i((y = r == null ? void 0 : r.target) == null ? void 0 : y.value, C);
279
280
  } : void 0,
280
- children: w.map((r) => /* @__PURE__ */ o(W, { disabled: !p, value: r, children: l ? P(l[r]) : r }, r))
281
+ children: w.map((r) => /* @__PURE__ */ t(W, { disabled: !p, value: r, children: l ? P(l[r]) : r }, r))
281
282
  }
282
283
  )
283
284
  }
284
- ) : "checkbox" in e && e.checkbox ? /* @__PURE__ */ o(
285
- O.Item,
285
+ ) : "checkbox" in e && e.checkbox ? /* @__PURE__ */ t(
286
+ L.Item,
286
287
  {
287
288
  ...e,
288
289
  ...N,
289
290
  name: c,
290
- required: d,
291
+ required: s,
291
292
  tooltip: x,
292
293
  rules: h,
293
294
  label: n,
294
295
  className: ["w-100", m].join(" "),
295
296
  help: f,
296
- children: /* @__PURE__ */ o(_.Group, { className: "w-100", children: w.map((r) => {
297
- const y = /* @__PURE__ */ o(_, { disabled: !p, value: r, children: l ? P(l[r]) : r }, r);
298
- return "checkboxGrid" in e && e.checkboxGrid ? /* @__PURE__ */ o(re, { ...e.checkboxGrid, children: y }) : y;
297
+ children: /* @__PURE__ */ t(_.Group, { className: "w-100", children: w.map((r) => {
298
+ const y = /* @__PURE__ */ t(_, { disabled: !p, value: r, children: l ? P(l[r]) : r }, r);
299
+ return "checkboxGrid" in e && e.checkboxGrid ? /* @__PURE__ */ t(re, { ...e.checkboxGrid, children: y }) : y;
299
300
  }) })
300
301
  }
301
- ) : /* @__PURE__ */ o(
302
+ ) : /* @__PURE__ */ t(
302
303
  V,
303
304
  {
304
305
  ...e,
305
306
  ...N,
306
- tagRender: typeof s == "function" ? s : s ? (r) => {
307
- const { value: y, label: I } = r, k = s[y];
308
- return k ? /* @__PURE__ */ o($, { color: k.color, children: I }) : /* @__PURE__ */ o($, { children: I });
307
+ tagRender: typeof d == "function" ? d : d ? (r) => {
308
+ const { value: y, label: O } = r, k = d[y];
309
+ return k ? /* @__PURE__ */ t($, { color: k.color, children: O }) : /* @__PURE__ */ t($, { children: O });
309
310
  } : void 0,
310
311
  onChange: i ? (r) => i(r, C) : void 0,
311
312
  className: ["w-100", m].join(" "),
312
313
  name: c,
313
314
  items: w,
314
- required: d,
315
+ required: s,
315
316
  tooltip: x,
316
317
  rules: h,
317
318
  label: n,
@@ -321,19 +322,19 @@ function je(F) {
321
322
  allowClear: !0,
322
323
  mode: b ? "multiple" : void 0,
323
324
  showLoadingInEmptyIndicator: !0,
324
- itemBuilder: (r) => /* @__PURE__ */ o(S.Option, { value: r, children: l ? P(l[r]) : r }, r)
325
+ itemBuilder: (r) => /* @__PURE__ */ t(S.Option, { value: r, children: l ? P(l[r]) : r }, r)
325
326
  }
326
327
  );
327
328
  }
328
329
  case "checkbox": {
329
- const { onChange: t, switch: l } = e;
330
- return /* @__PURE__ */ o(
330
+ const { onChange: o, switch: l } = e;
331
+ return /* @__PURE__ */ t(
331
332
  ie,
332
333
  {
333
334
  ...N,
334
335
  className: m,
335
336
  rules: h,
336
- onChange: t ? (i) => t(i, C) : void 0,
337
+ onChange: o ? (i) => o(i, C) : void 0,
337
338
  label: n,
338
339
  tooltip: x,
339
340
  disabled: !p,
@@ -344,12 +345,12 @@ function je(F) {
344
345
  );
345
346
  }
346
347
  case "color":
347
- return /* @__PURE__ */ o(
348
+ return /* @__PURE__ */ t(
348
349
  ge,
349
350
  {
350
351
  ...e,
351
352
  type: "color",
352
- required: d,
353
+ required: s,
353
354
  name: c,
354
355
  label: n,
355
356
  rules: h,
@@ -361,7 +362,7 @@ function je(F) {
361
362
  }
362
363
  );
363
364
  default:
364
- return /* @__PURE__ */ o(L, { children: `${v} Not Implemented` });
365
+ return /* @__PURE__ */ t(I, { children: `${v} Not Implemented` });
365
366
  }
366
367
  }
367
368
  function fe(F) {
@@ -369,7 +370,7 @@ function fe(F) {
369
370
  items: n = [],
370
371
  loading: c,
371
372
  searchOnType: v,
372
- onSearch: d,
373
+ onSearch: s,
373
374
  multiple: H,
374
375
  onChange: h,
375
376
  highlightSearch: p,
@@ -382,30 +383,30 @@ function fe(F) {
382
383
  name: e,
383
384
  tagRender: C,
384
385
  updatingValue: P,
385
- onSet: t,
386
+ onSet: o,
386
387
  placeholder: l,
387
388
  allowClear: i = !0,
388
389
  selectOptionRender: g,
389
390
  formLayoutProps: b
390
- } = F, s = F.form, [w, r] = z(""), y = J(() => Q.getRealName(e), [e]), I = J(
391
+ } = F, d = F.form, [w, r] = z(""), y = J(() => Q.getRealName(e), [e]), O = J(
391
392
  () => Q.getRealName(e, "upsertFieldName"),
392
393
  [e]
393
- ), k = O.useWatch(y, s), [A, B] = z(!0);
394
+ ), k = L.useWatch(y, d), [A, B] = z(!0);
394
395
  j(() => {
395
- t && A && k && (t == null || t(k, n, s), B(!1));
396
- }, [A, s, n, y, t, k]), j(() => {
396
+ o && A && k && (o == null || o(k, n, d), B(!1));
397
+ }, [A, d, n, y, o, k]), j(() => {
397
398
  k && B(!0);
398
399
  }, [k]);
399
400
  const X = K(
400
401
  async (a) => {
401
- r(a), v && (d == null || d(a, s, P));
402
+ r(a), v && (s == null || s(a, d, P));
402
403
  },
403
- [s, d, v, P]
404
+ [d, s, v, P]
404
405
  ), Y = K(
405
406
  (a) => g ? g(a) : a.value,
406
407
  [g]
407
408
  );
408
- return /* @__PURE__ */ o(
409
+ return /* @__PURE__ */ t(
409
410
  V,
410
411
  {
411
412
  ...F,
@@ -415,10 +416,10 @@ function fe(F) {
415
416
  maxTagPlaceholder: (a) => /* @__PURE__ */ M(
416
417
  he,
417
418
  {
418
- title: /* @__PURE__ */ o(L, { children: a.map((u) => /* @__PURE__ */ M(L, { children: [
419
+ title: /* @__PURE__ */ t(I, { children: a.map((u) => /* @__PURE__ */ M(I, { children: [
419
420
  u.label,
420
421
  " ",
421
- /* @__PURE__ */ o("br", {})
422
+ /* @__PURE__ */ t("br", {})
422
423
  ] })) }),
423
424
  children: [
424
425
  "+",
@@ -428,14 +429,14 @@ function fe(F) {
428
429
  ),
429
430
  placeholder: l,
430
431
  onSelect: (a) => {
431
- t == null || t(a == null ? void 0 : a.key, n, s);
432
+ o == null || o(a == null ? void 0 : a.key, n, d);
432
433
  },
433
434
  onChange: h ? (a) => {
434
- r(""), h(a, s);
435
+ r(""), h(a, d);
435
436
  } : void 0,
436
437
  mode: H ? "multiple" : void 0,
437
438
  className: ["w-100", m].join(" "),
438
- name: I,
439
+ name: O,
439
440
  items: n,
440
441
  required: R,
441
442
  tooltip: x,
@@ -459,13 +460,13 @@ function fe(F) {
459
460
  } : void 0,
460
461
  itemBuilder: p ? (a) => {
461
462
  const u = a.value ? String(a.value) : void 0;
462
- return /* @__PURE__ */ o(
463
+ return /* @__PURE__ */ t(
463
464
  S.Option,
464
465
  {
465
466
  value: a.key,
466
467
  title: u,
467
468
  disabled: a.disabled,
468
- children: /* @__PURE__ */ o(
469
+ children: /* @__PURE__ */ t(
469
470
  oe,
470
471
  {
471
472
  highlightClassName: "highlight-text",
@@ -477,7 +478,7 @@ function fe(F) {
477
478
  },
478
479
  a.key
479
480
  );
480
- } : (a) => /* @__PURE__ */ o(
481
+ } : (a) => /* @__PURE__ */ t(
481
482
  S.Option,
482
483
  {
483
484
  value: a.key,
@@ -495,25 +496,25 @@ function ge(F) {
495
496
  formLayoutProps: n,
496
497
  required: c,
497
498
  fieldClassName: v,
498
- rules: d,
499
+ rules: s,
499
500
  fieldTooltip: H,
500
501
  updatable: h,
501
502
  label: p,
502
503
  name: R,
503
504
  fieldHelper: m
504
505
  } = F;
505
- return /* @__PURE__ */ o(
506
- O.Item,
506
+ return /* @__PURE__ */ t(
507
+ L.Item,
507
508
  {
508
509
  ...n,
509
510
  label: p,
510
511
  name: R,
511
512
  required: c,
512
- rules: d,
513
+ rules: s,
513
514
  tooltip: H,
514
515
  help: m,
515
516
  getValueFromEvent: (T) => typeof T == "object" ? T.toHexString() : T,
516
- children: /* @__PURE__ */ o(
517
+ children: /* @__PURE__ */ t(
517
518
  te,
518
519
  {
519
520
  disabledAlpha: !0,
@@ -1 +1 @@
1
- "use strict";const t=require("react/jsx-runtime"),K=require("@ant-design/icons"),s=require("antd"),i=require("react"),x=require("./CrudField.cjs.js"),Q=require("./view/CrudViewer.cjs.js"),W=require("../common/report/SelectFieldInReport.cjs.js"),V=require("./view/CrudViewerUtil.cjs.js"),X=require("../locale/index.cjs.js"),Y=require("../common/select/SelectComponent.cjs.js"),v=require("../common/button/Button.cjs.js"),Z=require("../common/button/PrintButton.cjs.js"),A={lg:6,md:8,sm:12,xs:24},E={lg:12,md:16,sm:24,xs:24};function k({fields:d,data:u,idField:L,loadingData:f,onSubmit:g,paginateProps:G,size:M,onClickPrint:h,onClickExcelExport:y,minusHeight:O,extraSearchFields:R,searchOnMount:B,summary:U,showFieldsSelectingMode:_="checkbox"}){const{t:$}=X.useTranslationLib(),{searchable:z,selectable:c,sortable:q,defaultSort:p}=i.useMemo(()=>{var b,m,N,T,I;const e=[],r=[],o=[];let n;for(const l of d.filter(J=>!J.hidden))l.type==="image"||!l.report||((b=l.report)!=null&&b.searchable&&e.push(l),(m=l.report)!=null&&m.sortable&&(r.push(l),!n&&((N=l.report)!=null&&N.defaultSort)&&(n=l)),l.hideInTable||o.push({id:l.name,label:l.label,lock:(T=l.report)==null?void 0:T.lock,alreadySelected:(I=l.report)==null?void 0:I.alreadySelected}));return{defaultSort:n,searchable:e,sortable:r,selectable:o}},[d]),[S,F]=i.useState([]),j=i.useCallback(async({sortBy:e,sortByType:r,showFields:o=[],...n})=>{const b=[];e&&b.push({field:e,sort:r??"DESC"}),F(d.filter(m=>o.includes(m.name)).map(m=>({...m,hideInTable:!1}))),g({showFields:o,sortBy:b,...n})},[d,g]),[a]=s.Form.useForm(),[w,D]=i.useState(!1),[C,H]=i.useState(!0);return i.useEffect(()=>{if(B&&C){const e=setTimeout(()=>{a.validateFields().then(r=>{j(r)}),H(!1)},200);return()=>clearTimeout(e)}},[j,a,C,B]),i.useEffect(()=>{var r,o;!a.getFieldValue("sortBy")&&p&&a.setFieldsValue({sortBy:p.name,sortByType:typeof((r=p.report)==null?void 0:r.defaultSort)=="string"?(o=p.report)==null?void 0:o.defaultSort:"ASC"})},[p,a]),i.useEffect(()=>{if(w){const e=c.filter(r=>r.alreadySelected).map(r=>r.id);F(d.filter(r=>e.includes(r.name)).map(r=>({...r,hideInTable:!1}))),D(!1)}},[d,w,c]),t.jsxs(s.Space,{className:"w-100",direction:"vertical",children:[t.jsxs(s.Form,{form:a,layout:"vertical",onFinish:j,children:[t.jsxs(s.Row,{gutter:[8,8],children:[z.map(e=>{var r,o,n;return t.jsx(s.Col,{...e.grid??A,style:{alignSelf:"end"},children:(r=e.report)!=null&&r.customRender?e.report.customRender(a):e.type==="date"?t.jsx(x.default,{...e,type:"date",range:(o=e.report)==null?void 0:o.range,required:!!((n=e.report)!=null&&n.required),readonly:!1,fieldClassName:"mb-0"}):e.type==="select"?t.jsx(x.default,{...e,type:"select",multiple:!0,required:!1,readonly:!1,fieldClassName:"mb-0"}):t.jsx(x.default,{...e,readonly:!1,required:!1,fieldClassName:"mb-0"})},e.name)}),!!(c!=null&&c.length)&&t.jsx(s.Col,{...E,children:t.jsx(W.SelectFieldInReport,{items:c,name:"showFields",mode:"multiple",label:$("str.showFields"),className:"mb-0",selectingMode:_})}),!!q.length&&t.jsx(s.Col,{...A,children:t.jsx(Y,{label:"Sort By",name:"sortBy",items:q.map(e=>({id:e.name,label:e.label})),nameFieldInArray:"label",fieldId:"id",className:"mb-0",dropdownRender:e=>t.jsxs(t.Fragment,{children:[e,t.jsx(s.Form.Item,{name:"sortByType",noStyle:!0,className:"mt-3",children:t.jsx(s.Radio.Group,{className:"w-100",defaultValue:"DESC",optionType:"button",children:t.jsxs(s.Row,{children:[t.jsx(s.Col,{xs:12,children:t.jsx(s.Radio,{className:"w-100",style:{borderTopRightRadius:0,borderBottomRightRadius:0},value:"ASC",children:"Ascending"})}),t.jsx(s.Col,{xs:12,children:t.jsx(s.Radio,{className:"w-100",style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},value:"DESC",children:"Descending"})})]})})})]})})}),R?R(a):null]}),t.jsx(v,{className:"mt-3",type:"primary",block:!0,htmlType:"submit",disabled:f,children:"Submit"})]}),t.jsxs(s.Space,{children:[!!h&&t.jsx(Z.PrintButton,{disabled:f||!u.length,onClick:()=>h==null?void 0:h({tableId:"#crud-table table",data:u,fields:S.map(e=>({...e,render:V.getRendererValueCrudViewer(e)}))})}),!!y&&t.jsx(v,{disabled:f||!u.length,onClick:()=>y==null?void 0:y({tableId:"#crud-table table",data:u,fields:S.map(e=>({...e,render:V.getRendererValueCrudViewer(e)}))}),icon:t.jsx(K.FileExcelOutlined,{}),className:`group ${f||!u.length?"":"crud-excel-export-btn"}`,children:"Excel"})]}),U,t.jsx(Q,{minusHeight:O,data:u,size:M,fields:S,idField:L,loadingData:f,paginateProps:G,viewable:!1})]})}module.exports=k;
1
+ "use strict";const s=require("react/jsx-runtime"),X=require("@ant-design/icons"),o=require("antd"),d=require("react"),C=require("./CrudField.cjs.js"),Y=require("./view/CrudViewer.cjs.js"),Z=require("../common/report/SelectFieldInReport.cjs.js"),M=require("./view/CrudViewerUtil.cjs.js"),E=require("../locale/index.cjs.js"),P=require("../common/select/SelectComponent.cjs.js"),J=require("../common/button/Button.cjs.js"),ee=require("../common/button/PrintButton.cjs.js"),k={lg:6,md:8,sm:12,xs:24},te={lg:12,md:16,sm:24,xs:24};function se({fields:n,data:l,idField:f,loadingData:i,onSubmit:b,paginateProps:j,size:U,onClickPrint:w,onClickExcelExport:x,minusHeight:_,extraSearchFields:T,searchOnMount:q,summary:$,showFieldsSelectingMode:z="checkbox",cachedSearchProps:u}){const{t:D}=E.useTranslationLib(),{searchable:H,selectable:p,sortable:N,defaultSort:g}=d.useMemo(()=>{var h,y,R,O,L;const e=[],t=[],r=[];let m;for(const a of n.filter(W=>!W.hidden))a.type==="image"||!a.report||((h=a.report)!=null&&h.searchable&&e.push(a),(y=a.report)!=null&&y.sortable&&(t.push(a),!m&&((R=a.report)!=null&&R.defaultSort)&&(m=a)),a.hideInTable||r.push({id:a.name,label:a.label,lock:(O=a.report)==null?void 0:O.lock,alreadySelected:(L=a.report)==null?void 0:L.alreadySelected}));return{defaultSort:m,searchable:e,sortable:t,selectable:r}},[n]),[F,I]=d.useState([]),S=d.useCallback(e=>{I(n.filter(t=>e.includes(t.name)).map(t=>({...t,hideInTable:!1})))},[n]),B=d.useCallback(async({sortBy:e,sortByType:t,showFields:r=[],...m})=>{var R;const h=[];e&&h.push({field:e,sort:t??"DESC"}),S(r);const y={showFields:r,sortBy:h,...m};u&&(le(u.key,u.saveMode,y),(R=u.onSave)==null||R.call(u,y)),b(y)},[S,u,b]),[c]=o.Form.useForm(),V=d.useRef(!1),[v,K]=d.useState(!1),[A,Q]=d.useState(!0);return d.useEffect(()=>{if(q&&A){const e=setTimeout(()=>{c.validateFields().then(t=>{B(t)}),Q(!1)},200);return()=>clearTimeout(e)}},[B,c,A,q]),d.useEffect(()=>{var t,r;!c.getFieldValue("sortBy")&&g&&c.setFieldsValue({sortBy:g.name,sortByType:typeof((t=g.report)==null?void 0:t.defaultSort)=="string"?(r=g.report)==null?void 0:r.defaultSort:"ASC"})},[g,c]),d.useEffect(()=>{if(!u||V.current)return;V.current=!0;const e=re(u.key,u.saveMode),t={...u.defaultValue??{},...e??{}};if(Object.keys(t).length===0)return;c.setFieldsValue(oe(t));const r=t.showFields;r!=null&&r.length&&S(r)},[S,u,c]),d.useEffect(()=>{if(v){const e=p.filter(t=>t.alreadySelected).map(t=>t.id);I(n.filter(t=>e.includes(t.name)).map(t=>({...t,hideInTable:!1}))),K(!1)}},[n,v,p]),s.jsxs(o.Space,{className:"w-100",direction:"vertical",children:[s.jsxs(o.Form,{form:c,layout:"vertical",onFinish:B,children:[s.jsxs(o.Row,{gutter:[8,8],children:[H.map(e=>{var t,r,m;return s.jsx(o.Col,{...e.grid??k,style:{alignSelf:"end"},children:(t=e.report)!=null&&t.customRender?e.report.customRender(c):e.type==="date"?s.jsx(C.default,{...e,type:"date",range:(r=e.report)==null?void 0:r.range,required:!!((m=e.report)!=null&&m.required),readonly:!1,fieldClassName:"mb-0"}):e.type==="select"?s.jsx(C.default,{...e,type:"select",multiple:!0,required:!1,readonly:!1,fieldClassName:"mb-0"}):s.jsx(C.default,{...e,readonly:!1,required:!1,fieldClassName:"mb-0"})},e.name)}),!!(p!=null&&p.length)&&s.jsx(o.Col,{...te,children:s.jsx(Z.SelectFieldInReport,{items:p,name:"showFields",mode:"multiple",label:D("str.showFields"),className:"mb-0",selectingMode:z})}),!!N.length&&s.jsx(o.Col,{...k,children:s.jsx(P,{label:"Sort By",name:"sortBy",items:N.map(e=>({id:e.name,label:e.label})),nameFieldInArray:"label",fieldId:"id",className:"mb-0",dropdownRender:e=>s.jsxs(s.Fragment,{children:[e,s.jsx(o.Form.Item,{name:"sortByType",noStyle:!0,className:"mt-3",children:s.jsx(o.Radio.Group,{className:"w-100",defaultValue:"DESC",optionType:"button",children:s.jsxs(o.Row,{children:[s.jsx(o.Col,{xs:12,children:s.jsx(o.Radio,{className:"w-100",style:{borderTopRightRadius:0,borderBottomRightRadius:0},value:"ASC",children:"Ascending"})}),s.jsx(o.Col,{xs:12,children:s.jsx(o.Radio,{className:"w-100",style:{borderTopLeftRadius:0,borderBottomLeftRadius:0},value:"DESC",children:"Descending"})})]})})})]})})}),T?T(c):null]}),s.jsx(J,{className:"mt-3",type:"primary",block:!0,htmlType:"submit",disabled:i,children:"Submit"})]}),s.jsxs(o.Space,{children:[!!w&&s.jsx(ee.PrintButton,{disabled:i||!l.length,onClick:()=>w==null?void 0:w({tableId:"#crud-table table",data:l,fields:F.map(e=>({...e,render:M.getRendererValueCrudViewer(e)}))})}),!!x&&s.jsx(J,{disabled:i||!l.length,onClick:()=>x==null?void 0:x({tableId:"#crud-table table",data:l,fields:F.map(e=>({...e,render:M.getRendererValueCrudViewer(e)}))}),icon:s.jsx(X.FileExcelOutlined,{}),className:`group ${i||!l.length?"":"crud-excel-export-btn"}`,children:"Excel"})]}),$,s.jsx(Y,{minusHeight:_,data:l,size:U,fields:F,idField:f,loadingData:i,paginateProps:j,viewable:!1})]})}function G(n){return typeof globalThis.window>"u"?null:n==="local"?globalThis.window.localStorage:globalThis.window.sessionStorage}function re(n,l){const f=G(l);if(!f)return null;try{const i=f.getItem(n);return i?JSON.parse(i):null}catch{return null}}function le(n,l,f){const i=G(l);if(i)try{i.setItem(n,JSON.stringify(f))}catch{}}function oe(n){const{sortBy:l,showFields:f,...i}=n,b={...i};if(f!==void 0&&(b.showFields=f),l!=null&&l.length){const j=l[0];b.sortBy=j.field,b.sortByType=j.sort}return b}module.exports=se;
@@ -14,6 +14,14 @@ export type SearchOnlyFields<F> = CrudFieldProps<F> & {
14
14
  hideInTable: true;
15
15
  };
16
16
  export type ReportCrudFields<T, F> = CrudFieldProps<T> | SearchOnlyFields<F>;
17
+ export interface SearchPropsCacheProps<F_Search> {
18
+ key: string;
19
+ saveMode: "local" | "session";
20
+ /** Called after each successful search, once the payload is written to storage. */
21
+ onSave?: (value: CrudReportSubmitForm<F_Search>) => void;
22
+ /** Baseline when there is no cache yet (or keys missing from cache). */
23
+ defaultValue?: Partial<CrudReportSubmitForm<F_Search>>;
24
+ }
17
25
  export interface CrudReportComponentProps<T_Data, F_Search> {
18
26
  summary?: React.ReactNode;
19
27
  fields: readonly ReportCrudFields<T_Data, F_Search>[];
@@ -41,6 +49,7 @@ export interface CrudReportComponentProps<T_Data, F_Search> {
41
49
  extraSearchFields?: (form: FormInstance<any>) => ReactElement;
42
50
  searchOnMount?: boolean;
43
51
  showFieldsSelectingMode?: SelectFieldInReportSelectingMode;
52
+ cachedSearchProps?: SearchPropsCacheProps<F_Search>;
44
53
  }
45
- declare function CrudReportComponent<T, F = T>({ fields, data, idField, loadingData, onSubmit, paginateProps, size, onClickPrint, onClickExcelExport, minusHeight, extraSearchFields, searchOnMount, summary, showFieldsSelectingMode, }: Readonly<CrudReportComponentProps<T, F>>): import("react/jsx-runtime").JSX.Element;
54
+ declare function CrudReportComponent<T, F = T>({ fields, data, idField, loadingData, onSubmit, paginateProps, size, onClickPrint, onClickExcelExport, minusHeight, extraSearchFields, searchOnMount, summary, showFieldsSelectingMode, cachedSearchProps, }: Readonly<CrudReportComponentProps<T, F>>): import("react/jsx-runtime").JSX.Element;
46
55
  export default CrudReportComponent;