@hkyhy/marsun-components-core 0.1.68 → 0.1.69

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 (227) hide show
  1. package/dist/components/FlexBox/FlexBox.d.ts +7 -0
  2. package/dist/components/FlexBox/FlexBox.js +43 -0
  3. package/dist/components/FlexBox/FlexBox.js.map +1 -0
  4. package/dist/components/FlexBox/FlexBoxFetch.d.ts +3 -0
  5. package/dist/components/FlexBox/FlexBoxFetch.js +92 -0
  6. package/dist/components/FlexBox/FlexBoxFetch.js.map +1 -0
  7. package/dist/components/FlexBox/FlexBoxView.d.ts +18 -0
  8. package/dist/components/FlexBox/FlexBoxView.js +42 -0
  9. package/dist/components/FlexBox/FlexBoxView.js.map +1 -0
  10. package/dist/components/FlexBox/defaultColumns.d.ts +7 -0
  11. package/dist/components/FlexBox/defaultColumns.js +26 -0
  12. package/dist/components/FlexBox/defaultColumns.js.map +1 -0
  13. package/dist/components/FlexBox/index.d.ts +79 -0
  14. package/dist/components/FlexBox/useFlexBox.d.ts +5 -0
  15. package/dist/components/FlexBox/useFlexBox.js +19 -0
  16. package/dist/components/FlexBox/useFlexBox.js.map +1 -0
  17. package/dist/components/Form/FormDataSync.d.ts +3 -0
  18. package/dist/components/Form/FormDataSync.js +29 -15
  19. package/dist/components/Form/FormDataSync.js.map +1 -1
  20. package/dist/components/Form/InputRange.d.ts +19 -0
  21. package/dist/components/Form/InputRange.js +84 -0
  22. package/dist/components/Form/InputRange.js.map +1 -0
  23. package/dist/components/Form/InputRange.module.scss.js +9 -0
  24. package/dist/components/Form/InputRange.module.scss.js.map +1 -0
  25. package/dist/components/Form/index.d.ts +4 -0
  26. package/dist/components/Form/inputRangeRules.d.ts +15 -0
  27. package/dist/components/Form/inputRangeRules.js +23 -0
  28. package/dist/components/Form/inputRangeRules.js.map +1 -0
  29. package/dist/components/Form/kneFormInfo.js +7 -7
  30. package/dist/components/FormInfo/ErrorTip.d.ts +7 -0
  31. package/dist/components/FormInfo/ErrorTip.js +89 -0
  32. package/dist/components/FormInfo/ErrorTip.js.map +1 -0
  33. package/dist/components/FormInfo/Form.d.ts +7 -0
  34. package/dist/components/FormInfo/Form.js +23 -0
  35. package/dist/components/FormInfo/Form.js.map +1 -0
  36. package/dist/components/FormInfo/FormApiButton.d.ts +7 -0
  37. package/dist/components/FormInfo/FormApiButton.js +28 -0
  38. package/dist/components/FormInfo/FormApiButton.js.map +1 -0
  39. package/dist/components/FormInfo/FormDrawer.d.ts +9 -0
  40. package/dist/components/FormInfo/FormDrawer.js +42 -0
  41. package/dist/components/FormInfo/FormDrawer.js.map +1 -0
  42. package/dist/components/FormInfo/FormInfo.d.ts +4 -0
  43. package/dist/components/FormInfo/FormInfo.js +61 -0
  44. package/dist/components/FormInfo/FormInfo.js.map +1 -0
  45. package/dist/components/FormInfo/FormItem.d.ts +4 -0
  46. package/dist/components/FormInfo/FormItem.js +10 -0
  47. package/dist/components/FormInfo/FormItem.js.map +1 -0
  48. package/dist/components/FormInfo/FormModal.d.ts +11 -0
  49. package/dist/components/FormInfo/FormModal.js +43 -0
  50. package/dist/components/FormInfo/FormModal.js.map +1 -0
  51. package/dist/components/FormInfo/FormSteps.d.ts +9 -0
  52. package/dist/components/FormInfo/FormSteps.js +96 -0
  53. package/dist/components/FormInfo/FormSteps.js.map +1 -0
  54. package/dist/components/FormInfo/FormStepsModal.d.ts +14 -0
  55. package/dist/components/FormInfo/FormStepsModal.js +96 -0
  56. package/dist/components/FormInfo/FormStepsModal.js.map +1 -0
  57. package/dist/components/FormInfo/List.d.ts +6 -0
  58. package/dist/components/FormInfo/List.js +180 -0
  59. package/dist/components/FormInfo/List.js.map +1 -0
  60. package/dist/components/FormInfo/MultiField.d.ts +6 -0
  61. package/dist/components/FormInfo/MultiField.js +76 -0
  62. package/dist/components/FormInfo/MultiField.js.map +1 -0
  63. package/dist/components/FormInfo/Steps.d.ts +26 -0
  64. package/dist/components/FormInfo/Steps.js +178 -0
  65. package/dist/components/FormInfo/Steps.js.map +1 -0
  66. package/dist/components/FormInfo/TableList.d.ts +6 -0
  67. package/dist/components/FormInfo/TableList.js +216 -0
  68. package/dist/components/FormInfo/TableList.js.map +1 -0
  69. package/dist/components/FormInfo/buildFormOverlayProps.d.ts +27 -0
  70. package/dist/components/FormInfo/buildFormOverlayProps.js +55 -0
  71. package/dist/components/FormInfo/buildFormOverlayProps.js.map +1 -0
  72. package/dist/components/FormInfo/fields.d.ts +33 -0
  73. package/dist/components/FormInfo/fields.js +30 -0
  74. package/dist/components/FormInfo/fields.js.map +1 -0
  75. package/dist/components/FormInfo/index.d.ts +21 -0
  76. package/dist/components/FormInfo/locale/zh-CN.d.ts +16 -0
  77. package/dist/components/FormInfo/locale/zh-CN.js +17 -0
  78. package/dist/components/FormInfo/locale/zh-CN.js.map +1 -0
  79. package/dist/components/FormInfo/nestBlock.d.ts +15 -0
  80. package/dist/components/FormInfo/nestBlock.js +19 -0
  81. package/dist/components/FormInfo/nestBlock.js.map +1 -0
  82. package/dist/components/FormInfo/style.module.scss.js +57 -0
  83. package/dist/components/FormInfo/style.module.scss.js.map +1 -0
  84. package/dist/components/FormInfo/types.d.ts +213 -0
  85. package/dist/components/FormInfo/withLocale.d.ts +14 -0
  86. package/dist/components/FormInfo/withLocale.js +25 -0
  87. package/dist/components/FormInfo/withLocale.js.map +1 -0
  88. package/dist/components/InfoPage/CentralContent/boxComputed.d.ts +2 -0
  89. package/dist/components/InfoPage/CentralContent/boxComputed.js +15 -0
  90. package/dist/components/InfoPage/CentralContent/boxComputed.js.map +1 -0
  91. package/dist/components/InfoPage/CentralContent/index.d.ts +3 -0
  92. package/dist/components/InfoPage/CentralContent/index.js +102 -0
  93. package/dist/components/InfoPage/CentralContent/index.js.map +1 -0
  94. package/dist/components/InfoPage/CentralContent/style.module.scss.js +15 -0
  95. package/dist/components/InfoPage/CentralContent/style.module.scss.js.map +1 -0
  96. package/dist/components/InfoPage/Content/index.d.ts +16 -0
  97. package/dist/components/InfoPage/Content/index.js +72 -0
  98. package/dist/components/InfoPage/Content/index.js.map +1 -0
  99. package/dist/components/InfoPage/Content/style.module.scss.js +14 -0
  100. package/dist/components/InfoPage/Content/style.module.scss.js.map +1 -0
  101. package/dist/components/InfoPage/Descriptions/index.d.ts +9 -0
  102. package/dist/components/InfoPage/Descriptions/index.js +48 -0
  103. package/dist/components/InfoPage/Descriptions/index.js.map +1 -0
  104. package/dist/components/InfoPage/Descriptions/style.module.scss.js +11 -0
  105. package/dist/components/InfoPage/Descriptions/style.module.scss.js.map +1 -0
  106. package/dist/components/InfoPage/Flow/index.d.ts +9 -0
  107. package/dist/components/InfoPage/Flow/index.js +165 -0
  108. package/dist/components/InfoPage/Flow/index.js.map +1 -0
  109. package/dist/components/InfoPage/Flow/style.module.scss.js +19 -0
  110. package/dist/components/InfoPage/Flow/style.module.scss.js.map +1 -0
  111. package/dist/components/InfoPage/InfoPage/Collapse.d.ts +10 -0
  112. package/dist/components/InfoPage/InfoPage/Collapse.js +11 -0
  113. package/dist/components/InfoPage/InfoPage/Collapse.js.map +1 -0
  114. package/dist/components/InfoPage/InfoPage/index.d.ts +21 -0
  115. package/dist/components/InfoPage/InfoPage/index.js +35 -0
  116. package/dist/components/InfoPage/InfoPage/index.js.map +1 -0
  117. package/dist/components/InfoPage/InfoPage/style.module.scss.js +15 -0
  118. package/dist/components/InfoPage/InfoPage/style.module.scss.js.map +1 -0
  119. package/dist/components/InfoPage/Report/List.d.ts +6 -0
  120. package/dist/components/InfoPage/Report/List.js +26 -0
  121. package/dist/components/InfoPage/Report/List.js.map +1 -0
  122. package/dist/components/InfoPage/Report/Part.d.ts +6 -0
  123. package/dist/components/InfoPage/Report/Part.js +42 -0
  124. package/dist/components/InfoPage/Report/Part.js.map +1 -0
  125. package/dist/components/InfoPage/Report/PrintPageBreak.d.ts +3 -0
  126. package/dist/components/InfoPage/Report/PrintPageBreak.js +8 -0
  127. package/dist/components/InfoPage/Report/PrintPageBreak.js.map +1 -0
  128. package/dist/components/InfoPage/Report/Result.d.ts +6 -0
  129. package/dist/components/InfoPage/Report/Result.js +26 -0
  130. package/dist/components/InfoPage/Report/Result.js.map +1 -0
  131. package/dist/components/InfoPage/Report/Table.d.ts +6 -0
  132. package/dist/components/InfoPage/Report/Table.js +125 -0
  133. package/dist/components/InfoPage/Report/Table.js.map +1 -0
  134. package/dist/components/InfoPage/Report/index.d.ts +26 -0
  135. package/dist/components/InfoPage/Report/index.js +61 -0
  136. package/dist/components/InfoPage/Report/index.js.map +1 -0
  137. package/dist/components/InfoPage/Report/style.module.scss.js +47 -0
  138. package/dist/components/InfoPage/Report/style.module.scss.js.map +1 -0
  139. package/dist/components/InfoPage/Score/index.d.ts +8 -0
  140. package/dist/components/InfoPage/Score/index.js +50 -0
  141. package/dist/components/InfoPage/Score/index.js.map +1 -0
  142. package/dist/components/InfoPage/Score/style.module.scss.js +10 -0
  143. package/dist/components/InfoPage/Score/style.module.scss.js.map +1 -0
  144. package/dist/components/InfoPage/SplitLine/index.d.ts +17 -0
  145. package/dist/components/InfoPage/SplitLine/index.js +67 -0
  146. package/dist/components/InfoPage/SplitLine/index.js.map +1 -0
  147. package/dist/components/InfoPage/SplitLine/style.module.scss.js +8 -0
  148. package/dist/components/InfoPage/SplitLine/style.module.scss.js.map +1 -0
  149. package/dist/components/InfoPage/computeColumnsValue.d.ts +28 -0
  150. package/dist/components/InfoPage/computeColumnsValue.js +60 -0
  151. package/dist/components/InfoPage/computeColumnsValue.js.map +1 -0
  152. package/dist/components/InfoPage/formatView.d.ts +23 -0
  153. package/dist/components/InfoPage/formatView.js +119 -0
  154. package/dist/components/InfoPage/formatView.js.map +1 -0
  155. package/dist/components/InfoPage/index.d.ts +262 -0
  156. package/dist/components/ReactModal/ColumnsLayout.d.ts +7 -0
  157. package/dist/components/ReactModal/ColumnsLayout.js +20 -0
  158. package/dist/components/ReactModal/ColumnsLayout.js.map +1 -0
  159. package/dist/components/ReactModal/Drawer.d.ts +73 -0
  160. package/dist/components/ReactModal/Drawer.js +292 -0
  161. package/dist/components/ReactModal/Drawer.js.map +1 -0
  162. package/dist/components/ReactModal/Footer.d.ts +12 -0
  163. package/dist/components/ReactModal/Footer.js +53 -0
  164. package/dist/components/ReactModal/Footer.js.map +1 -0
  165. package/dist/components/ReactModal/Modal.d.ts +14 -0
  166. package/dist/components/ReactModal/Modal.js +366 -0
  167. package/dist/components/ReactModal/Modal.js.map +1 -0
  168. package/dist/components/ReactModal/ScrollRegion.d.ts +7 -0
  169. package/dist/components/ReactModal/ScrollRegion.js +22 -0
  170. package/dist/components/ReactModal/ScrollRegion.js.map +1 -0
  171. package/dist/components/ReactModal/SimpleBar.d.ts +2 -0
  172. package/dist/components/ReactModal/SimpleBar.js +7 -0
  173. package/dist/components/ReactModal/SimpleBar.js.map +1 -0
  174. package/dist/components/ReactModal/TabsLayout.d.ts +6 -0
  175. package/dist/components/ReactModal/TabsLayout.js +16 -0
  176. package/dist/components/ReactModal/TabsLayout.js.map +1 -0
  177. package/dist/components/ReactModal/confirmModal.module.scss.js +30 -0
  178. package/dist/components/ReactModal/confirmModal.module.scss.js.map +1 -0
  179. package/dist/components/ReactModal/createDrawerRender.d.ts +2 -0
  180. package/dist/components/ReactModal/createDrawerRender.js +7 -0
  181. package/dist/components/ReactModal/createDrawerRender.js.map +1 -0
  182. package/dist/components/ReactModal/createModalRender.d.ts +2 -0
  183. package/dist/components/ReactModal/createModalRender.js +7 -0
  184. package/dist/components/ReactModal/createModalRender.js.map +1 -0
  185. package/dist/components/ReactModal/drawer.module.scss.js +36 -0
  186. package/dist/components/ReactModal/drawer.module.scss.js.map +1 -0
  187. package/dist/components/ReactModal/index.d.ts +57 -0
  188. package/dist/components/ReactModal/intlStub.d.ts +15 -0
  189. package/dist/components/ReactModal/intlStub.js +21 -0
  190. package/dist/components/ReactModal/intlStub.js.map +1 -0
  191. package/dist/components/ReactModal/layouts.module.scss.js +12 -0
  192. package/dist/components/ReactModal/layouts.module.scss.js.map +1 -0
  193. package/dist/components/ReactModal/locale/en-US.d.ts +5 -0
  194. package/dist/components/ReactModal/locale/zh-CN.d.ts +5 -0
  195. package/dist/components/ReactModal/locale/zh-CN.js +8 -0
  196. package/dist/components/ReactModal/locale/zh-CN.js.map +1 -0
  197. package/dist/components/ReactModal/lockParentScroll.d.ts +3 -0
  198. package/dist/components/ReactModal/modalClassNames.d.ts +5 -0
  199. package/dist/components/ReactModal/modalClassNames.js +8 -0
  200. package/dist/components/ReactModal/modalClassNames.js.map +1 -0
  201. package/dist/components/ReactModal/style.module.scss.js +38 -0
  202. package/dist/components/ReactModal/style.module.scss.js.map +1 -0
  203. package/dist/components/ReactModal/useConfirmModal.d.ts +4 -0
  204. package/dist/components/ReactModal/useConfirmModal.js +161 -0
  205. package/dist/components/ReactModal/useConfirmModal.js.map +1 -0
  206. package/dist/components/ReactModal/useDrawer.d.ts +5 -0
  207. package/dist/components/ReactModal/useDrawer.js +123 -0
  208. package/dist/components/ReactModal/useDrawer.js.map +1 -0
  209. package/dist/components/ReactModal/usePatchElement.d.ts +2 -0
  210. package/dist/components/ReactModal/usePatchElement.js +11 -0
  211. package/dist/components/ReactModal/usePatchElement.js.map +1 -0
  212. package/dist/components/ReactModal/withLocale.d.ts +5 -0
  213. package/dist/components/ReactModal/withLocale.js +6 -0
  214. package/dist/components/ReactModal/withLocale.js.map +1 -0
  215. package/dist/components/index.d.ts +5 -0
  216. package/dist/form-info.d.ts +17 -0
  217. package/dist/form-info.js +68 -0
  218. package/dist/form-info.js.map +1 -0
  219. package/dist/index.d.ts +3 -0
  220. package/dist/index.js +700 -632
  221. package/dist/index.js.map +1 -1
  222. package/dist/marsun-components-core.css +1 -1
  223. package/dist/styles/global.css +1 -1
  224. package/dist/utils/date.d.ts +4 -1
  225. package/dist/utils/date.js +35 -27
  226. package/dist/utils/date.js.map +1 -1
  227. package/package.json +16 -2
