asterui 0.12.0 → 0.12.1

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 (160) hide show
  1. package/README.md +1 -1
  2. package/dist/components/Form.d.ts +27 -2
  3. package/dist/components/Radio.d.ts +7 -1
  4. package/dist/components/Status.d.ts +18 -0
  5. package/dist/index.d.ts +4 -2
  6. package/dist/index.js +61 -59
  7. package/dist/index.js.map +1 -1
  8. package/dist/index100.js +7 -12
  9. package/dist/index100.js.map +1 -1
  10. package/dist/index101.js +11 -29
  11. package/dist/index101.js.map +1 -1
  12. package/dist/index102.js +29 -16
  13. package/dist/index102.js.map +1 -1
  14. package/dist/index103.js +17 -10792
  15. package/dist/index103.js.map +1 -1
  16. package/dist/index104.js +10793 -5
  17. package/dist/index104.js.map +1 -1
  18. package/dist/index105.js +5 -42
  19. package/dist/index105.js.map +1 -1
  20. package/dist/index106.js +42 -2
  21. package/dist/index106.js.map +1 -1
  22. package/dist/index107.js +2 -7
  23. package/dist/index107.js.map +1 -1
  24. package/dist/index108.js +6 -151
  25. package/dist/index108.js.map +1 -1
  26. package/dist/index109.js +147 -25
  27. package/dist/index109.js.map +1 -1
  28. package/dist/index110.js +28 -28
  29. package/dist/index110.js.map +1 -1
  30. package/dist/index111.js +30 -2
  31. package/dist/index111.js.map +1 -1
  32. package/dist/index112.js +2 -72
  33. package/dist/index112.js.map +1 -1
  34. package/dist/index113.js +71 -38
  35. package/dist/index113.js.map +1 -1
  36. package/dist/index114.js +37 -24
  37. package/dist/index114.js.map +1 -1
  38. package/dist/index115.js +24 -19
  39. package/dist/index115.js.map +1 -1
  40. package/dist/index116.js +20 -23
  41. package/dist/index116.js.map +1 -1
  42. package/dist/index117.js +23 -19
  43. package/dist/index117.js.map +1 -1
  44. package/dist/index118.js +19 -99
  45. package/dist/index118.js.map +1 -1
  46. package/dist/index119.js +98 -358
  47. package/dist/index119.js.map +1 -1
  48. package/dist/index120.js +358 -23
  49. package/dist/index120.js.map +1 -1
  50. package/dist/index121.js +23 -71
  51. package/dist/index121.js.map +1 -1
  52. package/dist/index122.js +72 -15
  53. package/dist/index122.js.map +1 -1
  54. package/dist/index123.js +15 -65
  55. package/dist/index123.js.map +1 -1
  56. package/dist/index124.js +61 -139
  57. package/dist/index124.js.map +1 -1
  58. package/dist/index125.js +144 -2
  59. package/dist/index125.js.map +1 -1
  60. package/dist/index126.js +2 -56
  61. package/dist/index126.js.map +1 -1
  62. package/dist/index127.js +56 -2
  63. package/dist/index127.js.map +1 -1
  64. package/dist/index128.js +2 -2
  65. package/dist/index131.js +2 -2
  66. package/dist/index132.js +2 -2
  67. package/dist/index133.js +2 -2
  68. package/dist/index134.js +2 -2
  69. package/dist/index135.js +2 -32
  70. package/dist/index135.js.map +1 -1
  71. package/dist/index136.js +32 -2
  72. package/dist/index136.js.map +1 -1
  73. package/dist/index137.js +2 -8
  74. package/dist/index137.js.map +1 -1
  75. package/dist/index138.js +8 -2
  76. package/dist/index138.js.map +1 -1
  77. package/dist/index139.js +2 -2
  78. package/dist/index140.js +2 -21
  79. package/dist/index140.js.map +1 -1
  80. package/dist/index141.js +21 -2
  81. package/dist/index141.js.map +1 -1
  82. package/dist/index142.js +2 -24
  83. package/dist/index142.js.map +1 -1
  84. package/dist/index143.js +17 -64
  85. package/dist/index143.js.map +1 -1
  86. package/dist/index144.js +68 -18
  87. package/dist/index144.js.map +1 -1
  88. package/dist/index145.js +18 -31
  89. package/dist/index145.js.map +1 -1
  90. package/dist/index146.js +32 -68
  91. package/dist/index146.js.map +1 -1
  92. package/dist/index147.js +70 -2
  93. package/dist/index147.js.map +1 -1
  94. package/dist/index148.js +2 -22
  95. package/dist/index148.js.map +1 -1
  96. package/dist/index149.js +22 -2
  97. package/dist/index149.js.map +1 -1
  98. package/dist/index15.js +1 -1
  99. package/dist/index151.js +2 -2
  100. package/dist/index152.js +2 -2
  101. package/dist/index153.js +2 -4
  102. package/dist/index153.js.map +1 -1
  103. package/dist/index154.js +7 -0
  104. package/dist/index154.js.map +1 -0
  105. package/dist/index31.js +175 -116
  106. package/dist/index31.js.map +1 -1
  107. package/dist/index62.js +1 -1
  108. package/dist/index63.js +24 -24
  109. package/dist/index63.js.map +1 -1
  110. package/dist/index75.js +31 -22
  111. package/dist/index75.js.map +1 -1
  112. package/dist/index76.js +20 -327
  113. package/dist/index76.js.map +1 -1
  114. package/dist/index77.js +323 -50
  115. package/dist/index77.js.map +1 -1
  116. package/dist/index78.js +56 -40
  117. package/dist/index78.js.map +1 -1
  118. package/dist/index79.js +40 -23
  119. package/dist/index79.js.map +1 -1
  120. package/dist/index80.js +21 -93
  121. package/dist/index80.js.map +1 -1
  122. package/dist/index81.js +88 -123
  123. package/dist/index81.js.map +1 -1
  124. package/dist/index82.js +123 -154
  125. package/dist/index82.js.map +1 -1
  126. package/dist/index83.js +159 -63
  127. package/dist/index83.js.map +1 -1
  128. package/dist/index84.js +65 -35
  129. package/dist/index84.js.map +1 -1
  130. package/dist/index85.js +35 -234
  131. package/dist/index85.js.map +1 -1
  132. package/dist/index86.js +231 -31
  133. package/dist/index86.js.map +1 -1
  134. package/dist/index87.js +34 -210
  135. package/dist/index87.js.map +1 -1
  136. package/dist/index88.js +195 -198
  137. package/dist/index88.js.map +1 -1
  138. package/dist/index89.js +159 -241
  139. package/dist/index89.js.map +1 -1
  140. package/dist/index90.js +283 -166
  141. package/dist/index90.js.map +1 -1
  142. package/dist/index91.js +173 -253
  143. package/dist/index91.js.map +1 -1
  144. package/dist/index92.js +258 -14
  145. package/dist/index92.js.map +1 -1
  146. package/dist/index93.js +12 -31
  147. package/dist/index93.js.map +1 -1
  148. package/dist/index94.js +32 -5
  149. package/dist/index94.js.map +1 -1
  150. package/dist/index95.js +5 -13
  151. package/dist/index95.js.map +1 -1
  152. package/dist/index96.js +11 -43
  153. package/dist/index96.js.map +1 -1
  154. package/dist/index97.js +44 -11
  155. package/dist/index97.js.map +1 -1
  156. package/dist/index98.js +10 -12
  157. package/dist/index98.js.map +1 -1
  158. package/dist/index99.js +14 -7
  159. package/dist/index99.js.map +1 -1
  160. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index149.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index149.js","sources":["../../../node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js"],"sourcesContent":["const EXP_TABLE = new Uint8Array(512)\nconst LOG_TABLE = new Uint8Array(256)\n/**\n * Precompute the log and anti-log tables for faster computation later\n *\n * For each possible value in the galois field 2^8, we will pre-compute\n * the logarithm and anti-logarithm (exponential) of this value\n *\n * ref {@link https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Introduction_to_mathematical_fields}\n */\n;(function initTables () {\n let x = 1\n for (let i = 0; i < 255; i++) {\n EXP_TABLE[i] = x\n LOG_TABLE[x] = i\n\n x <<= 1 // multiply by 2\n\n // The QR code specification says to use byte-wise modulo 100011101 arithmetic.\n // This means that when a number is 256 or larger, it should be XORed with 0x11D.\n if (x & 0x100) { // similar to x >= 256, but a lot faster (because 0x100 == 256)\n x ^= 0x11D\n }\n }\n\n // Optimization: double the size of the anti-log table so that we don't need to mod 255 to\n // stay inside the bounds (because we will mainly use this table for the multiplication of\n // two GF numbers, no more).\n // @see {@link mul}\n for (let i = 255; i < 512; i++) {\n EXP_TABLE[i] = EXP_TABLE[i - 255]\n }\n}())\n\n/**\n * Returns log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.log = function log (n) {\n if (n < 1) throw new Error('log(' + n + ')')\n return LOG_TABLE[n]\n}\n\n/**\n * Returns anti-log value of n inside Galois Field\n *\n * @param {Number} n\n * @return {Number}\n */\nexports.exp = function exp (n) {\n return EXP_TABLE[n]\n}\n\n/**\n * Multiplies two number inside Galois Field\n *\n * @param {Number} x\n * @param {Number} y\n * @return {Number}\n */\nexports.mul = function mul (x, y) {\n if (x === 0 || y === 0) return 0\n\n // should be EXP_TABLE[(LOG_TABLE[x] + LOG_TABLE[y]) % 255] if EXP_TABLE wasn't oversized\n // @see {@link initTables}\n return EXP_TABLE[LOG_TABLE[x] + LOG_TABLE[y]]\n}\n"],"names":["EXP_TABLE","LOG_TABLE","x","i","galoisField","n","y"],"mappings":";;;;;AAAA,QAAMA,IAAY,IAAI,WAAW,GAAG,GAC9BC,IAAY,IAAI,WAAW,GAAG;AASnC,UAAC,WAAuB;AACvB,QAAIC,IAAI;AACR,aAASC,IAAI,GAAGA,IAAI,KAAKA;AACvB,MAAAH,EAAUG,CAAC,IAAID,GACfD,EAAUC,CAAC,IAAIC,GAEfD,MAAM,GAIFA,IAAI,QACNA,KAAK;AAQT,aAASC,IAAI,KAAKA,IAAI,KAAKA;AACzB,MAAAH,EAAUG,CAAC,IAAIH,EAAUG,IAAI,GAAG;AAAA,EAEpC,GAAC,GAQDC,EAAA,MAAc,SAAcC,GAAG;AAC7B,QAAIA,IAAI,EAAG,OAAM,IAAI,MAAM,SAASA,IAAI,GAAG;AAC3C,WAAOJ,EAAUI,CAAC;AAAA,EACpB,GAQAD,EAAA,MAAc,SAAcC,GAAG;AAC7B,WAAOL,EAAUK,CAAC;AAAA,EACpB,GASAD,EAAA,MAAc,SAAcF,GAAGI,GAAG;AAChC,WAAIJ,MAAM,KAAKI,MAAM,IAAU,IAIxBN,EAAUC,EAAUC,CAAC,IAAID,EAAUK,CAAC,CAAC;AAAA,EAC9C;;","x_google_ignoreList":[0]}
package/dist/index15.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as w } from "react/jsx-runtime";
2
2
  import { useRef as C, useState as v, useEffect as M } from "react";
3
- import O from "./index103.js";
3
+ import O from "./index104.js";
4
4
  function S(o) {
5
5
  return typeof document > "u" ? "" : getComputedStyle(document.documentElement).getPropertyValue(o).trim();
6
6
  }
package/dist/index151.js CHANGED
@@ -1,5 +1,5 @@
1
- var r = { exports: {} };
1
+ var e = {};
2
2
  export {
3
- r as __module
3
+ e as __exports
4
4
  };
5
5
  //# sourceMappingURL=index151.js.map
package/dist/index152.js CHANGED
@@ -1,5 +1,5 @@
1
- var a = {};
1
+ var r = { exports: {} };
2
2
  export {
3
- a as __exports
3
+ r as __module
4
4
  };
5
5
  //# sourceMappingURL=index152.js.map
package/dist/index153.js CHANGED
@@ -1,7 +1,5 @@
1
- function e(t) {
2
- return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
3
- }
1
+ var a = {};
4
2
  export {
5
- e as getDefaultExportFromCjs
3
+ a as __exports
6
4
  };
7
5
  //# sourceMappingURL=index153.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index153.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index153.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,7 @@
1
+ function e(t) {
2
+ return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
3
+ }
4
+ export {
5
+ e as getDefaultExportFromCjs
6
+ };
7
+ //# sourceMappingURL=index154.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index154.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
package/dist/index31.js CHANGED
@@ -1,7 +1,7 @@
1
- import { jsx as n, jsxs as I } from "react/jsx-runtime";
2
- import { createContext as Z, useId as C, isValidElement as k, cloneElement as T, useContext as _ } from "react";
3
- import { useForm as q, useFieldArray as B, Controller as D } from "react-hook-form";
4
- const j = Z(void 0), $ = {
1
+ import { jsx as t, jsxs as L } from "react/jsx-runtime";
2
+ import { createContext as ae, useId as J, useEffect as H, useRef as K, isValidElement as U, cloneElement as ie, useContext as le } from "react";
3
+ import { useForm as Y, useFieldArray as ce, useWatch as ue, Controller as me } from "react-hook-form";
4
+ const P = ae(void 0), M = {
5
5
  email: {
6
6
  value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
7
7
  message: "Please enter a valid email address"
@@ -15,150 +15,209 @@ const j = Z(void 0), $ = {
15
15
  message: "Please enter a valid number"
16
16
  }
17
17
  };
18
- function S() {
19
- const t = _(j);
20
- if (!t)
18
+ function z() {
19
+ const r = le(P);
20
+ if (!r)
21
21
  throw new Error("Form compound components must be used within Form");
22
- return t;
22
+ return r;
23
23
  }
24
- function H({
25
- form: t,
26
- onFinish: a,
27
- initialValues: r,
28
- layout: i = "vertical",
29
- size: c,
30
- children: x,
31
- className: m = "",
32
- noValidate: h = !0,
33
- ...l
24
+ function de({
25
+ form: r,
26
+ onFinish: o,
27
+ initialValues: s,
28
+ layout: u = "vertical",
29
+ labelWidth: m = 60,
30
+ size: y,
31
+ children: h,
32
+ className: l = "",
33
+ noValidate: i = !0,
34
+ ...g
34
35
  }) {
35
- const p = q({
36
- defaultValues: r
37
- }), d = t || p, v = (F) => {
38
- F.preventDefault(), a && d.handleSubmit(a)(F);
36
+ const p = Y({
37
+ defaultValues: s
38
+ }), v = r || p, c = ($) => {
39
+ $.preventDefault(), o && v.handleSubmit(o)($);
39
40
  };
40
- return /* @__PURE__ */ n(j.Provider, { value: { form: d, layout: i, size: c }, children: /* @__PURE__ */ n("form", { onSubmit: v, className: m, noValidate: h, ...l, children: x }) });
41
+ return /* @__PURE__ */ t(P.Provider, { value: { form: v, layout: u, labelWidth: m, size: y }, children: /* @__PURE__ */ t("form", { onSubmit: c, className: l, noValidate: i, ...g, children: h }) });
41
42
  }
42
- function U({
43
- name: t,
44
- label: a,
45
- help: r,
46
- required: i = !1,
47
- rules: c,
48
- valuePropName: x = "value",
49
- inline: m = !1,
50
- className: h = "",
51
- children: l
43
+ function fe({
44
+ name: r,
45
+ label: o,
46
+ help: s,
47
+ required: u = !1,
48
+ rules: m,
49
+ valuePropName: y = "value",
50
+ inline: h = !1,
51
+ className: l = "",
52
+ children: i,
53
+ tooltip: g,
54
+ extra: p,
55
+ hasFeedback: v = !1,
56
+ dependencies: c,
57
+ validateTrigger: $ = "onChange",
58
+ initialValue: B,
59
+ hidden: S = !1
52
60
  }) {
53
- const { form: p, size: d, listName: v, layout: F } = S(), z = C(), V = C();
54
- if (!t)
55
- return /* @__PURE__ */ n("div", { className: `form-control ${m ? "w-auto" : "w-full"} ${h}`, children: l });
56
- let N;
57
- Array.isArray(t) ? N = (v ? [v, ...t] : t).join(".") : N = t;
58
- const A = ((e) => {
59
- const o = e.split(".");
60
- let s = p.formState.errors;
61
- for (const E of o) {
62
- if (!s) break;
63
- s = s[E];
61
+ const { form: d, size: R, listName: q, layout: W, labelWidth: G } = z(), T = J(), C = J();
62
+ if (!r)
63
+ return /* @__PURE__ */ t("div", { className: `form-control ${h ? "w-auto" : "w-full"} ${l}`, style: S ? { display: "none" } : void 0, children: i });
64
+ let f;
65
+ Array.isArray(r) ? f = (q ? [q, ...r] : r).join(".") : f = r, H(() => {
66
+ B !== void 0 && d.getValues(f) === void 0 && d.setValue(f, B);
67
+ }, []);
68
+ const j = ue({
69
+ control: d.control,
70
+ name: c,
71
+ disabled: !c || c.length === 0
72
+ }), Z = K(d);
73
+ Z.current = d;
74
+ const E = K(void 0);
75
+ H(() => {
76
+ if (!c || c.length === 0) return;
77
+ if (E.current === void 0) {
78
+ E.current = JSON.stringify(j);
79
+ return;
64
80
  }
65
- return s;
66
- })(N), b = A?.message, L = c ? Array.isArray(c) ? c : [c] : [], u = {}, P = [], w = [];
67
- i && (u.required = "This field is required");
68
- for (const e of L) {
69
- if (e.required && (u.required = typeof e.required == "string" ? e.required : e.message || "This field is required"), e.type && $[e.type] && P.push({
70
- pattern: $[e.type].value,
71
- message: e.message || $[e.type].message
81
+ const e = JSON.stringify(j);
82
+ E.current !== e && (E.current = e, Z.current.trigger(f));
83
+ }, [j, c, f]);
84
+ const w = ((e) => {
85
+ const n = e.split(".");
86
+ let a = d.formState.errors;
87
+ for (const V of n) {
88
+ if (!a) break;
89
+ a = a[V];
90
+ }
91
+ return a;
92
+ })(f), N = w?.message, Q = m ? Array.isArray(m) ? m : [m] : [], k = {}, A = [], I = [];
93
+ u && (k.required = "This field is required");
94
+ for (const e of Q) {
95
+ if (e.required && (k.required = typeof e.required == "string" ? e.required : e.message || "This field is required"), e.type && M[e.type] && A.push({
96
+ pattern: M[e.type].value,
97
+ message: e.message || M[e.type].message
72
98
  }), e.min !== void 0) {
73
- const o = typeof e.min == "object" ? e.min.value : e.min, s = typeof e.min == "object" ? e.min.message : e.message || `Minimum length is ${o} characters`;
74
- u.minLength = { value: o, message: s };
99
+ const n = typeof e.min == "object" ? e.min.value : e.min, a = typeof e.min == "object" ? e.min.message : e.message || `Minimum length is ${n} characters`;
100
+ k.minLength = { value: n, message: a };
75
101
  }
76
102
  if (e.max !== void 0) {
77
- const o = typeof e.max == "object" ? e.max.value : e.max, s = typeof e.max == "object" ? e.max.message : e.message || `Maximum length is ${o} characters`;
78
- u.maxLength = { value: o, message: s };
103
+ const n = typeof e.max == "object" ? e.max.value : e.max, a = typeof e.max == "object" ? e.max.message : e.message || `Maximum length is ${n} characters`;
104
+ k.maxLength = { value: n, message: a };
79
105
  }
80
106
  if (e.pattern) {
81
- const o = e.pattern instanceof RegExp ? e.pattern : e.pattern.value, s = e.pattern instanceof RegExp ? e.message || "Invalid format" : e.pattern.message;
82
- P.push({ pattern: o, message: s });
107
+ const n = e.pattern instanceof RegExp ? e.pattern : e.pattern.value, a = e.pattern instanceof RegExp ? e.message || "Invalid format" : e.pattern.message;
108
+ A.push({ pattern: n, message: a });
83
109
  }
84
- e.validate && w.push(e.validate);
110
+ e.validate && I.push(e.validate);
85
111
  }
86
- return (P.length > 0 || w.length > 0) && (u.validate = async (e) => {
87
- if (!e && !u.required) return !0;
88
- for (const { pattern: o, message: s } of P)
89
- if (e && !o.test(e))
90
- return s;
91
- for (const o of w) {
92
- const s = await o(e);
93
- if (s !== !0)
94
- return s;
112
+ (A.length > 0 || I.length > 0) && (k.validate = async (e) => {
113
+ if (!e && !k.required) return !0;
114
+ for (const { pattern: n, message: a } of A)
115
+ if (e && !n.test(e))
116
+ return a;
117
+ for (const n of I) {
118
+ const a = await n(e);
119
+ if (a !== !0)
120
+ return a;
95
121
  }
96
122
  return !0;
97
- }), /* @__PURE__ */ n(
98
- D,
123
+ });
124
+ const D = Array.isArray($) ? $ : [$], O = D.includes("onChange"), X = D.includes("onBlur"), ee = ({ hasError: e, isValidating: n }) => n ? /* @__PURE__ */ t("span", { className: "loading loading-spinner loading-xs text-base-content/50" }) : e ? /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-error", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) : /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-success", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }), te = () => /* @__PURE__ */ t("div", { className: "tooltip tooltip-top ml-1", "data-tip": g, children: /* @__PURE__ */ t("svg", { className: "w-4 h-4 text-base-content/50 cursor-help", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }) });
125
+ return /* @__PURE__ */ t(
126
+ me,
99
127
  {
100
- name: N,
101
- control: p.control,
102
- rules: u,
103
- render: ({ field: e }) => {
104
- const { value: o, onChange: s, onBlur: E, ref: M } = e, f = {
105
- id: z,
106
- ref: M,
107
- onBlur: E,
108
- "aria-invalid": A ? !0 : void 0,
109
- "aria-describedby": A ? V : void 0
128
+ name: f,
129
+ control: d.control,
130
+ rules: k,
131
+ render: ({ field: e, fieldState: n }) => {
132
+ const { value: a, onChange: V, onBlur: re, ref: se } = e, oe = n.isTouched && d.formState.isValidating, x = {
133
+ id: T,
134
+ ref: se,
135
+ "aria-invalid": w ? !0 : void 0,
136
+ "aria-describedby": w ? C : void 0
110
137
  };
111
- x === "checked" ? (f.checked = o, f.onChange = (g) => s(g.target.checked)) : (f.value = o || "", f.onChange = (g) => {
112
- g && g.target !== void 0 ? s(g.target.value) : s(g);
113
- }), d && k(l) && (l.props.size || (f.size = d)), A && (f.color = "error");
114
- const R = k(l) ? T(l, f) : l, y = F === "horizontal";
115
- return /* @__PURE__ */ I("div", { className: `form-control ${m ? "w-auto" : "w-full"} ${h}`, children: [
116
- /* @__PURE__ */ I("div", { className: y ? "flex items-center gap-4" : "", children: [
117
- a && /* @__PURE__ */ n("label", { htmlFor: z, className: `label ${y ? "flex-shrink-0" : "mb-2"}`, children: /* @__PURE__ */ I("span", { className: "label-text", children: [
118
- a,
119
- i && /* @__PURE__ */ n("span", { className: "text-error ml-1", children: "*" })
120
- ] }) }),
121
- /* @__PURE__ */ n("div", { className: y ? "flex-1" : "", children: R })
138
+ x.onBlur = () => {
139
+ re(), X && d.trigger(f);
140
+ }, y === "checked" ? (x.checked = a, x.onChange = (F) => {
141
+ V(F.target.checked), O && d.trigger(f);
142
+ }) : (x.value = a || "", x.onChange = (F) => {
143
+ F && F.target !== void 0 ? V(F.target.value) : V(F), O && d.trigger(f);
144
+ }), R && U(i) && (i.props.size || (x.size = R)), w && (x.color = "error", x["aria-invalid"] = !0);
145
+ const ne = U(i) ? ie(i, x) : i, b = W === "horizontal", _ = W === "inline";
146
+ return /* @__PURE__ */ L("div", { className: `form-control ${h ? "w-auto" : "w-full"} ${b ? "mb-4" : ""} ${_ ? "inline-flex mr-4" : ""} ${l}`, style: S ? { display: "none" } : void 0, children: [
147
+ /* @__PURE__ */ L("div", { className: b ? "flex items-center gap-4" : "", children: [
148
+ o && /* @__PURE__ */ t(
149
+ "label",
150
+ {
151
+ htmlFor: T,
152
+ className: `label ${b ? "flex-shrink-0 justify-end py-0" : ""} ${!b && !_ ? "pb-1" : ""}`,
153
+ style: b ? { width: G } : void 0,
154
+ children: /* @__PURE__ */ L("span", { className: "label-text flex items-center", children: [
155
+ o,
156
+ u && /* @__PURE__ */ t("span", { className: "text-error ml-1", children: "*" }),
157
+ g && /* @__PURE__ */ t(te, {})
158
+ ] })
159
+ }
160
+ ),
161
+ /* @__PURE__ */ L("div", { className: `${b ? "flex-1" : ""} ${v ? "relative" : ""}`, children: [
162
+ ne,
163
+ v && n.isTouched && /* @__PURE__ */ t("span", { className: "absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none", children: /* @__PURE__ */ t(ee, { hasError: !!w, isValidating: oe }) })
164
+ ] })
122
165
  ] }),
123
- !y && !m && /* @__PURE__ */ n("div", { className: "label", children: /* @__PURE__ */ n("span", { id: V, className: "label-text-alt text-error min-h-[1.25rem]", role: b ? "alert" : void 0, children: b || r && /* @__PURE__ */ n("span", { className: "text-base-content/70", children: r }) || " " }) }),
124
- y && (b || r) && /* @__PURE__ */ n("div", { className: "label", children: /* @__PURE__ */ n("span", { id: V, className: "label-text-alt text-error min-h-[1.25rem] ml-auto", role: b ? "alert" : void 0, children: b || r && /* @__PURE__ */ n("span", { className: "text-base-content/70", children: r }) }) })
166
+ !b && !h && /* @__PURE__ */ t("p", { id: C, className: `validator-hint ${N ? "!visible text-error" : ""} min-h-[1.25rem]`, role: N ? "alert" : void 0, children: N || s && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: s }) || " " }),
167
+ b && (N || s) && /* @__PURE__ */ t("p", { id: C, className: `validator-hint ${N ? "!visible text-error" : ""} min-h-[1.25rem]`, role: N ? "alert" : void 0, children: N || s && /* @__PURE__ */ t("span", { className: "text-base-content/70", children: s }) }),
168
+ p && /* @__PURE__ */ t("div", { className: "text-sm text-base-content/60 mt-1", children: p })
125
169
  ] });
126
170
  }
127
171
  }
128
172
  );
129
173
  }
130
- function W({
131
- name: t,
132
- children: a
174
+ function he({
175
+ name: r,
176
+ children: o
133
177
  }) {
134
- const { form: r, layout: i, size: c } = S(), { fields: x, append: m, remove: h, move: l } = B({
135
- control: r.control,
136
- name: t
137
- }), p = x.map((d, v) => ({
138
- ...d,
178
+ const { form: s, layout: u, size: m } = z(), { fields: y, append: h, remove: l, move: i } = ce({
179
+ control: s.control,
180
+ name: r
181
+ }), g = y.map((p, v) => ({
182
+ ...p,
139
183
  name: v
140
184
  }));
141
- return /* @__PURE__ */ n(j.Provider, { value: { form: r, layout: i, size: c, listName: t }, children: a(p, {
142
- add: m,
143
- remove: h,
144
- move: l
185
+ return /* @__PURE__ */ t(P.Provider, { value: { form: s, layout: u, size: m, listName: r }, children: o(g, {
186
+ add: h,
187
+ remove: l,
188
+ move: i
145
189
  }) });
146
190
  }
147
- function Y() {
148
- const t = q(), a = t;
149
- return a.setFieldValue = t.setValue, a.getFieldValue = (r) => t.getValues(r), a.getFieldsValue = t.getValues, a.setFieldsValue = (r) => {
150
- Object.keys(r).forEach((i) => {
151
- t.setValue(i, r[i]);
191
+ function ge() {
192
+ const r = Y(), o = r;
193
+ return o.setFieldValue = r.setValue, o.getFieldValue = (s) => r.getValues(s), o.getFieldsValue = r.getValues, o.setFieldsValue = (s) => {
194
+ Object.keys(s).forEach((u) => {
195
+ r.setValue(u, s[u]);
152
196
  });
153
- }, a.validateFields = t.trigger, a.resetFields = t.reset, a.isFieldTouched = (r) => !!t.formState.touchedFields[r], a.getFieldError = (r) => t.formState.errors[r]?.message, a;
197
+ }, o.validateFields = r.trigger, o.resetFields = r.reset, o.isFieldTouched = (s) => !!r.formState.touchedFields[s], o.getFieldError = (s) => r.formState.errors[s]?.message, o;
198
+ }
199
+ function pe({ fields: r, className: o = "" }) {
200
+ const { form: s } = z(), { errors: u } = s.formState, m = (l, i = "") => {
201
+ const g = [];
202
+ for (const p in l) {
203
+ const v = i ? `${i}.${p}` : p, c = l[p];
204
+ c?.message ? g.push({ field: v, message: c.message }) : typeof c == "object" && c !== null && g.push(...m(c, v));
205
+ }
206
+ return g;
207
+ }, y = m(u), h = r ? y.filter((l) => r.includes(l.field)) : y;
208
+ return h.length === 0 ? null : /* @__PURE__ */ t("ul", { className: `text-error text-sm space-y-1 ${o}`, role: "alert", children: h.map((l, i) => /* @__PURE__ */ L("li", { className: "flex items-start gap-2", children: [
209
+ /* @__PURE__ */ t("svg", { className: "w-4 h-4 mt-0.5 flex-shrink-0", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ t("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }),
210
+ /* @__PURE__ */ t("span", { children: l.message })
211
+ ] }, `${l.field}-${i}`)) });
154
212
  }
155
- const Q = Object.assign(H, {
156
- Item: U,
157
- List: W,
158
- useForm: Y
213
+ const Ne = Object.assign(de, {
214
+ Item: fe,
215
+ List: he,
216
+ ErrorList: pe,
217
+ useForm: ge
159
218
  });
160
219
  export {
161
- Q as Form,
162
- Y as useFormInstance
220
+ Ne as Form,
221
+ ge as useFormInstance
163
222
  };
164
223
  //# sourceMappingURL=index31.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index31.js","sources":["../src/components/Form.tsx"],"sourcesContent":["import React, { createContext, useContext, cloneElement, isValidElement, useId } from 'react'\nimport { useForm, UseFormReturn, FieldValues, SubmitHandler, UseFormProps, Controller, useFieldArray, FieldArrayPath, FieldArray } from 'react-hook-form'\n\ninterface FormContextValue {\n form: UseFormReturn<any>\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n listName?: string\n}\n\nconst FormContext = createContext<FormContextValue | undefined>(undefined)\n\n// Built-in type validators\nconst TYPE_VALIDATORS = {\n email: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n message: 'Please enter a valid email address',\n },\n url: {\n value: /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/,\n message: 'Please enter a valid URL',\n },\n number: {\n value: /^-?\\d+(\\.\\d+)?$/,\n message: 'Please enter a valid number',\n },\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> {\n form?: UseFormReturn<TFieldValues>\n onFinish?: SubmitHandler<TFieldValues>\n initialValues?: UseFormProps<TFieldValues>['defaultValues']\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n children: React.ReactNode\n}\n\nexport interface FormRule {\n required?: boolean | string\n type?: 'email' | 'url' | 'number'\n min?: number | { value: number; message: string }\n max?: number | { value: number; message: string }\n pattern?: RegExp | { value: RegExp; message: string }\n message?: string\n validate?: (value: any) => boolean | string | Promise<boolean | string>\n}\n\nexport interface FormItemProps {\n name?: string | string[]\n label?: string\n help?: string\n required?: boolean\n rules?: FormRule | FormRule[]\n valuePropName?: string\n inline?: boolean\n className?: string\n children: React.ReactElement\n}\n\nexport interface FormListProps<TFieldValues extends FieldValues = FieldValues> {\n name: FieldArrayPath<TFieldValues>\n children: (\n fields: FieldArray<TFieldValues>[],\n operations: {\n add: (value?: any) => void\n remove: (index: number) => void\n move: (from: number, to: number) => void\n }\n ) => React.ReactNode\n}\n\nfunction useFormContext() {\n const context = useContext(FormContext)\n if (!context) {\n throw new Error('Form compound components must be used within Form')\n }\n return context\n}\n\nfunction FormRoot<TFieldValues extends FieldValues = FieldValues>({\n form: externalForm,\n onFinish,\n initialValues,\n layout = 'vertical',\n size,\n children,\n className = '',\n noValidate = true,\n ...props\n}: FormProps<TFieldValues>) {\n const internalForm = useForm<TFieldValues>({\n defaultValues: initialValues,\n })\n\n const form = externalForm || internalForm\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (onFinish) {\n form.handleSubmit(onFinish)(e)\n }\n }\n\n return (\n <FormContext.Provider value={{ form, layout, size }}>\n <form onSubmit={handleSubmit} className={className} noValidate={noValidate} {...props}>\n {children}\n </form>\n </FormContext.Provider>\n )\n}\n\nfunction FormItem({\n name,\n label,\n help,\n required = false,\n rules,\n valuePropName = 'value',\n inline = false,\n className = '',\n children,\n}: FormItemProps) {\n const { form, size, listName, layout } = useFormContext()\n const inputId = useId()\n const errorId = useId()\n\n if (!name) {\n // Render without form control if no name provided\n return <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${className}`}>{children}</div>\n }\n\n // Handle nested field names (for Form.List)\n let fieldName: string\n if (Array.isArray(name)) {\n // If we're inside a Form.List, prepend the list name\n const fullPath = listName ? [listName, ...name] : name\n fieldName = fullPath.join('.')\n } else {\n fieldName = name\n }\n\n // Get error by traversing the error object path\n const getErrorByPath = (path: string) => {\n const keys = path.split('.')\n let error: any = form.formState.errors\n for (const key of keys) {\n if (!error) break\n error = error[key]\n }\n return error\n }\n\n const error = getErrorByPath(fieldName)\n const errorMessage = error?.message as string | undefined\n\n // Normalize rules to array\n const rulesArray: FormRule[] = rules\n ? Array.isArray(rules) ? rules : [rules]\n : []\n\n // Build validation rules\n const validationRules: any = {}\n const patternValidators: Array<{ pattern: RegExp; message: string }> = []\n const customValidators: Array<(value: any) => boolean | string | Promise<boolean | string>> = []\n\n // Handle top-level required prop\n if (required) {\n validationRules.required = 'This field is required'\n }\n\n // Process each rule\n for (const rule of rulesArray) {\n // Required\n if (rule.required) {\n validationRules.required = typeof rule.required === 'string'\n ? rule.required\n : rule.message || 'This field is required'\n }\n\n // Type validator\n if (rule.type && TYPE_VALIDATORS[rule.type]) {\n patternValidators.push({\n pattern: TYPE_VALIDATORS[rule.type].value,\n message: rule.message || TYPE_VALIDATORS[rule.type].message,\n })\n }\n\n // Min length\n if (rule.min !== undefined) {\n const minValue = typeof rule.min === 'object' ? rule.min.value : rule.min\n const minMessage = typeof rule.min === 'object'\n ? rule.min.message\n : rule.message || `Minimum length is ${minValue} characters`\n validationRules.minLength = { value: minValue, message: minMessage }\n }\n\n // Max length\n if (rule.max !== undefined) {\n const maxValue = typeof rule.max === 'object' ? rule.max.value : rule.max\n const maxMessage = typeof rule.max === 'object'\n ? rule.max.message\n : rule.message || `Maximum length is ${maxValue} characters`\n validationRules.maxLength = { value: maxValue, message: maxMessage }\n }\n\n // Pattern - collect all patterns\n if (rule.pattern) {\n const patternValue = rule.pattern instanceof RegExp ? rule.pattern : rule.pattern.value\n const patternMessage = rule.pattern instanceof RegExp\n ? rule.message || 'Invalid format'\n : rule.pattern.message\n patternValidators.push({ pattern: patternValue, message: patternMessage })\n }\n\n // Custom validator\n if (rule.validate) {\n customValidators.push(rule.validate)\n }\n }\n\n // Combine all pattern and custom validators into a single validate function\n if (patternValidators.length > 0 || customValidators.length > 0) {\n validationRules.validate = async (value: any) => {\n // Skip validation if empty (required rule handles that)\n if (!value && !validationRules.required) return true\n\n // Check all patterns\n for (const { pattern, message } of patternValidators) {\n if (value && !pattern.test(value)) {\n return message\n }\n }\n\n // Run all custom validators\n for (const validator of customValidators) {\n const result = await validator(value)\n if (result !== true) {\n return result\n }\n }\n\n return true\n }\n }\n\n return (\n <Controller\n name={fieldName}\n control={form.control}\n rules={validationRules}\n render={({ field }) => {\n const { value, onChange, onBlur, ref } = field\n\n // Clone the child element and inject form control props\n const childProps: any = {\n id: inputId,\n ref,\n onBlur,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': error ? errorId : undefined,\n }\n\n // Handle different value prop names (e.g., 'checked' for checkboxes)\n if (valuePropName === 'checked') {\n childProps.checked = value\n childProps.onChange = (e: React.ChangeEvent<HTMLInputElement>) => onChange(e.target.checked)\n } else {\n childProps.value = value || ''\n childProps.onChange = (eventOrValue: any) => {\n // Handle components that pass value directly (e.g., Range, Rating)\n // vs components that pass event object (e.g., Input, Select)\n if (eventOrValue && eventOrValue.target !== undefined) {\n onChange(eventOrValue.target.value)\n } else {\n onChange(eventOrValue)\n }\n }\n }\n\n // Apply size if specified at form level\n if (size && isValidElement(children)) {\n const existingProps = children.props as any\n if (!existingProps.size) {\n childProps.size = size\n }\n }\n\n // Apply error styling\n if (error) {\n childProps.color = 'error'\n }\n\n const enhancedChild = isValidElement(children)\n ? cloneElement(children as React.ReactElement<any>, childProps)\n : children\n\n const isHorizontal = layout === 'horizontal'\n\n return (\n <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${className}`}>\n <div className={isHorizontal ? 'flex items-center gap-4' : ''}>\n {label && (\n <label htmlFor={inputId} className={`label ${isHorizontal ? 'flex-shrink-0' : 'mb-2'}`}>\n <span className=\"label-text\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n </span>\n </label>\n )}\n <div className={isHorizontal ? 'flex-1' : ''}>\n {enhancedChild}\n </div>\n </div>\n {!isHorizontal && !inline && (\n <div className=\"label\">\n <span id={errorId} className=\"label-text-alt text-error min-h-[1.25rem]\" role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>) || '\\u00A0'}\n </span>\n </div>\n )}\n {isHorizontal && (errorMessage || help) && (\n <div className=\"label\">\n <span id={errorId} className=\"label-text-alt text-error min-h-[1.25rem] ml-auto\" role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>)}\n </span>\n </div>\n )}\n </div>\n )\n }}\n />\n )\n}\n\nfunction FormList<TFieldValues extends FieldValues = FieldValues>({\n name,\n children,\n}: FormListProps<TFieldValues>) {\n const { form, layout, size } = useFormContext()\n\n const { fields, append, remove, move } = useFieldArray({\n control: form.control,\n name,\n })\n\n // Add name (index) to each field for proper path construction\n const fieldsWithName = fields.map((field, index) => ({\n ...field,\n name: index,\n }))\n\n return (\n <FormContext.Provider value={{ form, layout, size, listName: name as string }}>\n {children(fieldsWithName as any, {\n add: append,\n remove,\n move,\n })}\n </FormContext.Provider>\n )\n}\n\n// Enhanced hook to expose full form API\nexport function useFormInstance<TFieldValues extends FieldValues = FieldValues>() {\n const formInstance = useForm<TFieldValues>()\n\n // Add convenience methods to the instance\n const enhancedInstance = formInstance as typeof formInstance & {\n setFieldValue: typeof formInstance.setValue\n getFieldValue: (name: any) => any\n getFieldsValue: typeof formInstance.getValues\n setFieldsValue: (values: any) => void\n validateFields: typeof formInstance.trigger\n resetFields: typeof formInstance.reset\n isFieldTouched: (name: string) => boolean\n getFieldError: (name: string) => string | undefined\n }\n\n // Add the alias methods\n enhancedInstance.setFieldValue = formInstance.setValue\n enhancedInstance.getFieldValue = (name: any) => formInstance.getValues(name)\n enhancedInstance.getFieldsValue = formInstance.getValues\n enhancedInstance.setFieldsValue = (values: any) => {\n Object.keys(values).forEach((key) => {\n formInstance.setValue(key as any, values[key])\n })\n }\n enhancedInstance.validateFields = formInstance.trigger\n enhancedInstance.resetFields = formInstance.reset\n enhancedInstance.isFieldTouched = (name: string) => {\n const touched = formInstance.formState.touchedFields as any\n return !!touched[name]\n }\n enhancedInstance.getFieldError = (name: string) => {\n const errors = formInstance.formState.errors as any\n return errors[name]?.message as string | undefined\n }\n\n return enhancedInstance\n}\n\nexport const Form = Object.assign(FormRoot, {\n Item: FormItem,\n List: FormList,\n useForm: useFormInstance,\n})\n\nexport type { UseFormReturn as FormInstance }\n"],"names":["FormContext","createContext","TYPE_VALIDATORS","useFormContext","context","useContext","FormRoot","externalForm","onFinish","initialValues","layout","size","children","className","noValidate","props","internalForm","useForm","form","handleSubmit","e","jsx","FormItem","name","label","help","required","rules","valuePropName","inline","listName","inputId","useId","errorId","fieldName","error","path","keys","key","errorMessage","rulesArray","validationRules","patternValidators","customValidators","rule","minValue","minMessage","maxValue","maxMessage","patternValue","patternMessage","value","pattern","message","validator","result","Controller","field","onChange","onBlur","ref","childProps","eventOrValue","isValidElement","enhancedChild","cloneElement","isHorizontal","jsxs","FormList","fields","append","remove","move","useFieldArray","fieldsWithName","index","useFormInstance","formInstance","enhancedInstance","values","Form"],"mappings":"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"}
1
+ {"version":3,"file":"index31.js","sources":["../src/components/Form.tsx"],"sourcesContent":["import React, { createContext, useContext, cloneElement, isValidElement, useId, useEffect, useRef } from 'react'\nimport { useForm, UseFormReturn, FieldValues, SubmitHandler, UseFormProps, Controller, useFieldArray, FieldArrayPath, FieldArray, useWatch } from 'react-hook-form'\n\ninterface FormContextValue {\n form: UseFormReturn<any>\n layout?: 'vertical' | 'horizontal' | 'inline'\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n labelWidth?: number\n listName?: string\n}\n\nconst FormContext = createContext<FormContextValue | undefined>(undefined)\n\n// Built-in type validators\nconst TYPE_VALIDATORS = {\n email: {\n value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i,\n message: 'Please enter a valid email address',\n },\n url: {\n value: /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/,\n message: 'Please enter a valid URL',\n },\n number: {\n value: /^-?\\d+(\\.\\d+)?$/,\n message: 'Please enter a valid number',\n },\n}\n\nexport interface FormProps<TFieldValues extends FieldValues = FieldValues>\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onSubmit'> {\n form?: UseFormReturn<TFieldValues>\n onFinish?: SubmitHandler<TFieldValues>\n initialValues?: UseFormProps<TFieldValues>['defaultValues']\n layout?: 'vertical' | 'horizontal' | 'inline'\n /** Label width in pixels for horizontal layout (default: 80) */\n labelWidth?: number\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n children: React.ReactNode\n}\n\nexport interface FormRule {\n required?: boolean | string\n type?: 'email' | 'url' | 'number'\n min?: number | { value: number; message: string }\n max?: number | { value: number; message: string }\n pattern?: RegExp | { value: RegExp; message: string }\n message?: string\n validate?: (value: any) => boolean | string | Promise<boolean | string>\n}\n\nexport type ValidateTrigger = 'onChange' | 'onBlur' | 'onSubmit' | ('onChange' | 'onBlur' | 'onSubmit')[]\n\nexport interface FormItemProps {\n name?: string | string[]\n label?: string\n help?: string\n required?: boolean\n rules?: FormRule | FormRule[]\n valuePropName?: string\n inline?: boolean\n className?: string\n children: React.ReactElement\n /** Tooltip text to show next to label */\n tooltip?: string\n /** Additional content below the form control */\n extra?: React.ReactNode\n /** Show validation feedback icon */\n hasFeedback?: boolean\n /** Field names that this field depends on for validation */\n dependencies?: string[]\n /** When to trigger validation */\n validateTrigger?: ValidateTrigger\n /** Initial value for this field (overrides Form's initialValues) */\n initialValue?: any\n /** Hide this field (still validates and submits) */\n hidden?: boolean\n}\n\nexport interface FormListProps<TFieldValues extends FieldValues = FieldValues> {\n name: FieldArrayPath<TFieldValues>\n children: (\n fields: FieldArray<TFieldValues>[],\n operations: {\n add: (value?: any) => void\n remove: (index: number) => void\n move: (from: number, to: number) => void\n }\n ) => React.ReactNode\n}\n\nfunction useFormContext() {\n const context = useContext(FormContext)\n if (!context) {\n throw new Error('Form compound components must be used within Form')\n }\n return context\n}\n\nfunction FormRoot<TFieldValues extends FieldValues = FieldValues>({\n form: externalForm,\n onFinish,\n initialValues,\n layout = 'vertical',\n labelWidth = 60,\n size,\n children,\n className = '',\n noValidate = true,\n ...props\n}: FormProps<TFieldValues>) {\n const internalForm = useForm<TFieldValues>({\n defaultValues: initialValues,\n })\n\n const form = externalForm || internalForm\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault()\n if (onFinish) {\n form.handleSubmit(onFinish)(e)\n }\n }\n\n return (\n <FormContext.Provider value={{ form, layout, labelWidth, size }}>\n <form onSubmit={handleSubmit} className={className} noValidate={noValidate} {...props}>\n {children}\n </form>\n </FormContext.Provider>\n )\n}\n\nfunction FormItem({\n name,\n label,\n help,\n required = false,\n rules,\n valuePropName = 'value',\n inline = false,\n className = '',\n children,\n tooltip,\n extra,\n hasFeedback = false,\n dependencies,\n validateTrigger = 'onChange',\n initialValue,\n hidden = false,\n}: FormItemProps) {\n const { form, size, listName, layout, labelWidth } = useFormContext()\n const inputId = useId()\n const errorId = useId()\n\n if (!name) {\n // Render without form control if no name provided\n return <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${className}`} style={hidden ? { display: 'none' } : undefined}>{children}</div>\n }\n\n // Handle nested field names (for Form.List)\n let fieldName: string\n if (Array.isArray(name)) {\n // If we're inside a Form.List, prepend the list name\n const fullPath = listName ? [listName, ...name] : name\n fieldName = fullPath.join('.')\n } else {\n fieldName = name\n }\n\n // Set initial value if provided\n useEffect(() => {\n if (initialValue !== undefined) {\n const currentValue = form.getValues(fieldName as any)\n if (currentValue === undefined) {\n form.setValue(fieldName as any, initialValue)\n }\n }\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n // Watch dependencies and re-validate when they change\n const watchedDeps = useWatch({\n control: form.control,\n name: dependencies as any,\n disabled: !dependencies || dependencies.length === 0,\n })\n\n // Use refs to avoid infinite loops\n const formRef = useRef(form)\n formRef.current = form\n const prevDepsRef = useRef<string | undefined>(undefined)\n\n useEffect(() => {\n // Skip if no dependencies\n if (!dependencies || dependencies.length === 0) return\n\n // Skip initial render\n if (prevDepsRef.current === undefined) {\n prevDepsRef.current = JSON.stringify(watchedDeps)\n return\n }\n\n // Only trigger if dependency values actually changed\n const currentDeps = JSON.stringify(watchedDeps)\n if (prevDepsRef.current !== currentDeps) {\n prevDepsRef.current = currentDeps\n formRef.current.trigger(fieldName as any)\n }\n }, [watchedDeps, dependencies, fieldName])\n\n // Get error by traversing the error object path\n const getErrorByPath = (path: string) => {\n const keys = path.split('.')\n let error: any = form.formState.errors\n for (const key of keys) {\n if (!error) break\n error = error[key]\n }\n return error\n }\n\n const error = getErrorByPath(fieldName)\n const errorMessage = error?.message as string | undefined\n\n // Normalize rules to array\n const rulesArray: FormRule[] = rules\n ? Array.isArray(rules) ? rules : [rules]\n : []\n\n // Build validation rules\n const validationRules: any = {}\n const patternValidators: Array<{ pattern: RegExp; message: string }> = []\n const customValidators: Array<(value: any) => boolean | string | Promise<boolean | string>> = []\n\n // Handle top-level required prop\n if (required) {\n validationRules.required = 'This field is required'\n }\n\n // Process each rule\n for (const rule of rulesArray) {\n // Required\n if (rule.required) {\n validationRules.required = typeof rule.required === 'string'\n ? rule.required\n : rule.message || 'This field is required'\n }\n\n // Type validator\n if (rule.type && TYPE_VALIDATORS[rule.type]) {\n patternValidators.push({\n pattern: TYPE_VALIDATORS[rule.type].value,\n message: rule.message || TYPE_VALIDATORS[rule.type].message,\n })\n }\n\n // Min length\n if (rule.min !== undefined) {\n const minValue = typeof rule.min === 'object' ? rule.min.value : rule.min\n const minMessage = typeof rule.min === 'object'\n ? rule.min.message\n : rule.message || `Minimum length is ${minValue} characters`\n validationRules.minLength = { value: minValue, message: minMessage }\n }\n\n // Max length\n if (rule.max !== undefined) {\n const maxValue = typeof rule.max === 'object' ? rule.max.value : rule.max\n const maxMessage = typeof rule.max === 'object'\n ? rule.max.message\n : rule.message || `Maximum length is ${maxValue} characters`\n validationRules.maxLength = { value: maxValue, message: maxMessage }\n }\n\n // Pattern - collect all patterns\n if (rule.pattern) {\n const patternValue = rule.pattern instanceof RegExp ? rule.pattern : rule.pattern.value\n const patternMessage = rule.pattern instanceof RegExp\n ? rule.message || 'Invalid format'\n : rule.pattern.message\n patternValidators.push({ pattern: patternValue, message: patternMessage })\n }\n\n // Custom validator\n if (rule.validate) {\n customValidators.push(rule.validate)\n }\n }\n\n // Combine all pattern and custom validators into a single validate function\n if (patternValidators.length > 0 || customValidators.length > 0) {\n validationRules.validate = async (value: any) => {\n // Skip validation if empty (required rule handles that)\n if (!value && !validationRules.required) return true\n\n // Check all patterns\n for (const { pattern, message } of patternValidators) {\n if (value && !pattern.test(value)) {\n return message\n }\n }\n\n // Run all custom validators\n for (const validator of customValidators) {\n const result = await validator(value)\n if (result !== true) {\n return result\n }\n }\n\n return true\n }\n }\n\n // Normalize validateTrigger to array\n const triggers = Array.isArray(validateTrigger) ? validateTrigger : [validateTrigger]\n const shouldValidateOnChange = triggers.includes('onChange')\n const shouldValidateOnBlur = triggers.includes('onBlur')\n\n // Feedback icons\n const FeedbackIcon = ({ hasError, isValidating }: { hasError: boolean; isValidating: boolean }) => {\n if (isValidating) {\n return (\n <span className=\"loading loading-spinner loading-xs text-base-content/50\" />\n )\n }\n if (hasError) {\n return (\n <svg className=\"w-4 h-4 text-error\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n )\n }\n return (\n <svg className=\"w-4 h-4 text-success\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 13l4 4L19 7\" />\n </svg>\n )\n }\n\n // Tooltip icon\n const TooltipIcon = () => (\n <div className=\"tooltip tooltip-top ml-1\" data-tip={tooltip}>\n <svg className=\"w-4 h-4 text-base-content/50 cursor-help\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n </div>\n )\n\n return (\n <Controller\n name={fieldName}\n control={form.control}\n rules={validationRules}\n render={({ field, fieldState }) => {\n const { value, onChange, onBlur, ref } = field\n const isValidating = fieldState.isTouched && form.formState.isValidating\n\n // Clone the child element and inject form control props\n const childProps: any = {\n id: inputId,\n ref,\n 'aria-invalid': error ? true : undefined,\n 'aria-describedby': error ? errorId : undefined,\n }\n\n // Handle onBlur based on validateTrigger\n childProps.onBlur = () => {\n onBlur()\n if (shouldValidateOnBlur) {\n form.trigger(fieldName as any)\n }\n }\n\n // Handle different value prop names (e.g., 'checked' for checkboxes)\n if (valuePropName === 'checked') {\n childProps.checked = value\n childProps.onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.checked)\n if (shouldValidateOnChange) {\n form.trigger(fieldName as any)\n }\n }\n } else {\n childProps.value = value || ''\n childProps.onChange = (eventOrValue: any) => {\n // Handle components that pass value directly (e.g., Range, Rating)\n // vs components that pass event object (e.g., Input, Select)\n if (eventOrValue && eventOrValue.target !== undefined) {\n onChange(eventOrValue.target.value)\n } else {\n onChange(eventOrValue)\n }\n if (shouldValidateOnChange) {\n form.trigger(fieldName as any)\n }\n }\n }\n\n // Apply size if specified at form level\n if (size && isValidElement(children)) {\n const existingProps = children.props as any\n if (!existingProps.size) {\n childProps.size = size\n }\n }\n\n // Apply error styling and accessibility\n if (error) {\n childProps.color = 'error'\n childProps['aria-invalid'] = true\n }\n\n const enhancedChild = isValidElement(children)\n ? cloneElement(children as React.ReactElement<any>, childProps)\n : children\n\n const isHorizontal = layout === 'horizontal'\n const isInline = layout === 'inline'\n\n return (\n <div className={`form-control ${inline ? 'w-auto' : 'w-full'} ${isHorizontal ? 'mb-4' : ''} ${isInline ? 'inline-flex mr-4' : ''} ${className}`} style={hidden ? { display: 'none' } : undefined}>\n <div className={isHorizontal ? 'flex items-center gap-4' : ''}>\n {label && (\n <label\n htmlFor={inputId}\n className={`label ${isHorizontal ? 'flex-shrink-0 justify-end py-0' : ''} ${!isHorizontal && !isInline ? 'pb-1' : ''}`}\n style={isHorizontal ? { width: labelWidth } : undefined}\n >\n <span className=\"label-text flex items-center\">\n {label}\n {required && <span className=\"text-error ml-1\">*</span>}\n {tooltip && <TooltipIcon />}\n </span>\n </label>\n )}\n <div className={`${isHorizontal ? 'flex-1' : ''} ${hasFeedback ? 'relative' : ''}`}>\n {enhancedChild}\n {hasFeedback && fieldState.isTouched && (\n <span className=\"absolute right-3 top-1/2 -translate-y-1/2 pointer-events-none\">\n <FeedbackIcon hasError={!!error} isValidating={isValidating} />\n </span>\n )}\n </div>\n </div>\n {!isHorizontal && !inline && (\n <p id={errorId} className={`validator-hint ${errorMessage ? '!visible text-error' : ''} min-h-[1.25rem]`} role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>) || '\\u00A0'}\n </p>\n )}\n {isHorizontal && (errorMessage || help) && (\n <p id={errorId} className={`validator-hint ${errorMessage ? '!visible text-error' : ''} min-h-[1.25rem]`} role={errorMessage ? 'alert' : undefined}>\n {errorMessage || (help && <span className=\"text-base-content/70\">{help}</span>)}\n </p>\n )}\n {extra && (\n <div className=\"text-sm text-base-content/60 mt-1\">{extra}</div>\n )}\n </div>\n )\n }}\n />\n )\n}\n\nfunction FormList<TFieldValues extends FieldValues = FieldValues>({\n name,\n children,\n}: FormListProps<TFieldValues>) {\n const { form, layout, size } = useFormContext()\n\n const { fields, append, remove, move } = useFieldArray({\n control: form.control,\n name,\n })\n\n // Add name (index) to each field for proper path construction\n const fieldsWithName = fields.map((field, index) => ({\n ...field,\n name: index,\n }))\n\n return (\n <FormContext.Provider value={{ form, layout, size, listName: name as string }}>\n {children(fieldsWithName as any, {\n add: append,\n remove,\n move,\n })}\n </FormContext.Provider>\n )\n}\n\n// Enhanced hook to expose full form API\nexport function useFormInstance<TFieldValues extends FieldValues = FieldValues>() {\n const formInstance = useForm<TFieldValues>()\n\n // Add convenience methods to the instance\n const enhancedInstance = formInstance as typeof formInstance & {\n setFieldValue: typeof formInstance.setValue\n getFieldValue: (name: any) => any\n getFieldsValue: typeof formInstance.getValues\n setFieldsValue: (values: any) => void\n validateFields: typeof formInstance.trigger\n resetFields: typeof formInstance.reset\n isFieldTouched: (name: string) => boolean\n getFieldError: (name: string) => string | undefined\n }\n\n // Add the alias methods\n enhancedInstance.setFieldValue = formInstance.setValue\n enhancedInstance.getFieldValue = (name: any) => formInstance.getValues(name)\n enhancedInstance.getFieldsValue = formInstance.getValues\n enhancedInstance.setFieldsValue = (values: any) => {\n Object.keys(values).forEach((key) => {\n formInstance.setValue(key as any, values[key])\n })\n }\n enhancedInstance.validateFields = formInstance.trigger\n enhancedInstance.resetFields = formInstance.reset\n enhancedInstance.isFieldTouched = (name: string) => {\n const touched = formInstance.formState.touchedFields as any\n return !!touched[name]\n }\n enhancedInstance.getFieldError = (name: string) => {\n const errors = formInstance.formState.errors as any\n return errors[name]?.message as string | undefined\n }\n\n return enhancedInstance\n}\n\nexport interface FormErrorListProps {\n /** Specific field names to show errors for (shows all errors if not specified) */\n fields?: string[]\n /** Custom className */\n className?: string\n}\n\nfunction FormErrorList({ fields, className = '' }: FormErrorListProps) {\n const { form } = useFormContext()\n const { errors } = form.formState\n\n // Flatten nested errors into a list\n const flattenErrors = (obj: any, prefix = ''): Array<{ field: string; message: string }> => {\n const result: Array<{ field: string; message: string }> = []\n\n for (const key in obj) {\n const fullKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n\n if (value?.message) {\n result.push({ field: fullKey, message: value.message as string })\n } else if (typeof value === 'object' && value !== null) {\n result.push(...flattenErrors(value, fullKey))\n }\n }\n\n return result\n }\n\n const allErrors = flattenErrors(errors)\n const filteredErrors = fields\n ? allErrors.filter(e => fields.includes(e.field))\n : allErrors\n\n if (filteredErrors.length === 0) {\n return null\n }\n\n return (\n <ul className={`text-error text-sm space-y-1 ${className}`} role=\"alert\">\n {filteredErrors.map((error, index) => (\n <li key={`${error.field}-${index}`} className=\"flex items-start gap-2\">\n <svg className=\"w-4 h-4 mt-0.5 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <span>{error.message}</span>\n </li>\n ))}\n </ul>\n )\n}\n\nexport const Form = Object.assign(FormRoot, {\n Item: FormItem,\n List: FormList,\n ErrorList: FormErrorList,\n useForm: useFormInstance,\n})\n\nexport type { UseFormReturn as FormInstance }\n"],"names":["FormContext","createContext","TYPE_VALIDATORS","useFormContext","context","useContext","FormRoot","externalForm","onFinish","initialValues","layout","labelWidth","size","children","className","noValidate","props","internalForm","useForm","form","handleSubmit","e","jsx","FormItem","name","label","help","required","rules","valuePropName","inline","tooltip","extra","hasFeedback","dependencies","validateTrigger","initialValue","hidden","listName","inputId","useId","errorId","fieldName","useEffect","watchedDeps","useWatch","formRef","useRef","prevDepsRef","currentDeps","error","path","keys","key","errorMessage","rulesArray","validationRules","patternValidators","customValidators","rule","minValue","minMessage","maxValue","maxMessage","patternValue","patternMessage","value","pattern","message","validator","result","triggers","shouldValidateOnChange","shouldValidateOnBlur","FeedbackIcon","hasError","isValidating","TooltipIcon","Controller","field","fieldState","onChange","onBlur","ref","childProps","eventOrValue","isValidElement","enhancedChild","cloneElement","isHorizontal","isInline","jsxs","FormList","fields","append","remove","move","useFieldArray","fieldsWithName","index","useFormInstance","formInstance","enhancedInstance","values","FormErrorList","errors","flattenErrors","obj","prefix","fullKey","allErrors","filteredErrors","Form"],"mappings":"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"}
package/dist/index62.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as e, jsxs as y } from "react/jsx-runtime";
2
2
  import { useRef as Q, useState as j, useEffect as R } from "react";
3
- import F from "./index104.js";
3
+ import F from "./index105.js";
4
4
  const k = ({
5
5
  value: m,
6
6
  size: a = 160,