@@ -0,0 +1,178 @@
1
+ import { jsx as m, jsxs as z } from "react/jsx-runtime";
2
+ import { useFormContext as K } from "@kne/react-form-antd";
3
+ import { useIsMobile as Q } from "@kne/responsive-utils";
4
+ import { useControllableValue as U } from "ahooks";
5
+ import { Flex as R, Steps as W, Button as $ } from "antd";
6
+ import q from "classnames";
7
+ import X from "lodash/omit";
8
+ import { useRef as Y, useState as Z, useCallback as j, useEffect as _ } from "react";
9
+ import A from "./FormInfo.js";
10
+ import { markNestBlock as ee } from "./nestBlock.js";
11
+ import te, { useFormInfoLocale as re } from "./withLocale.js";
12
+ import h from "./style.module.scss.js";
13
+ import se from "../InfoPage/InfoPage/index.js";
14
+ const D = (e = {}) => Array.isArray(e.fieldNames) && e.fieldNames.length ? e.fieldNames.filter(Boolean) : (e.list || []).map(
15
+ (r) => {
16
+ var s;
17
+ return r && typeof r == "object" && "props" in r ? (s = r.props) == null ? void 0 : s.name : void 0;
18
+ }
19
+ ).filter(Boolean), ne = (e, r = []) => !(e != null && e.validateField) || !(e != null && e.emitter) || !r.length ? Promise.resolve(!0) : Promise.all(
20
+ r.map(
21
+ (s) => new Promise((i) => {
22
+ var C;
23
+ const d = (C = e.getField) == null ? void 0 : C.call(e, { name: s });
24
+ if (!(d != null && d.id)) {
25
+ i(!0);
26
+ return;
27
+ }
28
+ let P = !1, f;
29
+ const n = (o) => {
30
+ var a;
31
+ P || (P = !0, (a = f == null ? void 0 : f.remove) == null || a.call(f), clearTimeout(w), i(!!o));
32
+ };
33
+ f = e.emitter.addListener(
34
+ `form-field:validate:complete:${d.id}`,
35
+ (o) => {
36
+ const { validate: a } = o || {};
37
+ n((a == null ? void 0 : a.status) === "PASS");
38
+ }
39
+ ), e.validateField({ name: s });
40
+ const w = setTimeout(() => {
41
+ var a, F;
42
+ const o = (a = e.getField) == null ? void 0 : a.call(e, { name: s });
43
+ n((o == null ? void 0 : o.isPass) === !0 || ((F = o == null ? void 0 : o.validate) == null ? void 0 : F.status) === "PASS");
44
+ }, 2e3);
45
+ })
46
+ )
47
+ ).then((s) => s.every(Boolean)), oe = (e, r) => {
48
+ const s = new Set((r || []).map((i) => i == null ? void 0 : i.name).filter(Boolean));
49
+ return s.size ? e.findIndex((i) => D(i).some((d) => s.has(d))) : -1;
50
+ }, ae = te((e) => {
51
+ const { formatMessage: r } = re(), {
52
+ className: s,
53
+ stepsClassName: i,
54
+ title: d,
55
+ subtitle: P,
56
+ bordered: f,
57
+ items: n = [],
58
+ showActions: w = !0,
59
+ prevText: C,
60
+ nextText: o,
61
+ prevIcon: a,
62
+ nextIcon: F,
63
+ ...I
64
+ } = Object.assign(
65
+ {
66
+ defaultCurrent: 0,
67
+ prevText: r({ id: "prev" }),
68
+ nextText: r({ id: "next" }),
69
+ prevIcon: null,
70
+ nextIcon: null
71
+ },
72
+ e
73
+ ), O = Q(), { openApi: v } = K() || {}, E = Y(null), [B, M] = Z(!1), [l, u] = U(I, {
74
+ valuePropName: "current",
75
+ defaultValuePropName: "defaultCurrent"
76
+ }), V = O ? "vertical" : I.direction || I.orientation, G = V === "vertical", T = l >= n.length - 1, b = j(
77
+ (t) => {
78
+ const c = oe(n, t);
79
+ c < 0 || (u(c), requestAnimationFrame(() => {
80
+ var p, L;
81
+ (L = (p = E.current) == null ? void 0 : p.scrollIntoView) == null || L.call(p, { behavior: "smooth", block: "nearest" });
82
+ }));
83
+ },
84
+ [n, u]
85
+ );
86
+ _(() => {
87
+ const t = v == null ? void 0 : v.emitter;
88
+ if (!(t != null && t.addListener)) return;
89
+ const c = (g) => b(g), p = (g) => {
90
+ const { isPass: S, errors: k } = g || {};
91
+ S || b(k);
92
+ }, L = () => u(0), x = t.addListener("form:submit:error", c), N = t.addListener("form:submit:complete", p), y = t.addListener("form:reset", L);
93
+ return () => {
94
+ var g, S, k;
95
+ (g = x == null ? void 0 : x.remove) == null || g.call(x), (S = N == null ? void 0 : N.remove) == null || S.call(N), (k = y == null ? void 0 : y.remove) == null || k.call(y);
96
+ };
97
+ }, [v, b, u]);
98
+ const H = j(async () => {
99
+ if (!(B || T)) {
100
+ M(!0);
101
+ try {
102
+ await ne(v, D(n[l])) && u(Math.min(n.length - 1, l + 1));
103
+ } finally {
104
+ M(!1);
105
+ }
106
+ }
107
+ }, [l, T, n, B, u, v]), J = j(() => {
108
+ u(Math.max(0, l - 1));
109
+ }, [l, u]);
110
+ return n.length ? /* @__PURE__ */ m("div", { ref: E, className: q(s, h["marsun-form-info-steps-embed"]), children: /* @__PURE__ */ m(se.Part, { title: d, subtitle: P, bordered: f, children: /* @__PURE__ */ z(R, { vertical: !0, gap: 24, children: [
111
+ /* @__PURE__ */ m(
112
+ W,
113
+ {
114
+ ...X(I, [
115
+ "current",
116
+ "defaultCurrent",
117
+ "onChange",
118
+ "direction",
119
+ "orientation",
120
+ "items"
121
+ ]),
122
+ current: l,
123
+ direction: V,
124
+ className: q(
125
+ "marsun-form-info-steps",
126
+ i,
127
+ h["marsun-form-info-steps"],
128
+ {
129
+ [h["marsun-form-info-steps-vertical"]]: G
130
+ }
131
+ ),
132
+ items: n.map((t, c) => ({
133
+ title: t.title || r({ id: "untitledStep" }, { index: c + 1 })
134
+ }))
135
+ }
136
+ ),
137
+ n.map((t, c) => /* @__PURE__ */ m(
138
+ "div",
139
+ {
140
+ className: h["marsun-form-info-steps-embed-panel"],
141
+ style: c === l ? void 0 : { display: "none" },
142
+ "aria-hidden": c !== l,
143
+ children: t.children != null ? t.children : /* @__PURE__ */ m(A, { column: t.column, gap: t.gap, list: t.list || [] })
144
+ },
145
+ t.key || t.id || c
146
+ )),
147
+ w ? /* @__PURE__ */ z(
148
+ R,
149
+ {
150
+ className: h["marsun-form-info-steps-actions"],
151
+ justify: "space-between",
152
+ align: "center",
153
+ gap: 8,
154
+ wrap: "wrap",
155
+ children: [
156
+ /* @__PURE__ */ m("div", { className: h["marsun-form-info-steps-actions-side"], children: l > 0 ? /* @__PURE__ */ m($, { type: "link", size: "small", icon: a, onClick: J, children: C }) : null }),
157
+ /* @__PURE__ */ m("div", { className: h["marsun-form-info-steps-actions-side"], children: T ? null : /* @__PURE__ */ m(
158
+ $,
159
+ {
160
+ type: "link",
161
+ size: "small",
162
+ icon: F,
163
+ iconPosition: "end",
164
+ loading: B,
165
+ onClick: H,
166
+ children: o
167
+ }
168
+ ) })
169
+ ]
170
+ }
171
+ ) : null
172
+ ] }) }) }) : null;
173
+ }), ye = ee(ae);
174
+ export {
175
+ ye as default,
176
+ ne as validateFieldsByName
177
+ };
178
+ //# sourceMappingURL=Steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Steps.js","sources":["../../../src/components/FormInfo/Steps.tsx"],"sourcesContent":["// @ts-nocheck\nimport { useFormContext } from '@kne/react-form-antd';\nimport { useIsMobile } from '@kne/responsive-utils';\nimport { useControllableValue } from 'ahooks';\nimport { Button, Flex, Steps as AntSteps } from 'antd';\nimport classnames from 'classnames';\nimport omit from 'lodash/omit';\nimport { useCallback, useEffect, useRef, useState, type ReactNode } from 'react';\nimport InfoPage from '@/components/InfoPage';\nimport FormInfo from './FormInfo';\nimport { markNestBlock } from './nestBlock';\nimport type { StepsItem, StepsProps } from './types';\nimport withLocale, { useFormInfoLocale } from './withLocale';\nimport style from './style.module.scss';\n\nconst collectFieldNames = (item: StepsItem = {}) => {\n if (Array.isArray(item.fieldNames) && item.fieldNames.length) {\n return item.fieldNames.filter(Boolean);\n }\n return (item.list || [])\n .map((field) =>\n field && typeof field === 'object' && 'props' in field\n ? (field as React.ReactElement).props?.name\n : undefined,\n )\n .filter(Boolean) as string[];\n};\n\n/** 校验指定字段,全部 PASS 才返回 true */\nexport const validateFieldsByName = (\n openApi:\n | {\n validateField?: (p: { name: string }) => void;\n emitter?: {\n addListener: (ev: string, fn: (p: unknown) => void) => { remove?: () => void };\n };\n getField?: (p: { name: string }) => {\n id?: string;\n isPass?: boolean;\n validate?: { status?: string };\n };\n }\n | null\n | undefined,\n names: string[] = [],\n) => {\n if (!openApi?.validateField || !openApi?.emitter || !names.length) {\n return Promise.resolve(true);\n }\n\n return Promise.all(\n names.map(\n (name) =>\n new Promise<boolean>((resolve) => {\n const field = openApi.getField?.({ name });\n if (!field?.id) {\n resolve(true);\n return;\n }\n\n let settled = false;\n let subscription: { remove?: () => void } | undefined;\n const finish = (pass: boolean) => {\n if (settled) return;\n settled = true;\n subscription?.remove?.();\n clearTimeout(timer);\n resolve(!!pass);\n };\n\n subscription = openApi.emitter!.addListener(\n `form-field:validate:complete:${field.id}`,\n (payload: unknown) => {\n const { validate } = (payload || {}) as { validate?: { status?: string } };\n finish(validate?.status === 'PASS');\n },\n );\n\n openApi.validateField!({ name });\n\n const timer = setTimeout(() => {\n const latest = openApi.getField?.({ name });\n finish(latest?.isPass === true || latest?.validate?.status === 'PASS');\n }, 2000);\n }),\n ),\n ).then((results) => results.every(Boolean));\n};\n\nconst findFirstErrorStepIndex = (\n items: StepsItem[],\n errors: Array<{ name?: string }> | undefined,\n) => {\n const errorNames = new Set((errors || []).map((item) => item?.name).filter(Boolean));\n if (!errorNames.size) return -1;\n return items.findIndex((step) => collectFieldNames(step).some((name) => errorNames.has(name)));\n};\n\n/**\n * 嵌入父级 Form 的分步区域(不自建 Form)。\n */\nconst Steps = withLocale((p: StepsProps) => {\n const { formatMessage } = useFormInfoLocale();\n const {\n className,\n stepsClassName,\n title,\n subtitle,\n bordered,\n items = [],\n showActions = true,\n prevText,\n nextText,\n prevIcon,\n nextIcon,\n ...stepProps\n } = Object.assign(\n {\n defaultCurrent: 0,\n prevText: formatMessage({ id: 'prev' }),\n nextText: formatMessage({ id: 'next' }),\n prevIcon: null as ReactNode,\n nextIcon: null as ReactNode,\n },\n p,\n );\n\n const isMobile = useIsMobile();\n const { openApi } = (useFormContext() || {}) as {\n openApi?: Parameters<typeof validateFieldsByName>[0];\n };\n const rootRef = useRef<HTMLDivElement>(null);\n const [nextLoading, setNextLoading] = useState(false);\n const [currentStep, onStepChange] = useControllableValue(stepProps, {\n valuePropName: 'current',\n defaultValuePropName: 'defaultCurrent',\n }) as [number, (n: number) => void];\n\n const stepsDirection = isMobile ? 'vertical' : stepProps.direction || stepProps.orientation;\n const isVerticalSteps = stepsDirection === 'vertical';\n const isLastStep = currentStep >= items.length - 1;\n\n const jumpToErrorStep = useCallback(\n (errors: Array<{ name?: string }> | undefined) => {\n const index = findFirstErrorStepIndex(items, errors);\n if (index < 0) return;\n onStepChange(index);\n requestAnimationFrame(() => {\n rootRef.current?.scrollIntoView?.({ behavior: 'smooth', block: 'nearest' });\n });\n },\n [items, onStepChange],\n );\n\n useEffect(() => {\n const emitter = openApi?.emitter as\n | { addListener: (ev: string, fn: (p: unknown) => void) => { remove?: () => void } }\n | undefined;\n if (!emitter?.addListener) return undefined;\n\n const onSubmitError = (errors: unknown) => jumpToErrorStep(errors as Array<{ name?: string }>);\n const onSubmitComplete = (payload: unknown) => {\n const { isPass, errors } = (payload || {}) as {\n isPass?: boolean;\n errors?: Array<{ name?: string }>;\n };\n if (!isPass) jumpToErrorStep(errors);\n };\n const onReset = () => onStepChange(0);\n\n const errorSub = emitter.addListener('form:submit:error', onSubmitError);\n const completeSub = emitter.addListener('form:submit:complete', onSubmitComplete);\n const resetSub = emitter.addListener('form:reset', onReset);\n return () => {\n errorSub?.remove?.();\n completeSub?.remove?.();\n resetSub?.remove?.();\n };\n }, [openApi, jumpToErrorStep, onStepChange]);\n\n const handleNext = useCallback(async () => {\n if (nextLoading || isLastStep) return;\n setNextLoading(true);\n try {\n const pass = await validateFieldsByName(openApi, collectFieldNames(items[currentStep]));\n if (pass) onStepChange(Math.min(items.length - 1, currentStep + 1));\n } finally {\n setNextLoading(false);\n }\n }, [currentStep, isLastStep, items, nextLoading, onStepChange, openApi]);\n\n const handlePrev = useCallback(() => {\n onStepChange(Math.max(0, currentStep - 1));\n }, [currentStep, onStepChange]);\n\n if (!items.length) return null;\n\n return (\n <div ref={rootRef} className={classnames(className, style['marsun-form-info-steps-embed'])}>\n <InfoPage.Part title={title} subtitle={subtitle} bordered={bordered}>\n <Flex vertical gap={24}>\n <AntSteps\n {...omit(stepProps, [\n 'current',\n 'defaultCurrent',\n 'onChange',\n 'direction',\n 'orientation',\n 'items',\n ])}\n current={currentStep}\n direction={stepsDirection as 'horizontal' | 'vertical'}\n className={classnames(\n 'marsun-form-info-steps',\n stepsClassName,\n style['marsun-form-info-steps'],\n {\n [style['marsun-form-info-steps-vertical']]: isVerticalSteps,\n },\n )}\n items={items.map((item, index) => ({\n title: item.title || formatMessage({ id: 'untitledStep' }, { index: index + 1 }),\n }))}\n />\n\n {items.map((item, index) => (\n <div\n key={item.key || item.id || index}\n className={style['marsun-form-info-steps-embed-panel']}\n style={index === currentStep ? undefined : { display: 'none' }}\n aria-hidden={index !== currentStep}\n >\n {item.children != null ? (\n item.children\n ) : (\n <FormInfo column={item.column} gap={item.gap} list={item.list || []} />\n )}\n </div>\n ))}\n\n {showActions ? (\n <Flex\n className={style['marsun-form-info-steps-actions']}\n justify=\"space-between\"\n align=\"center\"\n gap={8}\n wrap=\"wrap\"\n >\n <div className={style['marsun-form-info-steps-actions-side']}>\n {currentStep > 0 ? (\n <Button type=\"link\" size=\"small\" icon={prevIcon} onClick={handlePrev}>\n {prevText}\n </Button>\n ) : null}\n </div>\n <div className={style['marsun-form-info-steps-actions-side']}>\n {!isLastStep ? (\n <Button\n type=\"link\"\n size=\"small\"\n icon={nextIcon}\n iconPosition=\"end\"\n loading={nextLoading}\n onClick={handleNext}\n >\n {nextText}\n </Button>\n ) : null}\n </div>\n </Flex>\n ) : null}\n </Flex>\n </InfoPage.Part>\n </div>\n );\n});\n\nexport default markNestBlock(Steps);\n"],"names":["collectFieldNames","item","field","_a","validateFieldsByName","openApi","names","name","resolve","settled","subscription","finish","pass","timer","payload","validate","latest","_b","results","findFirstErrorStepIndex","items","errors","errorNames","step","Steps","withLocale","p","formatMessage","useFormInfoLocale","className","stepsClassName","title","subtitle","bordered","showActions","prevText","nextText","prevIcon","nextIcon","stepProps","isMobile","useIsMobile","useFormContext","rootRef","useRef","nextLoading","setNextLoading","useState","currentStep","onStepChange","useControllableValue","stepsDirection","isVerticalSteps","isLastStep","jumpToErrorStep","useCallback","index","useEffect","emitter","onSubmitError","onSubmitComplete","isPass","onReset","errorSub","completeSub","resetSub","_c","handleNext","handlePrev","jsx","classnames","style","InfoPage","Flex","AntSteps","omit","FormInfo","jsxs","Button","EmbedSteps","markNestBlock"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { TableListProps } from './types';
2
+ declare const _default: {
3
+ (props: TableListProps): import("react").JSX.Element;
4
+ displayName: string;
5
+ };
6
+ export default _default;
@@ -0,0 +1,216 @@
1
+ import { jsx as t, jsxs as v } from "react/jsx-runtime";
2
+ import { TableList as V, SubList as W, FieldList as q } from "@kne/react-form-plus";
3
+ import { useIsMobile as H } from "@kne/responsive-utils";
4
+ import $, { isRenderMobileActive as G, resolveRenderMobile as J } from "@kne/table-view";
5
+ import { Row as k, Col as p, Button as h } from "antd";
6
+ import d from "classnames";
7
+ import { useMemo as N, useRef as K, useState as Q, useLayoutEffect as U } from "react";
8
+ import { markNestBlock as X } from "./nestBlock.js";
9
+ import Y, { useFormInfoLocale as Z } from "./withLocale.js";
10
+ import s from "./style.module.scss.js";
11
+ /* empty css */
12
+ import { Trash2 as ee } from "../Icons/Trash2.js";
13
+ import { Plus as re } from "../Icons/Plus.js";
14
+ import te from "../Empty/Empty.js";
15
+ import se from "../InfoPage/InfoPage/index.js";
16
+ const ie = (a) => !!(a && a.scrollWidth - a.clientWidth > 8), ne = (a, { removeText: c }) => [
17
+ ...(Array.isArray(a) ? a : []).filter((l) => {
18
+ if (!l || typeof l != "object" || !("props" in l)) return !1;
19
+ const o = l.props;
20
+ return (o == null ? void 0 : o.display) !== !1 && !(o != null && o.hidden);
21
+ }).map((l) => {
22
+ const o = l;
23
+ return {
24
+ name: o.props.name,
25
+ title: o.props.label,
26
+ render: (u) => u
27
+ };
28
+ }),
29
+ {
30
+ name: "__options__",
31
+ type: "options",
32
+ title: c || "",
33
+ width: 100,
34
+ render: (l) => l
35
+ }
36
+ ], oe = Y((a) => {
37
+ const { formatMessage: c } = Z(), {
38
+ className: w,
39
+ addIcon: l,
40
+ addText: o,
41
+ removeIcon: u,
42
+ removeText: b,
43
+ title: O,
44
+ bordered: z,
45
+ renderMobile: f = !0,
46
+ list: m,
47
+ styles: C,
48
+ style: j,
49
+ ...M
50
+ } = Object.assign(
51
+ {
52
+ empty: /* @__PURE__ */ t(
53
+ te,
54
+ {
55
+ iconType: "simple",
56
+ description: !1,
57
+ className: s["marsun-form-info-table-list-empty"]
58
+ }
59
+ ),
60
+ addIcon: /* @__PURE__ */ t(re, { size: 14 }),
61
+ addText: c({ id: "addText" }),
62
+ removeIcon: /* @__PURE__ */ t(ee, { size: 14 }),
63
+ removeText: c({ id: "deleteText" })
64
+ },
65
+ a
66
+ ), A = H(), R = G(f, A), y = N(() => J(f), [f]), L = N(
67
+ () => ne(m || [], { removeText: b }),
68
+ [m, b]
69
+ ), S = N(
70
+ () => (Array.isArray(m) ? m : []).filter((e) => {
71
+ if (!e || typeof e != "object" || !("props" in e)) return !1;
72
+ const r = e.props;
73
+ return (r == null ? void 0 : r.display) !== !1 && !(r != null && r.hidden);
74
+ }).length,
75
+ [m]
76
+ ), x = K(null), [_, T] = Q(!1);
77
+ U(() => {
78
+ if (R) {
79
+ T(!1);
80
+ return;
81
+ }
82
+ const e = x.current;
83
+ if (!e) return;
84
+ const r = () => T(ie(e));
85
+ r();
86
+ const i = typeof ResizeObserver < "u" ? new ResizeObserver(r) : null;
87
+ i == null || i.observe(e);
88
+ const n = typeof MutationObserver < "u" ? new MutationObserver(r) : null;
89
+ return n == null || n.observe(e, { childList: !0, subtree: !0, characterData: !0 }), window.addEventListener("resize", r), () => {
90
+ i == null || i.disconnect(), n == null || n.disconnect(), window.removeEventListener("resize", r);
91
+ };
92
+ }, [R, m, L]);
93
+ const g = (e, { onAdd: r, allowAdd: i }, n) => /* @__PURE__ */ t(
94
+ se.Part,
95
+ {
96
+ title: O,
97
+ className: d(w, s["marsun-form-info-table-list"], n),
98
+ bordered: z,
99
+ styles: C,
100
+ style: j,
101
+ extra: /* @__PURE__ */ t("div", { className: s["marsun-form-info-extra-container"], children: i && /* @__PURE__ */ t(h, { className: s["marsun-form-info-extra-btn"], icon: l, onClick: r, children: o }) }),
102
+ children: e
103
+ }
104
+ ), E = () => /* @__PURE__ */ t(
105
+ V,
106
+ {
107
+ ...M,
108
+ list: m,
109
+ headerRender: (e) => /* @__PURE__ */ v(k, { className: s["marsun-form-info-table-list-header"], wrap: !1, children: [
110
+ e,
111
+ /* @__PURE__ */ t(
112
+ p,
113
+ {
114
+ className: d(
115
+ s["marsun-form-info-table-options"],
116
+ s["marsun-form-info-table-options-header"]
117
+ )
118
+ }
119
+ )
120
+ ] }),
121
+ headerItemRender: (e, { id: r, isReq: i }) => /* @__PURE__ */ t(
122
+ p,
123
+ {
124
+ className: d({
125
+ [s["marsun-form-info-is-req"]]: i
126
+ }),
127
+ children: e
128
+ },
129
+ r
130
+ ),
131
+ itemRender: (e) => /* @__PURE__ */ t(p, { className: s["marsun-form-info-table-list-field"], children: e }),
132
+ listRender: (e, { id: r, onRemove: i, allowRemove: n }) => /* @__PURE__ */ v(k, { wrap: !1, align: "top", children: [
133
+ e,
134
+ /* @__PURE__ */ t(p, { className: s["marsun-form-info-table-options"], children: /* @__PURE__ */ t(h, { type: "link", onClick: i, danger: !0, disabled: !n, icon: u, children: b }) })
135
+ ] }, r),
136
+ children: (e, r) => g(
137
+ /* @__PURE__ */ t(
138
+ "div",
139
+ {
140
+ ref: x,
141
+ className: d(s["marsun-form-info-table-list-inner"], {
142
+ [s["marsun-form-info-is-overflow"]]: _
143
+ }),
144
+ style: {
145
+ "--table-list-field-count": Math.max(S, 1)
146
+ },
147
+ children: e
148
+ }
149
+ ),
150
+ r
151
+ )
152
+ }
153
+ ), P = () => /* @__PURE__ */ t(
154
+ W,
155
+ {
156
+ ...M,
157
+ list: m,
158
+ listRender: ({
159
+ id: e,
160
+ list: r,
161
+ groupArgs: i,
162
+ onRemove: n,
163
+ allowRemove: D
164
+ }) => /* @__PURE__ */ v(
165
+ "div",
166
+ {
167
+ className: d(
168
+ s["marsun-form-info-table-list-mobile-card"],
169
+ "info-page-table-mobile-card"
170
+ ),
171
+ children: [
172
+ /* @__PURE__ */ t("div", { className: s["marsun-form-info-table-list-mobile-card-body"], children: /* @__PURE__ */ t(
173
+ q,
174
+ {
175
+ list: r,
176
+ groupArgs: i,
177
+ itemRender: (I, F) => F.hidden ? /* @__PURE__ */ t("div", { style: { display: "none" }, children: I }) : /* @__PURE__ */ t("div", { className: s["marsun-form-info-table-list-mobile-field"], children: I })
178
+ }
179
+ ) }),
180
+ /* @__PURE__ */ t("div", { className: s["marsun-form-info-table-list-mobile-actions"], children: /* @__PURE__ */ t(h, { type: "link", onClick: n, danger: !0, disabled: !D, icon: u, children: b }) })
181
+ ]
182
+ },
183
+ e
184
+ ),
185
+ children: (e, r) => g(
186
+ /* @__PURE__ */ t(
187
+ "div",
188
+ {
189
+ className: d(
190
+ s["marsun-form-info-table-list-mobile-list"],
191
+ "info-page-table-mobile-card-list"
192
+ ),
193
+ children: e
194
+ }
195
+ ),
196
+ r,
197
+ s["marsun-form-info-is-mobile"]
198
+ )
199
+ }
200
+ ), B = f === !1 ? !1 : typeof y == "function" ? y : f === !0 || y === !0 ? () => P() : !1;
201
+ return /* @__PURE__ */ t(
202
+ $,
203
+ {
204
+ columns: L,
205
+ dataSource: [],
206
+ empty: null,
207
+ className: s["marsun-form-info-table-list-view"],
208
+ renderMobile: B,
209
+ render: () => E()
210
+ }
211
+ );
212
+ }), Re = X(oe);
213
+ export {
214
+ Re as default
215
+ };
216
+ //# sourceMappingURL=TableList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableList.js","sources":["../../../src/components/FormInfo/TableList.tsx"],"sourcesContent":["// @ts-nocheck\nimport { FieldList, SubList, TableList as TableListBase } from '@kne/react-form-plus';\nimport { useIsMobile } from '@kne/responsive-utils';\nimport TableView, { isRenderMobileActive, resolveRenderMobile } from '@kne/table-view';\nimport { Button, Col, Row } from 'antd';\nimport classnames from 'classnames';\nimport { useLayoutEffect, useMemo, useRef, useState, type ReactNode } from 'react';\nimport { Empty } from '@/components/Empty';\nimport { Plus, Trash2 } from '@/components/Icons';\nimport InfoPage from '@/components/InfoPage';\nimport { markNestBlock } from './nestBlock';\nimport type { TableListProps } from './types';\nimport withLocale, { useFormInfoLocale } from './withLocale';\nimport style from './style.module.scss';\nimport '@kne/table-view/dist/index.css';\n\nconst isHorizontallyOverflowing = (el: HTMLElement | null) =>\n !!(el && el.scrollWidth - el.clientWidth > 8);\n\nconst buildColumns = (list: ReactNode[], { removeText }: { removeText?: ReactNode }) => {\n const fieldList = Array.isArray(list) ? list : [];\n return [\n ...fieldList\n .filter((item) => {\n if (!item || typeof item !== 'object' || !('props' in item)) return false;\n const props = (item as React.ReactElement).props as {\n display?: boolean;\n hidden?: boolean;\n };\n return props?.display !== false && !props?.hidden;\n })\n .map((item) => {\n const el = item as React.ReactElement;\n return {\n name: el.props.name,\n title: el.props.label,\n render: (value: unknown) => value,\n };\n }),\n {\n name: '__options__',\n type: 'options',\n title: removeText || '',\n width: 100,\n render: (value: unknown) => value,\n },\n ];\n};\n\nconst TableList = withLocale((p: TableListProps) => {\n const { formatMessage } = useFormInfoLocale();\n const {\n className,\n addIcon,\n addText,\n removeIcon,\n removeText,\n title,\n bordered,\n renderMobile = true,\n list,\n styles: partStyles,\n style: partStyle,\n ...others\n } = Object.assign(\n {\n empty: (\n <Empty\n iconType=\"simple\"\n description={false}\n className={style['marsun-form-info-table-list-empty']}\n />\n ),\n addIcon: <Plus size={14} />,\n addText: formatMessage({ id: 'addText' }),\n removeIcon: <Trash2 size={14} />,\n removeText: formatMessage({ id: 'deleteText' }),\n },\n p,\n );\n\n const isMobile = useIsMobile();\n const useMobileRender = isRenderMobileActive(renderMobile, isMobile);\n const resolvedRenderMobile = useMemo(() => resolveRenderMobile(renderMobile), [renderMobile]);\n const columns = useMemo(\n () => buildColumns((list || []) as ReactNode[], { removeText }),\n [list, removeText],\n );\n const fieldCount = useMemo(\n () =>\n (Array.isArray(list) ? list : []).filter((item) => {\n if (!item || typeof item !== 'object' || !('props' in item)) return false;\n const props = (item as React.ReactElement).props as {\n display?: boolean;\n hidden?: boolean;\n };\n return props?.display !== false && !props?.hidden;\n }).length,\n [list],\n );\n const innerRef = useRef<HTMLDivElement>(null);\n const [isOverflow, setIsOverflow] = useState(false);\n\n useLayoutEffect(() => {\n if (useMobileRender) {\n setIsOverflow(false);\n return;\n }\n const el = innerRef.current;\n if (!el) return;\n const update = () => setIsOverflow(isHorizontallyOverflowing(el));\n update();\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(update) : null;\n ro?.observe(el);\n const mo = typeof MutationObserver !== 'undefined' ? new MutationObserver(update) : null;\n mo?.observe(el, { childList: true, subtree: true, characterData: true });\n window.addEventListener('resize', update);\n return () => {\n ro?.disconnect();\n mo?.disconnect();\n window.removeEventListener('resize', update);\n };\n }, [useMobileRender, list, columns]);\n\n const renderPart = (\n children: ReactNode,\n { onAdd, allowAdd }: { onAdd: () => void; allowAdd: boolean },\n extraClassName?: string,\n ) => (\n <InfoPage.Part\n title={title}\n className={classnames(className, style['marsun-form-info-table-list'], extraClassName)}\n bordered={bordered}\n styles={partStyles as never}\n style={partStyle as never}\n extra={\n <div className={style['marsun-form-info-extra-container']}>\n {allowAdd && (\n <Button className={style['marsun-form-info-extra-btn']} icon={addIcon} onClick={onAdd}>\n {addText}\n </Button>\n )}\n </div>\n }\n >\n {children}\n </InfoPage.Part>\n );\n\n const renderDesktop = () => (\n <TableListBase\n {...others}\n list={list as never}\n headerRender={(children: ReactNode) => (\n <Row className={style['marsun-form-info-table-list-header']} wrap={false}>\n {children}\n <Col\n className={classnames(\n style['marsun-form-info-table-options'],\n style['marsun-form-info-table-options-header'],\n )}\n />\n </Row>\n )}\n headerItemRender={(children: ReactNode, { id, isReq }: { id: string; isReq?: boolean }) => (\n <Col\n className={classnames({\n [style['marsun-form-info-is-req']]: isReq,\n })}\n key={id}\n >\n {children}\n </Col>\n )}\n itemRender={(children: ReactNode) => (\n <Col className={style['marsun-form-info-table-list-field']}>{children}</Col>\n )}\n listRender={(\n children: ReactNode,\n { id, onRemove, allowRemove }: { id: string; onRemove: () => void; allowRemove: boolean },\n ) => (\n <Row key={id} wrap={false} align=\"top\">\n {children}\n <Col className={style['marsun-form-info-table-options']}>\n <Button type=\"link\" onClick={onRemove} danger disabled={!allowRemove} icon={removeIcon}>\n {removeText}\n </Button>\n </Col>\n </Row>\n )}\n >\n {(children: ReactNode, controls: { onAdd: () => void; allowAdd: boolean }) =>\n renderPart(\n <div\n ref={innerRef}\n className={classnames(style['marsun-form-info-table-list-inner'], {\n [style['marsun-form-info-is-overflow']]: isOverflow,\n })}\n style={\n {\n '--table-list-field-count': Math.max(fieldCount, 1),\n } as React.CSSProperties\n }\n >\n {children}\n </div>,\n controls,\n )\n }\n </TableListBase>\n );\n\n const renderMobileList = () => (\n <SubList\n {...others}\n list={list as never}\n listRender={({\n id,\n list: rowList,\n groupArgs,\n onRemove,\n allowRemove,\n }: {\n id: string;\n list?: ReactNode[];\n groupArgs?: unknown[];\n onRemove: () => void;\n allowRemove: boolean;\n }) => (\n <div\n key={id}\n className={classnames(\n style['marsun-form-info-table-list-mobile-card'],\n 'info-page-table-mobile-card',\n )}\n >\n <div className={style['marsun-form-info-table-list-mobile-card-body']}>\n <FieldList\n list={rowList as never}\n groupArgs={groupArgs}\n itemRender={(children: ReactNode, targetProps: { hidden?: boolean }) => {\n if (targetProps.hidden) {\n return <div style={{ display: 'none' }}>{children}</div>;\n }\n return (\n <div className={style['marsun-form-info-table-list-mobile-field']}>\n {children}\n </div>\n );\n }}\n />\n </div>\n <div className={style['marsun-form-info-table-list-mobile-actions']}>\n <Button type=\"link\" onClick={onRemove} danger disabled={!allowRemove} icon={removeIcon}>\n {removeText}\n </Button>\n </div>\n </div>\n )}\n >\n {(children: ReactNode, controls: { onAdd: () => void; allowAdd: boolean }) =>\n renderPart(\n <div\n className={classnames(\n style['marsun-form-info-table-list-mobile-list'],\n 'info-page-table-mobile-card-list',\n )}\n >\n {children}\n </div>,\n controls,\n style['marsun-form-info-is-mobile'],\n )\n }\n </SubList>\n );\n\n const tableViewRenderMobile =\n renderMobile === false\n ? false\n : typeof resolvedRenderMobile === 'function'\n ? resolvedRenderMobile\n : renderMobile === true || resolvedRenderMobile === true\n ? () => renderMobileList()\n : false;\n\n return (\n <TableView\n columns={columns}\n dataSource={[]}\n empty={null}\n className={style['marsun-form-info-table-list-view']}\n renderMobile={tableViewRenderMobile}\n render={() => renderDesktop()}\n />\n );\n});\n\nexport default markNestBlock(TableList);\n"],"names":["isHorizontallyOverflowing","el","buildColumns","list","removeText","item","props","value","TableList","withLocale","p","formatMessage","useFormInfoLocale","className","addIcon","addText","removeIcon","title","bordered","renderMobile","partStyles","partStyle","others","jsx","Empty","style","Plus","Trash2","isMobile","useIsMobile","useMobileRender","isRenderMobileActive","resolvedRenderMobile","useMemo","resolveRenderMobile","columns","fieldCount","innerRef","useRef","isOverflow","setIsOverflow","useState","useLayoutEffect","update","ro","mo","renderPart","children","onAdd","allowAdd","extraClassName","InfoPage","classnames","Button","renderDesktop","TableListBase","jsxs","Row","Col","id","isReq","onRemove","allowRemove","controls","renderMobileList","SubList","rowList","groupArgs","FieldList","targetProps","tableViewRenderMobile","TableView","TableList_default","markNestBlock"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { ReactNode } from 'react';
2
+ import { FormOverlaySharedProps } from './types';
3
+ export type BuildFormOverlayOptions = {
4
+ close?: () => void;
5
+ };
6
+ /**
7
+ * 抽出 formProps / autoClose / footer Cancel+Submit,供 Modal/Drawer 共用。
8
+ * Adapted from kne-union/components-core FormInfo/FormModal buildFormOverlayProps.
9
+ */
10
+ export declare function buildFormOverlayProps(props: FormOverlaySharedProps, { close }?: BuildFormOverlayOptions): {
11
+ className: string;
12
+ onClose: (() => void) | undefined;
13
+ bodyScroll: boolean;
14
+ destroyOnHidden: boolean;
15
+ footerButtons: unknown[];
16
+ modalRender: (node: ReactNode) => import("react").JSX.Element;
17
+ children: ReactNode;
18
+ okType?: string;
19
+ okButtonProps?: Record<string, unknown>;
20
+ onOk?: (...args: unknown[]) => unknown;
21
+ cancelButtonProps?: Record<string, unknown>;
22
+ footer?: ReactNode | ((ctx: {
23
+ defaultFooter: ReactNode;
24
+ props: Record<string, unknown>;
25
+ }) => ReactNode);
26
+ title?: ReactNode;
27
+ };
@@ -0,0 +1,55 @@
1
+ import { jsx as P } from "react/jsx-runtime";
2
+ import { CancelButton as S, SubmitButton as F } from "@kne/react-form-antd";
3
+ import N from "classnames";
4
+ import O from "./Form.js";
5
+ import T from "./style.module.scss.js";
6
+ function H(s, { close: m } = {}) {
7
+ const {
8
+ formProps: t = {},
9
+ saveText: l,
10
+ okText: c,
11
+ cancelText: a,
12
+ autoClose: i = !0,
13
+ footerButtons: u,
14
+ children: r,
15
+ onClose: f,
16
+ onCancel: p,
17
+ className: d,
18
+ ...y
19
+ } = s, o = m ?? p ?? f, C = typeof t == "function" ? t({ close: o }) : t, { onSubmit: e, ...b } = Object.assign({}, C);
20
+ return {
21
+ ...y,
22
+ className: N(T["marsun-form-info-modal"], "marsun-form-info-modal", d),
23
+ onClose: o,
24
+ bodyScroll: !0,
25
+ destroyOnHidden: !0,
26
+ footerButtons: u || [
27
+ {
28
+ children: a || "取消",
29
+ ButtonComponent: S
30
+ },
31
+ {
32
+ type: "primary",
33
+ children: c ?? l ?? "提交",
34
+ ButtonComponent: F,
35
+ autoClose: !1
36
+ }
37
+ ],
38
+ modalRender: (B) => /* @__PURE__ */ P(
39
+ O,
40
+ {
41
+ ...b,
42
+ onSubmit: async (h, ...x) => {
43
+ const n = e && await e(h, { close: o }, ...x);
44
+ return n !== !1 && i && (o == null || o()), n;
45
+ },
46
+ children: B
47
+ }
48
+ ),
49
+ children: typeof r == "function" ? r({ close: o }) : r
50
+ };
51
+ }
52
+ export {
53
+ H as buildFormOverlayProps
54
+ };
55
+ //# sourceMappingURL=buildFormOverlayProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildFormOverlayProps.js","sources":["../../../src/components/FormInfo/buildFormOverlayProps.tsx"],"sourcesContent":["// @ts-nocheck\nimport { CancelButton, SubmitButton } from '@kne/react-form-antd';\nimport classnames from 'classnames';\nimport type { ReactNode } from 'react';\nimport Form from './Form';\nimport type { FormOverlaySharedProps } from './types';\nimport style from './style.module.scss';\n\nexport type BuildFormOverlayOptions = { close?: () => void };\n\n/**\n * 抽出 formProps / autoClose / footer Cancel+Submit,供 Modal/Drawer 共用。\n * Adapted from kne-union/components-core FormInfo/FormModal buildFormOverlayProps.\n */\nexport function buildFormOverlayProps(\n props: FormOverlaySharedProps,\n { close }: BuildFormOverlayOptions = {},\n) {\n const {\n formProps = {},\n saveText,\n okText,\n cancelText,\n autoClose = true,\n footerButtons,\n children,\n onClose,\n onCancel,\n className,\n ...rest\n } = props;\n\n const resolvedClose = close ?? onCancel ?? onClose;\n const resolvedFormProps =\n typeof formProps === 'function' ? formProps({ close: resolvedClose }) : formProps;\n const { onSubmit, ..._formProps } = Object.assign({}, resolvedFormProps) as {\n onSubmit?: (\n data: Record<string, unknown>,\n ctx: { close?: () => void },\n ...args: unknown[]\n ) => unknown;\n [key: string]: unknown;\n };\n\n return {\n ...rest,\n className: classnames(style['marsun-form-info-modal'], 'marsun-form-info-modal', className),\n onClose: resolvedClose,\n bodyScroll: true,\n destroyOnHidden: true,\n footerButtons:\n footerButtons ||\n ([\n {\n children: cancelText || '取消',\n ButtonComponent: CancelButton,\n },\n {\n type: 'primary',\n children: okText ?? saveText ?? '提交',\n ButtonComponent: SubmitButton,\n autoClose: false,\n },\n ] as unknown[]),\n modalRender: (node: ReactNode) => (\n <Form\n {..._formProps}\n onSubmit={async (data: Record<string, unknown>, ...args: unknown[]) => {\n const res = onSubmit && (await onSubmit(data, { close: resolvedClose }, ...args));\n if (res !== false) {\n autoClose && resolvedClose?.();\n }\n return res;\n }}\n >\n {node}\n </Form>\n ),\n children: typeof children === 'function' ? children({ close: resolvedClose }) : children,\n };\n}\n"],"names":["buildFormOverlayProps","props","close","formProps","saveText","okText","cancelText","autoClose","footerButtons","children","onClose","onCancel","className","rest","resolvedClose","resolvedFormProps","onSubmit","_formProps","classnames","style","CancelButton","SubmitButton","node","jsx","Form","data","args","res"],"mappings":";;;;;AAcO,SAASA,EACdC,GACA,EAAE,OAAAC,EAAA,IAAmC,CAAA,GACrC;AACA,QAAM;AAAA,IACJ,WAAAC,IAAY,CAAA;AAAA,IACZ,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC,IAAY;AAAA,IACZ,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDZ,GAEEa,IAAgBZ,KAASS,KAAYD,GACrCK,IACJ,OAAOZ,KAAc,aAAaA,EAAU,EAAE,OAAOW,EAAA,CAAe,IAAIX,GACpE,EAAE,UAAAa,GAAU,GAAGC,EAAA,IAAe,OAAO,OAAO,CAAA,GAAIF,CAAiB;AASvE,SAAO;AAAA,IACL,GAAGF;AAAA,IACH,WAAWK,EAAWC,EAAM,wBAAwB,GAAG,0BAA0BP,CAAS;AAAA,IAC1F,SAASE;AAAA,IACT,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,eACEN,KACC;AAAA,MACC;AAAA,QACE,UAAUF,KAAc;AAAA,QACxB,iBAAiBc;AAAA,MAAA;AAAA,MAEnB;AAAA,QACE,MAAM;AAAA,QACN,UAAUf,KAAUD,KAAY;AAAA,QAChC,iBAAiBiB;AAAA,QACjB,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEJ,aAAa,CAACC,MACZ,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGP;AAAA,QACJ,UAAU,OAAOQ,MAAkCC,MAAoB;AACrE,gBAAMC,IAAMX,KAAa,MAAMA,EAASS,GAAM,EAAE,OAAOX,KAAiB,GAAGY,CAAI;AAC/E,iBAAIC,MAAQ,MACVpB,MAAaO,KAAA,QAAAA,MAERa;AAAA,QACT;AAAA,QAEC,UAAAL;AAAA,MAAA;AAAA,IAAA;AAAA,IAGL,UAAU,OAAOb,KAAa,aAAaA,EAAS,EAAE,OAAOK,EAAA,CAAe,IAAIL;AAAA,EAAA;AAEpF;"}
@@ -0,0 +1,33 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ type FieldProps = {
3
+ name: string;
4
+ label?: ReactNode;
5
+ labelTips?: ReactNode | ((props: FieldProps) => ReactNode);
6
+ rule?: string;
7
+ placeholder?: string;
8
+ disabled?: boolean;
9
+ block?: boolean;
10
+ rows?: number;
11
+ options?: unknown[];
12
+ [key: string]: unknown;
13
+ };
14
+ type ButtonProps = {
15
+ children?: ReactNode;
16
+ type?: string;
17
+ loading?: boolean;
18
+ [key: string]: unknown;
19
+ };
20
+ type InputType = ComponentType<FieldProps> & {
21
+ Password: ComponentType<FieldProps>;
22
+ };
23
+ export declare const Input: InputType;
24
+ export declare const TextArea: ComponentType<FieldProps>;
25
+ export declare const Select: ComponentType<FieldProps>;
26
+ export declare const TreeSelect: ComponentType<FieldProps>;
27
+ export declare const InputNumber: ComponentType<FieldProps>;
28
+ export declare const Switch: ComponentType<FieldProps>;
29
+ export declare const RadioGroup: ComponentType<FieldProps>;
30
+ export declare const SubmitButton: ComponentType<ButtonProps>;
31
+ export declare const ResetButton: ComponentType<ButtonProps>;
32
+ export declare const CancelButton: ComponentType<ButtonProps>;
33
+ export {};
@@ -0,0 +1,30 @@
1
+ import { CancelButton as o, ResetButton as n, SubmitButton as s, Input as a, TextArea as u, Select as c, TreeSelect as r, InputNumber as p, Switch as i, RadioGroup as S } from "@kne/react-form-antd";
2
+ import { withNormalizedLabelTips as t } from "../Form/normalizeLabelTips.js";
3
+ const e = a, l = t(e), $ = Object.assign(l, {
4
+ Password: t(e.Password)
5
+ }), b = t(
6
+ u
7
+ ), I = t(
8
+ c
9
+ ), d = t(
10
+ r
11
+ ), T = t(
12
+ p
13
+ ), w = t(
14
+ i
15
+ ), R = t(
16
+ S
17
+ ), h = s, x = n, N = o;
18
+ export {
19
+ N as CancelButton,
20
+ $ as Input,
21
+ T as InputNumber,
22
+ R as RadioGroup,
23
+ x as ResetButton,
24
+ I as Select,
25
+ h as SubmitButton,
26
+ w as Switch,
27
+ b as TextArea,
28
+ d as TreeSelect
29
+ };
30
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sources":["../../../src/components/FormInfo/fields.ts"],"sourcesContent":["/**\n * 字段包装:withNormalizedLabelTips;引擎按钮再导出。\n */\nimport {\n CancelButton as BaseCancelButton,\n Input as BaseInput,\n InputNumber as BaseInputNumber,\n RadioGroup as BaseRadioGroup,\n ResetButton as BaseResetButton,\n Select as BaseSelect,\n SubmitButton as BaseSubmitButton,\n Switch as BaseSwitch,\n TextArea as BaseTextArea,\n TreeSelect as BaseTreeSelect,\n} from '@kne/react-form-antd';\nimport type { ComponentType, ReactNode } from 'react';\nimport { withNormalizedLabelTips } from '@/components/Form/normalizeLabelTips';\n\ntype FieldProps = {\n name: string;\n label?: ReactNode;\n labelTips?: ReactNode | ((props: FieldProps) => ReactNode);\n rule?: string;\n placeholder?: string;\n disabled?: boolean;\n block?: boolean;\n rows?: number;\n options?: unknown[];\n [key: string]: unknown;\n};\n\ntype ButtonProps = {\n children?: ReactNode;\n type?: string;\n loading?: boolean;\n [key: string]: unknown;\n};\n\ntype InputType = ComponentType<FieldProps> & { Password: ComponentType<FieldProps> };\nconst InputBase = BaseInput as unknown as InputType;\nconst InputWrapped = withNormalizedLabelTips(InputBase);\nexport const Input = Object.assign(InputWrapped, {\n Password: withNormalizedLabelTips(InputBase.Password),\n}) as InputType;\n\nexport const TextArea = withNormalizedLabelTips(\n BaseTextArea as ComponentType<FieldProps>,\n) as ComponentType<FieldProps>;\nexport const Select = withNormalizedLabelTips(\n BaseSelect as ComponentType<FieldProps>,\n) as ComponentType<FieldProps>;\nexport const TreeSelect = withNormalizedLabelTips(\n BaseTreeSelect as ComponentType<FieldProps>,\n) as ComponentType<FieldProps>;\nexport const InputNumber = withNormalizedLabelTips(\n BaseInputNumber as ComponentType<FieldProps>,\n) as ComponentType<FieldProps>;\nexport const Switch = withNormalizedLabelTips(\n BaseSwitch as ComponentType<FieldProps>,\n) as ComponentType<FieldProps>;\nexport const RadioGroup = withNormalizedLabelTips(\n BaseRadioGroup as ComponentType<FieldProps>,\n) as ComponentType<FieldProps>;\n\nexport const SubmitButton = BaseSubmitButton as ComponentType<ButtonProps>;\nexport const ResetButton = BaseResetButton as ComponentType<ButtonProps>;\nexport const CancelButton = BaseCancelButton as ComponentType<ButtonProps>;\n"],"names":["InputBase","BaseInput","InputWrapped","withNormalizedLabelTips","Input","TextArea","BaseTextArea","Select","BaseSelect","TreeSelect","BaseTreeSelect","InputNumber","BaseInputNumber","Switch","BaseSwitch","RadioGroup","BaseRadioGroup","SubmitButton","BaseSubmitButton","ResetButton","BaseResetButton","CancelButton","BaseCancelButton"],"mappings":";;AAuCA,MAAMA,IAAYC,GACZC,IAAeC,EAAwBH,CAAS,GACzCI,IAAQ,OAAO,OAAOF,GAAc;AAAA,EAC/C,UAAUC,EAAwBH,EAAU,QAAQ;AACtD,CAAC,GAEYK,IAAWF;AAAA,EACtBG;AACF,GACaC,IAASJ;AAAA,EACpBK;AACF,GACaC,IAAaN;AAAA,EACxBO;AACF,GACaC,IAAcR;AAAA,EACzBS;AACF,GACaC,IAASV;AAAA,EACpBW;AACF,GACaC,IAAaZ;AAAA,EACxBa;AACF,GAEaC,IAAeC,GACfC,IAAcC,GACdC,IAAeC;"}